1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
use crate::{Mssql, MssqlTypeInfo};
/// Column metadata for an MSSQL result set via ODBC.
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "offline", derive(serde::Serialize, serde::Deserialize))]
pub struct MssqlColumn {
ordinal: usize,
name: String,
type_info: MssqlTypeInfo,
/// Column nullability as reported by ODBC.
///
/// - `Some(true)` — column is nullable
/// - `Some(false)` — column is NOT NULL
/// - `None` — nullability is unknown
nullable: Option<bool>,
}
impl MssqlColumn {
/// Creates column metadata.
pub fn new(
ordinal: usize,
name: impl Into<String>,
type_info: MssqlTypeInfo,
nullable: Option<bool>,
) -> Self {
Self {
ordinal,
name: name.into(),
type_info,
nullable,
}
}
/// Returns the nullability of this column, as reported by ODBC.
///
/// - `Some(true)` — column is nullable
/// - `Some(false)` — column is NOT NULL
/// - `None` — nullability is unknown
pub fn nullable(&self) -> Option<bool> {
self.nullable
}
}
impl sqlx_core::column::Column for MssqlColumn {
type Database = Mssql;
fn ordinal(&self) -> usize {
self.ordinal
}
fn name(&self) -> &str {
&self.name
}
fn type_info(&self) -> &MssqlTypeInfo {
&self.type_info
}
}