Revert "Add USER SET parameter values for pg_db_role_setting"
authorAlexander Korotkov <[email protected]>
Wed, 17 May 2023 17:06:50 +0000 (20:06 +0300)
committerAlexander Korotkov <[email protected]>
Wed, 17 May 2023 17:28:57 +0000 (20:28 +0300)
This reverts commit 096dd80f3ccc and its fixups beecbe8e5001afdd9f7f0e00,
529da086badb93e739ac61.

Catversion is bumped.

Discussion: https://postgr.es/m/d46f9265-ff3c-6743-2278-6772598233c2%40pgmasters.net

34 files changed:
doc/src/sgml/catalogs.sgml
doc/src/sgml/ref/alter_database.sgml
doc/src/sgml/ref/alter_role.sgml
doc/src/sgml/ref/alter_user.sgml
doc/src/sgml/ref/psql-ref.sgml
src/backend/catalog/pg_db_role_setting.c
src/backend/catalog/pg_proc.c
src/backend/commands/functioncmds.c
src/backend/parser/gram.y
src/backend/utils/adt/arrayfuncs.c
src/backend/utils/fmgr/fmgr.c
src/backend/utils/misc/guc.c
src/backend/utils/misc/guc_funcs.c
src/bin/pg_dump/dumputils.c
src/bin/pg_dump/dumputils.h
src/bin/pg_dump/pg_dump.c
src/bin/pg_dump/pg_dumpall.c
src/bin/psql/describe.c
src/bin/psql/tab-complete.c
src/include/catalog/catversion.h
src/include/catalog/pg_db_role_setting.h
src/include/nodes/parsenodes.h
src/include/utils/guc.h
src/test/modules/Makefile
src/test/modules/meson.build
src/test/modules/test_pg_db_role_setting/.gitignore [deleted file]
src/test/modules/test_pg_db_role_setting/Makefile [deleted file]
src/test/modules/test_pg_db_role_setting/expected/test_pg_db_role_setting.out [deleted file]
src/test/modules/test_pg_db_role_setting/meson.build [deleted file]
src/test/modules/test_pg_db_role_setting/sql/test_pg_db_role_setting.sql [deleted file]
src/test/modules/test_pg_db_role_setting/test_pg_db_role_setting--1.0.sql [deleted file]
src/test/modules/test_pg_db_role_setting/test_pg_db_role_setting.c [deleted file]
src/test/modules/test_pg_db_role_setting/test_pg_db_role_setting.control [deleted file]
src/test/regress/expected/psql.out

index 5240840552112fc96589fb39c69a329d26cc5a0c..ed32ca03495f412e19f6bfefac3efe6587e008c9 100644 (file)
@@ -3212,16 +3212,6 @@ SCRAM-SHA-256$<replaceable>&lt;iteration count&gt;</replaceable>:<replaceable>&l
        Defaults for run-time configuration variables
       </para></entry>
      </row>
-
-     <row>
-      <entry role="catalog_table_entry"><para role="column_definition">
-       <structfield>setuser</structfield> <type>bool[]</type>
-      </para>
-      <para>
-       Values of <link linkend="sql-alterrole-user-set"><literal>USER SET</literal></link>
-       flag for every setting in <structfield>setconfig</structfield>
-      </para></entry>
-     </row>
     </tbody>
    </tgroup>
   </table>
index 5144e1f4ea4cbddf7004a9d4320cf23e02facd2c..2479c41e8d6350bdc3b88e35c68f2067a82b2199 100644 (file)
@@ -37,7 +37,7 @@ ALTER DATABASE <replaceable class="parameter">name</replaceable> SET TABLESPACE
 
 ALTER DATABASE <replaceable class="parameter">name</replaceable> REFRESH COLLATION VERSION
 
-ALTER DATABASE <replaceable class="parameter">name</replaceable> SET <replaceable>configuration_parameter</replaceable> { TO | = } { <replaceable>value</replaceable> | <replaceable>value</replaceable> USER SET | DEFAULT }
+ALTER DATABASE <replaceable class="parameter">name</replaceable> SET <replaceable>configuration_parameter</replaceable> { TO | = } { <replaceable>value</replaceable> | DEFAULT }
 ALTER DATABASE <replaceable class="parameter">name</replaceable> SET <replaceable>configuration_parameter</replaceable> FROM CURRENT
 ALTER DATABASE <replaceable class="parameter">name</replaceable> RESET <replaceable>configuration_parameter</replaceable>
 ALTER DATABASE <replaceable class="parameter">name</replaceable> RESET ALL
@@ -206,19 +206,6 @@ ALTER DATABASE <replaceable class="parameter">name</replaceable> RESET ALL
        </para>
       </listitem>
      </varlistentry>
-
-     <varlistentry>
-      <term><literal>USER SET</literal></term>
-      <listitem>
-       <para>
-        Specifies that the variable should be set on behalf of an ordinary role.
-        That allows non-superuser and non-replication roles to set placeholder
-        variables, whose permission requirements are not known yet;
-        see <xref linkend="runtime-config-custom"/>. The variable won't
-        be set if it appears to require superuser privileges.
-       </para>
-      </listitem>
-     </varlistentry>
   </variablelist>
  </refsect1>
 
