Skip to content

Commit 414a0dd

Browse files
committed
HHH-12787 - SessionJdbcBatchTest hangs with DB2
1 parent 0449c1a commit 414a0dd

File tree

38 files changed

+245
-336
lines changed

38 files changed

+245
-336
lines changed

hibernate-agroal/src/test/java/org/hibernate/test/agroal/AgroalSkipAutoCommitTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import org.hibernate.cfg.AvailableSettings;
1010
import org.hibernate.cfg.Configuration;
1111
import org.hibernate.test.agroal.util.PreparedStatementSpyConnectionProvider;
12+
import org.hibernate.testing.DialectChecks;
13+
import org.hibernate.testing.RequiresDialectFeature;
1214
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
1315
import org.junit.Test;
1416

@@ -28,6 +30,7 @@
2830
/**
2931
* @author Vlad Mihalcea
3032
*/
33+
@RequiresDialectFeature(DialectChecks.SupportsJdbcDriverProxying.class)
3134
public class AgroalSkipAutoCommitTest extends BaseCoreFunctionalTestCase {
3235

3336
private PreparedStatementSpyConnectionProvider connectionProvider = new PreparedStatementSpyConnectionProvider();

hibernate-core/src/test/java/org/hibernate/jpa/test/criteria/literal/AbstractCriteriaLiteralHandlingModeTest.java

Lines changed: 10 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,41 +20,27 @@
2020
import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase;
2121

2222
import org.hibernate.testing.RequiresDialect;
23+
import org.hibernate.testing.jdbc.SQLStatementInterceptor;
2324
import org.hibernate.test.util.jdbc.PreparedStatementSpyConnectionProvider;
2425
import org.junit.Before;
2526
import org.junit.Test;
2627

2728
import static org.hibernate.testing.transaction.TransactionUtil.doInJPA;
29+
import static org.hibernate.testing.transaction.TransactionUtil.setJdbcTimeout;
2830
import static org.junit.Assert.assertEquals;
2931
import static org.junit.Assert.assertNotNull;
32+
import static org.junit.Assert.assertTrue;
3033

3134
/**
3235
* @author Vlad Mihalcea
3336
*/
3437
public abstract class AbstractCriteriaLiteralHandlingModeTest extends BaseEntityManagerFunctionalTestCase {
3538

36-
private PreparedStatementSpyConnectionProvider connectionProvider;
39+
private SQLStatementInterceptor sqlStatementInterceptor;
3740

3841
@Override
39-
protected Map getConfig() {
40-
Map config = super.getConfig();
41-
config.put(
42-
org.hibernate.cfg.AvailableSettings.CONNECTION_PROVIDER,
43-
connectionProvider
44-
);
45-
return config;
46-
}
47-
48-
@Override
49-
public void buildEntityManagerFactory() {
50-
connectionProvider = new PreparedStatementSpyConnectionProvider( false, false );
51-
super.buildEntityManagerFactory();
52-
}
53-
54-
@Override
55-
public void releaseResources() {
56-
super.releaseResources();
57-
connectionProvider.stop();
42+
protected void addConfigOptions(Map options) {
43+
sqlStatementInterceptor = new SQLStatementInterceptor( options );
5844
}
5945

6046
@Override
@@ -101,12 +87,12 @@ public void testLiteralHandlingMode() throws Exception {
10187
entity.get( "name" )
10288
);
10389

104-
connectionProvider.clear();
105-
List<Tuple> tuples = entityManager.createQuery( query )
106-
.getResultList();
90+
sqlStatementInterceptor.clear();
91+
92+
List<Tuple> tuples = entityManager.createQuery( query ).getResultList();
10793
assertEquals( 1, tuples.size() );
10894

109-
assertNotNull( connectionProvider.getPreparedStatement( expectedSQL() ) );
95+
sqlStatementInterceptor.assertExecuted( expectedSQL() );
11096
} );
11197
}
11298

hibernate-core/src/test/java/org/hibernate/jpa/test/criteria/nulliteral/CriteriaLiteralsTest.java

Lines changed: 14 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase;
3030

3131
import org.hibernate.testing.RequiresDialect;
32-
import org.hibernate.test.util.jdbc.PreparedStatementSpyConnectionProvider;
32+
import org.hibernate.testing.jdbc.SQLStatementInterceptor;
3333
import org.junit.Before;
3434
import org.junit.Test;
3535

