blob: 9bc5ff7da0fd0e589be41086c3fbe1520ced1fbe [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package org.apache.doris.binlog;
import org.apache.doris.catalog.DataProperty;
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.ReplicaAllocation;
import org.apache.doris.persist.PartitionPersistInfo;
import org.apache.doris.persist.gson.GsonUtils;
import com.google.common.collect.Range;
import com.google.gson.annotations.SerializedName;
public class AddPartitionRecord {
@SerializedName(value = "commitSeq")
private long commitSeq;
@SerializedName(value = "dbId")
private long dbId;
@SerializedName(value = "tableId")
private long tableId;
@SerializedName(value = "partition")
private Partition partition;
@SerializedName(value = "range")
private Range<PartitionKey> range;
@SerializedName(value = "listPartitionItem")
private PartitionItem listPartitionItem;
@SerializedName(value = "dataProperty")
private DataProperty dataProperty;
@SerializedName(value = "replicaAlloc")
private ReplicaAllocation replicaAlloc;
@SerializedName(value = "isInMemory")
private boolean isInMemory = false;
@SerializedName(value = "isTempPartition")
private boolean isTempPartition = false;
@SerializedName(value = "isMutable")
private boolean isMutable = true;
@SerializedName(value = "sql")
private String sql;
public AddPartitionRecord(long commitSeq, PartitionPersistInfo partitionPersistInfo) {
this.commitSeq = commitSeq;
this.dbId = partitionPersistInfo.getDbId();
this.tableId = partitionPersistInfo.getTableId();
this.partition = partitionPersistInfo.getPartition();
this.range = partitionPersistInfo.getRange();
this.listPartitionItem = partitionPersistInfo.getListPartitionItem();
this.dataProperty = partitionPersistInfo.getDataProperty();
this.replicaAlloc = partitionPersistInfo.getReplicaAlloc();
this.isInMemory = partitionPersistInfo.isInMemory();
this.isTempPartition = partitionPersistInfo.isTempPartition();
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)) {
// range
sb.append("[");
sb.append(range.lowerEndpoint().toSql());
sb.append(", ");
sb.append(range.upperEndpoint().toSql());
sb.append(")");
} else {
// list
sb.append("IN (");
sb.append(((ListPartitionItem) listPartitionItem).toSql());
sb.append(")");
}
sb.append("(\"version_info\" = \"");
sb.append(partition.getVisibleVersion()).append("\"");
sb.append(");");
this.sql = sb.toString();
}
public long getCommitSeq() {
return commitSeq;
}
public long getDbId() {
return dbId;
}
public long getTableId() {
return tableId;
}
public String toJson() {
return GsonUtils.GSON.toJson(this);
}
@Override
public String toString() {
return toJson();
}
}