Skip to content

Commit af9ac11

Browse files
author
nathan.xu
committed
HHH-16283 revert back LimitHandler related code changes
1 parent 7fc85c6 commit af9ac11

File tree

13 files changed

+41
-263
lines changed

13 files changed

+41
-263
lines changed

hibernate-core/src/main/java/org/hibernate/dialect/pagination/OffsetFetchLimitHandler.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@
44
*/
55
package org.hibernate.dialect.pagination;
66

7-
import java.util.function.Supplier;
8-
97
import org.hibernate.query.spi.Limit;
10-
import org.hibernate.query.spi.QueryOptions;
118

129
/**
1310
* A {@link LimitHandler} for databases which support the
@@ -27,7 +24,7 @@ public OffsetFetchLimitHandler(boolean variableLimit) {
2724
}
2825

2926
@Override
30-
public String processSql(String sql, Limit limit, QueryOptions queryOptions) {
27+
public String processSql(String sql, Limit limit) {
3128

3229
boolean hasFirstRow = hasFirstRow(limit);
3330
boolean hasMaxRows = hasMaxRows(limit);
@@ -40,14 +37,10 @@ public String processSql(String sql, Limit limit, QueryOptions queryOptions) {
4037

4138
begin(sql, offsetFetch, hasFirstRow, hasMaxRows);
4239

43-
Supplier<String> parameterMarkerSupplier = ( queryOptions == null || queryOptions.getLimitHandlerParameterMarkerSupplier() == null )
44-
? () -> "?"
45-
: queryOptions.getLimitHandlerParameterMarkerSupplier();
46-
4740
if ( hasFirstRow ) {
4841
offsetFetch.append( " offset " );
4942
if ( supportsVariableLimit() ) {
50-
offsetFetch.append( parameterMarkerSupplier.get() );
43+
offsetFetch.append( "?" );
5144
}
5245
else {
5346
offsetFetch.append( limit.getFirstRow() );
@@ -65,7 +58,7 @@ public String processSql(String sql, Limit limit, QueryOptions queryOptions) {
6558
offsetFetch.append( " fetch first " );
6659
}
6760
if ( supportsVariableLimit() ) {
68-
offsetFetch.append( parameterMarkerSupplier.get() );
61+
offsetFetch.append( "?" );
6962
}
7063
else {
7164
offsetFetch.append( getMaxOrLimit( limit ) );

hibernate-core/src/main/java/org/hibernate/query/internal/QueryOptionsImpl.java

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import java.util.HashSet;
1010
import java.util.List;
1111
import java.util.Set;
12-
import java.util.function.Supplier;
1312

1413
import jakarta.persistence.CacheRetrieveMode;
1514
import jakarta.persistence.CacheStoreMode;
@@ -53,17 +52,6 @@ public class QueryOptionsImpl implements MutableQueryOptions, AppliedGraph {
5352
private Set<String> enabledFetchProfiles;
5453
private Set<String> disabledFetchProfiles;
5554

56-
@Nullable
57-
private final Supplier<String> limitHandlerParameterMarkerSupplier;
58-
59-
public QueryOptionsImpl() {
60-
this( null );
61-
}
62-
63-
public QueryOptionsImpl(Supplier<String> limitHandlerParameterMarkerSupplier) {
64-
this.limitHandlerParameterMarkerSupplier = limitHandlerParameterMarkerSupplier;
65-
}
66-
6755
@Override
6856
public Integer getTimeout() {
6957
return timeout;
@@ -267,9 +255,4 @@ public AppliedGraph getAppliedGraph() {
267255
public @Nullable GraphSemantic getSemantic() {
268256
return graphSemantic;
269257
}
270-
271-
@Override
272-
public @Nullable Supplier<String> getLimitHandlerParameterMarkerSupplier() {
273-
return this.limitHandlerParameterMarkerSupplier;
274-
}
275258
}

hibernate-core/src/main/java/org/hibernate/query/spi/QueryOptions.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import java.sql.Statement;
88
import java.util.List;
99
import java.util.Set;
10-
import java.util.function.Supplier;
1110

1211
import jakarta.persistence.CacheRetrieveMode;
1312
import jakarta.persistence.CacheStoreMode;
@@ -194,10 +193,6 @@ default ListResultsConsumer.UniqueSemantic getUniqueSemantic(){
194193
return null;
195194
}
196195

197-
default Supplier<String> getLimitHandlerParameterMarkerSupplier() {
198-
return () -> "?";
199-
}
200-
201196
/**
202197
* Provide singleton access for frequently needed options:
203198
*/