index ff2b88e9b60850ab6de8495cde307fdf62e5b4a6..ab1ee45d54e1a069ac477cb728496af8422ab71f 100644 (file)
@@ -38,7 +38,7 @@ ALTER ROLE <replaceable class="parameter">role_specification</replaceable> [ WIT
 
 ALTER ROLE <replaceable class="parameter">name</replaceable> RENAME TO <replaceable>new_name</replaceable>
 
-ALTER ROLE { <replaceable class="parameter">role_specification</replaceable> | ALL } [ IN DATABASE <replaceable class="parameter">database_name</replaceable> ] SET <replaceable>configuration_parameter</replaceable> { TO | = } { <replaceable>value</replaceable> | <replaceable>value</replaceable> USER SET | DEFAULT }
+ALTER ROLE { <replaceable class="parameter">role_specification</replaceable> | ALL } [ IN DATABASE <replaceable class="parameter">database_name</replaceable> ] SET <replaceable>configuration_parameter</replaceable> { TO | = } { <replaceable>value</replaceable> | DEFAULT }
 ALTER ROLE { <replaceable class="parameter">role_specification</replaceable> | ALL } [ IN DATABASE <replaceable class="parameter">database_name</replaceable> ] SET <replaceable>configuration_parameter</replaceable> FROM CURRENT
 ALTER ROLE { <replaceable class="parameter">role_specification</replaceable> | ALL } [ IN DATABASE <replaceable class="parameter">database_name</replaceable> ] RESET <replaceable>configuration_parameter</replaceable>
 ALTER ROLE { <replaceable class="parameter">role_specification</replaceable> | ALL } [ IN DATABASE <replaceable class="parameter">database_name</replaceable> ] RESET ALL
@@ -239,19 +239,6 @@ ALTER ROLE { <replaceable class="parameter">role_specification</replaceable> | A
        </para>
       </listitem>
      </varlistentry>
-
-     <varlistentry id="sql-alterrole-user-set">
-      <term><literal>USER SET</literal></term>
-      <listitem>
-       <para>
-        Specifies that the variable should be set on behalf of an ordinary role.
-        That allows non-superuser and non-replication roles to set placeholder
-        variables, whose permission requirements are not known yet;
-        see <xref linkend="runtime-config-custom"/>. The variable won't
-        be set if it appears to require superuser privileges.
-       </para>
-      </listitem>
-     </varlistentry>
     </variablelist>
  </refsect1>
 
@@ -347,13 +334,6 @@ ALTER ROLE worker_bee SET maintenance_work_mem = 100000;
 
 <programlisting>
 ALTER ROLE fred IN DATABASE devel SET client_min_messages = DEBUG;
-</programlisting></para>
-
-  <para>
-   Give a role a non-default placeholder setting on behalf of ordinary user:
-
-<programlisting>
-ALTER ROLE fred SET my.param = 'value' USER SET;
 </programlisting></para>
  </refsect1>
 
index 24f737d5870b9143d0884b648d004c3445614213..0ee89f54c5ce05a7e37012682a213d2578a64a05 100644 (file)
@@ -38,7 +38,7 @@ ALTER USER <replaceable class="parameter">role_specification</replaceable> [ WIT
 
 ALTER USER <replaceable class="parameter">name</replaceable> RENAME TO <replaceable>new_name</replaceable>
 
-ALTER USER { <replaceable class="parameter">role_specification</replaceable> | ALL } [ IN DATABASE <replaceable class="parameter">database_name</replaceable> ] SET <replaceable>configuration_parameter</replaceable> { TO | = } { <replaceable>value</replaceable> | <replaceable>value</replaceable> USER SET | DEFAULT }
+ALTER USER { <replaceable class="parameter">role_specification</replaceable> | ALL } [ IN DATABASE <replaceable class="parameter">database_name</replaceable> ] SET <replaceable>configuration_parameter</replaceable> { TO | = } { <replaceable>value</replaceable> | DEFAULT }
 ALTER USER { <replaceable class="parameter">role_specification</replaceable> | ALL } [ IN DATABASE <replaceable class="parameter">database_name</replaceable> ] SET <replaceable>configuration_parameter</replaceable> FROM CURRENT
 ALTER USER { <replaceable class="parameter">role_specification</replaceable> | ALL } [ IN DATABASE <replaceable class="parameter">database_name</replaceable> ] RESET <replaceable>configuration_parameter</replaceable>
 ALTER USER { <replaceable class="parameter">role_specification</replaceable> | ALL } [ IN DATABASE <replaceable class="parameter">database_name</replaceable> ] RESET ALL
index de760f99909d958d3b7605b1bf1d9cce0ced540a..880d3d0b324fd13e250cf7deec912e894e6d824f 100644 (file)
@@ -1902,13 +1902,6 @@ INSERT INTO tbl1 VALUES ($1, $2) \bind 'first value' 'second value' \g
         commands are used to define per-role and per-database configuration
         settings.
         </para>
-
-        <para>
-        Since <productname>PostgreSQL</productname> 16, the output includes a
-        column with the values of the
-        <link linkend="sql-alterrole-user-set"><literal>USER SET</literal></link>
-        flag for each setting.
-        </para>
         </listitem>
       </varlistentry>
 
index 39535e304b9a7b64bfe2d9a0f8e325d226616b2a..2f4267fc5fa3f4020eaf0e14effbe1f98800f156 100644 (file)
@@ -63,23 +63,14 @@ AlterSetting(Oid databaseid, Oid roleid, VariableSetStmt *setstmt)
                if (HeapTupleIsValid(tuple))
                {
                        ArrayType  *new = NULL;
-                       ArrayType  *usersetArray;
                        Datum           datum;
-                       Datum           usersetDatum;
                        bool            isnull;
-                       bool            usersetIsnull;
 
                        datum = heap_getattr(tuple, Anum_pg_db_role_setting_setconfig,
                                                                 RelationGetDescr(rel), &isnull);
-                       usersetDatum = heap_getattr(tuple, Anum_pg_db_role_setting_setuser,
-                                                                               RelationGetDescr(rel), &usersetIsnull);
 
                        if (!isnull)
-                       {
-                               Assert(!usersetIsnull);
-                               usersetArray = DatumGetArrayTypeP(usersetDatum);
-                               new = GUCArrayReset(DatumGetArrayTypeP(datum), &usersetArray);
-                       }
+                               new = GUCArrayReset(DatumGetArrayTypeP(datum));
 
                        if (new)
                        {
@@ -95,11 +86,6 @@ AlterSetting(Oid databaseid, Oid roleid, VariableSetStmt *setstmt)
                                repl_repl[Anum_pg_db_role_setting_setconfig - 1] = true;
                                repl_null[Anum_pg_db_role_setting_setconfig - 1] = false;
 
-                               repl_val[Anum_pg_db_role_setting_setuser - 1] =
-                                       PointerGetDatum(usersetArray);
-                               repl_repl[Anum_pg_db_role_setting_setuser - 1] = true;
-                               repl_null[Anum_pg_db_role_setting_setuser - 1] = false;
-
                                newtuple = heap_modify_tuple(tuple, RelationGetDescr(rel),
                                                                                         repl_val, repl_null, repl_repl);
                                CatalogTupleUpdate(rel, &tuple->t_self, newtuple);
@@ -115,39 +101,28 @@ AlterSetting(Oid databaseid, Oid roleid, VariableSetStmt *setstmt)
                bool            repl_repl[Natts_pg_db_role_setting];
                HeapTuple       newtuple;
                Datum           datum;
-               Datum           usersetDatum;
                bool            isnull;
-               bool            usersetIsnull;
                ArrayType  *a;
-               ArrayType  *usersetArray;
 
                memset(repl_repl, false, sizeof(repl_repl));
                repl_repl[Anum_pg_db_role_setting_setconfig - 1] = true;
                repl_null[Anum_pg_db_role_setting_setconfig - 1] = false;
-               repl_repl[Anum_pg_db_role_setting_setuser - 1] = true;
-               repl_null[Anum_pg_db_role_setting_setuser - 1] = false;
 
-               /* Extract old values of setconfig and setuser */
+               /* Extract old value of setconfig */
                datum = heap_getattr(tuple, Anum_pg_db_role_setting_setconfig,
                                                         RelationGetDescr(rel), &isnull);
                a = isnull ? NULL : DatumGetArrayTypeP(datum);
 
-               usersetDatum = heap_getattr(tuple, Anum_pg_db_role_setting_setuser,
-                                                                       RelationGetDescr(rel), &usersetIsnull);
-               usersetArray = usersetIsnull ? NULL : DatumGetArrayTypeP(usersetDatum);
-
                /* Update (valuestr is NULL in RESET cases) */
                if (valuestr)
-                       a = GUCArrayAdd(a, &usersetArray, setstmt->name, valuestr, setstmt->user_set);
+                       a = GUCArrayAdd(a, setstmt->name, valuestr);
                else
-                       a = GUCArrayDelete(a, &usersetArray, setstmt->name);
+                       a = GUCArrayDelete(a, setstmt->name);
 
                if (a)
                {
                        repl_val[Anum_pg_db_role_setting_setconfig - 1] =
                                PointerGetDatum(a);
-                       repl_val[Anum_pg_db_role_setting_setuser - 1] =
-                               PointerGetDatum(usersetArray);
 
                        newtuple = heap_modify_tuple(tuple, RelationGetDescr(rel),
                                                                                 repl_val, repl_null, repl_repl);
@@ -162,18 +137,16 @@ AlterSetting(Oid databaseid, Oid roleid, VariableSetStmt *setstmt)
                HeapTuple       newtuple;
                Datum           values[Natts_pg_db_role_setting];
                bool            nulls[Natts_pg_db_role_setting];
-               ArrayType  *a,
-                                  *usersetArray;
+               ArrayType  *a;
 
                memset(nulls, false, sizeof(nulls));
 
-               a = GUCArrayAdd(NULL, &usersetArray, setstmt->name, valuestr, setstmt->user_set);
+               a = GUCArrayAdd(NULL, setstmt->name, valuestr);
 
                values[Anum_pg_db_role_setting_setdatabase - 1] =
                        ObjectIdGetDatum(databaseid);
                values[Anum_pg_db_role_setting_setrole - 1] = ObjectIdGetDatum(roleid);
                values[Anum_pg_db_role_setting_setconfig - 1] = PointerGetDatum(a);
-               values[Anum_pg_db_role_setting_setuser - 1] = PointerGetDatum(usersetArray);
                newtuple = heap_form_tuple(RelationGetDescr(rel), values, nulls);
 
                CatalogTupleInsert(rel, newtuple);
@@ -267,25 +240,20 @@ ApplySetting(Snapshot snapshot, Oid databaseid, Oid roleid,
        while (HeapTupleIsValid(tup = systable_getnext(scan)))
        {
                bool            isnull;
-               bool            usersetIsnull;
                Datum           datum;
-               Datum           usersetDatum;
 
                datum = heap_getattr(tup, Anum_pg_db_role_setting_setconfig,
                                                         RelationGetDescr(relsetting), &isnull);
-               usersetDatum = heap_getattr(tup, Anum_pg_db_role_setting_setuser,
-                                                                       RelationGetDescr(relsetting), &usersetIsnull);
                if (!isnull)
                {
                        ArrayType  *a = DatumGetArrayTypeP(datum);
-                       ArrayType  *usersetArray = DatumGetArrayTypeP(usersetDatum);
 
                        /*
                         * We process all the options at SUSET level.  We assume that the
                         * right to insert an option into pg_db_role_setting was checked
                         * when it was inserted.
                         */
-                       ProcessGUCArray(a, usersetArray, PGC_SUSET, source, GUC_ACTION_SET);
+                       ProcessGUCArray(a, PGC_SUSET, source, GUC_ACTION_SET);
                }
        }
 
index 41fa2a49878d1b3a7ed4db102394498a1cbd4ed7..b5fd364003676309a91081557cdc8ab1878205fa 100644 (file)
@@ -696,7 +696,6 @@ ProcedureCreate(const char *procedureName,
                        {
                                save_nestlevel = NewGUCNestLevel();
                                ProcessGUCArray(set_items,
-                                                               NULL,
                                                                (superuser() ? PGC_SUSET : PGC_USERSET),
                                                                PGC_S_SESSION,
                                                                GUC_ACTION_SAVE);
index 69f66dfe7da6c1afd6c0ef2f62492852d59fd6f7..71caa3b9f308b94a3bf79d51d3c600ac69a00163 100644 (file)
@@ -662,9 +662,9 @@ update_proconfig_value(ArrayType *a, List *set_items)
                        char       *valuestr = ExtractSetVariableArgs(sstmt);
 
                        if (valuestr)
-                               a = GUCArrayAdd(a, NULL, sstmt->name, valuestr, sstmt->user_set);
+                               a = GUCArrayAdd(a, sstmt->name, valuestr);
                        else                            /* RESET */
-                               a = GUCArrayDelete(a, NULL, sstmt->name);
+                               a = GUCArrayDelete(a, sstmt->name);
                }
        }
 
index 6f5aa8a3cbcf662b7cada65b86968660a9e952d0..39ab7eac0d1d1ac0bea5e40c49c04ceeb7772425 100644 (file)
@@ -1648,26 +1648,6 @@ generic_set:
                                        n->args = $3;
                                        $$ = n;
                                }
-                       | var_name TO var_list USER SET
-                               {
-                                       VariableSetStmt *n = makeNode(VariableSetStmt);
-
-                                       n->kind = VAR_SET_VALUE;
-                                       n->name = $1;
-                                       n->args = $3;
-                                       n->user_set = true;
-                                       $$ = n;
-                               }
-                       | var_name '=' var_list USER SET
-                               {
-                                       VariableSetStmt *n = makeNode(VariableSetStmt);
-
-                                       n->kind = VAR_SET_VALUE;
-                                       n->name = $1;
-                                       n->args = $3;
-                                       n->user_set = true;
-                                       $$ = n;
-                               }
                        | var_name TO DEFAULT
                                {
                                        VariableSetStmt *n = makeNode(VariableSetStmt);
index 87c987fb2704761c59333bf8c1fee47e5c14c598..9000f83a8366d5c8943e71e10bad540fefdcfcef 100644 (file)
@@ -3367,7 +3367,6 @@ construct_array_builtin(Datum *elems, int nelems, Oid elmtype)
        switch (elmtype)
        {
                case CHAROID:
-               case BOOLOID:
                        elmlen = 1;
                        elmbyval = true;
                        elmalign = TYPALIGN_CHAR;
index f72dd25efa5919e37dca7f59cdb0729f4d245696..7458ef5c90fb5fed179620278a91bb2458f456e0 100644 (file)
@@ -692,7 +692,6 @@ fmgr_security_definer(PG_FUNCTION_ARGS)
        if (fcache->proconfig)
        {
                ProcessGUCArray(fcache->proconfig,
-                                               NULL,
                                                (superuser() ? PGC_SUSET : PGC_USERSET),
                                                PGC_S_SESSION,
                                                GUC_ACTION_SAVE);
index 53d1d9a06a735d239436bd579db41a919f2621d2..67c37c49cb39c4c9f4f86a29d4579147d67aa45f 100644 (file)
@@ -225,6 +225,7 @@ static bool reporting_enabled;      /* true to enable GUC_REPORT */
 
 static int     GUCNestLevel = 0;       /* 1 when in main transaction */
 
+
 static int     guc_var_compare(const void *a, const void *b);
 static uint32 guc_name_hash(const void *key, Size keysize);
 static int     guc_name_match(const void *key1, const void *key2, Size keysize);
@@ -244,7 +245,7 @@ static void reapply_stacked_values(struct config_generic *variable,
                                                                   GucContext curscontext, GucSource cursource,
                                                                   Oid cursrole);
 static bool validate_option_array_item(const char *name, const char *value,
-                                                                          bool user_set, bool skipIfNoPermissions);
+                                                                          bool skipIfNoPermissions);
 static void write_auto_conf_file(int fd, const char *filename, ConfigVariable *head);
 static void replace_auto_config_value(ConfigVariable **head_p, ConfigVariable **tail_p,
                                                                          const char *name, const char *value);
@@ -6197,6 +6198,7 @@ ParseLongOption(const char *string, char **name, char **value)
        {
                *name = palloc(equal_pos + 1);
                strlcpy(*name, string, equal_pos + 1);
+
                *value = pstrdup(&string[equal_pos + 1]);
        }
        else
@@ -6219,7 +6221,7 @@ ParseLongOption(const char *string, char **name, char **value)
  * The array parameter must be an array of TEXT (it must not be NULL).
  */
 void
-ProcessGUCArray(ArrayType *array, ArrayType *usersetArray,
+ProcessGUCArray(ArrayType *array,
                                GucContext context, GucSource source, GucAction action)
 {
        int                     i;
@@ -6232,7 +6234,6 @@ ProcessGUCArray(ArrayType *array, ArrayType *usersetArray,
        for (i = 1; i <= ARR_DIMS(array)[0]; i++)
        {
                Datum           d;
-               Datum           userSetDatum = BoolGetDatum(false);
                bool            isnull;
                char       *s;
                char       *name;
@@ -6261,29 +6262,9 @@ ProcessGUCArray(ArrayType *array, ArrayType *usersetArray,
                        continue;
                }
 
-               if (usersetArray)
-                       userSetDatum = array_ref(usersetArray, 1, &i,
-                                                                        -1 /* varlenarray */ ,
-                                                                        sizeof(bool) /* BOOL's typlen */ ,
-                                                                        true /* BOOL's typbyval */ ,
-                                                                        TYPALIGN_CHAR /* BOOL's typalign */ ,
-                                                                        &isnull);
-               if (isnull)
-                       userSetDatum = BoolGetDatum(false);
-
-               /*
-                * USER SET values are applicable only for PGC_USERSET parameters. We
-                * use InvalidOid as role in order to evade possible privileges of the
-                * current user.
-                */
-               if (!DatumGetBool(userSetDatum))
-                       (void) set_config_option(name, value,
-                                                                        context, source,
-                                                                        action, true, 0, false);
-               else
-                       (void) set_config_option_ext(name, value,
-                                                                                PGC_USERSET, source, InvalidOid,
-                                                                                action, true, 0, false);
+               (void) set_config_option(name, value,
+                                                                context, source,
+                                                                action, true, 0, false);
 
                pfree(name);
                pfree(value);
@@ -6297,8 +6278,7 @@ ProcessGUCArray(ArrayType *array, ArrayType *usersetArray,
  * to indicate the current table entry is NULL.
  */
 ArrayType *
-GUCArrayAdd(ArrayType *array, ArrayType **usersetArray,
-                       const char *name, const char *value, bool user_set)
+GUCArrayAdd(ArrayType *array, const char *name, const char *value)
 {
        struct config_generic *record;
        Datum           datum;
@@ -6309,7 +6289,7 @@ GUCArrayAdd(ArrayType *array, ArrayType **usersetArray,
        Assert(value);
 
        /* test if the option is valid and we're allowed to set it */
-       (void) validate_option_array_item(name, value, user_set, false);
+       (void) validate_option_array_item(name, value, false);
 
        /* normalize name (converts obsolete GUC names to modern spellings) */
        record = find_option(name, false, true, WARNING);
@@ -6350,27 +6330,6 @@ GUCArrayAdd(ArrayType *array, ArrayType **usersetArray,
                        /* check for match up through and including '=' */
                        if (strncmp(current, newval, strlen(name) + 1) == 0)
                        {
-                               bool            currentUserSet = false;
-
-                               if (usersetArray)
-                               {
-                                       currentUserSet = DatumGetBool(array_ref(*usersetArray, 1, &i,
-                                                                                                                       -1 /* varlenarray */ ,
-                                                                                                                       sizeof(bool) /* BOOL's typlen */ ,
-                                                                                                                       true /* BOOL's typbyval */ ,
-                                                                                                                       TYPALIGN_CHAR /* BOOL's typalign */ ,
-                                                                                                                       &isnull));
-                                       if (isnull)
-                                               currentUserSet = false;
-                               }
-
-                               /*
-                                * Recheck permissions if we found an option without USER SET
-                                * flag while we're setting an option with USER SET flag.
-                                */
-                               if (!currentUserSet && user_set)
-                                       (void) validate_option_array_item(name, value,
-                                                                                                         false, false);
                                index = i;
                                break;
                        }
@@ -6383,25 +6342,9 @@ GUCArrayAdd(ArrayType *array, ArrayType **usersetArray,
                                          -1 /* TEXT's typlen */ ,
                                          false /* TEXT's typbyval */ ,
                                          TYPALIGN_INT /* TEXT's typalign */ );
-
-               if (usersetArray)
-                       *usersetArray = array_set(*usersetArray, 1, &index,
-                                                                         BoolGetDatum(user_set),
-                                                                         false,
-                                                                         -1 /* varlena array */ ,
-                                                                         sizeof(bool) /* BOOL's typlen */ ,
-                                                                         true /* BOOL's typbyval */ ,
-                                                                         TYPALIGN_CHAR /* BOOL's typalign */ );
        }
        else
-       {
                a = construct_array_builtin(&datum, 1, TEXTOID);
-               if (usersetArray)
-               {
-                       datum = BoolGetDatum(user_set);
-                       *usersetArray = construct_array_builtin(&datum, 1, BOOLOID);
-               }
-       }
 
        return a;
 }
@@ -6413,16 +6356,18 @@ GUCArrayAdd(ArrayType *array, ArrayType **usersetArray,
  * is NULL then a null should be stored.
  */
 ArrayType *
-GUCArrayDelete(ArrayType *array, ArrayType **usersetArray, const char *name)
+GUCArrayDelete(ArrayType *array, const char *name)
 {
        struct config_generic *record;
        ArrayType  *newarray;
-       ArrayType  *newUsersetArray;
        int                     i;
        int                     index;
 
        Assert(name);
 
+       /* test if the option is valid and we're allowed to set it */
+       (void) validate_option_array_item(name, NULL, false);
+
        /* normalize name (converts obsolete GUC names to modern spellings) */
        record = find_option(name, false, true, WARNING);
        if (record)
@@ -6433,13 +6378,11 @@ GUCArrayDelete(ArrayType *array, ArrayType **usersetArray, const char *name)
                return NULL;
 
        newarray = NULL;
-       newUsersetArray = NULL;
        index = 1;
 
        for (i = 1; i <= ARR_DIMS(array)[0]; i++)
        {
                Datum           d;
-               Datum           userSetDatum = BoolGetDatum(false);
                char       *val;
                bool            isnull;
 
@@ -6453,29 +6396,13 @@ GUCArrayDelete(ArrayType *array, ArrayType **usersetArray, const char *name)
                        continue;
                val = TextDatumGetCString(d);
 
-               if (usersetArray)
-                       userSetDatum = array_ref(*usersetArray, 1, &i,
-                                                                        -1 /* varlenarray */ ,
-                                                                        sizeof(bool) /* BOOL's typlen */ ,
-                                                                        true /* BOOL's typbyval */ ,
-                                                                        TYPALIGN_CHAR /* BOOL's typalign */ ,
-                                                                        &isnull);
-               if (isnull)
-                       userSetDatum = BoolGetDatum(false);
-
                /* ignore entry if it's what we want to delete */
                if (strncmp(val, name, strlen(name)) == 0
                        && val[strlen(name)] == '=')
-               {
-                       /* test if the option is valid and we're allowed to set it */
-                       (void) validate_option_array_item(name, NULL,
-                                                                                         DatumGetBool(userSetDatum), false);
                        continue;
-               }
 
                /* else add it to the output array */
                if (newarray)
-               {
                        newarray = array_set(newarray, 1, &index,
                                                                 d,
                                                                 false,
@@ -6483,29 +6410,12 @@ GUCArrayDelete(ArrayType *array, ArrayType **usersetArray, const char *name)
                                                                 -1 /* TEXT's typlen */ ,
                                                                 false /* TEXT's typbyval */ ,
                                                                 TYPALIGN_INT /* TEXT's typalign */ );
-                       if (usersetArray)
-                               newUsersetArray = array_set(newUsersetArray, 1, &index,
-                                                                                       userSetDatum,
-                                                                                       false,
-                                                                                       -1 /* varlena array */ ,
-                                                                                       sizeof(bool) /* BOOL's typlen */ ,
-                                                                                       true /* BOOL's typbyval */ ,
-                                                                                       TYPALIGN_CHAR /* BOOL's typalign */ );
-               }
                else
-               {
                        newarray = construct_array_builtin(&d, 1, TEXTOID);
-                       if (usersetArray)
-                               newUsersetArray = construct_array_builtin(&userSetDatum, 1,
-                                                                                                                 BOOLOID);
-               }
 
                index++;
        }
 
-       if (usersetArray)
-               *usersetArray = newUsersetArray;
-
        return newarray;
 }
 
@@ -6516,10 +6426,9 @@ GUCArrayDelete(ArrayType *array, ArrayType **usersetArray, const char *name)
  * those that are PGC_USERSET or we have permission to set
  */
 ArrayType *
-GUCArrayReset(ArrayType *array, ArrayType **usersetArray)
+GUCArrayReset(ArrayType *array)
 {
        ArrayType  *newarray;
-       ArrayType  *newUsersetArray;
        int                     i;
        int                     index;
 
@@ -6532,13 +6441,11 @@ GUCArrayReset(ArrayType *array, ArrayType **usersetArray)
                return NULL;
 
        newarray = NULL;
-       newUsersetArray = NULL;
        index = 1;
 
        for (i = 1; i <= ARR_DIMS(array)[0]; i++)
        {
                Datum           d;
-               Datum           userSetDatum = BoolGetDatum(false);
                char       *val;
                char       *eqsgn;
                bool            isnull;
@@ -6553,27 +6460,15 @@ GUCArrayReset(ArrayType *array, ArrayType **usersetArray)
                        continue;
                val = TextDatumGetCString(d);
 
-               if (usersetArray)
-                       userSetDatum = array_ref(*usersetArray, 1, &i,
-                                                                        -1 /* varlenarray */ ,
-                                                                        sizeof(bool) /* BOOL's typlen */ ,
-                                                                        true /* BOOL's typbyval */ ,
-                                                                        TYPALIGN_CHAR /* BOOL's typalign */ ,
-                                                                        &isnull);
-               if (isnull)
-                       userSetDatum = BoolGetDatum(false);
-
                eqsgn = strchr(val, '=');
                *eqsgn = '\0';
 
                /* skip if we have permission to delete it */
-               if (validate_option_array_item(val, NULL,
-                                                                          DatumGetBool(userSetDatum), true))
+               if (validate_option_array_item(val, NULL, true))
                        continue;
 
                /* else add it to the output array */
                if (newarray)
-               {
                        newarray = array_set(newarray, 1, &index,
                                                                 d,
                                                                 false,
@@ -6581,29 +6476,13 @@ GUCArrayReset(ArrayType *array, ArrayType **usersetArray)
                                                                 -1 /* TEXT's typlen */ ,
                                                                 false /* TEXT's typbyval */ ,
                                                                 TYPALIGN_INT /* TEXT's typalign */ );
-                       if (usersetArray)
-                               newUsersetArray = array_set(newUsersetArray, 1, &index,
-                                                                                       userSetDatum,
-                                                                                       false,
-                                                                                       -1 /* varlena array */ ,
-                                                                                       sizeof(bool) /* BOOL's typlen */ ,
-                                                                                       true /* BOOL's typbyval */ ,
-                                                                                       TYPALIGN_CHAR /* BOOL's typalign */ );
-               }
                else
-               {
                        newarray = construct_array_builtin(&d, 1, TEXTOID);
-                       if (usersetArray)
-                               newUsersetArray = construct_array_builtin(&userSetDatum, 1, BOOLOID);
-               }
 
                index++;
                pfree(val);
        }
 
-       if (usersetArray)
-               *usersetArray = newUsersetArray;
-
        return newarray;
 }
 
@@ -6611,16 +6490,15 @@ GUCArrayReset(ArrayType *array, ArrayType **usersetArray)
  * Validate a proposed option setting for GUCArrayAdd/Delete/Reset.
  *
  * name is the option name.  value is the proposed value for the Add case,
- * or NULL for the Delete/Reset cases.  user_set indicates this is the USER SET
- * option.  If skipIfNoPermissions is true, it's not an error to have no
- * permissions to set the option.
+ * or NULL for the Delete/Reset cases.  If skipIfNoPermissions is true, it's
+ * not an error to have no permissions to set the option.
  *
  * Returns true if OK, false if skipIfNoPermissions is true and user does not
  * have permission to change this option (all other error cases result in an
  * error being thrown).
  */
 static bool
-validate_option_array_item(const char *name, const char *value, bool user_set,
+validate_option_array_item(const char *name, const char *value,
                                                   bool skipIfNoPermissions)
 
 {
@@ -6656,10 +6534,8 @@ validate_option_array_item(const char *name, const char *value, bool user_set,
        {
                /*
                 * We cannot do any meaningful check on the value, so only permissions
-                * are useful to check.  USER SET options are always allowed.
+                * are useful to check.
                 */
-               if (user_set)
-                       return true;
                if (superuser() ||
                        pg_parameter_aclcheck(name, GetUserId(), ACL_SET) == ACLCHECK_OK)
                        return true;
index 52c361e9755865af17daccfae79316f8b7901f10..0903ba43a96e2e37337820c53a3723723dfd4de1 100644 (file)
@@ -166,22 +166,12 @@ ExecSetVariableStmt(VariableSetStmt *stmt, bool isTopLevel)
 char *
 ExtractSetVariableArgs(VariableSetStmt *stmt)
 {
-
        switch (stmt->kind)
        {
                case VAR_SET_VALUE:
                        return flatten_set_variable_args(stmt->name, stmt->args);
                case VAR_SET_CURRENT:
-                       {
-                               struct config_generic *record;
-                               char       *result;
-
-                               result = GetConfigOptionByName(stmt->name, NULL, false);
-                               record = find_option(stmt->name, false, false, ERROR);
-                               stmt->user_set = (record->scontext == PGC_USERSET);
-
-                               return result;
-                       }
+                       return GetConfigOptionByName(stmt->name, NULL, false);
                default:
                        return NULL;
        }
index 079693585ce0ee98da8f9bbc8782dedc6cfc00b9..0ea96346cb015361cd3ef7dbe95f6f40a1d51eff 100644 (file)
@@ -821,7 +821,6 @@ SplitGUCList(char *rawstring, char separator,
  */
 void
 makeAlterConfigCommand(PGconn *conn, const char *configitem,
-                                          const char *userset,
                                           const char *type, const char *name,
                                           const char *type2, const char *name2,
                                           PQExpBuffer buf)
@@ -880,10 +879,6 @@ makeAlterConfigCommand(PGconn *conn, const char *configitem,
        else
                appendStringLiteralConn(buf, pos, conn);
 
-       /* Add USER SET flag if specified in the string */
-       if (userset && !strcmp(userset, "t"))
-               appendPQExpBufferStr(buf, " USER SET");
-
        appendPQExpBufferStr(buf, ";\n");
 
        pg_free(mine);
index 7f3f21e89dbfd72b708d47d5ff2104bc2d643d20..2c81f51837b13135b7e7d34ba813c63989ac8acf 100644 (file)
@@ -59,7 +59,6 @@ extern bool SplitGUCList(char *rawstring, char separator,
                                                 char ***namelist);
 
 extern void makeAlterConfigCommand(PGconn *conn, const char *configitem,
-                                                                  const char *userset,
                                                                   const char *type, const char *name,
                                                                   const char *type2, const char *name2,
                                                                   PQExpBuffer buf);
index 41a51ec5cd83534f9a62d79f64100be3fe66bd11..f9cbeb65ab3afa8be925b4d3a33b389c361f8387 100644 (file)
@@ -3385,49 +3385,32 @@ dumpDatabaseConfig(Archive *AH, PQExpBuffer outbuf,
        PGresult   *res;
 
        /* First collect database-specific options */
-       printfPQExpBuffer(buf, "SELECT unnest(setconfig)");
-       if (AH->remoteVersion >= 160000)
-               appendPQExpBufferStr(buf, ", unnest(setuser)");
-       appendPQExpBuffer(buf, " FROM pg_db_role_setting "
+       printfPQExpBuffer(buf, "SELECT unnest(setconfig) FROM pg_db_role_setting "
                                          "WHERE setrole = 0 AND setdatabase = '%u'::oid",
                                          dboid);
 
        res = ExecuteSqlQuery(AH, buf->data, PGRES_TUPLES_OK);
 
        for (int i = 0; i < PQntuples(res); i++)
-       {
-               char       *userset = NULL;
-
-               if (AH->remoteVersion >= 160000)
-                       userset = PQgetvalue(res, i, 1);
-               makeAlterConfigCommand(conn, PQgetvalue(res, i, 0), userset,
+               makeAlterConfigCommand(conn, PQgetvalue(res, i, 0),
                                                           "DATABASE", dbname, NULL, NULL,
                                                           outbuf);
-       }
 
        PQclear(res);
 
        /* Now look for role-and-database-specific options */
-       printfPQExpBuffer(buf, "SELECT rolname, unnest(setconfig)");
-       if (AH->remoteVersion >= 160000)
-               appendPQExpBufferStr(buf, ", unnest(setuser)");
-       appendPQExpBuffer(buf, " FROM pg_db_role_setting s, pg_roles r "
+       printfPQExpBuffer(buf, "SELECT rolname, unnest(setconfig) "
+                                         "FROM pg_db_role_setting s, pg_roles r "
                                          "WHERE setrole = r.oid AND setdatabase = '%u'::oid",
                                          dboid);
 
        res = ExecuteSqlQuery(AH, buf->data, PGRES_TUPLES_OK);
 
        for (int i = 0; i < PQntuples(res); i++)
-       {
-               char       *userset = NULL;
-
-               if (AH->remoteVersion >= 160000)
-                       userset = PQgetvalue(res, i, 2);
-               makeAlterConfigCommand(conn, PQgetvalue(res, i, 1), userset,
+               makeAlterConfigCommand(conn, PQgetvalue(res, i, 1),
                                                           "ROLE", PQgetvalue(res, i, 0),
                                                           "DATABASE", dbname,
                                                           outbuf);
-       }
 
        PQclear(res);
 
index 988a0cd4735de20c84d51cc140a879923f44274c..c5647d059bef99e3457a854a549fba77e8fe2d11 100644 (file)
@@ -1385,10 +1385,7 @@ dumpUserConfig(PGconn *conn, const char *username)
        PQExpBuffer buf = createPQExpBuffer();
        PGresult   *res;
 
-       printfPQExpBuffer(buf, "SELECT unnest(setconfig)");
-       if (server_version >= 160000)
-               appendPQExpBufferStr(buf, ", unnest(setuser)");
-       appendPQExpBuffer(buf, " FROM pg_db_role_setting "
+       printfPQExpBuffer(buf, "SELECT unnest(setconfig) FROM pg_db_role_setting "
                                          "WHERE setdatabase = 0 AND setrole = "
                                          "(SELECT oid FROM %s WHERE rolname = ",
                                          role_catalog);
@@ -1402,13 +1399,8 @@ dumpUserConfig(PGconn *conn, const char *username)
 
        for (int i = 0; i < PQntuples(res); i++)
        {
-               char    *userset = NULL;
-
-               if (server_version >= 160000)
-                       userset = PQgetvalue(res, i, 1);
-
                resetPQExpBuffer(buf);
-               makeAlterConfigCommand(conn, PQgetvalue(res, i, 0), userset,
+               makeAlterConfigCommand(conn, PQgetvalue(res, i, 0),
                                                           "ROLE", username, NULL, NULL,
                                                           buf);
                fprintf(OPF, "%s", buf->data);
index 50f39a2e50bf407bccd44ea4bc021b00bd947d70..ab4279ed5836e46ed3ab4c13a3fd5acb3a333a3f 100644 (file)
@@ -3776,16 +3776,13 @@ listDbRoleSettings(const char *pattern, const char *pattern2)
        initPQExpBuffer(&buf);
 
        printfPQExpBuffer(&buf, "SELECT rolname AS \"%s\", datname AS \"%s\",\n"
-                                         "pg_catalog.array_to_string(setconfig, E'\\n') AS \"%s\"",
+                                         "pg_catalog.array_to_string(setconfig, E'\\n') AS \"%s\"\n"
+                                         "FROM pg_catalog.pg_db_role_setting s\n"
+                                         "LEFT JOIN pg_catalog.pg_database d ON d.oid = setdatabase\n"
+                                         "LEFT JOIN pg_catalog.pg_roles r ON r.oid = setrole\n",
                                          gettext_noop("Role"),
                                          gettext_noop("Database"),
                                          gettext_noop("Settings"));
-       if (pset.sversion >= 160000)
-               appendPQExpBuffer(&buf, ",\npg_catalog.array_to_string(setuser, E'\\n') AS \"%s\"",
-                                                 gettext_noop("User set"));
-       appendPQExpBuffer(&buf, "\nFROM pg_catalog.pg_db_role_setting s\n"
-                                         "LEFT JOIN pg_catalog.pg_database d ON d.oid = setdatabase\n"
-                                         "LEFT JOIN pg_catalog.pg_roles r ON r.oid = setrole\n");
        if (!validateSQLNamePattern(&buf, pattern, false, false,
                                                                NULL, "r.rolname", NULL, NULL, &havewhere, 1))
                goto error_return;
index bd042449691188745a8c6d3b18095813127a17fb..677847e434e423023eab3e8ebf2e901e4ce73617 100644 (file)
@@ -4515,10 +4515,6 @@ psql_completion(const char *text, int start, int end)
                        }
                }
        }
-       /* Complete ALTER DATABASE|ROLE|USER ... SET ... TO ... USER SET */
-       else if (HeadMatches("ALTER", "DATABASE|ROLE|USER") &&
-                        TailMatches("SET", MatchAny, "TO|=", MatchAny))
-               COMPLETE_WITH("USER SET");
 
 /* START TRANSACTION */
        else if (Matches("START"))
index e617381bf40543f04bd32f5a9ceed6d7cdf83051..1afcfaf5ac4efff8196c70252839ed3e610b4587 100644 (file)
@@ -57,6 +57,6 @@
  */
 
 /*                                                     yyyymmddN */
-#define CATALOG_VERSION_NO     202305171
+#define CATALOG_VERSION_NO     202305172
 
 #endif
index 2f925be90df31c05f278f60e9f239507d1e8edab..4ba0d69e7629582d415fba1bcaaabf7eee3c4dfd 100644 (file)
@@ -41,8 +41,6 @@ CATALOG(pg_db_role_setting,2964,DbRoleSettingRelationId) BKI_SHARED_RELATION
 
 #ifdef CATALOG_VARLEN                  /* variable-length fields start here */
        text            setconfig[1];   /* GUC settings to apply at login */
-
-       bool            setuser[1];             /* USER SET flags for GUC settings */
 #endif
 } FormData_pg_db_role_setting;
 
index cc7b32b279a0f274317a5746a6a8fb756730a403..0ca298f5a1b97d745184cbe9e5d30dc230589d79 100644 (file)
@@ -2445,7 +2445,6 @@ typedef struct VariableSetStmt
        char       *name;                       /* variable to be set */
        List       *args;                       /* List of A_Const nodes */
        bool            is_local;               /* SET LOCAL? */
-       bool            user_set;
 } VariableSetStmt;
 
 /* ----------------------
index ba89d013e64e8ec0d1ab0859bc0803b1ea1d09f1..d5253c7ed23d23db6031a62e3c59e7a71893d169 100644 (file)
@@ -391,14 +391,11 @@ extern void AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt);
 extern char *GetConfigOptionByName(const char *name, const char **varname,
                                                                   bool missing_ok);
 
-extern void ProcessGUCArray(ArrayType *array, ArrayType *usersetArray,
+extern void ProcessGUCArray(ArrayType *array,
                                                        GucContext context, GucSource source, GucAction action);
-extern ArrayType *GUCArrayAdd(ArrayType *array, ArrayType **usersetArray,
-                                                         const char *name, const char *value,
-                                                         bool user_set);
-extern ArrayType *GUCArrayDelete(ArrayType *array, ArrayType **usersetArray,
-                                                                const char *name);
-extern ArrayType *GUCArrayReset(ArrayType *array, ArrayType **usersetArray);
+extern ArrayType *GUCArrayAdd(ArrayType *array, const char *name, const char *value);
+extern ArrayType *GUCArrayDelete(ArrayType *array, const char *name);
+extern ArrayType *GUCArrayReset(ArrayType *array);
 
 extern void *guc_malloc(int elevel, size_t size);
 extern pg_nodiscard void *guc_realloc(int elevel, void *old, size_t size);
index 79e3033ec284b9b040853fd69c7d8d61cad20c3f..6331c976dcb60dc1291049ab145fb04811a22f9a 100644 (file)
@@ -25,7 +25,6 @@ SUBDIRS = \
                  test_misc \
                  test_oat_hooks \
                  test_parser \
-                 test_pg_db_role_setting \
                  test_pg_dump \
                  test_predtest \
                  test_rbtree \
index dcb82ed68f481b02ac6fe43ff3cec5b9ff8b1082..17d369e3789d1465f5134f0c27cbeb48e5ad4370 100644 (file)
@@ -22,7 +22,6 @@ subdir('test_lfind')
 subdir('test_misc')
 subdir('test_oat_hooks')
 subdir('test_parser')
-subdir('test_pg_db_role_setting')
 subdir('test_pg_dump')
 subdir('test_predtest')
 subdir('test_rbtree')
diff --git a/src/test/modules/test_pg_db_role_setting/.gitignore b/src/test/modules/test_pg_db_role_setting/.gitignore
deleted file mode 100644 (file)
index 5dcb3ff..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-# Generated subdirectories
-/log/
-/results/
-/tmp_check/
diff --git a/src/test/modules/test_pg_db_role_setting/Makefile b/src/test/modules/test_pg_db_role_setting/Makefile
deleted file mode 100644 (file)
index 50ac02d..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-# src/test/modules/test_pg_db_role_setting/Makefile
-
-MODULE_big = test_pg_db_role_setting
-OBJS = \
-       $(WIN32RES) \
-       test_pg_db_role_setting.o
-EXTENSION = test_pg_db_role_setting
-DATA = test_pg_db_role_setting--1.0.sql
-
-PGFILEDESC = "test_pg_db_role_setting - tests for default GUC values stored in pg_db_role_settings"
-
-REGRESS = test_pg_db_role_setting
-
-# disable installcheck for now
-NO_INSTALLCHECK = 1
-
-ifdef USE_PGXS
-PG_CONFIG = pg_config
-PGXS := $(shell $(PG_CONFIG) --pgxs)
-include $(PGXS)
-else
-subdir = src/test/modules/test_pg_db_role_setting
-top_builddir = ../../../..
-include $(top_builddir)/src/Makefile.global
-include $(top_srcdir)/contrib/contrib-global.mk
-endif
diff --git a/src/test/modules/test_pg_db_role_setting/expected/test_pg_db_role_setting.out b/src/test/modules/test_pg_db_role_setting/expected/test_pg_db_role_setting.out
deleted file mode 100644 (file)
index ec18692..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-CREATE EXTENSION test_pg_db_role_setting;
-CREATE USER regress_super_user SUPERUSER;
-CREATE USER regress_regular_user;
-\c - regress_regular_user
--- successfully set a placeholder value
-SET test_pg_db_role_setting.superuser_param = 'aaa';
--- module is loaded, the placeholder value is thrown away
-SELECT load_test_pg_db_role_setting();
-WARNING:  permission denied to set parameter "test_pg_db_role_setting.superuser_param"
- load_test_pg_db_role_setting 
-------------------------------
-(1 row)
-
-SHOW test_pg_db_role_setting.superuser_param;
- test_pg_db_role_setting.superuser_param 
------------------------------------------
- superuser_param_value
-(1 row)
-
-SHOW test_pg_db_role_setting.user_param;
- test_pg_db_role_setting.user_param 
-------------------------------------
- user_param_value
-(1 row)
-
-\c - regress_regular_user
--- fail, not privileges
-ALTER ROLE regress_regular_user SET test_pg_db_role_setting.superuser_param = 'aaa';
-ERROR:  permission denied to set parameter "test_pg_db_role_setting.superuser_param"
-ALTER ROLE regress_regular_user SET test_pg_db_role_setting.user_param = 'bbb';
-ERROR:  permission denied to set parameter "test_pg_db_role_setting.user_param"
--- success for USER SET parameters
-ALTER ROLE regress_regular_user SET test_pg_db_role_setting.superuser_param = 'aaa' USER SET;
-ALTER ROLE regress_regular_user SET test_pg_db_role_setting.user_param = 'bbb' USER SET;
-\drds regress_regular_user
-                                     List of settings
-         Role         | Database |                  Settings                   | User set 
-----------------------+----------+---------------------------------------------+----------
- regress_regular_user |          | test_pg_db_role_setting.superuser_param=aaa+| t       +
-                      |          | test_pg_db_role_setting.user_param=bbb      | t
-(1 row)
-
-\c - regress_regular_user
--- successfully set placeholders
-SHOW test_pg_db_role_setting.superuser_param;
- test_pg_db_role_setting.superuser_param 
------------------------------------------
- aaa
-(1 row)
-
-SHOW test_pg_db_role_setting.user_param;
- test_pg_db_role_setting.user_param 
-------------------------------------
- bbb
-(1 row)
-
--- module is loaded, the placeholder value of superuser param is thrown away
-SELECT load_test_pg_db_role_setting();
-WARNING:  permission denied to set parameter "test_pg_db_role_setting.superuser_param"
- load_test_pg_db_role_setting 
-------------------------------
-(1 row)
-
-SHOW test_pg_db_role_setting.superuser_param;
- test_pg_db_role_setting.superuser_param 
------------------------------------------
- superuser_param_value
-(1 row)
-
-SHOW test_pg_db_role_setting.user_param;
- test_pg_db_role_setting.user_param 
-------------------------------------
- bbb
-(1 row)
-
-\c - regress_super_user
-ALTER ROLE regress_regular_user SET test_pg_db_role_setting.superuser_param = 'aaa';
-\drds regress_regular_user
-                                     List of settings
-         Role         | Database |                  Settings                   | User set 
-----------------------+----------+---------------------------------------------+----------
- regress_regular_user |          | test_pg_db_role_setting.superuser_param=aaa+| f       +
-                      |          | test_pg_db_role_setting.user_param=bbb      | t
-(1 row)
-
-\c - regress_regular_user
--- don't have a priviledge to change superuser value to user set one
-ALTER ROLE regress_regular_user SET test_pg_db_role_setting.superuser_param = 'ccc' USER SET;
-ERROR:  permission denied to set parameter "test_pg_db_role_setting.superuser_param"
-\c - regress_super_user
-SELECT load_test_pg_db_role_setting();
- load_test_pg_db_role_setting 
-------------------------------
-(1 row)
-
--- give the privilege to set SUSET param to the regular user
-GRANT SET ON PARAMETER test_pg_db_role_setting.superuser_param TO regress_regular_user;
-\c - regress_regular_user
-ALTER ROLE regress_regular_user SET test_pg_db_role_setting.superuser_param = 'ccc';
-\drds regress_regular_user
-                                     List of settings
-         Role         | Database |                  Settings                   | User set 
-----------------------+----------+---------------------------------------------+----------
- regress_regular_user |          | test_pg_db_role_setting.superuser_param=ccc+| f       +
-                      |          | test_pg_db_role_setting.user_param=bbb      | t
-(1 row)
-
-\c - regress_regular_user
--- successfully set placeholders
-SHOW test_pg_db_role_setting.superuser_param;
- test_pg_db_role_setting.superuser_param 
------------------------------------------
- ccc
-(1 row)
-
-SHOW test_pg_db_role_setting.user_param;
- test_pg_db_role_setting.user_param 
-------------------------------------
- bbb
-(1 row)
-
--- module is loaded, and placeholder values are successfully set
-SELECT load_test_pg_db_role_setting();
- load_test_pg_db_role_setting 
-------------------------------
-(1 row)
-
-SHOW test_pg_db_role_setting.superuser_param;
- test_pg_db_role_setting.superuser_param 
------------------------------------------
- ccc
-(1 row)
-
-SHOW test_pg_db_role_setting.user_param;
- test_pg_db_role_setting.user_param 
-------------------------------------
- bbb
-(1 row)
-
diff --git a/src/test/modules/test_pg_db_role_setting/meson.build b/src/test/modules/test_pg_db_role_setting/meson.build
deleted file mode 100644 (file)
index 8b58817..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (c) 2022-2023, PostgreSQL Global Development Group
-
-test_pg_db_role_setting_sources = files(
-  'test_pg_db_role_setting.c',
-)
-
-if host_system == 'windows'
-  test_pg_db_role_setting_sources += rc_lib_gen.process(win32ver_rc, extra_args: [
-    '--NAME', 'test_pg_db_role_setting',
-    '--FILEDESC', 'test_pg_db_role_setting - tests for default GUC values stored in pg_db_role_settings',])
-endif
-
-test_pg_db_role_setting = shared_module('test_pg_db_role_setting',
-  test_pg_db_role_setting_sources,
-  kwargs: pg_test_mod_args,
-)
-test_install_libs += test_pg_db_role_setting
-
-test_install_data += files(
-  'test_pg_db_role_setting.control',
-  'test_pg_db_role_setting--1.0.sql',
-)
-
-tests += {
-  'name': 'test_pg_db_role_setting',
-  'sd': meson.current_source_dir(),
-  'bd': meson.current_build_dir(),
-  'regress': {
-    'sql': [
-      'test_pg_db_role_setting',
-    ],
-    'runningcheck': false,
-  },
-}
diff --git a/src/test/modules/test_pg_db_role_setting/sql/test_pg_db_role_setting.sql b/src/test/modules/test_pg_db_role_setting/sql/test_pg_db_role_setting.sql
deleted file mode 100644 (file)
index 44f231c..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-CREATE EXTENSION test_pg_db_role_setting;
-CREATE USER regress_super_user SUPERUSER;
-CREATE USER regress_regular_user;
-
-\c - regress_regular_user
--- successfully set a placeholder value
-SET test_pg_db_role_setting.superuser_param = 'aaa';
-
--- module is loaded, the placeholder value is thrown away
-SELECT load_test_pg_db_role_setting();
-
-SHOW test_pg_db_role_setting.superuser_param;
-SHOW test_pg_db_role_setting.user_param;
-
-\c - regress_regular_user
--- fail, not privileges
-ALTER ROLE regress_regular_user SET test_pg_db_role_setting.superuser_param = 'aaa';
-ALTER ROLE regress_regular_user SET test_pg_db_role_setting.user_param = 'bbb';
--- success for USER SET parameters
-ALTER ROLE regress_regular_user SET test_pg_db_role_setting.superuser_param = 'aaa' USER SET;
-ALTER ROLE regress_regular_user SET test_pg_db_role_setting.user_param = 'bbb' USER SET;
-
-\drds regress_regular_user
-
-\c - regress_regular_user
--- successfully set placeholders
-SHOW test_pg_db_role_setting.superuser_param;
-SHOW test_pg_db_role_setting.user_param;
-
--- module is loaded, the placeholder value of superuser param is thrown away
-SELECT load_test_pg_db_role_setting();
-
-SHOW test_pg_db_role_setting.superuser_param;
-SHOW test_pg_db_role_setting.user_param;
-
-\c - regress_super_user
-ALTER ROLE regress_regular_user SET test_pg_db_role_setting.superuser_param = 'aaa';
-\drds regress_regular_user
-
-\c - regress_regular_user
--- don't have a priviledge to change superuser value to user set one
-ALTER ROLE regress_regular_user SET test_pg_db_role_setting.superuser_param = 'ccc' USER SET;
-
-\c - regress_super_user
-SELECT load_test_pg_db_role_setting();
--- give the privilege to set SUSET param to the regular user
-GRANT SET ON PARAMETER test_pg_db_role_setting.superuser_param TO regress_regular_user;
-
-\c - regress_regular_user
-ALTER ROLE regress_regular_user SET test_pg_db_role_setting.superuser_param = 'ccc';
-
-\drds regress_regular_user
-
-\c - regress_regular_user
--- successfully set placeholders
-SHOW test_pg_db_role_setting.superuser_param;
-SHOW test_pg_db_role_setting.user_param;
-
--- module is loaded, and placeholder values are successfully set
-SELECT load_test_pg_db_role_setting();
-
-SHOW test_pg_db_role_setting.superuser_param;
-SHOW test_pg_db_role_setting.user_param;
diff --git a/src/test/modules/test_pg_db_role_setting/test_pg_db_role_setting--1.0.sql b/src/test/modules/test_pg_db_role_setting/test_pg_db_role_setting--1.0.sql
deleted file mode 100644 (file)
index 1ed3d28..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/* src/test/modules/test_pg_db_role_setting/test_pg_db_role_setting--1.0.sql */
-
--- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION test_pg_db_role_setting" to load this file. \quit
-
-CREATE FUNCTION load_test_pg_db_role_setting() RETURNS void
-  AS 'MODULE_PATHNAME' LANGUAGE C;
diff --git a/src/test/modules/test_pg_db_role_setting/test_pg_db_role_setting.c b/src/test/modules/test_pg_db_role_setting/test_pg_db_role_setting.c
deleted file mode 100644 (file)
index 91a3607..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*--------------------------------------------------------------------------
- *
- * test_pg_db_role_setting.c
- *             Code for testing mandatory access control (MAC) using object access hooks.
- *
- * Copyright (c) 2022-2023, PostgreSQL Global Development Group
- *
- * IDENTIFICATION
- *             src/test/modules/test_pg_db_role_setting/test_pg_db_role_setting.c
- *
- * -------------------------------------------------------------------------
- */
-
-#include "postgres.h"
-
-#include "utils/guc.h"
-
-PG_MODULE_MAGIC;
-
-PG_FUNCTION_INFO_V1(load_test_pg_db_role_setting);
-
-static char *superuser_param;
-static char *user_param;
-
-/*
- * Module load callback
- */
-void
-_PG_init(void)
-{
-       DefineCustomStringVariable("test_pg_db_role_setting.superuser_param",
-                                                          "Sample superuser parameter.",
-                                                          NULL,
-                                                          &superuser_param,
-                                                          "superuser_param_value",
-                                                          PGC_SUSET,
-                                                          0,
-                                                          NULL, NULL, NULL);
-
-       DefineCustomStringVariable("test_pg_db_role_setting.user_param",
-                                                          "Sample user parameter.",
-                                                          NULL,
-                                                          &user_param,
-                                                          "user_param_value",
-                                                          PGC_USERSET,
-                                                          0,
-                                                          NULL, NULL, NULL);
-}
-
-/*
- * Empty function, which is used just to trigger load of this module.
- */
-Datum
-load_test_pg_db_role_setting(PG_FUNCTION_ARGS)
-{
-       PG_RETURN_VOID();
-}
diff --git a/src/test/modules/test_pg_db_role_setting/test_pg_db_role_setting.control b/src/test/modules/test_pg_db_role_setting/test_pg_db_role_setting.control
deleted file mode 100644 (file)
index 9678cff..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-# test_pg_db_role_setting extension
-comment = 'test_pg_db_role_setting - tests for default GUC values stored in pg_db_role_setting'
-default_version = '1.0'
-module_pathname = '$libdir/test_pg_db_role_setting'
-relocatable = true
-superuser = false
-trusted = true
index 956e4754470365fccd359a673c7f5b7ef0d52f9a..8f93028363682a9226ad41cc934bdf40bdf93fe4 100644 (file)
@@ -6217,9 +6217,9 @@ List of schemas
 (0 rows)
 
 \drds "no.such.setting"
-           List of settings
- Role | Database | Settings | User set 
-------+----------+----------+----------
+      List of settings
+ Role | Database | Settings 
+------+----------+----------
 (0 rows)
 
 \dRp "no.such.publication"