You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by kx...@apache.org on 2023/06/21 06:45:04 UTC

[doris] branch master updated: [chore](dynamic schema) deprecated create dynamic schema table (#21058)

This is an automated email from the ASF dual-hosted git repository.

kxiao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 62fb0e642e [chore](dynamic schema) deprecated create dynamic schema table (#21058)
62fb0e642e is described below

commit 62fb0e642ef3b6fdaa5c23e9422d8826eb741162
Author: lihangyu <15...@163.com>
AuthorDate: Wed Jun 21 14:44:57 2023 +0800

    [chore](dynamic schema) deprecated create dynamic schema table (#21058)
---
 docs/en/docs/data-table/dynamic-schema-table.md    | 146 ---------------------
 docs/sidebars.json                                 |   1 -
 docs/zh-CN/docs/data-table/dynamic-schema-table.md | 145 --------------------
 fe/fe-core/src/main/cup/sql_parser.cup             |   4 +-
 .../apache/doris/common/util/PropertyAnalyzer.java |   2 +-
 .../suites/dynamic_table_p0/create_table.groovy    |  14 +-
 .../suites/dynamic_table_p0/load.groovy            |  20 ++-
 .../test_create_dynamic_table.groovy               |  44 ++-----
 .../test_dytable_alter_type.groovy                 |   5 +-
 .../test_dytable_complex_data.groovy               |   3 +-
 10 files changed, 32 insertions(+), 352 deletions(-)

diff --git a/docs/en/docs/data-table/dynamic-schema-table.md b/docs/en/docs/data-table/dynamic-schema-table.md
deleted file mode 100644
index e158164f4b..0000000000
--- a/docs/en/docs/data-table/dynamic-schema-table.md
+++ /dev/null
@@ -1,146 +0,0 @@
----
-{
-    "title": "Dynamic schema table",
-    "language": "en"
-}
----
-
-<!-- 
-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.
--->
-
-<version since="2.0.0"></version>
-
-A dynamic schema table is a special kind of table which schema expands automatically with the import procedure. Currently, this feature is mainly used for importing semi-structured data such as JSON. Because JSON is self-describing, we can extract the schema information from the original document and infer the final type information. This special table can reduce manual schema change operations and easily import semi-structured data and automatically expand its schema.
-
-## Terminology
-- Schema change, changing the structure of the table, such as adding columns, reducing columns, changing column types
-- Static column, column specified during table creation, such as partition columns, primary key columns
-- Dynamic column, columns automatically recognized and added during import
-
-## Specifies the dynamic table identity
-- Method 1: By adding ... to the last column.
-- Method 2: By specifying "dynamic_schema" = "true" in properties
-
-## Create dynamic table
-
-```sql
-CREATE DATABASE test_dynamic_table;
-
--- Create table and specify static column types, import will automatically convert to the type of static column
--- Choose random bucketing
--- Method 1: By ... Identifies the table as a dynamic table
-CREATE TABLE IF NOT EXISTS test_dynamic_table (
-                qid bigint,
-                `answers.date` array<datetime>,
-                `title` string,
-		        ...   -- ... Identifying a table as a dynamic table and its syntax for dynamic tables.
-        )
-DUPLICATE KEY(`qid`)
-DISTRIBUTED BY RANDOM BUCKETS 5 
-properties("replication_num" = "1");
-
--- Method 2: By specifying "dynamic_schema" = "true" in properties
-CREATE TABLE IF NOT EXISTS test_dynamic_table (
-                qid bigint,
-                `answers.date` array<datetime>,
-                `title` string
-        )
-DUPLICATE KEY(`qid`)
-DISTRIBUTED BY RANDOM BUCKETS 5 
-properties(
-    "replication_num" = "1",
-    "dynamic_schema" = "true"
-);
-
--- Three Columns are added to the table by default, and their types are specified
-mysql> DESC test_dynamic_table;
-+--------------+-----------------+------+-------+---------+-------+
-| Field        | Type            | Null | Key   | Default | Extra |
-+--------------+-----------------+------+-------+---------+-------+
-| qid          | BIGINT          | Yes  | true  | NULL    |       |
-| answers.date | ARRAY<DATETIME> | Yes  | false | NULL    | NONE  |
-| user         | TEXT            | Yes  | false | NULL    | NONE  |
-+--------------+-----------------+------+-------+---------+-------+
-3 rows in set (0.00 sec)
-```
-
-## Importing data
-
-``` sql
--- example1.json
-'{
-    "title": "Display Progress Bar at the Time of Processing",
-    "qid": "1000000",
-    "answers": [
-        {"date": "2009-06-16T09:55:57.320", "user": "Micha\u0142 Niklas (22595)"},
-        {"date": "2009-06-17T12:34:22.643", "user": "Jack Njiri (77153)"}
-    ],
-    "tag": ["vb6", "progress-bar"],
-    "user": "Jash",
-    "creationdate": "2009-06-16T07:28:42.770"
-}'
-
-curl -X PUT -T example1.json --location-trusted -u root: -H "read_json_by_line:false" -H "format:json"   http://127.0.0.1:8147/api/regression_test_dynamic_table/test_dynamic_table/_stream_load
-
--- Added five new columns: `title`, `answers.user`, `tag`, `title`, `creationdate`
--- The types of the three columns: `qid`, `answers.date`, `user` remain the same as with the table was created
--- The default value of the new array type is an empty array []
-mysql> DESC test_dynamic_table;                                                                                 
-+--------------+-----------------+------+-------+---------+-------+
-| Field        | Type            | Null | Key   | Default | Extra |
-+--------------+-----------------+------+-------+---------+-------+
-| qid          | BIGINT          | Yes  | true  | NULL    |       |
-| answers.date | ARRAY<DATETIME> | Yes  | false | NULL    | NONE  |
-| title        | TEXT            | Yes  | false | NULL    | NONE  |
-| answers.user | ARRAY<TEXT>     | No   | false | []      | NONE  |
-| tag          | ARRAY<TEXT>     | No   | false | []      | NONE  |
-| user         | TEXT            | Yes  | false | NULL    | NONE  |
-| creationdate | TEXT            | Yes  | false | NULL    | NONE  |
-| date         | TEXT            | Yes  | false | NULL    | NONE  |
-+--------------+-----------------+------+-------+---------+-------+
-
--- Batch import data
--- Specifying -H "read_json_by_line:true", parsing JSON line by line
-curl -X PUT -T example_batch.json --location-trusted -u root: -H "read_json_by_line:true" -H "format:json"   http://127.0.0.1:8147/api/regression_test_dynamic_table/test_dynamic_table/_stream_load
-
--- Specifying -H "strip_outer_array:true", parsing the entire file as a JSON array, each element in the array is the same, more efficient parsing way
-curl -X PUT -T example_batch_array.json --location-trusted -u root: -H "strip_outer_array:true" -H "format:json"   http://127.0.0.1:8147/api/regression_test_dynamic_table/test_dynamic_table/_stream_load
-```
-For a dynamic table, you can also use S3load or Routine load, with similar usage.
-
-
-## Adding Index to Dynamic Columns
-```sql
--- Create an inverted index on the title column, using English parsing.
-CREATE INDEX title_idx ON test_dynamic_table (`title`) using inverted PROPERTIES("parser"="english")
-```
-
-## Type conflict resolution
-
-In the first batch import, the unified type will be automatically inferred and used as the final Column type, so it is recommended to keep the Column type consistent, for example:
-```
-{"id" : 123}
-{"id" : "123"}
--- The type will finally be inferred as Text type, and if {"id" : 123} is imported later, the type will automatically be converted to String type
-
-For types that cannot be unified, such as:
-{"id" : [123]}
-{"id" : 123}
--- Importing will result in an error."
-```
diff --git a/docs/sidebars.json b/docs/sidebars.json
index d613fcaff5..40011ef5df 100644
--- a/docs/sidebars.json
+++ b/docs/sidebars.json
@@ -50,7 +50,6 @@
                 "data-table/basic-usage",
                 "data-table/hit-the-rollup",
                 "data-table/best-practice",
-                "data-table/dynamic-schema-table",
                 {
                     "type": "category",
                     "label": "Index",
diff --git a/docs/zh-CN/docs/data-table/dynamic-schema-table.md b/docs/zh-CN/docs/data-table/dynamic-schema-table.md
deleted file mode 100644
index ffb1893193..0000000000
--- a/docs/zh-CN/docs/data-table/dynamic-schema-table.md
+++ /dev/null
@@ -1,145 +0,0 @@
----
-{
-    "title": "动态 Schema 表",
-    "language": "zh-CN"
-}
----
-
-<!-- 
-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.
--->
-
-<version since="2.0.0"></version>
-
-动态 Schema 表是一种特殊的表,其 Schema 随着导入自动进行扩展。目前该功能,主要用于半结构数据,例如 JSON 等的导入、自动列生成。因为 JSON 是类型自描述的,所以我们可以从原始文档中提取 Schema 信息,推断最终类型信息。这种特殊的表可以减少人工 Schema Change 的操作,并轻松导入半结构数据并自动扩展其 Schema。
-
-## 名词解释
-- Schema Change, 改变表的结构, 例如增加列、减少列, 修改列类型
-- 静态列, 在建表时指定的列, 例如分区列、主键列
-- 动态列, 随着导入自动识别并增加的列
-
-## 指定动态表标识
-- 方式一:通过在最后一列后加 ...
-- 方式二:通过在properties中指定 "dynamic_schema" = "true"
-
-## 建表
-
-```sql
-CREATE DATABASE test_dynamic_table;
-
--- 建表, 并指定静态列类型, 导入遇到对应列会自动转换成静态列的类型
--- 选择随机分桶方式
--- 方式一:通过...标识该表是动态表
-CREATE TABLE IF NOT EXISTS test_dynamic_table (
-                qid bigint,
-                `answers.date` array<datetime>,
-                `title` string,
-		        ...   -- ...标识该表是动态表, 是动态表的语法
-        )
-DUPLICATE KEY(`qid`)
-DISTRIBUTED BY RANDOM BUCKETS 5 
-properties("replication_num" = "1");
-
--- 方式二:通过在properties中指定 "dynamic_schema" = "true"
-CREATE TABLE IF NOT EXISTS test_dynamic_table (
-                qid bigint,
-                `answers.date` array<datetime>,
-                `title` string
-        )
-DUPLICATE KEY(`qid`)
-DISTRIBUTED BY RANDOM BUCKETS 5 
-properties(
-    "replication_num" = "1",
-    "dynamic_schema" = "true"
-);
-
--- 可以看到三列Column在表中默认添加, 类型是指定类型
-mysql> DESC test_dynamic_table;
-+--------------+-----------------+------+-------+---------+-------+
-| Field        | Type            | Null | Key   | Default | Extra |
-+--------------+-----------------+------+-------+---------+-------+
-| qid          | BIGINT          | Yes  | true  | NULL    |       |
-| answers.date | ARRAY<DATETIME> | Yes  | false | NULL    | NONE  |
-| user         | TEXT            | Yes  | false | NULL    | NONE  |
-+--------------+-----------------+------+-------+---------+-------+
-3 rows in set (0.00 sec)
-```
-
-## 导入数据
-
-``` sql
--- example1.json
-'{
-    "title": "Display Progress Bar at the Time of Processing",
-    "qid": "1000000",
-    "answers": [
-        {"date": "2009-06-16T09:55:57.320", "user": "Micha\u0142 Niklas (22595)"},
-        {"date": "2009-06-17T12:34:22.643", "user": "Jack Njiri (77153)"}
-    ],
-    "tag": ["vb6", "progress-bar"],
-    "user": "Jash",
-    "creationdate": "2009-06-16T07:28:42.770"
-}'
-
-curl -X PUT -T example1.json --location-trusted -u root: -H "read_json_by_line:false" -H "format:json"   http://127.0.0.1:8147/api/regression_test_dynamic_table/test_dynamic_table/_stream_load
-
--- 新增 title,answers.user, tag, title, creationdate 五列
--- 且 qid,answers.date,user三列类型与建表时保持一致
--- 新增数组类型默认Default值为空数组[]
-mysql> DESC test_dynamic_table;                                                                                 
-+--------------+-----------------+------+-------+---------+-------+
-| Field        | Type            | Null | Key   | Default | Extra |
-+--------------+-----------------+------+-------+---------+-------+
-| qid          | BIGINT          | Yes  | true  | NULL    |       |
-| answers.date | ARRAY<DATETIME> | Yes  | false | NULL    | NONE  |
-| title        | TEXT            | Yes  | false | NULL    | NONE  |
-| answers.user | ARRAY<TEXT>     | No   | false | []      | NONE  |
-| tag          | ARRAY<TEXT>     | No   | false | []      | NONE  |
-| user         | TEXT            | Yes  | false | NULL    | NONE  |
-| creationdate | TEXT            | Yes  | false | NULL    | NONE  |
-| date         | TEXT            | Yes  | false | NULL    | NONE  |
-+--------------+-----------------+------+-------+---------+-------+
-
--- 批量导入数据
-
--- 指定 -H "read_json_by_line:true", 逐行解析JSON
-curl -X PUT -T example_batch.json --location-trusted -u root: -H "read_json_by_line:true" -H "format:json"   http://127.0.0.1:8147/api/regression_test_dynamic_table/test_dynamic_table/_stream_load
-
--- 指定 -H "strip_outer_array:true", 整个文件当做一个JSON array解析, array中的每个元素是一行, 解析效率更高效
-curl -X PUT -T example_batch_array.json --location-trusted -u root: -H "strip_outer_array:true" -H "format:json"   http://127.0.0.1:8147/api/regression_test_dynamic_table/test_dynamic_table/_stream_load
-```
-对于 Dynamic Table, 你也可以使用 S3 Load 或者 Routine Load, 使用方式类似
-
-## 对动态列增加索引
-```sql
--- 将在 titile 列上新建倒排索引, 并按照english分词
-CREATE INDEX title_idx ON test_dynamic_table (`title`) using inverted PROPERTIES("parser"="english")
-```
-
-## 类型冲突
-在第一批导入会自动推断出统一的类型, 并以此作为最终的 Column 类型,所以建议保持 Column 类型的一致, 例如
-```
-{"id" : 123}
-{"id" : "123"}
--- 类型会被最终推断为Text类型, 如果在后续导入{"id" : 123}则类型会被自动转成String类型
-
-对于无法统一的类型, 例如
-{"id" : [123]}
-{"id" : 123}
--- 导入将会报错
-```
diff --git a/fe/fe-core/src/main/cup/sql_parser.cup b/fe/fe-core/src/main/cup/sql_parser.cup
index e0ca4e9857..500a83bb3c 100644
--- a/fe/fe-core/src/main/cup/sql_parser.cup
+++ b/fe/fe-core/src/main/cup/sql_parser.cup
@@ -1833,7 +1833,7 @@ create_stmt ::=
         distribution, tblProperties, extProperties, tableComment, index);
     :}
     | KW_CREATE opt_external:isExternal KW_TABLE opt_if_not_exists:ifNotExists table_name:name
-            LPAREN column_definition_list:columns COMMA DOTDOTDOT RPAREN opt_engine:engineName
+            LPAREN column_definition_list:columns COMMA RPAREN opt_engine:engineName
             opt_keys:keys
             opt_comment:tableComment
             opt_partition:partition
@@ -1859,7 +1859,7 @@ create_stmt ::=
         distribution, tblProperties, extProperties, tableComment, index, false);
     :}
     | KW_CREATE opt_external:isExternal KW_TABLE opt_if_not_exists:ifNotExists table_name:name
