[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:
walter
2024-05-28 15:24:37 +08:00
committed by yiguolei
parent d97788dec8
commit efdce7e9b3

View File

@ -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();
}