[Bug](type) fix wildcard char's tostring get wrong result (#24041)

fix wildcard char's tostring get wrong result
This commit is contained in:
Pxl
2023-09-07 20:25:38 +08:00
committed by GitHub
parent f0bd2c9c53
commit ab7c2b9d22
4 changed files with 12 additions and 4 deletions

View File

@ -532,7 +532,7 @@ public class ScalarType extends Type {
public String toString() {
if (type == PrimitiveType.CHAR) {
if (isWildcardChar()) {
return "CHAR(*)";
return "CHARACTER";
}
return "CHAR(" + len + ")";
} else if (type == PrimitiveType.DECIMALV2) {
@ -567,7 +567,9 @@ public class ScalarType extends Type {
StringBuilder stringBuilder = new StringBuilder();
switch (type) {
case CHAR:
if (Strings.isNullOrEmpty(lenStr)) {
if (isWildcardVarchar()) {
stringBuilder.append("character");
} else if (Strings.isNullOrEmpty(lenStr)) {
stringBuilder.append("char").append("(").append(len).append(")");
} else {
stringBuilder.append("char").append("(`").append(lenStr).append("`)");

View File

@ -199,7 +199,7 @@ public class CreateFunctionTest {
Assert.assertTrue(constExprLists.get(0).get(0) instanceof StringLiteral);
queryStr = "select db1.to_char(k1, 4) from db1.tbl1;";
Assert.assertTrue(dorisAssert.query(queryStr).explainQuery().contains("CAST(`k1` AS CHAR(*))"));
Assert.assertTrue(dorisAssert.query(queryStr).explainQuery().contains("CAST(`k1` AS CHARACTER"));
}
@Test
@ -285,7 +285,7 @@ public class CreateFunctionTest {
testFunctionQuery(ctx, queryStr, true);
queryStr = "select to_char(k1, 4) from db2.tbl1;";
Assert.assertTrue(dorisAssert.query(queryStr).explainQuery().contains("CAST(`k1` AS CHAR(*))"));
Assert.assertTrue(dorisAssert.query(queryStr).explainQuery().contains("CAST(`k1` AS CHARACTER)"));
}
private void testFunctionQuery(ConnectContext ctx, String queryStr, Boolean isStringLiteral) throws Exception {

View File

@ -95,3 +95,6 @@
8008 8 0
8008 8008 0
-- !test --
a

View File

@ -346,5 +346,8 @@ suite("test_string_basic") {
test_string_cmp
order by s1, s2, counts;
"""
sql "drop view if exists char_view;"
sql "create view char_view as select cast('a' as CHARACTER);"
qt_test "select * from char_view";
}