[improvement](Variant Type) Support displaying subcolumns expanded for the variant column (#27764)

This commit is contained in:
Sun Chenyang
2023-12-08 20:34:58 +08:00
committed by GitHub
parent 51f320a606
commit 573b594df3
23 changed files with 1163 additions and 7 deletions

View File

@ -123,6 +123,7 @@ public abstract class Type {
public static final ScalarType VARIANT = new ScalarType(PrimitiveType.VARIANT);
public static final AnyType ANY_STRUCT_TYPE = new AnyStructType();
public static final AnyType ANY_ELEMENT_TYPE = new AnyElementType();
private static final Map<String, Type> typeMap = new HashMap<>();
private static final Logger LOG = LogManager.getLogger(Type.class);
private static final ArrayList<ScalarType> integerTypes;
@ -135,6 +136,43 @@ public abstract class Type {
private static final ArrayList<Type> structSubTypes;
private static final ArrayList<ScalarType> trivialTypes;
static {
typeMap.put("TINYINT", Type.TINYINT);
typeMap.put("SMALLINT", Type.SMALLINT);
typeMap.put("INT", Type.INT);
typeMap.put("BIGINT", Type.BIGINT);
typeMap.put("LARGEINT", Type.LARGEINT);
typeMap.put("UNSIGNED_TINYINT", Type.UNSUPPORTED);
typeMap.put("UNSIGNED_SMALLINT", Type.UNSUPPORTED);
typeMap.put("UNSIGNED_INT", Type.UNSUPPORTED);
typeMap.put("UNSIGNED_BIGINT", Type.UNSUPPORTED);
typeMap.put("FLOAT", Type.FLOAT);
typeMap.put("DISCRETE_DOUBLE", Type.DOUBLE);
typeMap.put("DOUBLE", Type.DOUBLE);
typeMap.put("CHAR", Type.CHAR);
typeMap.put("DATE", Type.DATE);
typeMap.put("DATEV2", Type.DATEV2);
typeMap.put("DATETIMEV2", Type.DATETIMEV2);
typeMap.put("DATETIME", Type.DATETIME);
typeMap.put("DECIMAL32", Type.DECIMAL32);
typeMap.put("DECIMAL64", Type.DECIMAL64);
typeMap.put("DECIMAL128I", Type.DECIMAL128);
typeMap.put("DECIMAL", Type.DECIMALV2);
typeMap.put("VARCHAR", Type.VARCHAR);
typeMap.put("STRING", Type.STRING);
typeMap.put("JSONB", Type.JSONB);
typeMap.put("VARIANT", Type.VARIANT);
typeMap.put("BOOLEAN", Type.BOOLEAN);
typeMap.put("HLL", Type.HLL);
typeMap.put("STRUCT", Type.STRUCT);
typeMap.put("LIST", Type.UNSUPPORTED);
typeMap.put("MAP", Type.MAP);
typeMap.put("OBJECT", Type.UNSUPPORTED);
typeMap.put("ARRAY", Type.ARRAY);
typeMap.put("QUANTILE_STATE", Type.QUANTILE_STATE);
typeMap.put("AGG_STATE", Type.AGG_STATE);
}
static {
integerTypes = Lists.newArrayList();
integerTypes.add(TINYINT);
@ -2251,5 +2289,9 @@ public abstract class Type {
}
return false;
}
public static Type getTypeFromTypeName(String typeName) {
return typeMap.getOrDefault(typeName, Type.UNSUPPORTED);
}
}