[Fix](Show-Delete)Missing Delete job information causes query exception (#30092)

This commit is contained in:
Calvin Kirs
2024-01-19 09:51:34 +08:00
committed by yiguolei
parent 097641b543
commit ad111be2d1
3 changed files with 80 additions and 9 deletions

View File

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

View File

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