This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-4.0 by this push:
new abed9a28d50 branch-4.0: [Fix](function) fix partitions function throw
error when query internal table without specifying catalog condition, this
incompatible with show partitions command #60247 (#60452)
abed9a28d50 is described below
commit abed9a28d5076310aac8a46fce5e03ea74c5dead
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Tue Feb 3 14:12:14 2026 +0800
branch-4.0: [Fix](function) fix partitions function throw error when query
internal table without specifying catalog condition, this incompatible with
show partitions command #60247 (#60452)
Cherry-picked from #60247
Co-authored-by: heguanhui <[email protected]>
---
.../PartitionsTableValuedFunction.java | 10 ++++----
.../data/mtmv_p0/test_multi_pct_mtmv.out | 28 ++++++++++++++++++++++
.../suites/auth_p0/test_partitions_auth.groovy | 13 ++++++++--
.../data-partitioning/auto-partitioning.md.groovy | 3 +++
.../data-partitioning/basic-concepts.md.groovy | 3 ++-
.../tvf/test_partitions_tvf.groovy | 16 +++++++++++++
.../suites/mtmv_p0/test_multi_pct_mtmv.groovy | 6 +++++
7 files changed, 71 insertions(+), 8 deletions(-)
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 eadeaa7dc9b..160399bfd00 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 class PartitionsTableValuedFunction extends
MetadataTableValuedFunction {
// 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 class PartitionsTableValuedFunction extends
MetadataTableValuedFunction {
}
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 @@ public class PartitionsTableValuedFunction extends
MetadataTableValuedFunction {
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 67ee5cf54e4..bd1bbba191e 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 2406930671f..fa7e7067393 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 c67537d78c9..7c32c76c5ee 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 8558aadb218..5b91733c8c1 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 cab85625c84..893cd45fa2d 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<List<Object>> res = sql """ select * from
partitions('catalog'='internal',"database"="${dbName}","table"="${tableName}");
"""
+ List<List<Object>> 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 4eb7a83ab70..a3a9e46cd32 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);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]