-
Notifications
You must be signed in to change notification settings - Fork 25.7k
Closed
Labels
:Analytics/ES|QLAKA ESQLAKA ESQL>bugTeam:AnalyticsMeta label for analytical engine team (ESQL/Aggs/Geo)Meta label for analytical engine team (ESQL/Aggs/Geo)
Description
Elasticsearch Version
8.17.4
Installed Plugins
No response
Java Version
bundled
OS Version
Linux
Problem Description
In ES|QL, the pattern FROM *-* leads to the following exception:
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
Looking at IdentifierBuilder::validateIndexPattern(), the index pattern goes from:
"*-*""-"afterindex.replace(WILDCARD, "").strip();""(empty) afterremoveExclusion(index);(usingindex.substring(1);)- Call to
MetadataCreateIndexService.validateIndexOrAliasName(index, InvalidIndexNameException::new); - Throws the exception when calling
index.charAt(0) == '_', since the string is empty
Note that this issue seems to be already addressed by commit d6133235a339, pull request #119960.
Altough, the pull request #120060 seems to backport it to 8.x branch, it is not present in 8.17.4. Is it an overlook or will it be present in the next patch version?
Thanks.
Steps to Reproduce
- Switch to ES|QL mode
- Request
FROM *-*
Logs (if relevant)
[2025-04-15T06:53:09,528][WARN ][o.e.x.e.a.EsqlResponseListener] [b7bd49a58476] Request failed with status [INTERNAL_SERVER_ERROR]: java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
at java.base/jdk.internal.util.Preconditions$1.apply(Preconditions.java:55)
at java.base/jdk.internal.util.Preconditions$1.apply(Preconditions.java:52)
at java.base/jdk.internal.util.Preconditions$4.apply(Preconditions.java:213)
at java.base/jdk.internal.util.Preconditions$4.apply(Preconditions.java:210)
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:98)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:106)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:302)
at java.base/java.lang.String.checkIndex(String.java:4930)
at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:46)
at java.base/java.lang.String.charAt(String.java:1629)
at org.elasticsearch.server@8.17.4/org.elasticsearch.cluster.metadata.MetadataCreateIndexService.validateIndexOrAliasName(MetadataCreateIndexService.java:237)
at org.elasticsearch.xpack.esql.parser.IdentifierBuilder.validateIndexPattern(IdentifierBuilder.java:104)
at org.elasticsearch.xpack.esql.parser.IdentifierBuilder.lambda$visitIndexPattern$0(IdentifierBuilder.java:70)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1597)
at org.elasticsearch.xpack.esql.parser.IdentifierBuilder.visitIndexPattern(IdentifierBuilder.java:63)
at org.elasticsearch.xpack.esql.parser.ExpressionBuilder.visitIndexPattern(ExpressionBuilder.java:92)
at org.elasticsearch.xpack.esql.parser.LogicalPlanBuilder.visitFromCommand(LogicalPlanBuilder.java:259)
at org.elasticsearch.xpack.esql.parser.LogicalPlanBuilder.visitFromCommand(LogicalPlanBuilder.java:87)
at org.elasticsearch.xpack.esql.parser.EsqlBaseParser$FromCommandContext.accept(EsqlBaseParser.java:2192)
at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:46)
at org.elasticsearch.xpack.esql.parser.EsqlBaseParserBaseVisitor.visitSourceCommand(EsqlBaseParserBaseVisitor.java:50)
at org.elasticsearch.xpack.esql.parser.EsqlBaseParser$SourceCommandContext.accept(EsqlBaseParser.java:400)
at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:46)
at org.elasticsearch.xpack.esql.parser.EsqlBaseParserBaseVisitor.visitSingleCommandQuery(EsqlBaseParserBaseVisitor.java:43)
at org.elasticsearch.xpack.esql.parser.EsqlBaseParser$SingleCommandQueryContext.accept(EsqlBaseParser.java:302)
at org.elasticsearch.xpack.esql.parser.ParserUtils.typedParsing(ParserUtils.java:68)
at org.elasticsearch.xpack.esql.parser.LogicalPlanBuilder.plan(LogicalPlanBuilder.java:103)
at org.elasticsearch.xpack.esql.parser.LogicalPlanBuilder.visitSingleStatement(LogicalPlanBuilder.java:128)
at org.elasticsearch.xpack.esql.parser.LogicalPlanBuilder.visitSingleStatement(LogicalPlanBuilder.java:87)
at org.elasticsearch.xpack.esql.parser.EsqlBaseParser$SingleStatementContext.accept(EsqlBaseParser.java:218)
at org.elasticsearch.xpack.esql.parser.ParserUtils.typedParsing(ParserUtils.java:68)
at org.elasticsearch.xpack.esql.parser.LogicalPlanBuilder.plan(LogicalPlanBuilder.java:103)
at org.elasticsearch.xpack.esql.parser.EsqlParser.invokeParser(EsqlParser.java:92)
at org.elasticsearch.xpack.esql.parser.EsqlParser.createStatement(EsqlParser.java:55)
at org.elasticsearch.xpack.esql.session.EsqlSession.parse(EsqlSession.java:264)
at org.elasticsearch.xpack.esql.session.EsqlSession.execute(EsqlSession.java:150)
at org.elasticsearch.xpack.esql.execution.PlanExecutor.esql(PlanExecutor.java:80)
at org.elasticsearch.xpack.esql.plugin.TransportEsqlQueryAction.innerExecute(TransportEsqlQueryAction.java:185)
at org.elasticsearch.xpack.esql.plugin.TransportEsqlQueryAction.lambda$execute$1(TransportEsqlQueryAction.java:154)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.ActionListener.run(ActionListener.java:454)
at org.elasticsearch.xpack.esql.plugin.TransportEsqlQueryAction.execute(TransportEsqlQueryAction.java:154)
at org.elasticsearch.xpack.esql.plugin.TransportEsqlQueryAction.execute(TransportEsqlQueryAction.java:56)
at org.elasticsearch.xpack.esql.core.async.AsyncTaskManagementService.asyncExecute(AsyncTaskManagementService.java:188)
at org.elasticsearch.xpack.esql.plugin.TransportEsqlQueryAction.doExecuteForked(TransportEsqlQueryAction.java:140)
at org.elasticsearch.xpack.esql.plugin.TransportEsqlQueryAction.lambda$doExecute$0(TransportEsqlQueryAction.java:132)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.ActionRunnable$4.doRun(ActionRunnable.java:101)
at org.elasticsearch.server@8.17.4/org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:27)
at org.elasticsearch.server@8.17.4/org.elasticsearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:34)
at org.elasticsearch.server@8.17.4/org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:1023)
at org.elasticsearch.server@8.17.4/org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:27)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1575)
Metadata
Metadata
Assignees
Labels
:Analytics/ES|QLAKA ESQLAKA ESQL>bugTeam:AnalyticsMeta label for analytical engine team (ESQL/Aggs/Geo)Meta label for analytical engine team (ESQL/Aggs/Geo)