diff --git a/hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/InformixDialect.java b/hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/InformixDialect.java index b3d21c1ca42e..c6ccadc462ba 100644 --- a/hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/InformixDialect.java +++ b/hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/InformixDialect.java @@ -367,6 +367,8 @@ public void initializeFunctionRegistry(FunctionContributions functionContributio final TypeConfiguration typeConfiguration = functionContributions.getTypeConfiguration(); final BasicType stringBasicType = typeConfiguration.getBasicTypeRegistry().resolve( StandardBasicTypes.STRING ); + final BasicType booleanBasicType = + typeConfiguration.getBasicTypeRegistry().resolve( StandardBasicTypes.BOOLEAN ); functionRegistry.registerAlternateKey( "var_samp", "variance" ); @@ -408,6 +410,12 @@ public void initializeFunctionRegistry(FunctionContributions functionContributio // parameter arguments to trim() require a cast functionContributions.getFunctionRegistry().register( "trim", new TrimFunction( this, typeConfiguration, SqlAstNodeRenderingMode.NO_UNTYPED ) ); + + //TODO: emulate support for the 'i' flag argument + functionRegistry.namedDescriptorBuilder( "regexp_like", "regex_match" ) + .setParameterTypes( STRING, STRING ) + .setInvariantType( booleanBasicType ) + .register(); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/function/CommonFunctionFactory.java b/hibernate-core/src/main/java/org/hibernate/dialect/function/CommonFunctionFactory.java index 4f0b939a6af6..73ea22312d64 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/function/CommonFunctionFactory.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/function/CommonFunctionFactory.java @@ -2671,7 +2671,6 @@ public void regexpLike() { .setParameterTypes( STRING, STRING, STRING ) .setInvariantType( booleanType ) .register(); - } /** diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/query/hql/RegexTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/query/hql/RegexTest.java index faa9ff706e36..9867c2fd42ee 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/query/hql/RegexTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/query/hql/RegexTest.java @@ -4,6 +4,7 @@ */ package org.hibernate.orm.test.query.hql; +import org.hibernate.community.dialect.InformixDialect; import org.hibernate.dialect.HSQLDialect; import org.hibernate.dialect.MariaDBDialect; import org.hibernate.dialect.OracleDialect; @@ -41,6 +42,8 @@ void testInSelect(EntityManagerFactoryScope scope) { reason = "regexp_like coming in 2025") @SkipForDialect(dialectClass = SybaseASEDialect.class, reason = "no regex support in Sybase ASE") + @SkipForDialect(dialectClass = InformixDialect.class, + reason = "This could be made to work on Informix by changing the flags") void testInSelectCaseInsensitive(EntityManagerFactoryScope scope) { if ( !( scope.getDialect() instanceof OracleDialect dialect && ( dialect.isAutonomous() || dialect.getVersion().isBefore( 23 ) ) ) ) {