You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by yi...@apache.org on 2024/02/27 08:06:52 UTC
(doris) 03/04: [Fix] Only datetime and datetimev2 types can use current_timestamp as column default value (#31395)
This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
commit 6b4a756837281efe0f492a1d58359ac35845c2b7
Author: feiniaofeiafei <53...@users.noreply.github.com>
AuthorDate: Tue Feb 27 15:34:48 2024 +0800
[Fix] Only datetime and datetimev2 types can use current_timestamp as column default value (#31395)
for this kind of sql:
create table test_default10(
a int,
b varchar(100) default current_timestamp
)
distributed by hash(a)
properties('replication_num'="1");
add check:
Types other than DATETIME and DATETIMEV2 cannot use current_timestamp as the default value
---
.../java/org/apache/doris/analysis/ColumnDef.java | 10 +++++
...urrent_timestamp_as_column_default_value.groovy | 47 ++++++++++++++++++++++
...both_appear_in_agg_fun_and_grouping_sets.groovy | 3 +-
3 files changed, 59 insertions(+), 1 deletion(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java
index c3f51f1a2f5..8f3e2ea0a11 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java
@@ -542,6 +542,16 @@ public class ColumnDef {
default:
throw new AnalysisException("Unsupported type: " + type);
}
+ if (null != defaultValueExprDef && defaultValueExprDef.getExprName().equals("now")) {
+ switch (primitiveType) {
+ case DATETIME:
+ case DATETIMEV2:
+ break;
+ default:
+ throw new AnalysisException("Types other than DATETIME and DATETIMEV2 "
+ + "cannot use current_timestamp as the default value");
+ }
+ }
}
public String toSql() {
diff --git a/regression-test/suites/ddl_p0/test_current_timestamp_as_column_default_value.groovy b/regression-test/suites/ddl_p0/test_current_timestamp_as_column_default_value.groovy
new file mode 100644
index 00000000000..5ba724d8847
--- /dev/null
+++ b/regression-test/suites/ddl_p0/test_current_timestamp_as_column_default_value.groovy
@@ -0,0 +1,47 @@
+// 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_current_timestamp_as_column_default_value") {
+ sql "SET enable_nereids_planner=true"
+ sql "SET enable_fallback_to_original_planner=false"
+ sql "DROP TABLE IF EXISTS test_default4"
+ sql """create table test_default4(a int, b int) distributed by hash(a) properties('replication_num'="1");"""
+
+ sql "DROP TABLE IF EXISTS test_default10"
+ test {
+ sql """create table test_default10(a int, b varchar(100) default current_timestamp)
+ distributed by hash(a) properties('replication_num'="1");"""
+ exception "Types other than DATETIME and DATETIMEV2 cannot use current_timestamp as the default value"
+ }
+
+ test{
+ sql """alter table test_default4 add column dt varchar(100) default current_timestamp"""
+ exception "Types other than DATETIME and DATETIMEV2 cannot use current_timestamp as the default value"
+ }
+
+ sql "SET enable_nereids_planner=false"
+ sql "DROP TABLE IF EXISTS test_default10"
+ test {
+ sql """create table test_default10(a int, b varchar(100) default current_timestamp)
+ distributed by hash(a) properties('replication_num'="1");"""
+ exception "Types other than DATETIME and DATETIMEV2 cannot use current_timestamp as the default value"
+ }
+
+ test{
+ sql "alter table test_default4 add column dt varchar(100) default current_timestamp"
+ exception "Types other than DATETIME and DATETIMEV2 cannot use current_timestamp as the default value"
+ }
+}
diff --git a/regression-test/suites/nereids_rules_p0/grouping_sets/slot_both_appear_in_agg_fun_and_grouping_sets.groovy b/regression-test/suites/nereids_rules_p0/grouping_sets/slot_both_appear_in_agg_fun_and_grouping_sets.groovy
index ac711cf5aab..865ce3b5f50 100644
--- a/regression-test/suites/nereids_rules_p0/grouping_sets/slot_both_appear_in_agg_fun_and_grouping_sets.groovy
+++ b/regression-test/suites/nereids_rules_p0/grouping_sets/slot_both_appear_in_agg_fun_and_grouping_sets.groovy
@@ -15,7 +15,8 @@
// specific language governing permissions and limitations
// under the License.
suite("slot_both_appear_in_agg_fun_and_grouping_sets") {
-
+ sql "SET enable_nereids_planner=true"
+ sql "SET enable_fallback_to_original_planner=false"
sql """
DROP TABLE IF EXISTS table_10_undef_undef4
"""
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org