-            LPAREN column_definition_list:columns COMMA index_definition_list:indexes COMMA DOTDOTDOT RPAREN opt_engine:engineName
+            LPAREN column_definition_list:columns COMMA index_definition_list:indexes COMMA RPAREN opt_engine:engineName
             opt_keys:keys
             opt_comment:tableComment
             opt_partition:partition
diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/util/PropertyAnalyzer.java b/fe/fe-core/src/main/java/org/apache/doris/common/util/PropertyAnalyzer.java
index e4be16a274..d18d866b43 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/common/util/PropertyAnalyzer.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/common/util/PropertyAnalyzer.java
@@ -96,7 +96,7 @@ public class PropertyAnalyzer {
     // _auto_bucket can only set in create table stmt rewrite bucket and can not be changed
     public static final String PROPERTIES_AUTO_BUCKET = "_auto_bucket";
     public static final String PROPERTIES_ESTIMATE_PARTITION_SIZE = "estimate_partition_size";
-    public static final String PROPERTIES_DYNAMIC_SCHEMA = "dynamic_schema";
+    public static final String PROPERTIES_DYNAMIC_SCHEMA = "deprecated_dynamic_schema";
 
     public static final String PROPERTIES_TABLET_TYPE = "tablet_type";
 
diff --git a/regression-test/suites/dynamic_table_p0/create_table.groovy b/regression-test/suites/dynamic_table_p0/create_table.groovy
index ca1d079af2..ff71435746 100644
--- a/regression-test/suites/dynamic_table_p0/create_table.groovy
+++ b/regression-test/suites/dynamic_table_p0/create_table.groovy
@@ -32,18 +32,18 @@ suite("test_create_dynamic_table", "dynamic_table") {
        }
     }
     sql "DROP TABLE IF EXISTS dynamic_table_create_test"
