/* * Add GUCs to option string. */ char* makeOptions(void) { struct config_generic **gucs = get_guc_variables(); int ngucs = get_num_guc_variables(); CdbComponentDatabaseInfo *qdinfo = NULL; StringInfoData string; int i; initStringInfo(&string); Assert (Gp_role == GP_ROLE_DISPATCH); qdinfo = &cdb_component_dbs->entry_db_info[0]; appendStringInfo(&string, " -c gp_qd_hostname=%s", qdinfo->hostip); appendStringInfo(&string, " -c gp_qd_port=%d", qdinfo->port); /* * Transactions are tricky. * Here is the copy and pasted code, and we know they are working. * The problem, is that QE may ends up with different iso level, but * postgres really does not have read uncommited and repeated read. * (is this true?) and they are mapped. * * Put these two gucs in the generic framework works (pass make installcheck-good) * if we make assign_defaultxactisolevel and assign_XactIsoLevel correct take * string "readcommitted" etc. (space stripped). However, I do not * want to change this piece of code unless I know it is broken. */ if (DefaultXactIsoLevel != XACT_READ_COMMITTED) { if (DefaultXactIsoLevel == XACT_SERIALIZABLE) appendStringInfo(&string, " -c default_transaction_isolation=serializable"); } if (XactIsoLevel != XACT_READ_COMMITTED) { if (XactIsoLevel == XACT_SERIALIZABLE) appendStringInfo(&string, " -c transaction_isolation=serializable"); } for (i = 0; i < ngucs; ++i) { struct config_generic *guc = gucs[i]; if ((guc->flags & GUC_GPDB_ADDOPT) && (guc->context == PGC_USERSET || procRoleIsSuperuser())) addOneOption(&string, guc); } return string.data; }
void GucInfoMain(void) { struct config_generic **guc_vars; int numOpts, i; /* Initialize the guc_variables[] array */ build_guc_variables(); guc_vars = get_guc_variables(); numOpts = GetNumConfigOptions(); for (i = 0; i < numOpts; i++) { mixedStruct *var = (mixedStruct *) guc_vars[i]; if (displayStruct(var)) printMixedStruct(var); } exit(0); }