diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/ScalarType.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/ScalarType.java index 3cd713b507..4564af5094 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/ScalarType.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/ScalarType.java @@ -557,9 +557,6 @@ public class ScalarType extends Type { } break; case DECIMALV2: - case DECIMAL32: - case DECIMAL64: - case DECIMAL128: if (Strings.isNullOrEmpty(precisionStr)) { stringBuilder.append("decimal").append("(").append(precision) .append(", ").append(scale).append(")"); @@ -570,6 +567,20 @@ public class ScalarType extends Type { stringBuilder.append("decimal").append("(`").append(precisionStr).append("`)"); } break; + case DECIMAL32: + case DECIMAL64: + case DECIMAL128: + String typeName = Config.enable_decimal_conversion ? "decimal" : "decimalv3"; + if (Strings.isNullOrEmpty(precisionStr)) { + stringBuilder.append(typeName).append("(").append(precision) + .append(", ").append(scale).append(")"); + } else if (!Strings.isNullOrEmpty(precisionStr) && !Strings.isNullOrEmpty(scaleStr)) { + stringBuilder.append(typeName).append("(`").append(precisionStr) + .append("`, `").append(scaleStr).append("`)"); + } else { + stringBuilder.append(typeName).append("(`").append(precisionStr).append("`)"); + } + break; case DATETIMEV2: stringBuilder.append("datetime").append("(").append(scale).append(")"); break; diff --git a/regression-test/data/decimalv3/test_decimalv3.out b/regression-test/data/decimalv3/test_decimalv3.out new file mode 100644 index 0000000000..1bb8b045c0 --- /dev/null +++ b/regression-test/data/decimalv3/test_decimalv3.out @@ -0,0 +1,4 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !decimalv3 -- +100.000000000000000000 + diff --git a/regression-test/suites/decimalv3/test_decimalv3.groovy b/regression-test/suites/decimalv3/test_decimalv3.groovy new file mode 100644 index 0000000000..374e554b93 --- /dev/null +++ b/regression-test/suites/decimalv3/test_decimalv3.groovy @@ -0,0 +1,29 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +suite("test_decimalv3") { + def db = "test_decimalv3_db" + sql "CREATE DATABASE IF NOT EXISTS ${db}" + sql "use ${db}" + sql "drop table if exists test5" + sql '''CREATE TABLE test5 ( `a` decimalv3(38,18), `b` decimalv3(38,18) ) ENGINE=OLAP DUPLICATE KEY(`a`) COMMENT 'OLAP' DISTRIBUTED BY HASH(`a`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1" ) ''' + sql "insert into test5 values(50,2)" + sql "drop view if exists test5_v" + sql "create view test5_v (amout) as select cast(a*b as decimalv3(38,18)) from test5" + + qt_decimalv3 "select * from test5_v" +}