Skip to content

[BUG] Runtime exception in OpenSearchExecutionEngine should be thrown #3567

Description

@LantaoJin

What is the bug?
Query

source = http_logs | parse request 'GET /(?<domain>[a-zA-Z]+)/(?<picName>[a-zA-Z]+)/.*' | where domain = 'english' | sort - picName | fields domain, picName | head 10

will throw a known expection: Multiple capturing groups (count=2) not allowed in regex input for REGEXP_EXTRACT
But it was caught by OpenSearchExecutionEngine.

[2025-04-21T18:44:34,953][ERROR][o.o.s.p.r.RestPPLQueryAction] [integTest-0] Error happened during query handling
java.sql.SQLException: exception while executing query: Multiple capturing groups (count=2) not allowed in regex input for REGEXP_EXTRACT
        at org.apache.calcite.avatica.Helper.createException(Helper.java:56) ~[opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.apache.calcite.avatica.Helper.createException(Helper.java:41) ~[opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.apache.calcite.avatica.AvaticaConnection.executeQueryInternal(AvaticaConnection.java:579) ~[opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.apache.calcite.avatica.AvaticaPreparedStatement.executeQuery(AvaticaPreparedStatement.java:137) ~[opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.opensearch.sql.opensearch.executor.OpenSearchExecutionEngine.lambda$execute$6(OpenSearchExecutionEngine.java:177) [opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:319) [?:?]
        at org.opensearch.sql.opensearch.executor.OpenSearchExecutionEngine.lambda$execute$7(OpenSearchExecutionEngine.java:173) [opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.opensearch.sql.opensearch.client.OpenSearchNodeClient.schedule(OpenSearchNodeClient.java:193) [opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.opensearch.sql.opensearch.executor.OpenSearchExecutionEngine.execute(OpenSearchExecutionEngine.java:171) [opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.opensearch.sql.executor.QueryService.lambda$executeWithCalcite$0(QueryService.java:100) [opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:319) [?:?]
        at org.opensearch.sql.executor.QueryService.executeWithCalcite(QueryService.java:92) [opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.opensearch.sql.executor.QueryService.execute(QueryService.java:68) [opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.opensearch.sql.executor.execution.QueryPlan.execute(QueryPlan.java:69) [opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.opensearch.sql.opensearch.executor.OpenSearchQueryManager.lambda$submit$0(OpenSearchQueryManager.java:31) [opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.opensearch.sql.opensearch.executor.OpenSearchQueryManager.lambda$withCurrentContext$1(OpenSearchQueryManager.java:45) [opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.opensearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:935) [opensearch-3.0.0-beta1-SNAPSHOT.jar:3.0.0-beta1-SNAPSHOT]
        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:1583) [?:?]
Caused by: java.lang.RuntimeException: Multiple capturing groups (count=2) not allowed in regex input for REGEXP_EXTRACT
        at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) ~[?:?]
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502) ~[?:?]
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486) ~[?:?]
        at org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:511) ~[opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:605) ~[opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.apache.calcite.runtime.SqlFunctions$RegexFunction.checkMultipleCapturingGroupsInRegex(SqlFunctions.java:442) ~[opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.apache.calcite.runtime.SqlFunctions$RegexFunction.regexpExtract(SqlFunctions.java:544) ~[opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.apache.calcite.runtime.SqlFunctions$RegexFunction.regexpExtract(SqlFunctions.java:518) ~[opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at Baz$1$1.moveNext(Unknown Source) ~[?:?]
        at org.apache.calcite.linq4j.EnumerableDefaults.toLookup_(EnumerableDefaults.java:3807) ~[opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.apache.calcite.linq4j.EnumerableDefaults$15.enumerator(EnumerableDefaults.java:2863) ~[opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.apache.calcite.linq4j.EnumerableDefaults$26.enumerator(EnumerableDefaults.java:3615) ~[opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.apache.calcite.linq4j.AbstractEnumerable.iterator(AbstractEnumerable.java:33) ~[opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.apache.calcite.avatica.MetaImpl.createCursor(MetaImpl.java:91) ~[opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.apache.calcite.avatica.AvaticaResultSet.execute(AvaticaResultSet.java:186) ~[opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.java:64) ~[opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.java:43) ~[opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        at org.apache.calcite.avatica.AvaticaConnection.executeQueryInternal(AvaticaConnection.java:575) ~[opensearch-sql-3.0.0.0-beta1-SNAPSHOT.jar:3.0.0.0-beta1-SNAPSHOT]
        ... 17 more

It should be thrown to fallback to v2

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingcalcitecalcite migration releated

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions