You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudberry.apache.org by re...@apache.org on 2025/12/29 09:17:37 UTC

(cloudberry) branch cbdb-postgres-merge updated: Resolve GPORCA issue for Value * node.

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

reshke 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 e728ad0326d Resolve GPORCA issue for Value * node.
e728ad0326d is described below

commit e728ad0326db7bf55ec23a9bf7b5fcc0f85a29da
Author: reshke <re...@double.cloud>
AuthorDate: Mon Dec 29 09:16:39 2025 +0000

    Resolve GPORCA issue for Value * node.
    
    As of https://github.com/postgres/postgres/commit/639a86e36aaecb84faaf941dcd0b183ba0aba9e9
    we do not use Value * node. Adapt orca for that.
---
 src/backend/gpopt/gpdbwrappers.cpp                     |  4 ++--
 src/backend/gpopt/translate/CMappingVarColId.cpp       |  3 +--
 src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp | 10 +++++-----
 src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp  |  3 +--
 src/backend/gpopt/translate/CTranslatorUtils.cpp       |  7 ++-----
 src/include/gpopt/gpdbwrappers.h                       |  5 ++---
 6 files changed, 13 insertions(+), 19 deletions(-)

diff --git a/src/backend/gpopt/gpdbwrappers.cpp b/src/backend/gpopt/gpdbwrappers.cpp
index 92f7b8bacb0..81bbf954cbd 100644
--- a/src/backend/gpopt/gpdbwrappers.cpp
+++ b/src/backend/gpopt/gpdbwrappers.cpp
@@ -1483,7 +1483,7 @@ gpdb::LookupTypeCache(Oid type_id, int flags)
 	return nullptr;
 }
 
-Value *
+String *
 gpdb::MakeStringValue(char *str)
 {
 	GP_WRAP_START;
@@ -1494,7 +1494,7 @@ gpdb::MakeStringValue(char *str)
 	return nullptr;
 }
 