-    expect_result("""CREATE TABLE dynamic_table_create_test (x int, y int, ...) ENGINE = Olap DUPLICATE KEY(x) DISTRIBUTED BY HASH(y) BUCKETS 1 PROPERTIES("replication_num" = "1");;""", "success")
+    expect_result("""CREATE TABLE dynamic_table_create_test (x int, y int) ENGINE = Olap DUPLICATE KEY(x) DISTRIBUTED BY HASH(y) BUCKETS 1 PROPERTIES("replication_num" = "1", "deprecated_dynamic_schema" = "true");;""", "success")
     sql "DROP TABLE IF EXISTS dynamic_table_create_test"
-    expect_result("""CREATE TABLE dynamic_table_create_test (x int, y int, ...) ENGINE = Olap DUPLICATE KEY(x) DISTRIBUTED BY RANDOM BUCKETS 1 PROPERTIES("replication_num" = "1");;""", "success")
+    expect_result("""CREATE TABLE dynamic_table_create_test (x int, y int) ENGINE = Olap DUPLICATE KEY(x) DISTRIBUTED BY RANDOM BUCKETS 1 PROPERTIES("replication_num" = "1", "deprecated_dynamic_schema" = "true");;""", "success")
     sql "DROP TABLE IF EXISTS dynamic_table_create_test"
