[BugFix](table-value-function) Fix backends() tvf (#19452)
Change the `Alive/SystemDecommissioned/ClusterDecommissioned` field type of the `backends()`tvf to bool
This commit is contained in:
@ -110,9 +110,9 @@ public class BackendsTableValuedFunction extends MetadataTableValuedFunction {
|
||||
resColumns.add(new Column("BrpcPort", ScalarType.createType(PrimitiveType.INT)));
|
||||
resColumns.add(new Column("LastStartTime", ScalarType.createStringType()));
|
||||
resColumns.add(new Column("LastHeartbeat", ScalarType.createStringType()));
|
||||
resColumns.add(new Column("Alive", ScalarType.createStringType()));
|
||||
resColumns.add(new Column("SystemDecommissioned", ScalarType.createStringType()));
|
||||
resColumns.add(new Column("ClusterDecommissioned", ScalarType.createStringType()));
|
||||
resColumns.add(new Column("Alive", ScalarType.createType(PrimitiveType.BOOLEAN)));
|
||||
resColumns.add(new Column("SystemDecommissioned", ScalarType.createType(PrimitiveType.BOOLEAN)));
|
||||
resColumns.add(new Column("ClusterDecommissioned", ScalarType.createType(PrimitiveType.BOOLEAN)));
|
||||
resColumns.add(new Column("TabletNum", ScalarType.createType(PrimitiveType.BIGINT)));
|
||||
resColumns.add(new Column("DataUsedCapacity", ScalarType.createType(PrimitiveType.BIGINT)));
|
||||
resColumns.add(new Column("AvailCapacity", ScalarType.createType(PrimitiveType.BIGINT)));
|
||||
|
||||
@ -19,6 +19,7 @@ package org.apache.doris.tablefunction;
|
||||
|
||||
import org.apache.doris.alter.DecommissionType;
|
||||
import org.apache.doris.catalog.Env;
|
||||
import org.apache.doris.common.AnalysisException;
|
||||
import org.apache.doris.common.MetaNotFoundException;
|
||||
import org.apache.doris.common.util.TimeUtils;
|
||||
import org.apache.doris.datasource.HMSExternalCatalog;
|
||||
@ -47,6 +48,7 @@ import org.apache.iceberg.Snapshot;
|
||||
import org.apache.iceberg.catalog.TableIdentifier;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.apache.thrift.TException;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.time.Instant;
|
||||
@ -59,7 +61,7 @@ import java.util.concurrent.TimeUnit;
|
||||
public class MetadataGenerator {
|
||||
private static final Logger LOG = LogManager.getLogger(MetadataGenerator.class);
|
||||
|
||||
public static TFetchSchemaTableDataResult getMetadataTable(TFetchSchemaTableDataRequest request) {
|
||||
public static TFetchSchemaTableDataResult getMetadataTable(TFetchSchemaTableDataRequest request) throws TException {
|
||||
if (!request.isSetMetadaTableParams()) {
|
||||
return errorResult("Metadata table params is not set. ");
|
||||
}
|
||||
@ -179,17 +181,18 @@ public class MetadataGenerator {
|
||||
}
|
||||
trow.addToColumnValue(new TCell().setStringVal(TimeUtils.longToTimeString(backend.getLastStartTime())));
|
||||
trow.addToColumnValue(new TCell().setStringVal(TimeUtils.longToTimeString(backend.getLastUpdateMs())));
|
||||
trow.addToColumnValue(new TCell().setStringVal(String.valueOf(backend.isAlive())));
|
||||
trow.addToColumnValue(new TCell().setBoolVal(backend.isAlive()));
|
||||
|
||||
if (backend.isDecommissioned() && backend.getDecommissionType() == DecommissionType.ClusterDecommission) {
|
||||
trow.addToColumnValue(new TCell().setStringVal("false"));
|
||||
trow.addToColumnValue(new TCell().setStringVal("true"));
|
||||
trow.addToColumnValue(new TCell().setBoolVal(false));
|
||||
trow.addToColumnValue(new TCell().setBoolVal(true));
|
||||
} else if (backend.isDecommissioned()
|
||||
&& backend.getDecommissionType() == DecommissionType.SystemDecommission) {
|
||||
trow.addToColumnValue(new TCell().setStringVal("true"));
|
||||
trow.addToColumnValue(new TCell().setStringVal("false"));
|
||||
trow.addToColumnValue(new TCell().setBoolVal(true));
|
||||
trow.addToColumnValue(new TCell().setBoolVal(false));
|
||||
} else {
|
||||
trow.addToColumnValue(new TCell().setStringVal("false"));
|
||||
trow.addToColumnValue(new TCell().setStringVal("false"));
|
||||
trow.addToColumnValue(new TCell().setBoolVal(false));
|
||||
trow.addToColumnValue(new TCell().setBoolVal(false));
|
||||
}
|
||||
trow.addToColumnValue(new TCell().setLongVal(tabletNum));
|
||||
|
||||
@ -266,27 +269,18 @@ public class MetadataGenerator {
|
||||
}
|
||||
|
||||
private static void filterColumns(TFetchSchemaTableDataResult result,
|
||||
List<String> columnNames, TMetadataType type) {
|
||||
List<String> columnNames, TMetadataType type) throws TException {
|
||||
List<TRow> fullColumnsRow = result.getDataBatch();
|
||||
List<TRow> filterColumnsRows = Lists.newArrayList();
|
||||
for (TRow row : fullColumnsRow) {
|
||||
TRow filterRow = new TRow();
|
||||
for (String columnName : columnNames) {
|
||||
Integer index = 0;
|
||||
switch (type) {
|
||||
case ICEBERG:
|
||||
index = IcebergTableValuedFunction.getColumnIndexFromColumnName(columnName);
|
||||
break;
|
||||
case BACKENDS:
|
||||
index = BackendsTableValuedFunction.getColumnIndexFromColumnName(columnName);
|
||||
break;
|
||||
case RESOURCE_GROUPS:
|
||||
index = ResourceGroupsTableValuedFunction.getColumnIndexFromColumnName(columnName);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
try {
|
||||
for (String columnName : columnNames) {
|
||||
Integer index = MetadataTableValuedFunction.getColumnIndexFromColumnName(type, columnName);
|
||||
filterRow.addToColumnValue(row.getColumnValue().get(index));
|
||||
}
|
||||
filterRow.addToColumnValue(row.getColumnValue().get(index));
|
||||
} catch (AnalysisException e) {
|
||||
throw new TException(e);
|
||||
}
|
||||
filterColumnsRows.add(filterRow);
|
||||
}
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
package org.apache.doris.tablefunction;
|
||||
|
||||
import org.apache.doris.analysis.TupleDescriptor;
|
||||
import org.apache.doris.common.AnalysisException;
|
||||
import org.apache.doris.planner.PlanNodeId;
|
||||
import org.apache.doris.planner.ScanNode;
|
||||
import org.apache.doris.planner.external.MetadataScanNode;
|
||||
@ -25,6 +26,20 @@ import org.apache.doris.thrift.TMetaScanRange;
|
||||
import org.apache.doris.thrift.TMetadataType;
|
||||
|
||||
public abstract class MetadataTableValuedFunction extends TableValuedFunctionIf {
|
||||
public static Integer getColumnIndexFromColumnName(TMetadataType type, String columnName)
|
||||
throws AnalysisException {
|
||||
switch (type) {
|
||||
case BACKENDS:
|
||||
return BackendsTableValuedFunction.getColumnIndexFromColumnName(columnName);
|
||||
case ICEBERG:
|
||||
return IcebergTableValuedFunction.getColumnIndexFromColumnName(columnName);
|
||||
case RESOURCE_GROUPS:
|
||||
return ResourceGroupsTableValuedFunction.getColumnIndexFromColumnName(columnName);
|
||||
default:
|
||||
throw new AnalysisException("Unknown Metadata TableValuedFunction type");
|
||||
}
|
||||
}
|
||||
|
||||
public abstract TMetadataType getMetadataType();
|
||||
|
||||
public abstract TMetaScanRange getMetaScanRange();
|
||||
|
||||
Reference in New Issue
Block a user