[
https://issues.apache.org/jira/browse/IGNITE-25289?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Iurii Gerzhedovich updated IGNITE-25289:
----------------------------------------
Fix Version/s: 3.2
(was: 2.18)
> Sql. Calcite engine. Huge list for IN clause canot be compiled
> --------------------------------------------------------------
>
> Key: IGNITE-25289
> URL: https://issues.apache.org/jira/browse/IGNITE-25289
> Project: Ignite
> Issue Type: Bug
> Components: sql ai3
> Reporter: Iurii Gerzhedovich
> Assignee: Iurii Gerzhedovich
> Priority: Major
> Labels: ignite-3
> Fix For: 3.2
>
>
> It's a clone of IGNITE-14964 . We can port it to Ignite 3.
> The query {{SELECT * FROM strings WHERE s IN (<over 2k values>)}} fails with
> error:
> {code:java}
> Code of method
> "execute(Lorg/apache/ignite/internal/processors/query/calcite/exec/ExecutionContext;Ljava/lang/Object;Ljava/lang/Object;)V"
> of class "SC" grows beyond 64 KB
> {code}
> Exception:
> {code:java}
> class org.apache.ignite.IgniteException: Compiling "SC": Code of method
> "execute(Lorg/apache/ignite/internal/processors/query/calcite/exec/ExecutionContext;Ljava/lang/Object;Ljava/lang/Object;)V"
> of class "SC" grows beyond 64 KB
> at
> org.apache.ignite.internal.processors.query.calcite.util.Commons.compile(Commons.java:299)
> at
> org.apache.ignite.internal.processors.query.calcite.exec.exp.ExpressionFactoryImpl.compile(ExpressionFactoryImpl.java:315)
> at
> org.apache.ignite.internal.processors.query.calcite.exec.exp.ExpressionFactoryImpl.lambda$scalar$4(ExpressionFactoryImpl.java:263)
> at
> java.base/java.util.concurrent.ConcurrentMap.computeIfAbsent(ConcurrentMap.java:330)
> at
> org.apache.ignite.internal.processors.query.calcite.exec.exp.ExpressionFactoryImpl.scalar(ExpressionFactoryImpl.java:263)
> at
> org.apache.ignite.internal.processors.query.calcite.exec.exp.ExpressionFactory.scalar(ExpressionFactory.java:114)
> at
> org.apache.ignite.internal.processors.query.calcite.exec.exp.ExpressionFactoryImpl.predicate(ExpressionFactoryImpl.java:215)
> at
> org.apache.ignite.internal.processors.query.calcite.exec.LogicalRelImplementor.visit(LogicalRelImplementor.java:294)
> at
> org.apache.ignite.internal.processors.query.calcite.exec.LogicalRelImplementor.visit(LogicalRelImplementor.java:109)
> at
> org.apache.ignite.internal.processors.query.calcite.rel.IgniteIndexScan.accept(IgniteIndexScan.java:134)
> at
> org.apache.ignite.internal.processors.query.calcite.exec.LogicalRelImplementor.visit(LogicalRelImplementor.java:657)
> at
> org.apache.ignite.internal.processors.query.calcite.exec.LogicalRelImplementor.visit(LogicalRelImplementor.java:667)
> at
> org.apache.ignite.internal.processors.query.calcite.exec.LogicalRelImplementor.visit(LogicalRelImplementor.java:369)
> at
> org.apache.ignite.internal.processors.query.calcite.exec.LogicalRelImplementor.visit(LogicalRelImplementor.java:109)
> at
> org.apache.ignite.internal.processors.query.calcite.rel.IgniteSort.accept(IgniteSort.java:81)
> at
> org.apache.ignite.internal.processors.query.calcite.exec.LogicalRelImplementor.visit(LogicalRelImplementor.java:657)
> at
> org.apache.ignite.internal.processors.query.calcite.exec.LogicalRelImplementor.visit(LogicalRelImplementor.java:667)
> at
> org.apache.ignite.internal.processors.query.calcite.exec.LogicalRelImplementor.visit(LogicalRelImplementor.java:161)
> at
> org.apache.ignite.internal.processors.query.calcite.exec.LogicalRelImplementor.visit(LogicalRelImplementor.java:109)
> at
> org.apache.ignite.internal.processors.query.calcite.rel.IgniteSender.accept(IgniteSender.java:97)
> at
> org.apache.ignite.internal.processors.query.calcite.exec.LogicalRelImplementor.visit(LogicalRelImplementor.java:657)
> at
> org.apache.ignite.internal.processors.query.calcite.exec.LogicalRelImplementor.go(LogicalRelImplementor.java:672)
> at
> org.apache.ignite.internal.processors.query.calcite.exec.ExecutionServiceImpl.executeFragment(ExecutionServiceImpl.java:781)
> at
> org.apache.ignite.internal.processors.query.calcite.exec.ExecutionServiceImpl.onMessage(ExecutionServiceImpl.java:848)
> at
> org.apache.ignite.internal.processors.query.calcite.exec.ExecutionServiceImpl.lambda$init$2(ExecutionServiceImpl.java:451)
> at
> org.apache.ignite.internal.processors.query.calcite.message.MessageServiceImpl.onMessageInternal(MessageServiceImpl.java:280)
> at
> org.apache.ignite.internal.processors.query.calcite.message.MessageServiceImpl.lambda$onMessage$0(MessageServiceImpl.java:256)
> at
> org.apache.ignite.internal.processors.query.calcite.exec.QueryTaskExecutorImpl.lambda$execute$0(QueryTaskExecutorImpl.java:68)
> 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)
> Caused by: org.codehaus.janino.InternalCompilerException: Compiling "SC":
> Code of method
> "execute(Lorg/apache/ignite/internal/processors/query/calcite/exec/ExecutionContext;Ljava/lang/Object;Ljava/lang/Object;)V"
> of class "SC" grows beyond 64 KB
> at org.codehaus.janino.UnitCompiler.compileUnit(UnitCompiler.java:382)
> at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:237)
> at
> org.codehaus.janino.SimpleCompiler.compileToClassLoader(SimpleCompiler.java:465)
> at
> org.codehaus.janino.ClassBodyEvaluator.compileToClass(ClassBodyEvaluator.java:313)
> at
> org.codehaus.janino.ClassBodyEvaluator.cook(ClassBodyEvaluator.java:235)
> at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:207)
> at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:50)
> at
> org.codehaus.janino.ClassBodyEvaluator.createInstance(ClassBodyEvaluator.java:347)
> at
> org.apache.ignite.internal.processors.query.calcite.util.Commons.compile(Commons.java:297)
> ... 30 more
> Caused by: org.codehaus.janino.InternalCompilerException: Code of method
> "execute(Lorg/apache/ignite/internal/processors/query/calcite/exec/ExecutionContext;Ljava/lang/Object;Ljava/lang/Object;)V"
> of class "SC" grows beyond 64 KB
> at org.codehaus.janino.CodeContext.makeSpace(CodeContext.java:1048)
> at org.codehaus.janino.CodeContext.write(CodeContext.java:925)
> at org.codehaus.janino.UnitCompiler.writeOpcode(UnitCompiler.java:12291)
> at org.codehaus.janino.UnitCompiler.load(UnitCompiler.java:11939)
> at org.codehaus.janino.UnitCompiler.load(UnitCompiler.java:11926)
> at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4465)
> at org.codehaus.janino.UnitCompiler.access$8000(UnitCompiler.java:215)
> at
> org.codehaus.janino.UnitCompiler$16$1.visitLocalVariableAccess(UnitCompiler.java:4408)
> at
> org.codehaus.janino.UnitCompiler$16$1.visitLocalVariableAccess(UnitCompiler.java:4400)
> at org.codehaus.janino.Java$LocalVariableAccess.accept(Java.java:4274)
> at
> org.codehaus.janino.UnitCompiler$16.visitLvalue(UnitCompiler.java:4400)
> at
> org.codehaus.janino.UnitCompiler$16.visitLvalue(UnitCompiler.java:4396)
> at org.codehaus.janino.Java$Lvalue.accept(Java.java:4148)
> at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:4396)
> at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4461)
> at org.codehaus.janino.UnitCompiler.access$7500(UnitCompiler.java:215)
> at
> org.codehaus.janino.UnitCompiler$16$1.visitAmbiguousName(UnitCompiler.java:4403)
> at
> org.codehaus.janino.UnitCompiler$16$1.visitAmbiguousName(UnitCompiler.java:4400)
> at org.codehaus.janino.Java$AmbiguousName.accept(Java.java:4224)
> at
> org.codehaus.janino.UnitCompiler$16.visitLvalue(UnitCompiler.java:4400)
> at
> org.codehaus.janino.UnitCompiler$16.visitLvalue(UnitCompiler.java:4396)
> at org.codehaus.janino.Java$Lvalue.accept(Java.java:4148)
> at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:4396)
> at
> org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:5662)
> at
> org.codehaus.janino.UnitCompiler.compileBoolean2(UnitCompiler.java:4120)
> at org.codehaus.janino.UnitCompiler.access$6600(UnitCompiler.java:215)
> at
> org.codehaus.janino.UnitCompiler$14.visitBinaryOperation(UnitCompiler.java:3957)
> at
> org.codehaus.janino.UnitCompiler$14.visitBinaryOperation(UnitCompiler.java:3935)
> at org.codehaus.janino.Java$BinaryOperation.accept(Java.java:4864)
> at
> org.codehaus.janino.UnitCompiler.compileBoolean(UnitCompiler.java:3935)
> at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4448)
> at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:5004)
> at org.codehaus.janino.UnitCompiler.access$8500(UnitCompiler.java:215)
> at
> org.codehaus.janino.UnitCompiler$16.visitBinaryOperation(UnitCompiler.java:4417)
> at
> org.codehaus.janino.UnitCompiler$16.visitBinaryOperation(UnitCompiler.java:4396)
> at org.codehaus.janino.Java$BinaryOperation.accept(Java.java:4864)
> at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:4396)
> at
> org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:5662)
> at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2580)
> at org.codehaus.janino.UnitCompiler.access$2700(UnitCompiler.java:215)
> at
> org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1503)
> at
> org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1487)
> at
> org.codehaus.janino.Java$LocalVariableDeclarationStatement.accept(Java.java:3522)
> at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1487)
> at
> org.codehaus.janino.UnitCompiler.compileStatements(UnitCompiler.java:1567)
> at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:3388)
> at
> org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1357)
> at
> org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1330)
> at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:822)
> at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:432)
> at org.codehaus.janino.UnitCompiler.access$400(UnitCompiler.java:215)
> at
> org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:411)
> at
> org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:406)
> at
> org.codehaus.janino.Java$PackageMemberClassDeclaration.accept(Java.java:1414)
> at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:406)
> at org.codehaus.janino.UnitCompiler.compileUnit(UnitCompiler.java:378)
> ... 38 more
> {code}
> Tests:
> {{function/generic/test_large_in.test_ignore}}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)