Otto Remse
10/26/2023, 8:29 AMOurStatementSets.execute() .Code works fine in 1.17.1. Using flink sql, elasticsearch sinks, kafka sources. Seems to be an issue with the optimizer in the tableplanner, but it's near impossible to step into these functions. Stack trace in thread.Otto Remse
10/26/2023, 8:30 AMException in thread "main" java.lang.NullPointerException
at java.base/java.util.Objects.requireNonNull(Objects.java:233)
at org.apache.calcite.sql2rel.RelDecorrelator.getNewForOldInputRef(RelDecorrelator.java:1435)
at org.apache.calcite.sql2rel.RelDecorrelator.access$400(RelDecorrelator.java:136)
at org.apache.calcite.sql2rel.RelDecorrelator$DecorrelateRexShuttle.visitInputRef(RelDecorrelator.java:1713)
at org.apache.calcite.sql2rel.RelDecorrelator$DecorrelateRexShuttle.visitInputRef(RelDecorrelator.java:1670)
at org.apache.calcite.rex.RexInputRef.accept(RexInputRef.java:113)
at org.apache.calcite.rex.RexShuttle.visitList(RexShuttle.java:163)
at org.apache.calcite.rex.RexShuttle.visitCall(RexShuttle.java:115)
at org.apache.calcite.rex.RexShuttle.visitCall(RexShuttle.java:38)
at org.apache.calcite.rex.RexCall.accept(RexCall.java:189)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateExpr(RelDecorrelator.java:405)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateRel(RelDecorrelator.java:807)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateRel(RelDecorrelator.java:771)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
at org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:531)
at org.apache.calcite.sql2rel.RelDecorrelator.getInvoke(RelDecorrelator.java:740)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateRel(RelDecorrelator.java:1349)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateRel(RelDecorrelator.java:1329)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
at org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:531)
at org.apache.calcite.sql2rel.RelDecorrelator.getInvoke(RelDecorrelator.java:740)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateRel(RelDecorrelator.java:1349)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateRel(RelDecorrelator.java:1329)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
at org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:531)
at org.apache.calcite.sql2rel.RelDecorrelator.getInvoke(RelDecorrelator.java:740)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateRel(RelDecorrelator.java:1349)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateRel(RelDecorrelator.java:1329)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
at org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:531)
at org.apache.calcite.sql2rel.RelDecorrelator.getInvoke(RelDecorrelator.java:740)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateRel(RelDecorrelator.java:1349)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateRel(RelDecorrelator.java:1329)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
at org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:531)
at org.apache.calcite.sql2rel.RelDecorrelator.getInvoke(RelDecorrelator.java:740)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateRel(RelDecorrelator.java:1349)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateRel(RelDecorrelator.java:1329)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
at org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:531)
at org.apache.calcite.sql2rel.RelDecorrelator.getInvoke(RelDecorrelator.java:740)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateRel(RelDecorrelator.java:1349)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateRel(RelDecorrelator.java:1329)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
at org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:531)
at org.apache.calcite.sql2rel.RelDecorrelator.getInvoke(RelDecorrelator.java:740)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateRel(RelDecorrelator.java:1244)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateRel(RelDecorrelator.java:1227)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
at org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:531)
at org.apache.calcite.sql2rel.RelDecorrelator.getInvoke(RelDecorrelator.java:740)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateRel(RelDecorrelator.java:782)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateRel(RelDecorrelator.java:771)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
at org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:531)
at org.apache.calcite.sql2rel.RelDecorrelator.getInvoke(RelDecorrelator.java:740)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateRel(RelDecorrelator.java:448)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
at org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:531)
at org.apache.calcite.sql2rel.RelDecorrelator.getInvoke(RelDecorrelator.java:740)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateRel(RelDecorrelator.java:448)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
at org.apache.calcite.util.ReflectUtil$2.invoke(ReflectUtil.java:531)
at org.apache.calcite.sql2rel.RelDecorrelator.getInvoke(RelDecorrelator.java:740)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelate(RelDecorrelator.java:330)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateQuery(RelDecorrelator.java:216)
at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateQuery(RelDecorrelator.java:181)
at org.apache.flink.table.planner.plan.optimize.program.FlinkDecorrelateProgram.optimize(FlinkDecorrelateProgram.scala:41)
at org.apache.flink.table.planner.plan.optimize.program.FlinkGroupProgram.$anonfun$optimize$2(FlinkGroupProgram.scala:59)
at scala.collection.TraversableOnce.$anonfun$foldLeft$1(TraversableOnce.scala:156)
at scala.collection.TraversableOnce.$anonfun$foldLeft$1$adapted(TraversableOnce.scala:156)
at scala.collection.Iterator.foreach(Iterator.scala:937)
at scala.collection.Iterator.foreach$(Iterator.scala:937)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1425)
at scala.collection.IterableLike.foreach(IterableLike.scala:70)
at scala.collection.IterableLike.foreach$(IterableLike.scala:69)
at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
at scala.collection.TraversableOnce.foldLeft(TraversableOnce.scala:156)
at scala.collection.TraversableOnce.foldLeft$(TraversableOnce.scala:154)
at scala.collection.AbstractTraversable.foldLeft(Traversable.scala:104)
at org.apache.flink.table.planner.plan.optimize.program.FlinkGroupProgram.$anonfun$optimize$1(FlinkGroupProgram.scala:56)
at org.apache.flink.table.planner.plan.optimize.program.FlinkGroupProgram.$anonfun$optimize$1$adapted(FlinkGroupProgram.scala:51)
at scala.collection.TraversableOnce.$anonfun$foldLeft$1(TraversableOnce.scala:156)
at scala.collection.TraversableOnce.$anonfun$foldLeft$1$adapted(TraversableOnce.scala:156)
at scala.collection.immutable.Range.foreach(Range.scala:155)
at scala.collection.TraversableOnce.foldLeft(TraversableOnce.scala:156)
at scala.collection.TraversableOnce.foldLeft$(TraversableOnce.scala:154)
at scala.collection.AbstractTraversable.foldLeft(Traversable.scala:104)
at org.apache.flink.table.planner.plan.optimize.program.FlinkGroupProgram.optimize(FlinkGroupProgram.scala:51)
at org.apache.flink.table.planner.plan.optimize.program.FlinkChainedProgram.$anonfun$optimize$1(FlinkChainedProgram.scala:59)
at scala.collection.TraversableOnce.$anonfun$foldLeft$1(TraversableOnce.scala:156)
at scala.collection.TraversableOnce.$anonfun$foldLeft$1$adapted(TraversableOnce.scala:156)
at scala.collection.Iterator.foreach(Iterator.scala:937)
at scala.collection.Iterator.foreach$(Iterator.scala:937)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1425)
at scala.collection.IterableLike.foreach(IterableLike.scala:70)
at scala.collection.IterableLike.foreach$(IterableLike.scala:69)
at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
at scala.collection.TraversableOnce.foldLeft(TraversableOnce.scala:156)
at scala.collection.TraversableOnce.foldLeft$(TraversableOnce.scala:154)
at scala.collection.AbstractTraversable.foldLeft(Traversable.scala:104)
at org.apache.flink.table.planner.plan.optimize.program.FlinkChainedProgram.optimize(FlinkChainedProgram.scala:55)
at org.apache.flink.table.planner.plan.optimize.StreamCommonSubGraphBasedOptimizer.optimizeTree(StreamCommonSubGraphBasedOptimizer.scala:176)
at org.apache.flink.table.planner.plan.optimize.StreamCommonSubGraphBasedOptimizer.optimizeBlock(StreamCommonSubGraphBasedOptimizer.scala:123)
at org.apache.flink.table.planner.plan.optimize.StreamCommonSubGraphBasedOptimizer.$anonfun$doOptimize$2(StreamCommonSubGraphBasedOptimizer.scala:90)
at org.apache.flink.table.planner.plan.optimize.StreamCommonSubGraphBasedOptimizer.$anonfun$doOptimize$2$adapted(StreamCommonSubGraphBasedOptimizer.scala:90)
at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:58)
at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:51)
at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
at org.apache.flink.table.planner.plan.optimize.StreamCommonSubGraphBasedOptimizer.doOptimize(StreamCommonSubGraphBasedOptimizer.scala:90)
at org.apache.flink.table.planner.plan.optimize.CommonSubGraphBasedOptimizer.optimize(CommonSubGraphBasedOptimizer.scala:87)
at org.apache.flink.table.planner.delegation.PlannerBase.optimize(PlannerBase.scala:324)
at org.apache.flink.table.planner.delegation.PlannerBase.translate(PlannerBase.scala:182)
at org.apache.flink.table.api.internal.TableEnvironmentImpl.translate(TableEnvironmentImpl.java:1277)
at org.apache.flink.table.api.internal.TableEnvironmentImpl.executeInternal(TableEnvironmentImpl.java:862)
at org.apache.flink.table.api.internal.StatementSetImpl.execute(StatementSetImpl.java:109)
at our.organization.main(SearchUpdater.java:72)Martijn Visser
10/26/2023, 8:30 AMOtto Remse
10/26/2023, 8:30 AMMartijn Visser
10/26/2023, 8:31 AMMartijn Visser
10/26/2023, 8:32 AMOtto Remse
10/26/2023, 8:33 AMMartijn Visser
10/26/2023, 8:34 AMOtto Remse
10/26/2023, 8:35 AMexecute() to an explain statement ends up in the same exception. So i'm not really sure if we can get some insight into calcite specific errors. Perhaps if we start stripping down our statement sets until it works to see what might be the root cause.Sergey Nuyanzin
10/26/2023, 8:43 AMSergey Nuyanzin
10/26/2023, 8:44 AMOtto Remse
10/26/2023, 8:56 AMOtto Remse
11/01/2023, 12:51 PMunionAll clause. Both tables work individually but a unionAll between them gives the NULL error above. Not sure if this is helpful for you. I will continue investigating on my endSergey Nuyanzin
11/01/2023, 1:05 PMCREATE TABLE t (id INT, id2 STRING) WITH ('connector' = 'datagen');
select * from t
union all
select * from t;
also
select * from t where id > 0
union all
select * from t where id < 0;
also tried same with just union
was not able to reproduce it...
i guess there should be something else to make it failingOtto Remse
11/01/2023, 1:06 PM