@@ -34,6 +34,37 @@ public NpgsqlDriver(
3434 public sealed override Dictionary < string , ColumnMapping > ColumnMappings { get ; } =
3535 new ( )
3636 {
37+ /* Numeric data types */
38+ [ "bool" ] = new (
39+ new ( )
40+ {
41+ { "bool" , new ( ) } ,
42+ { "boolean" , new ( ) }
43+ } ,
44+ readerFn : ordinal => $ "reader.GetBoolean({ ordinal } )",
45+ readerArrayFn : ordinal => $ "reader.GetFieldValue<bool[]>({ ordinal } )"
46+ ) ,
47+ [ "short" ] = new (
48+ new ( )
49+ {
50+ { "int2" , new ( ) }
51+ } ,
52+ readerFn : ordinal => $ "reader.GetInt16({ ordinal } )",
53+ readerArrayFn : ordinal => $ "reader.GetFieldValue<short[]>({ ordinal } )",
54+ convertFunc : x => $ "Convert.ToInt16({ x } )"
55+ ) ,
56+ [ "int" ] = new (
57+ new ( )
58+ {
59+ { "integer" , new ( ) } ,
60+ { "int" , new ( ) } ,
61+ { "int4" , new ( ) } ,
62+ { "serial" , new ( ) }
63+ } ,
64+ readerFn : ordinal => $ "reader.GetInt32({ ordinal } )",
65+ readerArrayFn : ordinal => $ "reader.GetFieldValue<int[]>({ ordinal } )",
66+ convertFunc : x => $ "Convert.ToInt32({ x } )"
67+ ) ,
3768 [ "long" ] = new (
3869 new ( )
3970 {
@@ -45,21 +76,34 @@ public NpgsqlDriver(
4576 readerArrayFn : ordinal => $ "reader.GetFieldValue<long[]>({ ordinal } )",
4677 convertFunc : x => $ "Convert.ToInt64({ x } )"
4778 ) ,
48- [ "byte[] " ] = new (
79+ [ "float " ] = new (
4980 new ( )
5081 {
51- { "binary" , new ( ) } ,
52- { "bit" , new ( ) } ,
53- { "bytea" , new ( ) } ,
54- { "blob" , new ( ) } ,
55- { "longblob" , new ( ) } ,
56- { "mediumblob" , new ( ) } ,
57- { "tinyblob" , new ( ) } ,
58- { "varbinary" , new ( ) }
82+ { "float4" , new ( ) }
5983 } ,
60- readerFn : ordinal => $ "reader.GetFieldValue<byte[]>({ ordinal } )",
61- readerArrayFn : ordinal => $ "reader.GetFieldValue<byte[][]>({ ordinal } )"
84+ readerFn : ordinal => $ "reader.GetFloat({ ordinal } )",
85+ readerArrayFn : ordinal => $ "reader.GetFieldValue<float[]>({ ordinal } )"
86+ ) ,
87+ [ "decimal" ] = new (
88+ new ( )
89+ {
90+ { "numeric" , new ( ) } ,
91+ { "decimal" , new ( ) } ,
92+ { "money" , new ( NpgsqlTypeOverride : "NpgsqlDbType.Money" ) }
93+ } ,
94+ readerFn : ordinal => $ "reader.GetDecimal({ ordinal } )",
95+ readerArrayFn : ordinal => $ "reader.GetFieldValue<decimal[]>({ ordinal } )"
6296 ) ,
97+ [ "double" ] = new (
98+ new ( )
99+ {
100+ { "float8" , new ( ) }
101+ } ,
102+ readerFn : ordinal => $ "reader.GetDouble({ ordinal } )",
103+ readerArrayFn : ordinal => $ "reader.GetFieldValue<double[]>({ ordinal } )"
104+ ) ,
105+
106+ /* String data types */
63107 [ "string" ] = new (
64108 new ( )
65109 {
@@ -75,15 +119,8 @@ public NpgsqlDriver(
75119 readerFn : ordinal => $ "reader.GetString({ ordinal } )",
76120 readerArrayFn : ordinal => $ "reader.GetFieldValue<string[]>({ ordinal } )"
77121 ) ,
78- [ "Guid" ] = new (
79- new ( )
80- {
81- { "uuid" , new ( ) }
82- } ,
83- readerFn : ordinal => $ "reader.GetFieldValue<Guid>({ ordinal } )",
84- readerArrayFn : ordinal => $ "reader.GetFieldValue<Guid[]>({ ordinal } )",
85- convertFunc : x => $ "Guid.Parse({ x } ?.ToString())"
86- ) ,
122+
123+ /* Date and time data types */
87124 [ "TimeSpan" ] = new (
88125 new ( )
89126 {
@@ -103,6 +140,8 @@ public NpgsqlDriver(
103140 readerFn : ordinal => $ "reader.GetDateTime({ ordinal } )",
104141 readerArrayFn : ordinal => $ "reader.GetFieldValue<DateTime[]>({ ordinal } )"
105142 ) ,
143+
144+ /* Unstructured data types */
106145 [ "JsonElement" ] = new (
107146 new ( )
108147 {
@@ -121,62 +160,6 @@ public NpgsqlDriver(
121160 sqlMapper : "SqlMapper.AddTypeHandler(typeof(JsonElement), new JsonElementTypeHandler());" ,
122161 sqlMapperImpl : JsonElementTypeHandler
123162 ) ,
124- [ "short" ] = new (
125- new ( )
126- {
127- { "int2" , new ( ) }
128- } ,
129- readerFn : ordinal => $ "reader.GetInt16({ ordinal } )",
130- readerArrayFn : ordinal => $ "reader.GetFieldValue<short[]>({ ordinal } )",
131- convertFunc : x => $ "Convert.ToInt16({ x } )"
132- ) ,
133- [ "int" ] = new (
134- new ( )
135- {
136- { "integer" , new ( ) } ,
137- { "int" , new ( ) } ,
138- { "int4" , new ( ) } ,
139- { "serial" , new ( ) }
140- } ,
141- readerFn : ordinal => $ "reader.GetInt32({ ordinal } )",
142- readerArrayFn : ordinal => $ "reader.GetFieldValue<int[]>({ ordinal } )",
143- convertFunc : x => $ "Convert.ToInt32({ x } )"
144- ) ,
145- [ "float" ] = new (
146- new ( )
147- {
148- { "float4" , new ( ) }
149- } ,
150- readerFn : ordinal => $ "reader.GetFloat({ ordinal } )",
151- readerArrayFn : ordinal => $ "reader.GetFieldValue<float[]>({ ordinal } )"
152- ) ,
153- [ "decimal" ] = new (
154- new ( )
155- {
156- { "numeric" , new ( ) } ,
157- { "decimal" , new ( ) } ,
158- { "money" , new ( NpgsqlTypeOverride : "NpgsqlDbType.Money" ) }
159- } ,
160- readerFn : ordinal => $ "reader.GetDecimal({ ordinal } )",
161- readerArrayFn : ordinal => $ "reader.GetFieldValue<decimal[]>({ ordinal } )"
162- ) ,
163- [ "double" ] = new (
164- new ( )
165- {
166- { "float8" , new ( ) }
167- } ,
168- readerFn : ordinal => $ "reader.GetDouble({ ordinal } )",
169- readerArrayFn : ordinal => $ "reader.GetFieldValue<double[]>({ ordinal } )"
170- ) ,
171- [ "bool" ] = new (
172- new ( )
173- {
174- { "bool" , new ( ) } ,
175- { "boolean" , new ( ) }
176- } ,
177- readerFn : ordinal => $ "reader.GetBoolean({ ordinal } )",
178- readerArrayFn : ordinal => $ "reader.GetFieldValue<bool[]>({ ordinal } )"
179- ) ,
180163 [ "XmlDocument" ] = new (
181164 new ( )
182165 {
@@ -201,6 +184,8 @@ public NpgsqlDriver(
201184 sqlMapper : "SqlMapper.AddTypeHandler(typeof(XmlDocument), new XmlDocumentTypeHandler());" ,
202185 sqlMapperImpl : XmlDocumentTypeHandler
203186 ) ,
187+
188+ /* Geometric data types */
204189 [ "NpgsqlPoint" ] = new (
205190 new ( )
206191 {
@@ -271,6 +256,8 @@ public NpgsqlDriver(
271256 usingDirective : "NpgsqlTypes" ,
272257 sqlMapper : "RegisterNpgsqlTypeHandler<NpgsqlCircle>();"
273258 ) ,
259+
260+ /* Network data types */
274261 [ "NpgsqlCidr" ] = new (
275262 new ( )
276263 {
@@ -301,6 +288,32 @@ public NpgsqlDriver(
301288 usingDirective : "System.Net.NetworkInformation" ,
302289 sqlMapper : "RegisterNpgsqlTypeHandler<PhysicalAddress>();"
303290 ) ,
291+
292+ /* Other data types */
293+ [ "Guid" ] = new (
294+ new ( )
295+ {
296+ { "uuid" , new ( ) }
297+ } ,
298+ readerFn : ordinal => $ "reader.GetFieldValue<Guid>({ ordinal } )",
299+ readerArrayFn : ordinal => $ "reader.GetFieldValue<Guid[]>({ ordinal } )",
300+ convertFunc : x => $ "Guid.Parse({ x } ?.ToString())"
301+ ) ,
302+ [ "byte[]" ] = new (
303+ new ( )
304+ {
305+ { "binary" , new ( ) } ,
306+ { "bit" , new ( ) } ,
307+ { "bytea" , new ( ) } ,
308+ { "blob" , new ( ) } ,
309+ { "longblob" , new ( ) } ,
310+ { "mediumblob" , new ( ) } ,
311+ { "tinyblob" , new ( ) } ,
312+ { "varbinary" , new ( ) }
313+ } ,
314+ readerFn : ordinal => $ "reader.GetFieldValue<byte[]>({ ordinal } )",
315+ readerArrayFn : ordinal => $ "reader.GetFieldValue<byte[][]>({ ordinal } )"
316+ ) ,
304317 [ "object" ] = new (
305318 new ( )
306319 {
0 commit comments