This is an automated email from the ASF dual-hosted git repository. morningman pushed a commit to branch branch-2.0-alpha in repository https://gitbox.apache.org/repos/asf/doris.git
commit 2f6f3ff208ca1ab8ebf915fd10e24365693dd052 Author: Gabriel <[email protected]> AuthorDate: Wed Apr 19 11:34:27 2023 +0800 [minor](decimal) forbid to create table with decimal type exceeds 18 (#18763) * [minor](decimal) forbid to create table with decimal type exceeds 18 * update --- .../java/org/apache/doris/analysis/TypeDef.java | 8 ++++++-- .../account_p0/test_information_schema.groovy | 6 +++--- .../test_outer_join_with_subquery.groovy | 24 +++++++++++----------- .../test_outer_join_with_inline_view.groovy | 2 +- .../stream_load/test_parquet_orc_case.groovy | 4 ++-- .../suites/mysql_ssl_p0/test_ssl_wild.groovy | 10 ++++----- .../test_array_aggregation_functions.groovy | 2 +- .../test_array_aggregation_functions.groovy | 2 +- 8 files changed, 31 insertions(+), 27 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/TypeDef.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/TypeDef.java index c75259050d..5eae5d57ba 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/TypeDef.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/TypeDef.java @@ -194,15 +194,19 @@ public class TypeDef implements ParseNode { int precision = scalarType.decimalPrecision(); int scale = scalarType.decimalScale(); // precision: [1, 27] - if (precision < 1 || precision > 27) { + if (precision < 1 || precision > ScalarType.MAX_DECIMALV2_PRECISION) { throw new AnalysisException("Precision of decimal must between 1 and 27." + " Precision was set to: " + precision + "."); } // scale: [0, 9] - if (scale < 0 || scale > 9) { + if (scale < 0 || scale > ScalarType.MAX_DECIMALV2_SCALE) { throw new AnalysisException( "Scale of decimal must between 0 and 9." + " Scale was set to: " + scale + "."); } + if (precision - scale > ScalarType.MAX_DECIMALV2_PRECISION - ScalarType.MAX_DECIMALV2_SCALE) { + throw new AnalysisException("Invalid decimal type with precision = " + precision + ", scale = " + + scale); + } // scale < precision if (scale > precision) { throw new AnalysisException("Scale of decimal must be smaller than precision." diff --git a/regression-test/suites/account_p0/test_information_schema.groovy b/regression-test/suites/account_p0/test_information_schema.groovy index 49f9fffb3e..dcbc0c3532 100644 --- a/regression-test/suites/account_p0/test_information_schema.groovy +++ b/regression-test/suites/account_p0/test_information_schema.groovy @@ -45,9 +45,9 @@ suite("test_information_schema") { `qqq` varchar(130) NULL COMMENT "", `rrr` bigint(20) NULL COMMENT "", `sss` bigint(20) NULL COMMENT "", - `ttt` decimal(24, 2) NULL COMMENT "", - `uuu` decimal(24, 2) NULL COMMENT "", - `vvv` decimal(24, 2) NULL COMMENT "", + `ttt` decimal(20, 2) NULL COMMENT "", + `uuu` decimal(20, 2) NULL COMMENT "", + `vvv` decimal(20, 2) NULL COMMENT "", `www` varchar(50) NULL COMMENT "", `xxx` varchar(190) NULL COMMENT "", `yyy` varchar(190) NULL COMMENT "", diff --git a/regression-test/suites/correctness/test_outer_join_with_subquery.groovy b/regression-test/suites/correctness/test_outer_join_with_subquery.groovy index 1471f6965a..fd2ce0b7e8 100644 --- a/regression-test/suites/correctness/test_outer_join_with_subquery.groovy +++ b/regression-test/suites/correctness/test_outer_join_with_subquery.groovy @@ -44,21 +44,21 @@ `datatimev2_2` datetimev2(3) NOT NULL COMMENT "", `datatimev2_3` datetimev2(6) NOT NULL COMMENT "", `employee` int(11) NULL COMMENT "", - `oper_rev` decimal(27, 2) NULL COMMENT "", - `net_profit` decimal(27, 2) NULL COMMENT "", - `roe_diluted` decimal(27, 2) NULL COMMENT "", - `roe_forecast1` decimal(27, 2) NULL COMMENT "", - `roe_forecast2` decimal(27, 2) NULL COMMENT "", - `roe_forecast3` decimal(27, 2) NULL COMMENT "", + `oper_rev` decimal(20, 2) NULL COMMENT "", + `net_profit` decimal(20, 2) NULL COMMENT "", + `roe_diluted` decimal(20, 2) NULL COMMENT "", + `roe_forecast1` decimal(20, 2) NULL COMMENT "", + `roe_forecast2` decimal(20, 2) NULL COMMENT "", + `roe_forecast3` decimal(20, 2) NULL COMMENT "", `segment_sales_industry` varchar(2000) NULL COMMENT "", `segment_sales_product` varchar(2000) NULL COMMENT "", `segment_sales_region` varchar(2000) NULL COMMENT "", - `cont_liab` decimal(27, 2) NULL COMMENT "", - `rd_exp` decimal(27, 2) NULL COMMENT "", - `cash_end_bal_cf` decimal(27, 2) NULL COMMENT "", - `deductedprofit` decimal(27, 2) NULL COMMENT "", - `extraordinary` decimal(27, 2) NULL COMMENT "", - `capex` decimal(27, 2) NULL COMMENT "", + `cont_liab` decimal(20, 2) NULL COMMENT "", + `rd_exp` decimal(20, 2) NULL COMMENT "", + `cash_end_bal_cf` decimal(20, 2) NULL COMMENT "", + `deductedprofit` decimal(20, 2) NULL COMMENT "", + `extraordinary` decimal(20, 2) NULL COMMENT "", + `capex` decimal(20, 2) NULL COMMENT "", `update_time` datetime NULL COMMENT "" ) ENGINE=OLAP UNIQUE KEY(`stock_code`, `data_time`, `datev2`, `datatimev2_1`, `datatimev2_2`, `datatimev2_3`) diff --git a/regression-test/suites/correctness_p0/test_outer_join_with_inline_view.groovy b/regression-test/suites/correctness_p0/test_outer_join_with_inline_view.groovy index 16f02a39bf..3d8c563f0d 100644 --- a/regression-test/suites/correctness_p0/test_outer_join_with_inline_view.groovy +++ b/regression-test/suites/correctness_p0/test_outer_join_with_inline_view.groovy @@ -115,7 +115,7 @@ suite("test_outer_join_with_inline_view") { sql """ CREATE TABLE `subquery_table_3` ( `org_code` varchar(96) NULL, - `bo_ql_in_advance` decimal(27, 6) NULL + `bo_ql_in_advance` decimal(24, 6) NULL ) ENGINE=OLAP DUPLICATE KEY(`org_code`) COMMENT 'OLAP' diff --git a/regression-test/suites/load_p0/stream_load/test_parquet_orc_case.groovy b/regression-test/suites/load_p0/stream_load/test_parquet_orc_case.groovy index fac1ddabc4..22e61893ed 100644 --- a/regression-test/suites/load_p0/stream_load/test_parquet_orc_case.groovy +++ b/regression-test/suites/load_p0/stream_load/test_parquet_orc_case.groovy @@ -211,7 +211,7 @@ suite("test_parquet_orc_case", "p0") { sql """ DROP TABLE IF EXISTS ${arrayParquetTbl} """ sql """ - CREATE TABLE ${arrayParquetTbl} ( + CREATE TABLE ${arrayParquetTbl} ( k1 int NULL, a1 array<boolean> NULL, a2 array<tinyint> NULL, @@ -219,7 +219,7 @@ suite("test_parquet_orc_case", "p0") { a4 array<int> NULL, a5 array<bigint> NULL, a6 array<largeint> NULL, - a7 array<decimal(27, 7)> NULL, + a7 array<decimal(25, 7)> NULL, a8 array<float> NULL, a9 array<double> NULL, a10 array<date> NULL, diff --git a/regression-test/suites/mysql_ssl_p0/test_ssl_wild.groovy b/regression-test/suites/mysql_ssl_p0/test_ssl_wild.groovy index 3e7147698c..a9c3620b1d 100644 --- a/regression-test/suites/mysql_ssl_p0/test_ssl_wild.groovy +++ b/regression-test/suites/mysql_ssl_p0/test_ssl_wild.groovy @@ -46,7 +46,7 @@ suite("test_ssl_wild") { col22 text NULL, col23 text NULL, col24 int(11) NULL, - col25 decimal(22, 2) NULL, + col25 decimal(20, 2) NULL, col26 decimal(22, 4) NULL, col27 decimal(16, 8) NULL, col28 decimal(16, 8) NULL, @@ -70,10 +70,10 @@ suite("test_ssl_wild") { col46 decimal(16, 2) NULL, col47 int(11) NULL, col48 decimal(16, 2) NULL, - col49 decimal(22, 2) NULL, - col50 decimal(22, 2) NULL, - col51 decimal(22, 2) NULL, - col52 decimal(22, 2) NULL, + col49 decimal(20, 2) NULL, + col50 decimal(20, 2) NULL, + col51 decimal(20, 2) NULL, + col52 decimal(20, 2) NULL, col53 decimal(16, 2) NULL, col54 int(11) NULL, col55 int(11) NULL, diff --git a/regression-test/suites/nereids_p0/sql_functions/array_functions/test_array_aggregation_functions.groovy b/regression-test/suites/nereids_p0/sql_functions/array_functions/test_array_aggregation_functions.groovy index e904c7002b..f1ba1d0bfd 100644 --- a/regression-test/suites/nereids_p0/sql_functions/array_functions/test_array_aggregation_functions.groovy +++ b/regression-test/suites/nereids_p0/sql_functions/array_functions/test_array_aggregation_functions.groovy @@ -29,7 +29,7 @@ suite("test_array_aggregation_functions") { `a3` array<int(11)> NULL COMMENT "", `a4` array<bigint(20)> NULL COMMENT "", `a5` array<largeint(40)> NULL COMMENT "", - `a6` array<decimal(27, 7)> NULL COMMENT "", + `a6` array<decimal(25, 7)> NULL COMMENT "", `a7` array<float> NULL COMMENT "", `a8` array<double> NULL COMMENT "", `a9` array<date> NULL COMMENT "", diff --git a/regression-test/suites/query_p0/sql_functions/array_functions/test_array_aggregation_functions.groovy b/regression-test/suites/query_p0/sql_functions/array_functions/test_array_aggregation_functions.groovy index de827daa43..d6fe42b659 100644 --- a/regression-test/suites/query_p0/sql_functions/array_functions/test_array_aggregation_functions.groovy +++ b/regression-test/suites/query_p0/sql_functions/array_functions/test_array_aggregation_functions.groovy @@ -27,7 +27,7 @@ suite("test_array_aggregation_functions") { `a3` array<int(11)> NULL COMMENT "", `a4` array<bigint(20)> NULL COMMENT "", `a5` array<largeint(40)> NULL COMMENT "", - `a6` array<decimal(27, 7)> NULL COMMENT "", + `a6` array<decimal(25, 7)> NULL COMMENT "", `a7` array<float> NULL COMMENT "", `a8` array<double> NULL COMMENT "", `a9` array<date> NULL COMMENT "", --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
