7176
7177
&& val[strlen(name)] == '=')
7179
/* else add it to the output array */
7182
newarray = array_set(newarray, 1, &index,
7185
-1 /* varlenarray */ ,
7186
-1 /* TEXT's typlen */ ,
7187
false /* TEXT's typbyval */ ,
7188
'i' /* TEXT's typalign */ );
7191
newarray = construct_array(&d, 1,
7181
/* else add it to the output array */
7184
newarray = array_set(newarray, 1, &index,
7187
-1 /* varlenarray */ ,
7188
-1 /* TEXT's typlen */ ,
7189
false /* TEXT's typbyval */ ,
7190
'i' /* TEXT's typalign */ );
7193
newarray = construct_array(&d, 1,
7204
* Given a GUC array, delete all settings from it that our permission
7205
* level allows: if superuser, delete them all; if regular user, only
7206
* those that are PGC_USERSET
7209
GUCArrayReset(ArrayType *array)
7211
ArrayType *newarray;
7215
/* if array is currently null, nothing to do */
7219
/* if we're superuser, we can delete everything */
7226
for (i = 1; i <= ARR_DIMS(array)[0]; i++)
7232
struct config_generic *gconf;
7234
d = array_ref(array, 1, &i,
7235
-1 /* varlenarray */ ,
7236
-1 /* TEXT's typlen */ ,
7237
false /* TEXT's typbyval */ ,
7238
'i' /* TEXT's typalign */ ,
7243
val = TextDatumGetCString(d);
7245
eqsgn = strchr(val, '=');
7248
gconf = find_option(val, false, WARNING);
7252
/* note: superuser-ness was already checked above */
7253
/* skip entry if OK to delete */
7254
if (gconf->context == PGC_USERSET)
7257
/* XXX do we need to worry about database owner? */
7259
/* else add it to the output array */
7262
newarray = array_set(newarray, 1, &index,
7265
-1 /* varlenarray */ ,
7266
-1 /* TEXT's typlen */ ,
7267
false /* TEXT's typbyval */ ,
7268
'i' /* TEXT's typalign */ );
7271
newarray = construct_array(&d, 1,
7198
7279
return newarray;