-    expect_result("""CREATE TABLE dynamic_table_create_test (x int, y int, ...) ENGINE = Olap DUPLICATE KEY(x)  PARTITION BY RANGE(y) (partition `p1` values less than ("1000")) DISTRIBUTED BY RANDOM BUCKETS 1 PROPERTIES("replication_num" = "1");;""", "success")
+    expect_result("""CREATE TABLE dynamic_table_create_test (x int, y int) ENGINE = Olap DUPLICATE KEY(x)  PARTITION BY RANGE(y) (partition `p1` values less than ("1000")) DISTRIBUTED BY RANDOM BUCKETS 1 PROPERTIES("replication_num" = "1", "deprecated_dynamic_schema" = "true");;""", "success")
     sql "DROP TABLE IF EXISTS dynamic_table_create_test"
-    expect_result("""CREATE TABLE dynamic_table_create_test (x int, y int, ...) ENGINE = Olap DUPLICATE KEY(x)  PARTITION BY RANGE(x) (partition `p1` values less than ("1000")) DISTRIBUTED BY RANDOM BUCKETS 1 PROPERTIES("replication_num" = "1");;""", "success")
+    expect_result("""CREATE TABLE dynamic_table_create_test (x int, y int) ENGINE = Olap DUPLICATE KEY(x)  PARTITION BY RANGE(x) (partition `p1` values less than ("1000")) DISTRIBUTED BY RANDOM BUCKETS 1 PROPERTIES("replication_num" = "1", "deprecated_dynamic_schema" = "true");;""", "success")
     sql "DROP TABLE IF EXISTS dynamic_table_create_test"
