/* * Assign hook routine for "gp_session_role" option. Because this variable * has context PGC_BACKEND, we expect this assigment to happen only during * setup of a BACKEND, e.g., based on the role value specified on the connect * request. * * See src/backend/util/misc/guc.c for option definition. */ const char * assign_gp_session_role(const char *newval, bool doit, GucSource source __attribute__((unused)) ) { #if FALSE elog(DEBUG1, "assign_gp_session_role: gp_session_role=%s, newval=%s, doit=%s", show_gp_session_role(), newval, (doit ? "true" : "false")); #endif GpRoleValue newrole = string_to_role(newval); if (newrole == GP_ROLE_UNDEFINED) { return NULL; } if (doit) { Gp_session_role = newrole; Gp_role = Gp_session_role; if (Gp_role == GP_ROLE_DISPATCH) Gp_segment = -1; } return newval; }
/* * Assign hook routine for "gp_session_role" option. Because this variable * has context PGC_BACKEND, we expect this assigment to happen only during * setup of a BACKEND, e.g., based on the role value specified on the connect * request. * * See src/backend/util/misc/guc.c for option definition. */ const char * assign_gp_session_role(const char *newval, bool doit, GucSource source __attribute__((unused))) { #if FALSE elog(DEBUG1, "assign_gp_session_role: gp_session_role=%s, newval=%s, doit=%s", show_gp_session_role(), newval, (doit ? "true" : "false")); #endif GpRoleValue newrole = string_to_role(newval); if (newrole == GP_ROLE_UNDEFINED) { return NULL; } /* Force utility mode in a stand-alone backend. */ if (!IsPostmasterEnvironment && newrole != GP_ROLE_UTILITY) { if (source != PGC_S_DEFAULT) elog(WARNING, "gp_session_role forced to 'utility' in single-user mode"); newval = strdup("utility"); newrole = GP_ROLE_UTILITY; } if (doit) { Gp_session_role = newrole; Gp_role = Gp_session_role; if (Gp_role == GP_ROLE_DISPATCH) Gp_segment = -1; if (Gp_role == GP_ROLE_UTILITY && MyProc != NULL) MyProc->mppIsWriter = false; } return newval; }