@@ -44,29 +44,12 @@
4444
*/
4545
@RequiresDialect(H2Dialect.class)
4646
public class CriteriaLiteralsTest extends BaseEntityManagerFunctionalTestCase {
47-
48-
private PreparedStatementSpyConnectionProvider connectionProvider;
4947

50-
@Override
51-
protected Map getConfig() {
52-
Map config = super.getConfig();
53-
config.put(
54-
org.hibernate.cfg.AvailableSettings.CONNECTION_PROVIDER,
55-
connectionProvider
56-
);
57-
return config;
58-
}
59-
60-
@Override
61-
public void buildEntityManagerFactory() {
62-
connectionProvider = new PreparedStatementSpyConnectionProvider( false, false );
63-
super.buildEntityManagerFactory();
64-
}
48+
private SQLStatementInterceptor sqlStatementInterceptor;
6549

6650
@Override
67-
public void releaseResources() {
68-
super.releaseResources();
69-
connectionProvider.stop();
51+
protected void addConfigOptions(Map options) {
52+
sqlStatementInterceptor = new SQLStatementInterceptor( options );
7053
}
7154

7255
@Override
@@ -128,16 +111,15 @@ public void testLiteralsInWhereClause() throws Exception {
128111
entity.get( "name" )
129112
);
130113

131-
connectionProvider.clear();
114+
sqlStatementInterceptor.clear();
132115
List<Tuple> tuples = entityManager.createQuery( query )
133116
.getResultList();
134117

135118
assertEquals(
136119
1,
137-
connectionProvider.getPreparedStatements().size()
120+
sqlStatementInterceptor.getSqlQueries().size()
138121
);
139-
assertNotNull( connectionProvider.getPreparedStatement(
140-
"select 'abc' as col_0_0_, criteriali0_.name as col_1_0_ from Book criteriali0_ where criteriali0_.name=?" ) );
122+
sqlStatementInterceptor.assertExecuted("select 'abc' as col_0_0_, criteriali0_.name as col_1_0_ from Book criteriali0_ where criteriali0_.name=?");
141123
assertTrue( tuples.isEmpty() );
142124
} );
143125
}
@@ -178,12 +160,12 @@ private void testNumericLiterals(EntityManager entityManager, String expectedSQL
178160
entity.get( "name" )
179161
);
180162

181-
connectionProvider.clear();
182-
List<Tuple> tuples = entityManager.createQuery( query )
183-
.getResultList();
163+
sqlStatementInterceptor.clear();
164+
165+
List<Tuple> tuples = entityManager.createQuery( query ).getResultList();
184166
assertEquals( 1, tuples.size() );
185167

186-
assertNotNull( connectionProvider.getPreparedStatement(expectedSQL) );
168+
sqlStatementInterceptor.assertExecuted( expectedSQL );
187169
}
188170

189171
@Test
@@ -200,15 +182,13 @@ public void testCriteriaParameters() throws Exception {
200182
), cb.equal( authors.index(), 0 ) )
201183
.select( authors.get( "name" ) );
202184

203-
connectionProvider.clear();
185+
sqlStatementInterceptor.clear();
204186
entityManager.createQuery( query ).getResultList();
205187
assertEquals(
206188
1,
207-
connectionProvider.getPreparedStatements().size()
208-
);
209-
assertNotNull( connectionProvider.getPreparedStatement(
210-
"select authors1_.name as col_0_0_ from Book criteriali0_ inner join Author authors1_ on criteriali0_.id=authors1_.book_id where criteriali0_.name=? and authors1_.index_id=0" )
189+
sqlStatementInterceptor.getSqlQueries().size()
211190
);
191+
sqlStatementInterceptor.assertExecuted( "select authors1_.name as col_0_0_ from Book criteriali0_ inner join Author authors1_ on criteriali0_.id=authors1_.book_id where criteriali0_.name=? and authors1_.index_id=0" );
212192
} );
213193
}
214194

hibernate-core/src/test/java/org/hibernate/jpa/test/ejb3configuration/DisableDiscardPersistenceContextOnCloseTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase;
1515
import org.hibernate.jpa.test.Wallet;
1616

17+
import org.hibernate.testing.DialectChecks;
18+
import org.hibernate.testing.RequiresDialectFeature;
1719
import org.hibernate.test.util.jdbc.PreparedStatementSpyConnectionProvider;
1820
import org.junit.Test;
1921

