From 5aee6241ef759e0fb437ba9e557c048155f3a919 Mon Sep 17 00:00:00 2001 From: hui lai <1353307710@qq.com> Date: Sat, 13 Jul 2024 09:54:08 +0800 Subject: [PATCH] [fix](cloud) fix strict mode invalidation when copy.use_delete_sign is true for copy into (#37650) Fix strict mode invalidation when copy.use_delete_sign is true for copy into Co-authored-by: Xin Liao --- .../org/apache/doris/analysis/CopyFromParam.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CopyFromParam.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/CopyFromParam.java index c6d42d9b99f974..b2a57cd1f5d8a6 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CopyFromParam.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CopyFromParam.java @@ -147,10 +147,16 @@ public void analyze(String fullDbName, TableName tableName, boolean useDeleteSig } } else { for (int i = 0; i < targetColumns.size(); i++) { - BinaryPredicate binaryPredicate = new BinaryPredicate(Operator.EQ, - new SlotRef(null, targetColumns.get(i)), - new SlotRef(null, fileColumns.get(i))); - columnMappingList.add(binaryPredicate); + // If file column name equals target column name, don't need to add to + // columnMapping List. Otherwise it will result in invalidation of strict + // mode. Because if the src data is an expr, strict mode judgment will + // not be performed. + if (!fileColumns.get(i).equalsIgnoreCase(targetColumns.get(i))) { + BinaryPredicate binaryPredicate = new BinaryPredicate(Operator.EQ, + new SlotRef(null, targetColumns.get(i)), + new SlotRef(null, fileColumns.get(i))); + columnMappingList.add(binaryPredicate); + } } } }