Skip to content

Commit b7cb358

Browse files
dreab8beikov
authored andcommitted
Rework multi-table handling and non-select query plan code to allow caching and help Hibernate Reactive
1 parent 703d138 commit b7cb358

File tree

6 files changed

+29
-3
lines changed

6 files changed

+29
-3
lines changed

hibernate-core/src/main/java/org/hibernate/query/sqm/internal/AbstractMultiTableMutationQueryPlan.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ protected abstract MultiTableHandlerBuildResult buildHandler(
3838
@Override
3939
public int executeUpdate(DomainQueryExecutionContext context) {
4040
BulkOperationCleanupAction.schedule( context.getSession(), statement );
41+
return handler.execute( getJdbcParameterBindings( context ), context );
42+
}
43+
44+
// For Hibernate Reactive
45+
protected JdbcParameterBindings getJdbcParameterBindings(DomainQueryExecutionContext context) {
4146
MultiTableHandler localCopy = handler;
4247
JdbcParameterBindings jdbcParameterBindings = null;
4348

@@ -100,7 +105,7 @@ public int executeUpdate(DomainQueryExecutionContext context) {
100105
if ( jdbcParameterBindings == null ) {
101106
jdbcParameterBindings = localCopy.createJdbcParameterBindings( context );
102107
}
103-
return localCopy.execute( jdbcParameterBindings, context );
108+
return jdbcParameterBindings;
104109
}
105110

106111
}

hibernate-core/src/main/java/org/hibernate/query/sqm/internal/ConcreteSqmSelectQueryPlan.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,8 @@ private <T, X> T withCacheableSqmInterpretation(DomainQueryExecutionContext exec
455455
return interpreter.interpret( context, executionContext, localCopy, jdbcParameterBindings );
456456
}
457457

458-
private JdbcParameterBindings createJdbcParameterBindings(CacheableSqmInterpretation<SelectStatement, JdbcOperationQuerySelect> sqmInterpretation, DomainQueryExecutionContext executionContext) {
458+
// For Hibernate Reactive
459+
protected JdbcParameterBindings createJdbcParameterBindings(CacheableSqmInterpretation<SelectStatement, JdbcOperationQuerySelect> sqmInterpretation, DomainQueryExecutionContext executionContext) {
459460
return SqmUtil.createJdbcParameterBindings(
460461
executionContext.getQueryParameterBindings(),
461462
domainParameterXref,
@@ -471,7 +472,8 @@ public <T> MappingModelExpressible<T> getResolvedMappingModelType(SqmParameter<T
471472
);
472473
}
473474

474-
private static CacheableSqmInterpretation<SelectStatement, JdbcOperationQuerySelect> buildInterpretation(
475+
// For Hibernate Reactive
476+
protected static CacheableSqmInterpretation<SelectStatement, JdbcOperationQuerySelect> buildInterpretation(
475477
SqmSelectStatement<?> sqm,
476478
DomainParameterXref domainParameterXref,
477479
DomainQueryExecutionContext executionContext,

hibernate-core/src/main/java/org/hibernate/query/sqm/mutation/internal/temptable/TableBasedDeleteHandler.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -747,4 +747,9 @@ protected TemporaryTableStrategy getTemporaryTableStrategy() {
747747
protected Function<SharedSessionContractImplementor, String> getSessionUidAccess() {
748748
return sessionUidAccess;
749749
}
750+
751+
// For Hibernate Reactive
752+
protected @Nullable JdbcParameter getSessionUidParameter() {
753+
return sessionUidParameter;
754+
}
750755
}

hibernate-core/src/main/java/org/hibernate/query/sqm/mutation/internal/temptable/TableBasedInsertHandler.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1325,4 +1325,8 @@ protected AfterUseAction getAfterUseAction() {
13251325
return forceDropAfterUse ? AfterUseAction.DROP : temporaryTableStrategy.getTemporaryTableAfterUseAction();
13261326
}
13271327

1328+
// For Hibernate Reactive
1329+
protected @Nullable JdbcParameter getSessionUidParameter() {
1330+
return sessionUidParameter;
1331+
}
13281332
}

hibernate-core/src/main/java/org/hibernate/query/sqm/mutation/internal/temptable/TableBasedSoftDeleteHandler.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -512,4 +512,9 @@ protected TemporaryTableStrategy getTemporaryTableStrategy() {
512512
protected Function<SharedSessionContractImplementor, String> getSessionUidAccess() {
513513
return sessionUidAccess;
514514
}
515+
516+
// For Hibernate Reactive
517+
protected @Nullable JdbcParameter getSessionUidParameter() {
518+
return sessionUidParameter;
519+
}
515520
}

hibernate-core/src/main/java/org/hibernate/query/sqm/mutation/internal/temptable/TableBasedUpdateHandler.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -736,4 +736,9 @@ protected CacheableSqmInterpretation<InsertSelectStatement, JdbcOperationQueryMu
736736
protected Function<SharedSessionContractImplementor, String> getSessionUidAccess() {
737737
return sessionUidAccess;
738738
}
739+
740+
// For Hibernate reactive
741+
protected @Nullable JdbcParameter getSessionUidParameter() {
742+
return sessionUidParameter;
743+
}
739744
}

0 commit comments

Comments
 (0)