Skip to content

Commit a7ae425

Browse files
xueyumusictwalthr
authored andcommitted
[FLINK-10642] [table] Fix CodeGen split errors when maxGeneratedCodeLength equals 1
This closes apache#6900.
1 parent b1965ee commit a7ae425

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

flink-libraries/flink-table/src/main/scala/org/apache/flink/table/codegen/CodeGenerator.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -1061,13 +1061,13 @@ abstract class CodeGenerator(
10611061

10621062
// declaration
10631063
val resultTypeTerm = primitiveTypeTermForTypeInfo(expr.resultType)
1064-
if (nullCheck) {
1064+
if (nullCheck && !expr.nullTerm.equals(NEVER_NULL) && !expr.nullTerm.equals(ALWAYS_NULL)) {
10651065
reusableMemberStatements.add(s"private boolean ${expr.nullTerm};")
10661066
}
10671067
reusableMemberStatements.add(s"private $resultTypeTerm ${expr.resultTerm};")
10681068

10691069
// assignment
1070-
if (nullCheck) {
1070+
if (nullCheck && !expr.nullTerm.equals(NEVER_NULL) && !expr.nullTerm.equals(ALWAYS_NULL)) {
10711071
reusablePerRecordStatements.add(s"this.${expr.nullTerm} = ${expr.nullTerm};")
10721072
}
10731073
reusablePerRecordStatements.add(s"this.${expr.resultTerm} = ${expr.resultTerm};")

flink-libraries/flink-table/src/test/scala/org/apache/flink/table/runtime/batch/table/CalcITCase.scala

+16
Original file line numberDiff line numberDiff line change
@@ -578,6 +578,22 @@ class CalcITCase(
578578
val expected = List("a,a,d,d,e,e", "x,x,z,z,z,z").mkString("\n")
579579
TestBaseUtils.compareResultAsText(results.asJava, expected)
580580
}
581+
582+
@Test
583+
def testSplitFieldsOnCustomType(): Unit = {
584+
val env = ExecutionEnvironment.getExecutionEnvironment
585+
val tEnv = TableEnvironment.getTableEnvironment(env, config)
586+
tEnv.getConfig.setMaxGeneratedCodeLength(1) // splits fields
587+
588+
val ds = CollectionDataSets.getCustomTypeDataSet(env)
589+
val filterDs = ds.toTable(tEnv, 'myInt as 'i, 'myLong as 'l, 'myString as 's)
590+
.filter('s.like("%a%") && 's.charLength() > 12)
591+
.select('i, 'l, 's.charLength())
592+
593+
val expected = "3,3,25\n" + "3,5,14\n"
594+
val results = filterDs.toDataSet[Row].collect()
595+
TestBaseUtils.compareResultAsText(results.asJava, expected)
596+
}
581597
}
582598

583599
object CalcITCase {

0 commit comments

Comments
 (0)