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

dataroaring 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 dae0dc1652 [test](load) add some S3 TVF load regression tests (#24719)
dae0dc1652 is described below

commit dae0dc1652f142801c905b946bf865ede3c9ded0
Author: Siyang Tang <82279870+tangsiyang2...@users.noreply.github.com>
AuthorDate: Tue Sep 26 12:21:42 2023 +0800

    [test](load) add some S3 TVF load regression tests (#24719)
---
 regression-test/data/load_p0/tvf/test_s3_tvf.out   | 193 ++++++++++
 .../suites/load_p0/tvf/ddl/agg_tbl_basic_tvf.sql   |  59 ++++
 .../load_p0/tvf/ddl/agg_tbl_basic_tvf_drop.sql     |   1 +
 .../suites/load_p0/tvf/ddl/dup_tbl_array_tvf.sql   |  42 +++
 .../load_p0/tvf/ddl/dup_tbl_array_tvf_drop.sql     |   1 +
 .../suites/load_p0/tvf/ddl/dup_tbl_basic_tvf.sql   |  65 ++++
 .../load_p0/tvf/ddl/dup_tbl_basic_tvf_drop.sql     |   1 +
 .../suites/load_p0/tvf/ddl/mow_tbl_array_tvf.sql   |  44 +++
 .../load_p0/tvf/ddl/mow_tbl_array_tvf_drop.sql     |   1 +
 .../suites/load_p0/tvf/ddl/mow_tbl_basic_tvf.sql   |  67 ++++
 .../load_p0/tvf/ddl/mow_tbl_basic_tvf_drop.sql     |   1 +
 .../suites/load_p0/tvf/ddl/uniq_tbl_array_tvf.sql  |  43 +++
 .../load_p0/tvf/ddl/uniq_tbl_array_tvf_drop.sql    |   1 +
 .../suites/load_p0/tvf/ddl/uniq_tbl_basic_tvf.sql  |  58 +++
 .../load_p0/tvf/ddl/uniq_tbl_basic_tvf_drop.sql    |   1 +
 .../suites/load_p0/tvf/test_s3_tvf.groovy          | 393 +++++++++++++++++++++
 16 files changed, 971 insertions(+)

diff --git a/regression-test/data/load_p0/tvf/test_s3_tvf.out 
b/regression-test/data/load_p0/tvf/test_s3_tvf.out
new file mode 100644
index 0000000000..71ab221db1
--- /dev/null
+++ b/regression-test/data/load_p0/tvf/test_s3_tvf.out
@@ -0,0 +1,193 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !select --
+20
+
+-- !select --
+20
+
+-- !select --
+20
+
+-- !select --
+20
+
+-- !select --
+18
+
+-- !select --
+16
+
+-- !select --
+16
+
+-- !select --
+40
+
+-- !select --
+20
+
+-- !select --
+20
+
+-- !select --
+20
+
+-- !select --
+36
+
+-- !select --
+16
+
+-- !select --
+16
+
+-- !select --
+60
+
+-- !select --
+20
+
+-- !select --
+20
+
+-- !select --
+20
+
+-- !select --
+54
+
+-- !select --
+16
+
+-- !select --
+16
+
+-- !select --
+60
+
+-- !select --
+20
+
+-- !select --
+20
+
+-- !select --
+20
+
+-- !select --
+54
+
+-- !select --
+16
+
+-- !select --
+16
+
+-- !select --
+70
+
+-- !select --
+20
+
+-- !select --
+20
+
+-- !select --
+20
+
+-- !select --
+64
+
+-- !select --
+16
+
+-- !select --
+16
+
+-- !select --
+90
+
+-- !select --
+20
+
+-- !select --
+20
+
+-- !select --
+20
+
+-- !select --
+82
+
+-- !select --
+16
+
+-- !select --
+16
+
+-- !select --
+110
+
+-- !select --
+20
+
+-- !select --
+20
+
+-- !select --
+20
+
+-- !select --
+100
+
+-- !select --
+16
+
+-- !select --
+16
+
+-- !select --
+130
+
+-- !select --
+20
+
+-- !select --
+20
+
+-- !select --
+20
+
+-- !select --
+118
+
+-- !select --
+16
+
+-- !select --
+16
+
+-- !select --
+142
+
+-- !select --
+20
+
+-- !select --
+20
+
+-- !select --
+20
+
+-- !select --
+123
+
+-- !select --
+16
+
+-- !select --
+16
+
+-- !select --
+20
+
diff --git a/regression-test/suites/load_p0/tvf/ddl/agg_tbl_basic_tvf.sql 
b/regression-test/suites/load_p0/tvf/ddl/agg_tbl_basic_tvf.sql
new file mode 100644
index 0000000000..2a7b109a94
--- /dev/null
+++ b/regression-test/suites/load_p0/tvf/ddl/agg_tbl_basic_tvf.sql
@@ -0,0 +1,59 @@
+CREATE TABLE agg_tbl_basic_tvf
+(
+    k00 INT             NOT NULL,
+    k01 DATE            NOT NULL,
+    k02 BOOLEAN         REPLACE NULL,
+    k03 TINYINT         SUM NULL,
+    k04 SMALLINT        SUM NULL,
+    k05 INT             SUM NULL,
+    k06 BIGINT          SUM NULL,
+    k07 LARGEINT        SUM NULL,
+    k08 FLOAT           SUM NULL,
+    k09 DOUBLE          SUM NULL,
+    k10 DECIMAL(9,1)    SUM NULL,
+    k11 DECIMALV3(9,1)  SUM NULL,
+    k12 DATETIME        REPLACE NULL,
+    k13 DATEV2          REPLACE NULL,
+    k14 DATETIMEV2      REPLACE NULL,
+    k15 CHAR(300)          REPLACE NULL,
+    k16 VARCHAR(300)         REPLACE NULL,
+    k17 STRING          REPLACE NULL,
+    k18 JSON            REPLACE NULL,
+    k19 BITMAP          BITMAP_UNION NULL,
+    k20 HLL             HLL_UNION NULL,
+    k21 QUANTILE_STATE  QUANTILE_UNION NULL,
+    kd01 BOOLEAN         REPLACE NOT NULL DEFAULT "TRUE",
+    kd02 TINYINT         SUM NOT NULL DEFAULT "1",
+    kd03 SMALLINT        SUM NOT NULL DEFAULT "2",
+    kd04 INT             SUM NOT NULL DEFAULT "3",
+    kd05 BIGINT          SUM NOT NULL DEFAULT "4",
+    kd06 LARGEINT        SUM NOT NULL DEFAULT "5",
+    kd07 FLOAT           SUM NOT NULL DEFAULT "6.0",
+    kd08 DOUBLE          SUM NOT NULL DEFAULT "7.0",
+    kd09 DECIMAL         SUM NOT NULL DEFAULT "888888888",
+    kd10 DECIMALV3       SUM NOT NULL DEFAULT "999999999",
+    kd11 DATE            REPLACE NOT NULL DEFAULT "2023-08-24",
+    kd12 DATETIME        REPLACE NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    kd13 DATEV2          REPLACE NOT NULL DEFAULT "2023-08-24",
+    kd14 DATETIMEV2      REPLACE NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    kd15 CHAR(300)       REPLACE NOT NULL DEFAULT "我能吞下玻璃而不伤身体",
+    kd16 VARCHAR(300)    REPLACE NOT NULL DEFAULT "我能吞下玻璃而不伤身体",
+    kd17 STRING          REPLACE NOT NULL DEFAULT "我能吞下玻璃而不伤身体",
+    kd18 JSON            REPLACE NULL,
+    kd19 BITMAP          BITMAP_UNION NULL,
+    kd20 HLL             HLL_UNION NULL,
+    kd21 QUANTILE_STATE  QUANTILE_UNION NULL,
+
+    INDEX idx_bitmap_k104 (`k01`) USING BITMAP
+)
+    AGGREGATE KEY(k00,k01)
+PARTITION BY RANGE(k01)
+(
+    PARTITION p1 VALUES [('2023-08-01'), ('2023-08-11')),
+    PARTITION p2 VALUES [('2023-08-11'), ('2023-08-21')),
+    PARTITION p3 VALUES [('2023-08-21'), ('2023-09-01'))
+)
+DISTRIBUTED BY HASH(k00) BUCKETS 32
+PROPERTIES (
+    "replication_num" = "1"
+);
\ No newline at end of file
diff --git a/regression-test/suites/load_p0/tvf/ddl/agg_tbl_basic_tvf_drop.sql 
b/regression-test/suites/load_p0/tvf/ddl/agg_tbl_basic_tvf_drop.sql
new file mode 100644
index 0000000000..bedd9ea634
--- /dev/null
+++ b/regression-test/suites/load_p0/tvf/ddl/agg_tbl_basic_tvf_drop.sql
@@ -0,0 +1 @@
+DROP TABLE IF EXISTS agg_tbl_basic_tvf
\ No newline at end of file
diff --git a/regression-test/suites/load_p0/tvf/ddl/dup_tbl_array_tvf.sql 
b/regression-test/suites/load_p0/tvf/ddl/dup_tbl_array_tvf.sql
new file mode 100644
index 0000000000..4ddbba4063
--- /dev/null
+++ b/regression-test/suites/load_p0/tvf/ddl/dup_tbl_array_tvf.sql
@@ -0,0 +1,42 @@
+CREATE TABLE dup_tbl_array_tvf
+(
+    k00 INT                    NOT NULL,
+    k01 array<BOOLEAN>         NULL,
+    k02 array<TINYINT>         NULL,
+    k03 array<SMALLINT>        NULL,
+    k04 array<INT>             NULL,
+    k05 array<BIGINT>          NULL,
+    k06 array<LARGEINT>        NULL,
+    k07 array<FLOAT>           NULL,
+    k08 array<DOUBLE>          NULL,
+    k09 array<DECIMAL>         NULL,
+    k10 array<DECIMALV3>       NULL,
+    k11 array<DATE>            NULL,
+    k12 array<DATETIME>        NULL,
+    k13 array<DATEV2>          NULL,
+    k14 array<DATETIMEV2>      NULL,
+    k15 array<CHAR>            NULL,
+    k16 array<VARCHAR>         NULL,
+    k17 array<STRING>          NULL,
+    kd01 array<BOOLEAN>         NOT NULL DEFAULT "[]",
+    kd02 array<TINYINT>         NOT NULL DEFAULT "[]",
+    kd03 array<SMALLINT>        NOT NULL DEFAULT "[]",
+    kd04 array<INT>             NOT NULL DEFAULT "[]",
+    kd05 array<BIGINT>          NOT NULL DEFAULT "[]",
+    kd06 array<LARGEINT>        NOT NULL DEFAULT "[]",
+    kd07 array<FLOAT>           NOT NULL DEFAULT "[]",
+    kd08 array<DOUBLE>          NOT NULL DEFAULT "[]",
+    kd09 array<DECIMAL>         NOT NULL DEFAULT "[]",
+    kd10 array<DECIMALV3>       NOT NULL DEFAULT "[]",
+    kd11 array<DATE>            NOT NULL DEFAULT "[]",
+    kd12 array<DATETIME>        NOT NULL DEFAULT "[]",
+    kd13 array<DATEV2>          NOT NULL DEFAULT "[]",
+    kd14 array<DATETIMEV2>      NOT NULL DEFAULT "[]",
+    kd15 array<CHAR>            NOT NULL DEFAULT "[]",
+    kd16 array<VARCHAR>         NOT NULL DEFAULT "[]",
+)
+    DUPLICATE KEY(k00)
+DISTRIBUTED BY HASH(k00) BUCKETS 32
+PROPERTIES (
+    "replication_num" = "1"
+);
\ No newline at end of file
diff --git a/regression-test/suites/load_p0/tvf/ddl/dup_tbl_array_tvf_drop.sql 
b/regression-test/suites/load_p0/tvf/ddl/dup_tbl_array_tvf_drop.sql
new file mode 100644
index 0000000000..9b5ecb1229
--- /dev/null
+++ b/regression-test/suites/load_p0/tvf/ddl/dup_tbl_array_tvf_drop.sql
@@ -0,0 +1 @@
+DROP TABLE IF EXISTS dup_tbl_array_tvf
\ No newline at end of file
diff --git a/regression-test/suites/load_p0/tvf/ddl/dup_tbl_basic_tvf.sql 
b/regression-test/suites/load_p0/tvf/ddl/dup_tbl_basic_tvf.sql
new file mode 100644
index 0000000000..573807576c
--- /dev/null
+++ b/regression-test/suites/load_p0/tvf/ddl/dup_tbl_basic_tvf.sql
@@ -0,0 +1,65 @@
+CREATE TABLE dup_tbl_basic_tvf
+(
+    k00 INT             NOT NULL,
+    k01 DATE            NOT NULL,
+    k02 BOOLEAN         NULL,
+    k03 TINYINT         NULL,
+    k04 SMALLINT        NULL,
+    k05 INT             NULL,
+    k06 BIGINT          NULL,
+    k07 LARGEINT        NULL,
+    k08 FLOAT           NULL,
+    k09 DOUBLE          NULL,
+    k10 DECIMAL(9,1)           NULL,
+    k11 DECIMALV3(9,1)         NULL,
+    k12 DATETIME        NULL,
+    k13 DATEV2          NULL,
+    k14 DATETIMEV2      NULL,
+    k15 CHAR            NULL,
+    k16 VARCHAR         NULL,
+    k17 STRING          NULL,
+    k18 JSON            NULL,
+    kd01 BOOLEAN         NOT NULL DEFAULT "TRUE",
+    kd02 TINYINT         NOT NULL DEFAULT "1",
+    kd03 SMALLINT        NOT NULL DEFAULT "2",
+    kd04 INT             NOT NULL DEFAULT "3",
+    kd05 BIGINT          NOT NULL DEFAULT "4",
+    kd06 LARGEINT        NOT NULL DEFAULT "5",
+    kd07 FLOAT           NOT NULL DEFAULT "6.0",
+    kd08 DOUBLE          NOT NULL DEFAULT "7.0",
+    kd09 DECIMAL         NOT NULL DEFAULT "888888888",
+    kd10 DECIMALV3       NOT NULL DEFAULT "999999999",
+    kd11 DATE            NOT NULL DEFAULT "2023-08-24",
+    kd12 DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    kd13 DATEV2          NOT NULL DEFAULT "2023-08-24",
+    kd14 DATETIMEV2      NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    kd15 CHAR(300)       NOT NULL DEFAULT "我能吞下玻璃而不伤身体",
+    kd16 VARCHAR(300)    NOT NULL DEFAULT "我能吞下玻璃而不伤身体",
+    kd17 STRING          NOT NULL DEFAULT "我能吞下玻璃而不伤身体",
+    kd18 JSON            NULL,
+
+    INDEX idx_inverted_k104 (`k05`) USING INVERTED,
+    INDEX idx_inverted_k110 (`k11`) USING INVERTED,
+    INDEX idx_inverted_k113 (`k13`) USING INVERTED,
+    INDEX idx_inverted_k114 (`k14`) USING INVERTED,
+    INDEX idx_inverted_k117 (`k17`) USING INVERTED PROPERTIES("parser" = 
"english"),
+    INDEX idx_ngrambf_k115 (`k15`) USING NGRAM_BF PROPERTIES("gram_size"="3", 
"bf_size"="256"),
+    INDEX idx_ngrambf_k116 (`k16`) USING NGRAM_BF PROPERTIES("gram_size"="3", 
"bf_size"="256"),
+    INDEX idx_ngrambf_k117 (`k17`) USING NGRAM_BF PROPERTIES("gram_size"="3", 
"bf_size"="256"),
+
+    INDEX idx_bitmap_k104 (`k02`) USING BITMAP,
+    INDEX idx_bitmap_k110 (`kd01`) USING BITMAP,
+
+)
+    DUPLICATE KEY(k00)
+PARTITION BY RANGE(k01)
+(
+    PARTITION p1 VALUES [('2023-08-01'), ('2023-08-11')),
+    PARTITION p2 VALUES [('2023-08-11'), ('2023-08-21')),
+    PARTITION p3 VALUES [('2023-08-21'), ('2023-09-01'))
+)
+DISTRIBUTED BY HASH(k00) BUCKETS 32
+PROPERTIES (
+    "bloom_filter_columns"="k05",
+    "replication_num" = "1"
+);
\ No newline at end of file
diff --git a/regression-test/suites/load_p0/tvf/ddl/dup_tbl_basic_tvf_drop.sql 
b/regression-test/suites/load_p0/tvf/ddl/dup_tbl_basic_tvf_drop.sql
new file mode 100644
index 0000000000..a9f67658af
--- /dev/null
+++ b/regression-test/suites/load_p0/tvf/ddl/dup_tbl_basic_tvf_drop.sql
@@ -0,0 +1 @@
+DROP TABLE IF EXISTS dup_tbl_basic_tvf
\ No newline at end of file
diff --git a/regression-test/suites/load_p0/tvf/ddl/mow_tbl_array_tvf.sql 
b/regression-test/suites/load_p0/tvf/ddl/mow_tbl_array_tvf.sql
new file mode 100644
index 0000000000..65b99950ab
--- /dev/null
+++ b/regression-test/suites/load_p0/tvf/ddl/mow_tbl_array_tvf.sql
@@ -0,0 +1,44 @@
+CREATE TABLE mow_tbl_array_tvf
+(
+    k00 INT                    NOT NULL,
+    k01 array<BOOLEAN>         NULL,
+    k02 array<TINYINT>         NULL,
+    k03 array<SMALLINT>        NULL,
+    k04 array<INT>             NULL,
+    k05 array<BIGINT>          NULL,
+    k06 array<LARGEINT>        NULL,
+    k07 array<FLOAT>           NULL,
+    k08 array<DOUBLE>          NULL,
+    k09 array<DECIMAL>         NULL,
+    k10 array<DECIMALV3>       NULL,
+    k11 array<DATE>            NULL,
+    k12 array<DATETIME>        NULL,
+    k13 array<DATEV2>          NULL,
+    k14 array<DATETIMEV2>      NULL,
+    k15 array<CHAR>            NULL,
+    k16 array<VARCHAR>         NULL,
+    k17 array<STRING>          NULL,
+    kd01 array<BOOLEAN>         NOT NULL DEFAULT "[]",
+    kd02 array<TINYINT>         NOT NULL DEFAULT "[]",
+    kd03 array<SMALLINT>        NOT NULL DEFAULT "[]",
+    kd04 array<INT>             NOT NULL DEFAULT "[]",
+    kd05 array<BIGINT>          NOT NULL DEFAULT "[]",
+    kd06 array<LARGEINT>        NOT NULL DEFAULT "[]",
+    kd07 array<FLOAT>           NOT NULL DEFAULT "[]",
+    kd08 array<DOUBLE>          NOT NULL DEFAULT "[]",
+    kd09 array<DECIMAL>         NOT NULL DEFAULT "[]",
+    kd10 array<DECIMALV3>       NOT NULL DEFAULT "[]",
+    kd11 array<DATE>            NOT NULL DEFAULT "[]",
+    kd12 array<DATETIME>        NOT NULL DEFAULT "[]",
+    kd13 array<DATEV2>          NOT NULL DEFAULT "[]",
+    kd14 array<DATETIMEV2>      NOT NULL DEFAULT "[]",
+    kd15 array<CHAR>            NOT NULL DEFAULT "[]",
+    kd16 array<VARCHAR>         NOT NULL DEFAULT "[]",
+    kd17 array<STRING>          NOT NULL DEFAULT "[]"
+)
+    UNIQUE KEY(k00)
+DISTRIBUTED BY HASH(k00) BUCKETS 32
+PROPERTIES (
+    "replication_num" = "1",
+    "enable_unique_key_merge_on_write" = "true"
+);
diff --git a/regression-test/suites/load_p0/tvf/ddl/mow_tbl_array_tvf_drop.sql 
b/regression-test/suites/load_p0/tvf/ddl/mow_tbl_array_tvf_drop.sql
new file mode 100644
index 0000000000..a4ffbdd312
--- /dev/null
+++ b/regression-test/suites/load_p0/tvf/ddl/mow_tbl_array_tvf_drop.sql
@@ -0,0 +1 @@
+DROP TABLE IF EXISTS mow_tbl_array_tvf
\ No newline at end of file
diff --git a/regression-test/suites/load_p0/tvf/ddl/mow_tbl_basic_tvf.sql 
b/regression-test/suites/load_p0/tvf/ddl/mow_tbl_basic_tvf.sql
new file mode 100644
index 0000000000..f17bbf6a83
--- /dev/null
+++ b/regression-test/suites/load_p0/tvf/ddl/mow_tbl_basic_tvf.sql
@@ -0,0 +1,67 @@
+CREATE TABLE mow_tbl_basic_tvf
+(
+    k00 INT             NOT NULL,
+    k01 DATE            NULL,
+    k02 BOOLEAN         NULL,
+    k03 TINYINT         NULL,
+    k04 SMALLINT        NULL,
+    k05 INT             NULL,
+    k06 BIGINT          NULL,
+    k07 LARGEINT        NULL,
+    k08 FLOAT           NULL,
+    k09 DOUBLE          NULL,
+    k10 DECIMAL(9,1)           NULL,
+    k11 DECIMALV3(9,1)         NULL,
+    k12 DATETIME        NULL,
+    k13 DATEV2          NULL,
+    k14 DATETIMEV2      NULL,
+    k15 CHAR            NULL,
+    k16 VARCHAR         NULL,
+    k17 STRING          NULL,
+    k18 JSON            NULL,
+    kd01 BOOLEAN         NOT NULL DEFAULT "TRUE",
+    kd02 TINYINT         NOT NULL DEFAULT "1",
+    kd03 SMALLINT        NOT NULL DEFAULT "2",
+    kd04 INT             NOT NULL DEFAULT "3",
+    kd05 BIGINT          NOT NULL DEFAULT "4",
+    kd06 LARGEINT        NOT NULL DEFAULT "5",
+    kd07 FLOAT           NOT NULL DEFAULT "6.0",
+    kd08 DOUBLE          NOT NULL DEFAULT "7.0",
+    kd09 DECIMAL         NOT NULL DEFAULT "888888888",
+    kd10 DECIMALV3       NOT NULL DEFAULT "999999999",
+    kd11 DATE            NOT NULL DEFAULT "2023-08-24",
+    kd12 DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    kd13 DATEV2          NOT NULL DEFAULT "2023-08-24",
+    kd14 DATETIMEV2      NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    kd15 CHAR(300)            NOT NULL DEFAULT "我能吞下玻璃而不伤身体",
+    kd16 VARCHAR(300)         NOT NULL DEFAULT "我能吞下玻璃而不伤身体",
+    kd17 STRING          NOT NULL DEFAULT "我能吞下玻璃而不伤身体",
+    kd18 JSON            NULL,
+
+    INDEX idx_inverted_k104 (`k05`) USING INVERTED,
+    INDEX idx_inverted_k110 (`k11`) USING INVERTED,
+    INDEX idx_inverted_k113 (`k13`) USING INVERTED,
+    INDEX idx_inverted_k114 (`k14`) USING INVERTED,
+    INDEX idx_inverted_k117 (`k17`) USING INVERTED PROPERTIES("parser" = 
"english"),
+    INDEX idx_bitmap_k104 (`k05`) USING BITMAP,
+    INDEX idx_bitmap_k110 (`k11`) USING BITMAP,
+    INDEX idx_bitmap_k113 (`k13`) USING BITMAP,
+    INDEX idx_bitmap_k114 (`k14`) USING BITMAP,
+    INDEX idx_bitmap_k117 (`k17`) USING BITMAP,
+    INDEX idx_ngrambf_k115 (`k15`) USING NGRAM_BF PROPERTIES("gram_size"="3", 
"bf_size"="256"),
+    INDEX idx_ngrambf_k116 (`k16`) USING NGRAM_BF PROPERTIES("gram_size"="3", 
"bf_size"="256"),
+    INDEX idx_ngrambf_k117 (`k17`) USING NGRAM_BF PROPERTIES("gram_size"="3", 
"bf_size"="256")
+)
+    UNIQUE KEY(k00,k01)
+PARTITION BY RANGE(k01)
+(
+    PARTITION p1 VALUES [('2023-08-01'), ('2023-08-11')),
+    PARTITION p2 VALUES [('2023-08-11'), ('2023-08-21')),
+    PARTITION p3 VALUES [('2023-08-21'), ('2023-09-01'))
+)
+DISTRIBUTED BY HASH(k00) BUCKETS 32
+PROPERTIES (
+    "bloom_filter_columns"="k05",
+    "replication_num" = "1",
+    "enable_unique_key_merge_on_write" = "true"
+);
\ No newline at end of file
diff --git a/regression-test/suites/load_p0/tvf/ddl/mow_tbl_basic_tvf_drop.sql 
b/regression-test/suites/load_p0/tvf/ddl/mow_tbl_basic_tvf_drop.sql
new file mode 100644
index 0000000000..d9f4884e35
--- /dev/null
+++ b/regression-test/suites/load_p0/tvf/ddl/mow_tbl_basic_tvf_drop.sql
@@ -0,0 +1 @@
+DROP TABLE IF EXISTS mow_tbl_basic_tvf
\ No newline at end of file
diff --git a/regression-test/suites/load_p0/tvf/ddl/uniq_tbl_array_tvf.sql 
b/regression-test/suites/load_p0/tvf/ddl/uniq_tbl_array_tvf.sql
new file mode 100644
index 0000000000..b38a1b0a3d
--- /dev/null
+++ b/regression-test/suites/load_p0/tvf/ddl/uniq_tbl_array_tvf.sql
@@ -0,0 +1,43 @@
+CREATE TABLE uniq_tbl_array_tvf
+(
+    k00 INT                    NOT NULL,
+    k01 array<BOOLEAN>         NULL,
+    k02 array<TINYINT>         NULL,
+    k03 array<SMALLINT>        NULL,
+    k04 array<INT>             NULL,
+    k05 array<BIGINT>          NULL,
+    k06 array<LARGEINT>        NULL,
+    k07 array<FLOAT>           NULL,
+    k08 array<DOUBLE>          NULL,
+    k09 array<DECIMAL>         NULL,
+    k10 array<DECIMALV3>       NULL,
+    k11 array<DATE>            NULL,
+    k12 array<DATETIME>        NULL,
+    k13 array<DATEV2>          NULL,
+    k14 array<DATETIMEV2>      NULL,
+    k15 array<CHAR>            NULL,
+    k16 array<VARCHAR>         NULL,
+    k17 array<STRING>          NULL,
+    kd01 array<BOOLEAN>         NOT NULL DEFAULT "[]",
+    kd02 array<TINYINT>         NOT NULL DEFAULT "[]",
+    kd03 array<SMALLINT>        NOT NULL DEFAULT "[]",
+    kd04 array<INT>             NOT NULL DEFAULT "[]",
+    kd05 array<BIGINT>          NOT NULL DEFAULT "[]",
+    kd06 array<LARGEINT>        NOT NULL DEFAULT "[]",
+    kd07 array<FLOAT>           NOT NULL DEFAULT "[]",
+    kd08 array<DOUBLE>          NOT NULL DEFAULT "[]",
+    kd09 array<DECIMAL>         NOT NULL DEFAULT "[]",
+    kd10 array<DECIMALV3>       NOT NULL DEFAULT "[]",
+    kd11 array<DATE>            NOT NULL DEFAULT "[]",
+    kd12 array<DATETIME>        NOT NULL DEFAULT "[]",
+    kd13 array<DATEV2>          NOT NULL DEFAULT "[]",
+    kd14 array<DATETIMEV2>      NOT NULL DEFAULT "[]",
+    kd15 array<CHAR>            NOT NULL DEFAULT "[]",
+    kd16 array<VARCHAR>         NOT NULL DEFAULT "[]",
+    kd17 array<STRING>          NOT NULL DEFAULT "[]",
+)
+    UNIQUE KEY(k00)
+DISTRIBUTED BY HASH(k00) BUCKETS 32
+PROPERTIES (
+    "replication_num" = "1"
+);
\ No newline at end of file
diff --git a/regression-test/suites/load_p0/tvf/ddl/uniq_tbl_array_tvf_drop.sql 
b/regression-test/suites/load_p0/tvf/ddl/uniq_tbl_array_tvf_drop.sql
new file mode 100644
index 0000000000..8a11460215
--- /dev/null
+++ b/regression-test/suites/load_p0/tvf/ddl/uniq_tbl_array_tvf_drop.sql
@@ -0,0 +1 @@
+DROP TABLE IF EXISTS uniq_tbl_array_tvf
\ No newline at end of file
diff --git a/regression-test/suites/load_p0/tvf/ddl/uniq_tbl_basic_tvf.sql 
b/regression-test/suites/load_p0/tvf/ddl/uniq_tbl_basic_tvf.sql
new file mode 100644
index 0000000000..b255495130
--- /dev/null
+++ b/regression-test/suites/load_p0/tvf/ddl/uniq_tbl_basic_tvf.sql
@@ -0,0 +1,58 @@
+CREATE TABLE uniq_tbl_basic_tvf
+(
+    k00 INT             NOT NULL,
+    k01 DATE            NOT NULL,
+    k02 BOOLEAN         NULL,
+    k03 TINYINT         NULL,
+    k04 SMALLINT        NULL,
+    k05 INT             NULL,
+    k06 BIGINT          NULL,
+    k07 LARGEINT        NULL,
+    k08 FLOAT           NULL,
+    k09 DOUBLE          NULL,
+    k10 DECIMAL(9,1)         NULL,
+    k11 DECIMALV3(9,1)       NULL,
+    k12 DATETIME        NULL,
+    k13 DATEV2          NULL,
+    k14 DATETIMEV2      NULL,
+    k15 CHAR            NULL,
+    k16 VARCHAR         NULL,
+    k17 STRING          NULL,
+    k18 JSON            NULL,
+    kd01 BOOLEAN         NOT NULL DEFAULT "TRUE",
+    kd02 TINYINT         NOT NULL DEFAULT "1",
+    kd03 SMALLINT        NOT NULL DEFAULT "2",
+    kd04 INT             NOT NULL DEFAULT "3",
+    kd05 BIGINT          NOT NULL DEFAULT "4",
+    kd06 LARGEINT        NOT NULL DEFAULT "5",
+    kd07 FLOAT           NOT NULL DEFAULT "6.0",
+    kd08 DOUBLE          NOT NULL DEFAULT "7.0",
+    kd09 DECIMAL         NOT NULL DEFAULT "888888888",
+    kd10 DECIMALV3       NOT NULL DEFAULT "999999999",
+    kd11 DATE            NOT NULL DEFAULT "2023-08-24",
+    kd12 DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    kd13 DATEV2          NOT NULL DEFAULT "2023-08-24",
+    kd14 DATETIMEV2      NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    kd15 CHAR(300)       NOT NULL DEFAULT "我能吞下玻璃而不伤身体",
+    kd16 VARCHAR(300)    NOT NULL DEFAULT "我能吞下玻璃而不伤身体",
+    kd17 STRING          NOT NULL DEFAULT "我能吞下玻璃而不伤身体",
+    kd18 JSON            NULL,
+
+    INDEX idx_bitmap_k104 (`k02`) USING BITMAP,
+    INDEX idx_bitmap_k110 (`kd01`) USING BITMAP,
+    INDEX idx_bitmap_k113 (`k13`) USING BITMAP,
+    INDEX idx_bitmap_k114 (`k14`) USING BITMAP,
+    INDEX idx_bitmap_k117 (`k17`) USING BITMAP
+)
+UNIQUE KEY(k00,k01)
+PARTITION BY RANGE(k01)
+(
+    PARTITION p1 VALUES [('2023-08-01'), ('2023-08-11')),
+    PARTITION p2 VALUES [('2023-08-11'), ('2023-08-21')),
+    PARTITION p3 VALUES [('2023-08-21'), ('2023-09-01'))
+)
+DISTRIBUTED BY HASH(k00) BUCKETS 32
+PROPERTIES (
+    "function_column.sequence_col" = "k12",
+    "replication_num" = "1"
+);
\ No newline at end of file
diff --git a/regression-test/suites/load_p0/tvf/ddl/uniq_tbl_basic_tvf_drop.sql 
b/regression-test/suites/load_p0/tvf/ddl/uniq_tbl_basic_tvf_drop.sql
new file mode 100644
index 0000000000..0e64655f12
--- /dev/null
+++ b/regression-test/suites/load_p0/tvf/ddl/uniq_tbl_basic_tvf_drop.sql
@@ -0,0 +1 @@
+DROP TABLE IF EXISTS uniq_tbl_basic_tvf
\ No newline at end of file
diff --git a/regression-test/suites/load_p0/tvf/test_s3_tvf.groovy 
b/regression-test/suites/load_p0/tvf/test_s3_tvf.groovy
new file mode 100644
index 0000000000..77d32b9c42
--- /dev/null
+++ b/regression-test/suites/load_p0/tvf/test_s3_tvf.groovy
@@ -0,0 +1,393 @@
+// 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_s3_tvf", "load_p0") {
+
+    def tables = [
+            "agg_tbl_basic_tvf",
+            "dup_tbl_array_tvf",
+            "dup_tbl_basic_tvf",
+            "mow_tbl_array_tvf",
+            "mow_tbl_basic_tvf",
+            "uniq_tbl_array_tvf",
+            "uniq_tbl_basic_tvf"
+    ]
+
+    //deal with agg tables in separate
+    def basicTables = [
+            "dup_tbl_basic_tvf",
+            "mow_tbl_basic_tvf",
+            "uniq_tbl_basic_tvf",
+    ]
+
+    def arrayTables = [
+            "dup_tbl_array_tvf",
+            "uniq_tbl_array_tvf",
+            "mow_tbl_array_tvf"
+    ]
+
+    def uniqTable = [
+            "uniq_tbl_basic_tvf"
+    ]
+
+    def attributeList = [
+
+    ]
+
+    // errors: no capital prop, no column mappings, array type loading stuck
+
+    /* normal */
+    for(String table : basicTables) {
+        attributeList.add(new TvfAttribute(table, ["K00", "K01", "K02", "K03", 
"K04", "K05", "K06", "K07", "K08", "K09", "K10", "K11", "K12", "K13", "K14", 
"K15", "K16", "K17", "K18"], "", "")
+                .addProperty("uri", 
"s3://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_data.csv")
+                .addProperty("format", "csv")
+                .addProperty("column_separator", "|"))
+    }
+
+    attributeList.add(new TvfAttribute("agg_tbl_basic_tvf", "c1 as k00,c2 as 
k01,c3 as k02,c4 as k03,c5 as k04,c6 as k05,c7 as k06,c8 as k07,c9 as k08,c10 
as k09,c11 as k10,c12 as k11,c13 as k12,c14 as k13,c15 as k14,c16 as k15,c17 as 
k16,c18 as k17,c19 as k18, to_bitmap(c6) as k19, HLL_HASH(c6) as k20, 
TO_QUANTILE_STATE(c5, 1.0) as k21, to_bitmap(c6) as kd19, HLL_HASH(c6) as kd20, 
TO_QUANTILE_STATE(c5, 1.0) as kd21",
+            
"k00,k01,k02,k03,k04,k05,k06,k07,k08,k09,k10,k11,k12,k13,k14,k15,k16,k17,k18,k19,k20,k21,kd19,kd20,kd21"
 ,"", "")
+            .addProperty("uri", 
"s3://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_data.csv")
+            .addProperty("format", "csv")
+            .addProperty("column_separator", "|"))
+
+    for(String table : arrayTables) {
+        attributeList.add(new TvfAttribute(table, ["K00", "K01", "K02", "K03", 
"K04", "K05", "K06", "K07", "K08", "K09", "K10", "K11", "K12", "K13", "K14", 
"K15", "K16", "K17"], "", "").addProperty("uri", 
"s3://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_array_data.csv")
+                .addProperty("uri", 
"s3://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_array_data.csv")
+                .addProperty("format", "csv")
+                .addProperty("column_separator", "|"))
+    }
+
+    for(String table : basicTables) {
+        attributeList.add(new TvfAttribute(table, ["k00", "k01", "k02", "k03", 
"k04", "k05", "k06", "k07", "k08", "k09", "k10", "k11", "k12", "k13", "k14", 
"k15", "k16", "k17", "k18"], "", "")
+                .addProperty("uri", 
"s3://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_data.csv")
+                .addProperty("format", "csv")
+                .addProperty("column_separator", "|"))
+    }
+
+    attributeList.add(new TvfAttribute("agg_tbl_basic_tvf", "c1 as k00,c2 as 
k01,c3 as k02,c4 as k03,c5 as k04,c6 as k05,c7 as k06,c8 as k07,c9 as k08,c10 
as k09,c11 as k10,c12 as k11,c13 as k12,c14 as k13,c15 as k14,c16 as k15,c17 as 
k16,c18 as k17,c19 as k18, to_bitmap(c6) as k19, HLL_HASH(c6) as k20, 
TO_QUANTILE_STATE(c5, 1.0) as k21, to_bitmap(c6) as kd19, HLL_HASH(c6) as kd20, 
TO_QUANTILE_STATE(c5, 1.0) as kd21",
+            
"k00,k01,k02,k03,k04,k05,k06,k07,k08,k09,k10,k11,k12,k13,k14,k15,k16,k17,k18,k19,k20,k21,kd19,kd20,kd21"
 ,"", "")
+            .addProperty("uri", 
"s3://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_data.csv")
+            .addProperty("format", "csv")
+            .addProperty("column_separator", "|"))
+
+    for(String table : arrayTables) {
+        attributeList.add(new TvfAttribute(table, ["k00", "k01", "k02", "k03", 
"k04", "k05", "k06", "k07", "k08", "k09", "k10", "k11", "k12", "k13", "k14", 
"k15", "k16", "k17"], "", "")
+                .addProperty("uri", 
"s3://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_array_data.csv")
+                .addProperty("format", "csv")
+                .addProperty("column_separator", "|"))
+    }
+
+    for(String table : basicTables) {
+        attributeList.add(new TvfAttribute(table, ["k00", "k01", "k02", "k03", 
"k04", "k05", "k06", "k07", "k08", "k09", "k10", "k11", "k12", "k13", "k14", 
"k15", "k16", "k17", "k18"], "", "")
+                .addProperty("uri", 
"https://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_data.csv";)
+                .addProperty("format", "csv")
+                .addProperty("column_separator", "|"))
+    }
+
+    attributeList.add(new TvfAttribute("agg_tbl_basic_tvf", "c1 as k00,c2 as 
k01,c3 as k02,c4 as k03,c5 as k04,c6 as k05,c7 as k06,c8 as k07,c9 as k08,c10 
as k09,c11 as k10,c12 as k11,c13 as k12,c14 as k13,c15 as k14,c16 as k15,c17 as 
k16,c18 as k17,c19 as k18, to_bitmap(c6) as k19, HLL_HASH(c6) as k20, 
TO_QUANTILE_STATE(c5, 1.0) as k21, to_bitmap(c6) as kd19, HLL_HASH(c6) as kd20, 
TO_QUANTILE_STATE(c5, 1.0) as kd21",
+            
"k00,k01,k02,k03,k04,k05,k06,k07,k08,k09,k10,k11,k12,k13,k14,k15,k16,k17,k18,k19,k20,k21,kd19,kd20,kd21"
 ,"", "")
+            .addProperty("uri", 
"https://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_data.csv";)
+            .addProperty("format", "csv")
+            .addProperty("column_separator", "|"))
+
+    for(String table : arrayTables) {
+        attributeList.add(new TvfAttribute(table, ["k00", "k01", "k02", "k03", 
"k04", "k05", "k06", "k07", "k08", "k09", "k10", "k11", "k12", "k13", "k14", 
"k15", "k16", "k17"], "", "")
+                .addProperty("uri", 
"https://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_array_data.csv";)
+                .addProperty("format", "csv")
+                .addProperty("column_separator", "|"))
+    }
+
+//    for(String table : basicTables) {
+//        attributeList.add(new TvfAttribute(table, ["k00", "k01", "k02", 
"k03", "k04", "k05", "k06", "k07", "k08", "k09", "k10", "k11", "k12", "k13", 
"k14", "k15", "k16", "k17", "k18"], "", "")
+//                .addProperty("uri", 
"https://cos.ap-beijing.myqcloud.com/doris-build-1308700295/regression/load/data/basic_data.csv";)
+//                .addProperty("format", "csv")
+//                .addProperty("column_separator", "|")
+//                .addProperty("use_path_style", "true"))
+//    }
+//
+//    attributeList.add(new TvfAttribute("agg_tbl_basic_tvf", "c1 as k00,c2 as 
k01,c3 as k02,c4 as k03,c5 as k04,c6 as k05,c7 as k06,c8 as k07,c9 as k08,c10 
as k09,c11 as k10,c12 as k11,c13 as k12,c14 as k13,c15 as k14,c16 as k15,c17 as 
k16,c18 as k17,c19 as k18, to_bitmap(c6) as k19, HLL_HASH(c6) as k20, 
TO_QUANTILE_STATE(c5, 1.0) as k21, to_bitmap(c6) as kd19, HLL_HASH(c6) as kd20, 
TO_QUANTILE_STATE(c5, 1.0) as kd21",
+//            
"k00,k01,k02,k03,k04,k05,k06,k07,k08,k09,k10,k11,k12,k13,k14,k15,k16,k17,k18,k19,k20,k21,kd19,kd20,kd21"
 ,"", "")
