Skip to content

Commit

Permalink
HHH-16668 Fix SqmWindow copy of partition and order lists
Browse files Browse the repository at this point in the history
  • Loading branch information
mbladel committed May 26, 2023
1 parent 3f54b12 commit d903c41
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import static org.hibernate.query.sqm.FrameExclusion.NO_OTHERS;
import static org.hibernate.query.sqm.FrameKind.CURRENT_ROW;
import static org.hibernate.query.sqm.FrameKind.UNBOUNDED_PRECEDING;
import static org.hibernate.query.sqm.FrameMode.GROUPS;
import static org.hibernate.query.sqm.FrameMode.RANGE;
import static org.hibernate.query.sqm.FrameMode.ROWS;

Expand Down Expand Up @@ -114,28 +115,28 @@ public FrameExclusion getExclusion() {

@Override
public JpaWindow frameRows(JpaWindowFrame startFrame, JpaWindowFrame endFrame) {
return this.setFrames(FrameMode.ROWS, startFrame, endFrame);
return this.setFrames( ROWS, startFrame, endFrame );
}

@Override
public JpaWindow frameRange(JpaWindowFrame startFrame, JpaWindowFrame endFrame) {
return this.setFrames(FrameMode.RANGE, startFrame, endFrame);
return this.setFrames( RANGE, startFrame, endFrame );

}

@Override
public JpaWindow frameGroups(JpaWindowFrame startFrame, JpaWindowFrame endFrame) {
return this.setFrames(FrameMode.GROUPS, startFrame, endFrame);
return this.setFrames( GROUPS, startFrame, endFrame );

}

private SqmWindow setFrames(FrameMode frameMode, JpaWindowFrame startFrame, JpaWindowFrame endFrame) {
this.mode = frameMode;
if (startFrame != null) {
if ( startFrame != null ) {
this.startKind = startFrame.getKind();
this.startExpression = (SqmExpression<?>) startFrame.getExpression();
}
if (endFrame != null) {
if ( endFrame != null ) {
this.endKind = endFrame.getKind();
this.endExpression = (SqmExpression<?>) endFrame.getExpression();
}
Expand All @@ -150,15 +151,15 @@ public JpaWindow frameExclude(FrameExclusion frameExclusion) {

@Override
public JpaWindow partitionBy(Expression<?>... expressions) {
for (Expression<?> expression : expressions) {
this.partitions.add((SqmExpression<?>) expression);
for ( Expression<?> expression : expressions ) {
this.partitions.add( (SqmExpression<?>) expression );
}
return this;
}

@Override
public JpaWindow orderBy(Order... orders) {
for (Order order : orders) {
for ( Order order : orders ) {
this.orderList.add( (SqmSortSpecification) order );
}
return this;
Expand All @@ -169,13 +170,13 @@ public SqmWindow copy(SqmCopyContext context) {
if ( existing != null ) {
return existing;
}
final List<SqmExpression<?>> partitionsCopy = new ArrayList<>( this.partitions.size() );
for ( SqmExpression<?> partition : this.partitions ) {
partitions.add( partition.copy( context ) );
final List<SqmExpression<?>> partitionsCopy = new ArrayList<>( partitions.size() );
for ( SqmExpression<?> partition : partitions ) {
partitionsCopy.add( partition.copy( context ) );
}
final List<SqmSortSpecification> orderListCopy = new ArrayList<>( this.orderList.size() );
for ( SqmSortSpecification sortSpecification : this.orderList ) {
orderList.add( sortSpecification.copy( context ) );
final List<SqmSortSpecification> orderListCopy = new ArrayList<>( orderList.size() );
for ( SqmSortSpecification sortSpecification : orderList ) {
orderListCopy.add( sortSpecification.copy( context ) );
}
return context.registerCopy(
this,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import java.util.Date;
import java.util.List;

import org.hibernate.cfg.AvailableSettings;
import org.hibernate.dialect.DB2Dialect;
import org.hibernate.dialect.SQLServerDialect;
import org.hibernate.query.criteria.HibernateCriteriaBuilder;
Expand All @@ -23,6 +24,7 @@
import org.hibernate.testing.orm.junit.ServiceRegistry;
import org.hibernate.testing.orm.junit.SessionFactory;
import org.hibernate.testing.orm.junit.SessionFactoryScope;
import org.hibernate.testing.orm.junit.Setting;
import org.hibernate.testing.orm.junit.SkipForDialect;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
Expand All @@ -39,7 +41,7 @@
/**
* @author Marco Belladelli
*/
@ServiceRegistry
@ServiceRegistry(settings = @Setting(name = AvailableSettings.CRITERIA_COPY_TREE, value = "true"))
@DomainModel(standardModels = StandardDomainModel.GAMBIT)
@SessionFactory
@RequiresDialectFeature(feature = DialectFeatureChecks.SupportsWindowFunctions.class)
Expand Down

0 comments on commit d903c41

Please sign in to comment.