Skip to content

Commit a93ff39

Browse files
HHH-19365 - feat(dialect): Optimize GaussDB dialect support
- Add multiple improvements to GaussDB dialect, including: - Add support for the less than operator (<) - Optimize the registration of JSON-related functions - Adjust the date format function to adapt to the characteristics of GaussDB - Fix some GaussDB-specific bugs - Add special processing logic for GaussDB in multiple tests - Add support for GaussDB-specific SQL statement structure
1 parent 7b2c3db commit a93ff39

33 files changed

+960
-155
lines changed

hibernate-core/src/main/java/org/hibernate/dialect/GaussDBCastingIntervalSecondJdbcType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public void appendWriteExpression(
8080
Dialect dialect) {
8181
appender.append( '(' );
8282
appender.append( writeExpression );
83-
appender.append( "*interval'1 second)" );
83+
appender.append( "*interval'1 second')" );
8484
}
8585

8686
@Override

hibernate-core/src/main/java/org/hibernate/dialect/GaussDBDialect.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,10 @@ public GaussDBDialect(DatabaseVersion version) {
178178
this.optionalTableUpdateStrategy = determineOptionalTableUpdateStrategy( version );
179179
}
180180

181+
public boolean supportsColumnCheck() {
182+
return false;
183+
}
184+
181185
private static OptionalTableUpdateStrategy determineOptionalTableUpdateStrategy(DatabaseVersion version) {
182186
return version.isSameOrAfter( DatabaseVersion.make( 15, 0 ) )
183187
? GaussDBDialect::usingMerge
@@ -553,6 +557,7 @@ public void initializeFunctionRegistry(FunctionContributions functionContributio
553557
functionFactory.insert_overlay();
554558
functionFactory.overlay();
555559
functionFactory.soundex(); //was introduced apparently
560+
functionFactory.format_toChar_gauss();
556561

557562
functionFactory.locate_positionSubstring();
558563
functionFactory.windowFunctions();
@@ -590,6 +595,7 @@ public void initializeFunctionRegistry(FunctionContributions functionContributio
590595
functionFactory.jsonInsert_gaussdb();
591596
functionFactory.jsonArray_gaussdb();
592597
functionFactory.jsonMergepatch_gaussdb();
598+
functionFactory.jsonArrayInsert_gauss();
593599

594600
functionFactory.xmlelement();
595601
functionFactory.xmlcomment();

hibernate-core/src/main/java/org/hibernate/dialect/function/CommonFunctionFactory.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1469,7 +1469,7 @@ public void localtimeLocaltimestamp() {
14691469
.setUseParenthesesWhenNoArgs( false )
14701470
.register();
14711471
functionRegistry.noArgsBuilder( "local_datetime", "localtimestamp" )
1472-
.setInvariantType( basicTypeRegistry.resolve( StandardBasicTypes.LOCAL_DATE_TIME ) )
1472+
.setInvariantType ( basicTypeRegistry.resolve( StandardBasicTypes.LOCAL_DATE_TIME ) )
14731473
.setUseParenthesesWhenNoArgs( false )
14741474
.register();
14751475
}
@@ -2573,6 +2573,15 @@ public void format_toChar() {
25732573
functionRegistry.register( "format", new FormatFunction( "to_char", typeConfiguration ) );
25742574
}
25752575

2576+
/**
2577+
* Usually Oracle-style (except for Informix which quite close to MySQL-style)
2578+
*
2579+
* @see org.hibernate.dialect.OracleDialect#datetimeFormat
2580+
*/
2581+
public void format_toChar_gauss() {
2582+
functionRegistry.register( "format", new GaussDBFormatFunction( "to_char", typeConfiguration ) );
2583+
}
2584+
25762585
/**
25772586
* MySQL-style (also Ingres)
25782587
*
@@ -4177,6 +4186,13 @@ public void jsonArrayInsert_postgresql() {
41774186
functionRegistry.register( "json_array_insert", new PostgreSQLJsonArrayInsertFunction( typeConfiguration ) );
41784187
}
41794188

4189+
/**
4190+
* gauss json_array_insert() function
4191+
*/
4192+
public void jsonArrayInsert_gauss() {
4193+
functionRegistry.register( "json_array_insert", new GaussDBJsonArrayInsertFunction( typeConfiguration ) );
4194+
}
4195+
41804196
/**
41814197
* MySQL json_array_insert() function
41824198
*/

0 commit comments

Comments
 (0)