From 298623d2ccb53692eb63c2f350345e3f7abe0b42 Mon Sep 17 00:00:00 2001 From: Andrea Boriero Date: Wed, 18 May 2022 11:27:24 +0200 Subject: [PATCH] MysqlDialect register localtimeLocaltimestamp functions --- .../main/java/org/hibernate/dialect/MySQLDialect.java | 9 +++++++++ .../main/java/org/hibernate/type/StandardBasicTypes.java | 2 +- .../test/temporal/MySQL57TimestampFspFunctionTest.java | 3 +-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/MySQLDialect.java b/hibernate-core/src/main/java/org/hibernate/dialect/MySQLDialect.java index 643ac5d82e..4e53a959f5 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/MySQLDialect.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/MySQLDialect.java @@ -61,6 +61,7 @@ import org.hibernate.sql.ast.spi.StandardSqlAstTranslatorFactory; import org.hibernate.sql.ast.tree.Statement; import org.hibernate.sql.exec.spi.JdbcOperation; +import org.hibernate.type.BasicTypeRegistry; import org.hibernate.type.NullType; import org.hibernate.type.SqlTypes; import org.hibernate.type.StandardBasicTypes; @@ -491,6 +492,14 @@ public void initializeFunctionRegistry(QueryEngine queryEngine) { functionFactory.adddateSubdateAddtimeSubtime(); functionFactory.format_dateFormat(); functionFactory.makedateMaketime(); + functionFactory.localtimeLocaltimestamp(); + + BasicTypeRegistry basicTypeRegistry = queryEngine.getTypeConfiguration().getBasicTypeRegistry(); + + queryEngine.getSqmFunctionRegistry().noArgsBuilder( "localtime" ) + .setInvariantType(basicTypeRegistry.resolve( StandardBasicTypes.TIMESTAMP )) + .setUseParenthesesWhenNoArgs( false ) + .register(); if ( getMySQLVersion().isBefore( 5, 7 ) ) { functionFactory.sysdateParens(); diff --git a/hibernate-core/src/main/java/org/hibernate/type/StandardBasicTypes.java b/hibernate-core/src/main/java/org/hibernate/type/StandardBasicTypes.java index 502d32eeb7..b0d2b72328 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/StandardBasicTypes.java +++ b/hibernate-core/src/main/java/org/hibernate/type/StandardBasicTypes.java @@ -1205,7 +1205,7 @@ public static void prime(TypeConfiguration typeConfiguration) { ); handle( - OBJECT_TYPE, + JavaObjectType.INSTANCE, null, basicTypeRegistry, "object", Object.class.getName() diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/temporal/MySQL57TimestampFspFunctionTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/temporal/MySQL57TimestampFspFunctionTest.java index 2fa6708552..d091e2f9d1 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/temporal/MySQL57TimestampFspFunctionTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/temporal/MySQL57TimestampFspFunctionTest.java @@ -12,7 +12,6 @@ import org.hibernate.query.Query; import org.hibernate.testing.TestForIssue; -import org.hibernate.testing.orm.domain.StandardDomainModel; import org.hibernate.testing.orm.junit.DomainModel; import org.hibernate.testing.orm.junit.RequiresDialect; import org.hibernate.testing.orm.junit.ServiceRegistry; @@ -30,7 +29,7 @@ @TestForIssue( jiraKey = "HHH-8401") @RequiresDialect( value = MySQLDialect.class, majorVersion = 5, minorVersion = 7) @ServiceRegistry -@DomainModel( standardModels = StandardDomainModel.GAMBIT ) +@DomainModel @SessionFactory public class MySQL57TimestampFspFunctionTest {