This is an automated email from the ASF dual-hosted git repository.
yjhjstz pushed a commit to branch cbdb-postgres-merge
in repository https://gitbox.apache.org/repos/asf/cloudberry.git
The following commit(s) were added to refs/heads/cbdb-postgres-merge by this
push:
new 32cabc2f7dc Fix ORCA RTEPermissionInfo handling for PG16 compatibility
32cabc2f7dc is described below
commit 32cabc2f7dc1f90fac6380accf59982926204fbc
Author: Jianghua Yang <[email protected]>
AuthorDate: Mon Mar 9 09:22:14 2026 -0700
Fix ORCA RTEPermissionInfo handling for PG16 compatibility
Two issues with ORCA's RTEPermissionInfo handling after PG16 merge:
1. CTranslatorQueryToDXL::TranslateFromClauseToDXL called
getRTEPermissionInfo unconditionally on every FROM clause RTE,
but RTE_VALUES entries (from multi-value INSERT) have
perminfoindex=0 and no permission info, causing ERROR.
Fix: move the call inside the RTE_RELATION case branch.
2. CTranslatorDXLToPlStmt::ProcessDXLTblDescr created
RTEPermissionInfo nodes without setting relid, causing
Assert(OidIsValid(perminfo->relid)) failures.
Fix: set pi->relid = oid.
---
src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp | 1 +
src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp | 5 ++---
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
b/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
index ace13c6cb3e..f634786e982 100644
--- a/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
+++ b/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
@@ -5284,6 +5284,7 @@ CTranslatorDXLToPlStmt::ProcessDXLTblDescr(
RTEPermissionInfo *pi = MakeNode(RTEPermissionInfo);
rte->rtekind = RTE_RELATION;
rte->relid = oid;
+ pi->relid = oid;
pi->checkAsUser = table_descr->GetExecuteAsUserId();
pi->requiredPerms |= required_perms;
rte->rellockmode = table_descr->LockMode();
diff --git a/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp
b/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp
index 91e8106e60e..6c2cd98e8ee 100644
--- a/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp
+++ b/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp
@@ -3266,9 +3266,6 @@ CTranslatorQueryToDXL::TranslateFromClauseToDXL(Node
*node)
GPOS_WSZ_LIT("WITH ORDINALITY"));
}
- const RTEPermissionInfo *perminfo =
gpdb::GetRTEPermissionInfo(m_query->rteperminfos,
-
rte);
-
switch (rte->rtekind)
{
default:
@@ -3279,6 +3276,8 @@ CTranslatorQueryToDXL::TranslateFromClauseToDXL(Node
*node)
}
case RTE_RELATION:
{
+ const RTEPermissionInfo *perminfo =
gpdb::GetRTEPermissionInfo(m_query->rteperminfos,
+
rte);
return TranslateRTEToDXLLogicalGet(rte,
perminfo, rt_index,
m_query_level);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]