HAWQ-1122. Adds a GUC to enable array constraint derivation. A new feature of ORCA is to more efficiently handle array constraints. It includes a new preprocessing stage, and a new way of internally representing array constraints. This feature can be enabled by use of this GUC.
This is cherry-picked from greenplum-db/gpdb@c85f858ec725ec14a6e7870749f3a03fb2597310 Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/71caebcf Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/71caebcf Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/71caebcf Branch: refs/heads/master Commit: 71caebcfbdbb19146e149f8e808790693ebcf41e Parents: e7bba17 Author: Marc Spehlmann <[email protected]> Authored: Mon Aug 1 08:53:58 2016 -0700 Committer: rlei <[email protected]> Committed: Fri Oct 28 11:52:20 2016 +0800 ---------------------------------------------------------------------- .../gpopt/config/CConfigParamMapping.cpp | 7 +++++++ src/backend/utils/misc/guc.c | 21 +++++++++++++++----- src/include/utils/guc.h | 1 + 3 files changed, 24 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/71caebcf/src/backend/gpopt/config/CConfigParamMapping.cpp ---------------------------------------------------------------------- diff --git a/src/backend/gpopt/config/CConfigParamMapping.cpp b/src/backend/gpopt/config/CConfigParamMapping.cpp index 4a2073c..cde6fd7 100644 --- a/src/backend/gpopt/config/CConfigParamMapping.cpp +++ b/src/backend/gpopt/config/CConfigParamMapping.cpp @@ -391,6 +391,13 @@ CConfigParamMapping::SConfigMappingElem CConfigParamMapping::m_elem[] = &optimizer_parallel_union, false, // m_fNegate GPOS_WSZ_LIT("Enable parallel execution for UNION/UNION ALL queries.") + }, + + { + EopttraceEnableArrayDerive, + &optimizer_enable_array_derivation, + false, // m_fNegate + GPOS_WSZ_LIT("Allows the constraint framework to derive array constraints in the optimizer.") } }; http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/71caebcf/src/backend/utils/misc/guc.c ---------------------------------------------------------------------- diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index a936765..7f56f80 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -758,13 +758,14 @@ bool optimizer_static_partition_selection; bool optimizer_enable_partial_index; bool optimizer_dml_triggers; bool optimizer_dml_constraints; -bool optimizer_enable_master_only_queries; -bool sort_segments_enable; -bool optimizer_multilevel_partitioning; -bool optimizer_enable_derive_stats_all_groups; +bool optimizer_enable_master_only_queries; +bool sort_segments_enable; +bool optimizer_multilevel_partitioning; +bool optimizer_enable_derive_stats_all_groups; bool optimizer_explain_show_status; bool optimizer_prefer_scalar_dqa_multistage_agg; -bool optimizer_parallel_union; +bool optimizer_parallel_union; +bool optimizer_enable_array_derivation; /* Security */ bool gp_reject_internal_tcp_conn = true; @@ -4398,6 +4399,16 @@ static struct config_bool ConfigureNamesBool[] = false, NULL, NULL }, + { + {"optimizer_enable_array_derivation", PGC_USERSET, DEVELOPER_OPTIONS, + gettext_noop("Allows the constraint framework to derive array constraints in the optimizer."), + NULL, + GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE + }, + &optimizer_enable_array_derivation, + false, NULL, NULL + }, + /* End-of-list marker */ { {NULL, 0, 0, NULL, NULL}, NULL, false, NULL, NULL http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/71caebcf/src/include/utils/guc.h ---------------------------------------------------------------------- diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h index 58b2b61..6cdf22d 100644 --- a/src/include/utils/guc.h +++ b/src/include/utils/guc.h @@ -441,6 +441,7 @@ extern bool optimizer_enable_derive_stats_all_groups; extern bool optimizer_explain_show_status; extern bool optimizer_prefer_scalar_dqa_multistage_agg; extern bool optimizer_parallel_union; +extern bool optimizer_enable_array_derivation; /** * Enable logging of DPE match in optimizer.
