[ 
https://issues.apache.org/jira/browse/IGNITE-27404?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vyacheslav Koptilin updated IGNITE-27404:
-----------------------------------------
    Labels: ignite-3  (was: )

> 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
>            Priority: Major
>              Labels: ignite-3
>
> 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, validation 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