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