This is an automated email from the ASF dual-hosted git repository. kangkaisen pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-doris.git
The following commit(s) were added to refs/heads/master by this push: new 01a4ab0 [Bug] Fix mapping columns not exist in the table schema (#3113) 01a4ab0 is described below commit 01a4ab01c4d6006cc29d29b02a2bff8feddd363d Author: wyb <wyb...@gmail.com> AuthorDate: Sat Mar 14 22:45:39 2020 +0800 [Bug] Fix mapping columns not exist in the table schema (#3113) --- fe/src/main/java/org/apache/doris/load/Load.java | 17 +++++++++++++---- .../apache/doris/planner/StreamLoadScanNodeTest.java | 17 +++++++++++++++++ 2 files changed, 30 insertions(+), 4 deletions(-) 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 5e2bc6f..6cc8a1e 100644 --- a/fe/src/main/java/org/apache/doris/load/Load.java +++ b/fe/src/main/java/org/apache/doris/load/Load.java @@ -875,6 +875,19 @@ public class Load { Map<String, Pair<String, List<String>>> columnToHadoopFunction, Map<String, Expr> exprsByName, Analyzer analyzer, TupleDescriptor srcTupleDesc, Map<String, SlotDescriptor> slotDescByName, TBrokerScanRangeParams params) throws UserException { + // check mapping column exist in schema + // !! all column mappings are in columnExprs !! + for (ImportColumnDesc importColumnDesc : columnExprs) { + if (importColumnDesc.isColumn()) { + continue; + } + + String mappingColumnName = importColumnDesc.getColumnName(); + if (tbl.getColumn(mappingColumnName) == null) { + throw new DdlException("Mapping column is not in table. column: " + mappingColumnName); + } + } + // If user does not specify the file field names, generate it by using base schema of table. // So that the following process can be unified boolean specifyFileFieldNames = columnExprs.stream().anyMatch(p -> p.isColumn()); @@ -960,10 +973,6 @@ public class Load { for (Entry<String, Pair<String, List<String>>> entry : columnToHadoopFunction.entrySet()) { String mappingColumnName = entry.getKey(); Column mappingColumn = tbl.getColumn(mappingColumnName); - if (mappingColumn == null) { - throw new DdlException("Mapping column is not in table. column: " + mappingColumnName); - } - Pair<String, List<String>> function = entry.getValue(); try { DataDescription.validateMappingFunction(function.first, function.second, columnNameMap, diff --git a/fe/src/test/java/org/apache/doris/planner/StreamLoadScanNodeTest.java b/fe/src/test/java/org/apache/doris/planner/StreamLoadScanNodeTest.java index 24cbe98..73f0564 100644 --- a/fe/src/test/java/org/apache/doris/planner/StreamLoadScanNodeTest.java +++ b/fe/src/test/java/org/apache/doris/planner/StreamLoadScanNodeTest.java @@ -20,7 +20,9 @@ package org.apache.doris.planner; import org.apache.doris.analysis.Analyzer; import org.apache.doris.analysis.CastExpr; import org.apache.doris.analysis.DescriptorTable; +import org.apache.doris.analysis.FunctionCallExpr; import org.apache.doris.analysis.FunctionName; +import org.apache.doris.analysis.ImportColumnDesc; import org.apache.doris.analysis.SlotDescriptor; import org.apache.doris.analysis.TupleDescriptor; import org.apache.doris.catalog.AggregateType; @@ -31,9 +33,13 @@ import org.apache.doris.catalog.OlapTable; import org.apache.doris.catalog.PrimitiveType; import org.apache.doris.catalog.ScalarFunction; import org.apache.doris.catalog.ScalarType; +import org.apache.doris.catalog.Table; +import org.apache.doris.catalog.Table.TableType; import org.apache.doris.catalog.Type; import org.apache.doris.common.AnalysisException; +import org.apache.doris.common.DdlException; import org.apache.doris.common.UserException; +import org.apache.doris.load.Load; import org.apache.doris.qe.ConnectContext; import org.apache.doris.task.StreamLoadTask; import org.apache.doris.thrift.TExplainLevel; @@ -624,4 +630,15 @@ public class StreamLoadScanNodeTest { TPlanNode planNode = new TPlanNode(); scanNode.toThrift(planNode); } + + @Test(expected = DdlException.class) + public void testLoadInitColumnsMappingColumnNotExist() throws UserException { + List<Column> columns = Lists.newArrayList(); + columns.add(new Column("c1", Type.INT, true, null, false, null, "")); + columns.add(new Column("c2", ScalarType.createVarchar(10), true, null, false, null, "")); + Table table = new Table(1L, "table0", TableType.OLAP, columns); + List<ImportColumnDesc> columnExprs = Lists.newArrayList(); + columnExprs.add(new ImportColumnDesc("c3", new FunctionCallExpr("func", Lists.newArrayList()))); + Load.initColumns(table, columnExprs, null, null, null, null, null, null); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org