hibernate-core/src/main/java/org/hibernate/query/sql/internal/NativeNonSelectQueryPlanImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
import org.hibernate.query.spi.DomainQueryExecutionContext;
1515
import org.hibernate.query.spi.NonSelectQueryPlan;
1616
import org.hibernate.query.spi.QueryParameterBindings;
17-
import org.hibernate.query.sql.spi.NativeQueryPlan;
1817
import org.hibernate.query.sql.spi.ParameterOccurrence;
18+
import org.hibernate.query.sqm.internal.SqmJdbcExecutionContextAdapter;
1919
import org.hibernate.sql.exec.internal.JdbcParameterBindingsImpl;
2020
import org.hibernate.sql.exec.spi.JdbcOperationQueryMutation;
2121
import org.hibernate.sql.exec.spi.JdbcOperationQueryMutationNative;
@@ -25,7 +25,7 @@
2525
/**
2626
* @author Steve Ebersole
2727
*/
28-
public class NativeNonSelectQueryPlanImpl implements NonSelectQueryPlan, NativeQueryPlan {
28+
public class NativeNonSelectQueryPlanImpl implements NonSelectQueryPlan {
2929
private final String sql;
3030
private final Set<String> affectedTableNames;
3131

@@ -79,7 +79,7 @@ public int executeUpdate(DomainQueryExecutionContext executionContext) {
7979
.getStatementPreparer()
8080
.prepareStatement( sql ),
8181
(integer, preparedStatement) -> {},
82-
getSqmJdbcExecutionContext( executionContext, jdbcParameterBindings )
82+
SqmJdbcExecutionContextAdapter.usingLockingAndPaging( executionContext )
8383
);
8484
}
8585
}

hibernate-core/src/main/java/org/hibernate/query/sql/internal/NativeQueryImpl.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@
116116

117117
/**
118118
* @author Steve Ebersole
119-
* @author Nathan Xu
120119
*/
121120
public class NativeQueryImpl<R>
122121
extends AbstractQuery<R>

