@@ -327,12 +327,12 @@ public void DateOnlyMaxNoFilterTest()
327327
328328 while ( reader . Read ( ) ) {
329329 var id = reader . GetInt64 ( 0 ) ;
330- var datetimeValue = DateOnly . FromDateTime ( reader . GetDateTime ( 1 ) ) ;
330+ var datetimeValue = reader . GetFieldValue < DateOnly > ( 1 ) ;
331331 Assert . That ( datetimeValue , Is . EqualTo ( DateOnly . MaxValue ) ) ;
332332 }
333333 }
334334
335- var select = templates [ DateTimeMaxValueTable ] . Clone ( new SqlNodeCloneContext ( ) ) ;
335+ var select = templates [ DateOnlyMaxValueTable ] . Clone ( new SqlNodeCloneContext ( ) ) ;
336336 select . Columns . Add ( select . From . Columns [ "Id" ] ) ;
337337 select . Columns . Add ( select . From . Columns [ "Value" ] ) ;
338338
@@ -587,8 +587,25 @@ private void TestDatePartExtraction(string table, SqlDatePart part, int expected
587587 using ( var reader = command . ExecuteReader ( ) ) {
588588
589589 while ( reader . Read ( ) ) {
590- var partValue = reader . GetDouble ( 0 ) ;
591- CheckPartNative ( partValue , expectedValueNative , aliasesEnabled ) ;
590+ if ( aliasesEnabled && part != SqlDatePart . Year ) {
591+ // year from +-infinity -> +-infinity
592+ // month from +-infinity -> null (or 0 in case of versions older that 9.6)
593+ if ( Driver . CoreServerInfo . ServerVersion >= StorageProviderVersion . PostgreSql96 ) {
594+ Assert . That ( reader . IsDBNull ( 0 ) ) ;
595+ }
596+ else {
597+ var partValue = reader . GetDouble ( 0 ) ;
598+ Assert . That ( partValue , Is . Zero ) ;
599+ }
600+ }
601+ if ( Driver . CoreServerInfo . ServerVersion < StorageProviderVersion . PostgreSql96 ) {
602+ var partValue = reader . GetDouble ( 0 ) ;
603+ Assert . That ( partValue , Is . Zero ) ;
604+ }
605+ else {
606+ var partValue = reader . GetDouble ( 0 ) ;
607+ CheckPartNative ( partValue , expectedValueNative , aliasesEnabled ) ;
608+ }
592609 }
593610 }
594611
@@ -615,8 +632,24 @@ private void TestDateTimePartExtraction(string table, SqlDateTimePart part, int
615632 using ( var reader = command . ExecuteReader ( ) ) {
616633
617634 while ( reader . Read ( ) ) {
618- var partValue = reader . GetDouble ( 0 ) ;
619- CheckPartNative ( partValue , expectedValueNative , aliasesEnabled ) ;
635+ if ( aliasesEnabled && part != SqlDateTimePart . Year ) {
636+ // year from +-infinity -> +-infinity
637+ // month from +-infinity -> null (or 0 in case of versions older that 9.6)
638+ if ( Driver . CoreServerInfo . ServerVersion >= StorageProviderVersion . PostgreSql96 )
639+ Assert . That ( reader . IsDBNull ( 0 ) ) ;
640+ else {
641+ var partValue = reader . GetDouble ( 0 ) ;
642+ Assert . That ( partValue , Is . Zero ) ;
643+ }
644+ }
645+ if ( Driver . CoreServerInfo . ServerVersion < StorageProviderVersion . PostgreSql96 ) {
646+ var partValue = reader . GetDouble ( 0 ) ;
647+ Assert . That ( partValue , Is . Zero ) ;
648+ }
649+ else {
650+ var partValue = reader . GetDouble ( 0 ) ;
651+ CheckPartNative ( partValue , expectedValueNative , aliasesEnabled ) ;
652+ }
620653 }
621654 }
622655
@@ -643,8 +676,24 @@ private void TestDateTimeOffsetPartExtraction(string table, SqlDateTimeOffsetPar
643676 using ( var reader = command . ExecuteReader ( ) ) {
644677
645678 while ( reader . Read ( ) ) {
646- var partValue = reader . GetDouble ( 0 ) ;
647- CheckPartNative ( partValue , expectedValueNative , aliasesEnabled ) ;
679+ if ( aliasesEnabled && part != SqlDateTimeOffsetPart . Year ) {
680+ // year from +-infinity -> +-infinity
681+ // month from +-infinity -> null (or 0 in case of versions older that 9.6)
682+ if ( Driver . CoreServerInfo . ServerVersion >= StorageProviderVersion . PostgreSql96 )
683+ Assert . That ( reader . IsDBNull ( 0 ) ) ;
684+ else {
685+ var partValue = reader . GetDouble ( 0 ) ;
686+ Assert . That ( partValue , Is . Zero ) ;
687+ }
688+ }
689+ if ( Driver . CoreServerInfo . ServerVersion < StorageProviderVersion . PostgreSql96 ) {
690+ var partValue = reader . GetDouble ( 0 ) ;
691+ Assert . That ( partValue , Is . Zero ) ;
692+ }
693+ else {
694+ var partValue = reader . GetDouble ( 0 ) ;
695+ CheckPartNative ( partValue , expectedValueNative , aliasesEnabled ) ;
696+ }
648697 }
649698 }
650699
@@ -660,16 +709,6 @@ private void TestDateTimeOffsetPartExtraction(string table, SqlDateTimeOffsetPar
660709 CheckPart ( partValue , expectedValueDml , aliasesEnabled ) ;
661710 }
662711 }
663-
664- command = Connection . CreateCommand ( $ "SELECT EXTRACT (TIMEZONE FROM \" Value\" ) FROM public.\" { table } \" ") ;
665- using ( command )
666- using ( var reader = command . ExecuteReader ( ) ) {
667-
668- while ( reader . Read ( ) ) {
669- var partValue = reader . GetDouble ( 0 ) ;
670- Console . WriteLine ( $ "TIMEZONE: { partValue } ") ;
671- }
672- }
673712 }
674713
675714
0 commit comments