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)