-    expect_result("""CREATE TABLE dynamic_table_create_test (x int, y int, ...) ENGINE = Olap DUPLICATE KEY(x, y)  PARTITION BY RANGE(x, y) (partition `p1` values less than ("1000", "1000")) DISTRIBUTED BY RANDOM BUCKETS 1 PROPERTIES("replication_num" = "1");;""", "success")
+    expect_result("""CREATE TABLE dynamic_table_create_test (x int, y int) ENGINE = Olap DUPLICATE KEY(x, y)  PARTITION BY RANGE(x, y) (partition `p1` values less than ("1000", "1000")) DISTRIBUTED BY RANDOM BUCKETS 1 PROPERTIES("replication_num" = "1", "deprecated_dynamic_schema" = "true");;""", "success")
     sql "DROP TABLE IF EXISTS dynamic_table_create_test"
-    expect_result("""CREATE TABLE dynamic_table_create_test (x int, y int, z array<int>, ...) ENGINE = Olap DUPLICATE KEY(x, y) DISTRIBUTED BY HASH(x, y) BUCKETS 2 PROPERTIES("replication_num" = "1");;""", "success");
+    expect_result("""CREATE TABLE dynamic_table_create_test (x int, y int, z array<int>) ENGINE = Olap DUPLICATE KEY(x, y) DISTRIBUTED BY HASH(x, y) BUCKETS 2 PROPERTIES("replication_num" = "1", "deprecated_dynamic_schema" = "true");;""", "success");
     sql "DROP TABLE IF EXISTS dynamic_table_create_test"
