This is an automated email from the ASF dual-hosted git repository.
morrysnow pushed a commit to branch branch-3.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-3.1 by this push:
new 613350f0730 branch-3.1: [test](paimon) Add more paimon cases #55893
(#56055)
613350f0730 is described below
commit 613350f0730060212417d06fe29c5105f4152a66
Author: zgxme <[email protected]>
AuthorDate: Thu Sep 25 17:00:52 2025 +0800
branch-3.1: [test](paimon) Add more paimon cases #55893 (#56055)
bp#55893
add more paimon cases
1. paimon on hms and gcs
2. paimon on gcs filesystem
3. some cross feature batch incremental/time travel/system table
4. paimon on hms and hdfs(kerberos case)
---
.licenserc.yaml | 2 +
.../kerberos/entrypoint-hive-master.sh | 7 +
.../docker-compose/kerberos/hadoop-hive.env.tpl | 7 +
.../docker-compose/kerberos/kerberos.yaml.tpl | 2 +
.../docker-compose/kerberos/kerberos1_settings.env | 7 +-
.../docker-compose/kerberos/kerberos2_settings.env | 7 +-
...-5414d3da-b984-4a28-a501-e7dc42a1760f-0.parquet | Bin 0 -> 563 bytes
...manifest-3224f4a3-e7f2-402a-b1b1-bd1fe57d57ad-0 | Bin 0 -> 2016 bytes
...est-list-7dbac4ab-1226-4c1f-8346-3b388de65ea3-0 | Bin 0 -> 884 bytes
...est-list-7dbac4ab-1226-4c1f-8346-3b388de65ea3-1 | Bin 0 -> 986 bytes
.../hdfs_db.db/external_test_table/schema/schema-0 | 29 ++
.../external_test_table/snapshot/EARLIEST | 1 +
.../hdfs_db.db/external_test_table/snapshot/LATEST | 1 +
.../external_test_table/snapshot/snapshot-1 | 19 +
.../kerberos/sql/create_paimon_hive_table.hql | 7 +
.../external_table_p0/paimon/test_paimon_gcs.out | 33 ++
.../paimon/test_paimon_hms_catalog.out | 76 ++++
.../paimon/paimon_base_filesystem.groovy | 39 +-
.../paimon/test_paimon_catalog.groovy | 491 +++++++++++----------
.../paimon/test_paimon_deletion_vector_oss.groovy | 7 +-
.../paimon/test_paimon_gcs.groovy | 84 ++++
.../paimon/test_paimon_minio.groovy | 18 +
.../external_table_p0/paimon/test_paimon_s3.groovy | 9 +
.../hive/test_cloud_accessible_oss.groovy | 9 +-
.../iceberg/iceberg_rest_s3_storage_test.groovy | 8 +-
.../paimon/test_paimon_dlf_catalog.groovy | 10 +-
.../test_paimon_dlf_catalog_miss_dlf_param.groovy | 12 +-
.../test_paimon_dlf_catalog_new_param.groovy | 14 +-
.../paimon/test_paimon_hms_catalog.groovy | 77 +++-
.../hive_on_hms_and_dlf.groovy | 11 +-
.../iceberg_on_hms_and_filesystem_and_dlf.groovy | 62 ++-
31 files changed, 744 insertions(+), 305 deletions(-)
diff --git a/.licenserc.yaml b/.licenserc.yaml
index 7b22a39381e..f327adfe973 100644
--- a/.licenserc.yaml
+++ b/.licenserc.yaml
@@ -80,6 +80,8 @@ header:
- "regression-test/script/README"
- "regression-test/suites/load_p0/stream_load/data"
- "docker/thirdparties/docker-compose/hive/scripts/**"
+ - "docker/thirdparties/docker-compose/kerberos/paimon_data/**"
+ - "docker/thirdparties/docker-compose/kerberos/sql/**"
- "docker/thirdparties/docker-compose/iceberg/spark-defaults.conf.tpl"
- "conf/mysql_ssl_default_certificate/*"
- "conf/mysql_ssl_default_certificate/client_certificate/ca.pem"
diff --git
a/docker/thirdparties/docker-compose/kerberos/entrypoint-hive-master.sh
b/docker/thirdparties/docker-compose/kerberos/entrypoint-hive-master.sh
index 246e0edab79..b19178aefb0 100755
--- a/docker/thirdparties/docker-compose/kerberos/entrypoint-hive-master.sh
+++ b/docker/thirdparties/docker-compose/kerberos/entrypoint-hive-master.sh
@@ -54,6 +54,8 @@ curl -O
https://s3BucketName.s3Endpoint/regression/docker/hive3/hadoop-cos-3.1.0
curl -O
https://s3BucketName.s3Endpoint/regression/docker/hive3/cos_api-bundle-5.6.244.4.jar
curl -O
https://s3BucketName.s3Endpoint/regression/docker/hive3/hadoop-aws-3.2.1.jar
curl -O
https://s3BucketName.s3Endpoint/regression/docker/hive3/paimon-hive-connector-3.1-1.3-SNAPSHOT.jar
+curl -O
https://s3BucketName.s3Endpoint/regression/docker/hive3/gcs-connector-hadoop3-2.2.24-shaded.jar
+
/usr/local/hadoop-run.sh &
@@ -85,5 +87,10 @@ else
exit 1
fi
hive -f /usr/local/sql/create_kerberos_hive_table.sql
+if [[ ${enablePaimonHms} == "true" ]]; then
+ echo "Creating Paimon HMS catalog and table"
+ hadoop fs -put /tmp/paimon_data/* /user/hive/warehouse/
+ hive -f /usr/local/sql/create_paimon_hive_table.hql
+fi
exec_success_hook
\ No newline at end of file
diff --git a/docker/thirdparties/docker-compose/kerberos/hadoop-hive.env.tpl
b/docker/thirdparties/docker-compose/kerberos/hadoop-hive.env.tpl
index 3c453ff0fbd..9253b5aee09 100644
--- a/docker/thirdparties/docker-compose/kerberos/hadoop-hive.env.tpl
+++ b/docker/thirdparties/docker-compose/kerberos/hadoop-hive.env.tpl
@@ -84,4 +84,11 @@
HIVE_SITE_CONF_fs_oss_impl=org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem
HIVE_SITE_CONF_fs_oss_accessKeyId=${OSSAk}
HIVE_SITE_CONF_fs_oss_accessKeySecret=${OSSSk}
HIVE_SITE_CONF_fs_oss_endpoint=${OSSEndpoint}
+HIVE_SITE_CONF_fs_AbstractFileSystem_gs_impl=com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS
+HIVE_SITE_CONF_fs_gs_project_id=${GCSProjectId}
+HIVE_SITE_CONF_google_cloud_auth_service_account_enable=true
+HIVE_SITE_CONF_fs_gs_auth_service_account_email=${GCSAccountEmail}
+HIVE_SITE_CONF_fs_gs_auth_service_account_private_key_id=${GCSAccountPrivateKeyId}
+HIVE_SITE_CONF_fs_gs_auth_service_account_private_key=${GCSAccountPrivateKey}
+HIVE_SITE_CONF_fs_gs_proxy_address=${GCSProxyAddress}
enablePaimonHms=${enablePaimonHms}
\ No newline at end of file
diff --git a/docker/thirdparties/docker-compose/kerberos/kerberos.yaml.tpl
b/docker/thirdparties/docker-compose/kerberos/kerberos.yaml.tpl
index 9a1520b74db..c253c06f3e4 100644
--- a/docker/thirdparties/docker-compose/kerberos/kerberos.yaml.tpl
+++ b/docker/thirdparties/docker-compose/kerberos/kerberos.yaml.tpl
@@ -32,6 +32,7 @@ services:
- ./conf/kerberos1/my.cnf:/etc/my.cnf
- ./conf/kerberos1/kdc.conf:/var/kerberos/krb5kdc/kdc.conf
- ./conf/kerberos1/krb5.conf:/etc/krb5.conf
+ - ./paimon_data:/tmp/paimon_data
hostname: hadoop-master
entrypoint: /usr/local/entrypoint-hive-master.sh 1
healthcheck:
@@ -59,6 +60,7 @@ services:
- ./conf/kerberos2/my.cnf:/etc/my.cnf
- ./conf/kerberos2/kdc.conf:/var/kerberos/krb5kdc/kdc.conf
- ./conf/kerberos2/krb5.conf:/etc/krb5.conf
+ - ./paimon_data:/tmp/paimon_data
entrypoint: /usr/local/entrypoint-hive-master.sh 2
healthcheck:
test: ["CMD", "ls", "/tmp/SUCCESS"]
diff --git a/docker/thirdparties/docker-compose/kerberos/kerberos1_settings.env
b/docker/thirdparties/docker-compose/kerberos/kerberos1_settings.env
index 62de14dfafa..44f2352cf16 100644
--- a/docker/thirdparties/docker-compose/kerberos/kerberos1_settings.env
+++ b/docker/thirdparties/docker-compose/kerberos/kerberos1_settings.env
@@ -60,4 +60,9 @@ export OBSSk="*****************"
export OBSEndpoint="obs.cn-north-4.myhuaweicloud.com"
export COSAk="*****************"
export COSSk="*****************"
-export COSRegion="ap-beijing"
\ No newline at end of file
+export COSRegion="ap-beijing"
+export GCSProjectId=""
+export GCSAccountEmail=""
+export GCSAccountPrivateKeyId=""
+export GCSAccountPrivateKey=""
+export GCSProxyAddress=""
\ No newline at end of file
diff --git a/docker/thirdparties/docker-compose/kerberos/kerberos2_settings.env
b/docker/thirdparties/docker-compose/kerberos/kerberos2_settings.env
index 776fd50eb2d..49099e0f441 100644
--- a/docker/thirdparties/docker-compose/kerberos/kerberos2_settings.env
+++ b/docker/thirdparties/docker-compose/kerberos/kerberos2_settings.env
@@ -56,4 +56,9 @@ export OBSSk="*****************"
export OBSEndpoint="obs.cn-north-4.myhuaweicloud.com"
export COSAk="*****************"
export COSSk="*****************"
-export COSRegion="ap-beijing"
\ No newline at end of file
+export COSRegion="ap-beijing"
+export GCSProjectId=""
+export GCSAccountEmail=""
+export GCSAccountPrivateKeyId=""
+export GCSAccountPrivateKey=""
+export GCSProxyAddress=""
\ No newline at end of file
diff --git
a/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/bucket-0/data-5414d3da-b984-4a28-a501-e7dc42a1760f-0.parquet
b/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/bucket-0/data-5414d3da-b984-4a28-a501-e7dc42a1760f-0.parquet
new file mode 100644
index 00000000000..4b6394700c0
Binary files /dev/null and
b/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/bucket-0/data-5414d3da-b984-4a28-a501-e7dc42a1760f-0.parquet
differ
diff --git
a/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/manifest/manifest-3224f4a3-e7f2-402a-b1b1-bd1fe57d57ad-0
b/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/manifest/manifest-3224f4a3-e7f2-402a-b1b1-bd1fe57d57ad-0
new file mode 100644
index 00000000000..abffba22beb
Binary files /dev/null and
b/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/manifest/manifest-3224f4a3-e7f2-402a-b1b1-bd1fe57d57ad-0
differ
diff --git
a/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/manifest/manifest-list-7dbac4ab-1226-4c1f-8346-3b388de65ea3-0
b/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/manifest/manifest-list-7dbac4ab-1226-4c1f-8346-3b388de65ea3-0
new file mode 100644
index 00000000000..4bdc40be568
Binary files /dev/null and
b/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/manifest/manifest-list-7dbac4ab-1226-4c1f-8346-3b388de65ea3-0
differ
diff --git
a/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/manifest/manifest-list-7dbac4ab-1226-4c1f-8346-3b388de65ea3-1
b/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/manifest/manifest-list-7dbac4ab-1226-4c1f-8346-3b388de65ea3-1
new file mode 100644
index 00000000000..0e976861286
Binary files /dev/null and
b/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/manifest/manifest-list-7dbac4ab-1226-4c1f-8346-3b388de65ea3-1
differ
diff --git
a/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/schema/schema-0
b/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/schema/schema-0
new file mode 100644
index 00000000000..b7c14c7633e
--- /dev/null
+++
b/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/schema/schema-0
@@ -0,0 +1,29 @@
+{
+ "version" : 3,
+ "id" : 0,
+ "fields" : [ {
+ "id" : 0,
+ "name" : "a",
+ "type" : "INT",
+ "description" : "The a field"
+ }, {
+ "id" : 1,
+ "name" : "b",
+ "type" : "STRING",
+ "description" : "The b field"
+ } ],
+ "highestFieldId" : 1,
+ "partitionKeys" : [ ],
+ "primaryKeys" : [ ],
+ "options" : {
+ "path" : "hdfs:///user/hive/warehouse/hdfs_db.db/external_test_table",
+ "totalSize" : "0",
+ "numRows" : "0",
+ "rawDataSize" : "0",
+ "COLUMN_STATS_ACCURATE" :
"{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"a\":\"true\",\"b\":\"true\"}}",
+ "numFiles" : "0",
+ "bucketing_version" : "2",
+ "storage_handler" : "org.apache.paimon.hive.PaimonStorageHandler"
+ },
+ "timeMillis" : 1757405300463
+}
\ No newline at end of file
diff --git
a/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/snapshot/EARLIEST
b/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/snapshot/EARLIEST
new file mode 100644
index 00000000000..56a6051ca2b
--- /dev/null
+++
b/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/snapshot/EARLIEST
@@ -0,0 +1 @@
+1
\ No newline at end of file
diff --git
a/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/snapshot/LATEST
b/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/snapshot/LATEST
new file mode 100644
index 00000000000..56a6051ca2b
--- /dev/null
+++
b/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/snapshot/LATEST
@@ -0,0 +1 @@
+1
\ No newline at end of file
diff --git
a/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/snapshot/snapshot-1
b/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/snapshot/snapshot-1
new file mode 100644
index 00000000000..685fe29e727
--- /dev/null
+++
b/docker/thirdparties/docker-compose/kerberos/paimon_data/hdfs_db.db/external_test_table/snapshot/snapshot-1
@@ -0,0 +1,19 @@
+{
+ "version" : 3,
+ "id" : 1,
+ "schemaId" : 0,
+ "baseManifestList" : "manifest-list-7dbac4ab-1226-4c1f-8346-3b388de65ea3-0",
+ "baseManifestListSize" : 884,
+ "deltaManifestList" : "manifest-list-7dbac4ab-1226-4c1f-8346-3b388de65ea3-1",
+ "deltaManifestListSize" : 986,
+ "changelogManifestList" : null,
+ "commitUser" : "861d98af-e944-4a2f-9ef7-b79a129c3fba",
+ "commitIdentifier" : 9223372036854775807,
+ "commitKind" : "APPEND",
+ "timeMillis" : 1757405309978,
+ "logOffsets" : { },
+ "totalRecordCount" : 1,
+ "deltaRecordCount" : 1,
+ "changelogRecordCount" : 0,
+ "nextRowId" : 0
+}
\ No newline at end of file
diff --git
a/docker/thirdparties/docker-compose/kerberos/sql/create_paimon_hive_table.hql
b/docker/thirdparties/docker-compose/kerberos/sql/create_paimon_hive_table.hql
new file mode 100644
index 00000000000..65f463fef22
--- /dev/null
+++
b/docker/thirdparties/docker-compose/kerberos/sql/create_paimon_hive_table.hql
@@ -0,0 +1,7 @@
+CREATE DATABASE IF NOT EXISTS hdfs_db;
+
+USE hdfs_db;
+
+CREATE EXTERNAL TABLE external_test_table
+ STORED BY 'org.apache.paimon.hive.PaimonStorageHandler'
+LOCATION 'hdfs:///user/hive/warehouse/hdfs_db.db/external_test_table';
\ No newline at end of file
diff --git a/regression-test/data/external_table_p0/paimon/test_paimon_gcs.out
b/regression-test/data/external_table_p0/paimon/test_paimon_gcs.out
new file mode 100644
index 00000000000..912b19449f5
--- /dev/null
+++ b/regression-test/data/external_table_p0/paimon/test_paimon_gcs.out
@@ -0,0 +1,33 @@
+-- This file is automatically generated. You should know what you did if you
want to edit this
+-- !no_region --
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+
+-- !region --
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+
+-- !no_region --
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+
+-- !region --
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+
diff --git
a/regression-test/data/external_table_p2/paimon/test_paimon_hms_catalog.out
b/regression-test/data/external_table_p2/paimon/test_paimon_hms_catalog.out
index 51d0f28fdf2..abf50d7c852 100644
--- a/regression-test/data/external_table_p2/paimon/test_paimon_hms_catalog.out
+++ b/regression-test/data/external_table_p2/paimon/test_paimon_hms_catalog.out
@@ -5,6 +5,12 @@
-- !hdfs --
11111111 hdfs_db_test
+-- !hdfs_kerberos --
+11111111 hdfs_db_test
+
+-- !hdfs_kerberos --
+11111111 hdfs_db_test
+
-- !oss --
11111111 ali_db_test
11111111 ali_db_test
@@ -61,12 +67,50 @@
11111111 aws_db_test
11111111 aws_db_test
+-- !gcs --
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+
+-- !gcs --
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+
+-- !gcs_s3 --
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+
+-- !gcs_s3 --
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+
-- !support_hdfs --
11111111 hdfs_db_test
-- !support_hdfs --
11111111 hdfs_db_test
+-- !support_hdfs_kerberos --
+11111111 hdfs_db_test
+
+-- !support_hdfs_kerberos --
+11111111 hdfs_db_test
+
-- !support_oss --
11111111 ali_db_test
11111111 ali_db_test
@@ -123,3 +167,35 @@
11111111 aws_db_test
11111111 aws_db_test
+-- !support_gcs --
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+
+-- !support_gcs --
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+
+-- !support_gcs_s3 --
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+
+-- !support_gcs_s3 --
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+11111111 gcs_db_test
+
diff --git
a/regression-test/suites/external_table_p0/paimon/paimon_base_filesystem.groovy
b/regression-test/suites/external_table_p0/paimon/paimon_base_filesystem.groovy
index 6d6e876948a..42d764dcddd 100644
---
a/regression-test/suites/external_table_p0/paimon/paimon_base_filesystem.groovy
+++
b/regression-test/suites/external_table_p0/paimon/paimon_base_filesystem.groovy
@@ -29,6 +29,8 @@ suite("paimon_base_filesystem",
"p0,external,doris,external_docker,external_dock
String catalog_cosn = "paimon_base_filesystem_paimon_cosn"
String aliYunAk = context.config.otherConfigs.get("aliYunAk")
String aliYunSk = context.config.otherConfigs.get("aliYunSk")
+ String aliYunEndpoint =
context.config.otherConfigs.get("aliYunEndpoint")
+ String bucket = context.config.otherConfigs.get("aliYunBucket")
String hwYunAk = context.config.otherConfigs.get("hwYunAk")
String hwYunSk = context.config.otherConfigs.get("hwYunSk")
String txYunAk = context.config.otherConfigs.get("txYunAk")
@@ -68,10 +70,10 @@ suite("paimon_base_filesystem",
"p0,external,doris,external_docker,external_dock
create catalog if not exists ${catalog_oss} properties (
"type" = "paimon",
"paimon.catalog.type"="filesystem",
- "warehouse" = "oss://doris-regression-bj/regression/paimon1",
+ "warehouse" = "oss://${bucket}/regression/paimon1",
"oss.access_key"="${aliYunAk}",
"oss.secret_key"="${aliYunSk}",
- "oss.endpoint"="oss-cn-beijing.aliyuncs.com"
+ "oss.endpoint"="${aliYunEndpoint}"
);
"""
sql """
@@ -93,21 +95,54 @@ suite("paimon_base_filesystem",
"p0,external,doris,external_docker,external_dock
sql """ show databases """
sql """ use ${catalog_oss}.db1 """
// sql """ show tables """
+ // 3.1 new features
+ // batch incremental
+ sql """SELECT * FROM all_table @incr('startTimestamp'='876488912')"""
+ // time travel
+ sql """SELECT * FROM all_table FOR VERSION AS OF 1;"""
+ // branch/tag
+ // TODO(zgx): add branch/tag
+ // system table
+ sql """SELECT * FROM all_table\$snapshots;"""
sql """ switch ${catalog_obs} """
sql """ show databases """
sql """ use ${catalog_obs}.db1 """
// sql """ show tables """
+ // batch incremental
+ sql """SELECT * FROM all_table @incr('startTimestamp'='876488912')"""
+ // time travel
+ sql """SELECT * FROM all_table FOR VERSION AS OF 1;"""
+ // branch/tag
+ // TODO(zgx): add branch/tag
+ // system table
+ sql """SELECT * FROM all_table\$snapshots;"""
sql """ switch ${catalog_cos} """
sql """ show databases """
sql """ use ${catalog_cos}.db1 """
// sql """ show tables """
+ // batch incremental
+ sql """SELECT * FROM all_table @incr('startTimestamp'='876488912')"""
+ // time travel
+ sql """SELECT * FROM all_table FOR VERSION AS OF 1;"""
+ // branch/tag
+ // TODO(zgx): add branch/tag
+ // system table
+ sql """SELECT * FROM all_table\$snapshots;"""
sql """ switch ${catalog_cosn} """
sql """ show databases """
sql """ use ${catalog_cosn}.db1 """
// sql """ show tables """
+ // batch incremental
+ sql """SELECT * FROM all_table @incr('startTimestamp'='876488912')"""
+ // time travel
+ sql """SELECT * FROM all_table FOR VERSION AS OF 1;"""
+ // branch/tag
+ // TODO(zgx): add branch/tag
+ // system table
+ sql """SELECT * FROM all_table\$snapshots;"""
sql """set force_jni_scanner=false"""
diff --git
a/regression-test/suites/external_table_p0/paimon/test_paimon_catalog.groovy
b/regression-test/suites/external_table_p0/paimon/test_paimon_catalog.groovy
index b0270671d75..b5ca34e5a18 100644
--- a/regression-test/suites/external_table_p0/paimon/test_paimon_catalog.groovy
+++ b/regression-test/suites/external_table_p0/paimon/test_paimon_catalog.groovy
@@ -56,271 +56,280 @@ suite("test_paimon_catalog",
"p0,external,doris,external_docker,external_docker_
sql """drop catalog ${hms_ctl_name}""";
String enabled = context.config.otherConfigs.get("enablePaimonTest")
- if (enabled != null && enabled.equalsIgnoreCase("true")) {
- def qt_all_type = { String table_name ->
- qt_all """select * from ${table_name} order by c1"""
- qt_predict_like_1 """select * from ${table_name} where c13
like '%3%' order by c1"""
- qt_predict_like_2 """select * from ${table_name} where c13
like '13%' order by c1"""
- qt_predict_like_3 """select * from ${table_name} where c13
like '13' order by c1"""
- qt_predict_like_4 """select * from ${table_name} where c13
like '130str' order by c1"""
- qt_predict_like_5 """select * from ${table_name} where c13
like '130str%' order by c1"""
- qt_c1 """select * from ${table_name} where c1=10;"""
- qt_c2 """select * from ${table_name} where c2=2;"""
- qt_c3 """select * from ${table_name} where c3=3;"""
- qt_c4 """select * from ${table_name} where c4=4;"""
- qt_c5 """select * from ${table_name} where c5=5;"""
- qt_c6 """select * from ${table_name} where c6=6;"""
- qt_c7 """select * from ${table_name} where c7=7;"""
- qt_c8 """select * from ${table_name} where c8=8;"""
- qt_c9 """select * from ${table_name} where c9<10;"""
- qt_c10 """select * from ${table_name} where c10=10.1;"""
- qt_c11 """select * from ${table_name} where c11=11.1;"""
- qt_c12 """select * from ${table_name} where
c12='2020-02-02';"""
- qt_c13 """select * from ${table_name} where c13='13str';"""
- qt_c14 """select * from ${table_name} where
c14='14varchar';"""
- qt_c15 """select * from ${table_name} where c15='a';"""
- qt_c16 """select * from ${table_name} where c16=true;"""
- qt_c18 """select * from ${table_name} where c18='2023-08-13
09:32:38.53';"""
- qt_c101 """select * from ${table_name} where c1 is not null or
c2 is not null order by c1"""
- }
+ if (enabled != null && enabled.equalsIgnoreCase("true")) {
+ def qt_all_type = { String table_name ->
+ qt_all """select * from ${table_name} order by c1"""
+ qt_predict_like_1 """select * from ${table_name} where c13 like
'%3%' order by c1"""
+ qt_predict_like_2 """select * from ${table_name} where c13 like
'13%' order by c1"""
+ qt_predict_like_3 """select * from ${table_name} where c13 like
'13' order by c1"""
+ qt_predict_like_4 """select * from ${table_name} where c13 like
'130str' order by c1"""
+ qt_predict_like_5 """select * from ${table_name} where c13 like
'130str%' order by c1"""
+ qt_c1 """select * from ${table_name} where c1=10;"""
+ qt_c2 """select * from ${table_name} where c2=2;"""
+ qt_c3 """select * from ${table_name} where c3=3;"""
+ qt_c4 """select * from ${table_name} where c4=4;"""
+ qt_c5 """select * from ${table_name} where c5=5;"""
+ qt_c6 """select * from ${table_name} where c6=6;"""
+ qt_c7 """select * from ${table_name} where c7=7;"""
+ qt_c8 """select * from ${table_name} where c8=8;"""
+ qt_c9 """select * from ${table_name} where c9<10;"""
+ qt_c10 """select * from ${table_name} where c10=10.1;"""
+ qt_c11 """select * from ${table_name} where c11=11.1;"""
+ qt_c12 """select * from ${table_name} where c12='2020-02-02';"""
+ qt_c13 """select * from ${table_name} where c13='13str';"""
+ qt_c14 """select * from ${table_name} where c14='14varchar';"""
+ qt_c15 """select * from ${table_name} where c15='a';"""
+ qt_c16 """select * from ${table_name} where c16=true;"""
+ qt_c18 """select * from ${table_name} where c18='2023-08-13
09:32:38.53';"""
+ qt_c101 """select * from ${table_name} where c1 is not null or c2
is not null order by c1"""
+ }
- def c19 = """select * from auto_bucket order by user_id;"""
- def c20 = """select * from auto_bucket where dt="b";"""
- def c21 = """select * from auto_bucket where dt="b" and hh="c";"""
- def c22 = """select * from auto_bucket where dt="d";"""
- def c23 = """select * from complex_tab order by c1;"""
- def c24 = """select * from complex_tab where c1=1;"""
- def c25 = """select c3['a_test'], c3['b_test'], c3['bbb'],
c3['ccc'] from complex_tab order by c3['a_test'], c3['b_test']"""
- def c26 = """select array_max(c2) c from complex_tab order by c"""
- def c27 = """select * from complex_all order by c1"""
- def c28 = """select array_min(c2) c from complex_all order by c"""
- def c29 = """select array_min(c3) c from complex_all order by c"""
- def c30= """select array_min(c4) c from complex_all order by c"""
- def c31= """select array_min(c5) c from complex_all order by c"""
- def c32= """select array_min(c6) c from complex_all order by c"""
- def c33= """select array_min(c7) c from complex_all order by c"""
- def c34= """select array_min(c8) c from complex_all order by c"""
- def c35= """select array_min(c9) c from complex_all order by c"""
- def c36= """select array_min(c10) c from complex_all order by c"""
- def c37= """select array_max(c11) c from complex_all order by c"""
- def c38= """select array_max(c12) c from complex_all order by c"""
- def c39= """select array_max(c13) c from complex_all order by c"""
- def c40= """select array_size(c14) c from complex_all order by c"""
- def c41= """select array_size(c15) c from complex_all order by c"""
- def c42= """select array_size(c16) c from complex_all order by c"""
- def c43= """select array_max(c17) c from complex_all order by c"""
- def c44= """select array_size(c18) c from complex_all order by c"""
- def c45= """select array_max(c19) c from complex_all order by c"""
+ def c19 = """select * from auto_bucket order by user_id;"""
+ def c20 = """select * from auto_bucket where dt="b";"""
+ def c21 = """select * from auto_bucket where dt="b" and hh="c";"""
+ def c22 = """select * from auto_bucket where dt="d";"""
+ def c23 = """select * from complex_tab order by c1;"""
+ def c24 = """select * from complex_tab where c1=1;"""
+ def c25 = """select c3['a_test'], c3['b_test'], c3['bbb'], c3['ccc']
from complex_tab order by c3['a_test'], c3['b_test']"""
+ def c26 = """select array_max(c2) c from complex_tab order by c"""
+ def c27 = """select * from complex_all order by c1"""
+ def c28 = """select array_min(c2) c from complex_all order by c"""
+ def c29 = """select array_min(c3) c from complex_all order by c"""
+ def c30 = """select array_min(c4) c from complex_all order by c"""
+ def c31 = """select array_min(c5) c from complex_all order by c"""
+ def c32 = """select array_min(c6) c from complex_all order by c"""
+ def c33 = """select array_min(c7) c from complex_all order by c"""
+ def c34 = """select array_min(c8) c from complex_all order by c"""
+ def c35 = """select array_min(c9) c from complex_all order by c"""
+ def c36 = """select array_min(c10) c from complex_all order by c"""
+ def c37 = """select array_max(c11) c from complex_all order by c"""
+ def c38 = """select array_max(c12) c from complex_all order by c"""
+ def c39 = """select array_max(c13) c from complex_all order by c"""
+ def c40 = """select array_size(c14) c from complex_all order by c"""
+ def c41 = """select array_size(c15) c from complex_all order by c"""
+ def c42 = """select array_size(c16) c from complex_all order by c"""
+ def c43 = """select array_max(c17) c from complex_all order by c"""
+ def c44 = """select array_size(c18) c from complex_all order by c"""
+ def c45 = """select array_max(c19) c from complex_all order by c"""
- def c46= """select c20[0] c from complex_all order by c"""
- def c47= """select c21[0] c from complex_all order by c"""
- def c48= """select c22[0] c from complex_all order by c"""
- def c49= """select c23[0] c from complex_all order by c"""
- def c50= """select c24[1] c from complex_all order by c"""
- def c51= """select c25[0] c from complex_all order by c"""
- def c52= """select c26[0] c from complex_all order by c"""
- def c53= """select c27[0] c from complex_all order by c"""
- def c54= """select c28[0] c from complex_all order by c"""
- def c55= """select c29[0] c from complex_all order by c"""
- def c56= """select c30[0] c from complex_all order by c"""
- def c57= """select c31[0] c from complex_all order by c"""
- def c58= """select c32[0] c from complex_all order by c"""
- def c59= """select c33[0] c from complex_all order by c"""
- def c60= """select c34[0] c from complex_all order by c"""
- def c61= """select c35[0] c from complex_all order by c"""
- def c62= """select c36[0] c from complex_all order by c"""
- def c63= """select c37[0] c from complex_all order by c"""
+ def c46 = """select c20[0] c from complex_all order by c"""
+ def c47 = """select c21[0] c from complex_all order by c"""
+ def c48 = """select c22[0] c from complex_all order by c"""
+ def c49 = """select c23[0] c from complex_all order by c"""
+ def c50 = """select c24[1] c from complex_all order by c"""
+ def c51 = """select c25[0] c from complex_all order by c"""
+ def c52 = """select c26[0] c from complex_all order by c"""
+ def c53 = """select c27[0] c from complex_all order by c"""
+ def c54 = """select c28[0] c from complex_all order by c"""
+ def c55 = """select c29[0] c from complex_all order by c"""
+ def c56 = """select c30[0] c from complex_all order by c"""
+ def c57 = """select c31[0] c from complex_all order by c"""
+ def c58 = """select c32[0] c from complex_all order by c"""
+ def c59 = """select c33[0] c from complex_all order by c"""
+ def c60 = """select c34[0] c from complex_all order by c"""
+ def c61 = """select c35[0] c from complex_all order by c"""
+ def c62 = """select c36[0] c from complex_all order by c"""
+ def c63 = """select c37[0] c from complex_all order by c"""
- def c64= """select c38[2] c from complex_all order by c"""
- def c65= """select c39[4] c from complex_all order by c"""
- def c66= """select c40[5] c from complex_all order by c"""
- def c67= """select c41[7] c from complex_all order by c"""
- def c68= """select c42[9] c from complex_all order by c"""
- def c69= """select c43[10] c from complex_all order by c"""
- def c70= """select c44[12] c from complex_all order by c"""
- def c71= """select c45[13] c from complex_all order by c"""
- def c72= """select c46[14] c from complex_all order by c"""
- def c73= """select c47[16] c from complex_all order by c"""
- def c74= """select c48[17] c from complex_all order by c"""
- def c75= """select c49[19] c from complex_all order by c"""
- def c76= """select c50[21] c from complex_all order by c"""
- def c77= """select c51[22] c from complex_all order by c"""
- def c78= """select c52[25] c from complex_all order by c"""
- def c79= """select c53[27] c from complex_all order by c"""
- def c80= """select c54[29] c from complex_all order by c"""
- def c81= """select c55[30] c from complex_all order by c"""
+ def c64 = """select c38[2] c from complex_all order by c"""
+ def c65 = """select c39[4] c from complex_all order by c"""
+ def c66 = """select c40[5] c from complex_all order by c"""
+ def c67 = """select c41[7] c from complex_all order by c"""
+ def c68 = """select c42[9] c from complex_all order by c"""
+ def c69 = """select c43[10] c from complex_all order by c"""
+ def c70 = """select c44[12] c from complex_all order by c"""
+ def c71 = """select c45[13] c from complex_all order by c"""
+ def c72 = """select c46[14] c from complex_all order by c"""
+ def c73 = """select c47[16] c from complex_all order by c"""
+ def c74 = """select c48[17] c from complex_all order by c"""
+ def c75 = """select c49[19] c from complex_all order by c"""
+ def c76 = """select c50[21] c from complex_all order by c"""
+ def c77 = """select c51[22] c from complex_all order by c"""
+ def c78 = """select c52[25] c from complex_all order by c"""
+ def c79 = """select c53[27] c from complex_all order by c"""
+ def c80 = """select c54[29] c from complex_all order by c"""
+ def c81 = """select c55[30] c from complex_all order by c"""
- def c82= """select c56[2] c from complex_all order by c"""
- def c83= """select c57[4] c from complex_all order by c"""
- def c84= """select c58[5] c from complex_all order by c"""
- def c85= """select c59[7] c from complex_all order by c"""
- def c86= """select c60[9] c from complex_all order by c"""
- def c87= """select c61[10] c from complex_all order by c"""
- def c88= """select c62[12] c from complex_all order by c"""
- def c89= """select c63[13] c from complex_all order by c"""
- def c90= """select c64[14] c from complex_all order by c"""
- def c91= """select c65[16] c from complex_all order by c"""
- def c92= """select c66[17] c from complex_all order by c"""
- def c93= """select c67[19] c from complex_all order by c"""
- def c94= """select c68[21] c from complex_all order by c"""
- def c95= """select c69[22] c from complex_all order by c"""
- def c96= """select c70[25] c from complex_all order by c"""
- def c97= """select c71[27] c from complex_all order by c"""
- def c98= """select c72[29] c from complex_all order by c"""
- def c99= """select c73[30] c from complex_all order by c"""
+ def c82 = """select c56[2] c from complex_all order by c"""
+ def c83 = """select c57[4] c from complex_all order by c"""
+ def c84 = """select c58[5] c from complex_all order by c"""
+ def c85 = """select c59[7] c from complex_all order by c"""
+ def c86 = """select c60[9] c from complex_all order by c"""
+ def c87 = """select c61[10] c from complex_all order by c"""
+ def c88 = """select c62[12] c from complex_all order by c"""
+ def c89 = """select c63[13] c from complex_all order by c"""
+ def c90 = """select c64[14] c from complex_all order by c"""
+ def c91 = """select c65[16] c from complex_all order by c"""
+ def c92 = """select c66[17] c from complex_all order by c"""
+ def c93 = """select c67[19] c from complex_all order by c"""
+ def c94 = """select c68[21] c from complex_all order by c"""
+ def c95 = """select c69[22] c from complex_all order by c"""
+ def c96 = """select c70[25] c from complex_all order by c"""
+ def c97 = """select c71[27] c from complex_all order by c"""
+ def c98 = """select c72[29] c from complex_all order by c"""
+ def c99 = """select c73[30] c from complex_all order by c"""
- def c100= """select * from array_nested order by c1;"""
+ def c100 = """select * from array_nested order by c1;"""
- def c102= """select * from row_native_test order by id;"""
- def c103= """select * from row_jni_test order by id;"""
+ def c102 = """select * from row_native_test order by id;"""
+ def c103 = """select * from row_jni_test order by id;"""
- def c104= """select * from deletion_vector_orc;"""
- def c105= """select * from deletion_vector_parquet;"""
- def c106= """ select * from tb_with_upper_case """
- def c107= """ select id from tb_with_upper_case where id > 1 """
- def c108= """ select id from tb_with_upper_case where id = 1 """
- def c109= """ select id from tb_with_upper_case where id < 1 """
+ def c104 = """select * from deletion_vector_orc;"""
+ def c105 = """select * from deletion_vector_parquet;"""
+ def c106 = """ select * from tb_with_upper_case """
+ def c107 = """ select id from tb_with_upper_case where id > 1 """
+ def c108 = """ select id from tb_with_upper_case where id = 1 """
+ def c109 = """ select id from tb_with_upper_case where id < 1 """
- String hdfs_port = context.config.otherConfigs.get("hive2HdfsPort")
- String catalog_name = "ctl_test_paimon_catalog"
- String externalEnvIp =
context.config.otherConfigs.get("externalEnvIp")
+ String hdfs_port = context.config.otherConfigs.get("hive2HdfsPort")
+ String catalog_name = "ctl_test_paimon_catalog"
+ String externalEnvIp = context.config.otherConfigs.get("externalEnvIp")
- sql """drop catalog if exists ${catalog_name}"""
- sql """create catalog if not exists ${catalog_name} properties (
+ sql """drop catalog if exists ${catalog_name}"""
+ sql """create catalog if not exists ${catalog_name} properties (
"type" = "paimon",
"paimon.catalog.type"="filesystem",
"warehouse" =
"hdfs://${externalEnvIp}:${hdfs_port}/user/doris/paimon1"
);"""
- sql """use `${catalog_name}`.`db1`"""
+ sql """use `${catalog_name}`.`db1`"""
- def test_cases = { String force, String cache ->
- sql """ set force_jni_scanner=${force} """
- sql """ set enable_file_cache=${cache} """
- qt_all_type("all_table")
- qt_all_type("all_table_with_parquet")
+ def test_cases = { String force, String cache ->
+ sql """ set force_jni_scanner=${force} """
+ sql """ set enable_file_cache=${cache} """
+ qt_all_type("all_table")
+ qt_all_type("all_table_with_parquet")
- qt_c19 c19
- qt_c20 c20
- qt_c21 c21
- qt_c22 c22
- qt_c23 c23
- qt_c24 c24
- qt_c25 c25
- qt_c26 c26
- qt_c27 c27
- qt_c28 c28
- qt_c29 c29
- qt_c30 c30
- qt_c31 c31
- qt_c32 c32
- qt_c33 c33
- qt_c34 c34
- qt_c35 c35
- qt_c36 c36
- qt_c37 c37
- qt_c38 c38
- qt_c39 c39
- qt_c40 c40
- qt_c41 c41
- qt_c42 c42
- qt_c43 c43
- qt_c44 c44
- qt_c45 c45
- qt_c46 c46
- qt_c47 c47
- qt_c48 c48
- qt_c49 c49
- qt_c50 c50
- qt_c51 c51
- qt_c52 c52
- qt_c53 c53
- qt_c54 c54
- qt_c55 c55
- qt_c56 c56
- qt_c57 c57
- qt_c58 c58
- qt_c59 c59
- qt_c60 c60
- qt_c61 c61
- qt_c62 c62
- qt_c63 c63
- qt_c64 c64
- qt_c65 c65
- qt_c66 c66
- qt_c67 c67
- qt_c68 c68
- qt_c69 c69
- qt_c70 c70
- qt_c71 c71
- qt_c72 c72
- qt_c73 c73
- qt_c74 c74
- qt_c75 c75
- qt_c76 c76
- qt_c77 c77
- qt_c78 c78
- qt_c79 c79
- qt_c80 c80
- qt_c81 c81
- qt_c82 c82
- qt_c83 c83
- qt_c84 c84
- qt_c85 c85
- qt_c85 c86
- qt_c86 c87
- qt_c86 c88
- qt_c89 c89
- qt_c90 c90
- qt_c91 c91
- qt_c92 c92
- qt_c93 c93
- qt_c94 c94
- qt_c95 c95
- qt_c96 c96
- qt_c97 c97
- qt_c98 c98
- qt_c99 c99
- qt_c100 c100
- qt_c102 c102
- qt_c103 c103
- qt_c104 c104
- qt_c105 c105
- qt_c106 c106
- qt_c107 c107
- qt_c108 c108
- qt_c109 c109
- }
+ qt_c19 c19
+ qt_c20 c20
+ qt_c21 c21
+ qt_c22 c22
+ qt_c23 c23
+ qt_c24 c24
+ qt_c25 c25
+ qt_c26 c26
+ qt_c27 c27
+ qt_c28 c28
+ qt_c29 c29
+ qt_c30 c30
+ qt_c31 c31
+ qt_c32 c32
+ qt_c33 c33
+ qt_c34 c34
+ qt_c35 c35
+ qt_c36 c36
+ qt_c37 c37
+ qt_c38 c38
+ qt_c39 c39
+ qt_c40 c40
+ qt_c41 c41
+ qt_c42 c42
+ qt_c43 c43
+ qt_c44 c44
+ qt_c45 c45
+ qt_c46 c46
+ qt_c47 c47
+ qt_c48 c48
+ qt_c49 c49
+ qt_c50 c50
+ qt_c51 c51
+ qt_c52 c52
+ qt_c53 c53
+ qt_c54 c54
+ qt_c55 c55
+ qt_c56 c56
+ qt_c57 c57
+ qt_c58 c58
+ qt_c59 c59
+ qt_c60 c60
+ qt_c61 c61
+ qt_c62 c62
+ qt_c63 c63
+ qt_c64 c64
+ qt_c65 c65
+ qt_c66 c66
+ qt_c67 c67
+ qt_c68 c68
+ qt_c69 c69
+ qt_c70 c70
+ qt_c71 c71
+ qt_c72 c72
+ qt_c73 c73
+ qt_c74 c74
+ qt_c75 c75
+ qt_c76 c76
+ qt_c77 c77
+ qt_c78 c78
+ qt_c79 c79
+ qt_c80 c80
+ qt_c81 c81
+ qt_c82 c82
+ qt_c83 c83
+ qt_c84 c84
+ qt_c85 c85
+ qt_c85 c86
+ qt_c86 c87
+ qt_c86 c88
+ qt_c89 c89
+ qt_c90 c90
+ qt_c91 c91
+ qt_c92 c92
+ qt_c93 c93
+ qt_c94 c94
+ qt_c95 c95
+ qt_c96 c96
+ qt_c97 c97
+ qt_c98 c98
+ qt_c99 c99
+ qt_c100 c100
+ qt_c102 c102
+ qt_c103 c103
+ qt_c104 c104
+ qt_c105 c105
+ qt_c106 c106
+ qt_c107 c107
+ qt_c108 c108
+ qt_c109 c109
+ }
- test_cases("false", "false")
- test_cases("false", "true")
- test_cases("true", "false")
- test_cases("true", "true")
+ test_cases("false", "false")
+ test_cases("false", "true")
+ test_cases("true", "false")
+ test_cases("true", "true")
+ // 3.1 new features
+ // batch incremental
+ sql """SELECT * FROM complex_all
@incr('startTimestamp'='876488912')"""
+ // time travel
+ sql """SELECT * FROM complex_all FOR VERSION AS OF 1;"""
+ // branch/tag
+ // TODO(zgx): add branch/tag
+ // system table
+ sql """SELECT * FROM complex_all\$snapshots;"""
- test {
- sql """select * from dup_columns_table;"""
- exception "Duplicate column name found: id"
- }
+ test {
+ sql """select * from dup_columns_table;"""
+ exception "Duplicate column name found: id"
+ }
- sql """ set force_jni_scanner=false; """
+ sql """ set force_jni_scanner=false; """
- // test view from jion paimon
- sql """ switch internal """
- String view_db = "test_view_for_paimon"
- sql """ drop database if exists ${view_db}"""
- sql """ create database if not exists ${view_db}"""
- sql """use ${view_db}"""
- sql """ create view test_tst_1 as select * from
${catalog_name}.`db1`.all_table; """
- sql """ create view test_tst_2 as select * from
${catalog_name}.`db1`.all_table_with_parquet; """
- sql """ create view test_tst_5 as select * from
${catalog_name}.`db1`.array_nested; """
- sql """ create table test_tst_6 properties ("replication_num" =
"1") as
+ // test view from jion paimon
+ sql """ switch internal """
+ String view_db = "test_view_for_paimon"
+ sql """ drop database if exists ${view_db}"""
+ sql """ create database if not exists ${view_db}"""
+ sql """use ${view_db}"""
+ sql """ create view test_tst_1 as select * from
${catalog_name}.`db1`.all_table; """
+ sql """ create view test_tst_2 as select * from
${catalog_name}.`db1`.all_table_with_parquet; """
+ sql """ create view test_tst_5 as select * from
${catalog_name}.`db1`.array_nested; """
+ sql """ create table test_tst_6 properties ("replication_num" = "1")
as
select f.c2,f.c3,c.c1 from
(select a.c2,b.c3 from test_tst_1 a inner join
test_tst_2 b on a.c2=b.c2) f
inner join test_tst_5 c on f.c2=c.c1;
"""
- def view1 = """select * from test_tst_6 order by c1"""
+ def view1 = """select * from test_tst_6 order by c1"""
- // qt_view1 view1
- }
+ // qt_view1 view1
+ }
}
diff --git
a/regression-test/suites/external_table_p0/paimon/test_paimon_deletion_vector_oss.groovy
b/regression-test/suites/external_table_p0/paimon/test_paimon_deletion_vector_oss.groovy
index 55fc903a31b..71a4d971169 100644
---
a/regression-test/suites/external_table_p0/paimon/test_paimon_deletion_vector_oss.groovy
+++
b/regression-test/suites/external_table_p0/paimon/test_paimon_deletion_vector_oss.groovy
@@ -28,14 +28,17 @@ suite("test_paimon_deletion_vector_oss",
"p0,external,doris,external_docker,exte
String catalog_name = "test_paimon_deletion_vector_oss"
String aliYunAk = context.config.otherConfigs.get("aliYunAk")
String aliYunSk = context.config.otherConfigs.get("aliYunSk")
+ String aliYunEndpoint =
context.config.otherConfigs.get("aliYunEndpoint")
+ String bucket = context.config.otherConfigs.get("aliYunBucket")
+
sql """drop catalog if exists ${catalog_name}"""
sql """create catalog if not exists ${catalog_name} properties (
"type" = "paimon",
"paimon.catalog.type"="filesystem",
- "warehouse" = "oss://doris-regression-bj/regression/paimon1",
+ "warehouse" = "oss://${bucket}/regression/paimon1",
"oss.access_key"="${aliYunAk}",
"oss.secret_key"="${aliYunSk}",
- "oss.endpoint"="oss-cn-beijing.aliyuncs.com"
+ "oss.endpoint"="${aliYunEndpoint}"
);"""
sql """use `${catalog_name}`.`db1`"""
diff --git
a/regression-test/suites/external_table_p0/paimon/test_paimon_gcs.groovy
b/regression-test/suites/external_table_p0/paimon/test_paimon_gcs.groovy
new file mode 100644
index 00000000000..a0de09e1a1c
--- /dev/null
+++ b/regression-test/suites/external_table_p0/paimon/test_paimon_gcs.groovy
@@ -0,0 +1,84 @@
+// 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_paimon_gcs", "p0,external,doris,new_catalog_property") {
+ String enabled = context.config.otherConfigs.get("enablePaimonTest")
+ if (enabled != null && enabled.equalsIgnoreCase("true")) {
+ String gcs_warehouse =
"s3://selectdb-qa-datalake-test/paimon_warehouse"
+ String gcs_ak = context.config.otherConfigs.get("GCSAk")
+ String gcs_sk = context.config.otherConfigs.get("GCSSk")
+ String gcs_endpoint = context.config.otherConfigs.get("GCSEndpoint")
+ String gcs_region = context.config.otherConfigs.get("GCSRegion")
+
+ String table_name = "hive_test_table"
+ for (String propertyPrefix : ["gs", "s3"]) {
+ def catalog_name = "test_paimon_gcs_${propertyPrefix}"
+ sql """drop catalog if exists ${catalog_name}"""
+ sql """
+ CREATE CATALOG ${catalog_name} PROPERTIES (
+ 'type' = 'paimon',
+ 'warehouse' = '${gcs_warehouse}',
+ '${propertyPrefix}.endpoint' = '${gcs_endpoint}',
+ '${propertyPrefix}.access_key' = '${gcs_ak}',
+ '${propertyPrefix}.secret_key' = '${gcs_sk}'
+ );
+ """
+ sql """switch `${catalog_name}`"""
+ sql """show databases; """
+ sql """use `${catalog_name}`.`gcs_db`"""
+ order_qt_no_region """SELECT * FROM ${table_name} """
+ // 3.1 new features
+ // batch incremental
+ sql """SELECT * FROM ${table_name}
@incr('startTimestamp'='876488912')"""
+ // time travel
+ sql """SELECT * FROM ${table_name} FOR VERSION AS OF 1;"""
+ // branch/tag
+ // TODO(zgx): add branch/tag
+ // system table
+ sql """SELECT * FROM ${table_name}\$snapshots;"""
+ sql """drop catalog if exists ${catalog_name}"""
+
+ sql """drop catalog if exists ${catalog_name}_with_region"""
+ sql """
+ CREATE CATALOG ${catalog_name}_with_region PROPERTIES (
+ 'type' = 'paimon',
+ 'warehouse' = '${gcs_warehouse}',
+ '${propertyPrefix}.endpoint' = '${gcs_endpoint}',
+ '${propertyPrefix}.access_key' = '${gcs_ak}',
+ '${propertyPrefix}.secret_key' = '${gcs_sk}',
+ '${propertyPrefix}.region' = '${gcs_region}'
+ );
+ """
+ sql """switch `${catalog_name}_with_region`"""
+ sql """show databases; """
+ sql """use `${catalog_name}_with_region`.`gcs_db`"""
+ order_qt_region """SELECT * FROM ${table_name} """
+ // 3.1 new features
+ // batch incremental
+ sql """SELECT * FROM ${table_name}
@incr('startTimestamp'='876488912')"""
+ // time travel
+ sql """SELECT * FROM ${table_name} FOR VERSION AS OF 1;"""
+ // branch/tag
+ // TODO(zgx): add branch/tag
+ // system table
+ sql """SELECT * FROM ${table_name}\$snapshots;"""
+ sql """drop catalog if exists ${catalog_name}_with_region"""
+ }
+ }
+}
+
+
diff --git
a/regression-test/suites/external_table_p0/paimon/test_paimon_minio.groovy
b/regression-test/suites/external_table_p0/paimon/test_paimon_minio.groovy
index 22e69642763..a959a034fa9 100644
--- a/regression-test/suites/external_table_p0/paimon/test_paimon_minio.groovy
+++ b/regression-test/suites/external_table_p0/paimon/test_paimon_minio.groovy
@@ -39,6 +39,15 @@ suite("test_paimon_minio",
"p0,external,doris,external_docker,external_docker_do
sql """use `${catalog_name}`.`flink_paimon`"""
order_qt_no_region1 """select ts1,ts19 from ${table_name} """
order_qt_no_region2 """select * from ${table_name} """
+ // 3.1 new features
+ // batch incremental
+ sql """SELECT * FROM ${table_name}
@incr('startTimestamp'='876488912')"""
+ // time travel
+ sql """SELECT * FROM ${table_name} FOR VERSION AS OF 1;"""
+ // branch/tag
+ // TODO(zgx): add branch/tag
+ // system table
+ sql """SELECT * FROM ${table_name}\$snapshots;"""
sql """drop catalog if exists ${catalog_name}"""
sql """drop catalog if exists ${catalog_name}_with_region"""
@@ -58,6 +67,15 @@ suite("test_paimon_minio",
"p0,external,doris,external_docker,external_docker_do
sql """use `${catalog_name}_with_region`.`flink_paimon`"""
order_qt_region1 """select ts1,ts19 from ${table_name} """
order_qt_region2 """select * from ${table_name} """
+ // 3.1 new features
+ // batch incremental
+ sql """SELECT * FROM ${table_name}
@incr('startTimestamp'='876488912')"""
+ // time travel
+ sql """SELECT * FROM ${table_name} FOR VERSION AS OF 1;"""
+ // branch/tag
+ // TODO(zgx): add branch/tag
+ // system table
+ sql """SELECT * FROM ${table_name}\$snapshots;"""
sql """drop catalog if exists ${catalog_name}_with_region"""
}
}
diff --git
a/regression-test/suites/external_table_p0/paimon/test_paimon_s3.groovy
b/regression-test/suites/external_table_p0/paimon/test_paimon_s3.groovy
index ec9bdc19b8e..ff4943e4e66 100644
--- a/regression-test/suites/external_table_p0/paimon/test_paimon_s3.groovy
+++ b/regression-test/suites/external_table_p0/paimon/test_paimon_s3.groovy
@@ -46,6 +46,15 @@ suite("test_paimon_s3",
"p0,external,doris,external_docker,external_docker_doris
"order_qt_${prefix}" """
SELECT * FROM hive_test_table;
"""
+ // 3.1 new features
+ // batch incremental
+ sql """SELECT * FROM hive_test_table
@incr('startTimestamp'='876488912')"""
+ // time travel
+ sql """SELECT * FROM hive_test_table FOR VERSION AS OF 1;"""
+ // branch/tag
+ // TODO(zgx): add branch/tag
+ // system table
+ sql """SELECT * FROM hive_test_table\$snapshots;"""
}
String enabled = context.config.otherConfigs.get("enablePaimonTest")
diff --git
a/regression-test/suites/external_table_p2/hive/test_cloud_accessible_oss.groovy
b/regression-test/suites/external_table_p2/hive/test_cloud_accessible_oss.groovy
index d43ecaebaf9..c4d234cc37d 100644
---
a/regression-test/suites/external_table_p2/hive/test_cloud_accessible_oss.groovy
+++
b/regression-test/suites/external_table_p2/hive/test_cloud_accessible_oss.groovy
@@ -29,6 +29,7 @@ suite("test_cloud_accessible_oss",
"p2,external,hive,external_remote,external_re
String extHiveHmsPort =
context.config.otherConfigs.get("extHiveHmsPort")
String ak = context.config.otherConfigs.get("aliYunAk")
String sk = context.config.otherConfigs.get("aliYunSk")
+ String endpoint = context.config.otherConfigs.get("aliYunEndpoint")
String hms_catalog_name = "test_cloud_accessible_oss"
sql """drop catalog if exists ${hms_catalog_name};"""
sql """
@@ -36,7 +37,7 @@ suite("test_cloud_accessible_oss",
"p2,external,hive,external_remote,external_re
PROPERTIES (
'type' = 'hms',
'hive.metastore.uris' =
'thrift://${extHiveHmsHost}:${extHiveHmsPort}',
- 'oss.endpoint' = 'oss-cn-beijing.aliyuncs.com',
+ 'oss.endpoint' = '${endpoint}',
'oss.access_key' = '${ak}',
'oss.secret_key' = '${sk}'
);
@@ -54,14 +55,16 @@ suite("test_cloud_accessible_oss",
"p2,external,hive,external_remote,external_re
// dlf case
String dlf_catalog_name = "test_cloud_accessible_dlf"
String dlf_uid = context.config.otherConfigs.get("dlfUid")
+ String dlf_endpoint = context.config.otherConfigs.get("dlf_endpoint")
+ String dlf_region = context.config.otherConfigs.get("dlf_region")
sql """drop catalog if exists ${dlf_catalog_name};"""
sql """
CREATE CATALOG IF NOT EXISTS ${dlf_catalog_name}
PROPERTIES (
"type"="hms",
"hive.metastore.type" = "dlf",
- "dlf.endpoint" = "dlf.cn-beijing.aliyuncs.com",
- "dlf.region" = "cn-beijing",
+ "dlf.endpoint" = "${dlf_endpoint}",
+ "dlf.region" = "${dlf_region}",
"dlf.proxy.mode" = "DLF_ONLY",
"dlf.uid" = "${dlf_uid}",
"dlf.access_key" = "${ak}",
diff --git
a/regression-test/suites/external_table_p2/iceberg/iceberg_rest_s3_storage_test.groovy
b/regression-test/suites/external_table_p2/iceberg/iceberg_rest_s3_storage_test.groovy
index b2e9ad2ee1f..c8944dcb597 100644
---
a/regression-test/suites/external_table_p2/iceberg/iceberg_rest_s3_storage_test.groovy
+++
b/regression-test/suites/external_table_p2/iceberg/iceberg_rest_s3_storage_test.groovy
@@ -306,9 +306,11 @@ suite("iceberg_rest_s3_storage_test",
"p2,external,iceberg,external_docker,exter
/****************OSS*******************/
String oss_ak = context.config.otherConfigs.get("aliYunAk")
String oss_sk = context.config.otherConfigs.get("aliYunSk")
- String oss_endpoint = "https://oss-cn-beijing.aliyuncs.com"
- String oss_parent_path = "doris-regression-bj"
- String oss_region = "cn-beijing"
+ String endpoint = context.config.otherConfigs.get("aliYunEndpoint")
+ String oss_endpoint = "https://${endpoint}"
+ String oss_parent_path =
context.config.otherConfigs.get("aliYunBucket")
+ String oss_region = context.config.otherConfigs.get("aliYunRegion")
+
String oss_region_param = """
'oss.region' = '${oss_region}',
"""
diff --git
a/regression-test/suites/external_table_p2/paimon/test_paimon_dlf_catalog.groovy
b/regression-test/suites/external_table_p2/paimon/test_paimon_dlf_catalog.groovy
index b053bb25647..5a68844baa8 100644
---
a/regression-test/suites/external_table_p2/paimon/test_paimon_dlf_catalog.groovy
+++
b/regression-test/suites/external_table_p2/paimon/test_paimon_dlf_catalog.groovy
@@ -53,7 +53,15 @@ suite("test_paimon_dlf_catalog",
"p2,external,paimon,external_remote,external_re
qt_c1 """ select * from tb_simple order by id """
sql """set force_jni_scanner=true"""
qt_c2 """ select * from tb_simple order by id """
-
+ // 3.1 new features
+ // batch incremental
+ sql """SELECT * FROM tb_simple @incr('startTimestamp'='876488912')"""
+ // time travel
+ sql """SELECT * FROM tb_simple FOR VERSION AS OF 1;"""
+ // branch/tag
+ // TODO(zgx): add branch/tag
+ // system table
+ sql """SELECT * FROM tb_simple\$snapshots;"""
} finally {
sql """set force_jni_scanner=false"""
}
diff --git
a/regression-test/suites/external_table_p2/paimon/test_paimon_dlf_catalog_miss_dlf_param.groovy
b/regression-test/suites/external_table_p2/paimon/test_paimon_dlf_catalog_miss_dlf_param.groovy
index 2b7a3ed024d..b2deafc316a 100644
---
a/regression-test/suites/external_table_p2/paimon/test_paimon_dlf_catalog_miss_dlf_param.groovy
+++
b/regression-test/suites/external_table_p2/paimon/test_paimon_dlf_catalog_miss_dlf_param.groovy
@@ -28,6 +28,7 @@ suite("test_paimon_dlf_catalog_miss_dlf_param",
"p2,external,paimon,external_rem
String catalog_id = context.config.otherConfigs.get("dlf_catalog_id")
String access_key = context.config.otherConfigs.get("dlf_access_key")
String secret_key = context.config.otherConfigs.get("dlf_secret_key")
+ String oss_endpoint = context.config.otherConfigs.get("s3Endpoint")
sql """drop catalog if exists ${catalog};"""
@@ -42,7 +43,7 @@ suite("test_paimon_dlf_catalog_miss_dlf_param",
"p2,external,paimon,external_rem
"dlf.catalog.id" = "${catalog_id}",
"dlf.access_key" = "${access_key}",
"dlf.secret_key" = "${secret_key}",
- "oss.endpoint"="oss-cn-beijing.aliyuncs.com",
+ "oss.endpoint"="${oss_endpoint}",
"oss.access_key" = "${access_key}",
"oss.secret_key" = "${secret_key}"
);
@@ -56,6 +57,15 @@ suite("test_paimon_dlf_catalog_miss_dlf_param",
"p2,external,paimon,external_rem
qt_c1 """ select * from tb_simple order by id """
sql """set force_jni_scanner=true"""
qt_c2 """ select * from tb_simple order by id """
+ // 3.1 new features
+ // batch incremental
+ sql """SELECT * FROM tb_simple @incr('startTimestamp'='876488912')"""
+ // time travel
+ sql """SELECT * FROM tb_simple FOR VERSION AS OF 1;"""
+ // branch/tag
+ // TODO(zgx): add branch/tag
+ // system table
+ sql """SELECT * FROM tb_simple\$snapshots;"""
} finally {
sql """set force_jni_scanner=false"""
diff --git
a/regression-test/suites/external_table_p2/paimon/test_paimon_dlf_catalog_new_param.groovy
b/regression-test/suites/external_table_p2/paimon/test_paimon_dlf_catalog_new_param.groovy
index a8292b7957d..1044dc8b778 100644
---
a/regression-test/suites/external_table_p2/paimon/test_paimon_dlf_catalog_new_param.groovy
+++
b/regression-test/suites/external_table_p2/paimon/test_paimon_dlf_catalog_new_param.groovy
@@ -1,5 +1,3 @@
-import java.sql.Array
-
// 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
@@ -30,6 +28,7 @@ suite("test_paimon_dlf_catalog_new_param",
"p2,external,paimon,external_remote,e
String catalog_id = context.config.otherConfigs.get("dlf_catalog_id")
String access_key = context.config.otherConfigs.get("dlf_access_key")
String secret_key = context.config.otherConfigs.get("dlf_secret_key")
+ String oss_endpoint = context.config.otherConfigs.get("s3Endpoint")
String dlf_vpc_endpoint =
context.config.otherConfigs.get("dlf_vpc_endpoint")
String dlf_public_endpoint =
context.config.otherConfigs.get("dlf_public_endpoint")
@@ -46,7 +45,7 @@ suite("test_paimon_dlf_catalog_new_param",
"p2,external,paimon,external_remote,e
"dlf.access_key" = "${access_key}",
"dlf.secret_key" = "${secret_key}",
"dlf.endpoint" = "${dlf_vpc_endpoint}",
- "oss.endpoint"="oss-cn-beijing.aliyuncs.com",
+ "oss.endpoint"="${oss_endpoint}",
"oss.access_key" = "${access_key}",
"oss.secret_key" = "${secret_key}"
);
@@ -60,6 +59,15 @@ suite("test_paimon_dlf_catalog_new_param",
"p2,external,paimon,external_remote,e
qt_c1 """ select * from tb_simple order by id """
sql """set force_jni_scanner=true"""
qt_c2 """ select * from tb_simple order by id """
+ // 3.1 new features
+ // batch incremental
+ sql """SELECT * FROM tb_simple @incr('startTimestamp'='876488912')"""
+ // time travel
+ sql """SELECT * FROM tb_simple FOR VERSION AS OF 1;"""
+ // branch/tag
+ // TODO(zgx): add branch/tag
+ // system table
+ sql """SELECT * FROM tb_simple\$snapshots;"""
} finally {
sql """set force_jni_scanner=false"""
diff --git
a/regression-test/suites/external_table_p2/paimon/test_paimon_hms_catalog.groovy
b/regression-test/suites/external_table_p2/paimon/test_paimon_hms_catalog.groovy
index 265332cd5b3..790f1095d4e 100644
---
a/regression-test/suites/external_table_p2/paimon/test_paimon_hms_catalog.groovy
+++
b/regression-test/suites/external_table_p2/paimon/test_paimon_hms_catalog.groovy
@@ -43,10 +43,19 @@ suite("test_paimon_hms_catalog",
"p2,external,paimon,new_catalog_property") {
"order_qt_${prefix}" """
SELECT * FROM external_test_table;
"""
- sql """set force_jni_scanner=true"""
- "order_qt_${prefix}" """
+ sql """set force_jni_scanner=true"""
+ "order_qt_${prefix}" """
SELECT * FROM external_test_table;
"""
+ // 3.1 new features
+ // batch incremental
+ sql """SELECT * FROM external_test_table
@incr('startTimestamp'='876488912')"""
+ // time travel
+ sql """SELECT * FROM external_test_table FOR VERSION AS OF 1;"""
+ // branch/tag
+ // TODO(zgx): add branch/tag
+ // system table
+ sql """SELECT * FROM external_test_table\$snapshots;"""
}
String enabled = context.config.otherConfigs.get("enablePaimonTest")
if (enabled == null || !enabled.equalsIgnoreCase("true")) {
@@ -55,12 +64,14 @@ suite("test_paimon_hms_catalog",
"p2,external,paimon,new_catalog_property") {
String extHiveHmsHost = context.config.otherConfigs.get("externalEnvIp")
String extHiveHmsPort = context.config.otherConfigs.get("hive3HmsPort")
String extHiveHdfsHost = context.config.otherConfigs.get("hive3HdfsPort")
+ String keytab_root_dir = "/keytabs"
/****************OSS*******************/
String oss_ak = context.config.otherConfigs.get("aliYunAk")
String oss_sk = context.config.otherConfigs.get("aliYunSk")
- String oss_endpoint = "oss-cn-beijing.aliyuncs.com"
- String oss_warehouse =
"oss://doris-regression-bj/regression/paimon_warehouse"
+ String oss_endpoint = context.config.otherConfigs.get("aliYunEndpoint")
+ String oss_bucket = context.config.otherConfigs.get("aliYunBucket")
+ String oss_warehouse = "oss://${oss_bucket}/regression/paimon_warehouse"
String oss_warehouse_properties = """
'warehouse' = '${oss_warehouse}',
"""
@@ -107,6 +118,27 @@ suite("test_paimon_hms_catalog",
"p2,external,paimon,new_catalog_property") {
String hdfs_storage_properties = """
'fs.defaultFS' = 'hdfs://${extHiveHmsHost}:${extHiveHdfsHost}'
"""
+
+ // kerberos
+ String hdfs_kerberos_properties = """
+ "fs.defaultFS" = "hdfs://${extHiveHmsHost}:8520",
+ "hadoop.security.authentication" = "kerberos",
+
"hadoop.kerberos.principal"="hive/[email protected]",
+ "hadoop.kerberos.keytab" =
"${keytab_root_dir}/hive-presto-master.keytab"
+ """
+ String hms_kerberos_new_prop = """
+ "hive.metastore.uris" = "thrift://${extHiveHmsHost}:9583",
+
"hive.metastore.client.principal"="hive/[email protected]",
+ "hive.metastore.client.keytab" =
"${keytab_root_dir}/hive-presto-master.keytab",
+ "hive.metastore.service.principal" =
"hive/[email protected]",
+ "hive.metastore.sasl.enabled " = "true",
+ "hadoop.security.auth_to_local" =
"RULE:[2:\\\$1@\\\$0](.*@LABS.TERADATA.COM)s/@.*//
+
RULE:[2:\\\$1@\\\$0](.*@OTHERLABS.TERADATA.COM)s/@.*//
+
RULE:[2:\\\$1@\\\$0](.*@OTHERREALM.COM)s/@.*//
+ DEFAULT",
+ """
+
+
/**************** AWS S3*******************/
String s3_warehouse = "s3://selectdb-qa-datalake-test-hk/paimon_warehouse"
String aws_ak = context.config.otherConfigs.get("AWSAK")
@@ -121,17 +153,41 @@ suite("test_paimon_hms_catalog",
"p2,external,paimon,new_catalog_property") {
's3.endpoint' = '${aws_endpoint}'
"""
+ /**************** GCS *******************/
+ String gcs_warehouse = "gs://selectdb-qa-datalake-test/paimon_warehouse"
+ String gcs_ak = context.config.otherConfigs.get("GCSAk")
+ String gcs_sk = context.config.otherConfigs.get("GCSSk")
+ String gcs_endpoint = context.config.otherConfigs.get("GCSEndpoint")
+ String gcs_warehouse_properties = """
+ 'warehouse' = '${gcs_warehouse}',
+ """
+ String gcs_storage_properties = """
+ 'gs.access_key' = '${gcs_ak}',
+ 'gs.secret_key' = '${gcs_sk}',
+ 'gs.endpoint' = '${gcs_endpoint}'
+ """
+ String gcs_storage_s3_properties = """
+ 's3.access_key' = '${gcs_ak}',
+ 's3.secret_key' = '${gcs_sk}',
+ 's3.endpoint' = '${gcs_endpoint}'
+ """
+
/*--------HMS START -----------*/
- String paimon_hms_catalog_properties = """
- 'type'='paimon',
- 'paimon.catalog.type'='hms',
+ String paimon_hms_type_prop = """
+ 'type'='paimon',
+ 'paimon.catalog.type'='hms',
+ """
+ String paimon_hms_catalog_properties = paimon_hms_type_prop + """
'hive.metastore.uris' = 'thrift://${extHiveHmsHost}:${extHiveHmsPort}',
"""
testQuery(paimon_hms_catalog_properties + hdfs_warehouse_properties +
hdfs_storage_properties, "hdfs", "hdfs_db")
+ testQuery(paimon_hms_type_prop + hdfs_warehouse_properties +
hms_kerberos_new_prop + hdfs_kerberos_properties, "hdfs_kerberos", "hdfs_db")
testQuery(paimon_hms_catalog_properties + oss_warehouse_properties +
oss_storage_properties, "oss", "ali_db")
testQuery(paimon_hms_catalog_properties + obs_warehouse_properties +
obs_storage_properties, "obs", "hw_db")
testQuery(paimon_hms_catalog_properties + cos_warehouse_properties +
cos_storage_properties, "cos", "tx_db")
testQuery(paimon_hms_catalog_properties + s3_warehouse_properties +
s3_storage_properties, "s3", "aws_db")
+ testQuery(paimon_hms_catalog_properties + gcs_warehouse_properties +
gcs_storage_properties, "gcs", "gcs_db")
+ testQuery(paimon_hms_catalog_properties + gcs_warehouse_properties +
gcs_storage_s3_properties, "gcs_s3", "gcs_db")
String paimon_fs_hdfs_support = """
'fs.hdfs.support' = 'true',
@@ -148,10 +204,17 @@ suite("test_paimon_hms_catalog",
"p2,external,paimon,new_catalog_property") {
String paimon_fs_s3_support = """
'fs.s3.support' = 'true',
"""
+ String paimon_fs_gcs_support = """
+ 'fs.gs.support' = 'true',
+ """
testQuery(paimon_hms_catalog_properties + paimon_fs_hdfs_support +
hdfs_warehouse_properties + hdfs_storage_properties, "support_hdfs", "hdfs_db")
+ testQuery(paimon_hms_type_prop + paimon_fs_hdfs_support +
hdfs_warehouse_properties + hms_kerberos_new_prop + hdfs_kerberos_properties,
"support_hdfs_kerberos", "hdfs_db")
testQuery(paimon_hms_catalog_properties + paimon_fs_oss_support +
oss_warehouse_properties + oss_storage_properties, "support_oss", "ali_db")
testQuery(paimon_hms_catalog_properties + paimon_fs_obs_support +
obs_warehouse_properties + obs_storage_properties, "support_obs", "hw_db")
testQuery(paimon_hms_catalog_properties + paimon_fs_cos_support +
cos_warehouse_properties + cos_storage_properties, "support_cos", "tx_db")
testQuery(paimon_hms_catalog_properties + paimon_fs_s3_support +
s3_warehouse_properties + s3_storage_properties, "support_s3", "aws_db")
+ testQuery(paimon_hms_catalog_properties + paimon_fs_gcs_support +
gcs_warehouse_properties + gcs_storage_properties, "support_gcs", "gcs_db")
+ testQuery(paimon_hms_catalog_properties + paimon_fs_gcs_support +
gcs_warehouse_properties + gcs_storage_s3_properties, "support_gcs_s3",
"gcs_db")
+
}
diff --git
a/regression-test/suites/external_table_p2/refactor_catalog_param/hive_on_hms_and_dlf.groovy
b/regression-test/suites/external_table_p2/refactor_catalog_param/hive_on_hms_and_dlf.groovy
index fe6908d7680..4c531d784d7 100644
---
a/regression-test/suites/external_table_p2/refactor_catalog_param/hive_on_hms_and_dlf.groovy
+++
b/regression-test/suites/external_table_p2/refactor_catalog_param/hive_on_hms_and_dlf.groovy
@@ -138,9 +138,10 @@ suite("hive_on_hms_and_dlf",
"p2,external,new_catalog_property") {
/****************OSS*******************/
String oss_ak = context.config.otherConfigs.get("aliYunAk")
String oss_sk = context.config.otherConfigs.get("aliYunSk")
- String oss_endpoint = "oss-cn-beijing.aliyuncs.com"
- String oss_parent_path = "doris-regression-bj/refactor-test"
- String oss_region = "cn-beijing"
+ String oss_endpoint = context.config.otherConfigs.get("aliYunEndpoint")
+ String bucket = context.config.otherConfigs.get("aliYunBucket")
+ String oss_parent_path = "${bucket}/refactor-test"
+ String oss_region = context.config.otherConfigs.get("aliYunRegion")
String oss_region_param = """
'oss.region' = '${oss_region}',
"""
@@ -185,7 +186,7 @@ suite("hive_on_hms_and_dlf",
"p2,external,new_catalog_property") {
/**************** DLF *******************/
String dlf_oss_properties = """
- "oss.endpoint" = "oss-cn-beijing.aliyuncs.com",
+ "oss.endpoint" = "${oss_endpoint}",
"oss.access_key" = "${dlf_access_key}",
"oss.secret_key" = "${dlf_secret_key}",
"""
@@ -278,7 +279,7 @@ suite("hive_on_hms_and_dlf",
"p2,external,new_catalog_property") {
String dlf_region_param = """
"dlf.region" = "${dlf_region}",
"""
- String dlf_endpoint = "dlf.cn-beijing.aliyuncs.com"
+ String dlf_endpoint = context.config.otherConfigs.get("dlf_endpoint")
String dlf_endpoint_properties = """
"dlf.endpoint" = "${dlf_endpoint}",
"""
diff --git
a/regression-test/suites/external_table_p2/refactor_catalog_param/iceberg_on_hms_and_filesystem_and_dlf.groovy
b/regression-test/suites/external_table_p2/refactor_catalog_param/iceberg_on_hms_and_filesystem_and_dlf.groovy
index 17a6b414461..5cc528e4ce5 100644
---
a/regression-test/suites/external_table_p2/refactor_catalog_param/iceberg_on_hms_and_filesystem_and_dlf.groovy
+++
b/regression-test/suites/external_table_p2/refactor_catalog_param/iceberg_on_hms_and_filesystem_and_dlf.groovy
@@ -215,13 +215,13 @@ suite("iceberg_on_hms_and_filesystem_and_dlf",
"p2,external,new_catalog_property
/*-----S3------*/
String s3_ak = context.config.otherConfigs.get("AWSAK")
String s3_sk = context.config.otherConfigs.get("AWSSK")
- String s3_endpoint = "http://s3.ap-east-1.amazonaws.com/"
- String s3_region = "ap-east-1"
+ String s3_endpoint = context.config.otherConfigs.get("AWSEndpoint")
+ String s3_region = context.config.otherConfigs.get("AWSRegion")
String s3_parent_path = "selectdb-qa-datalake-test-hk/refactor-test"
String s3_storage_properties = """
's3.access_key' = '${s3_ak}',
's3.secret_key' = '${s3_sk}',
- 's3.endpoint' = '${s3_endpoint}'
+ 's3.endpoint' = 'http://${s3_endpoint}'
"""
String s3_region_param = """
's3.region' = '${s3_region}',
@@ -229,9 +229,10 @@ suite("iceberg_on_hms_and_filesystem_and_dlf",
"p2,external,new_catalog_property
/****************OSS*******************/
String oss_ak = context.config.otherConfigs.get("aliYunAk")
String oss_sk = context.config.otherConfigs.get("aliYunSk")
- String oss_endpoint = "oss-cn-beijing.aliyuncs.com"
- String oss_parent_path = "doris-regression-bj/refactor-test"
- String oss_region = "cn-beijing"
+ String oss_endpoint = context.config.otherConfigs.get("aliYunEndpoint")
+ String oss_bucket = context.config.otherConfigs.get("aliYunBucket")
+ String oss_parent_path = "${oss_bucket}/refactor-test"
+ String oss_region = context.config.otherConfigs.get("aliYunRegion")
String oss_region_param = """
'oss.region' = '${oss_region}',
"""
@@ -318,68 +319,58 @@ suite("iceberg_on_hms_and_filesystem_and_dlf",
"p2,external,new_catalog_property
'warehouse' =
'oss://${oss_parent_path}/iceberg-hms-warehouse',
"""
// has endpoint not region
- testQueryAndInsert(iceberg_hms_type_prop + hms_prop
- + warehouse + oss_storage_properties, "iceberg_hms_on_oss")
+ testQueryAndInsert(iceberg_hms_type_prop + hms_prop + warehouse +
oss_storage_properties, "iceberg_hms_on_oss")
- testQueryAndInsert(iceberg_hms_type_prop + hms_prop
- + warehouse + oss_region_param + oss_storage_properties,
"iceberg_hms_on_oss")
+ testQueryAndInsert(iceberg_hms_type_prop + hms_prop + warehouse +
oss_region_param + oss_storage_properties, "iceberg_hms_on_oss")
//old kerberos
testQueryAndInsert(iceberg_hms_type_prop + hms_kerberos_old_prop +
warehouse + oss_storage_properties, "iceberg_hms_on_oss_kerberos_old")
//new kerberos
- testQueryAndInsert(iceberg_hms_type_prop + hms_kerberos_new_prop+
warehouse + oss_storage_properties, "iceberg_hms_on_oss_kerberos_new")
+ testQueryAndInsert(iceberg_hms_type_prop + hms_kerberos_new_prop +
warehouse + oss_storage_properties, "iceberg_hms_on_oss_kerberos_new")
/*--------HMS on COS-----------*/
warehouse = """
'warehouse' =
'cosn://${cos_parent_path}/iceberg-hms-cos-warehouse',
"""
- testQueryAndInsert(iceberg_hms_type_prop + hms_prop
- + warehouse + cos_storage_properties, "iceberg_hms_on_cos")
+ testQueryAndInsert(iceberg_hms_type_prop + hms_prop + warehouse +
cos_storage_properties, "iceberg_hms_on_cos")
- testQueryAndInsert(iceberg_hms_type_prop + hms_prop
- + warehouse + cos_region_param + cos_storage_properties,
"iceberg_hms_on_cos")
+ testQueryAndInsert(iceberg_hms_type_prop + hms_prop + warehouse +
cos_region_param + cos_storage_properties, "iceberg_hms_on_cos")
warehouse = """
'warehouse' = 'cos://${cos_parent_path}/iceberg-hms-cos-warehouse',
"""
- testQueryAndInsert(iceberg_hms_type_prop + hms_prop
- + warehouse + cos_storage_properties, "iceberg_hms_on_cos")
+ testQueryAndInsert(iceberg_hms_type_prop + hms_prop + warehouse +
cos_storage_properties, "iceberg_hms_on_cos")
//kerberos
testQueryAndInsert(iceberg_hms_type_prop + hms_kerberos_old_prop +
warehouse + cos_storage_properties, "iceberg_hms_on_cos_kerberos_old")
testQueryAndInsert(iceberg_hms_type_prop + hms_kerberos_new_prop +
warehouse + cos_storage_properties, "iceberg_hms_on_cos_kerberos_new")
-
/*--------HMS on S3-----------*/
warehouse = """
'warehouse' = 's3a://${s3_parent_path}/iceberg-hms-s3-warehouse',
"""
- testQueryAndInsert(iceberg_hms_type_prop + hms_prop
- + warehouse + s3_storage_properties, "iceberg_hms_on_s3")
- testQueryAndInsert(iceberg_hms_type_prop + hms_prop
- + warehouse + s3_region_param + s3_storage_properties,
"iceberg_hms_on_s3")
+ testQueryAndInsert(iceberg_hms_type_prop + hms_prop + warehouse +
s3_storage_properties, "iceberg_hms_on_s3")
+ testQueryAndInsert(iceberg_hms_type_prop + hms_prop + warehouse +
s3_region_param + s3_storage_properties, "iceberg_hms_on_s3")
//kerberos Docker HMS c
// testQueryAndInsert(iceberg_hms_type_prop + hms_kerberos_old_prop+
warehouse + s3_storage_properties, "iceberg_hms_on_s3_kerberos_old")
// testQueryAndInsert(iceberg_hms_type_prop + hms_kerberos_new_prop +
warehouse + s3_storage_properties, "iceberg_hms_on_s3_kerberos_new")
warehouse = """
'warehouse' = 's3://${s3_parent_path}/iceberg-hms-s3-warehouse',
"""
- testQueryAndInsert(iceberg_hms_type_prop + hms_prop
- + warehouse + s3_storage_properties, "iceberg_hms_on_s3")
+ testQueryAndInsert(iceberg_hms_type_prop + hms_prop + warehouse +
s3_storage_properties, "iceberg_hms_on_s3")
/*--------HMS on HDFS-----------*/
warehouse = """
'warehouse' = '${hdfs_parent_path}/iceberg-hms-hdfs-warehouse',
"""
- testQueryAndInsert(iceberg_hms_type_prop + hms_prop
- + warehouse + hdfs_properties, "iceberg_hms_on_hdfs")
+ testQueryAndInsert(iceberg_hms_type_prop + hms_prop + warehouse +
hdfs_properties, "iceberg_hms_on_hdfs")
warehouse = """
'warehouse' = 'hdfs://${externalEnvIp}:8520/iceberg-hms-hdfs-warehouse',
"""
//old kerberos
- testQueryAndInsert(iceberg_hms_type_prop +
hms_kerberos_old_prop_not_include_kerberos_prop+ warehouse +
hdfs_kerberos_properties, "iceberg_hms_on_hdfs_kerberos_old")
+ testQueryAndInsert(iceberg_hms_type_prop +
hms_kerberos_old_prop_not_include_kerberos_prop + warehouse +
hdfs_kerberos_properties, "iceberg_hms_on_hdfs_kerberos_old")
//new kerberos
testQueryAndInsert(iceberg_hms_type_prop + hms_kerberos_new_prop +
warehouse + hdfs_kerberos_properties, "iceberg_hms_on_hdfs_kerberos_hdfs")
@@ -437,7 +428,8 @@ suite("iceberg_on_hms_and_filesystem_and_dlf",
"p2,external,new_catalog_property
/*--------FILESYSTEM END-----------*/
-
+ String dlf_uid = context.config.otherConfigs.get("dlf_uid")
+ String dlf_catalog_id = context.config.otherConfigs("dlf_catalog_id")
String dlf_access_key = context.config.otherConfigs.get("dlf_access_key")
String dlf_secret_key = context.config.otherConfigs.get("dlf_secret_key")
/**************** DLF *******************/
@@ -456,12 +448,12 @@ suite("iceberg_on_hms_and_filesystem_and_dlf",
"p2,external,new_catalog_property
String dlf_region_param = """
"dlf.region" = "${dlf_region}",
"""
- String dlf_endpoint = "dlf.cn-beijing.aliyuncs.com"
+ String dlf_endpoint = context.config.otherConfigs.get("dlf_endpoint")
String dlf_endpoint_properties = """
"dlf.endpoint" = "${dlf_endpoint}",
"""
String dlf_oss_properties = """
- "oss.endpoint" = "oss-cn-beijing.aliyuncs.com",
+ "oss.endpoint" = "${oss_endpoint}",
"oss.access_key" = "${dlf_access_key}",
"oss.secret_key" = "${dlf_secret_key}",
"""
@@ -477,15 +469,15 @@ suite("iceberg_on_hms_and_filesystem_and_dlf",
"p2,external,new_catalog_property
'iceberg.catalog.type'='dlf',
"""
- testQuery(iceberg_dlf_type_properties + dlf_region_param +
dlf_catalog_base_properties, "iceberg_dlf_catalog", "regression_iceberg",
"tb_simple", 2)
+ testQuery(iceberg_dlf_type_properties + dlf_region_param +
dlf_catalog_base_properties, "iceberg_dlf_catalog", "regression_iceberg",
"tb_simple", 2)
-
testQuery(iceberg_dlf_type_properties+dlf_region_param+dlf_endpoint_properties
+ dlf_catalog_base_properties, "iceberg_dlf_catalog", "regression_iceberg",
"tb_simple", 2)
- testQuery(iceberg_dlf_type_properties+dlf_oss_properties +
dlf_region_param + dlf_catalog_base_properties, "iceberg_dlf_catalog",
"regression_iceberg", "tb_simple", 2)
- testQuery(iceberg_dlf_type_properties_no_warehouse+dlf_oss_properties +
dlf_region_param + dlf_catalog_base_properties, "iceberg_dlf_catalog",
"regression_iceberg", "tb_simple", 2)
+ testQuery(iceberg_dlf_type_properties + dlf_region_param +
dlf_endpoint_properties + dlf_catalog_base_properties, "iceberg_dlf_catalog",
"regression_iceberg", "tb_simple", 2)
+ testQuery(iceberg_dlf_type_properties + dlf_oss_properties +
dlf_region_param + dlf_catalog_base_properties, "iceberg_dlf_catalog",
"regression_iceberg", "tb_simple", 2)
+ testQuery(iceberg_dlf_type_properties_no_warehouse + dlf_oss_properties +
dlf_region_param + dlf_catalog_base_properties, "iceberg_dlf_catalog",
"regression_iceberg", "tb_simple", 2)
// region is required
shouldFail {
- testQuery(iceberg_dlf_type_properties+dlf_catalog_base_properties,
"iceberg_dlf_catalog", "regression_iceberg", "tb_simple", 2)
+ testQuery(iceberg_dlf_type_properties + dlf_catalog_base_properties,
"iceberg_dlf_catalog", "regression_iceberg", "tb_simple", 2)
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]