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 97914f47 [FLINK-40778][tests] Handle Flink 2.4's AND digest in 
JdbcTablePlanTest
97914f47 is described below

commit 97914f47c458b5215d176e7e31af04c5ceccfa4a
Author: Martijn Visser <[email protected]>
AuthorDate: Mon Oct 5 10:09:07 2026 +0200

    [FLINK-40778][tests] Handle Flink 2.4's AND digest in JdbcTablePlanTest
    
    FLINK-40021 changed the pushed-down filter digest from and(...) to
    AND(...) in Flink 2.4. Main still builds against 2.1 to 2.3, so keep
    the existing reference plan and add one for 2.4 and later.
    
    Generated-by: Claude Code (Claude Opus 5.5)
    Co-authored-by: Purushottam Sinha <[email protected]>
---
 .../connector/jdbc/core/table/JdbcTablePlanTest.java | 20 ++++++++++++++++++++
 .../connector/jdbc/core/table/JdbcTablePlanTest.xml  | 17 +++++++++++++++++
 2 files changed, 37 insertions(+)

diff --git 
a/flink-connector-jdbc-core/src/test/java/org/apache/flink/connector/jdbc/core/table/JdbcTablePlanTest.java
 
b/flink-connector-jdbc-core/src/test/java/org/apache/flink/connector/jdbc/core/table/JdbcTablePlanTest.java
index 0e587009..5d7b9187 100644
--- 
a/flink-connector-jdbc-core/src/test/java/org/apache/flink/connector/jdbc/core/table/JdbcTablePlanTest.java
+++ 
b/flink-connector-jdbc-core/src/test/java/org/apache/flink/connector/jdbc/core/table/JdbcTablePlanTest.java
@@ -18,6 +18,7 @@
 
 package org.apache.flink.connector.jdbc.core.table;
 
+import org.apache.flink.FlinkVersion;
 import org.apache.flink.table.api.TableConfig;
 import org.apache.flink.table.planner.utils.StreamTableTestUtil;
 import org.apache.flink.table.planner.utils.TableTestBase;
@@ -27,9 +28,14 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.TestInfo;
 import org.junit.rules.TestName;
 
+import static org.assertj.core.api.Assumptions.assumeThat;
+
 /** Plan tests for JDBC connector, for example, testing projection push down. 
*/
 class JdbcTablePlanTest extends TableTestBase {
 
+    /** Flink 2.4 spells the AND of pushed-down filters in upper case 
(FLINK-40021). */
+    private static final boolean UPPER_CASE_FILTER_AND = 
FlinkVersion.byCode("2.4").isPresent();
+
     private final StreamTableTestUtil util = 
streamTestUtil(TableConfig.getDefault());
 
     private TestInfo testInfo;
@@ -95,8 +101,22 @@ class JdbcTablePlanTest extends TableTestBase {
         util.verifyExecPlan("SELECT id, time_col FROM jdbc LIMIT 3");
     }
 
+    /**
+     * Remove this test, its plan and UPPER_CASE_FILTER_AND once Flink < 2.4 
is no longer supported.
+     */
     @Test
     void testFilterPushdown() {
+        assumeThat(UPPER_CASE_FILTER_AND).isFalse();
+        verifyFilterPushdown();
+    }
+
+    @Test
+    void testFilterPushdownSinceFlink24() {
+        assumeThat(UPPER_CASE_FILTER_AND).isTrue();
+        verifyFilterPushdown();
+    }
+
+    private void verifyFilterPushdown() {
         util.verifyExecPlan(
                 "SELECT id, time_col, real_col FROM jdbc WHERE id = 900001 AND 
time_col <> TIME '11:11:11' OR double_col >= -1000.23");
     }
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 d24b3891..c461382b 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
@@ -30,6 +30,23 @@ LogicalProject(id=[$0], time_col=[$3], real_col=[$4])
         <Resource name="optimized exec plan">
             <![CDATA[
 TableSourceScan(table=[[default_catalog, default_database, jdbc, 
filter=[and(OR(=(id, 900001:BIGINT), >=(double_col, -1000.23:DECIMAL(6, 2))), 
OR(<>(time_col, 11:11:11), >=(double_col, -1000.23:DECIMAL(6, 2))))], 
project=[id, time_col, real_col]]], fields=[id, time_col, real_col])
+]]>
+        </Resource>
+    </TestCase>
+    <TestCase name="testFilterPushdownSinceFlink24">
+        <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]]>
+        </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]])
+]]>
+        </Resource>
+        <Resource name="optimized exec plan">
+            <![CDATA[
+TableSourceScan(table=[[default_catalog, default_database, jdbc, 
filter=[AND(OR(=(id, 900001:BIGINT), >=(double_col, -1000.23:DECIMAL(6, 2))), 
OR(<>(time_col, 11:11:11), >=(double_col, -1000.23:DECIMAL(6, 2))))], 
project=[id, time_col, real_col]]], fields=[id, time_col, real_col])
 ]]>
         </Resource>
     </TestCase>

Reply via email to