@@ -24,6 +26,7 @@
2426
/**
2527
* @author Vlad Mihalcea
2628
*/
29+
@RequiresDialectFeature(DialectChecks.SupportsJdbcDriverProxying.class)
2730
public class DisableDiscardPersistenceContextOnCloseTest extends BaseEntityManagerFunctionalTestCase {
2831

2932
private PreparedStatementSpyConnectionProvider connectionProvider = new PreparedStatementSpyConnectionProvider( false, false );

hibernate-core/src/test/java/org/hibernate/jpa/test/ejb3configuration/EnableDiscardPersistenceContextOnCloseTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,14 @@
99
import java.util.Map;
1010
import javax.persistence.EntityManager;
1111

12+
import org.hibernate.dialect.DB2Dialect;
1213
import org.hibernate.jpa.AvailableSettings;
1314
import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase;
1415
import org.hibernate.jpa.test.Wallet;
1516

17+
import org.hibernate.testing.DialectChecks;
18+
import org.hibernate.testing.RequiresDialectFeature;
19+
import org.hibernate.testing.SkipForDialect;
1620
import org.hibernate.test.util.jdbc.PreparedStatementSpyConnectionProvider;
1721
import org.junit.Test;
1822

@@ -23,6 +27,7 @@
2327
/**
2428
* @author Vlad Mihalcea
2529
*/
30+
@RequiresDialectFeature(DialectChecks.SupportsJdbcDriverProxying.class)
2631
public class EnableDiscardPersistenceContextOnCloseTest extends BaseEntityManagerFunctionalTestCase {
2732

2833
private PreparedStatementSpyConnectionProvider connectionProvider = new PreparedStatementSpyConnectionProvider( false, false );

hibernate-core/src/test/java/org/hibernate/jpa/test/graphs/EntityGraphWithFetchAnnotationTest.java

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase;
2424

2525
import org.hibernate.testing.TestForIssue;
26+
import org.hibernate.testing.jdbc.SQLStatementInterceptor;
2627
import org.hibernate.test.util.jdbc.PreparedStatementSpyConnectionProvider;
2728
import org.junit.Test;
2829

@@ -36,28 +37,11 @@
3637
public class EntityGraphWithFetchAnnotationTest
3738
extends BaseEntityManagerFunctionalTestCase {
3839

39-
private PreparedStatementSpyConnectionProvider connectionProvider;
40+
private SQLStatementInterceptor sqlStatementInterceptor;
4041

4142
@Override
42-
protected Map getConfig() {
43-
Map config = super.getConfig();
44-
config.put(
45-
org.hibernate.cfg.AvailableSettings.CONNECTION_PROVIDER,
46-
connectionProvider
47-
);
48-
return config;
49-
}
50-
51-
@Override
52-
public void buildEntityManagerFactory() {
53-
connectionProvider = new PreparedStatementSpyConnectionProvider( false, false );
54-
super.buildEntityManagerFactory();
55-
}
56-
57-
@Override
58-
public void releaseResources() {
59-
super.releaseResources();
60-
connectionProvider.stop();
43+
protected void addConfigOptions(Map options) {
44+
sqlStatementInterceptor = new SQLStatementInterceptor( options );
6145
}
6246

6347
@Override
@@ -79,15 +63,15 @@ public void testWithoutEntityGraph() {
7963
.createQuery( Order.class );
8064
criteriaQuery.from( Order.class );
8165

82-
connectionProvider.clear();
66+
sqlStatementInterceptor.clear();
8367

8468
entityManager
8569
.createQuery( criteriaQuery )
8670
.setFirstResult( 10 )
8771
.setMaxResults( 20 )
8872
.getResultList();
8973

90-
assertFalse( connectionProvider.getPreparedSQLStatements().get( 0 ).toLowerCase().contains( "left outer join" ) );
74+
assertFalse( sqlStatementInterceptor.getSqlQueries().get( 0 ).toLowerCase().contains( "left outer join" ) );
9175
} );
9276
}
9377

@@ -104,7 +88,7 @@ public void testWithEntityGraph() {
10488
EntityGraph<Order> entityGraph = entityManager.createEntityGraph( Order.class );
10589
entityGraph.addAttributeNodes( "products" );
10690

107-
connectionProvider.clear();
91+
sqlStatementInterceptor.clear();
10892

10993
entityManager
11094
.createQuery( criteriaQuery )
@@ -113,7 +97,7 @@ public void testWithEntityGraph() {
11397
.setHint( QueryHints.HINT_FETCHGRAPH, entityGraph )
11498
.getResultList();
11599

116-
assertTrue( connectionProvider.getPreparedSQLStatements().get( 0 ).toLowerCase().contains( "left outer join" ) );
100+
assertTrue( sqlStatementInterceptor.getSqlQueries().get( 0 ).toLowerCase().contains( "left outer join" ) );
117101
} );
118102
}
119103

hibernate-core/src/test/java/org/hibernate/jpa/test/lock/StatementIsClosedAfterALockExceptionTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
import org.hibernate.Session;
1616
import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase;
1717

18+
import org.hibernate.testing.DialectChecks;
19+
import org.hibernate.testing.RequiresDialectFeature;
1820
import org.hibernate.testing.TestForIssue;
1921
import org.hibernate.test.util.jdbc.PreparedStatementSpyConnectionProvider;
2022
import org.hibernate.testing.transaction.TransactionUtil;
@@ -30,6 +32,7 @@
3032
/**
3133
* @author Andrea Boriero
3234
*/
35+
@RequiresDialectFeature(DialectChecks.SupportsJdbcDriverProxying.class)
3336
public class StatementIsClosedAfterALockExceptionTest extends BaseEntityManagerFunctionalTestCase {
3437

3538
private static final PreparedStatementSpyConnectionProvider CONNECTION_PROVIDER = new PreparedStatementSpyConnectionProvider( false, false );

0 commit comments

Comments
 (0)