@@ -19,6 +19,11 @@ public partial class MySqlConnectorDriver(Options options, Dictionary<string, Ta
19
19
{
20
20
{ "bigint" , null }
21
21
} , ordinal => $ "reader.GetInt64({ ordinal } )") ,
22
+ new ( "byte" ,
23
+ new Dictionary < string , string ? >
24
+ {
25
+ { "bit" , null }
26
+ } , ordinal => $ "reader.GetFieldValue<byte>({ ordinal } )") ,
22
27
new ( "byte[]" ,
23
28
new Dictionary < string , string ? >
24
29
{
@@ -65,10 +70,7 @@ public partial class MySqlConnectorDriver(Options options, Dictionary<string, Ta
65
70
new ( "bool" ,
66
71
new Dictionary < string , string ? >
67
72
{
68
- { "bit" , null } ,
69
73
{ "tinyint" , null } ,
70
- { "bool" , null } ,
71
- { "boolean" , null }
72
74
} , ordinal => $ "reader.GetBoolean({ ordinal } )") ,
73
75
new ( "double" ,
74
76
new Dictionary < string , string ? >
@@ -170,24 +172,30 @@ public string GetCopyFromImpl(Query query, string queryTextConstant)
170
172
var csvWriterVar = Variable . CsvWriter . AsVarName ( ) ;
171
173
var loaderVar = Variable . Loader . AsVarName ( ) ;
172
174
var connectionVar = Variable . Connection . AsVarName ( ) ;
175
+ var nullConverterFn = Variable . NullConverterFn . AsVarName ( ) ;
173
176
174
177
var loaderColumns = query . Params . Select ( p => $ "\" { p . Column . Name } \" ") . JoinByComma ( ) ;
175
178
var ( establishConnection , connectionOpen ) = EstablishConnection ( query ) ;
176
179
return $$ """
177
180
const string supportedDateTimeFormat = "yyyy-MM-dd H:mm:ss";
178
181
var {{ Variable . Config . AsVarName ( ) }} = new CsvConfiguration(CultureInfo.CurrentCulture) { Delimiter = "{{ csvDelimiter }} " };
182
+ var {{ nullConverterFn }} = new Utils.NullToStringConverter();
179
183
using (var {{ Variable . Writer . AsVarName ( ) }} = new StreamWriter("{{ tempCsvFilename }} ", false, new UTF8Encoding(false)))
180
184
using (var {{ csvWriterVar }} = new CsvWriter({{ Variable . Writer . AsVarName ( ) }} , {{ Variable . Config . AsVarName ( ) }} ))
181
185
{
182
- var options = new TypeConverterOptions { Formats = new[] { supportedDateTimeFormat } };
183
- {{ csvWriterVar }} .Context.TypeConverterOptionsCache.AddOptions<DateTime>(options);
184
- {{ csvWriterVar }} .Context.TypeConverterOptionsCache.AddOptions<DateTime?>(options);
185
- {{ csvWriterVar }} .Context.TypeConverterCache.AddConverter<bool?>(new Utils.NullToNStringConverter());
186
- {{ csvWriterVar }} .Context.TypeConverterCache.AddConverter<short?>(new Utils.NullToNStringConverter());
187
- {{ csvWriterVar }} .Context.TypeConverterCache.AddConverter<int?>(new Utils.NullToNStringConverter());
188
- {{ csvWriterVar }} .Context.TypeConverterCache.AddConverter<long?>(new Utils.NullToNStringConverter());
189
- {{ csvWriterVar }} .Context.TypeConverterCache.AddConverter<DateTime?>(new Utils.NullToNStringConverter());
190
- {{ csvWriterVar }} .Context.TypeConverterCache.AddConverter<string>(new Utils.NullToNStringConverter());
186
+ var {{ Variable . Options }} = new TypeConverterOptions { Formats = new[] { supportedDateTimeFormat } };
187
+ {{ csvWriterVar }} .Context.TypeConverterOptionsCache.AddOptions<DateTime>({{ Variable . Options }} );
188
+ {{ csvWriterVar }} .Context.TypeConverterOptionsCache.AddOptions<DateTime?>({{ Variable . Options }} );
189
+ {{ csvWriterVar }} .Context.TypeConverterCache.AddConverter<bool?>(new Utils.BoolToBitConverter());
190
+ {{ csvWriterVar }} .Context.TypeConverterCache.AddConverter<byte?>({{ nullConverterFn }} );
191
+ {{ csvWriterVar }} .Context.TypeConverterCache.AddConverter<short?>({{ nullConverterFn }} );
192
+ {{ csvWriterVar }} .Context.TypeConverterCache.AddConverter<int?>({{ nullConverterFn }} );
193
+ {{ csvWriterVar }} .Context.TypeConverterCache.AddConverter<long?>({{ nullConverterFn }} );
194
+ {{ csvWriterVar }} .Context.TypeConverterCache.AddConverter<float?>({{ nullConverterFn }} );
195
+ {{ csvWriterVar }} .Context.TypeConverterCache.AddConverter<decimal?>({{ nullConverterFn }} );
196
+ {{ csvWriterVar }} .Context.TypeConverterCache.AddConverter<double?>({{ nullConverterFn }} );
197
+ {{ csvWriterVar }} .Context.TypeConverterCache.AddConverter<DateTime?>({{ nullConverterFn }} );
198
+ {{ csvWriterVar }} .Context.TypeConverterCache.AddConverter<string>({{ nullConverterFn }} );
191
199
await {{ csvWriterVar }} .WriteRecordsAsync({{ Variable . Args . AsVarName ( ) }} );
192
200
}
193
201
0 commit comments