[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
This commit is contained in:
@ -22,6 +22,7 @@ import org.apache.doris.catalog.ListPartitionItem;
|
||||
import org.apache.doris.catalog.Partition;
|
||||
import org.apache.doris.catalog.PartitionItem;
|
||||
import org.apache.doris.catalog.PartitionKey;
|
||||
import org.apache.doris.catalog.RangePartitionItem;
|
||||
import org.apache.doris.catalog.ReplicaAllocation;
|
||||
import org.apache.doris.persist.PartitionPersistInfo;
|
||||
import org.apache.doris.persist.gson.GsonUtils;
|
||||
@ -69,23 +70,34 @@ public class AddPartitionRecord {
|
||||
this.isMutable = partitionPersistInfo.isMutable();
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("ADD PARTITION ").append("`").append(partition.getName()).append("`").append(" VALUES ");
|
||||
if (this.listPartitionItem.equals(ListPartitionItem.DUMMY_ITEM)) {
|
||||
sb.append("ADD ");
|
||||
if (isTempPartition) {
|
||||
sb.append("TEMPORARY ");
|
||||
}
|
||||
sb.append("PARTITION `");
|
||||
sb.append(partition.getName());
|
||||
sb.append("` ");
|
||||
|
||||
// See fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java:addPartition for details.
|
||||
if (!this.range.equals(RangePartitionItem.DUMMY_ITEM)) {
|
||||
// range
|
||||
sb.append("[");
|
||||
sb.append("VALUES [");
|
||||
sb.append(range.lowerEndpoint().toSql());
|
||||
sb.append(", ");
|
||||
sb.append(range.upperEndpoint().toSql());
|
||||
sb.append(")");
|
||||
} else {
|
||||
sb.append(") (\"version_info\" = \"");
|
||||
sb.append(partition.getVisibleVersion());
|
||||
sb.append("\");");
|
||||
} else if (!this.listPartitionItem.equals(ListPartitionItem.DUMMY_ITEM)) {
|
||||
// list
|
||||
sb.append("IN (");
|
||||
sb.append("VALUES IN ");
|
||||
sb.append(((ListPartitionItem) listPartitionItem).toSql());
|
||||
sb.append(")");
|
||||
sb.append(" (\"version_info\" = \"");
|
||||
sb.append(partition.getVisibleVersion());
|
||||
sb.append("\");");
|
||||
} else {
|
||||
// unpartitioned.
|
||||
}
|
||||
sb.append("(\"version_info\" = \"");
|
||||
sb.append(partition.getVisibleVersion()).append("\"");
|
||||
sb.append(");");
|
||||
this.sql = sb.toString();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user