diff --git a/src/bin/Makefile b/src/bin/Makefile index 3561373b7..cc45d04fc 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -53,6 +53,7 @@ SUBDIRS = \ pg_resetxlog \ gs_guc \ pgxc_clean \ + gs_cgroup \ gsqlerr \ pg_basebackup \ pg_probackup diff --git a/src/common/backend/utils/misc/guc.cpp b/src/common/backend/utils/misc/guc.cpp index 68fcac28e..52bd7f66e 100644 --- a/src/common/backend/utils/misc/guc.cpp +++ b/src/common/backend/utils/misc/guc.cpp @@ -4352,6 +4352,20 @@ static void InitConfigureNamesInt() NULL, NULL, NULL}, + {{ + "parctl_min_cost", + PGC_SIGHUP, + RESOURCES_WORKLOAD, + gettext_noop("Sets the minimum cost to do parallel control."), + gettext_noop("This value is set to 1000000 as default. "), + }, + &u_sess->attr.attr_resource.parctl_min_cost, + 100000, + -1, + INT_MAX, + NULL, + NULL, + NULL}, {{ "io_control_unit", PGC_SIGHUP, @@ -16878,7 +16892,7 @@ static bool check_cgroup_name(char** newval, void** extra, GucSource source) p = *newval; - if (StringIsValid(p) && IS_PGXC_COORDINATOR && t_thrd.shemem_ptr_cxt.MyBEEntry && + if (StringIsValid(p) && IS_SERVICE_NODE && t_thrd.shemem_ptr_cxt.MyBEEntry && (currentGucContext == PGC_SUSET || currentGucContext == PGC_USERSET)) { if (0 == g_instance.wlm_cxt->gscgroup_init_done) ereport(ERROR, @@ -16907,7 +16921,7 @@ static bool check_cgroup_name(char** newval, void** extra, GucSource source) static void assign_cgroup_name(const char* newval, void* extra) { /* set "control_group" global variable */ - if (IS_PGXC_COORDINATOR && t_thrd.shemem_ptr_cxt.MyBEEntry && newval && *newval) { + if (IS_SERVICE_NODE && t_thrd.shemem_ptr_cxt.MyBEEntry && newval && *newval) { if (g_instance.wlm_cxt->gscgroup_init_done == 0) return; diff --git a/src/gausskernel/cbb/workload/workload.cpp b/src/gausskernel/cbb/workload/workload.cpp index 5e0d0499a..90c918f22 100644 --- a/src/gausskernel/cbb/workload/workload.cpp +++ b/src/gausskernel/cbb/workload/workload.cpp @@ -1774,7 +1774,7 @@ bool WLMIsSimpleQuery(const QueryDesc* queryDesc, bool force_control, bool isQue g_wlm_params->use_planA = false; - if (IS_PGXC_DATANODE || (IS_PGXC_COORDINATOR && IsConnFromCoord()) || + if (COORDINATOR_NOT_SINGLE || (IS_SERVICE_NODE && IsConnFromCoord()) || u_sess->attr.attr_resource.parctl_min_cost < 0) { return true; } @@ -1853,7 +1853,7 @@ bool WLMIsSimpleQuery(const QueryDesc* queryDesc, bool force_control, bool isQue */ bool WLMNeedTrackResource(const QueryDesc* queryDesc) { - if ((!(IS_SINGLE_NODE || IS_PGXC_COORDINATOR)) || (IS_PGXC_COORDINATOR && IsConnFromCoord()) || + if ((!IS_SERVICE_NODE) || (IS_PGXC_COORDINATOR && IsConnFromCoord()) || t_thrd.wlm_cxt.collect_info->sdetail.statement == NULL || !u_sess->attr.attr_resource.enable_resource_track || u_sess->attr.attr_resource.resource_track_cost < 0 || u_sess->attr.attr_sql.enable_cluster_resize || t_thrd.wlm_cxt.parctl_state.special) { @@ -2907,7 +2907,7 @@ void WLMSwitchCGroup(void) } /* simple query will skip the cgroup loading */ - if (IS_PGXC_COORDINATOR && (IsConnFromCoord() || t_thrd.wlm_cxt.parctl_state.simple)) { + if (IS_SERVICE_NODE && (IsConnFromCoord() || t_thrd.wlm_cxt.parctl_state.simple)) { return; } diff --git a/src/gausskernel/process/tcop/utility.cpp b/src/gausskernel/process/tcop/utility.cpp index 51c70c6ca..7939240fb 100644 --- a/src/gausskernel/process/tcop/utility.cpp +++ b/src/gausskernel/process/tcop/utility.cpp @@ -6157,9 +6157,6 @@ void standard_ProcessUtility(Node* parse_tree, const char* query_string, ParamLi break; case T_CreateResourcePoolStmt: -#ifndef ENABLE_MULTIPLE_NODES - DISTRIBUTED_FEATURE_NOT_SUPPORTED(); -#endif if (IS_PGXC_COORDINATOR && !IsConnFromCoord()) { char* first_exec_node = find_first_exec_cn(); bool is_first_node = (strcmp(first_exec_node, g_instance.attr.attr_common.PGXCNodeName) == 0); @@ -6216,9 +6213,6 @@ void standard_ProcessUtility(Node* parse_tree, const char* query_string, ParamLi break; case T_AlterResourcePoolStmt: -#ifndef ENABLE_MULTIPLE_NODES - DISTRIBUTED_FEATURE_NOT_SUPPORTED(); -#endif if (IS_PGXC_COORDINATOR) { char* first_exec_node = find_first_exec_cn(); bool is_first_node = (strcmp(first_exec_node, g_instance.attr.attr_common.PGXCNodeName) == 0); @@ -6239,9 +6233,6 @@ void standard_ProcessUtility(Node* parse_tree, const char* query_string, ParamLi break; case T_DropResourcePoolStmt: -#ifndef ENABLE_MULTIPLE_NODES - DISTRIBUTED_FEATURE_NOT_SUPPORTED(); -#endif if (IS_PGXC_COORDINATOR) { char* first_exec_node = find_first_exec_cn(); bool is_first_node = (strcmp(first_exec_node, g_instance.attr.attr_common.PGXCNodeName) == 0); diff --git a/src/include/pgxc/pgxc.h b/src/include/pgxc/pgxc.h index 6f078c53d..cd972ae93 100644 --- a/src/include/pgxc/pgxc.h +++ b/src/include/pgxc/pgxc.h @@ -57,6 +57,8 @@ typedef enum { /* Is the CN receive SQL statement ? */ #define IS_MAIN_COORDINATOR (IS_PGXC_COORDINATOR && !IsConnFromCoord()) +#define IS_SERVICE_NODE (g_instance.role == VCOORDINATOR || g_instance.role == VSINGLENODE) + /* key pair to be used as object id while using advisory lock for backup */ #define XC_LOCK_FOR_BACKUP_KEY_1 0xFFFF #define XC_LOCK_FOR_BACKUP_KEY_2 0xFFFF diff --git a/src/test/regress/pg_regress.cpp b/src/test/regress/pg_regress.cpp index 9219eb584..698247b17 100644 --- a/src/test/regress/pg_regress.cpp +++ b/src/test/regress/pg_regress.cpp @@ -5071,7 +5071,7 @@ static void check_global_variables() } } -#define BASE_PGXC_LIKE_MACRO_NUM 1424 +#define BASE_PGXC_LIKE_MACRO_NUM 1422 static void check_pgxc_like_macros() { #ifdef BUILD_BY_CMAKE