Skip to content

Commit 7b58a33

Browse files
committed
HHH-16198 - Fix splitting of SqlAstCreationState
1 parent e509625 commit 7b58a33

File tree

49 files changed

+636
-912
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+636
-912
lines changed

hibernate-core/src/main/java/org/hibernate/loader/ast/internal/AbstractNaturalIdLoader.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,9 +162,9 @@ protected <L> L selectByNaturalId(
162162
true,
163163
entityPath,
164164
null,
165+
null,
165166
() -> rootQuerySpec::applyPredicate,
166-
sqlAstCreationState,
167-
sessionFactory
167+
sqlAstCreationState
168168
);
169169

170170
rootQuerySpec.getFromClause().addRoot( rootTableGroup );

hibernate-core/src/main/java/org/hibernate/loader/ast/internal/DatabaseSnapshotExecutor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,9 @@ class DatabaseSnapshotExecutor {
8484
true,
8585
rootPath,
8686
null,
87+
null,
8788
() -> rootQuerySpec::applyPredicate,
88-
state,
89-
sessionFactory
89+
state
9090
);
9191

9292
rootQuerySpec.getFromClause().addRoot( rootTableGroup );

hibernate-core/src/main/java/org/hibernate/loader/ast/internal/LoaderSelectBuilder.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -386,9 +386,9 @@ private SelectStatement generateSelect() {
386386
true,
387387
rootNavigablePath,
388388
null,
389+
null,
389390
() -> rootQuerySpec::applyPredicate,
390-
sqlAstCreationState,
391-
creationContext
391+
sqlAstCreationState
392392
);
393393

