HHH-17435 Add test for issue

This commit is contained in:
Marco Belladelli 2024-01-04 11:55:06 +01:00 committed by Christian Beikov
parent fccce5561d
commit 2b025e9b4e
1 changed files with 48 additions and 0 deletions

View File

@ -19,6 +19,8 @@ import org.hibernate.dialect.OracleDialect;
import org.hibernate.dialect.PostgreSQLDialect; import org.hibernate.dialect.PostgreSQLDialect;
import org.hibernate.dialect.SybaseDialect; import org.hibernate.dialect.SybaseDialect;
import org.hibernate.dialect.TiDBDialect; import org.hibernate.dialect.TiDBDialect;
import org.hibernate.query.sqm.produce.function.FunctionArgumentException;
import org.hibernate.testing.TestForIssue; import org.hibernate.testing.TestForIssue;
import org.hibernate.testing.orm.domain.StandardDomainModel; import org.hibernate.testing.orm.domain.StandardDomainModel;
import org.hibernate.testing.orm.domain.gambit.EntityOfBasics; import org.hibernate.testing.orm.domain.gambit.EntityOfBasics;
@ -829,6 +831,52 @@ public class FunctionTests {
} }
} }
@Test
@JiraKey( "HHH-17435" )
public void testTrimFunctionParameters(SessionFactoryScope scope) {
scope.inTransaction(
session -> {
assertThat( session.createQuery( "select trim(:param)", String.class )
.setParameter( "param", " hello " )
.getSingleResult(), is( "hello" ) );
assertThat( session.createQuery( "select trim(' ' from :param)", String.class )
.setParameter( "param", " hello " )
.getSingleResult(), is( "hello" ) );
assertThat( session.createQuery( "select trim('''' from :param)", String.class )
.setParameter( "param", "''hello'''" )
.getSingleResult(), is( "hello" ) );
assertThat( session.createQuery( "select trim(:param from '-- hello it''s me ---')", String.class )
.setParameter( "param", '-' )
.getSingleResult(), is( " hello it's me " ) );
assertThat( session.createQuery( "select trim(:param from '--- hello it''s me -- ')", String.class )
.setParameter( "param", '-' )
.getSingleResult(), is( " hello it's me -- " ) );
assertThat( session.createQuery( "select trim(leading ?1 from ' hello it''s me ')", String.class )
.setParameter( 1, ' ' )
.getSingleResult(), is( "hello it's me " ) );
assertThat( session.createQuery( "select trim(trailing ?1 from ' hello it''s me ')", String.class )
.setParameter( 1, ' ' )
.getSingleResult(), is( " hello it's me" ) );
assertThat( session.createQuery( "select trim(?1 from ?2)", String.class )
.setParameter( 1, ' ' )
.setParameter( 2, " hello it's me " )
.getSingleResult(), is( "hello it's me" ) );
}
);
try {
scope.inTransaction(
session -> session.createQuery( "select trim(:param from 'hello')", String.class )
.setParameter( "param", 1 )
.getResultList()
);
fail();
}
catch (IllegalArgumentException e) {
assertThat( e.getCause(), is( instanceOf( FunctionArgumentException.class ) ) );
}
}
@Test @Test
@RequiresDialectFeature(feature = DialectFeatureChecks.SupportsPadWithChar.class) @RequiresDialectFeature(feature = DialectFeatureChecks.SupportsPadWithChar.class)
public void testPadFunction(SessionFactoryScope scope) { public void testPadFunction(SessionFactoryScope scope) {