Exemple #1
0
/*
 * GUC array: one invalid guc + non-userset guc
 *		return ArrayType contain non-userset guc, ignore invalid guc
 */
void
test__GUCArrayReset__invalid_guc(void **state) 
{
	ArrayType  *in;
	ArrayType  *out;
	Datum		d;
	List       *guc_list;
	int         elems;

	build_guc_variables();
	will_return(superuser, false);

	/* construct text array */
	elems = 2;
	guc_list = list_make2("invalid_guc=true", "gp_log_format=text");
	in = create_guc_array(guc_list, elems);

	out = GUCArrayReset(in);
	assert_not_null(out);
	assert_int_equal(ARR_DIMS(out)[0], 1);

	d = PointerGetDatum(ARR_DATA_PTR(out));
	assert_int_equal(strlen("gp_log_format=text"), VARLEN(d));
	assert_memory_equal(VARDATA(d), "gp_log_format=text", VARLEN(d));

	list_free(guc_list);
	pfree(in);
	pfree(out);
}
Exemple #2
0
/*
 * GUC array: mix of PGC_USERSET, PGC_POSTMASTER, PGC_SUSET
 *		return ArrayType contains non-PGC_USERSET
 */
void
test__GUCArrayReset__mix_guc(void **state)
{
	ArrayType  *in;
	ArrayType  *out;
	Datum		d;
	List	   *guc_list;
	int			elems;

	build_guc_variables();
	will_return(superuser, false);

	/* construct text array */
	elems = 4;
	guc_list = list_make4("password_encryption=on", "log_error_verbosity=verbose", "application_name=mixtest", "allow_system_table_mods=dml");
	in = create_guc_array(guc_list, elems);

	out = GUCArrayReset(in);
	assert_not_null(out);
	assert_int_equal(ARR_DIMS(out)[0], 1);
	d = PointerGetDatum(ARR_DATA_PTR(out));
	assert_int_equal(strlen("log_error_verbosity=verbose"), VARLEN(d));
	assert_memory_equal(VARDATA(d), "log_error_verbosity=verbose", VARLEN(d));

	list_free(guc_list);
	pfree(in);
	pfree(out);
}
Exemple #3
0
/*
 * Test set_config_option
 */
void
test__set_config_option(void **state) 
{
	build_guc_variables();

	bool ret;
	ret = set_config_option("password_encryption", "off", PGC_POSTMASTER, PGC_S_SESSION, false, false);
	assert_true(ret);
	ret = set_config_option("gp_disable_catalog_access_on_segment", "on", PGC_POSTMASTER, PGC_S_SESSION, false, false);
	assert_true(ret);
}
Exemple #4
0
/*
 * GUC array: all non-PGC_USERSET, return the same array
 */
void
test__GUCArrayReset__all_non_userset_guc(void **state)
{
	ArrayType  *in;
	ArrayType  *out;
	Datum		d;
	List	   *guc_list;
	bool		isnull;
	int			i;
	int			elems;

	build_guc_variables();
	will_return(superuser, false);

	/* construct text array */
	elems = 3;
	guc_list = list_make3("log_error_verbosity=terse", "gp_log_format=csv", "maintenance_mode=true");
	in = create_guc_array(guc_list, elems);

	out = GUCArrayReset(in);
	assert_not_null(out);
	assert_int_equal(ARR_DIMS(out)[0], elems);

	/* check element 1 */
	i = 1;
	d = array_ref(out, 1, &i, -1, TEXT_TYPLEN, TEXT_TYPBYVAL, TEXT_TYPALIGN, &isnull);
	assert_false(isnull);
	assert_int_equal(strlen("log_error_verbosity=terse"), VARLEN(d));
	assert_memory_equal(VARDATA(d), "log_error_verbosity=terse", VARLEN(d));

	/* check element 2 */
	i = 2;
	d = array_ref(out, 1, &i, -1, TEXT_TYPLEN, TEXT_TYPBYVAL, TEXT_TYPALIGN, &isnull);
	assert_false(isnull);
	assert_int_equal(strlen("gp_log_format=csv"), VARLEN(d));
	assert_memory_equal(VARDATA(d), "gp_log_format=csv", VARLEN(d));

	/* check element 3 */
	i = 3;
	d = array_ref(out, 1, &i, -1, TEXT_TYPLEN, TEXT_TYPBYVAL, TEXT_TYPALIGN, &isnull);
	assert_false(isnull);
	assert_int_equal(strlen("maintenance_mode=true"), VARLEN(d));
	assert_memory_equal(VARDATA(d), "maintenance_mode=true", VARLEN(d));

	list_free(guc_list);
	pfree(in);
	pfree(out);
}
Exemple #5
0
/*
 * Test find_option
 */
void
test__find_option(void **state) 
{
	build_guc_variables();

	struct config_generic *config;
	config = find_option("unknown_name", LOG);
	assert_null(config);

	config = find_option("password_encryption", LOG);
	assert_not_null(config);
	config = find_option("gp_resqueue_priority_cpucores_per_segment", LOG);
	assert_not_null(config);

	/* supported obsolete guc name */
	config = find_option("work_mem", LOG);
	assert_not_null(config);
}
Exemple #6
0
/*
 * GUC array: all PGC_USERSET, return NULL
 */
void
test__GUCArrayReset__all_userset_guc(void **state)
{
	ArrayType  *in;
	List 	   *guc_list;
	int			elems;

	build_guc_variables();
	will_return(superuser, false);

	/* construct text array */
	elems = 3;
	guc_list = list_make3("application_name=unittest", "password_encryption=off", "backslash_quote=off");
	in = create_guc_array(guc_list, elems);

	assert_null(GUCArrayReset(in));

	list_free(guc_list);
	pfree(in);
}
Exemple #7
0
/*
 * GUC array: 2-dim array
 *		return NULL
 */
void 
test__GUCArrayReset__md_array(void **state) 
{
	ArrayType  *in;
	List       *guc_list;
	int         elems;
	int			ndims;

	build_guc_variables();
	will_return(superuser, false);

	/* construct 2-dimension text array */
	elems = 2;
	ndims = 2;
	guc_list = list_make4("gp_log_format=text", "allow_system_table_mods=ddl", "password_encryption=on", "log_error_verbosity=verbose");
	in = create_md_guc_array(guc_list, elems, ndims);

	assert_null(GUCArrayReset(in));

	list_free(guc_list);
	pfree(in);
}
Exemple #8
0
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);
}