394394
rootQuerySpec.getFromClause().addRoot( rootTableGroup );
@@ -406,6 +406,7 @@ private SelectStatement generateSelect() {
406406
navigablePath,
407407
rootTableGroup,
408408
null,
409+
null,
409410
SqlAstJoinType.LEFT,
410411
true,
411412
false,
@@ -966,9 +967,9 @@ private SelectStatement generateSelect(SubselectFetch subselect) {
966967
true,
967968
rootNavigablePath,
968969
null,
970+
null,
969971
() -> rootQuerySpec::applyPredicate,
970-
sqlAstCreationState,
971-
creationContext
972+
sqlAstCreationState
972973
);
973974

974975
rootQuerySpec.getFromClause().addRoot( rootTableGroup );

hibernate-core/src/main/java/org/hibernate/metamodel/internal/AbstractCompositeIdentifierMapping.java

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,21 @@
1616
import org.hibernate.internal.util.collections.CollectionHelper;
1717
import org.hibernate.metamodel.mapping.AttributeMapping;
1818
import org.hibernate.metamodel.mapping.CompositeIdentifierMapping;
19+
import org.hibernate.metamodel.mapping.EmbeddableMappingType;
1920
import org.hibernate.metamodel.mapping.EntityIdentifierMapping;
2021
import org.hibernate.metamodel.mapping.EntityMappingType;
2122
import org.hibernate.metamodel.mapping.ForeignKeyDescriptor;
22-
import org.hibernate.metamodel.mapping.EmbeddableMappingType;
2323
import org.hibernate.metamodel.mapping.ModelPart;
2424
import org.hibernate.metamodel.mapping.SelectableMappings;
2525
import org.hibernate.metamodel.mapping.internal.MappingModelCreationProcess;
2626
import org.hibernate.metamodel.mapping.internal.ToOneAttributeMapping;
2727
import org.hibernate.metamodel.model.domain.NavigableRole;
28-
import org.hibernate.spi.NavigablePath;
2928
import org.hibernate.query.sqm.sql.SqmToSqlAstConverter;
29+
import org.hibernate.spi.NavigablePath;
3030
import org.hibernate.sql.ast.Clause;
3131
import org.hibernate.sql.ast.SqlAstJoinType;
32-
import org.hibernate.sql.ast.spi.FromClauseAccess;
33-
import org.hibernate.sql.ast.spi.SqlAliasBaseGenerator;
34-
import org.hibernate.sql.ast.spi.SqlAstCreationContext;
32+
import org.hibernate.sql.ast.spi.SqlAliasBase;
3533
import org.hibernate.sql.ast.spi.SqlAstCreationState;
36-
import org.hibernate.sql.ast.spi.SqlExpressionResolver;
3734
import org.hibernate.sql.ast.tree.expression.ColumnReference;
3835
import org.hibernate.sql.ast.tree.expression.Expression;
3936
import org.hibernate.sql.ast.tree.expression.SqlTuple;
@@ -129,13 +126,11 @@ public TableGroupJoin createTableGroupJoin(
129126
NavigablePath navigablePath,
130127
TableGroup lhs,
131128
String explicitSourceAlias,
129+
SqlAliasBase explicitSqlAliasBase,
132130
SqlAstJoinType requestedJoinType,
133131
boolean fetched,
134132
boolean addsPredicate,
135-
SqlAliasBaseGenerator aliasBaseGenerator,
136-
SqlExpressionResolver sqlExpressionResolver,
137-
FromClauseAccess fromClauseAccess,
138-
SqlAstCreationContext creationContext) {
133+
SqlAstCreationState creationState) {
139134
final SqlAstJoinType joinType;
140135
if ( requestedJoinType == null ) {
141136
joinType = SqlAstJoinType.INNER;
@@ -147,13 +142,11 @@ public TableGroupJoin createTableGroupJoin(
147142
navigablePath,
148143
lhs,
149144
explicitSourceAlias,
145+
explicitSqlAliasBase,
150146
requestedJoinType,
151147
fetched,
152148
null,
153-
aliasBaseGenerator,
154-
sqlExpressionResolver,
155-
fromClauseAccess,
156-
creationContext
149+
creationState
157150
);
158151

159152
return new TableGroupJoin( navigablePath, joinType, tableGroup, null );
@@ -164,13 +157,11 @@ public TableGroup createRootTableGroupJoin(
164157
NavigablePath navigablePath,
165158
TableGroup lhs,
166159
String explicitSourceAlias,
167-
SqlAstJoinType requestedJoinType,
160+
SqlAliasBase explicitSqlAliasBase,
161+
SqlAstJoinType sqlAstJoinType,
168162
boolean fetched,
169163
Consumer<Predicate> predicateConsumer,
170-
SqlAliasBaseGenerator aliasBaseGenerator,
171-
SqlExpressionResolver sqlExpressionResolver,
172-
FromClauseAccess fromClauseAccess,
173-
SqlAstCreationContext creationContext) {
164+
SqlAstCreationState creationState) {
174165
return new StandardVirtualTableGroup( navigablePath, this, lhs, fetched );
175166
}
176167

hibernate-core/src/main/java/org/hibernate/metamodel/mapping/EntityMappingType.java

Lines changed: 6 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,8 @@
3232
import org.hibernate.query.sqm.mutation.spi.SqmMultiTableInsertStrategy;
3333
import org.hibernate.query.sqm.mutation.spi.SqmMultiTableMutationStrategy;
3434
import org.hibernate.spi.NavigablePath;
35-
import org.hibernate.sql.ast.spi.FromClauseAccess;
3635
import org.hibernate.sql.ast.spi.SqlAliasBase;
37-
import org.hibernate.sql.ast.spi.SqlAstCreationContext;
3836
import org.hibernate.sql.ast.spi.SqlAstCreationState;
39-
import org.hibernate.sql.ast.spi.SqlExpressionResolver;
4037
import org.hibernate.sql.ast.tree.from.TableGroup;
4138
import org.hibernate.sql.ast.tree.from.TableReference;
4239
import org.hibernate.sql.ast.tree.from.TableReferenceJoin;
@@ -508,47 +505,22 @@ default TableGroup createRootTableGroup(
508505
boolean canUseInnerJoins,
509506
NavigablePath navigablePath,
510507
String explicitSourceAlias,
508+
SqlAliasBase explicitSqlAliasBase,
511509
Supplier<Consumer<Predicate>> additionalPredicateCollectorAccess,
512-
SqlAstCreationState creationState,
513-
SqlAstCreationContext creationContext) {
514-
return createRootTableGroup(
515-
canUseInnerJoins,
516-
navigablePath,
517-
explicitSourceAlias,
518-
additionalPredicateCollectorAccess,
519-
creationState.getSqlAliasBaseGenerator().createSqlAliasBase( getSqlAliasStem() ),
520-
creationState.getSqlExpressionResolver(),
521-
creationState.getFromClauseAccess(),
522-
creationContext
523-
);
524-
}
525-
526-
@Override
527-
default TableGroup createRootTableGroup(
528-
boolean canUseInnerJoins,
529-
NavigablePath navigablePath,
530-
String explicitSourceAlias,
531-
Supplier<Consumer<Predicate>> additionalPredicateCollectorAccess,
532-
SqlAliasBase sqlAliasBase,
533-
SqlExpressionResolver expressionResolver,
534-
FromClauseAccess fromClauseAccess,
535-
SqlAstCreationContext creationContext) {
510+
SqlAstCreationState creationState) {
536511
return getEntityPersister().createRootTableGroup(
537512
canUseInnerJoins,
538513
navigablePath,
539514
explicitSourceAlias,
515+
explicitSqlAliasBase,
540516
additionalPredicateCollectorAccess,
541-
sqlAliasBase,
542-
expressionResolver,
543-
fromClauseAccess,
544-
creationContext
517+
creationState
545518
);
546519
}
547520

548521
default TableReference createPrimaryTableReference(
549522
SqlAliasBase sqlAliasBase,
550-
SqlExpressionResolver sqlExpressionResolver,
551-
SqlAstCreationContext creationContext) {
523+
SqlAstCreationState creationState) {
552524
throw new UnsupportedMappingException(
553525
"Entity mapping does not support primary TableReference creation [" +
554526
getClass().getName() + " : " + getEntityName() + "]"
@@ -559,8 +531,7 @@ default TableReferenceJoin createTableReferenceJoin(
559531
String joinTableExpression,
560532
SqlAliasBase sqlAliasBase,
561533
TableReference lhs,
562-
SqlExpressionResolver sqlExpressionResolver,
563-
SqlAstCreationContext creationContext) {
534+
SqlAstCreationState creationState) {
564535
throw new UnsupportedMappingException(
565536
"Entity mapping does not support primary TableReference join creation [" +
566537
getClass().getName() + " : " + getEntityName() + "]"

hibernate-core/src/main/java/org/hibernate/metamodel/mapping/ForeignKeyDescriptor.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@
1111
import org.hibernate.engine.spi.SharedSessionContractImplementor;
1212
import org.hibernate.metamodel.mapping.internal.MappingModelCreationProcess;
1313
import org.hibernate.spi.NavigablePath;
14-
import org.hibernate.sql.ast.spi.SqlAstCreationContext;
15-
import org.hibernate.sql.ast.spi.SqlExpressionResolver;
14+
import org.hibernate.sql.ast.spi.SqlAstCreationState;
1615
import org.hibernate.sql.ast.tree.from.TableGroup;
1716
import org.hibernate.sql.ast.tree.from.TableGroupProducer;
1817
import org.hibernate.sql.ast.tree.from.TableReference;
@@ -81,33 +80,34 @@ default String getContainingTableExpression() {
8180
DomainResult<?> createKeyDomainResult(
8281
NavigablePath navigablePath,
8382
TableGroup tableGroup,
84-
FetchParent fetchParent, DomainResultCreationState creationState);
83+
FetchParent fetchParent,
84+
DomainResultCreationState creationState);
8585

8686
/**
8787
* Create a DomainResult for the target-side of the fk
8888
*/
8989
DomainResult<?> createTargetDomainResult(
9090
NavigablePath navigablePath,
9191
TableGroup tableGroup,
92-
FetchParent fetchParent, DomainResultCreationState creationState);
92+
FetchParent fetchParent,
93+
DomainResultCreationState creationState);
9394

9495
DomainResult<?> createDomainResult(
9596
NavigablePath navigablePath,
9697
TableGroup tableGroup,
9798
Nature side,
98-
FetchParent fetchParent, DomainResultCreationState creationState);
99+
FetchParent fetchParent,
100+
DomainResultCreationState creationState);
99101

100102
Predicate generateJoinPredicate(
101103
TableGroup targetSideTableGroup,
102104
TableGroup keySideTableGroup,
103-
SqlExpressionResolver sqlExpressionResolver,
104-
SqlAstCreationContext creationContext);
105+
SqlAstCreationState creationState);
105106

106107
Predicate generateJoinPredicate(
107108
TableReference targetSideReference,
108109
TableReference keySideReference,
109-
SqlExpressionResolver sqlExpressionResolver,
110-
SqlAstCreationContext creationContext);
110+
SqlAstCreationState creationState);
111111

112112
boolean isSimpleJoinPredicate(Predicate predicate);
113113

hibernate-core/src/main/java/org/hibernate/metamodel/mapping/internal/AbstractEntityCollectionPart.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.hibernate.sql.ast.spi.FromClauseAccess;
3131
import org.hibernate.sql.ast.spi.SqlAliasBase;
3232
import org.hibernate.sql.ast.spi.SqlAstCreationContext;
33+
import org.hibernate.sql.ast.spi.SqlAstCreationState;
3334
import org.hibernate.sql.ast.spi.SqlExpressionResolver;
3435
import org.hibernate.sql.ast.tree.from.PluralTableGroup;
3536
import org.hibernate.sql.ast.tree.from.StandardTableGroup;
@@ -254,12 +255,12 @@ public TableGroup createTableGroupInternal(
254255
boolean fetched,
255256
String sourceAlias,
256257
final SqlAliasBase sqlAliasBase,
257-
SqlExpressionResolver sqlExpressionResolver,
258-
SqlAstCreationContext creationContext) {
258+
SqlAstCreationState creationState) {
259+
final SqlAstCreationContext creationContext = creationState.getCreationContext();
260+
final SqlExpressionResolver sqlExpressionResolver = creationState.getSqlExpressionResolver();
259261
final TableReference primaryTableReference = getEntityMappingType().createPrimaryTableReference(
260262
sqlAliasBase,
261-
sqlExpressionResolver,
262-
creationContext
263+
creationState
263264
);
264265

265266
return new StandardTableGroup(
@@ -276,8 +277,7 @@ public TableGroup createTableGroupInternal(
276277
tableExpression,
277278
sqlAliasBase,
278279
primaryTableReference,
279-
sqlExpressionResolver,
280-
creationContext
280+
creationState
281281
),
282282
creationContext.getSessionFactory()
283283
);

hibernate-core/src/main/java/org/hibernate/metamodel/mapping/internal/DiscriminatedAssociationAttributeMapping.java

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,8 @@
3434
import org.hibernate.property.access.spi.PropertyAccess;
3535
import org.hibernate.spi.NavigablePath;
3636
import org.hibernate.sql.ast.SqlAstJoinType;
37-
import org.hibernate.sql.ast.spi.FromClauseAccess;
38-
import org.hibernate.sql.ast.spi.SqlAliasBaseGenerator;
39-
import org.hibernate.sql.ast.spi.SqlAstCreationContext;
40-
import org.hibernate.sql.ast.spi.SqlExpressionResolver;
37+
import org.hibernate.sql.ast.spi.SqlAliasBase;
38+
import org.hibernate.sql.ast.spi.SqlAstCreationState;
4139
import org.hibernate.sql.ast.spi.SqlSelection;
4240
import org.hibernate.sql.ast.tree.from.StandardVirtualTableGroup;
4341
import org.hibernate.sql.ast.tree.from.TableGroup;
@@ -443,25 +441,21 @@ public TableGroupJoin createTableGroupJoin(
443441
NavigablePath navigablePath,
444442
TableGroup lhs,
445443
String explicitSourceAlias,
444+
SqlAliasBase explicitSqlAliasBase,
446445
SqlAstJoinType requestedJoinType,
447446
boolean fetched,
448447
boolean addsPredicate,
449-
SqlAliasBaseGenerator aliasBaseGenerator,
450-
SqlExpressionResolver sqlExpressionResolver,
451-
FromClauseAccess fromClauseAccess,
452-
SqlAstCreationContext creationContext) {
448+
SqlAstCreationState creationState) {
453449
final SqlAstJoinType joinType = Objects.requireNonNullElse( requestedJoinType, SqlAstJoinType.INNER );
454450
final TableGroup tableGroup = createRootTableGroupJoin(
455451
navigablePath,
456452
lhs,
457453
explicitSourceAlias,
454+
explicitSqlAliasBase,
458455
requestedJoinType,
459456
fetched,
460457
null,
461-
aliasBaseGenerator,
462-
sqlExpressionResolver,
463-
fromClauseAccess,
464-
creationContext
458+
creationState
465459
);
466460

467461
return new TableGroupJoin( navigablePath, joinType, tableGroup );
@@ -472,19 +466,12 @@ public TableGroup createRootTableGroupJoin(
472466
NavigablePath navigablePath,
473467
TableGroup lhs,
474468
String explicitSourceAlias,
475-
SqlAstJoinType requestedJoinType,
469+
SqlAliasBase explicitSqlAliasBase,
470+
SqlAstJoinType sqlAstJoinType,
476471
boolean fetched,
477472
Consumer<Predicate> predicateConsumer,
478-
SqlAliasBaseGenerator aliasBaseGenerator,
479-
SqlExpressionResolver sqlExpressionResolver,
480-
FromClauseAccess fromClauseAccess,
481-
SqlAstCreationContext creationContext) {
482-
return new StandardVirtualTableGroup(
483-
navigablePath,
484-
this,
485-
lhs,
486-
fetched
487-
);
473+
SqlAstCreationState creationState) {
474+
return new StandardVirtualTableGroup( navigablePath, this, lhs, fetched );
488475
}
489476

490477
@Override

0 commit comments

Comments
 (0)