@@ -48,7 +48,7 @@ public void Dispose()
48
48
[ InlineData ( "UInt64" , new [ ] { 1 , 0 , 0 , 0 , 0 } , new [ ] { false , false , false , true , true } ) ]
49
49
public async Task GetBoolean ( string column , int [ ] flags , bool [ ] values )
50
50
{
51
- await DoGetValue ( column , ( r , n ) => r . GetBoolean ( n ) , flags , values ) . ConfigureAwait ( false ) ;
51
+ await DoGetValue ( column , ( r , n ) => r . GetBoolean ( n ) , ( r , s ) => r . GetBoolean ( s ) , flags , values ) . ConfigureAwait ( false ) ;
52
52
}
53
53
54
54
[ Theory ]
@@ -64,7 +64,7 @@ public async Task GetBoolean(string column, int[] flags, bool[] values)
64
64
[ InlineData ( "UInt64" , new [ ] { 1 , 0 , 0 , 2 , 2 } , new short [ ] { 0 , 0 , 0 , 0 , 0 } ) ]
65
65
public async Task GetInt16 ( string column , int [ ] flags , short [ ] values )
66
66
{
67
- await DoGetValue ( column , ( r , n ) => r . GetInt16 ( n ) , flags , values ) . ConfigureAwait ( false ) ;
67
+ await DoGetValue ( column , ( r , n ) => r . GetInt16 ( n ) , ( r , s ) => r . GetInt16 ( s ) , flags , values ) . ConfigureAwait ( false ) ;
68
68
}
69
69
70
70
[ Theory ]
@@ -80,7 +80,7 @@ public async Task GetInt16(string column, int[] flags, short[] values)
80
80
[ InlineData ( "UInt64" , new [ ] { 1 , 0 , 0 , 2 , 2 } , new [ ] { 0 , 0 , 0 , 0 , 0 } ) ]
81
81
public async Task GetInt32 ( string column , int [ ] flags , int [ ] values )
82
82
{
83
- await DoGetValue ( column , ( r , n ) => r . GetInt32 ( n ) , flags , values ) . ConfigureAwait ( false ) ;
83
+ await DoGetValue ( column , ( r , n ) => r . GetInt32 ( n ) , ( r , s ) => r . GetInt32 ( s ) , flags , values ) . ConfigureAwait ( false ) ;
84
84
}
85
85
86
86
[ Theory ]
@@ -96,15 +96,15 @@ public async Task GetInt32(string column, int[] flags, int[] values)
96
96
[ InlineData ( "UInt64" , new [ ] { 1 , 0 , 0 , 2 , 0 } , new [ ] { 0L , 0 , 0 , 0 , 1234567890123456789 } ) ]
97
97
public async Task GetInt64 ( string column , int [ ] flags , long [ ] values )
98
98
{
99
- await DoGetValue ( column , ( r , n ) => r . GetInt64 ( n ) , flags , values ) . ConfigureAwait ( false ) ;
99
+ await DoGetValue ( column , ( r , n ) => r . GetInt64 ( n ) , ( r , s ) => r . GetInt64 ( s ) , flags , values ) . ConfigureAwait ( false ) ;
100
100
}
101
101
102
- private async Task DoGetValue < T > ( string column , Func < DbDataReader , int , T > getInt , int [ ] flags , T [ ] values )
102
+ private async Task DoGetValue < T > ( string column , Func < DbDataReader , int , T > getInt , Func < MySqlDataReader , string , T > getIntByName , int [ ] flags , T [ ] values )
103
103
{
104
104
using ( var cmd = m_database . Connection . CreateCommand ( ) )
105
105
{
106
106
cmd . CommandText = $ "select { column } from datatypes_integers order by rowid";
107
- using ( var reader = await cmd . ExecuteReaderAsync ( ) . ConfigureAwait ( false ) )
107
+ using ( var reader = ( MySqlDataReader ) await cmd . ExecuteReaderAsync ( ) . ConfigureAwait ( false ) )
108
108
{
109
109
for ( int i = 0 ; i < flags . Length ; i ++ )
110
110
{
@@ -113,6 +113,7 @@ private async Task DoGetValue<T>(string column, Func<DbDataReader, int, T> getIn
113
113
{
114
114
case 0 : // normal
115
115
Assert . Equal ( values [ i ] , getInt ( reader , 0 ) ) ;
116
+ Assert . Equal ( values [ i ] , getIntByName ( reader , column ) ) ;
116
117
break ;
117
118
118
119
case 1 : // null
@@ -121,6 +122,7 @@ private async Task DoGetValue<T>(string column, Func<DbDataReader, int, T> getIn
121
122
122
123
case 2 : // overflow
123
124
Assert . Throws < OverflowException > ( ( ) => getInt ( reader , 0 ) ) ;
125
+ Assert . Throws < OverflowException > ( ( ) => getIntByName ( reader , column ) ) ;
124
126
break ;
125
127
}
126
128
}
@@ -150,7 +152,7 @@ public void QuerySet(string column, string dataTypeName, object[] expected)
150
152
// mysql-connector-net incorrectly returns "VARCHAR" for "ENUM"
151
153
dataTypeName = "VARCHAR" ;
152
154
#endif
153
- DoQuery ( "set" , column , dataTypeName , expected , reader => reader . GetString ( 0 ) ) ;
155
+ DoQuery ( "set" , column , dataTypeName , expected , reader => reader . GetString ( column ) ) ;
154
156
}
155
157
156
158
[ SkippableTheory ( Baseline = "https://bugs.mysql.com/bug.php?id=78917" ) ]
@@ -171,15 +173,15 @@ public void QueryTinyIntSbyte(string column, string dataTypeName, object[] expec
171
173
using ( var connection = new MySqlConnection ( csb . ConnectionString ) )
172
174
{
173
175
connection . Open ( ) ;
174
- DoQuery ( "bools" , column , dataTypeName , expected , reader => ( ( MySqlDataReader ) reader ) . GetSByte ( 0 ) , baselineCoercedNullValue : default ( sbyte ) , connection : connection ) ;
176
+ DoQuery ( "bools" , column , dataTypeName , expected , reader => reader . GetSByte ( 0 ) , baselineCoercedNullValue : default ( sbyte ) , connection : connection ) ;
175
177
}
176
178
}
177
179
178
180
[ Theory ]
179
181
[ InlineData ( "SByte" , "TINYINT" , new object [ ] { null , default ( sbyte ) , sbyte . MinValue , sbyte . MaxValue , ( sbyte ) 123 } ) ]
180
182
public void QuerySByte ( string column , string dataTypeName , object [ ] expected )
181
183
{
182
- DoQuery ( "integers" , column , dataTypeName , expected , reader => ( ( MySqlDataReader ) reader ) . GetSByte ( 0 ) , baselineCoercedNullValue : default ( sbyte ) ) ;
184
+ DoQuery ( "integers" , column , dataTypeName , expected , reader => reader . GetSByte ( column ) , baselineCoercedNullValue : default ( sbyte ) ) ;
183
185
}
184
186
185
187
[ Theory ]
@@ -342,14 +344,14 @@ public void QueryBinaryGuid(bool oldGuids)
342
344
{
343
345
Assert . Equal ( typeof ( string ) , reader . GetFieldType ( 0 ) ) ;
344
346
Assert . Equal ( "00000000-0000-0000-0000-000000000000" , reader . GetValue ( 0 ) ) ;
345
- Assert . Equal ( "00000000-0000-0000-0000-000000000000" , reader . GetString ( 0 ) ) ;
347
+ Assert . Equal ( "00000000-0000-0000-0000-000000000000" , reader . GetString ( "guidbin" ) ) ;
346
348
}
347
349
else
348
350
{
349
351
Assert . Equal ( typeof ( Guid ) , reader . GetFieldType ( 0 ) ) ;
350
352
Assert . Equal ( Guid . Empty , reader . GetValue ( 0 ) ) ;
351
353
}
352
- Assert . Equal ( Guid . Empty , reader . GetGuid ( 0 ) ) ;
354
+ Assert . Equal ( Guid . Empty , reader . GetGuid ( "guidbin" ) ) ;
353
355
}
354
356
}
355
357
}
@@ -423,9 +425,9 @@ public async Task GetGuid(string column, Type fieldType)
423
425
[ InlineData ( "`Timestamp`" , "TIMESTAMP" , new object [ ] { null , "1970 01 01 0 0 1" , "2038 1 18 3 14 7 999999" , null , "2016 4 5 14 3 4 567890" } ) ]
424
426
public void QueryDate ( string column , string dataTypeName , object [ ] expected )
425
427
{
426
- DoQuery ( "times" , column , dataTypeName , ConvertToDateTime ( expected ) , reader => reader . GetDateTime ( 0 ) ) ;
428
+ DoQuery ( "times" , column , dataTypeName , ConvertToDateTime ( expected ) , reader => reader . GetDateTime ( column . Replace ( "`" , "" ) ) ) ;
427
429
#if ! BASELINE
428
- DoQuery ( "times" , column , dataTypeName , ConvertToDateTimeOffset ( expected ) , reader => ( reader as MySqlDataReader ) . GetDateTimeOffset ( 0 ) , matchesDefaultType : false ) ;
430
+ DoQuery ( "times" , column , dataTypeName , ConvertToDateTimeOffset ( expected ) , reader => reader . GetDateTimeOffset ( 0 ) , matchesDefaultType : false ) ;
429
431
#endif
430
432
}
431
433
@@ -881,7 +883,7 @@ private void DoQuery(
881
883
string column ,
882
884
string dataTypeName ,
883
885
object [ ] expected ,
884
- Func < DbDataReader , object > getValue ,
886
+ Func < MySqlDataReader , object > getValue ,
885
887
object baselineCoercedNullValue = null ,
886
888
bool omitWhereTest = false ,
887
889
bool matchesDefaultType = true ,
@@ -897,7 +899,7 @@ private void DoQuery<TException>(
897
899
string column ,
898
900
string dataTypeName ,
899
901
object [ ] expected ,
900
- Func < DbDataReader , object > getValue ,
902
+ Func < MySqlDataReader , object > getValue ,
901
903
object baselineCoercedNullValue = null ,
902
904
bool omitWhereTest = false ,
903
905
bool matchesDefaultType = true ,
0 commit comments