This is an automated email from the ASF dual-hosted git repository.

MartijnVisser pushed a commit to branch v4.1
in repository https://gitbox.apache.org/repos/asf/flink-connector-jdbc.git


The following commit(s) were added to refs/heads/v4.1 by this push:
     new 33a07abf [hotfix][tests] Sort JdbcTablePlanTest.xml test cases 
alphabetically
33a07abf is described below

commit 33a07abfd3b1988a2500c373c140d118a83ab5c4
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)
    (cherry picked from commit 1c835c620862c3ba15b409bdbd00745168e89f1a)
---
 .../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>

Reply via email to