Skip to content

Commit efdce7e

Browse files
w41terDoris-Extras
authored andcommitted
[fix](binlog) Fix add partition record sql (#35461)
1. support adding a temporary partition 2. remove extra parentheses in the list partition value set 3. support unpartitioned partition item
1 parent d97788d commit efdce7e

File tree

1 file changed

+22
-10
lines changed

1 file changed

+22
-10
lines changed

fe/fe-core/src/main/java/org/apache/doris/binlog/AddPartitionRecord.java

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.apache.doris.catalog.Partition;
2323
import org.apache.doris.catalog.PartitionItem;
2424
import org.apache.doris.catalog.PartitionKey;
25+
import org.apache.doris.catalog.RangePartitionItem;
2526
import org.apache.doris.catalog.ReplicaAllocation;
2627
import org.apache.doris.persist.PartitionPersistInfo;
2728
import org.apache.doris.persist.gson.GsonUtils;
@@ -69,23 +70,34 @@ public AddPartitionRecord(long commitSeq, PartitionPersistInfo partitionPersistI
6970
this.isMutable = partitionPersistInfo.isMutable();
7071

7172
StringBuilder sb = new StringBuilder();
72-
sb.append("ADD PARTITION ").append("`").append(partition.getName()).append("`").append(" VALUES ");
73-
if (this.listPartitionItem.equals(ListPartitionItem.DUMMY_ITEM)) {
73+
sb.append("ADD ");
74+
if (isTempPartition) {
75+
sb.append("TEMPORARY ");
76+
}
77+
sb.append("PARTITION `");
78+
sb.append(partition.getName());
79+
sb.append("` ");
80+
81+
// See fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java:addPartition for details.
82+
if (!this.range.equals(RangePartitionItem.DUMMY_ITEM)) {
7483
// range
75-
sb.append("[");
84+
sb.append("VALUES [");
7685
sb.append(range.lowerEndpoint().toSql());
7786
sb.append(", ");
7887
sb.append(range.upperEndpoint().toSql());
79-
sb.append(")");
80-
} else {
88+
sb.append(") (\"version_info\" = \"");
89+
sb.append(partition.getVisibleVersion());
90+
sb.append("\");");
91+
} else if (!this.listPartitionItem.equals(ListPartitionItem.DUMMY_ITEM)) {
8192
// list
82-
sb.append("IN (");
93+
sb.append("VALUES IN ");
8394
sb.append(((ListPartitionItem) listPartitionItem).toSql());
84-
sb.append(")");
95+
sb.append(" (\"version_info\" = \"");
96+
sb.append(partition.getVisibleVersion());
97+
sb.append("\");");
98+
} else {
99+
// unpartitioned.
85100
}
86-
sb.append("(\"version_info\" = \"");
87-
sb.append(partition.getVisibleVersion()).append("\"");
88-
sb.append(");");
89101
this.sql = sb.toString();
90102
}
91103

0 commit comments

Comments
 (0)