hibernate-core/src/main/java/org/hibernate/query/sql/internal/NativeSelectQueryPlanImpl.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.hibernate.query.spi.ScrollableResultsImplementor;
2121
import org.hibernate.query.sql.spi.NativeSelectQueryPlan;
2222
import org.hibernate.query.sql.spi.ParameterOccurrence;
23+
import org.hibernate.query.sqm.internal.SqmJdbcExecutionContextAdapter;
2324
import org.hibernate.sql.exec.internal.JdbcParameterBindingsImpl;
2425
import org.hibernate.sql.exec.spi.JdbcOperationQuerySelect;
2526
import org.hibernate.sql.exec.spi.JdbcParameterBinder;
@@ -89,7 +90,7 @@ public <T> T executeQuery(DomainQueryExecutionContext executionContext, ResultsC
8990
return executionContext.getSession().getJdbcServices().getJdbcSelectExecutor().executeQuery(
9091
jdbcSelect,
9192
jdbcParameterBindings,
92-
getSqmJdbcExecutionContext( executionContext, jdbcParameterBindings ),
93+
SqmJdbcExecutionContextAdapter.usingLockingAndPaging( executionContext ),
9394
null,
9495
null,
9596
-1,
@@ -132,7 +133,7 @@ public List<R> performList(DomainQueryExecutionContext executionContext) {
132133
return executionContext.getSession().getJdbcServices().getJdbcSelectExecutor().list(
133134
jdbcSelect,
134135
jdbcParameterBindings,
135-
getSqmJdbcExecutionContext( executionContext, jdbcParameterBindings ),
136+
SqmJdbcExecutionContextAdapter.usingLockingAndPaging( executionContext ),
136137
null,
137138
queryOptions.getUniqueSemantic() == null ?
138139
ListResultsConsumer.UniqueSemantic.NEVER :
@@ -176,7 +177,7 @@ public ScrollableResultsImplementor<R> performScroll(ScrollMode scrollMode, Doma
176177
jdbcSelect,
177178
scrollMode,
178179
jdbcParameterBindings,
179-
getSqmJdbcExecutionContext( executionContext, jdbcParameterBindings ),
180+
SqmJdbcExecutionContextAdapter.usingLockingAndPaging( executionContext ),
180181
null,
181182
-1
182183
);

hibernate-core/src/main/java/org/hibernate/query/sql/spi/NativeQueryPlan.java

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,8 @@
44
*/
55
package org.hibernate.query.sql.spi;
66

7-
import java.util.function.Supplier;
8-
9-
import org.hibernate.internal.util.MutableInteger;
107
import org.hibernate.query.NativeQuery;
11-
import org.hibernate.query.spi.DelegatingQueryOptions;
12-
import org.hibernate.query.spi.DomainQueryExecutionContext;
13-
import org.hibernate.query.spi.QueryOptions;
148
import org.hibernate.query.spi.QueryPlan;
15-
import org.hibernate.query.sqm.internal.SqmJdbcExecutionContextAdapter;
16-
import org.hibernate.sql.ast.spi.ParameterMarkerStrategy;
17-
import org.hibernate.sql.exec.spi.ExecutionContext;
18-
import org.hibernate.sql.exec.spi.JdbcParameterBindings;
19-
import org.hibernate.type.descriptor.jdbc.IntegerJdbcType;
209

2110
/**
2211
* Specialization of {@link QueryPlan} for {@link NativeQuery}
@@ -25,25 +14,4 @@
2514
* @author Steve Ebersole
2615
*/
2716
public interface NativeQueryPlan extends QueryPlan {
28-
29-
default ExecutionContext getSqmJdbcExecutionContext(DomainQueryExecutionContext executionContext, JdbcParameterBindings jdbcParameterBindings) {
30-
final ParameterMarkerStrategy parameterMarkerStrategy = executionContext.getSession().getFactory().getServiceRegistry().getService(
31-
ParameterMarkerStrategy.class );
32-
final QueryOptions queryOptions;
33-
if (parameterMarkerStrategy != null) {
34-
final MutableInteger parameterPosition = new MutableInteger( jdbcParameterBindings.getBindings().size() );
35-
queryOptions = new DelegatingQueryOptions( executionContext.getQueryOptions() ) {
36-
@Override
37-
public Supplier<String> getLimitHandlerParameterMarkerSupplier() {
38-
return () -> parameterMarkerStrategy.createMarker(
39-
parameterPosition.incrementAndGet(),
40-
IntegerJdbcType.INSTANCE
41-
);
42-
}
43-
};
44-
} else {
45-
queryOptions = executionContext.getQueryOptions();
46-
}
47-
return SqmJdbcExecutionContextAdapter.usingLockingAndPaging( executionContext, queryOptions );
48-
}
4917
}

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,6 @@ public static SqmJdbcExecutionContextAdapter usingLockingAndPaging(DomainQueryEx
3131
return new SqmJdbcExecutionContextAdapter( sqmExecutionContext, sqmExecutionContext.getQueryOptions() );
3232
}
3333

34-
public static SqmJdbcExecutionContextAdapter usingLockingAndPaging(DomainQueryExecutionContext sqmExecutionContext, QueryOptions queryOptions) {
35-
return new SqmJdbcExecutionContextAdapter( sqmExecutionContext, queryOptions );
36-
}
37-
3834
private final DomainQueryExecutionContext sqmExecutionContext;
3935
private final QueryOptions queryOptions;
4036

hibernate-core/src/main/java/org/hibernate/query/sqm/sql/BaseSqmToSqlAstConverter.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,6 @@
402402
import org.hibernate.sql.results.graph.FetchParent;
403403
import org.hibernate.sql.results.graph.Fetchable;
404404
import org.hibernate.sql.results.graph.FetchableContainer;
405-
import org.hibernate.sql.results.graph.collection.internal.EagerCollectionFetch;
406405
import org.hibernate.sql.results.graph.entity.EntityResultGraphNode;
407406
import org.hibernate.sql.results.graph.instantiation.internal.DynamicInstantiation;
408407
import org.hibernate.sql.results.graph.internal.ImmutableFetchList;

hibernate-core/src/main/java/org/hibernate/sql/results/jdbc/internal/DeferredResultSetAccess.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.hibernate.query.spi.QueryOptions;
2727
import org.hibernate.resource.jdbc.spi.JdbcSessionContext;
2828
import org.hibernate.resource.jdbc.spi.LogicalConnectionImplementor;
29-
import org.hibernate.sql.ast.spi.ParameterMarkerStrategy;
3029
import org.hibernate.sql.exec.spi.ExecutionContext;
3130
import org.hibernate.sql.exec.spi.JdbcLockStrategy;
3231
import org.hibernate.sql.exec.spi.JdbcOperationQuerySelect;
@@ -52,7 +51,6 @@ public class DeferredResultSetAccess extends AbstractResultSetAccess {
5251
private final LimitHandler limitHandler;
5352
private final boolean usesFollowOnLocking;
5453
private final int resultCountEstimate;
55-
private final ParameterMarkerStrategy parameterMarkerStrategy;
5654

5755
private PreparedStatement preparedStatement;
5856
private ResultSet resultSet;
@@ -70,7 +68,6 @@ public DeferredResultSetAccess(
7068
this.statementCreator = statementCreator;
7169
this.sqlStatementLogger = executionContext.getSession().getJdbcServices().getSqlStatementLogger();
7270
this.resultCountEstimate = resultCountEstimate;
73-
this.parameterMarkerStrategy = executionContext.getSession().getSessionFactory().getServiceRegistry().requireService( ParameterMarkerStrategy.class );
7471

7572
final QueryOptions queryOptions = executionContext.getQueryOptions();
7673
if ( queryOptions == null ) {

0 commit comments

Comments
 (0)