-Value *
+Integer *
 gpdb::MakeIntegerValue(long i)
 {
 	GP_WRAP_START;
diff --git a/src/backend/gpopt/translate/CMappingVarColId.cpp b/src/backend/gpopt/translate/CMappingVarColId.cpp
index 55d5c4c9bf0..87746018ebe 100644
--- a/src/backend/gpopt/translate/CMappingVarColId.cpp
+++ b/src/backend/gpopt/translate/CMappingVarColId.cpp
@@ -237,8 +237,7 @@ CMappingVarColId::Load(ULONG query_level, ULONG RTE_index,
 	// add mapping information for columns
 	ForEach(col_name, col_names)
 	{
-		Value *value = (Value *) lfirst(col_name);
-		CHAR *col_name_char_array = strVal(value);
+		CHAR *col_name_char_array = strVal(lfirst(col_name));
 
 		CWStringDynamic *column_name =
 			CDXLUtils::CreateDynamicStringFromCharArray(m_mp,
diff --git a/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp b/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
index 0d16ea490e6..ace13c6cb3e 100644
--- a/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
+++ b/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
@@ -1756,7 +1756,7 @@ CTranslatorDXLToPlStmt::TranslateDXLTvfToRangeTblEntry(
 			CTranslatorUtils::CreateMultiByteCharStringFromWCString(
 				dxl_proj_elem->GetMdNameAlias()->GetMDName()->GetBuffer());
 
-		Value *val_colname = gpdb::MakeStringValue(col_name_char_array);
+		String *val_colname = gpdb::MakeStringValue(col_name_char_array);
 		alias->colnames = gpdb::LAppend(alias->colnames, val_colname);
 
 		// save mapping col id -> index in translate context
@@ -1895,7 +1895,7 @@ CTranslatorDXLToPlStmt::TranslateDXLValueScanToRangeTblEntry(
 			CTranslatorUtils::CreateMultiByteCharStringFromWCString(
 				dxl_proj_elem->GetMdNameAlias()->GetMDName()->GetBuffer());
 
-		Value *val_colname = gpdb::MakeStringValue(col_name_char_array);
+		String *val_colname = gpdb::MakeStringValue(col_name_char_array);
 		alias->colnames = gpdb::LAppend(alias->colnames, val_colname);
 
 		// save mapping col id -> index in translate context
@@ -5309,7 +5309,7 @@ CTranslatorDXLToPlStmt::ProcessDXLTblDescr(
 			for (INT dropped_col_attno = last_attno + 1;
 				 dropped_col_attno < attno; dropped_col_attno++)
 			{
-				Value *val_dropped_colname = gpdb::MakeStringValue(PStrDup(""));
+				String *val_dropped_colname = gpdb::MakeStringValue(PStrDup(""));
 				alias->colnames =
 					gpdb::LAppend(alias->colnames, val_dropped_colname);
 			}
@@ -5318,7 +5318,7 @@ CTranslatorDXLToPlStmt::ProcessDXLTblDescr(
 			CHAR *col_name_char_array =
 				CTranslatorUtils::CreateMultiByteCharStringFromWCString(
 					dxl_col_descr->MdName()->GetMDName()->GetBuffer());
-			Value *val_colname = gpdb::MakeStringValue(col_name_char_array);
+			String *val_colname = gpdb::MakeStringValue(col_name_char_array);
 
 			alias->colnames = gpdb::LAppend(alias->colnames, val_colname);
 			last_attno = attno;
@@ -5328,7 +5328,7 @@ CTranslatorDXLToPlStmt::ProcessDXLTblDescr(
 	// if there are any dropped columns at the end, add those too to the RangeTblEntry
 	for (ULONG ul = last_attno + 1; ul <= num_of_non_sys_cols; ul++)
 	{
-		Value *val_dropped_colname = gpdb::MakeStringValue(PStrDup(""));
+		String *val_dropped_colname = gpdb::MakeStringValue(PStrDup(""));
 		alias->colnames = gpdb::LAppend(alias->colnames, val_dropped_colname);
 	}
 
diff --git a/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp b/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp
index 700b596c93b..014fd8ba23a 100644
--- a/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp
+++ b/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp
@@ -4130,8 +4130,7 @@ CTranslatorQueryToDXL::TranslateJoinExprInFromToDXL(JoinExpr *join_expr)
 		GPOS_ASSERT(IsA(join_alias_node, Var) ||
 					IsA(join_alias_node, FuncExpr) ||
 					IsA(join_alias_node, CoalesceExpr));
-		Value *value = (Value *) lfirst(lc_col_name);
-		CHAR *col_name_char_array = strVal(value);
+		CHAR *col_name_char_array = strVal(lfirst(lc_col_name));
 
 		// create the DXL node holding the target list entry and add it to proj list
 		CDXLNode *project_elem_dxlnode = TranslateExprToDXLProject(
diff --git a/src/backend/gpopt/translate/CTranslatorUtils.cpp b/src/backend/gpopt/translate/CTranslatorUtils.cpp
index e87e8636d56..221f295df52 100644
--- a/src/backend/gpopt/translate/CTranslatorUtils.cpp
+++ b/src/backend/gpopt/translate/CTranslatorUtils.cpp
@@ -485,11 +485,10 @@ CTranslatorUtils::GetColumnDescriptorsFromRecord(CMemoryPool *mp,
 	ForThree(col_name, col_names, col_type, col_types, col_type_modifier,
 			 col_type_modifiers)
 	{
-		Value *value = (Value *) lfirst(col_name);
 		Oid coltype = lfirst_oid(col_type);
 		INT type_modifier = lfirst_int(col_type_modifier);
 
-		CHAR *col_name_char_array = strVal(value);
+		CHAR *col_name_char_array = strVal(lfirst(col_name));
 		CWStringDynamic *column_name =
 			CDXLUtils::CreateDynamicStringFromCharArray(mp,
 														col_name_char_array);
@@ -531,9 +530,7 @@ CTranslatorUtils::GetColumnDescriptorsFromRecord(CMemoryPool *mp,
 
 	ForEach(col_name, col_names)
 	{
-		Value *value = (Value *) lfirst(col_name);
-
-		CHAR *col_name_char_array = strVal(value);
+		CHAR *col_name_char_array = strVal(lfirst(col_name));
 		CWStringDynamic *column_name =
 			CDXLUtils::CreateDynamicStringFromCharArray(mp,
 														col_name_char_array);
diff --git a/src/include/gpopt/gpdbwrappers.h b/src/include/gpopt/gpdbwrappers.h
index feb9a0273fe..6af34138faa 100644
--- a/src/include/gpopt/gpdbwrappers.h
+++ b/src/include/gpopt/gpdbwrappers.h
@@ -36,7 +36,6 @@ struct TypeCacheEntry;
 using Numeric = struct NumericData *;
 using HeapTuple = struct HeapTupleData *;
 using Relation = struct RelationData *;
-struct Value;
 using TupleDesc = struct TupleDescData *;
 struct Query;
 using ScanKey = struct ScanKeyData *;
@@ -393,10 +392,10 @@ void ListFreeDeep(List *list);
 TypeCacheEntry *LookupTypeCache(Oid type_id, int flags);
 
 // create a value node for a string
-Value *MakeStringValue(char *str);
+String *MakeStringValue(char *str);
 
 // create a value node for an integer
-Value *MakeIntegerValue(long i);
+Integer *MakeIntegerValue(long i);
 
 // create a constant of type int4
 Node *MakeIntConst(int32 intValue);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org