@@ -162,7 +162,15 @@ public async Task CompareIntegralParametersAndColumnsAsync()
162
162
3 ,
163
163
sql =>
164
164
{
165
- Assert . That ( sql , Does . Not . Contain ( "cast" ) ) ;
165
+ if ( Sfi . Dialect is FirebirdDialect )
166
+ {
167
+ Assert . That ( sql , Does . Contain ( "cast" ) ) ;
168
+ }
169
+ else
170
+ {
171
+ Assert . That ( sql , Does . Not . Contain ( "cast" ) ) ;
172
+ }
173
+
166
174
Assert . That ( GetTotalOccurrences ( sql , $ "Type: { pair . Value } ") , Is . EqualTo ( 3 ) ) ;
167
175
} ) ) ;
168
176
}
@@ -203,7 +211,15 @@ public async Task CompareIntegralParametersWithFloatingPointColumnsAsync()
203
211
3 ,
204
212
sql =>
205
213
{
206
- Assert . That ( sql , Does . Not . Contain ( "cast" ) ) ;
214
+ if ( Sfi . Dialect is FirebirdDialect )
215
+ {
216
+ Assert . That ( sql , Does . Contain ( "cast" ) ) ;
217
+ }
218
+ else
219
+ {
220
+ Assert . That ( sql , Does . Not . Contain ( "cast" ) ) ;
221
+ }
222
+
207
223
Assert . That ( GetTotalOccurrences ( sql , $ "Type: { pair . Value } ") , Is . EqualTo ( 3 ) ) ;
208
224
} ) ) ;
209
225
}
@@ -245,7 +261,15 @@ public async Task CompareFloatingPointParametersAndColumnsAsync()
245
261
totalParameters ,
246
262
sql =>
247
263
{
248
- Assert . That ( sql , Does . Not . Contain ( "cast" ) ) ;
264
+ if ( Sfi . Dialect is FirebirdDialect )
265
+ {
266
+ Assert . That ( sql , Does . Contain ( "cast" ) ) ;
267
+ }
268
+ else
269
+ {
270
+ Assert . That ( sql , Does . Not . Contain ( "cast" ) ) ;
271
+ }
272
+
249
273
Assert . That ( GetTotalOccurrences ( sql , $ "Type: { pair . Value } ") , Is . EqualTo ( totalParameters ) ) ;
250
274
} ) ) ;
251
275
}
@@ -368,8 +392,17 @@ public async Task CompareFloatingPointParameterWithDifferentFloatingPointColumns
368
392
var matches = pair . Value == "Double"
369
393
? Regex . Matches ( sql , @"cast\([\w\d]+\..+\)" )
370
394
: Regex . Matches ( sql , @"cast\(((@|\?|:)p\d+|\?)\s+as.*\)" ) ;
371
- // SQLiteDialect uses sql cast for transparentcast method
372
- Assert . That ( matches . Count , Is . EqualTo ( sameType && ! ( Sfi . Dialect is SQLiteDialect ) ? 0 : 1 ) ) ;
395
+ if ( Sfi . Dialect is FirebirdDialect )
396
+ {
397
+ // Additional casts are added by FirebirdClientDriver
398
+ Assert . That ( matches . Count , Is . EqualTo ( pair . Value == "Double" ? 1 : 2 ) ) ;
399
+ }
400
+ else
401
+ {
402
+ // SQLiteDialect uses sql cast for transparentcast method
403
+ Assert . That ( matches . Count , Is . EqualTo ( sameType && ! ( Sfi . Dialect is SQLiteDialect ) ? 0 : 1 ) ) ;
404
+ }
405
+
373
406
Assert . That ( GetTotalOccurrences ( sql , $ "Type: { pair . Value } ") , Is . EqualTo ( 1 ) ) ;
374
407
} ) ) ;
375
408
}
@@ -408,7 +441,7 @@ public async Task CompareIntegralParameterWithIntegralAndFloatingPointColumnsAsy
408
441
sql =>
409
442
{
410
443
var matches = Regex . Matches ( sql , @"cast\(((@|\?|:)p\d+|\?)\s+as.*\)" ) ;
411
- Assert . That ( matches . Count , Is . EqualTo ( 1 ) ) ;
444
+ Assert . That ( matches . Count , Is . EqualTo ( Sfi . Dialect is FirebirdDialect ? 2 : 1 ) ) ;
412
445
Assert . That ( GetTotalOccurrences ( sql , $ "Type: { pair . Value } ") , Is . EqualTo ( 1 ) ) ;
413
446
} ) ) ;
414
447
}
@@ -447,7 +480,17 @@ public async Task UsingValueTypeParameterOfDifferentTypeAsync()
447
480
await ( AssertTotalParametersAsync (
448
481
query ,
449
482
1 ,
450
- sql => Assert . That ( sql , Does . Not . Contain ( "cast" ) ) ) ) ;
483
+ sql =>
484
+ {
485
+ if ( Sfi . Dialect is FirebirdDialect )
486
+ {
487
+ Assert . That ( sql , Does . Contain ( "cast" ) ) ;
488
+ }
489
+ else
490
+ {
491
+ Assert . That ( sql , Does . Not . Contain ( "cast" ) ) ;
492
+ }
493
+ } ) ) ;
451
494
}
452
495
453
496
queriables = new List < IQueryable < NumericEntity > >
@@ -476,7 +519,16 @@ public async Task UsingValueTypeParameterOfDifferentTypeAsync()
476
519
sql => {
477
520
// SQLiteDialect uses sql cast for transparentcast method
478
521
Assert . That ( sql , ! sameType || Sfi . Dialect is SQLiteDialect ? Does . Match ( "where\\ s+cast" ) : ( IResolveConstraint ) Does . Not . Contain ( "cast" ) ) ;
479
- Assert . That ( GetTotalOccurrences ( sql , "cast" ) , Is . EqualTo ( ! sameType || Sfi . Dialect is SQLiteDialect ? 1 : 0 ) ) ;
522
+ if ( Sfi . Dialect is FirebirdDialect )
523
+ {
524
+ // Additional casts are added by FirebirdClientDriver
525
+ Assert . That ( GetTotalOccurrences ( sql , "cast" ) , Is . EqualTo ( 3 ) ) ;
526
+ }
527
+ else
528
+ {
529
+ // SQLiteDialect uses sql cast for transparentcast method
530
+ Assert . That ( GetTotalOccurrences ( sql , "cast" ) , Is . EqualTo ( ! sameType || Sfi . Dialect is SQLiteDialect ? 1 : 0 ) ) ;
531
+ }
480
532
} ) ) ;
481
533
}
482
534
}
@@ -489,7 +541,7 @@ public async Task UsingValueTypeParameterTwiceOnNullablePropertyAsync()
489
541
db . NumericEntities . Where ( o => o . NullableShort == value && o . NullableShort != value && o . Short == value ) ,
490
542
1 , sql => {
491
543
492
- Assert . That ( GetTotalOccurrences ( sql , "cast" ) , Is . EqualTo ( 0 ) ) ;
544
+ Assert . That ( GetTotalOccurrences ( sql , "cast" ) , Is . EqualTo ( Sfi . Dialect is FirebirdDialect ? 3 : 0 ) ) ;
493
545
} ) ) ;
494
546
}
495
547
0 commit comments