Skip to content

Commit 49b5951

Browse files
committed
Informix tests fixes
1 parent 1f48e8c commit 49b5951

File tree

8 files changed

+44
-5
lines changed

8 files changed

+44
-5
lines changed

hibernate-core/src/test/java/org/hibernate/orm/test/annotations/uniqueconstraint/UniqueConstraintTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
package org.hibernate.orm.test.annotations.uniqueconstraint;
88

99
import org.hibernate.JDBCException;
10+
import org.hibernate.community.dialect.InformixDialect;
1011
import org.hibernate.dialect.SybaseDialect;
1112

1213
import org.hibernate.testing.orm.junit.DomainModel;
@@ -27,6 +28,9 @@
2728
*/
2829
@DomainModel( annotatedClasses = { Room.class, Building.class, House.class } )
2930
@SessionFactory
31+
@SkipForDialect( dialectClass = InformixDialect.class,
32+
matchSubTypes = true,
33+
reason = "Informix does not properly support unique constraints on nullable columns" )
3034
@SkipForDialect( dialectClass = SybaseDialect.class,
3135
matchSubTypes = true,
3236
reason = "Sybase does not properly support unique constraints on nullable columns" )

hibernate-core/src/test/java/org/hibernate/orm/test/inheritance/InheritanceQueryGroupByTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
*/
77
package org.hibernate.orm.test.inheritance;
88

9+
import org.hibernate.community.dialect.InformixDialect;
910
import org.hibernate.dialect.Dialect;
1011
import org.hibernate.dialect.FunctionalDependencyAnalysisSupport;
1112
import org.hibernate.metamodel.mapping.EntityMappingType;
@@ -16,6 +17,7 @@
1617
import org.hibernate.testing.orm.junit.Jira;
1718
import org.hibernate.testing.orm.junit.SessionFactory;
1819
import org.hibernate.testing.orm.junit.SessionFactoryScope;
20+
import org.hibernate.testing.orm.junit.SkipForDialect;
1921
import org.junit.jupiter.api.AfterAll;
2022
import org.junit.jupiter.api.BeforeAll;
2123
import org.junit.jupiter.api.Test;
@@ -86,6 +88,7 @@ public void testGroupBySingleTable(SessionFactoryScope scope) {
8688
}
8789

8890
@Test
91+
@SkipForDialect( dialectClass = InformixDialect.class , reason = "Informix does not support case expressions within the GROUP BY clause")
8992
public void testGroupByJoined(SessionFactoryScope scope) {
9093
testGroupBy( scope, "joinedParent", JoinedParent.class, "joined_child_one", 1 );
9194
}
@@ -162,6 +165,7 @@ public void testGroupByAndOrderBySingleTable(SessionFactoryScope scope) {
162165
}
163166

164167
@Test
168+
@SkipForDialect( dialectClass = InformixDialect.class , reason = "Informix does not support case expressions within the GROUP BY clause")
165169
public void testGroupByAndOrderByJoined(SessionFactoryScope scope) {
166170
testGroupByAndOrderBy( scope, "joinedParent", JoinedParent.class, "joined_child_one", 1 );
167171
}

