Skip to content

Commit 17e82d7

Browse files
committed
HHH-18818 Cleanup code, test code and add some more javadoc
1 parent 4184579 commit 17e82d7

File tree

10 files changed

+42
-28
lines changed

10 files changed

+42
-28
lines changed

hibernate-core/src/main/java/org/hibernate/id/enhanced/Optimizer.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,10 @@ public interface Optimizer {
6969
* strategy for calculating the starting value of a sequence range.
7070
*
7171
* @param databaseValue The expression representing the next value from database sequence
72-
* @param sessionFactory
72+
* @param sessionFactory The session factory
7373
* @return An expression that calculates the low/base value according to the optimizer strategy
74+
*
75+
* @since 7.1
7476
*/
7577
Expression createLowValueExpression(Expression databaseValue, SessionFactoryImplementor sessionFactory);
7678
}

hibernate-core/src/main/java/org/hibernate/query/sqm/mutation/internal/cte/CteInsertHandler.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -388,11 +388,12 @@ public int execute(DomainQueryExecutionContext executionContext) {
388388
sessionFactory.getSqlStringGenerationContext()
389389
);
390390

391-
Expression databaseValue = new SelfRenderingSqlFragmentExpression( fragment );
392-
rowsWithSequenceQuery.getSelectClause().addSqlSelection(
393-
new SqlSelectionImpl( 1,
394-
optimizer.createLowValueExpression( databaseValue, sessionFactory ) )
391+
final Expression lowValueExpression = optimizer.createLowValueExpression(
392+
new SelfRenderingSqlFragmentExpression( fragment ),
393+
sessionFactory
395394
);
395+
rowsWithSequenceQuery.getSelectClause()
396+
.addSqlSelection( new SqlSelectionImpl( 1, lowValueExpression ) );
396397

397398
rowsWithSequenceQuery.applyPredicate(
398399
new ComparisonPredicate(

hibernate-core/src/test/java/org/hibernate/orm/test/id/cte/CteInsertWithHiLoOptimizerTest.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
/*
2-
* SPDX-License-Identifier: LGPL-2.1-or-later
2+
* SPDX-License-Identifier: Apache-2.0
33
* Copyright Red Hat Inc. and Hibernate Authors
44
*/
55
package org.hibernate.orm.test.id.cte;
66

77
import org.hibernate.cfg.AvailableSettings;
8-
import org.hibernate.dialect.DB2Dialect;
9-
import org.hibernate.dialect.PostgreSQLDialect;
108
import org.hibernate.id.enhanced.HiLoOptimizer;
9+
import org.hibernate.testing.orm.junit.DialectFeatureChecks;
1110
import org.hibernate.testing.orm.junit.DomainModel;
1211
import org.hibernate.testing.orm.junit.JiraKey;
13-
import org.hibernate.testing.orm.junit.RequiresDialect;
14-
import org.hibernate.testing.orm.junit.RequiresDialects;
12+
import org.hibernate.testing.orm.junit.RequiresDialectFeature;
1513
import org.hibernate.testing.orm.junit.ServiceRegistry;
1614
import org.hibernate.testing.orm.junit.SessionFactory;
1715
import org.hibernate.testing.orm.junit.SessionFactoryScope;
@@ -28,12 +26,9 @@
2826
*/
2927
@JiraKey("HHH-18818")
3028
@SessionFactory
31-
@RequiresDialects({
32-
@RequiresDialect(PostgreSQLDialect.class),
33-
@RequiresDialect(DB2Dialect.class)
34-
})
3529
@ServiceRegistry(settings = @Setting(name = AvailableSettings.PREFERRED_POOLED_OPTIMIZER, value = "hilo"))
3630
@DomainModel(annotatedClasses = Dummy.class)
31+
@RequiresDialectFeature(feature = DialectFeatureChecks.SupportsCteInsertStrategy.class)
3732
public class CteInsertWithHiLoOptimizerTest {
3833
@Test
3934
void test(SessionFactoryScope scope) {

hibernate-core/src/test/java/org/hibernate/orm/test/id/cte/CteInsertWithLegacyHiLoOptimizerTest.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
/*
2-
* SPDX-License-Identifier: LGPL-2.1-or-later
2+
* SPDX-License-Identifier: Apache-2.0
33
* Copyright Red Hat Inc. and Hibernate Authors
44
*/
55
package org.hibernate.orm.test.id.cte;
66

77
import org.hibernate.cfg.AvailableSettings;
8-
import org.hibernate.dialect.DB2Dialect;
9-
import org.hibernate.dialect.PostgreSQLDialect;
108
import org.hibernate.id.enhanced.LegacyHiLoAlgorithmOptimizer;
9+
import org.hibernate.testing.orm.junit.DialectFeatureChecks;
1110
import org.hibernate.testing.orm.junit.DomainModel;
1211
import org.hibernate.testing.orm.junit.JiraKey;
13-
import org.hibernate.testing.orm.junit.RequiresDialect;
14-
import org.hibernate.testing.orm.junit.RequiresDialects;
12+
import org.hibernate.testing.orm.junit.RequiresDialectFeature;
1513
import org.hibernate.testing.orm.junit.ServiceRegistry;
1614
import org.hibernate.testing.orm.junit.SessionFactory;
1715
import org.hibernate.testing.orm.junit.SessionFactoryScope;
@@ -28,12 +26,9 @@
2826
*/
2927
@JiraKey("HHH-18818")
3028
@SessionFactory
31-
@RequiresDialects({
32-
@RequiresDialect(PostgreSQLDialect.class),
33-
@RequiresDialect(DB2Dialect.class)
34-
})
3529
@ServiceRegistry(settings = @Setting(name = AvailableSettings.PREFERRED_POOLED_OPTIMIZER, value = "legacy-hilo"))
3630
@DomainModel(annotatedClasses = Dummy.class)
31+
@RequiresDialectFeature(feature = DialectFeatureChecks.SupportsCteInsertStrategy.class)
3732
public class CteInsertWithLegacyHiLoOptimizerTest {
3833
@Test
3934
void test(SessionFactoryScope scope) {

hibernate-core/src/test/java/org/hibernate/orm/test/id/cte/CteInsertWithNoopOptimizerTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
/*
2-
* SPDX-License-Identifier: LGPL-2.1-or-later
2+
* SPDX-License-Identifier: Apache-2.0
33
* Copyright Red Hat Inc. and Hibernate Authors
44
*/
55
package org.hibernate.orm.test.id.cte;
66

77
import org.hibernate.cfg.AvailableSettings;
88
import org.hibernate.id.enhanced.NoopOptimizer;
9+
import org.hibernate.testing.orm.junit.DialectFeatureChecks;
910
import org.hibernate.testing.orm.junit.DomainModel;
1011
import org.hibernate.testing.orm.junit.JiraKey;
12+
import org.hibernate.testing.orm.junit.RequiresDialectFeature;
1113
import org.hibernate.testing.orm.junit.ServiceRegistry;
1214
import org.hibernate.testing.orm.junit.SessionFactory;
1315
import org.hibernate.testing.orm.junit.SessionFactoryScope;
@@ -26,6 +28,7 @@
2628
@SessionFactory
2729
@ServiceRegistry(settings = @Setting(name = AvailableSettings.PREFERRED_POOLED_OPTIMIZER, value = "none"))
2830
@DomainModel(annotatedClasses = Dummy.class)
31+
@RequiresDialectFeature(feature = DialectFeatureChecks.SupportsCteInsertStrategy.class)
2932
public class CteInsertWithNoopOptimizerTest {
3033
@Test
3134
void test(SessionFactoryScope scope) {

hibernate-core/src/test/java/org/hibernate/orm/test/id/cte/CteInsertWithPooledLoOptimizerTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
/*
2-
* SPDX-License-Identifier: LGPL-2.1-or-later
2+
* SPDX-License-Identifier: Apache-2.0
33
* Copyright Red Hat Inc. and Hibernate Authors
44
*/
55
package org.hibernate.orm.test.id.cte;
66

77
import org.hibernate.cfg.AvailableSettings;
88
import org.hibernate.id.enhanced.PooledLoOptimizer;
9+
import org.hibernate.testing.orm.junit.DialectFeatureChecks;
910
import org.hibernate.testing.orm.junit.DomainModel;
1011
import org.hibernate.testing.orm.junit.JiraKey;
12+
import org.hibernate.testing.orm.junit.RequiresDialectFeature;
1113
import org.hibernate.testing.orm.junit.ServiceRegistry;
1214
import org.hibernate.testing.orm.junit.SessionFactory;
1315
import org.hibernate.testing.orm.junit.SessionFactoryScope;
@@ -26,6 +28,7 @@
2628
@SessionFactory
2729
@ServiceRegistry(settings = @Setting(name = AvailableSettings.PREFERRED_POOLED_OPTIMIZER, value = "pooled-lo"))
2830
@DomainModel(annotatedClasses = Dummy.class)
31+
@RequiresDialectFeature(feature = DialectFeatureChecks.SupportsCteInsertStrategy.class)
2932
public class CteInsertWithPooledLoOptimizerTest {
3033
@Test
3134
void test(SessionFactoryScope scope) {

hibernate-core/src/test/java/org/hibernate/orm/test/id/cte/CteInsertWithPooledLoThreadLocalOptimizerTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
/*
2-
* SPDX-License-Identifier: LGPL-2.1-or-later
2+
* SPDX-License-Identifier: Apache-2.0
33
* Copyright Red Hat Inc. and Hibernate Authors
44
*/
55
package org.hibernate.orm.test.id.cte;
66

77
import org.hibernate.cfg.AvailableSettings;
88
import org.hibernate.id.enhanced.PooledLoThreadLocalOptimizer;
9+
import org.hibernate.testing.orm.junit.DialectFeatureChecks;
910
import org.hibernate.testing.orm.junit.DomainModel;
1011
import org.hibernate.testing.orm.junit.JiraKey;
12+
import org.hibernate.testing.orm.junit.RequiresDialectFeature;
1113
import org.hibernate.testing.orm.junit.ServiceRegistry;
1214
import org.hibernate.testing.orm.junit.SessionFactory;
1315
import org.hibernate.testing.orm.junit.SessionFactoryScope;
@@ -24,6 +26,7 @@
2426
@SessionFactory
2527
@ServiceRegistry(settings = @Setting(name = AvailableSettings.PREFERRED_POOLED_OPTIMIZER, value = "pooled-lotl"))
2628
@DomainModel(annotatedClasses = Dummy.class)
29+
@RequiresDialectFeature(feature = DialectFeatureChecks.SupportsCteInsertStrategy.class)
2730
public class CteInsertWithPooledLoThreadLocalOptimizerTest {
2831
@Test
2932
void test(SessionFactoryScope scope) {

hibernate-core/src/test/java/org/hibernate/orm/test/id/cte/CteInsertWithPooledOptimizerTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
/*
2-
* SPDX-License-Identifier: LGPL-2.1-or-later
2+
* SPDX-License-Identifier: Apache-2.0
33
* Copyright Red Hat Inc. and Hibernate Authors
44
*/
55
package org.hibernate.orm.test.id.cte;
66

77
import org.hibernate.cfg.AvailableSettings;
88
import org.hibernate.id.enhanced.PooledOptimizer;
9+
import org.hibernate.testing.orm.junit.DialectFeatureChecks;
910
import org.hibernate.testing.orm.junit.DomainModel;
1011
import org.hibernate.testing.orm.junit.JiraKey;
12+
import org.hibernate.testing.orm.junit.RequiresDialectFeature;
1113
import org.hibernate.testing.orm.junit.ServiceRegistry;
1214
import org.hibernate.testing.orm.junit.SessionFactory;
1315
import org.hibernate.testing.orm.junit.SessionFactoryScope;
@@ -26,6 +28,7 @@
2628
@SessionFactory
2729
@ServiceRegistry(settings = @Setting(name = AvailableSettings.PREFERRED_POOLED_OPTIMIZER, value = "pooled"))
2830
@DomainModel(annotatedClasses = Dummy.class)
31+
@RequiresDialectFeature(feature = DialectFeatureChecks.SupportsCteInsertStrategy.class)
2932
public class CteInsertWithPooledOptimizerTest {
3033
@Test
3134
void test(SessionFactoryScope scope) {

hibernate-core/src/test/java/org/hibernate/orm/test/id/cte/Dummy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-License-Identifier: LGPL-2.1-or-later
2+
* SPDX-License-Identifier: Apache-2.0
33
* Copyright Red Hat Inc. and Hibernate Authors
44
*/
55
package org.hibernate.orm.test.id.cte;

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,15 @@ public boolean apply(Dialect dialect) {
449449
}
450450
}
451451

452+
public static class SupportsCteInsertStrategy implements DialectFeatureCheck {
453+
public boolean apply(Dialect dialect) {
454+
return dialect instanceof PostgreSQLDialect
455+
|| dialect instanceof CockroachDialect
456+
|| dialect instanceof DB2Dialect
457+
|| dialect instanceof GaussDBDialect;
458+
}
459+
}
460+
452461
public static class SupportsTemporaryTable implements DialectFeatureCheck {
453462
public boolean apply(Dialect dialect) {
454463
return dialect.getLocalTemporaryTableStrategy() != null || dialect.getGlobalTemporaryTableStrategy() != null;

0 commit comments

Comments
 (0)