You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudberry.apache.org by ji...@apache.org on 2025/01/16 13:15:54 UTC

(cloudberry) 11/35: Add GUC optimizer_enable_foreign_table (#14844)

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

jiaqizho pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudberry.git

commit 7af9f19333e8d9bf8466b7faf621a32cb1c417a7
Author: Chris Hajas <ch...@vmware.com>
AuthorDate: Tue Jan 31 14:43:29 2023 -0800

    Add GUC optimizer_enable_foreign_table (#14844)
    
    This adds a guc optimizer_enable_foreign_table. If enabled, Orca will
    generate plans involving foreign tables. Otherwise, we will fall back to
    planner. By default this guc is enabled.
---
 .../gpopt/translate/CTranslatorRelcacheToDXL.cpp   |  7 ++++++
 src/backend/utils/misc/guc_gp.c                    | 27 +++++++++++++++-------
 src/include/utils/guc.h                            |  1 +
 src/include/utils/unsync_guc_name.h                |  1 +
 4 files changed, 28 insertions(+), 8 deletions(-)

diff --git a/src/backend/gpopt/translate/CTranslatorRelcacheToDXL.cpp b/src/backend/gpopt/translate/CTranslatorRelcacheToDXL.cpp
index 4fcdd41f28..afaf8f434e 100644
--- a/src/backend/gpopt/translate/CTranslatorRelcacheToDXL.cpp
+++ b/src/backend/gpopt/translate/CTranslatorRelcacheToDXL.cpp
@@ -2491,6 +2491,13 @@ CTranslatorRelcacheToDXL::RetrieveRelStorageType(Relation rel)
 			}
 			else if (rel->rd_rel->relkind == RELKIND_FOREIGN_TABLE)
 			{
+				if (!optimizer_enable_foreign_table)
+				{
+					GPOS_RAISE(
+						gpdxl::ExmaMD, gpdxl::ExmiMDObjUnsupported,
+						GPOS_WSZ_LIT(
+							"Use optimizer_enable_foreign_table to enable Orca with foreign tables"));
+				}
 				rel_storage_type = IMDRelation::ErelstorageForeign;
 			}
 			else
diff --git a/src/backend/utils/misc/guc_gp.c b/src/backend/utils/misc/guc_gp.c
index f48d3d388e..0f7426c6ff 100644
--- a/src/backend/utils/misc/guc_gp.c
+++ b/src/backend/utils/misc/guc_gp.c
@@ -352,6 +352,7 @@ bool		optimizer_prune_unused_columns;
 bool		optimizer_enable_redistribute_nestloop_loj_inner_child;
 bool		optimizer_force_comprehensive_join_implementation;
 bool		optimizer_enable_replicated_table;
+bool		optimizer_enable_foreign_table;
 
 /* Optimizer plan enumeration related GUCs */
 bool		optimizer_enumerate_plans;
@@ -3128,10 +3129,20 @@ struct config_bool ConfigureNamesBool_gp[] =
 		 gettext_noop("Enable replicated tables."),
 		 NULL,
 		 GUC_NOT_IN_SAMPLE
-		 },
-		 &optimizer_enable_replicated_table,
-		 true,
-		 NULL, NULL, NULL
+		},
+		&optimizer_enable_replicated_table,
+		true,
+		NULL, NULL, NULL
+	},
+	{
+		{"optimizer_enable_foreign_table", PGC_USERSET, DEVELOPER_OPTIONS,
+		 gettext_noop("Enable foreign tables in Orca."),
+		 NULL,
+		 GUC_NOT_IN_SAMPLE
+		},
+		&optimizer_enable_foreign_table,
+		true,
+		NULL, NULL, NULL
 	},
 	{
 		{"aqumv_allow_foreign_table", PGC_USERSET, DEVELOPER_OPTIONS,
@@ -3147,10 +3158,10 @@ struct config_bool ConfigureNamesBool_gp[] =
 		{"gp_log_suboverflow_statement", PGC_SUSET, LOGGING_WHAT,
 		 gettext_noop("Enable logging of statements that cause subtransaction overflow."),
 		 NULL,
-		 },
-		 &gp_log_suboverflow_statement,
-		 false,
-		 NULL, NULL, NULL
+		},
+		&gp_log_suboverflow_statement,
+		false,
+		NULL, NULL, NULL
 	},
 
 	{
diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h
index ed1c51bc5b..032c60fe1d 100644
--- a/src/include/utils/guc.h
+++ b/src/include/utils/guc.h
@@ -533,6 +533,7 @@ extern bool optimizer_prune_unused_columns;
 extern bool optimizer_enable_redistribute_nestloop_loj_inner_child;
 extern bool optimizer_force_comprehensive_join_implementation;
 extern bool optimizer_enable_replicated_table;
+extern bool optimizer_enable_foreign_table;
 
 /* Optimizer plan enumeration related GUCs */
 extern bool optimizer_enumerate_plans;
diff --git a/src/include/utils/unsync_guc_name.h b/src/include/utils/unsync_guc_name.h
index 5df84dedc2..43e2bbee69 100644
--- a/src/include/utils/unsync_guc_name.h
+++ b/src/include/utils/unsync_guc_name.h
@@ -429,6 +429,7 @@
 		"optimizer_enable_space_pruning",
 		"optimizer_enable_streaming_material",
 		"optimizer_enable_tablescan",
+		"optimizer_enable_foreign_table",
 		"optimizer_enforce_subplans",
 		"optimizer_enumerate_plans",
 		"optimizer_expand_fulljoin",


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