diff --git a/core/src/main/java/org/apache/calcite/rex/RexExecutorImpl.java b/core/src/main/java/org/apache/calcite/rex/RexExecutorImpl.java index b32399b02f19..480f0ea301d0 100644 --- a/core/src/main/java/org/apache/calcite/rex/RexExecutorImpl.java +++ b/core/src/main/java/org/apache/calcite/rex/RexExecutorImpl.java @@ -129,22 +129,19 @@ public static RexExecutable getExecutable(RexBuilder rexBuilder, List e */ @Override public void reduce(RexBuilder rexBuilder, List constExps, List reducedValues) { - String code; try { - code = compile(rexBuilder, constExps, (list, index, storageType) -> { + String code = compile(rexBuilder, constExps, (list, index, storageType) -> { throw new UnsupportedOperationException(); }); + final RexExecutable executable = new RexExecutable(code, constExps); + executable.setDataContext(dataContext); + executable.reduce(rexBuilder, constExps, reducedValues); } catch (RuntimeException ex) { // Give up on reduction and return expressions unchanged. // This effectively moves the error from compile time to runtime. // We could give a warning here if there was a mechanism for warnings. reducedValues.addAll(constExps); - return; } - - final RexExecutable executable = new RexExecutable(code, constExps); - executable.setDataContext(dataContext); - executable.reduce(rexBuilder, constExps, reducedValues); } /**