Maksim Zhuravkov created IGNITE-27404:
-----------------------------------------

             Summary: Sql. Investigate changes in TPCDS query 8 plan caused by 
updating calcite to 1.41
                 Key: IGNITE-27404
                 URL: https://issues.apache.org/jira/browse/IGNITE-27404
             Project: Ignite
          Issue Type: Improvement
          Components: sql ai3
            Reporter: Maksim Zhuravkov


Calcite 1.41 introduced changes related to handling of aliases in GROUP BY 
clause - https://issues.apache.org/jira/browse/CALCITE-7189, so the query 8 
from TPC-DS test suite now generates a different plan. Investigate whether this 
an issue and check whether results are the same or not.


That change introduced an SQL conformance option isNonStrictGroupBy (the 
default is isNonStrictGroupBy=false).

When isNonStrictGroupBy is true, planning of 51, 53, 63, and 89 fails with NPE:

{noformat}
Caused by: java.lang.NullPointerException
        at org.apache.calcite.sql.validate.AggFinder.findAgg(AggFinder.java:61)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.isNonAggregatedNonGroupedColumn(SqlValidatorImpl.java:541)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.lambda$isNonAggregatedNonGroupedColumn$1(SqlValidatorImpl.java:557)
        at 
java.base/java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)
        at 
java.base/java.util.Spliterators$IteratorSpliterator.tryAdvance(Spliterators.java:1812)
        at 
java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
        at 
java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
        at 
java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
        at 
java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
        at 
java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
        at 
java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
        at 
java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at 
java.base/java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:528)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.isNonAggregatedNonGroupedColumn(SqlValidatorImpl.java:557)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.lambda$isNonAggregatedNonGroupedColumn$1(SqlValidatorImpl.java:557)
        at 
java.base/java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)
        at 
java.base/java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
        at 
java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
        at 
java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
        at 
java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
        at 
java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
        at 
java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
        at 
java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
        at 
java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at 
java.base/java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:528)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.isNonAggregatedNonGroupedColumn(SqlValidatorImpl.java:557)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.lambda$isNonAggregatedNonGroupedColumn$1(SqlValidatorImpl.java:557)
        at 
java.base/java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)
        at 
java.base/java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
        at 
java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
        at 
java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
        at 
java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
        at 
java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
        at 
java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
        at 
java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
        at 
java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at 
java.base/java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:528)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.isNonAggregatedNonGroupedColumn(SqlValidatorImpl.java:557)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.expandSelectItem(SqlValidatorImpl.java:494)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelectList(SqlValidatorImpl.java:5135)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:4127)
        at 
org.apache.ignite.internal.sql.engine.prepare.IgniteSqlValidator.validateSelect(IgniteSqlValidator.java:650)
        at 
org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:62)
        at 
org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:96)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1178)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1149)
        at 
org.apache.ignite.internal.sql.engine.prepare.IgniteSqlValidator.validateQuery(IgniteSqlValidator.java:241)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3604)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3583)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:4114)
        at 
org.apache.ignite.internal.sql.engine.prepare.IgniteSqlValidator.validateSelect(IgniteSqlValidator.java:650)
        at 
org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:62)
        at 
org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:96)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1178)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1149)
        at 
org.apache.ignite.internal.sql.engine.prepare.IgniteSqlValidator.validateQuery(IgniteSqlValidator.java:241)
        at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:282)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1115)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:821)
        at 
org.apache.ignite.internal.sql.engine.prepare.IgniteSqlValidator.validate(IgniteSqlValidator.java:191)
        at 
org.apache.ignite.internal.sql.engine.prepare.IgnitePlanner.validateAndGetTypeMetadata(IgnitePlanner.java:303)
        at 
org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.lambda$validateQuery$20(PrepareServiceImpl.java:635)
        at 
java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run$$$capture(CompletableFuture.java:1700)
        at 
java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java)
        at --- Async.Stack.Trace --- (captured by IntelliJ IDEA debugger)
        at 
java.base/java.util.concurrent.CompletableFuture$AsyncSupply.<init>(CompletableFuture.java:1686)
        at 
java.base/java.util.concurrent.CompletableFuture.asyncSupplyStage(CompletableFuture.java:1714)
        at 
java.base/java.util.concurrent.CompletableFuture.supplyAsync(CompletableFuture.java:1931)
        at 
org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.validateQuery(PrepareServiceImpl.java:627)
        at 
org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.prepareQuery(PrepareServiceImpl.java:560)
        at 
org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.prepareAsync0(PrepareServiceImpl.java:466)
        ... 121 more
{noformat}




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to