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

twalthr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/master by this push:
     new 8b7ebcacddc [FLINK-40112][table-planner] Report changelog mode 
mismatch instead of a generic planning error
8b7ebcacddc is described below

commit 8b7ebcacddcb43168879f1d6135b9714270cae6d
Author: Gustavo de Morais <[email protected]>
AuthorDate: Fri Jul 10 09:11:33 2026 +0200

    [FLINK-40112][table-planner] Report changelog mode mismatch instead of a 
generic planning error
    
    This closes #28703.
---
 .../plan/optimize/program/FlinkChangelogModeInferenceProgram.scala  | 4 +++-
 .../table/planner/plan/stream/sql/ProcessTableFunctionTest.java     | 6 ++++--
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git 
a/flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/plan/optimize/program/FlinkChangelogModeInferenceProgram.scala
 
b/flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/plan/optimize/program/FlinkChangelogModeInferenceProgram.scala
index 53efd6e8f50..77fc7208d24 100644
--- 
a/flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/plan/optimize/program/FlinkChangelogModeInferenceProgram.scala
+++ 
b/flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/plan/optimize/program/FlinkChangelogModeInferenceProgram.scala
@@ -141,7 +141,9 @@ class FlinkChangelogModeInferenceProgram extends 
FlinkOptimizeProgram[StreamOpti
         "The conflict is at:\n" + conflict
     } else {
       val plan = FlinkRelOptUtil.toString(rootWithModifyKindSet, 
withChangelogTraits = true)
-      "Can't generate a valid execution plan for the given query:\n" + plan
+      "Can't generate a valid execution plan for the given query because of a 
changelog mismatch: " +
+        "an operator cannot produce the changelog its consumer requires. 
Review the changelog " +
+        "modes of the operators in the plan below:\n" + plan
     }
   }
 
diff --git 
a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/stream/sql/ProcessTableFunctionTest.java
 
b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/stream/sql/ProcessTableFunctionTest.java
index 4606e2ec493..d34b3f3bc8d 100644
--- 
a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/stream/sql/ProcessTableFunctionTest.java
+++ 
b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/stream/sql/ProcessTableFunctionTest.java
@@ -544,14 +544,16 @@ class ProcessTableFunctionTest extends TableTestBase {
                         UpdatingUpsertFunction.class,
                         "SELECT name, SUM(`count`) OVER (PARTITION BY name 
ORDER BY name) "
                                 + "FROM f(r => TABLE t_updating PARTITION BY 
name)",
-                        "Can't generate a valid execution plan for the given 
query:\n"),
+                        "Can't generate a valid execution plan for the given 
query because of a "
+                                + "changelog mismatch"),
                 ErrorSpec.ofSelect(
                         // t_upsert produces an upsert changelog.
                         // the table argument for f requires a retract 
changelog
                         "retract requirement on an upsert table arg",
                         SetSemanticTableRetractArgFunction.class,
                         "SELECT * FROM f(r => TABLE t_upsert PARTITION BY 
name)",
-                        "Can't generate a valid execution plan for the given 
query:\n"),
+                        "Can't generate a valid execution plan for the given 
query because of a "
+                                + "changelog mismatch"),
                 ErrorSpec.ofInsertInto(
                         "upsert conflict buried below a calc",
                         UpdatingUpsertFunction.class,

Reply via email to