+//            .addProperty("uri", 
"https://cos.ap-beijing.myqcloud.com/doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_data.csv";)
+//            .addProperty("format", "csv")
+//            .addProperty("column_separator", "|")
+//            .addProperty("use_path_style", "true"))
+//
+//    for(String table : arrayTables) {
+//        attributeList.add(new TvfAttribute(table, ["k00", "k01", "k02", 
"k03", "k04", "k05", "k06", "k07", "k08", "k09", "k10", "k11", "k12", "k13", 
"k14", "k15", "k16", "k17"], "", "")
+//                .addProperty("uri", 
"https://cos.ap-beijing.myqcloud.com/doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_array_data.csv";)
+//                .addProperty("format", "csv")
+//                .addProperty("column_separator", "|")
+//                .addProperty("use_path_style", "true"))
+//    }
+
+    /* error */
+    for(String table : basicTables) {
+        attributeList.add(new TvfAttribute(table, ["k00", "k01", "k02", "k03", 
"k04", "k05", "k06", "k07", "k08", "k09", "k10", "k11", "k12", "k13", "k14", 
"k15", "k16", "k17", "k18"], "", "", true)
+                .addProperty("uri", 
"s3://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_data_with_errors.csv")
+                .addProperty("format", "csv")
+                .addProperty("column_separator", "|"))
+    }
+
+    attributeList.add(new TvfAttribute("agg_tbl_basic_tvf", "c1 as k00,c2 as 
k01,c3 as k02,c4 as k03,c5 as k04,c6 as k05,c7 as k06,c8 as k07,c9 as k08,c10 
as k09,c11 as k10,c12 as k11,c13 as k12,c14 as k13,c15 as k14,c16 as k15,c17 as 
k16,c18 as k17,c19 as k18, to_bitmap(c6) as k19, HLL_HASH(c6) as k20, 
TO_QUANTILE_STATE(c5, 1.0) as k21, to_bitmap(c6) as kd19, HLL_HASH(c6) as kd20, 
TO_QUANTILE_STATE(c5, 1.0) as kd21",
+            
"k00,k01,k02,k03,k04,k05,k06,k07,k08,k09,k10,k11,k12,k13,k14,k15,k16,k17,k18,k19,k20,k21,kd19,kd20,kd21"
 ,"", "", true)
+            .addProperty("uri", 
"s3://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_data_with_errors.csv")
+            .addProperty("format", "csv")
+            .addProperty("column_separator", "|"))
+
+    for(String table : arrayTables) {
+        attributeList.add(new TvfAttribute(table, ["k00", "k01", "k02", "k03", 
"k04", "k05", "k06", "k07", "k08", "k09", "k10", "k11", "k12", "k13", "k14", 
"k15", "k16", "k17"], "", "", true)
+                .addProperty("uri", 
"s3://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_array_data_with_errors.csv")
+                .addProperty("format", "csv")
+                .addProperty("column_separator", "|"))
+    }
+
+    /* skip lines */
+    for(String table : basicTables) {
+        attributeList.add(new TvfAttribute(table, ["k00", "k01", "k02", "k03", 
"k04", "k05", "k06", "k07", "k08", "k09", "k10", "k11", "k12", "k13", "k14", 
"k15", "k16", "k17", "k18"], "", "")
+                .addProperty("uri", 
"s3://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_data_with_errors.csv")
+                .addProperty("format", "csv")
+                .addProperty("column_separator", "|")
+                .addProperty("skip_lines", "10"))
+    }
+
+    attributeList.add(new TvfAttribute("agg_tbl_basic_tvf", "c1 as k00,c2 as 
k01,c3 as k02,c4 as k03,c5 as k04,c6 as k05,c7 as k06,c8 as k07,c9 as k08,c10 
as k09,c11 as k10,c12 as k11,c13 as k12,c14 as k13,c15 as k14,c16 as k15,c17 as 
k16,c18 as k17,c19 as k18, to_bitmap(c6) as k19, HLL_HASH(c6) as k20, 
TO_QUANTILE_STATE(c5, 1.0) as k21, to_bitmap(c6) as kd19, HLL_HASH(c6) as kd20, 
TO_QUANTILE_STATE(c5, 1.0) as kd21",
+            
"k00,k01,k02,k03,k04,k05,k06,k07,k08,k09,k10,k11,k12,k13,k14,k15,k16,k17,k18,k19,k20,k21,kd19,kd20,kd21"
 ,"", "")
+            .addProperty("uri", 
"s3://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_data_with_errors.csv")
+            .addProperty("format", "csv")
+            .addProperty("column_separator", "|")
+            .addProperty("skip_lines", "10"))
+
+    for(String table : arrayTables) {
+        attributeList.add(new TvfAttribute(table, ["k00", "k01", "k02", "k03", 
"k04", "k05", "k06", "k07", "k08", "k09", "k10", "k11", "k12", "k13", "k14", 
"k15", "k16", "k17"], "", "")
+                .addProperty("uri", 
"s3://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_array_data_with_errors.csv")
+                .addProperty("format", "csv")
+                .addProperty("column_separator", "|")
+                .addProperty("skip_lines", "10"))
+    }
+
+    /* compress type */
+    for(String table : basicTables) {
+        attributeList.add(new TvfAttribute(table, ["k00", "k01", "k02", "k03", 
"k04", "k05", "k06", "k07", "k08", "k09", "k10", "k11", "k12", "k13", "k14", 
"k15", "k16", "k17", "k18"], "", "")
+                .addProperty("uri", 
"https://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_data.csv.gz";)
+                .addProperty("format", "csv")
+                .addProperty("column_separator", 
"|").addProperty("compress_type", "GZ"))
+    }
+
+    attributeList.add(new TvfAttribute("agg_tbl_basic_tvf", "c1 as k00,c2 as 
k01,c3 as k02,c4 as k03,c5 as k04,c6 as k05,c7 as k06,c8 as k07,c9 as k08,c10 
as k09,c11 as k10,c12 as k11,c13 as k12,c14 as k13,c15 as k14,c16 as k15,c17 as 
k16,c18 as k17,c19 as k18, to_bitmap(c6) as k19, HLL_HASH(c6) as k20, 
TO_QUANTILE_STATE(c5, 1.0) as k21, to_bitmap(c6) as kd19, HLL_HASH(c6) as kd20, 
TO_QUANTILE_STATE(c5, 1.0) as kd21",
+            
"k00,k01,k02,k03,k04,k05,k06,k07,k08,k09,k10,k11,k12,k13,k14,k15,k16,k17,k18,k19,k20,k21,kd19,kd20,kd21"
 ,"", "")
+            .addProperty("uri", 
"https://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_data.csv.gz";)
+            .addProperty("format", "csv")
+            .addProperty("column_separator", "|")
+            .addProperty("compress_type", "GZ"))
+
+    for(String table : arrayTables) {
+        attributeList.add(new TvfAttribute(table, ["k00", "k01", "k02", "k03", 
"k04", "k05", "k06", "k07", "k08", "k09", "k10", "k11", "k12", "k13", "k14", 
"k15", "k16", "k17"], "", "")
+                .addProperty("uri", 
"https://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_array_data.csv.gz";)
+                .addProperty("format", "csv")
+                .addProperty("column_separator", "|")
+                .addProperty("compress_type", "GZ"))
+    }
+
+    for(String table : basicTables) {
+        attributeList.add(new TvfAttribute(table, ["k00", "k01", "k02", "k03", 
"k04", "k05", "k06", "k07", "k08", "k09", "k10", "k11", "k12", "k13", "k14", 
"k15", "k16", "k17", "k18"], "", "")
+                .addProperty("uri", 
"https://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_data.csv.bz2";)
+                .addProperty("format", "csv")
+                .addProperty("column_separator", 
"|").addProperty("compress_type", "BZ2"))
+    }
+
+    attributeList.add(new TvfAttribute("agg_tbl_basic_tvf", "c1 as k00,c2 as 
k01,c3 as k02,c4 as k03,c5 as k04,c6 as k05,c7 as k06,c8 as k07,c9 as k08,c10 
as k09,c11 as k10,c12 as k11,c13 as k12,c14 as k13,c15 as k14,c16 as k15,c17 as 
k16,c18 as k17,c19 as k18, to_bitmap(c6) as k19, HLL_HASH(c6) as k20, 
TO_QUANTILE_STATE(c5, 1.0) as k21, to_bitmap(c6) as kd19, HLL_HASH(c6) as kd20, 
TO_QUANTILE_STATE(c5, 1.0) as kd21",
+            
"k00,k01,k02,k03,k04,k05,k06,k07,k08,k09,k10,k11,k12,k13,k14,k15,k16,k17,k18,k19,k20,k21,kd19,kd20,kd21"
 ,"", "")
+            .addProperty("uri", 
"https://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_data.csv.bz2";)
+            .addProperty("format", "csv")
+            .addProperty("column_separator", "|")
+            .addProperty("compress_type", "BZ2"))
+
+    for(String table : arrayTables) {
+        attributeList.add(new TvfAttribute(table, ["k00", "k01", "k02", "k03", 
"k04", "k05", "k06", "k07", "k08", "k09", "k10", "k11", "k12", "k13", "k14", 
"k15", "k16", "k17"], "", "")
+                .addProperty("uri", 
"https://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_array_data.csv.bz2";)
+                .addProperty("format", "csv")
+                .addProperty("column_separator", "|")
+                .addProperty("compress_type", "BZ2"))
+    }
+
+    for(String table : basicTables) {
+        attributeList.add(new TvfAttribute(table, ["k00", "k01", "k02", "k03", 
"k04", "k05", "k06", "k07", "k08", "k09", "k10", "k11", "k12", "k13", "k14", 
"k15", "k16", "k17", "k18"], "", "")
+                .addProperty("uri", 
"https://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_data.csv.lz4";)
+                .addProperty("format", "csv")
+                .addProperty("column_separator", 
"|").addProperty("compress_type", "LZ4FRAME"))
+    }
+
+    attributeList.add(new TvfAttribute("agg_tbl_basic_tvf", "c1 as k00,c2 as 
k01,c3 as k02,c4 as k03,c5 as k04,c6 as k05,c7 as k06,c8 as k07,c9 as k08,c10 
as k09,c11 as k10,c12 as k11,c13 as k12,c14 as k13,c15 as k14,c16 as k15,c17 as 
k16,c18 as k17,c19 as k18, to_bitmap(c6) as k19, HLL_HASH(c6) as k20, 
TO_QUANTILE_STATE(c5, 1.0) as k21, to_bitmap(c6) as kd19, HLL_HASH(c6) as kd20, 
TO_QUANTILE_STATE(c5, 1.0) as kd21",
+            
"k00,k01,k02,k03,k04,k05,k06,k07,k08,k09,k10,k11,k12,k13,k14,k15,k16,k17,k18,k19,k20,k21,kd19,kd20,kd21"
 ,"", "")
+            .addProperty("uri", 
"https://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_data.csv.lz4";)
+            .addProperty("format", "csv")
+            .addProperty("column_separator", "|")
+            .addProperty("compress_type", "LZ4FRAME"))
+
+    for(String table : arrayTables) {
+        attributeList.add(new TvfAttribute(table, ["k00", "k01", "k02", "k03", 
"k04", "k05", "k06", "k07", "k08", "k09", "k10", "k11", "k12", "k13", "k14", 
"k15", "k16", "k17"], "", "")
+                .addProperty("uri", 
"https://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_array_data.csv.lz4";)
+                .addProperty("format", "csv")
+                .addProperty("column_separator", "|")
+                .addProperty("compress_type", "LZ4FRAME"))
+    }
+
+    for(String table : basicTables) {
+        attributeList.add(new TvfAttribute(table, ["k00", "k01", "k02", "k03", 
"k04", "k05", "k06", "k07", "k08", "k09", "k10", "k11", "k12", "k13", "k14", 
"k15", "k16", "k17", "k18"], "WHERE c1 > 50", "")
+                .addProperty("uri", 
"s3://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_data.csv")
+                .addProperty("format", "csv")
+                .addProperty("column_separator", "|"))
+    }
+
+    attributeList.add(new TvfAttribute("agg_tbl_basic_tvf", "c1 as k00,c2 as 
k01,c3 as k02,c4 as k03,c5 as k04,c6 as k05,c7 as k06,c8 as k07,c9 as k08,c10 
as k09,c11 as k10,c12 as k11,c13 as k12,c14 as k13,c15 as k14,c16 as k15,c17 as 
k16,c18 as k17,c19 as k18, to_bitmap(c6) as k19, HLL_HASH(c6) as k20, 
TO_QUANTILE_STATE(c5, 1.0) as k21, to_bitmap(c6) as kd19, HLL_HASH(c6) as kd20, 
TO_QUANTILE_STATE(c5, 1.0) as kd21",
+            
"k00,k01,k02,k03,k04,k05,k06,k07,k08,k09,k10,k11,k12,k13,k14,k15,k16,k17,k18,k19,k20,k21,kd19,kd20,kd21"
 ,"WHERE c1 > 50", "")
+            .addProperty("uri", 
"s3://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_data.csv")
+            .addProperty("format", "csv")
+            .addProperty("column_separator", "|"))
+
+    for(String table : arrayTables) {
+        attributeList.add(new TvfAttribute(table, ["k00", "k01", "k02", "k03", 
"k04", "k05", "k06", "k07", "k08", "k09", "k10", "k11", "k12", "k13", "k14", 
"k15", "k16", "k17"], "WHERE c1 > 50", "")
+                .addProperty("uri", 
"s3://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_array_data.csv")
+                .addProperty("format", "csv")
+                .addProperty("column_separator", "|"))
+    }
+
+    for(String table : uniqTable) {
+        attributeList.add(new TvfAttribute(table, ["k00", "k01", "k02", "k03", 
"k04", "k05", "k06", "k07", "k08", "k09", "k10", "k11", "k12", "k13", "k14", 
"k15", "k16", "k17", "k18"], "", "ORDER BY c1")
+                .addProperty("uri", 
"s3://doris-build-1308700295.cos.ap-beijing.myqcloud.com/regression/load/data/basic_data.csv")
+                .addProperty("format", "csv")
+                .addProperty("column_separator", "|"))
+    }
+
+    def ak = getS3AK()
+    def sk = getS3SK()
+
+    for(String tbl : tables) {
+        sql new File("""${ context.file.parent }/ddl/${tbl}_drop.sql""").text
+        sql new File("""${ context.file.parent }/ddl/${tbl}.sql""").text
+    }
+
+    def i = 0
+    for (TvfAttribute attribute : attributeList) {
+
+        def prop = attribute.getPropertiesStr()
+        def insertList = attribute.getInsertList()
+        def selectList = attribute.getSelectList()
+
+        def sqlStr = """
+        INSERT INTO ${attribute.tableName} (${insertList})
+        SELECT ${selectList}
+        FROM S3 (
+            "s3.access_key" = "$ak",
+            "s3.secret_key" = "$sk",
+            "s3.region" = "ap-beijing",
+            ${prop}
+        ) ${attribute.whereClause}
+          ${attribute.orderByClause}
+        """
+
+        logger.info("submit sql: ${sqlStr}");
+        try {
+            sql """${sqlStr}"""
+        } catch (Exception ex) {
+            assertTrue(attribute.expectFiled)
+            logger.info("error: ", ex)
+        }
+
+        qt_select """ select count(*) from $attribute.tableName """
+        ++i
+    }
+
+
+}
+
+class TvfAttribute {
+    public String tableName
+    public String[] columns = new ArrayList<>()
+    public Map<String, String> properties = new HashMap<>()
+    public String whereClause
+    public String orderByClause
+    public boolean expectFiled
+    public String selectList
+    public String insertList
+
+    TvfAttribute(String tableName, List<String> columns, String whereClause, 
String orderByClause, boolean expectFiled = false) {
+        this.tableName = tableName
+        this.columns = columns
+        this.whereClause = whereClause
+        this.orderByClause = orderByClause
+        this.expectFiled = expectFiled
+        this.insertList = ""
+        this.selectList = ""
+    }
+
+    TvfAttribute(String tableName, String selectList, String insertList, 
String whereClause, String orderByClause, boolean expectFiled = false) {
+        this.tableName = tableName
+        this.columns = columns
+        this.whereClause = whereClause
+        this.orderByClause = orderByClause
+        this.expectFiled = expectFiled
+        this.insertList = insertList
+        this.selectList = selectList
+    }
+
+    String getSelectList() {
+        if (selectList.length() != 0) {
+            return selectList
+        }
+        if ("csv".equalsIgnoreCase(properties.get("format"))) {
+            String res = ""
+            def i = 1
+            for(String column : columns) {
+                res += ("c$i as $column")
+                res += ","
+                ++i
+            }
+            return res.substring(0, res.size() - 1)
+        }
+        return getInsertList()
+    }
+
+    String getInsertList() {
+        if (insertList.length() != 0) {
+            return insertList
+        }
+        String res = ""
+        for(String column : columns) {
+            res += column
+            res += ","
+        }
+        return res.substring(0, res.size() - 1)
+    }
+
+    String getPropertiesStr() {
+        if (properties.isEmpty()) {
+            return "*"
+        }
+        String prop = ""
+        properties.forEach (k, v) -> {
+            prop += "\"${k}\" = \"${v}\","
+        }
+        prop = prop.substring(0, prop.size() - 1)
+        return prop
+    }
+
+    TvfAttribute addProperty(String k, String v) {
+        properties.put(k, v)
+        return this
+    }
+}
\ No newline at end of file


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


Reply via email to