diff --git a/fe/fe-core/src/main/java/org/apache/doris/tablefunction/PartitionsTableValuedFunction.java b/fe/fe-core/src/main/java/org/apache/doris/tablefunction/PartitionsTableValuedFunction.java index eadeaa7dc9b51c..160399bfd000b3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/tablefunction/PartitionsTableValuedFunction.java +++ b/fe/fe-core/src/main/java/org/apache/doris/tablefunction/PartitionsTableValuedFunction.java @@ -140,7 +140,7 @@ public PartitionsTableValuedFunction(Map params) throws Analysis // check ctl, db, tbl validParams.put(key.toLowerCase(), params.get(key)); } - String catalogName = validParams.get(CATALOG); + String catalogName = validParams.getOrDefault(CATALOG, InternalCatalog.INTERNAL_CATALOG_NAME); String dbName = validParams.get(DB); String tableName = validParams.get(TABLE); if (StringUtils.isEmpty(catalogName) || StringUtils.isEmpty(dbName) || StringUtils.isEmpty(tableName)) { @@ -156,6 +156,10 @@ public PartitionsTableValuedFunction(Map params) throws Analysis } private void analyze(String catalogName, String dbName, String tableName) { + CatalogIf catalog = Env.getCurrentEnv().getCatalogMgr().getCatalog(catalogName); + if (catalog == null) { + throw new AnalysisException("can not find catalog: " + catalogName); + } if (!Env.getCurrentEnv().getAccessManager() .checkTblPriv(ConnectContext.get(), catalogName, dbName, tableName, PrivPredicate.SHOW)) { @@ -164,10 +168,6 @@ private void analyze(String catalogName, String dbName, String tableName) { catalogName + ": " + dbName + ": " + tableName); throw new AnalysisException(message); } - CatalogIf catalog = Env.getCurrentEnv().getCatalogMgr().getCatalog(catalogName); - if (catalog == null) { - throw new AnalysisException("can not find catalog: " + catalogName); - } // disallow unsupported catalog if (!(catalog.isInternalCatalog() || catalog instanceof HMSExternalCatalog || catalog instanceof MaxComputeExternalCatalog)) { diff --git a/regression-test/data/mtmv_p0/test_multi_pct_mtmv.out b/regression-test/data/mtmv_p0/test_multi_pct_mtmv.out index 67ee5cf54e40ed..bd1bbba191e41a 100644 --- a/regression-test/data/mtmv_p0/test_multi_pct_mtmv.out +++ b/regression-test/data/mtmv_p0/test_multi_pct_mtmv.out @@ -27,29 +27,57 @@ p_20170101_20170201 [] p_20170201_20170301 [test_multi_pct_mtmv_table1] p_20170301_20170401 [] +-- !partitions_1_2 -- +p_20170101_20170201 [] +p_20170201_20170301 [test_multi_pct_mtmv_table1] +p_20170301_20170401 [] + -- !partitions_2 -- p_20170101_20170201 [] p_20170201_20170301 [] p_20170301_20170401 [] +-- !partitions_2_2 -- +p_20170101_20170201 [] +p_20170201_20170301 [] +p_20170301_20170401 [] + -- !partitions_3 -- p_20170101_20170201 [] p_20170201_20170301 [] p_20170301_20170401 [test_multi_pct_mtmv_table2] +-- !partitions_3_2 -- +p_20170101_20170201 [] +p_20170201_20170301 [] +p_20170301_20170401 [test_multi_pct_mtmv_table2] + -- !partitions_4 -- p_20170101_20170201 [] p_20170201_20170301 [] +-- !partitions_4_2 -- +p_20170101_20170201 [] +p_20170201_20170301 [] + -- !partitions_5 -- p_20170101_20170201 [] p_20170201_20170301 [] +-- !partitions_5_2 -- +p_20170101_20170201 [] +p_20170201_20170301 [] + -- !partitions_6 -- p_20170101_20170201 [] p_20170201_20170301 [] p_20170401_20170501 [] +-- !partitions_6_2 -- +p_20170101_20170201 [] +p_20170201_20170301 [] +p_20170401_20170501 [] + -- !refresh_mode_overwrite -- PARTIAL diff --git a/regression-test/suites/auth_p0/test_partitions_auth.groovy b/regression-test/suites/auth_p0/test_partitions_auth.groovy index 2406930671f293..fa7e7067393fa7 100644 --- a/regression-test/suites/auth_p0/test_partitions_auth.groovy +++ b/regression-test/suites/auth_p0/test_partitions_auth.groovy @@ -62,7 +62,13 @@ suite("test_partitions_auth","p0,auth") { } test { sql """ - select * from partitions('catalog'='internal',"database"="${dbName}","table"="${tableName}"); + select * from partitions("catalog"="internal","database"="${dbName}","table"="${tableName}"); + """ + exception "denied" + } + test { + sql """ + select * from partitions("database"="${dbName}","table"="${tableName}"); """ exception "denied" } @@ -75,7 +81,10 @@ suite("test_partitions_auth","p0,auth") { show partitions from ${dbName}.${tableName}; """ sql """ - select * from partitions('catalog'='internal',"database"="${dbName}","table"="${tableName}"); + select * from partitions("catalog"="internal","database"="${dbName}","table"="${tableName}"); + """ + sql """ + select * from partitions("database"="${dbName}","table"="${tableName}"); """ } diff --git a/regression-test/suites/doc/table-design/data-partitioning/auto-partitioning.md.groovy b/regression-test/suites/doc/table-design/data-partitioning/auto-partitioning.md.groovy index c67537d78c9a98..7c32c76c5eec83 100644 --- a/regression-test/suites/doc/table-design/data-partitioning/auto-partitioning.md.groovy +++ b/regression-test/suites/doc/table-design/data-partitioning/auto-partitioning.md.groovy @@ -155,6 +155,9 @@ suite("docs/table-design/data-partitioning/auto-partitioning.md") { sql """ select * from partitions("catalog"="internal","database"="auto_partition_doc_test","table"="DAILY_TRADE_VALUE") where PartitionName = auto_partition_name('range', 'year', '2008-02-03'); """ + sql """ + select * from partitions("database"="auto_partition_doc_test","table"="DAILY_TRADE_VALUE") where PartitionName = auto_partition_name('range', 'year', '2008-02-03'); + """ diff --git a/regression-test/suites/doc/table-design/data-partitioning/basic-concepts.md.groovy b/regression-test/suites/doc/table-design/data-partitioning/basic-concepts.md.groovy index 8558aadb218cbc..5b91733c8c1394 100644 --- a/regression-test/suites/doc/table-design/data-partitioning/basic-concepts.md.groovy +++ b/regression-test/suites/doc/table-design/data-partitioning/basic-concepts.md.groovy @@ -219,7 +219,8 @@ suite("docs/table-design/data-partitioning/basic-concepts.md") { sql """ insert into list_table1 values ("Beijing"), ("XXX"), ("xxx"), ("Beijing"), ("Abc"), (null) """ sql """ insert into list_table1 values (null), ("") """ // not same partition - sql """ select * from partitions("catalog"="internal", "database"="partition_basic_concepts", "table"="DAILY_TRADE_VALUE") where PartitionName = auto_partition_name('range', 'year', '2008-02-03'); """ + sql """ select * from partitions("catalog"="internal","database"="partition_basic_concepts", "table"="DAILY_TRADE_VALUE") where PartitionName = auto_partition_name('range', 'year', '2008-02-03'); """ + sql """ select * from partitions("database"="partition_basic_concepts", "table"="DAILY_TRADE_VALUE") where PartitionName = auto_partition_name('range', 'year', '2008-02-03'); """ sql """ select * from information_schema.partitions where TABLE_SCHEMA='partition_basic_concepts' and TABLE_NAME='list_table1' and PARTITION_NAME=auto_partition_name('list', null); """ sql """ select * from information_schema.partitions where TABLE_NAME='DAILY_TRADE_VALUE' and PARTITION_DESCRIPTION like "[('2012-01-01'),%"; """ } diff --git a/regression-test/suites/external_table_p0/tvf/test_partitions_tvf.groovy b/regression-test/suites/external_table_p0/tvf/test_partitions_tvf.groovy index cab85625c84517..893cd45fa2d0b4 100644 --- a/regression-test/suites/external_table_p0/tvf/test_partitions_tvf.groovy +++ b/regression-test/suites/external_table_p0/tvf/test_partitions_tvf.groovy @@ -38,28 +38,39 @@ suite("test_partitions_tvf","p0,external,tvf,external_docker") { ); """ order_qt_desc "desc function partitions('catalog'='internal','database'='${dbName}','table'='${tableName}');" + sql "desc function partitions('database'='${dbName}','table'='${tableName}');" List> res = sql """ select * from partitions('catalog'='internal',"database"="${dbName}","table"="${tableName}"); """ + List> res2 = sql """ select * from partitions("database"="${dbName}","table"="${tableName}"); """ logger.info("res: " + res.toString()) + logger.info("res2: " + res2.toString()) assertEquals(1, res.size()); + assertEquals(1, res2.size()); // PartitionName assertEquals("p1", res[0][1]); + assertEquals("p1", res2[0][1]); // State assertEquals("NORMAL", res[0][4]); + assertEquals("NORMAL", res2[0][4]); // PartitionKey assertEquals("k3", res[0][5]); + assertEquals("k3", res2[0][5]); // Buckets assertEquals(2, res[0][8]); + assertEquals(2, res2[0][8]); // ReplicationNum: if force_olap_table_replication_num is set to 3,here will be 3 // assertEquals(1, res[0][9]); // StorageMedium assertEquals("HDD", res[0][10]); + assertEquals("HDD", res2[0][10]); // ReplicaAllocation: if force_olap_table_replication_num is set to 3,here will be 3 // assertEquals("tag.location.default: 1", res[0][16]); // IsMutable assertEquals(true, res[0][17]); + assertEquals(true, res2[0][17]); // SyncWithBaseTables assertEquals(true, res[0][18]); + assertEquals(true, res2[0][18]); // test exception @@ -68,6 +79,11 @@ suite("test_partitions_tvf","p0,external,tvf,external_docker") { // check exception exception "xxx" } + test { + sql """ select * from partitions("database"="${dbName}","table"="xxx"); """ + // check exception + exception "xxx" + } test { sql """ select * from partitions("database"="${dbName}"); """ // check exception diff --git a/regression-test/suites/mtmv_p0/test_multi_pct_mtmv.groovy b/regression-test/suites/mtmv_p0/test_multi_pct_mtmv.groovy index 4eb7a83ab70aab..a3a9e46cd32084 100644 --- a/regression-test/suites/mtmv_p0/test_multi_pct_mtmv.groovy +++ b/regression-test/suites/mtmv_p0/test_multi_pct_mtmv.groovy @@ -155,34 +155,40 @@ suite("test_multi_pct_mtmv","mtmv") { """ order_qt_partitions_1 "select PartitionName,UnsyncTables from partitions('catalog'='internal','database'='${dbName}','table'='${mvName}') order by PartitionId desc;" + order_qt_partitions_1_2 "select PartitionName,UnsyncTables from partitions('database'='${dbName}','table'='${mvName}') order by PartitionId desc;" sql """ REFRESH MATERIALIZED VIEW ${mvName} AUTO """ waitingMTMVTaskFinishedByMvName(mvName) order_qt_partitions_2 "select PartitionName,UnsyncTables from partitions('catalog'='internal','database'='${dbName}','table'='${mvName}') order by PartitionId desc;" + order_qt_partitions_2_2 "select PartitionName,UnsyncTables from partitions('database'='${dbName}','table'='${mvName}') order by PartitionId desc;" sql """ alter table ${tableName2} drop partition p201703; """ order_qt_partitions_3 "select PartitionName,UnsyncTables from partitions('catalog'='internal','database'='${dbName}','table'='${mvName}') order by PartitionId desc;" + order_qt_partitions_3_2 "select PartitionName,UnsyncTables from partitions('database'='${dbName}','table'='${mvName}') order by PartitionId desc;" sql """ REFRESH MATERIALIZED VIEW ${mvName} AUTO """ waitingMTMVTaskFinishedByMvName(mvName) order_qt_partitions_4 "select PartitionName,UnsyncTables from partitions('catalog'='internal','database'='${dbName}','table'='${mvName}') order by PartitionId desc;" + order_qt_partitions_4_2 "select PartitionName,UnsyncTables from partitions('database'='${dbName}','table'='${mvName}') order by PartitionId desc;" sql """ alter table ${tableName2} add partition p201704 VALUES [("2017-04-01"),("2017-05-01")); """ order_qt_partitions_5 "select PartitionName,UnsyncTables from partitions('catalog'='internal','database'='${dbName}','table'='${mvName}') order by PartitionId desc;" + order_qt_partitions_5_2 "select PartitionName,UnsyncTables from partitions('database'='${dbName}','table'='${mvName}') order by PartitionId desc;" sql """ REFRESH MATERIALIZED VIEW ${mvName} partitions(p_20170401_20170501); """ waitingMTMVTaskFinishedByMvName(mvName) order_qt_partitions_6 "select PartitionName,UnsyncTables from partitions('catalog'='internal','database'='${dbName}','table'='${mvName}') order by PartitionId desc;" + order_qt_partitions_6_2 "select PartitionName,UnsyncTables from partitions('database'='${dbName}','table'='${mvName}') order by PartitionId desc;" sql """ insert into ${tableName2} values("2017-04-01",10);