This is an automated email from the ASF dual-hosted git repository. kxiao pushed a commit to branch branch-2.0 in repository https://gitbox.apache.org/repos/asf/doris.git
commit fc37baaf53b773235a90799e492da5cbe022d0cf Author: Pxl <[email protected]> AuthorDate: Mon Oct 16 17:03:26 2023 +0800 [Chore](sink) add index number check for table sink (#25461) add index number check for table sink --- .../src/main/java/org/apache/doris/catalog/OlapTable.java | 4 ++++ .../src/main/java/org/apache/doris/planner/OlapTableSink.java | 10 ++++++++++ .../test/java/org/apache/doris/planner/OlapTableSinkTest.java | 6 ++++++ 3 files changed, 20 insertions(+) diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java index bc0073f7ef9..0f6ffc3cf6b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java @@ -620,6 +620,10 @@ public class OlapTable extends Table { return Status.OK; } + public int getIndexNumber() { + return indexIdToMeta.size(); + } + public Map<Long, MaterializedIndexMeta> getIndexIdToMeta() { return indexIdToMeta; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapTableSink.java b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapTableSink.java index ceee31a721d..d073f0b1394 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapTableSink.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapTableSink.java @@ -166,6 +166,16 @@ public class OlapTableSink extends DataSink { // must called after tupleDescriptor is computed public void complete(Analyzer analyzer) throws UserException { + for (Long partitionId : partitionIds) { + Partition partition = dstTable.getPartition(partitionId); + if (dstTable.getIndexNumber() != partition.getMaterializedIndices(IndexExtState.ALL).size()) { + throw new UserException( + "table's index number not equal with partition's index number. table's index number=" + + dstTable.getIndexIdToMeta().size() + ", partition's index number=" + + partition.getMaterializedIndices(IndexExtState.ALL).size()); + } + } + TOlapTableSink tSink = tDataSink.getOlapTableSink(); tSink.setTableId(dstTable.getId()); diff --git a/fe/fe-core/src/test/java/org/apache/doris/planner/OlapTableSinkTest.java b/fe/fe-core/src/test/java/org/apache/doris/planner/OlapTableSinkTest.java index dc98026a00e..0ebea0e3b35 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/planner/OlapTableSinkTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/planner/OlapTableSinkTest.java @@ -92,6 +92,8 @@ public class OlapTableSinkTest { new Expectations() { { + dstTable.getIndexNumber(); + result = 1; dstTable.getId(); result = 1; dstTable.getPartitionInfo(); @@ -128,6 +130,8 @@ public class OlapTableSinkTest { new Expectations() { { + dstTable.getIndexNumber(); + result = 1; dstTable.getId(); result = 1; dstTable.getPartitionInfo(); @@ -190,6 +194,8 @@ public class OlapTableSinkTest { new Expectations() { { + dstTable.getIndexNumber(); + result = 1; dstTable.getId(); result = 1; dstTable.getPartitionInfo(); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
