[improvement](group commit) make get column function more reliable when replaying wal (#28900)
This commit is contained in:
@ -114,6 +114,7 @@ import org.apache.doris.thrift.TCheckAuthRequest;
|
||||
import org.apache.doris.thrift.TCheckAuthResult;
|
||||
import org.apache.doris.thrift.TColumnDef;
|
||||
import org.apache.doris.thrift.TColumnDesc;
|
||||
import org.apache.doris.thrift.TColumnInfo;
|
||||
import org.apache.doris.thrift.TCommitTxnRequest;
|
||||
import org.apache.doris.thrift.TCommitTxnResult;
|
||||
import org.apache.doris.thrift.TConfirmUnusedRemoteFilesRequest;
|
||||
@ -240,7 +241,6 @@ import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
@ -3280,40 +3280,38 @@ public class FrontendServiceImpl implements FrontendService.Iface {
|
||||
@Override
|
||||
public TGetColumnInfoResult getColumnInfo(TGetColumnInfoRequest request) {
|
||||
TGetColumnInfoResult result = new TGetColumnInfoResult();
|
||||
TStatus errorStatus = new TStatus(TStatusCode.RUNTIME_ERROR);
|
||||
TStatus status = new TStatus(TStatusCode.OK);
|
||||
result.setStatus(status);
|
||||
long dbId = request.getDbId();
|
||||
long tableId = request.getTableId();
|
||||
if (!Env.getCurrentEnv().isMaster()) {
|
||||
errorStatus.setStatusCode(TStatusCode.NOT_MASTER);
|
||||
errorStatus.addToErrorMsgs(NOT_MASTER_ERR_MSG);
|
||||
status.setStatusCode(TStatusCode.NOT_MASTER);
|
||||
status.addToErrorMsgs(NOT_MASTER_ERR_MSG);
|
||||
LOG.error("failed to getColumnInfo: {}", NOT_MASTER_ERR_MSG);
|
||||
return result;
|
||||
}
|
||||
|
||||
Database db = Env.getCurrentEnv().getInternalCatalog().getDbNullable(dbId);
|
||||
Database db = Env.getCurrentInternalCatalog().getDbNullable(dbId);
|
||||
if (db == null) {
|
||||
errorStatus.setErrorMsgs(Lists.newArrayList(String.format("dbId=%d is not exists", dbId)));
|
||||
result.setStatus(errorStatus);
|
||||
status.setStatusCode(TStatusCode.NOT_FOUND);
|
||||
status.setErrorMsgs(Lists.newArrayList(String.format("dbId=%d is not exists", dbId)));
|
||||
return result;
|
||||
}
|
||||
|
||||
Table table;
|
||||
try {
|
||||
table = db.getTable(tableId).get();
|
||||
} catch (NoSuchElementException e) {
|
||||
errorStatus.setErrorMsgs(
|
||||
Table table = db.getTableNullable(tableId);
|
||||
if (table == null) {
|
||||
status.setStatusCode(TStatusCode.NOT_FOUND);
|
||||
status.setErrorMsgs(
|
||||
(Lists.newArrayList(String.format("dbId=%d tableId=%d is not exists", dbId, tableId))));
|
||||
result.setStatus(errorStatus);
|
||||
return result;
|
||||
}
|
||||
StringBuilder sb = new StringBuilder();
|
||||
List<TColumnInfo> columnsResult = Lists.newArrayList();
|
||||
for (Column column : table.getBaseSchema(true)) {
|
||||
sb.append(column.getName() + ":" + column.getUniqueId() + ",");
|
||||
final TColumnInfo info = new TColumnInfo();
|
||||
info.setColumnName(column.getName());
|
||||
info.setColumnId(column.getUniqueId());
|
||||
columnsResult.add(info);
|
||||
}
|
||||
String columnInfo = sb.toString();
|
||||
columnInfo = columnInfo.substring(0, columnInfo.length() - 1);
|
||||
result.setStatus(new TStatus(TStatusCode.OK));
|
||||
result.setColumnInfo(columnInfo);
|
||||
result.setColumns(columnsResult);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user