[Fix](Show-Delete)Missing Delete job information causes query exception (#30092)
This commit is contained in:
@ -60,12 +60,19 @@ public class DeleteInfo implements Writable, GsonPostProcessable {
|
||||
@SerializedName(value = "partitionName")
|
||||
private String partitionName;
|
||||
|
||||
public DeleteInfo(long dbId, long tableId, String tableName, List<String> deleteConditions) {
|
||||
public DeleteInfo(long dbId, long tableId, String tableName, List<String> deleteConditions,
|
||||
boolean noPartitionSpecified, List<Long> partitionIds, List<String> partitionNames) {
|
||||
this.dbId = dbId;
|
||||
this.tableId = tableId;
|
||||
this.tableName = tableName;
|
||||
this.deleteConditions = deleteConditions;
|
||||
this.createTimeMs = System.currentTimeMillis();
|
||||
this.noPartitionSpecified = noPartitionSpecified;
|
||||
if (!noPartitionSpecified) {
|
||||
Preconditions.checkState(partitionIds.size() == partitionNames.size());
|
||||
this.partitionIds = partitionIds;
|
||||
this.partitionNames = partitionNames;
|
||||
}
|
||||
}
|
||||
|
||||
public long getDbId() {
|
||||
@ -92,13 +99,6 @@ public class DeleteInfo implements Writable, GsonPostProcessable {
|
||||
return noPartitionSpecified;
|
||||
}
|
||||
|
||||
public void setPartitions(boolean noPartitionSpecified, List<Long> partitionIds, List<String> partitionNames) {
|
||||
this.noPartitionSpecified = noPartitionSpecified;
|
||||
Preconditions.checkState(partitionIds.size() == partitionNames.size());
|
||||
this.partitionIds = partitionIds;
|
||||
this.partitionNames = partitionNames;
|
||||
}
|
||||
|
||||
public List<Long> getPartitionIds() {
|
||||
return partitionIds;
|
||||
}
|
||||
|
||||
@ -490,6 +490,7 @@ public class DeleteJob extends AbstractTxnStateChangeCallback implements DeleteJ
|
||||
public static class Builder {
|
||||
|
||||
public DeleteJob buildWith(BuildParams params) throws Exception {
|
||||
boolean noPartitionSpecified = params.getPartitionNames().isEmpty();
|
||||
List<Partition> partitions = getSelectedPartitions(params.getTable(),
|
||||
params.getPartitionNames(), params.getDeleteConditions());
|
||||
Map<Long, Short> partitionReplicaNum = partitions.stream()
|
||||
@ -504,8 +505,11 @@ public class DeleteJob extends AbstractTxnStateChangeCallback implements DeleteJ
|
||||
String label = DELETE_PREFIX + UUID.randomUUID();
|
||||
//generate jobId
|
||||
long jobId = Env.getCurrentEnv().getNextId();
|
||||
List<String> partitionNames = partitions.stream().map(Partition::getName).collect(Collectors.toList());
|
||||
List<Long> partitionIds = partitions.stream().map(Partition::getId).collect(Collectors.toList());
|
||||
DeleteInfo deleteInfo = new DeleteInfo(params.getDb().getId(), params.getTable().getId(),
|
||||
params.getTable().getName(), getDeleteCondString(params.getDeleteConditions()));
|
||||
params.getTable().getName(), getDeleteCondString(params.getDeleteConditions()),
|
||||
noPartitionSpecified, partitionIds, partitionNames);
|
||||
DeleteJob deleteJob = new DeleteJob(jobId, -1, label, partitionReplicaNum, deleteInfo);
|
||||
long replicaNum = partitions.stream().mapToLong(Partition::getAllReplicaCount).sum();
|
||||
deleteJob.setPartitions(partitions);
|
||||
|
||||
Reference in New Issue
Block a user