@@ -445,8 +445,8 @@ public boolean apply(Dialect dialect) {
445
445
public static class SupportsOrderByInCorrelatedSubquery implements DialectFeatureCheck {
446
446
public boolean apply (Dialect dialect ) {
447
447
return dialect .supportsOrderByInSubquery ()
448
- // For some reason, HANA doesn't support order by in correlated subqueries...
449
- && !( dialect instanceof HANADialect );
448
+ // HANA doesn't support ' order by' in correlated subqueries
449
+ && !( dialect instanceof HANADialect );
450
450
}
451
451
}
452
452
@@ -478,15 +478,15 @@ public boolean apply(Dialect dialect) {
478
478
public static class SupportsStringAggregation implements DialectFeatureCheck {
479
479
public boolean apply (Dialect dialect ) {
480
480
return dialect instanceof H2Dialect
481
- || dialect instanceof HSQLDialect
482
- || dialect instanceof MySQLDialect
483
- || dialect instanceof PostgreSQLDialect
484
- || dialect instanceof HANADialect
485
- || dialect instanceof CockroachDialect
486
- || dialect instanceof DB2Dialect
487
- || dialect instanceof OracleDialect
488
- || dialect instanceof SpannerDialect
489
- || dialect instanceof SQLServerDialect ;
481
+ || dialect instanceof HSQLDialect
482
+ || dialect instanceof MySQLDialect
483
+ || dialect instanceof PostgreSQLDialect
484
+ || dialect instanceof HANADialect
485
+ || dialect instanceof CockroachDialect
486
+ || dialect instanceof DB2Dialect
487
+ || dialect instanceof OracleDialect
488
+ || dialect instanceof SpannerDialect
489
+ || dialect instanceof SQLServerDialect ;
490
490
}
491
491
}
492
492
@@ -496,7 +496,7 @@ public boolean apply(Dialect dialect) {
496
496
|| dialect instanceof PostgreSQLDialect
497
497
|| dialect instanceof HANADialect
498
498
|| dialect instanceof CockroachDialect
499
- || dialect instanceof DB2Dialect && ( ( DB2Dialect ) dialect ) .getDB2Version ().isSameOrAfter ( 11 )
499
+ || dialect instanceof DB2Dialect db2 && db2 .getDB2Version ().isSameOrAfter ( 11 )
500
500
|| dialect instanceof OracleDialect
501
501
|| dialect instanceof SpannerDialect
502
502
|| dialect instanceof SQLServerDialect ;
@@ -509,7 +509,7 @@ public boolean apply(Dialect dialect) {
509
509
|| dialect instanceof PostgreSQLDialect
510
510
|| dialect instanceof HANADialect
511
511
|| dialect instanceof CockroachDialect
512
- || dialect instanceof DB2Dialect && ( ( DB2Dialect ) dialect ) .getDB2Version ().isSameOrAfter ( 11 )
512
+ || dialect instanceof DB2Dialect db2 && db2 .getDB2Version ().isSameOrAfter ( 11 )
513
513
|| dialect instanceof OracleDialect
514
514
|| dialect instanceof SpannerDialect
515
515
|| dialect instanceof SQLServerDialect ;
@@ -519,13 +519,13 @@ public boolean apply(Dialect dialect) {
519
519
public static class SupportsWindowFunctions implements DialectFeatureCheck {
520
520
public boolean apply (Dialect dialect ) {
521
521
// Derby doesn't really support window functions, only row_number()
522
- return dialect .supportsWindowFunctions () && !( dialect instanceof DerbyDialect );
522
+ return dialect .supportsWindowFunctions ()
523
+ && !( dialect instanceof DerbyDialect );
523
524
}
524
525
}
525
526
526
527
public static class SupportsFilterClause implements DialectFeatureCheck {
527
528
public boolean apply (Dialect dialect ) {
528
- // Derby doesn't really support window functions, only row_number()
529
529
return dialect instanceof PostgreSQLDialect ;
530
530
}
531
531
}
@@ -539,7 +539,6 @@ public boolean apply(Dialect dialect) {
539
539
540
540
public static class SupportsFullJoin implements DialectFeatureCheck {
541
541
public boolean apply (Dialect dialect ) {
542
- // TiDB db does not support subqueries for ON condition
543
542
return !( dialect instanceof H2Dialect
544
543
|| dialect instanceof MySQLDialect
545
544
|| dialect instanceof SybaseDialect
@@ -553,7 +552,21 @@ public boolean apply(Dialect dialect) {
553
552
|| dialect instanceof SybaseDialect
554
553
|| dialect instanceof DerbyDialect
555
554
|| dialect instanceof FirebirdDialect
556
- || dialect instanceof DB2Dialect && ( (DB2Dialect ) dialect ).getDB2Version ().isBefore ( 11 ) );
555
+ || dialect instanceof InformixDialect
556
+ || dialect instanceof DB2Dialect db2 && db2 .getDB2Version ().isBefore ( 11 ) );
557
+ }
558
+ }
559
+
560
+ public static class SupportsExtractEpoch implements DialectFeatureCheck {
561
+ public boolean apply (Dialect dialect ) {
562
+ // I could not find any reasonable way to implement this on Informix
563
+ return !( dialect instanceof InformixDialect );
564
+ }
565
+ }
566
+
567
+ public static class SupportsExtractDayOfWeekYearMonth implements DialectFeatureCheck {
568
+ public boolean apply (Dialect dialect ) {
569
+ return !( dialect instanceof InformixDialect );
557
570
}
558
571
}
559
572
@@ -697,9 +710,9 @@ public boolean apply(Dialect dialect) {
697
710
public static class SupportsJsonQueryNestedPath implements DialectFeatureCheck {
698
711
public boolean apply (Dialect dialect ) {
699
712
return definesFunction ( dialect , "json_query" )
700
- && !( dialect instanceof SQLServerDialect )
701
- && !( dialect instanceof H2Dialect )
702
- && !( dialect instanceof CockroachDialect );
713
+ && !( dialect instanceof SQLServerDialect )
714
+ && !( dialect instanceof H2Dialect )
715
+ && !( dialect instanceof CockroachDialect );
703
716
}
704
717
}
705
718
@@ -724,14 +737,14 @@ public boolean apply(Dialect dialect) {
724
737
public static class SupportsJsonValueErrorBehavior implements DialectFeatureCheck {
725
738
public boolean apply (Dialect dialect ) {
726
739
return definesFunction ( dialect , "json_value" )
727
- // H2 emulation doesn't support error behavior
728
- && !( dialect instanceof H2Dialect )
729
- // MariaDB simply doesn't support the on error and on empty clauses
730
- && !( dialect instanceof MariaDBDialect )
731
- // Cockroach doesn't have a native json_value function
732
- && !( dialect instanceof CockroachDialect )
733
- // PostgreSQL added support for native json_value in version 17
734
- && ( !( dialect instanceof PostgreSQLDialect ) || dialect .getVersion ().isSameOrAfter ( 17 ) );
740
+ // H2 emulation doesn't support error behavior
741
+ && !( dialect instanceof H2Dialect )
742
+ // MariaDB simply doesn't support the on error and on empty clauses
743
+ && !( dialect instanceof MariaDBDialect )
744
+ // Cockroach doesn't have a native json_value function
745
+ && !( dialect instanceof CockroachDialect )
746
+ // PostgreSQL added support for native json_value in version 17
747
+ && !( dialect instanceof PostgreSQLDialect && dialect .getVersion ().isBefore ( 17 ) );
735
748
}
736
749
}
737
750
@@ -744,8 +757,8 @@ public boolean apply(Dialect dialect) {
744
757
public static class SupportsJsonObjectAgg implements DialectFeatureCheck {
745
758
public boolean apply (Dialect dialect ) {
746
759
return definesFunction ( dialect , "json_objectagg" )
747
- // Bug in HSQL: https://sourceforge.net/p/hsqldb/bugs/1718/
748
- && !( dialect instanceof HSQLDialect );
760
+ // Bug in HSQL: https://sourceforge.net/p/hsqldb/bugs/1718/
761
+ && !( dialect instanceof HSQLDialect );
749
762
}
750
763
}
751
764
0 commit comments