Skip to content

Commit a0aade1

Browse files
春栖春栖
authored andcommitted
address review comments
1 parent f2281e5 commit a0aade1

4 files changed

Lines changed: 39 additions & 4 deletions

File tree

flink-cdc-runtime/src/main/java/org/apache/flink/cdc/runtime/parser/JaninoCompiler.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -920,8 +920,10 @@ private GeneratedExpression translate(SqlNode sqlNode, Class<?> resultClass) {
920920
return translateSqlCase((SqlCase) sqlNode, resultClass);
921921
}
922922
Java.Rvalue rvalue = translateSqlNodeToJaninoRvalue(context, sqlNode);
923-
return GeneratedExpression.fromExpression(
924-
rvalue == null ? "" : rvalue.toString(), resultClass);
923+
if (rvalue == null) {
924+
throw new ParseException("Unrecognized expression: " + sqlNode);
925+
}
926+
return GeneratedExpression.fromExpression(rvalue.toString(), resultClass);
925927
}
926928

927929
private GeneratedExpression translateSqlBasicCall(

flink-cdc-runtime/src/main/java/org/apache/flink/cdc/runtime/parser/TransformParser.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -605,11 +605,11 @@ public static GeneratedExpression translateFilterExpressionToGeneratedExpression
605605
SupportedMetadataColumn[] supportedMetadataColumns,
606606
Map<String, String> columnNameMap) {
607607
if (isNullOrWhitespaceOnly(filterExpression)) {
608-
return GeneratedExpression.fromExpression("", Boolean.class);
608+
return GeneratedExpression.fromExpression("Boolean.TRUE", Boolean.class);
609609
}
610610
SqlSelect sqlSelect = TransformParser.parseFilterExpression(filterExpression);
611611
if (!sqlSelect.hasWhere()) {
612-
return GeneratedExpression.fromExpression("", Boolean.class);
612+
return GeneratedExpression.fromExpression("Boolean.TRUE", Boolean.class);
613613
}
614614
SqlNode where = sqlSelect.getWhere();
615615
return JaninoCompiler.translateSqlNodeToGeneratedExpression(

flink-cdc-runtime/src/test/java/org/apache/flink/cdc/runtime/parser/JaninoCompilerTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
package org.apache.flink.cdc.runtime.parser;
1919

20+
import org.apache.flink.api.common.io.ParseException;
2021
import org.apache.flink.api.java.tuple.Tuple2;
2122
import org.apache.flink.cdc.common.schema.Column;
2223
import org.apache.flink.cdc.common.source.SupportedMetadataColumn;
@@ -26,6 +27,7 @@
2627
import org.apache.flink.cdc.common.types.variant.VariantTypeException;
2728
import org.apache.flink.cdc.runtime.operators.transform.TransformExpressionKey;
2829

30+
import org.apache.calcite.sql.SqlNodeList;
2931
import org.assertj.core.api.Assertions;
3032
import org.codehaus.commons.compiler.CompileException;
3133
import org.codehaus.commons.compiler.Location;
@@ -356,6 +358,22 @@ void testTransformExpressionKeyRejectsEmptyResultTermForFullScript() {
356358
.hasMessage("Generated expression result term must not be empty.");
357359
}
358360

361+
@Test
362+
void testTranslateSqlNodeToGeneratedExpressionRejectsUnrecognizedSqlNode() {
363+
Assertions.assertThatThrownBy(
364+
() ->
365+
JaninoCompiler.translateSqlNodeToGeneratedExpression(
366+
JaninoCompiler.Context.of(
367+
Collections.emptyList(),
368+
Collections.emptyMap(),
369+
Collections.emptyList(),
370+
new SupportedMetadataColumn[0]),
371+
SqlNodeList.EMPTY,
372+
Boolean.class))
373+
.isExactlyInstanceOf(ParseException.class)
374+
.hasMessageStartingWith("Unrecognized expression:");
375+
}
376+
359377
@Test
360378
void testLargeNumericLiterals() {
361379
// Test parsing integer literals

flink-cdc-runtime/src/test/java/org/apache/flink/cdc/runtime/parser/TransformParserTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,21 @@ void testTranslateLogicalFilterToGeneratedExpressionByNullability() {
452452
Assertions.assertThat(generatedExpression.asScript()).endsWith("return result$0;");
453453
}
454454

455+
@Test
456+
void testTranslateEmptyFilterToGeneratedExpression() {
457+
GeneratedExpression generatedExpression =
458+
TransformParser.translateFilterExpressionToGeneratedExpression(
459+
"",
460+
DUMMY_COLUMNS,
461+
Collections.emptyList(),
462+
new SupportedMetadataColumn[0],
463+
Collections.emptyMap());
464+
465+
Assertions.assertThat(generatedExpression.getCode()).isEmpty();
466+
Assertions.assertThat(generatedExpression.getResultTerm()).isEqualTo("Boolean.TRUE");
467+
Assertions.assertThat(generatedExpression.asScript()).isEqualTo("return Boolean.TRUE;");
468+
}
469+
455470
@Test
456471
public void testTranslateItemAccessToJaninoExpression() {
457472
// Test collection access functions (ARRAY, MAP) with proper column schema

0 commit comments

Comments
 (0)