Open
Description
Stack trace:
"org.elasticsearch.xpack.ql.capabilities.UnresolvedException: Invalid call to attribute on an unresolved object ?* AS ?
\tat org.elasticsearch.xpack.ql.expression.UnresolvedNamedExpression.toAttribute(UnresolvedNamedExpression.java:44)
\tat org.elasticsearch.xpack.ql.expression.Expressions.asAttributes(Expressions.java:40)
\tat org.elasticsearch.xpack.ql.plan.logical.Project.output(Project.java:62)
\tat org.elasticsearch.xpack.sql.analysis.analyzer.Verifier.checkClientSupportsDataTypes(Verifier.java:1002)
\tat org.elasticsearch.xpack.sql.analysis.analyzer.Verifier.verify(Verifier.java:243)
\tat org.elasticsearch.xpack.sql.analysis.analyzer.Analyzer.verify(Analyzer.java:139)
\tat org.elasticsearch.xpack.sql.analysis.analyzer.Analyzer.analyze(Analyzer.java:131)
\tat org.elasticsearch.xpack.sql.session.SqlSession.lambda$analyzedPlan$0(SqlSession.java:124)
\tat org.elasticsearch.xpack.sql.session.SqlSession.lambda$preAnalyze$2(SqlSession.java:169)
\tat org.elasticsearch.server@9.1.0/org.elasticsearch.action.ActionListenerImplementations$ResponseWrappingActionListener.onResponse(ActionListenerImplementations.java:247)
\tat org.elasticsearch.xpack.ql.index.IndexResolver.lambda$resolveAsMergedMapping$7(IndexResolver.java:402)
\tat org.elasticsearch.server@9.1.0/org.elasticsearch.action.ActionListenerImplementations$ResponseWrappingActionListener.onResponse(ActionListenerImplementations.java:247)
\tat org.elasticsearch.server@9.1.0/org.elasticsearch.tasks.TaskManager$1.onResponse(TaskManager.java:203)
\tat org.elasticsearch.server@9.1.0/org.elasticsearch.tasks.TaskManager$1.onResponse(TaskManager.java:197)
\tat org.elasticsearch.server@9.1.0/org.elasticsearch.action.ActionListenerImplementations$RunBeforeActionListener.onResponse(ActionListenerImplementations.java:336)
\tat org.elasticsearch.server@9.1.0/org.elasticsearch.action.support.ContextPreservingActionListener.onResponse(ContextPreservingActionListener.java:33)
\tat org.elasticsearch.server@9.1.0/org.elasticsearch.action.ActionListenerImplementations$MappedActionListener.onResponse(ActionListenerImplementations.java:97)
\tat org.elasticsearch.server@9.1.0/org.elasticsearch.action.ActionListener.completeWith(ActionListener.java:362)
\tat org.elasticsearch.server@9.1.0/org.elasticsearch.action.fieldcaps.TransportFieldCapabilitiesAction.mergeIndexResponses(TransportFieldCapabilitiesAction.java:337)
\tat org.elasticsearch.server@9.1.0/org.elasticsearch.action.fieldcaps.TransportFieldCapabilitiesAction.lambda$doExecuteForked$7(TransportFieldCapabilitiesAction.java:236)
\tat org.elasticsearch.base@9.1.0/org.elasticsearch.core.AbstractRefCounted$1.closeInternal(AbstractRefCounted.java:125)
\tat org.elasticsearch.base@9.1.0/org.elasticsearch.core.AbstractRefCounted.decRef(AbstractRefCounted.java:77)
\tat org.elasticsearch.server@9.1.0/org.elasticsearch.action.support.RefCountingRunnable.close(RefCountingRunnable.java:113)
\tat org.elasticsearch.server@9.1.0/org.elasticsearch.common.util.concurrent.RunOnce.run(RunOnce.java:41)
\tat org.elasticsearch.server@9.1.0/org.elasticsearch.action.fieldcaps.RequestDispatcher.innerExecute(RequestDispatcher.java:158)
\tat org.elasticsearch.server@9.1.0/org.elasticsearch.action.fieldcaps.RequestDispatcher$1.doRun(RequestDispatcher.java:127)
\tat org.elasticsearch.server@9.1.0/org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:27)
\tat org.elasticsearch.server@9.1.0/org.elasticsearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:34)
\tat org.elasticsearch.server@9.1.0/org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:1044)
\tat org.elasticsearch.server@9.1.0/org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:27)
\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
\tat java.base/java.lang.Thread.run(Thread.java:1575)
checkClientSupportsDataTypes
calls Project.output()
, even though the Project
(probably corresponding to a SELECT
clause) still has an UnresolvedNamedExpression
- which looks to be an UnresolvedAlias
going by the toString
of it being ?* AS ?
. (This matches UnresolvedAlias.toString()
when the child is an unresolved attribute called *
.)
Either
- there should have been a check before
checkClientSupportsDataTypes
was called to see if the plan is even resolved, or - we should never have reached there in the first place because the presumed unresolved alias should've caused a failure earlier on.