Skip to content

Commit

Permalink
[fix](compatibility) type toSql should return lowercase string (#38012)
Browse files Browse the repository at this point in the history
pick from master #38012
  • Loading branch information
morrySnow committed Jul 30, 2024
1 parent 0ad9600 commit ddd1cbf
Show file tree
Hide file tree
Showing 9 changed files with 61 additions and 59 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -73,14 +73,14 @@ public boolean getResultIsNullable() {
@Override
public String toSql(int depth) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("AGG_STATE(");
stringBuilder.append("agg_state(");
for (int i = 0; i < subTypes.size(); i++) {
if (i > 0) {
stringBuilder.append(", ");
}
stringBuilder.append(subTypes.get(i).toSql());
if (subTypeNullables.get(i)) {
stringBuilder.append(" NULL");
stringBuilder.append(" null");
}
}
stringBuilder.append(")");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,11 +130,13 @@ public static ArrayType create(Type type, boolean containsNull) {

@Override
public String toSql(int depth) {
StringBuilder typeStr = new StringBuilder();
typeStr.append("array<").append(itemType.toSql(depth + 1));
if (!containsNull) {
return "ARRAY<" + itemType.toSql(depth + 1) + " NOT NULL>";
} else {
return "ARRAY<" + itemType.toSql(depth + 1) + ">";
typeStr.append(" not null");
}
typeStr.append(">");
return typeStr.toString();
}

@Override
Expand Down Expand Up @@ -211,7 +213,7 @@ public boolean supportSubType(Type subType) {

@Override
public String toString() {
return String.format("ARRAY<%s>", itemType.toString());
return String.format("array<%s>", itemType.toString());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,9 +106,9 @@ public boolean equals(Object other) {
@Override
public String toSql(int depth) {
if (depth >= MAX_NESTING_DEPTH) {
return "MAP<...>";
return "map<...>";
}
return String.format("MAP<%s,%s>",
return String.format("map<%s,%s>",
keyType.toSql(depth + 1), valueType.toSql(depth + 1));
}

Expand Down Expand Up @@ -176,7 +176,7 @@ public Type specializeTemplateType(Type specificType, Map<String, Type> speciali

@Override
public String toString() {
return String.format("MAP<%s,%s>",
return String.format("map<%s,%s>",
keyType.toString(), valueType.toString());
}

Expand Down
76 changes: 38 additions & 38 deletions fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java
Original file line number Diff line number Diff line change
Expand Up @@ -578,34 +578,34 @@ public static ScalarType createHllType() {
public String toString() {
if (type == PrimitiveType.CHAR) {
if (isWildcardChar()) {
return "CHARACTER(" + MAX_CHAR_LENGTH + ")";
return "character(" + MAX_CHAR_LENGTH + ")";
}
return "CHAR(" + len + ")";
return "char(" + len + ")";
} else if (type == PrimitiveType.DECIMALV2) {
if (isWildcardDecimal()) {
return "DECIMAL(*, *)";
return "decimal(*,*)";
}
return "DECIMAL(" + precision + ", " + scale + ")";
return "decimal(" + precision + "," + scale + ")";
} else if (type.isDecimalV3Type()) {
if (isWildcardDecimal()) {
return "DECIMALV3(*, *)";
return "decimalv3(*,*)";
}
return "DECIMALV3(" + precision + ", " + scale + ")";
return "decimalv3(" + precision + "," + scale + ")";
} else if (type == PrimitiveType.DATETIMEV2) {
return "DATETIMEV2(" + scale + ")";
return "datetimev2(" + scale + ")";
} else if (type == PrimitiveType.TIMEV2) {
return "TIMEV2(" + scale + ")";
return "timev2(" + scale + ")";
} else if (type == PrimitiveType.VARCHAR) {
if (isWildcardVarchar()) {
return "VARCHAR(" + MAX_VARCHAR_LENGTH + ")";
return "varchar(" + MAX_VARCHAR_LENGTH + ")";
}
return "VARCHAR(" + len + ")";
return "varchar(" + len + ")";
} else if (type == PrimitiveType.STRING) {
return "TEXT";
return "text";
} else if (type == PrimitiveType.JSONB) {
return "JSON";
return "json";
}
return type.toString();
return type.toString().toLowerCase();
}

@Override
Expand All @@ -614,68 +614,68 @@ public String toSql(int depth) {
switch (type) {
case CHAR:
if (isWildcardChar()) {
stringBuilder.append("CHARACTER").append("(").append(MAX_CHAR_LENGTH).append(")");
stringBuilder.append("character").append("(").append(MAX_CHAR_LENGTH).append(")");
} else if (Strings.isNullOrEmpty(lenStr)) {
stringBuilder.append("CHAR").append("(").append(len).append(")");
stringBuilder.append("char").append("(").append(len).append(")");
} else {
stringBuilder.append("CHAR").append("(`").append(lenStr).append("`)");
stringBuilder.append("char").append("(`").append(lenStr).append("`)");
}
break;
case VARCHAR:
if (isWildcardVarchar()) {
return "VARCHAR(" + MAX_VARCHAR_LENGTH + ")";
return "varchar(" + MAX_VARCHAR_LENGTH + ")";
} else if (Strings.isNullOrEmpty(lenStr)) {
stringBuilder.append("VARCHAR").append("(").append(len).append(")");
stringBuilder.append("varchar").append("(").append(len).append(")");
} else {
stringBuilder.append("VARCHAR").append("(`").append(lenStr).append("`)");
stringBuilder.append("varchar").append("(`").append(lenStr).append("`)");
}
break;
case DECIMALV2:
if (Strings.isNullOrEmpty(precisionStr)) {
stringBuilder.append("DECIMAL").append("(").append(precision)
stringBuilder.append("decimal").append("(").append(precision)
.append(", ").append(scale).append(")");
} else if (!Strings.isNullOrEmpty(precisionStr) && !Strings.isNullOrEmpty(scaleStr)) {
stringBuilder.append("DECIMAL").append("(`").append(precisionStr)
stringBuilder.append("decimal").append("(`").append(precisionStr)
.append("`, `").append(scaleStr).append("`)");
} else {
stringBuilder.append("DECIMAL").append("(`").append(precisionStr).append("`)");
stringBuilder.append("decimal").append("(`").append(precisionStr).append("`)");
}
break;
case DECIMAL32:
case DECIMAL64:
case DECIMAL128:
String typeName = "DECIMALV3";
String typeName = "decimalv3";
if (Strings.isNullOrEmpty(precisionStr)) {
stringBuilder.append(typeName).append("(").append(precision)
.append(", ").append(scale).append(")");
.append(",").append(scale).append(")");
} else if (!Strings.isNullOrEmpty(precisionStr) && !Strings.isNullOrEmpty(scaleStr)) {
stringBuilder.append(typeName).append("(`").append(precisionStr)
.append("`, `").append(scaleStr).append("`)");
.append("`,`").append(scaleStr).append("`)");
} else {
stringBuilder.append(typeName).append("(`").append(precisionStr).append("`)");
}
break;
case DATETIMEV2:
stringBuilder.append("DATETIMEV2").append("(").append(scale).append(")");
stringBuilder.append("datetimev2").append("(").append(scale).append(")");
break;
case TIME:
stringBuilder.append("TIME");
stringBuilder.append("time");
break;
case TIMEV2:
stringBuilder.append("TIME").append("(").append(scale).append(")");
stringBuilder.append("TImE").append("(").append(scale).append(")");
break;
case BOOLEAN:
return "BOOLEAN";
return "boolean";
case TINYINT:
return "TINYINT";
return "tinyint";
case SMALLINT:
return "SMALLINT";
return "smallint";
case INT:
return "INT";
return "int";
case BIGINT:
return "BIGINT";
return "bigint";
case LARGEINT:
return "LARGEINT";
return "largeint";
case FLOAT:
case DOUBLE:
case DATE:
Expand All @@ -688,16 +688,16 @@ public String toSql(int depth) {
case LAMBDA_FUNCTION:
case ARRAY:
case NULL_TYPE:
stringBuilder.append(type);
stringBuilder.append(type.toString().toLowerCase());
break;
case STRING:
stringBuilder.append("TEXT");
stringBuilder.append("text");
break;
case JSONB:
stringBuilder.append("JSON");
stringBuilder.append("json");
break;
case AGG_STATE:
stringBuilder.append("AGG_STATE(UNKNOWN)");
stringBuilder.append("agg_state(unknown)");
break;
default:
stringBuilder.append("unknown type: ").append(type);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ public boolean getContainsNull() {
public String toSql(int depth) {
String typeSql;
if (depth < Type.MAX_NESTING_DEPTH) {
typeSql = !containsNull ? "not_null(" + type.toSql(depth) + ")" : type.toSql(depth);
typeSql = type.toSql(depth + 1) + (!containsNull ? " not null" : "");
} else {
typeSql = "...";
}
Expand All @@ -98,7 +98,7 @@ public String toSql(int depth) {
sb.append(":").append(typeSql);
}
if (StringUtils.isNotBlank(comment)) {
sb.append(String.format(" COMMENT '%s'", comment));
sb.append(String.format(" comment '%s'", comment));
}
return sb.toString();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,13 +79,13 @@ public StructType() {
@Override
public String toSql(int depth) {
if (depth >= MAX_NESTING_DEPTH) {
return "STRUCT<...>";
return "struct<...>";
}
ArrayList<String> fieldsSql = Lists.newArrayList();
for (StructField f : fields) {
fieldsSql.add(f.toSql(depth + 1));
}
return String.format("STRUCT<%s>", Joiner.on(",").join(fieldsSql));
return String.format("struct<%s>", Joiner.on(",").join(fieldsSql));
}

@Override
Expand Down Expand Up @@ -331,7 +331,7 @@ public String toString() {
for (StructField f : fields) {
fieldsSql.add(f.toString());
}
return String.format("STRUCT<%s>", Joiner.on(",").join(fieldsSql));
return String.format("struct<%s>", Joiner.on(",").join(fieldsSql));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,15 +132,15 @@ public void analyze(Analyzer analyzer) throws UserException {
"NONE"
);
if (column.getOriginType().isDatetimeV2()) {
StringBuilder typeStr = new StringBuilder("DATETIME");
StringBuilder typeStr = new StringBuilder("datetime");
if (((ScalarType) column.getOriginType()).getScalarScale() > 0) {
typeStr.append("(").append(((ScalarType) column.getOriginType()).getScalarScale()).append(")");
}
row.set(1, typeStr.toString());
} else if (column.getOriginType().isDateV2()) {
row.set(1, "DATE");
row.set(1, "date");
} else if (column.getOriginType().isDecimalV3()) {
StringBuilder typeStr = new StringBuilder("DECIMAL");
StringBuilder typeStr = new StringBuilder("decimal");
ScalarType sType = (ScalarType) column.getOriginType();
int scale = sType.getScalarScale();
int precision = sType.getScalarPrecision();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -735,7 +735,7 @@ public String toSql(boolean isUniqueTable, boolean isCompatible) {
} else if (type.isDateV2()) {
sb.append("date");
} else if (type.isDecimalV3()) {
sb.append("DECIMAL");
sb.append("decimal");
ScalarType sType = (ScalarType) type;
int scale = sType.getScalarScale();
int precision = sType.getScalarPrecision();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,17 +79,17 @@ public ProcResult fetchResult() throws AnalysisException {
extraStr);

if (column.getOriginType().isDateV2()) {
rowList.set(1, "DATE");
rowList.set(1, "date");
}
if (column.getOriginType().isDatetimeV2()) {
StringBuilder typeStr = new StringBuilder("DATETIME");
StringBuilder typeStr = new StringBuilder("datetime");
if (((ScalarType) column.getOriginType()).getScalarScale() > 0) {
typeStr.append("(").append(((ScalarType) column.getOriginType()).getScalarScale()).append(")");
}
rowList.set(1, typeStr.toString());
}
if (column.getOriginType().isDecimalV3()) {
StringBuilder typeStr = new StringBuilder("DECIMAL");
StringBuilder typeStr = new StringBuilder("decimal");
ScalarType sType = (ScalarType) column.getOriginType();
int scale = sType.getScalarScale();
int precision = sType.getScalarPrecision();
Expand Down

0 comments on commit ddd1cbf

Please sign in to comment.