[vectorized](function) support array_map function (#17581)

This commit is contained in:
zhangstar333
2023-03-15 10:51:29 +08:00
committed by GitHub
parent ca0367d846
commit 85080ee3c3
30 changed files with 1435 additions and 15 deletions

View File

@ -62,6 +62,7 @@ public enum PrimitiveType {
DATEV2("DATEV2", 4, TPrimitiveType.DATEV2),
DATETIMEV2("DATETIMEV2", 8, TPrimitiveType.DATETIMEV2),
TIMEV2("TIMEV2", 8, TPrimitiveType.TIMEV2),
LAMBDA_FUNCTION("LAMBDA_FUNCTION", 16, TPrimitiveType.LAMBDA_FUNCTION),
// sizeof(CollectionValue)
ARRAY("ARRAY", 32, TPrimitiveType.ARRAY),

View File

@ -180,6 +180,8 @@ public class ScalarType extends Type {
return BITMAP;
case QUANTILE_STATE:
return QUANTILE_STATE;
case LAMBDA_FUNCTION:
return LAMBDA_FUNCTION;
case DATE:
return DATE;
case DATETIME:
@ -246,6 +248,8 @@ public class ScalarType extends Type {
return BITMAP;
case "QUANTILE_STATE":
return QUANTILE_STATE;
case "LAMBDA_FUNCTION":
return LAMBDA_FUNCTION;
case "DATE":
return DATE;
case "DATETIME":
@ -619,6 +623,7 @@ public class ScalarType extends Type {
case BITMAP:
case VARIANT:
case QUANTILE_STATE:
case LAMBDA_FUNCTION:
stringBuilder.append(type.toString().toLowerCase());
break;
case STRING:

View File

@ -102,6 +102,7 @@ public abstract class Type {
public static final ScalarType CHAR = ScalarType.createCharType(-1);
public static final ScalarType BITMAP = new ScalarType(PrimitiveType.BITMAP);
public static final ScalarType QUANTILE_STATE = new ScalarType(PrimitiveType.QUANTILE_STATE);
public static final ScalarType LAMBDA_FUNCTION = new ScalarType(PrimitiveType.LAMBDA_FUNCTION);
// Only used for alias function, to represent any type in function args
public static final ScalarType ALL = new ScalarType(PrimitiveType.ALL);
public static final MapType MAP = new MapType();
@ -405,6 +406,10 @@ public abstract class Type {
return isScalarType(PrimitiveType.QUANTILE_STATE);
}
public boolean isLambdaFunctionType() {
return isScalarType(PrimitiveType.LAMBDA_FUNCTION);
}
public boolean isObjectStored() {
return isHllType() || isBitmapType() || isQuantileStateType();
}
@ -810,6 +815,8 @@ public abstract class Type {
return Type.QUANTILE_STATE;
case VARIANT:
return new VariantType();
case LAMBDA_FUNCTION:
return Type.LAMBDA_FUNCTION;
default:
return null;
}
@ -1585,7 +1592,8 @@ public abstract class Type {
|| t1 == PrimitiveType.STRUCT || t2 == PrimitiveType.STRUCT
|| t1 == PrimitiveType.TEMPLATE || t2 == PrimitiveType.TEMPLATE
|| t1 == PrimitiveType.UNSUPPORTED || t2 == PrimitiveType.UNSUPPORTED
|| t1 == PrimitiveType.VARIANT || t2 == PrimitiveType.VARIANT) {
|| t1 == PrimitiveType.VARIANT || t2 == PrimitiveType.VARIANT
|| t1 == PrimitiveType.LAMBDA_FUNCTION || t2 == PrimitiveType.LAMBDA_FUNCTION) {
continue;
}
Preconditions.checkNotNull(compatibilityMatrix[i][j]);