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

dataroaring pushed a commit to branch routineload_flexible_update
in repository https://gitbox.apache.org/repos/asf/doris.git

commit b49a9bf9bedc78fe6c7f6ac45d91953cb240ccf9
Author: Yongqiang YANG <[email protected]>
AuthorDate: Thu Jan 15 21:58:14 2026 -0800

    fix: Handle conflicting partial_columns and unique_key_update_mode settings
    
    - unique_key_update_mode takes precedence over partial_columns for
      backward compatibility
    - partial_columns is only used when unique_key_update_mode is not
      explicitly set (defaults to UPSERT)
    - Add clear comments explaining the precedence behavior
---
 .../org/apache/doris/load/routineload/RoutineLoadJob.java     |  5 ++++-
 .../trees/plans/commands/info/CreateRoutineLoadInfo.java      | 11 ++---------
 2 files changed, 6 insertions(+), 10 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadJob.java
 
b/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadJob.java
index 585c3167154..309ef614c14 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadJob.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/load/routineload/RoutineLoadJob.java
@@ -1957,7 +1957,8 @@ public abstract class RoutineLoadJob
         // Process remaining properties
         jobProperties.forEach((k, v) -> {
             if (k.equals(CreateRoutineLoadInfo.PARTIAL_COLUMNS)) {
-                // Backward compatibility: if unique_key_update_mode is not 
set, use partial_columns
+                // Backward compatibility: only use partial_columns if 
unique_key_update_mode is not set
+                // unique_key_update_mode takes precedence
                 if (uniqueKeyUpdateMode == TUniqueKeyUpdateMode.UPSERT) {
                     isPartialUpdate = Boolean.parseBoolean(v);
                     if (isPartialUpdate) {
@@ -2054,6 +2055,8 @@ public abstract class RoutineLoadJob
         }
 
         if (jobProperties.containsKey(CreateRoutineLoadInfo.PARTIAL_COLUMNS)) {
+            // Backward compatibility: only use partial_columns if 
unique_key_update_mode is UPSERT (not explicitly set)
+            // unique_key_update_mode takes precedence
             this.isPartialUpdate = Boolean.parseBoolean(
                     
jobProperties.remove(CreateRoutineLoadInfo.PARTIAL_COLUMNS));
             if (this.isPartialUpdate && uniqueKeyUpdateMode == 
TUniqueKeyUpdateMode.UPSERT) {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateRoutineLoadInfo.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateRoutineLoadInfo.java
index 9394257013c..4a32cb3d4e3 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateRoutineLoadInfo.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateRoutineLoadInfo.java
@@ -627,17 +627,10 @@ public class CreateRoutineLoadInfo {
         timezone = 
TimeUtils.checkTimeZoneValidAndStandardize(jobProperties.getOrDefault(TIMEZONE, 
timezone));
 
         // check unique_key_update_mode
+        // Note: unique_key_update_mode takes precedence over partial_columns 
for backward compatibility
         if (jobProperties.containsKey(UNIQUE_KEY_UPDATE_MODE)) {
             String modeStr = jobProperties.get(UNIQUE_KEY_UPDATE_MODE);
-            TUniqueKeyUpdateMode mode = 
parseAndValidateUniqueKeyUpdateMode(modeStr);
-            // Check for conflicting settings: partial_columns=true with 
unique_key_update_mode=UPSERT
-            if (jobProperties.containsKey(PARTIAL_COLUMNS)
-                    && 
jobProperties.get(PARTIAL_COLUMNS).equalsIgnoreCase("true")
-                    && mode == TUniqueKeyUpdateMode.UPSERT) {
-                throw new AnalysisException("Cannot set both 
'partial_columns=true' and "
-                        + "'unique_key_update_mode=UPSERT'. "
-                        + "Use unique_key_update_mode=UPDATE_FIXED_COLUMNS 
instead.");
-            }
+            parseAndValidateUniqueKeyUpdateMode(modeStr);
         }
 
         // check partial_update_new_key_behavior


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to