hibernate-core/src/test/java/org/hibernate/orm/test/jpa/criteria/QueryBuilderTest.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import jakarta.persistence.criteria.SetJoin;
2121
import jakarta.persistence.metamodel.EntityType;
2222
import jakarta.persistence.metamodel.Metamodel;
23+
24+
import org.hibernate.community.dialect.InformixDialect;
2325
import org.hibernate.dialect.CockroachDialect;
2426
import org.hibernate.orm.test.jpa.BaseEntityManagerFunctionalTestCase;
2527
import org.hibernate.orm.test.jpa.metamodel.Address;
@@ -260,8 +262,13 @@ public void testFunctionDialectFunctions() {
260262
em.getTransaction().begin();
261263
CriteriaBuilder cb = em.getCriteriaBuilder();
262264
CriteriaQuery<Long> criteria = cb.createQuery( Long.class );
263-
criteria.select( cb.count( cb.literal( 1 ) ) );
264265
Root<Customer> root = criteria.from( Customer.class );
266+
if (getDialect() instanceof InformixDialect && getDialect().getVersion().isBefore( 11,70 ) ) {
267+
criteria.select( cb.count( root ) );
268+
}
269+
else {
270+
criteria.select( cb.count( cb.literal( 1 ) ) );
271+
}
265272
criteria.where(
266273
cb.equal(
267274
cb.function(

hibernate-core/src/test/java/org/hibernate/orm/test/query/QueryTimeOutTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import java.util.Map;
1313

1414
import org.hibernate.cfg.AvailableSettings;
15+
import org.hibernate.community.dialect.InformixDialect;
1516
import org.hibernate.dialect.AbstractTransactSQLDialect;
1617
import org.hibernate.dialect.OracleDialect;
1718
import org.hibernate.dialect.SybaseDialect;
@@ -80,6 +81,9 @@ else if ( DialectContext.getDialect() instanceof SybaseDialect ) {
8081
else if ( DialectContext.getDialect() instanceof AbstractTransactSQLDialect ) {
8182
baseQuery = "update ae1_0 set name=? from AnEntity ae1_0";
8283
}
84+
else if (DialectContext.getDialect() instanceof InformixDialect ) {
85+
baseQuery = "update AnEntity set name=?";
86+
}
8387
else {
8488
baseQuery = "update AnEntity ae1_0 set name=?";
8589
}

hibernate-core/src/test/java/org/hibernate/orm/test/query/hql/FunctionTests.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@
3838
import org.hibernate.testing.orm.junit.SessionFactory;
3939
import org.hibernate.testing.orm.junit.SessionFactoryScope;
4040
import org.hibernate.testing.orm.junit.SkipForDialect;
41-
import org.junit.jupiter.api.BeforeAll;
41+
import org.junit.jupiter.api.AfterEach;
42+
import org.junit.jupiter.api.BeforeEach;
4243
import org.junit.jupiter.api.Test;
4344

4445
import java.math.BigDecimal;
@@ -77,7 +78,7 @@ public class FunctionTests {
7778

7879
public static final double ERROR = 0.00001d;
7980

80-
@BeforeAll @SuppressWarnings("deprecation")
81+
@BeforeEach @SuppressWarnings("deprecation")
8182
public void prepareData(SessionFactoryScope scope) {
8283
scope.inTransaction(
8384
em -> {
@@ -114,6 +115,16 @@ public void prepareData(SessionFactoryScope scope) {
114115
);
115116
}
116117

118+
@AfterEach
119+
public void tearDown(SessionFactoryScope scope) {
120+
scope.inTransaction( session -> {
121+
session.createMutationQuery( "delete from EntityOfBasics" ).executeUpdate();
122+
session.createMutationQuery( "delete from EntityOfLists" ).executeUpdate();
123+
session.createMutationQuery( "delete from SimpleEntity" ).executeUpdate();
124+
session.createMutationQuery( "delete from EntityOfMaps" ).executeUpdate();
125+
} );
126+
}
127+
117128
@Test
118129
@TestForIssue( jiraKey = "HHH-15711")
119130
public void testLowerUpperFunctionsWithEnums(SessionFactoryScope scope) {
@@ -599,6 +610,7 @@ public void testDateTruncFunction(SessionFactoryScope scope) {
599610
@Test
600611
@SkipForDialect(dialectClass = DerbyDialect.class, reason = "Derby doesn't support any form of date truncation")
601612
@SkipForDialect(dialectClass = OracleDialect.class, reason = "See HHH-16442, Oracle trunc() throws away the timezone")
613+
@SkipForDialect(dialectClass = InformixDialect.class, reason = "Informix doesn't support any form of date truncation")
602614
public void testDateTruncWithOffsetFunction(SessionFactoryScope scope) {
603615
scope.inTransaction(
604616
session -> {
@@ -1063,6 +1075,7 @@ public void testCastDoubleToString(SessionFactoryScope scope) {
10631075
@SkipForDialect(dialectClass = OracleDialect.class, reason = "Oracle treats the cast value as a hexadecimal literal")
10641076
@SkipForDialect(dialectClass = HSQLDialect.class, reason = "HSQL treats the cast value as a hexadecimal literal")
10651077
@SkipForDialect(dialectClass = AltibaseDialect.class, reason = "Altibase doesn't support casting varchar to binary")
1078+
@SkipForDialect(dialectClass = InformixDialect.class, reason = "Informix doesn't support casting varchar to byte")
10661079
public void testCastFunctionBinary(SessionFactoryScope scope) {
10671080
scope.inTransaction(
10681081
session -> {

hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/SchemaMigratorHaltOnErrorTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.hibernate.cfg.AvailableSettings;
1818
import org.hibernate.community.dialect.AltibaseDialect;
1919
import org.hibernate.community.dialect.FirebirdDialect;
20+
import org.hibernate.community.dialect.InformixDialect;
2021
import org.hibernate.dialect.DB2Dialect;
2122
import org.hibernate.community.dialect.DerbyDialect;
2223
import org.hibernate.orm.test.jpa.BaseEntityManagerFunctionalTestCase;
@@ -31,6 +32,7 @@
3132
@SkipForDialect(value = DerbyDialect.class, comment = "Derby is far more resistant to the reserved keyword usage.")
3233
@SkipForDialect(value = FirebirdDialect.class, comment = "FirebirdDialect has autoQuoteKeywords enabled, so it is far more resistant to the reserved keyword usage.")
3334
@SkipForDialect(value = AltibaseDialect.class, comment = "AltibaseDialect has autoQuoteKeywords enabled, so it is far more resistant to the reserved keyword usage.")
35+
@SkipForDialect(value = InformixDialect.class, comment = "Informix is far more resistant to the reserved keyword usage.")
3436
public class SchemaMigratorHaltOnErrorTest extends BaseEntityManagerFunctionalTestCase {
3537

3638
@Override

hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/SchemaUpdateHaltOnErrorTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.hibernate.boot.spi.MetadataImplementor;
2323
import org.hibernate.community.dialect.AltibaseDialect;
2424
import org.hibernate.community.dialect.FirebirdDialect;
25+
import org.hibernate.community.dialect.InformixDialect;
2526
import org.hibernate.dialect.DB2Dialect;
2627
import org.hibernate.testing.SkipForDialect;
2728
import org.hibernate.testing.junit4.CustomRunner;
@@ -44,6 +45,7 @@
4445
@SkipForDialect(value = DerbyDialect.class, comment = "Derby is far more resistant to the reserved keyword usage.")
4546
@SkipForDialect(value = FirebirdDialect.class, comment = "FirebirdDialect has autoQuoteKeywords enabled, so it is far more resistant to the reserved keyword usage.")
4647
@SkipForDialect(value = AltibaseDialect.class, comment = "AltibaseDialect has autoQuoteKeywords enabled, so it is far more resistant to the reserved keyword usage.")
48+
@SkipForDialect(value = InformixDialect.class, comment = "Informix is far more resistant to the reserved keyword usage.")
4749
@RunWith(CustomRunner.class)
4850
public class SchemaUpdateHaltOnErrorTest {
4951

hibernate-testing/src/main/java/org/hibernate/testing/orm/junit/DialectFeatureChecks.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import org.hibernate.boot.model.TruthValue;
1212
import org.hibernate.community.dialect.FirebirdDialect;
13+
import org.hibernate.community.dialect.InformixDialect;
1314
import org.hibernate.dialect.HANADialect;
1415
import org.hibernate.dialect.CockroachDialect;
1516
import org.hibernate.dialect.DB2Dialect;
@@ -316,8 +317,9 @@ public boolean apply(Dialect dialect) {
316317
public static class SupportsRepeat implements DialectFeatureCheck {
317318
public boolean apply(Dialect dialect) {
318319
dialect = DialectDelegateWrapper.extractRealDialect( dialect );
319-
// Derby doesn't support the `REPLACE` function
320-
return !( dialect instanceof DerbyDialect );
320+
// Derby doesn't support the `REPEAT` function
321+
return !( dialect instanceof DerbyDialect
322+
|| dialect instanceof InformixDialect );
321323
}
322324
}
323325

@@ -483,6 +485,7 @@ public boolean apply(Dialect dialect) {
483485
|| dialect instanceof DerbyDialect
484486
|| dialect instanceof FirebirdDialect
485487
|| dialect instanceof DB2Dialect && ( (DB2Dialect) dialect ).getDB2Version().isBefore( 11 ) )
488+
|| dialect instanceof InformixDialect
486489
|| dialect instanceof MariaDBDialect;
487490
}
488491
}

0 commit comments

Comments
 (0)