Description
This following statement works as expected:
select convert(truncate(extract(YEAR from "timestamp")), SQL_BIGINT) as yr from "kibana_sample_data_flights" group by yr;
When the yr
is swapped with the group expression it replaces, an exception is raised:
sql> select convert(truncate(extract(YEAR from "timestamp")), SQL_BIGINT) as yr from "kibana_sample_data_flights" group by convert(truncate(extract(YEAR from "timestamp")), SQL_BIGINT);
Server error [Server sent bad type [folding_exception]. Original type was [line 1:8: Cannot find grouping for 'convert(truncate(extract(YEAR from "timestamp")), SQL_BIGINT)']. [FoldingException[line 1:8: Cannot find grouping for 'convert(truncate(extract(YEAR from "timestamp")), SQL_BIGINT)']
at org.elasticsearch.xpack.sql.planner.QueryFolder$FoldAggregate.rule(QueryFolder.java:321)
at org.elasticsearch.xpack.sql.planner.QueryFolder$FoldAggregate.rule(QueryFolder.java:206)
at org.elasticsearch.xpack.sql.tree.Node.lambda$transformUp$11(Node.java:196)
at org.elasticsearch.xpack.sql.tree.Node.transformUp(Node.java:190)
at org.elasticsearch.xpack.sql.tree.Node.lambda$transformUp$10(Node.java:188)
at org.elasticsearch.xpack.sql.tree.Node.transformChildren(Node.java:209)
at org.elasticsearch.xpack.sql.tree.Node.transformUp(Node.java:188)
at org.elasticsearch.xpack.sql.tree.Node.transformUp(Node.java:196)
at org.elasticsearch.xpack.sql.planner.QueryFolder$FoldingRule.apply(QueryFolder.java:589)
at org.elasticsearch.xpack.sql.planner.QueryFolder$FoldingRule.apply(QueryFolder.java:585)
at org.elasticsearch.xpack.sql.rule.RuleExecutor$Transformation.<init>(RuleExecutor.java:82)
at org.elasticsearch.xpack.sql.rule.RuleExecutor.executeWithInfo(RuleExecutor.java:158)
at org.elasticsearch.xpack.sql.rule.RuleExecutor.execute(RuleExecutor.java:130)
at org.elasticsearch.xpack.sql.planner.QueryFolder.fold(QueryFolder.java:85)
at org.elasticsearch.xpack.sql.planner.Planner.foldPlan(Planner.java:38)
at org.elasticsearch.xpack.sql.planner.Planner.plan(Planner.java:28)
at org.elasticsearch.xpack.sql.session.SqlSession.lambda$physicalPlan$4(SqlSession.java:156)
at org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:62)
at org.elasticsearch.xpack.sql.session.SqlSession.lambda$optimizedPlan$3(SqlSession.java:152)
at org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:62)
at org.elasticsearch.xpack.sql.session.SqlSession.lambda$preAnalyze$2(SqlSession.java:140)
at org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:62)
at org.elasticsearch.xpack.sql.analysis.index.IndexResolver.lambda$resolveAsMergedMapping$3(IndexResolver.java:245)
at org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:62)
at org.elasticsearch.action.support.TransportAction$1.onResponse(TransportAction.java:68)
at org.elasticsearch.action.support.TransportAction$1.onResponse(TransportAction.java:64)
at org.elasticsearch.action.support.ContextPreservingActionListener.onResponse(ContextPreservingActionListener.java:43)
at org.elasticsearch.action.fieldcaps.TransportFieldCapabilitiesAction.lambda$doExecute$1(TransportFieldCapabilitiesAction.java:84)
at org.elasticsearch.action.fieldcaps.TransportFieldCapabilitiesAction$1.onResponse(TransportFieldCapabilitiesAction.java:97)
at org.elasticsearch.action.fieldcaps.TransportFieldCapabilitiesAction$1.onResponse(TransportFieldCapabilitiesAction.java:93)
at org.elasticsearch.action.support.TransportAction$1.onResponse(TransportAction.java:68)
at org.elasticsearch.action.support.TransportAction$1.onResponse(TransportAction.java:64)
at org.elasticsearch.action.support.ContextPreservingActionListener.onResponse(ContextPreservingActionListener.java:43)
at org.elasticsearch.action.support.single.shard.TransportSingleShardAction$AsyncSingleAction$2.handleResponse(TransportSingleShardAction.java:271)
at org.elasticsearch.action.support.single.shard.TransportSingleShardAction$AsyncSingleAction$2.handleResponse(TransportSingleShardAction.java:255)
at org.elasticsearch.transport.TransportService$ContextRestoreResponseHandler.handleResponse(TransportService.java:1108)
at org.elasticsearch.transport.TransportService$DirectResponseChannel.processResponse(TransportService.java:1189)
at org.elasticsearch.transport.TransportService$DirectResponseChannel.sendResponse(TransportService.java:1169)
at org.elasticsearch.transport.TaskTransportChannel.sendResponse(TaskTransportChannel.java:54)
at org.elasticsearch.action.support.ChannelActionListener.onResponse(ChannelActionListener.java:47)
at org.elasticsearch.action.support.ChannelActionListener.onResponse(ChannelActionListener.java:30)
at org.elasticsearch.action.support.single.shard.TransportSingleShardAction$1.doRun(TransportSingleShardAction.java:117)
at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:751)
at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
]]