[FIX](collectiontype) fix collection type with char which without length (#25703)
fix create complex type like array/map/struct with char which without length
This commit is contained in:
@ -312,22 +312,6 @@ public class ColumnDef {
|
||||
}
|
||||
FeNameFormat.checkColumnName(name);
|
||||
|
||||
// When string type length is not assigned, it needs to be assigned to 1.
|
||||
if (typeDef.getType().isScalarType()) {
|
||||
final ScalarType targetType = (ScalarType) typeDef.getType();
|
||||
if (targetType.getPrimitiveType().isStringType() && !targetType.isLengthSet()) {
|
||||
if (targetType.getPrimitiveType() == PrimitiveType.VARCHAR) {
|
||||
// always set varchar length MAX_VARCHAR_LENGTH
|
||||
targetType.setLength(ScalarType.MAX_VARCHAR_LENGTH);
|
||||
} else if (targetType.getPrimitiveType() == PrimitiveType.STRING) {
|
||||
// always set text length MAX_STRING_LENGTH
|
||||
targetType.setLength(ScalarType.MAX_STRING_LENGTH);
|
||||
} else {
|
||||
targetType.setLength(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
typeDef.analyze(null);
|
||||
|
||||
Type type = typeDef.getType();
|
||||
|
||||
@ -177,15 +177,24 @@ public class TypeDef implements ParseNode {
|
||||
parent.getPrimitiveType() + " unsupported sub-type: " + child.toSql());
|
||||
}
|
||||
|
||||
if (child.getPrimitiveType().isStringType() && !child.isLengthSet()) {
|
||||
child.setLength(1);
|
||||
}
|
||||
analyze(child);
|
||||
}
|
||||
|
||||
private void analyzeScalarType(ScalarType scalarType)
|
||||
throws AnalysisException {
|
||||
PrimitiveType type = scalarType.getPrimitiveType();
|
||||
// When string type length is not assigned, it needs to be assigned to 1.
|
||||
if (scalarType.getPrimitiveType().isStringType() && !scalarType.isLengthSet()) {
|
||||
if (scalarType.getPrimitiveType() == PrimitiveType.VARCHAR) {
|
||||
// always set varchar length MAX_VARCHAR_LENGTH
|
||||
scalarType.setLength(ScalarType.MAX_VARCHAR_LENGTH);
|
||||
} else if (scalarType.getPrimitiveType() == PrimitiveType.STRING) {
|
||||
// always set text length MAX_STRING_LENGTH
|
||||
scalarType.setLength(ScalarType.MAX_STRING_LENGTH);
|
||||
} else {
|
||||
scalarType.setLength(1);
|
||||
}
|
||||
}
|
||||
switch (type) {
|
||||
case CHAR:
|
||||
case VARCHAR: {
|
||||
|
||||
Reference in New Issue
Block a user