-    expect_result("""CREATE TABLE dynamic_table_create_test (x int, y int, z array<date>, ...) ENGINE = Olap DUPLICATE KEY(x, y)  PARTITION BY RANGE(x, y) (partition `p1` values less than ("1000", "1000")) DISTRIBUTED BY HASH(x, y) BUCKETS 2 PROPERTIES("replication_num" = "1");;""", "success")
+    expect_result("""CREATE TABLE dynamic_table_create_test (x int, y int, z array<date>) ENGINE = Olap DUPLICATE KEY(x, y)  PARTITION BY RANGE(x, y) (partition `p1` values less than ("1000", "1000")) DISTRIBUTED BY HASH(x, y) BUCKETS 2 PROPERTIES("replication_num" = "1", "deprecated_dynamic_schema" = "true");;""", "success")
     sql "DROP TABLE IF EXISTS dynamic_table_create_test"
 }
diff --git a/regression-test/suites/dynamic_table_p0/load.groovy b/regression-test/suites/dynamic_table_p0/load.groovy
index 6ac6836194..766642060b 100644
--- a/regression-test/suites/dynamic_table_p0/load.groovy
+++ b/regression-test/suites/dynamic_table_p0/load.groovy
@@ -63,12 +63,11 @@ suite("regression_test_dynamic_table", "dynamic_table"){
         sql "DROP TABLE IF EXISTS ${table_name}"
         sql """
             CREATE TABLE IF NOT EXISTS ${table_name} (
-                id bigint,
-                ...
+                id bigint
             )
             DUPLICATE KEY(`id`)
             DISTRIBUTED BY RANDOM BUCKETS 5 
-            properties("replication_num" = "1");
+            properties("replication_num" = "1", "deprecated_dynamic_schema" = "true");
         """
 
         //stream load src_json
@@ -81,12 +80,11 @@ suite("regression_test_dynamic_table", "dynamic_table"){
         sql "DROP TABLE IF EXISTS ${table_name}"
         sql """
             CREATE TABLE IF NOT EXISTS ${table_name}(
-                id bigint,
-                ...
+                id bigint
             )
             UNIQUE KEY(`id`)
             DISTRIBUTED BY HASH(`id`) BUCKETS 5 
-            properties("replication_num" = "1", "enable_unique_key_merge_on_write" = "true");
+            properties("replication_num" = "1", "enable_unique_key_merge_on_write" = "true", "deprecated_dynamic_schema" = "true");
         """
 
         //stream load src_json
@@ -105,11 +103,10 @@ suite("regression_test_dynamic_table", "dynamic_table"){
                 `title` string,
 		        INDEX creation_date_idx(`creationdate`) USING INVERTED COMMENT 'creationdate index',
  		        INDEX title_idx(`title`) USING INVERTED PROPERTIES("parser"="standard") COMMENT 'title index',
-		        ...
             )
             DUPLICATE KEY(`qid`)
             DISTRIBUTED BY RANDOM BUCKETS 5 
-            properties("replication_num" = "1");
+            properties("replication_num" = "1", "deprecated_dynamic_schema" = "true");
         """
 
         //stream load src_json
@@ -135,11 +132,10 @@ suite("regression_test_dynamic_table", "dynamic_table"){
             CREATE TABLE IF NOT EXISTS ${table_name} (
                 qid bigint,
                 XXXX bigint,
-		        ...
             )
             DUPLICATE KEY(`qid`)
             DISTRIBUTED BY HASH(`qid`) BUCKETS 5 
-            properties("replication_num" = "1");
+            properties("replication_num" = "1", "deprecated_dynamic_schema" = "true");
     """
     load_json_data.call(table_name, 'true', 'json', 'true', "invalid_dimension.json", 'false')
     load_json_data.call(table_name, 'true', 'json', 'true', "invalid_format.json", 'false')
@@ -157,13 +153,13 @@ suite("regression_test_dynamic_table", "dynamic_table"){
             id varchar(30) default 'defualt-id' COMMENT '',
             type varchar(50) NULL COMMENT '',
             public boolean NULL COMMENT '',
-            ...
         )
         ENGINE=OLAP
         DUPLICATE KEY(created_at)
         DISTRIBUTED BY HASH(id) BUCKETS 32
         PROPERTIES (
-            'replication_allocation' = 'tag.location.default: 1'
+            'replication_allocation' = 'tag.location.default: 1',
+            "deprecated_dynamic_schema" = "true"
         ); 
         """
     def paths = [
diff --git a/regression-test/suites/dynamic_table_p0/test_create_dynamic_table.groovy b/regression-test/suites/dynamic_table_p0/test_create_dynamic_table.groovy
index b92814da0d..cccdcf14ee 100644
--- a/regression-test/suites/dynamic_table_p0/test_create_dynamic_table.groovy
+++ b/regression-test/suites/dynamic_table_p0/test_create_dynamic_table.groovy
@@ -17,32 +17,15 @@
 
 suite("test_dynamic_table", "dynamic_table"){
 
-    def create_none_dynamic_table_result = "fail"
-    try {
-        sql """
-                CREATE TABLE IF NOT EXISTS t_dynamic1
-                (
-                    ... 
-                )
-                DISTRIBUTED BY HASH(`name`) BUCKETS 10
-                PROPERTIES("replication_num" = "1")
-            """
-        create_none_dynamic_table_result = "success"
-    } catch(Exception ex) {
-        logger.info("create none dynamic table result: " + ex)
-    }
-    assertEquals(create_none_dynamic_table_result, "fail")
-
     def create_dynamic_table_assign_not_exist_key_result = "fail"
     try {
         sql """
                 CREATE TABLE IF NOT EXISTS t_dynamic1
                 (
                     name varchar(50),
-                    ... 
                 )
                 DISTRIBUTED BY HASH(`id`) BUCKETS 10
-                PROPERTIES("replication_num" = "1")
+                PROPERTIES("replication_num" = "1", "deprecated_dynamic_schema" = "true")
             """
         create_dynamic_table_assign_not_exist_key_result = "success"
     } catch(Exception ex) {
@@ -55,12 +38,11 @@ suite("test_dynamic_table", "dynamic_table"){
     sql """
         CREATE TABLE IF NOT EXISTS ${TbName1}
                 (
-                    name varchar(50),
-                    ... 
+                    name varchar(50)
                 )
                 DUPLICATE KEY(`name`)
                 DISTRIBUTED BY HASH(`name`) BUCKETS 10
-                PROPERTIES("replication_num" = "1")
+                PROPERTIES("replication_num" = "1", "deprecated_dynamic_schema" = "true")
         """
 
     def TbName2 = "test_ceate_dymanic_table_2"
@@ -73,12 +55,11 @@ suite("test_dynamic_table", "dynamic_table"){
                     date datetime,
                     index id_idx(`id`) USING INVERTED COMMENT 'id index',
                     index name_idx(`name`) USING INVERTED PROPERTIES("parser"="english") COMMENT 'name index',
-                    index date_idx(`date`) COMMENT 'date index',
-                    ... 
+                    index date_idx(`date`) COMMENT 'date index'
                 )
                 DUPLICATE KEY(`id`)
                 DISTRIBUTED BY HASH(`id`) BUCKETS 10
-                PROPERTIES("replication_num" = "1")
+                PROPERTIES("replication_num" = "1", "deprecated_dynamic_schema" = "true")
         """
 
     def TbName3 = "test_ceate_dymanic_table_3"
@@ -86,12 +67,11 @@ suite("test_dynamic_table", "dynamic_table"){
     sql """
         CREATE TABLE IF NOT EXISTS ${TbName3}
                 (
-                    `repo.id` int,
-                    ... 
+                    `repo.id` int
                 )
                 DUPLICATE KEY(`repo.id`)
                 DISTRIBUTED BY HASH(`repo.id`) BUCKETS 10
-                PROPERTIES("replication_num" = "1");
+                PROPERTIES("replication_num" = "1", "deprecated_dynamic_schema" = "true");
         """
 
     
@@ -101,12 +81,11 @@ suite("test_dynamic_table", "dynamic_table"){
         sql """
             CREATE TABLE IF NOT EXISTS ${TbName4}
                 (
-                    repo.id int,
-                    ... 
+                    repo.id int
                 )
                 DUPLICATE KEY(`repo.id`)
                 DISTRIBUTED BY HASH(`repo.id`) BUCKETS 10
-                PROPERTIES("replication_num" = "1");
+                PROPERTIES("replication_num" = "1", "deprecated_dynamic_schema" = "true");
             """
         create_children_colume_without_single_quota_result = "success"
     }catch(Exception ex) {
@@ -123,12 +102,11 @@ suite("test_dynamic_table", "dynamic_table"){
                 date datetime,
                 `name.list` array<int>,
                 tag ARRAY<NOT_NULL(ARRAY<text>)>,
-                data ARRAY<ARRAY<NOT_NULL(ARRAY<date>)>>,
-                ...
+                data ARRAY<ARRAY<NOT_NULL(ARRAY<date>)>>
             )
             DUPLICATE KEY(`date`)
             DISTRIBUTED BY HASH(`date`) BUCKETS 10
-            PROPERTIES("replication_num" = "3");
+            PROPERTIES("replication_num" = "3", "deprecated_dynamic_schema" = "true");
             """
     }catch(Exception ex) {
         logger.info("create array table, result: " + ex)
diff --git a/regression-test/suites/dynamic_table_p0/test_dytable_alter_type.groovy b/regression-test/suites/dynamic_table_p0/test_dytable_alter_type.groovy
index 5b52f7579d..09992c3c12 100644
--- a/regression-test/suites/dynamic_table_p0/test_dytable_alter_type.groovy
+++ b/regression-test/suites/dynamic_table_p0/test_dytable_alter_type.groovy
@@ -130,12 +130,11 @@ suite("test_dynamic_table", "dynamic_table"){
         sql """
             CREATE TABLE IF NOT EXISTS ${table_name} (
                 name char(50),
-                `${colume_name}` ${src_type},
-                ...
+                `${colume_name}` ${src_type}
             )
             DUPLICATE KEY(`name`)
             DISTRIBUTED BY HASH(`name`) BUCKETS 10
-            properties("replication_num" = "1");
+            properties("replication_num" = "1", "deprecated_dynamic_schema" = "true");
         """
 
         //stream load src_json
diff --git a/regression-test/suites/dynamic_table_p0/test_dytable_complex_data.groovy b/regression-test/suites/dynamic_table_p0/test_dytable_complex_data.groovy
index 245b228f5e..36fa410b8f 100644
--- a/regression-test/suites/dynamic_table_p0/test_dytable_complex_data.groovy
+++ b/regression-test/suites/dynamic_table_p0/test_dytable_complex_data.groovy
@@ -75,11 +75,10 @@ suite("test_dynamic_table", "dynamic_table"){
             sql """
                 CREATE TABLE IF NOT EXISTS ${table_name} (
                     ${colume_set}
-                    ...
                 )
                 ${data_model} KEY(${key})
                 DISTRIBUTED BY HASH(`${columes[0]}`) BUCKETS 10
-                properties("replication_num" = "${replica_num}");
+                properties("replication_num" = "${replica_num}", "deprecated_dynamic_schema" = "true");
             """
         }catch(Exception ex) {
             logger.info("create ${table_name} fail, catch exception: ${ex}".toString())


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org