diff --git a/fe/src/main/java/org/apache/doris/load/Load.java b/fe/src/main/java/org/apache/doris/load/Load.java index 186d8324ca5560..6daeaf87b09e72 100644 --- a/fe/src/main/java/org/apache/doris/load/Load.java +++ b/fe/src/main/java/org/apache/doris/load/Load.java @@ -22,6 +22,8 @@ import org.apache.doris.analysis.ColumnSeparator; import org.apache.doris.analysis.DataDescription; import org.apache.doris.analysis.DeleteStmt; +import org.apache.doris.analysis.Expr; +import org.apache.doris.analysis.ImportColumnDesc; import org.apache.doris.analysis.IsNullPredicate; import org.apache.doris.analysis.LabelName; import org.apache.doris.analysis.LiteralExpr; @@ -677,14 +679,19 @@ public static void checkAndCreateSource(Database db, DataDescription dataDescrip source.setColumnNames(columnNames); // check default value - Map>> assignColumnToFunction = dataDescription.getColumnToHadoopFunction(); + Map>> columnToHadoopFunction = dataDescription.getColumnToHadoopFunction(); + List parsedColumnExprList = dataDescription.getParsedColumnExprList(); + Map parsedColumnExprMap = Maps.newTreeMap(String.CASE_INSENSITIVE_ORDER); + for (ImportColumnDesc importColumnDesc : parsedColumnExprList) { + parsedColumnExprMap.put(importColumnDesc.getColumnName(), importColumnDesc.getExpr()); + } for (Column column : tableSchema) { String columnName = column.getName(); if (columnNames.contains(columnName)) { continue; } - if (assignColumnToFunction != null && assignColumnToFunction.containsKey(columnName)) { + if (parsedColumnExprMap.containsKey(columnName)) { continue; } @@ -692,18 +699,10 @@ public static void checkAndCreateSource(Database db, DataDescription dataDescrip continue; } - if (deleteFlag && !column.isKey()) { - List args = Lists.newArrayList(); - args.add("0"); - Pair> functionPair = new Pair>("default_value", args); - assignColumnToFunction.put(columnName, functionPair); - continue; - } - throw new DdlException("Column has no default value. column: " + columnName); } - // check negative for sum aggreate type + // check negative for sum aggregate type if (dataDescription.isNegative()) { for (Column column : tableSchema) { if (!column.isKey() && column.getAggregationType() != AggregateType.SUM) { @@ -715,7 +714,7 @@ public static void checkAndCreateSource(Database db, DataDescription dataDescrip // check hll for (Column column : tableSchema) { if (column.getDataType() == PrimitiveType.HLL) { - if (assignColumnToFunction != null && !assignColumnToFunction.containsKey(column.getName())) { + if (columnToHadoopFunction != null && !columnToHadoopFunction.containsKey(column.getName())) { throw new DdlException("Hll column is not assigned. column:" + column.getName()); } } @@ -727,9 +726,9 @@ public static void checkAndCreateSource(Database db, DataDescription dataDescrip for (String columnName : columnNames) { columnNameMap.put(columnName, columnName); } - if (assignColumnToFunction != null) { + if (columnToHadoopFunction != null) { columnToFunction = Maps.newHashMap(); - for (Entry>> entry : assignColumnToFunction.entrySet()) { + for (Entry>> entry : columnToHadoopFunction.entrySet()) { String mappingColumnName = entry.getKey(); if (!nameToTableColumn.containsKey(mappingColumnName)) { throw new DdlException("Mapping column is not in table. column: " + mappingColumnName);