This is an automated email from the ASF dual-hosted git repository.
MartijnVisser pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/flink-connector-jdbc.git
The following commit(s) were added to refs/heads/main by this push:
new fa0d1164 [hotfix][tests] Sort JdbcTablePlanTest.xml test cases
alphabetically
fa0d1164 is described below
commit fa0d11649a7bb570034f4a254a6d0c5236e86b51
Author: Martijn Visser <[email protected]>
AuthorDate: Sun Sep 20 19:16:05 2026 +0200
[hotfix][tests] Sort JdbcTablePlanTest.xml test cases alphabetically
Flink 2.2's DiffRepository (FLINK-38609) requires the TestCase elements of a
plan reference file to be in alphabetical order and throws for every element
that follows a lexicographically greater name. JdbcTablePlanTest.xml was in
insertion order, so four of its ten cases error on Flink 2.2:
testFilterPushdown, testLookupJoin, testLookupJoinWith2ANDsAndORFilter and
testLookupJoinWithANDAndORFilter. This has kept the weekly red on the
2.2-SNAPSHOT and 2.2.0 legs since 2026-07-26.
Pure block move: every TestCase body is unchanged, only the order differs.
Passes on Flink 2.0.1, 2.1.1, 2.2.0 and 2.2.1.
Generated-by: Claude Code (Fable 5.1)
---
.../jdbc/core/table/JdbcTablePlanTest.xml | 96 +++++++++++-----------
1 file changed, 48 insertions(+), 48 deletions(-)
diff --git
a/flink-connector-jdbc-core/src/test/resources/org/apache/flink/connector/jdbc/core/table/JdbcTablePlanTest.xml
b/flink-connector-jdbc-core/src/test/resources/org/apache/flink/connector/jdbc/core/table/JdbcTablePlanTest.xml
index 5a6e746c..d24b3891 100644
---
a/flink-connector-jdbc-core/src/test/resources/org/apache/flink/connector/jdbc/core/table/JdbcTablePlanTest.xml
+++
b/flink-connector-jdbc-core/src/test/resources/org/apache/flink/connector/jdbc/core/table/JdbcTablePlanTest.xml
@@ -16,41 +16,6 @@ See the License for the specific language governing
permissions and
limitations under the License.
-->
<Root>
- <TestCase name="testLimitPushDown">
- <Resource name="sql">
- <![CDATA[SELECT id, time_col FROM jdbc LIMIT 3]]>
- </Resource>
- <Resource name="ast">
- <![CDATA[
-LogicalSort(fetch=[3])
-+- LogicalProject(id=[$0], time_col=[$3])
- +- LogicalTableScan(table=[[default_catalog, default_database, jdbc]])
-]]>
- </Resource>
- <Resource name="optimized exec plan">
- <![CDATA[
-Limit(offset=[0], fetch=[3])
-+- Exchange(distribution=[single])
- +- TableSourceScan(table=[[default_catalog, default_database, jdbc,
project=[id, time_col], limit=[3]]], fields=[id, time_col])
-]]>
- </Resource>
- </TestCase>
- <TestCase name="testProjectionPushDown">
- <Resource name="sql">
- <![CDATA[SELECT decimal_col, timestamp9_col, id FROM jdbc]]>
- </Resource>
- <Resource name="ast">
- <![CDATA[
-LogicalProject(decimal_col=[$6], timestamp9_col=[$2], id=[$0])
-+- LogicalTableScan(table=[[default_catalog, default_database, jdbc]])
-]]>
- </Resource>
- <Resource name="optimized exec plan">
- <![CDATA[
-TableSourceScan(table=[[default_catalog, default_database, jdbc,
project=[decimal_col, timestamp9_col, id]]], fields=[decimal_col,
timestamp9_col, id])
-]]>
- </Resource>
- </TestCase>
<TestCase name="testFilterPushdown">
<Resource name="sql">
<![CDATA[SELECT id, time_col, real_col FROM jdbc WHERE id = 900001
AND time_col <> TIME '11:11:11' OR double_col >= -1000.23]]>
@@ -68,27 +33,28 @@ TableSourceScan(table=[[default_catalog, default_database,
jdbc, filter=[and(OR(
]]>
</Resource>
</TestCase>
- <TestCase name="testNeverFilterPushdown">
+ <TestCase name="testLimitPushDown">
<Resource name="sql">
- <![CDATA[SELECT id, time_col, real_col FROM jdbc_never_pushdown
WHERE id = 900001 AND time_col <> TIME '11:11:11' OR double_col >= -1000.23]]>
+ <![CDATA[SELECT id, time_col FROM jdbc LIMIT 3]]>
</Resource>
<Resource name="ast">
<![CDATA[
-LogicalProject(id=[$0], time_col=[$3], real_col=[$4])
-+- LogicalFilter(condition=[OR(AND(=($0, 900001), <>($3, 11:11:11)), >=($5,
-1000.23:DECIMAL(6, 2)))])
- +- LogicalTableScan(table=[[default_catalog, default_database,
jdbc_never_pushdown]])
+LogicalSort(fetch=[3])
++- LogicalProject(id=[$0], time_col=[$3])
+ +- LogicalTableScan(table=[[default_catalog, default_database, jdbc]])
]]>
</Resource>
<Resource name="optimized exec plan">
<![CDATA[
-Calc(select=[id, time_col, real_col], where=[(((id = 900001) OR (double_col >=
-1000.23)) AND ((time_col <> 11:11:11) OR (double_col >= -1000.23)))])
-+- TableSourceScan(table=[[default_catalog, default_database,
jdbc_never_pushdown, filter=[], project=[id, time_col, real_col, double_col]]],
fields=[id, time_col, real_col, double_col])
+Limit(offset=[0], fetch=[3])
++- Exchange(distribution=[single])
+ +- TableSourceScan(table=[[default_catalog, default_database, jdbc,
project=[id, time_col], limit=[3]]], fields=[id, time_col])
]]>
</Resource>
</TestCase>
- <TestCase name="testLookupJoinWithANDAndORFilter">
+ <TestCase name="testLookupJoin">
<Resource name="sql">
- <![CDATA[SELECT * FROM a LEFT JOIN d FOR SYSTEM_TIME AS OF
a.proctime ON ((d.age = 50 AND d.type = 0) OR (d.type = 1 AND d.age = 40)) AND
a.ip = d.ip]]>
+ <![CDATA[SELECT * FROM a LEFT JOIN d FOR SYSTEM_TIME AS OF
a.proctime ON a.ip = d.ip]]>
</Resource>
<Resource name="ast">
<![CDATA[
@@ -96,7 +62,7 @@ LogicalProject(ip=[$0], proctime=[$1], ip0=[$2], type=[$3],
age=[$4])
+- LogicalCorrelate(correlation=[$cor0], joinType=[left], requiredColumns=[{0,
1}])
:- LogicalProject(ip=[$0], proctime=[PROCTIME()])
: +- LogicalTableScan(table=[[default_catalog, default_database, a]])
- +- LogicalFilter(condition=[AND(OR(AND(=($2, 50), =($1, 0)), AND(=($1, 1),
=($2, 40))), =($cor0.ip, CAST($0):VARCHAR(2147483647) CHARACTER SET
"UTF-16LE"))])
+ +- LogicalFilter(condition=[=($cor0.ip, CAST($0):VARCHAR(2147483647)
CHARACTER SET "UTF-16LE")])
+- LogicalSnapshot(period=[$cor0.proctime])
+- LogicalTableScan(table=[[default_catalog, default_database, d]])
]]>
@@ -134,9 +100,9 @@ Calc(select=[ip, PROCTIME_MATERIALIZE(proctime) AS
proctime, ip0, type, age])
]]>
</Resource>
</TestCase>
- <TestCase name="testLookupJoin">
+ <TestCase name="testLookupJoinWithANDAndORFilter">
<Resource name="sql">
- <![CDATA[SELECT * FROM a LEFT JOIN d FOR SYSTEM_TIME AS OF
a.proctime ON a.ip = d.ip]]>
+ <![CDATA[SELECT * FROM a LEFT JOIN d FOR SYSTEM_TIME AS OF
a.proctime ON ((d.age = 50 AND d.type = 0) OR (d.type = 1 AND d.age = 40)) AND
a.ip = d.ip]]>
</Resource>
<Resource name="ast">
<![CDATA[
@@ -144,7 +110,7 @@ LogicalProject(ip=[$0], proctime=[$1], ip0=[$2], type=[$3],
age=[$4])
+- LogicalCorrelate(correlation=[$cor0], joinType=[left], requiredColumns=[{0,
1}])
:- LogicalProject(ip=[$0], proctime=[PROCTIME()])
: +- LogicalTableScan(table=[[default_catalog, default_database, a]])
- +- LogicalFilter(condition=[=($cor0.ip, CAST($0):VARCHAR(2147483647)
CHARACTER SET "UTF-16LE")])
+ +- LogicalFilter(condition=[AND(OR(AND(=($2, 50), =($1, 0)), AND(=($1, 1),
=($2, 40))), =($cor0.ip, CAST($0):VARCHAR(2147483647) CHARACTER SET
"UTF-16LE"))])
+- LogicalSnapshot(period=[$cor0.proctime])
+- LogicalTableScan(table=[[default_catalog, default_database, d]])
]]>
@@ -227,6 +193,40 @@ Calc(select=[ip, PROCTIME_MATERIALIZE(proctime) AS
proctime, ip0, type, `?age:])
+-
LookupJoin(table=[default_catalog.default_database.table_with_weird_column_name],
joinType=[LeftOuterJoin], lookup=[ip=ip], select=[ip, proctime, ip, type,
`?age:, CAST(ip AS VARCHAR(2147483647)) AS ip0])
+- Calc(select=[ip, PROCTIME() AS proctime])
+- TableSourceScan(table=[[default_catalog, default_database, a]],
fields=[ip])
+]]>
+ </Resource>
+ </TestCase>
+ <TestCase name="testNeverFilterPushdown">
+ <Resource name="sql">
+ <![CDATA[SELECT id, time_col, real_col FROM jdbc_never_pushdown
WHERE id = 900001 AND time_col <> TIME '11:11:11' OR double_col >= -1000.23]]>
+ </Resource>
+ <Resource name="ast">
+ <![CDATA[
+LogicalProject(id=[$0], time_col=[$3], real_col=[$4])
++- LogicalFilter(condition=[OR(AND(=($0, 900001), <>($3, 11:11:11)), >=($5,
-1000.23:DECIMAL(6, 2)))])
+ +- LogicalTableScan(table=[[default_catalog, default_database,
jdbc_never_pushdown]])
+]]>
+ </Resource>
+ <Resource name="optimized exec plan">
+ <![CDATA[
+Calc(select=[id, time_col, real_col], where=[(((id = 900001) OR (double_col >=
-1000.23)) AND ((time_col <> 11:11:11) OR (double_col >= -1000.23)))])
++- TableSourceScan(table=[[default_catalog, default_database,
jdbc_never_pushdown, filter=[], project=[id, time_col, real_col, double_col]]],
fields=[id, time_col, real_col, double_col])
+]]>
+ </Resource>
+ </TestCase>
+ <TestCase name="testProjectionPushDown">
+ <Resource name="sql">
+ <![CDATA[SELECT decimal_col, timestamp9_col, id FROM jdbc]]>
+ </Resource>
+ <Resource name="ast">
+ <![CDATA[
+LogicalProject(decimal_col=[$6], timestamp9_col=[$2], id=[$0])
++- LogicalTableScan(table=[[default_catalog, default_database, jdbc]])
+]]>
+ </Resource>
+ <Resource name="optimized exec plan">
+ <![CDATA[
+TableSourceScan(table=[[default_catalog, default_database, jdbc,
project=[decimal_col, timestamp9_col, id]]], fields=[decimal_col,
timestamp9_col, id])
]]>
</Resource>
</TestCase>