Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mwsxY-0001FZ-NK for pgsql-hackers@arkaria.postgresql.org; Mon, 13 Dec 2021 21:34:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mwsxW-000354-Kw for pgsql-hackers@arkaria.postgresql.org; Mon, 13 Dec 2021 21:34:10 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mwsxV-00033y-No for pgsql-hackers@lists.postgresql.org; Mon, 13 Dec 2021 21:34:10 +0000 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1mwsxQ-0002yg-Ey for pgsql-hackers@postgresql.org; Mon, 13 Dec 2021 21:34:09 +0000 Received: by mail-pl1-x629.google.com with SMTP id y7so12158638plp.0 for ; Mon, 13 Dec 2021 13:34:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=5QMb4SC4AMR39FkKE+EL7+PgJZRo8h1VP4/jZA7YV30=; b=D5VgisJqparU7BjFNWdBfhDSJXSiKS83g2ZEWUtg8S7c3vLuiaVkcS7pKhobDh3RAh 2lkNqpYG/Ua03n0xx/GytB10OOygKJ3heuFSGiAL2XuBewmP1t8yyBtLDxMF7faErIZI J1xUGUPR+6lctlTldUtJjYnG4W5uiwcpvmjnpwEUi+UWHPA3vOmxs5oMwrqJ1+qJjn3F jvyDAPEtQ1evUBohxrOaU7VV2R7lk8jSwGnLCB7DxfljmBNTG2qAYnRh/D5T4CklZOrU /trlN48INIqnWucjBEIsUIj/JR1/3h/x4jY2oB6OQ2rwwUJ1L33kMJesfYty1Wsx1FWQ p6+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=5QMb4SC4AMR39FkKE+EL7+PgJZRo8h1VP4/jZA7YV30=; b=GKXUzGPBM7JyWE2YgYoYbBj/GjHx6KDMR8iVr8LbVwjEL7HZEA+vkVCGET/7PiSN6P FTrSiE4XKlswWpc/fE67xXPUjpljfna8kaflupHwmLBbkTgoYwX/1hyMyiQr2pD+cAmC rSH8/B/tIPjwt0Rsdakz+cvRL33GACAcxmw0tXfIXRXE3qIWDbj66kHtejradsYB+byc zzPyqJRlN7xijc7u5kgNZLQSKtH236ufpayThhoeVxoZQvvgvaL5yH3IW1qsIQz2JPmg W3GFJbiVMiaS5hbo5wzsZEa5FPgoqfe+lyLR+Pr31pyZFHOUTX+tdBsc5oyu/0METyfD 54LA== X-Gm-Message-State: AOAM531ylH7HGjAOkBE1b29fjM710JUbKm8KGElNMub4vFzgeBDK5Ylg 2LPFKDb1j58736CRQSOw17FrYZeeyFmy+N7zP+da9VLqwNEQh4L0dfyRIlBcaveQkvytJ2aIsyi /dbJeB2ieOD94YvolI/bG9X3KjPM0mx/d8Kb/ksNU5NNY5dw8yVkIzgGVnn5mXLlJ0z19Bh+Zev yI4Onq+/6egz/1M4n1ZjgvQjgmGP8bnUpnTTzr X-Google-Smtp-Source: ABdhPJzlSEuK5WZsNf0MK8xSYqY6WQoKE2CofofMMY0l1thStoWdmJmLZRHbxS4aRIUVEHO8YuP07g== X-Received: by 2002:a17:90a:4b03:: with SMTP id g3mr910511pjh.167.1639431241979; Mon, 13 Dec 2021 13:34:01 -0800 (PST) Received: from laptop280-ma-us.hitronhub.home (24-113-193-150.wavecable.com. [24.113.193.150]) by smtp.gmail.com with ESMTPSA id f185sm13328384pfg.39.2021.12.13.13.33.59 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 Dec 2021 13:34:00 -0800 (PST) From: Mark Dilger Message-Id: Content-Type: multipart/mixed; boundary="Apple-Mail=_E024C488-3E6F-43F1-8B4C-C80F6788C871" Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.7\)) Subject: Re: Granting SET and ALTER SYSTE privileges for GUCs Date: Mon, 13 Dec 2021 13:33:58 -0800 In-Reply-To: Cc: Robert Haas , Jeff Davis , PostgreSQL-development , Tom Lane , Joshua Brindle To: Andrew Dunstan References: <3D691E20-C1D5-4B80-8BA5-6BEB63AF3029@enterprisedb.com> <9DB8DABC-0E1E-4AB0-BB11-9BC48E4C71BE@enterprisedb.com> X-Mailer: Apple Mail (2.3608.120.23.2.7) X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --Apple-Mail=_E024C488-3E6F-43F1-8B4C-C80F6788C871 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii > On Dec 13, 2021, at 12:58 PM, Mark Dilger = wrote: >=20 > Give me a few minutes and I'll repost. Ok, this new version is rebased, cleaned up, and has the ability to = revoke SET VALUE on most settings which were previously userset, but are = now suset with initdb time granted SET VALUE privilege to public. I have not yet altered gucs defined by contrib modules, but will repost = in a few hours, or tomorrow, with those changes. --Apple-Mail=_E024C488-3E6F-43F1-8B4C-C80F6788C871 Content-Disposition: attachment; filename=v4-0001-Allow-GRANT-of-SET-and-ALTER-SYSTEM-SET-for-gucs.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="v4-0001-Allow-GRANT-of-SET-and-ALTER-SYSTEM-SET-for-gucs.patch" Content-Transfer-Encoding: quoted-printable =46rom=202a62acb69e157cb2f79dc835b75de1493bb2ca53=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Mark=20Dilger=20=0A= Date:=20Mon,=2013=20Dec=202021=2007:01:18=20-0800=0ASubject:=20[PATCH=20= v4]=20Allow=20GRANT=20of=20SET=20and=20ALTER=20SYSTEM=20SET=20for=20gucs=0A= =0AAllow=20granting=20of=20privilege=20to=20set=20or=20alter=20system=20= set=20variables=0Awhich=20otherwise=20can=20only=20be=20managed=20by=20= superusers.=20=20Each=0A(role,variable,privilege)=20triple=20is=20= independently=20grantable,=20so=20a=0Auser=20may=20be=20granted=20= privilege=20to=20SET=20but=20not=20to=20ALTER=20SYSTEM=20SET=20on=0Aa=20= variable,=20or=20vice=20versa.=20=20The=20privilege=20to=20SET=20a=20= userset=20variable=0Amay=20be=20granted,=20though=20doing=20so=20has=20= no=20practical=20effect,=20since=20any=0Arole=20can=20set=20userset=20= variables=20anyway.=20=20Worse,=20there=20is=20no=20way=20to=0Arevoke=20= the=20privilege=20to=20SET=20a=20userset=20variable.=20=20To=20remedy=20= that,=0Amost=20core=20userset=20variables=20have=20been=20changed=20to=20= suset,=20with=0Aexplicit=20grants=20to=20set=20the=20variable=20to=20= public.=0A---=0A=20doc/src/sgml/catalogs.sgml=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20|=20=2063=20++=0A=20doc/src/sgml/ddl.sgml=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20=2039=20= +-=0A=20doc/src/sgml/func.sgml=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20=2020=20+-=0A=20doc/src/sgml/ref/grant.sgml=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20=20=207=20+=0A=20= doc/src/sgml/ref/set.sgml=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20=20=205=20+-=0A=20src/backend/catalog/Makefile=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20=20=206=20+-=0A=20= src/backend/catalog/aclchk.c=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20251=20+++++++=0A=20src/backend/catalog/catalog.c=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20=20=206=20+=0A=20= src/backend/catalog/dependency.c=20=20=20=20=20=20=20=20=20=20=20=20|=20=20= =206=20+=0A=20src/backend/catalog/objectaddress.c=20=20=20=20=20=20=20=20= =20|=20=2046=20++=0A=20src/backend/catalog/pg_setting_acl.c=20=20=20=20=20= =20=20=20|=20122=20+++=0A=20src/backend/catalog/setting_privileges.sql=20= =20|=20=2062=20++=0A=20src/backend/catalog/system_views.sql=20=20=20=20=20= =20=20=20|=20=2013=20+=0A=20src/backend/commands/alter.c=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20=20=201=20+=0A=20= src/backend/commands/dropcmds.c=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= =20=207=20+=0A=20src/backend/commands/event_trigger.c=20=20=20=20=20=20=20= =20|=20=20=206=20+=0A=20src/backend/commands/seclabel.c=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20=20=201=20+=0A=20= src/backend/commands/tablecmds.c=20=20=20=20=20=20=20=20=20=20=20=20|=20=20= =201=20+=0A=20src/backend/parser/gram.y=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20=2099=20++-=0A=20src/backend/utils/adt/acl.c=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20258=20+++++++=0A=20= src/backend/utils/cache/lsyscache.c=20=20=20=20=20=20=20=20=20|=20=2020=20= +=0A=20src/backend/utils/cache/syscache.c=20=20=20=20=20=20=20=20=20=20|=20= =2023=20+=0A=20src/backend/utils/misc/guc.c=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20402=20++++++----=0A=20src/bin/initdb/initdb.c=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20=20=205=20+=0A= =20src/bin/pg_dump/dumputils.c=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20=20=207=20+-=0A=20src/bin/pg_dump/pg_backup_archiver.c=20=20=20= =20=20=20=20=20|=20=20=202=20+=0A=20src/bin/pg_dump/pg_dump.c=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20=20=205=20+-=0A=20= src/bin/pg_dump/pg_dumpall.c=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20=2071=20++=0A=20src/include/catalog/dependency.h=20=20=20=20=20=20= =20=20=20=20=20=20|=20=20=201=20+=0A=20= src/include/catalog/pg_default_acl.h=20=20=20=20=20=20=20=20|=20=20=201=20= +=0A=20src/include/catalog/pg_proc.dat=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20=2019=20+=0A=20src/include/catalog/pg_setting_acl.h=20=20=20=20=20= =20=20=20|=20=2063=20++=0A=20src/include/nodes/parsenodes.h=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20=20=205=20+-=0A=20= src/include/parser/kwlist.h=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20=20=201=20+=0A=20src/include/utils/acl.h=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20|=20=2010=20+-=0A=20= src/include/utils/guc.h=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20|=20=20=202=20+=0A=20src/include/utils/lsyscache.h=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20=20=201=20+=0A=20= src/include/utils/syscache.h=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20=20=202=20+=0A=20src/test/modules/test_pg_dump/t/001_base.pl=20|=20= =2047=20++=0A=20src/test/regress/expected/guc_privs.out=20=20=20=20=20|=20= 780=20++++++++++++++++++++=0A=20src/test/regress/expected/privileges.out=20= =20=20=20|=20=2053=20+-=0A=20src/test/regress/expected/rules.out=20=20=20= =20=20=20=20=20=20|=20=2013=20+=0A=20= src/test/regress/expected/sanity_check.out=20=20|=20=20=201=20+=0A=20= src/test/regress/parallel_schedule=20=20=20=20=20=20=20=20=20=20|=20=20=20= 2=20+-=0A=20src/test/regress/sql/guc_privs.sql=20=20=20=20=20=20=20=20=20= =20|=20185=20+++++=0A=20src/test/regress/sql/privileges.sql=20=20=20=20=20= =20=20=20=20|=20=2044=20+-=0A=2046=20files=20changed,=202608=20= insertions(+),=20176=20deletions(-)=0A=20create=20mode=20100644=20= src/backend/catalog/pg_setting_acl.c=0A=20create=20mode=20100644=20= src/backend/catalog/setting_privileges.sql=0A=20create=20mode=20100644=20= src/include/catalog/pg_setting_acl.h=0A=20create=20mode=20100644=20= src/test/regress/expected/guc_privs.out=0A=20create=20mode=20100644=20= src/test/regress/sql/guc_privs.sql=0A=0Adiff=20--git=20= a/doc/src/sgml/catalogs.sgml=20b/doc/src/sgml/catalogs.sgml=0Aindex=20= 03e2537b07..5442b8689f=20100644=0A---=20a/doc/src/sgml/catalogs.sgml=0A= +++=20b/doc/src/sgml/catalogs.sgml=0A@@=20-105,6=20+105,11=20@@=0A=20=20=20= =20=20=20=20collations=20(locale=20information)=0A=20=20=20= =20=20=20=0A=20=0A+=20=20=20=20=20=0A+=20=20=20=20=20=20= pg_setting_acl= =0A+=20=20=20=20=20=20configuration=20parameters=20= which=20have=20privileges=20granted=20to=20roles=0A+=20=20=20=20=20= =0A+=0A=20=20=20=20=20=20=0A=20=20=20=20=20=20=20pg_constraint=0A=20=20=20=20=20=20=20check=20constraints,=20= unique=20constraints,=20primary=20key=20constraints,=20foreign=20key=20= constraints=0A@@=20-2423,6=20+2428,64=20@@=20= SCRAM-SHA-256$<iteration=20= count>:&l=0A=20=20=20=0A=20=20= =0A=20=0A+=20=0A+=20=20= <structname>pg_setting_acl</structname>=0A+=0A+=20=20= =0A+=20=20=20= pg_setting_acl=0A+=20=20=0A+=0A+=20=20= =0A+=20=20=20The=20catalog=20= pg_setting_acl=20records=20configuration=0A+=20=20= =20parameters=20which=20have=20had=20privileges=20to=20= SET=20or=0A+=20=20=20ALTER=20= SYSTEM=20granted=20to=20one=20or=20more=20roles.=0A+=20=20= =0A+=0A+=20=20=0A+=20=20=20Unlike=20most=20system=20= catalogs,=20pg_setting_acl=0A+=20=20=20is=20= shared=20across=20all=20databases=20of=20a=20cluster:=20there=20is=20= only=20one=0A+=20=20=20copy=20of=20= pg_setting_acl=20per=20cluster,=20not=0A+=20=20=20= one=20per=20database.=0A+=20=20=0A+=0A+=20=20=0A+=20=20=20= <structname>pg_setting_acl</structname>=20Columns=0A+=20=20= =20=0A+=20=20=20=20=0A+=20=20=20=20=20=0A= +=20=20=20=20=20=20=0A+=20=20=20=20=20=20=20Column=20Type=0A+=20=20= =20=20=20=20=0A+=20=20=20=20=20=20=0A+=20=20=20=20=20=20=20= Description=0A+=20=20=20=20=20=20=0A+=20=20=20=20=20= =0A+=20=20=20=20=0A+=0A+=20=20=20=20=0A+=20=20=20=20= =20=0A+=20=20=20=20=20=20=0A+=20=20=20=20=20=20=20= setting=20text=0A+=20=20=20=20=20= =20=0A+=20=20=20=20=20=20=0A+=20=20=20=20=20=20=20The=20= name=20of=20the=20configuration=20parameter=20for=20which=20privileges=20= are=20granted.=0A+=20=20=20=20=20=20=0A+=20=20=20=20=20= =0A+=0A+=20=20=20=20=20=0A+=20=20=20=20=20=20=0A+=20=20= =20=20=20=20=20setacl=20= aclitem[]=0A+=20=20=20=20=20=20=0A+=20=20=20=20=20=20= =0A+=20=20=20=20=20=20=20Access=20privileges;=20see=20=20for=20details=0A+=20=20=20=20=20=20= =0A+=20=20=20=20=20=0A+=0A+=20=20=20=20=0A+=20= =20=20=0A+=20=20
=0A+=20=0A+=0A=20=20=0A=20=20=20= <structname>pg_constraint</structname>=0A=20=0Adiff=20= --git=20a/doc/src/sgml/ddl.sgml=20b/doc/src/sgml/ddl.sgml=0Aindex=20= 64d9030652..dc2898ca9a=20100644=0A---=20a/doc/src/sgml/ddl.sgml=0A+++=20= b/doc/src/sgml/ddl.sgml=0A@@=20-1672,7=20+1672,8=20@@=20ALTER=20TABLE=20= products=20RENAME=20TO=20items;=0A=20=20=20=20INSERT,=20= UPDATE,=20DELETE,=0A=20=20=20=20= TRUNCATE,=20REFERENCES,=20= TRIGGER,=0A=20=20=20=20CREATE,=20= CONNECT,=20TEMPORARY,=0A-=20=20=20= EXECUTE,=20and=20USAGE.=0A+=20=20=20= EXECUTE,=20USAGE,=20SET=20= VALUE=0A+=20=20=20and=20ALTER=20SYSTEM.=0A=20= =20=20=20The=20privileges=20applicable=20to=20a=20particular=0A=20=20=20=20= object=20vary=20depending=20on=20the=20object's=20type=20(table,=20= function,=20etc).=0A=20=20=20=20More=20detail=20about=20the=20meanings=20= of=20these=20privileges=20appears=20below.=0A@@=20-1940,6=20+1941,26=20= @@=20REVOKE=20ALL=20ON=20accounts=20FROM=20PUBLIC;=0A=20=20=20=20=20=20=20= =0A=20=20=20=20=20=20=0A=20=20=20=20=20=0A= +=0A+=20=20=20=20=0A+=20=20=20=20=20SET=20= VALUE=0A+=20=20=20=20=20=0A+=20=20=20=20=20=20= =0A+=20=20=20=20=20=20=20Allows=20non-superuser=20roles=20to=20use=20= the=20SET=20command=20to=0A+=20=20=20=20=20=20=20= change=20run-time=20configuration=20parameters.=0A+=20=20=20=20=20=20= =0A+=20=20=20=20=20=0A+=20=20=20=20=0A+=0A= +=20=20=20=20=0A+=20=20=20=20=20ALTER=20= SYSTEM=0A+=20=20=20=20=20=0A+=20=20=20=20=20=20= =0A+=20=20=20=20=20=20=20Allows=20non-superuser=20roles=20to=20use=20= the=20ALTER=20SYSTEM=0A+=20=20=20=20=20=20=20SET=20= command=20to=20change=20server=20configuration=20parameters.=0A+=20=20=20= =20=20=20=0A+=20=20=20=20=20=0A+=20=20=20=20= =0A=20=20=20=20=0A=20=0A=20=20=20=20The=20= privileges=20required=20by=20other=20commands=20are=20listed=20on=20the=0A= @@=20-2078,6=20+2099,16=20@@=20REVOKE=20ALL=20ON=20accounts=20FROM=20= PUBLIC;=0A=20=20=20=20=20=20=20=20TYPE=0A=20=20=20=20=20= =20=20=0A=20=20=20=20=20=20
=0A+=20=20=20=20=20=0A+=20=20= =20=20=20=20SET=20VALUE=0A+=20=20=20=20= =20=20s=0A+=20=20=20=20=20=20= configuration=20parameter=0A+=20=20=20=20=20=0A+=20=20= =20=20=20=0A+=20=20=20=20=20=20ALTER=20= SYSTEM=0A+=20=20=20=20=20=20= A=0A+=20=20=20=20=20=20= configuration=20parameter=0A+=20=20=20=20=20=0A=20=20= =20=20=20=20=0A=20=20=20=20=0A=20=20=20=0A@@=20= -2184,6=20+2215,12=20@@=20REVOKE=20ALL=20ON=20accounts=20FROM=20PUBLIC;=0A= =20=20=20=20=20=20=20U=0A=20=20=20=20=20= =20=20\dT+=0A=20=20=20=20=20=20=0A= +=20=20=20=20=20=0A+=20=20=20=20=20=20Configuration=20= parameter=0A+=20=20=20=20=20=20= sA=0A+=20=20=20=20=20=20= none=0A+=20=20=20=20=20=20= =0A+=20=20=20=20=20=0A=20=20=20=20= =20=0A=20=20=20=20=0A=20=20=20=0Adiff=20--git=20= a/doc/src/sgml/func.sgml=20b/doc/src/sgml/func.sgml=0Aindex=20= 0a725a6711..ec846cd4e3=20100644=0A---=20a/doc/src/sgml/func.sgml=0A+++=20= b/doc/src/sgml/func.sgml=0A@@=20-22627,8=20+22627,7=20@@=20SELECT=20*=20= FROM=20pg_ls_dir('.')=20WITH=20ORDINALITY=20AS=20t(ls,n);=0A=20=20=20=20= privilege=20is=20held=20with=20grant=20option.=20Also,=20multiple=20= privilege=20types=20can=20be=0A=20=20=20=20listed=20separated=20by=20= commas,=20in=20which=20case=20the=20result=20will=20be=20true=20if=20any=20= of=0A=20=20=20=20the=20listed=20privileges=20is=20held.=20(Case=20of=20= the=20privilege=20string=20is=20not=0A-=20=20=20significant,=20and=20= extra=20whitespace=20is=20allowed=20between=20but=20not=20within=0A-=20=20= =20privilege=20names.)=0A+=20=20=20significant,=20and=20extra=20= whitespace=20is=20allowed=20between=20privilege=20names.)=0A=20=20=20=20= Some=20examples:=0A=20=0A=20SELECT=20= has_table_privilege('myschema.mytable',=20'select');=0A@@=20-22893,6=20= +22892,23=20@@=20SELECT=20has_function_privilege('joeuser',=20= 'myfunc(int,=20text)',=20'execute');=0A=20=20=20=20=20=20=20=20= =0A=20=20=20=20=20=20=20=0A=20=0A+=20=20=20=20=20=20= =0A+=20=20=20=20=20=20=20=0A+=20=20=20=20=20=20=20=20=0A+=20=20= =20=20=20=20=20=20=20has_setting_privilege=0A+=20=20=20= =20=20=20=20=20=0A+=20=20=20=20=20=20=20=20= has_setting_privilege=20(=0A+=20=20=20=20=20=20=20=20= =20=20=20user=20name=20or=20= oid,=20=0A+=20=20=20=20=20=20=20=20=20=20= setting=20text=20or=20= oid,=0A+=20=20=20=20=20=20=20=20=20=20= privilege=20text=20)=0A+=20=20=20=20=20= =20=20=20boolean=0A+=20=20=20=20=20=20=20= =0A+=20=20=20=20=20=20=20=0A+=20=20=20=20=20=20=20=20Does=20= user=20have=20privilege=20for=20setting?=0A+=20=20=20=20=20=20=20=20= Allowable=20privilege=20types=20are=20SET=20VALUE=20= and=20ALTER=20SYSTEM.=0A+=20=20=20=20=20=20=20= =0A+=20=20=20=20=20=20=0A+=0A=20=20=20=20=20=20=20= =0A=20=20=20=20=20=20=20=20=0A=20=20=20=20=20=20=20=20=20=0Adiff=20= --git=20a/doc/src/sgml/ref/grant.sgml=20b/doc/src/sgml/ref/grant.sgml=0A= index=20a897712de2..21ec320a8d=20100644=0A---=20= a/doc/src/sgml/ref/grant.sgml=0A+++=20b/doc/src/sgml/ref/grant.sgml=0A@@=20= -92,6=20+92,11=20@@=20GRANT=20{=20USAGE=20|=20ALL=20[=20PRIVILEGES=20]=20= }=0A=20=20=20=20=20TO=20role_specification=20[,=20...]=20[=20= WITH=20GRANT=20OPTION=20]=0A=20=20=20=20=20[=20GRANTED=20BY=20= role_specification=20]=0A= =20=0A+GRANT=20{=20SET=20VALUE=20|=20ALTER=20SYSTEM=20}=0A+=20=20=20=20= ON=20configuration_parameter=20[,=20...]=0A= +=20=20=20=20TO=20role_specification=20[,=20...]=20[=20= WITH=20GRANT=20OPTION=20]=0A+=20=20=20=20[=20GRANTED=20BY=20role_specification=20]=0A+=0A=20GRANT=20= role_name=20[,=20...]=20= TO=20role_specification=20= [,=20...]=0A=20=20=20=20=20[=20WITH=20ADMIN=20OPTION=20]=0A=20=20=20=20=20= [=20GRANTED=20BY=20role_specification=20]=0A@@=20-185,6=20= +190,8=20@@=20GRANT=20role_name=20[,=20...]=20TO=20TEMPORARY=0A=20=20=20=20= =20=20EXECUTE=0A=20=20=20=20=20=20= USAGE=0A+=20=20=20=20=20= SET=20VALUE=0A+=20=20=20=20=20= ALTER=20SYSTEM=0A=20=20=20=20=20=20= =0A=20=20=20=20=20=20=20=0A=20=20=20=20=20=20=20=20= Specific=20types=20of=20privileges,=20as=20defined=20in=20.=0Adiff=20--git=20a/doc/src/sgml/ref/set.sgml=20= b/doc/src/sgml/ref/set.sgml=0Aindex=20339ee9eec9..a08057d1d1=20100644=0A= ---=20a/doc/src/sgml/ref/set.sgml=0A+++=20b/doc/src/sgml/ref/set.sgml=0A= @@=20-34,8=20+34,9=20@@=20SET=20[=20SESSION=20|=20LOCAL=20]=20TIME=20= ZONE=20{=20timezone=20can=20be=20changed=20= on-the-fly=20with=0A=20=20=20=20SET.=0A-=20=20=20(But=20= some=20require=20superuser=20privileges=20to=20change,=20and=20others=20= cannot=0A-=20=20=20be=20changed=20after=20server=20or=20session=20= start.)=0A+=20=20=20(But=20some=20require=20either=20superuser=20= privileges=20or=20granted=20SET=0A+=20=20=20VALUE=20= privileges=20to=20change,=20and=20others=20cannot=20be=20changed=20after=0A= +=20=20=20server=20or=20session=20start.)=0A=20=20=20=20= SET=20only=20affects=20the=20value=20used=20by=20the=20= current=0A=20=20=20=20session.=0A=20=20=20=0Adiff=20--git=20= a/src/backend/catalog/Makefile=20b/src/backend/catalog/Makefile=0Aindex=20= 4e6efda97f..45e5330c12=20100644=0A---=20a/src/backend/catalog/Makefile=0A= +++=20b/src/backend/catalog/Makefile=0A@@=20-28,6=20+28,7=20@@=20OBJS=20= =3D=20\=0A=20=09pg_cast.o=20\=0A=20=09pg_class.o=20\=0A=20=09= pg_collation.o=20\=0A+=09pg_setting_acl.o=20\=0A=20=09pg_constraint.o=20= \=0A=20=09pg_conversion.o=20\=0A=20=09pg_db_role_setting.o=20\=0A@@=20= -54,7=20+55,7=20@@=20include=20$(top_srcdir)/src/backend/common.mk=0A=20= #=20there=20are=20reputedly=20other,=20undocumented=20ordering=20= dependencies.=0A=20CATALOG_HEADERS=20:=3D=20\=0A=20=09pg_proc.h=20= pg_type.h=20pg_attribute.h=20pg_class.h=20\=0A-=09pg_attrdef.h=20= pg_constraint.h=20pg_inherits.h=20pg_index.h=20pg_operator.h=20\=0A+=09= pg_attrdef.h=20pg_setting_acl.h=20pg_constraint.h=20pg_inherits.h=20= pg_index.h=20pg_operator.h=20\=0A=20=09pg_opfamily.h=20pg_opclass.h=20= pg_am.h=20pg_amop.h=20pg_amproc.h=20\=0A=20=09pg_language.h=20= pg_largeobject_metadata.h=20pg_largeobject.h=20pg_aggregate.h=20\=0A=20=09= pg_statistic.h=20pg_statistic_ext.h=20pg_statistic_ext_data.h=20\=0A@@=20= -126,6=20+127,7=20@@=20install-data:=20bki-stamp=20installdirs=0A=20=09= $(INSTALL_DATA)=20$(srcdir)/system_functions.sql=20= '$(DESTDIR)$(datadir)/system_functions.sql'=0A=20=09$(INSTALL_DATA)=20= $(srcdir)/system_views.sql=20'$(DESTDIR)$(datadir)/system_views.sql'=0A=20= =09$(INSTALL_DATA)=20$(srcdir)/information_schema.sql=20= '$(DESTDIR)$(datadir)/information_schema.sql'=0A+=09$(INSTALL_DATA)=20= $(srcdir)/setting_privileges.sql=20= '$(DESTDIR)$(datadir)/setting_privileges.sql'=0A=20=09$(INSTALL_DATA)=20= $(srcdir)/sql_features.txt=20'$(DESTDIR)$(datadir)/sql_features.txt'=0A=20= =0A=20installdirs:=0A@@=20-133,7=20+135,7=20@@=20installdirs:=0A=20=0A=20= .PHONY:=20uninstall-data=0A=20uninstall-data:=0A-=09rm=20-f=20= $(addprefix=20'$(DESTDIR)$(datadir)'/,=20postgres.bki=20= system_constraints.sql=20system_functions.sql=20system_views.sql=20= information_schema.sql=20sql_features.txt)=0A+=09rm=20-f=20$(addprefix=20= '$(DESTDIR)$(datadir)'/,=20postgres.bki=20system_constraints.sql=20= system_functions.sql=20system_views.sql=20information_schema.sql=20= setting_privileges.sql=20sql_features.txt)=0A=20=0A=20#=20postgres.bki,=20= system_constraints.sql,=20and=20the=20generated=20headers=20are=0A=20#=20= in=20the=20distribution=20tarball,=20so=20they=20are=20not=20cleaned=20= here.=0Adiff=20--git=20a/src/backend/catalog/aclchk.c=20= b/src/backend/catalog/aclchk.c=0Aindex=20ce0a4ff14e..02c15853e5=20100644=0A= ---=20a/src/backend/catalog/aclchk.c=0A+++=20= b/src/backend/catalog/aclchk.c=0A@@=20-49,6=20+49,7=20@@=0A=20#include=20= "catalog/pg_operator.h"=0A=20#include=20"catalog/pg_opfamily.h"=0A=20= #include=20"catalog/pg_proc.h"=0A+#include=20"catalog/pg_setting_acl.h"=0A= =20#include=20"catalog/pg_statistic_ext.h"=0A=20#include=20= "catalog/pg_subscription.h"=0A=20#include=20"catalog/pg_tablespace.h"=0A= @@=20-112,6=20+113,7=20@@=20static=20void=20= ExecGrant_Largeobject(InternalGrant=20*grantStmt);=0A=20static=20void=20= ExecGrant_Namespace(InternalGrant=20*grantStmt);=0A=20static=20void=20= ExecGrant_Tablespace(InternalGrant=20*grantStmt);=0A=20static=20void=20= ExecGrant_Type(InternalGrant=20*grantStmt);=0A+static=20void=20= ExecGrant_Setting(InternalGrant=20*grantStmt);=0A=20=0A=20static=20void=20= SetDefaultACLsInSchemas(InternalDefaultACL=20*iacls,=20List=20= *nspnames);=0A=20static=20void=20SetDefaultACL(InternalDefaultACL=20= *iacls);=0A@@=20-259,6=20+261,9=20@@=20restrict_and_check_grant(bool=20= is_grant,=20AclMode=20avail_goptions,=20bool=20all_privs,=0A=20=09=09= case=20OBJECT_TYPE:=0A=20=09=09=09whole_mask=20=3D=20= ACL_ALL_RIGHTS_TYPE;=0A=20=09=09=09break;=0A+=09=09case=20= OBJECT_SETTING:=0A+=09=09=09whole_mask=20=3D=20ACL_ALL_RIGHTS_SETTING;=0A= +=09=09=09break;=0A=20=09=09default:=0A=20=09=09=09elog(ERROR,=20= "unrecognized=20object=20type:=20%d",=20objtype);=0A=20=09=09=09/*=20not=20= reached,=20but=20keep=20compiler=20quiet=20*/=0A@@=20-498,6=20+503,10=20= @@=20ExecuteGrantStmt(GrantStmt=20*stmt)=0A=20=09=09=09all_privileges=20= =3D=20ACL_ALL_RIGHTS_FOREIGN_SERVER;=0A=20=09=09=09errormsg=20=3D=20= gettext_noop("invalid=20privilege=20type=20%s=20for=20foreign=20= server");=0A=20=09=09=09break;=0A+=09=09case=20OBJECT_SETTING:=0A+=09=09=09= all_privileges=20=3D=20ACL_ALL_RIGHTS_SETTING;=0A+=09=09=09errormsg=20=3D=20= gettext_noop("invalid=20privilege=20type=20%s=20for=20setting");=0A+=09=09= =09break;=0A=20=09=09default:=0A=20=09=09=09elog(ERROR,=20"unrecognized=20= GrantStmt.objtype:=20%d",=0A=20=09=09=09=09=20(int)=20stmt->objtype);=0A= @@=20-600,6=20+609,9=20@@=20ExecGrantStmt_oids(InternalGrant=20*istmt)=0A= =20=09=09case=20OBJECT_TABLESPACE:=0A=20=09=09=09= ExecGrant_Tablespace(istmt);=0A=20=09=09=09break;=0A+=09=09case=20= OBJECT_SETTING:=0A+=09=09=09ExecGrant_Setting(istmt);=0A+=09=09=09break;=0A= =20=09=09default:=0A=20=09=09=09elog(ERROR,=20"unrecognized=20= GrantStmt.objtype:=20%d",=0A=20=09=09=09=09=20(int)=20istmt->objtype);=0A= @@=20-759,6=20+771,38=20@@=20objectNamesToOids(ObjectType=20objtype,=20= List=20*objnames)=0A=20=09=09=09=09objects=20=3D=20lappend_oid(objects,=20= srvid);=0A=20=09=09=09}=0A=20=09=09=09break;=0A+=09=09case=20= OBJECT_SETTING:=0A+=09=09=09foreach(cell,=20objnames)=0A+=09=09=09{=0A+=09= =09=09=09char=09=20=20=20*setting=20=3D=20strVal(lfirst(cell));=0A+=09=09= =09=09Oid=09=09=09settingid=20=3D=20get_setting_oid(setting,=20true);=0A= +=0A+=09=09=09=09if=20(!OidIsValid(settingid))=0A+=09=09=09=09{=0A+=09=09= =09=09=09/*=0A+=09=09=09=09=09=20*=20Lookup=20the=20existing=20entry,=20= or=20if=20necessary,=20add=20a=20new=0A+=09=09=09=09=09=20*=20entry=20= for=20this=20parameter.=20=20Entries=20only=20exist=20for=0A+=09=09=09=09= =09=20*=20parameters=20which=20currently=20have,=20or=20previously=20= have=20had,=0A+=09=09=09=09=09=20*=20privileges=20assigned.=0A+=09=09=09=09= =09=20*=0A+=09=09=09=09=09=20*=20It=20is=20tempting=20to=20sanity-check=20= the=20given=20configuration=0A+=09=09=09=09=09=20*=20parameter=20name=20= against=20known=20guc=20names=20in=20the=20guc=0A+=09=09=09=09=09=20*=20= tables,=20but=20for=20handling=20upgrades=20we=20need=20to=20accept=0A+=09= =09=09=09=09=20*=20setting=20names=20that=20do=20not=20yet=20exist.=0A+=09= =09=09=09=09=20*/=0A+=09=09=09=09=09settingid=20=3D=20= SettingAclCreate(setting,=20true);=0A+=0A+=09=09=09=09=09/*=0A+=09=09=09=09= =09=20*=20Prevent=20error=20when=20processing=20duplicate=20objects,=20= and=0A+=09=09=09=09=09=20*=20make=20this=20new=20entry=20visible=20to=20= our=20later=20selves=20which=0A+=09=09=09=09=09=20*=20will=20need=20to=20= update=20the=20Acl.=0A+=09=09=09=09=09=20*/=0A+=09=09=09=09=09= CommandCounterIncrement();=0A+=09=09=09=09}=0A+=0A+=09=09=09=09objects=20= =3D=20lappend_oid(objects,=20settingid);=0A+=09=09=09}=0A+=09=09=09= break;=0A=20=09=09default:=0A=20=09=09=09elog(ERROR,=20"unrecognized=20= GrantStmt.objtype:=20%d",=0A=20=09=09=09=09=20(int)=20objtype);=0A@@=20= -1494,6=20+1538,9=20@@=20RemoveRoleFromObjectACL(Oid=20roleid,=20Oid=20= classid,=20Oid=20objid)=0A=20=09=09=09case=20= ForeignDataWrapperRelationId:=0A=20=09=09=09=09istmt.objtype=20=3D=20= OBJECT_FDW;=0A=20=09=09=09=09break;=0A+=09=09=09case=20= SettingAclRelationId:=0A+=09=09=09=09istmt.objtype=20=3D=20= OBJECT_SETTING;=0A+=09=09=09=09break;=0A=20=09=09=09default:=0A=20=09=09=09= =09elog(ERROR,=20"unexpected=20object=20class=20%u",=20classid);=0A=20=09= =09=09=09break;=0A@@=20-3225,6=20+3272,128=20@@=20= ExecGrant_Type(InternalGrant=20*istmt)=0A=20=09table_close(relation,=20= RowExclusiveLock);=0A=20}=0A=20=0A+static=20void=0A= +ExecGrant_Setting(InternalGrant=20*istmt)=0A+{=0A+=09Relation=09= relation;=0A+=09ListCell=20=20=20*cell;=0A+=0A+=09if=20(istmt->all_privs=20= &&=20istmt->privileges=20=3D=3D=20ACL_NO_RIGHTS)=0A+=09=09= istmt->privileges=20=3D=20ACL_ALL_RIGHTS_SETTING;=0A+=0A+=09relation=20=3D= =20table_open(SettingAclRelationId,=20RowExclusiveLock);=0A+=0A+=09= foreach(cell,=20istmt->objects)=0A+=09{=0A+=09=09Oid=09=09=09settingId=20= =3D=20lfirst_oid(cell);=0A+=09=09Form_pg_setting_acl=20= pg_setting_acl_tuple;=0A+=09=09Datum=09=09aclDatum;=0A+=09=09bool=09=09= isNull;=0A+=09=09AclMode=09=09avail_goptions;=0A+=09=09AclMode=09=09= this_privileges;=0A+=09=09Acl=09=09=20=20=20*old_acl;=0A+=09=09Acl=09=09=20= =20=20*new_acl;=0A+=09=09Oid=09=09=09grantorId;=0A+=09=09HeapTuple=09= tuple;=0A+=09=09HeapTuple=09newtuple;=0A+=09=09Datum=09=09= values[Natts_pg_setting_acl];=0A+=09=09bool=09=09= nulls[Natts_pg_setting_acl];=0A+=09=09bool=09=09= replaces[Natts_pg_setting_acl];=0A+=09=09int=09=09=09noldmembers;=0A+=09=09= int=09=09=09nnewmembers;=0A+=09=09Oid=09=09=20=20=20*oldmembers;=0A+=09=09= Oid=09=09=20=20=20*newmembers;=0A+=0A+=09=09tuple=20=3D=20= SearchSysCache1(SETTINGOID,=20ObjectIdGetDatum(settingId));=0A+=09=09if=20= (!HeapTupleIsValid(tuple))=0A+=09=09=09elog(ERROR,=20"cache=20lookup=20= failed=20for=20setting=20%u",=20settingId);=0A+=0A+=09=09= pg_setting_acl_tuple=20=3D=20(Form_pg_setting_acl)=20GETSTRUCT(tuple);=0A= +=0A+=09=09/*=0A+=09=09=20*=20Get=20owner=20ID=20and=20working=20copy=20= of=20existing=20ACL.=20If=20there's=20no=20ACL,=0A+=09=09=20*=20= substitute=20the=20proper=20default.=0A+=09=09=20*/=0A+=09=09aclDatum=20= =3D=20SysCacheGetAttr(SETTINGNAME,=20tuple,=20= Anum_pg_setting_acl_setacl,=0A+=09=09=09=09=09=09=09=09=20=20=20= &isNull);=0A+=09=09if=20(isNull)=0A+=09=09{=0A+=09=09=09old_acl=20=3D=20= acldefault(OBJECT_SETTING,=20InvalidOid);=0A+=09=09=09/*=20There=20are=20= no=20old=20member=20roles=20according=20to=20the=20catalogs=20*/=0A+=09=09= =09noldmembers=20=3D=200;=0A+=09=09=09oldmembers=20=3D=20NULL;=0A+=09=09= }=0A+=09=09else=0A+=09=09{=0A+=09=09=09old_acl=20=3D=20= DatumGetAclPCopy(aclDatum);=0A+=09=09=09/*=20Get=20the=20roles=20= mentioned=20in=20the=20existing=20ACL=20*/=0A+=09=09=09noldmembers=20=3D=20= aclmembers(old_acl,=20&oldmembers);=0A+=09=09}=0A+=0A+=09=09/*=20= Determine=20ID=20to=20do=20the=20grant=20as,=20and=20available=20grant=20= options=20*/=0A+=09=09select_best_grantor(GetUserId(),=20= istmt->privileges,=0A+=09=09=09=09=09=09=09old_acl,=20GetUserId(),=0A+=09= =09=09=09=09=09=09&grantorId,=20&avail_goptions);=0A+=0A+=09=09/*=0A+=09=09= =20*=20Restrict=20the=20privileges=20to=20what=20we=20can=20actually=20= grant,=20and=20emit=20the=0A+=09=09=20*=20standards-mandated=20warning=20= and=20error=20messages.=0A+=09=09=20*/=0A+=09=09this_privileges=20=3D=0A= +=09=09=09restrict_and_check_grant(istmt->is_grant,=20avail_goptions,=0A= +=09=09=09=09=09=09=09=09=09=20istmt->all_privs,=20istmt->privileges,=0A= +=09=09=09=09=09=09=09=09=09=20settingId,=20grantorId,=20OBJECT_SETTING,=0A= +=09=09=09=09=09=09=09=09=09=20= text_to_cstring(&pg_setting_acl_tuple->setting),=0A+=09=09=09=09=09=09=09= =09=09=200,=20NULL);=0A+=0A+=09=09/*=0A+=09=09=20*=20Generate=20new=20= ACL.=0A+=09=09=20*/=0A+=09=09new_acl=20=3D=20= merge_acl_with_grant(old_acl,=20istmt->is_grant,=0A+=09=09=09=09=09=09=09= =09=09=20=20=20istmt->grant_option,=20istmt->behavior,=0A+=09=09=09=09=09= =09=09=09=09=20=20=20istmt->grantees,=20this_privileges,=0A+=09=09=09=09=09= =09=09=09=09=20=20=20grantorId,=20InvalidOid);=0A+=0A+=09=09/*=0A+=09=09=20= *=20We=20need=20the=20members=20of=20both=20old=20and=20new=20ACLs=20so=20= we=20can=20correct=20the=0A+=09=09=20*=20shared=20dependency=20= information.=0A+=09=09=20*/=0A+=09=09nnewmembers=20=3D=20= aclmembers(new_acl,=20&newmembers);=0A+=0A+=09=09/*=20finished=20= building=20new=20ACL=20value,=20now=20insert=20it=20*/=0A+=09=09= MemSet(values,=200,=20sizeof(values));=0A+=09=09MemSet(nulls,=20false,=20= sizeof(nulls));=0A+=09=09MemSet(replaces,=20false,=20sizeof(replaces));=0A= +=0A+=09=09replaces[Anum_pg_setting_acl_setacl=20-=201]=20=3D=20true;=0A= +=09=09values[Anum_pg_setting_acl_setacl=20-=201]=20=3D=20= PointerGetDatum(new_acl);=0A+=0A+=09=09newtuple=20=3D=20= heap_modify_tuple(tuple,=20RelationGetDescr(relation),=20values,=0A+=09=09= =09=09=09=09=09=09=09=20nulls,=20replaces);=0A+=0A+=09=09= CatalogTupleUpdate(relation,=20&newtuple->t_self,=20newtuple);=0A+=0A+=09= =09/*=20Update=20initial=20privileges=20for=20extensions=20*/=0A+=09=09= recordExtensionInitPriv(settingId,=20SettingAclRelationId,=200,=20= new_acl);=0A+=0A+=09=09/*=20Update=20the=20shared=20dependency=20ACL=20= info=20*/=0A+=09=09updateAclDependencies(SettingAclRelationId,=0A+=09=09=09= =09=09=09=09=20=20pg_setting_acl_tuple->oid,=200,=0A+=09=09=09=09=09=09=09= =20=20InvalidOid,=0A+=09=09=09=09=09=09=09=20=20noldmembers,=20= oldmembers,=0A+=09=09=09=09=09=09=09=20=20nnewmembers,=20newmembers);=0A= +=0A+=09=09ReleaseSysCache(tuple);=0A+=0A+=09=09pfree(new_acl);=0A+=0A+=09= =09/*=20prevent=20error=20when=20processing=20duplicate=20objects=20*/=0A= +=09=09CommandCounterIncrement();=0A+=09}=0A+=0A+=09= table_close(relation,=20RowExclusiveLock);=0A+}=0A+=0A=20=0A=20static=20= AclMode=0A=20string_to_privilege(const=20char=20*privname)=0A@@=20= -3255,6=20+3424,10=20@@=20string_to_privilege(const=20char=20*privname)=0A= =20=09=09return=20ACL_CREATE_TEMP;=0A=20=09if=20(strcmp(privname,=20= "connect")=20=3D=3D=200)=0A=20=09=09return=20ACL_CONNECT;=0A+=09if=20= (strcmp(privname,=20"set=20value")=20=3D=3D=200)=0A+=09=09return=20= ACL_SET_VALUE;=0A+=09if=20(strcmp(privname,=20"alter=20system")=20=3D=3D=20= 0)=0A+=09=09return=20ACL_ALTER_SYSTEM;=0A=20=09if=20(strcmp(privname,=20= "rule")=20=3D=3D=200)=0A=20=09=09return=200;=09=09=09=09/*=20ignore=20= old=20RULE=20privileges=20*/=0A=20=09ereport(ERROR,=0A@@=20-3292,6=20= +3465,10=20@@=20privilege_to_string(AclMode=20privilege)=0A=20=09=09=09= return=20"TEMP";=0A=20=09=09case=20ACL_CONNECT:=0A=20=09=09=09return=20= "CONNECT";=0A+=09=09case=20ACL_SET_VALUE:=0A+=09=09=09return=20"SET=20= VALUE";=0A+=09=09case=20ACL_ALTER_SYSTEM:=0A+=09=09=09return=20"ALTER=20= SYSTEM";=0A=20=09=09default:=0A=20=09=09=09elog(ERROR,=20"unrecognized=20= privilege:=20%d",=20(int)=20privilege);=0A=20=09}=0A@@=20-3328,6=20= +3505,13=20@@=20aclcheck_error(AclResult=20aclerr,=20ObjectType=20= objtype,=0A=20=09=09=09=09=09case=20OBJECT_COLUMN:=0A=20=09=09=09=09=09=09= msg=20=3D=20gettext_noop("permission=20denied=20for=20column=20%s");=0A=20= =09=09=09=09=09=09break;=0A+=09=09=09=09=09case=20OBJECT_SETTING:=0A+=09=09= =09=09=09=09/*=0A+=09=09=09=09=09=09=20*=20Quote=20the=20object=20name=20= for=20backward=20compatibility=0A+=09=09=09=09=09=09=20*=20with=20= behavior=20before=20SET=20was=20handled=20here.=0A+=09=09=09=09=09=09=20= */=0A+=09=09=09=09=09=09msg=20=3D=20gettext_noop("permission=20denied=20= to=20set=20parameter=20\"%s\"");=0A+=09=09=09=09=09=09break;=0A=20=09=09=09= =09=09case=20OBJECT_CONVERSION:=0A=20=09=09=09=09=09=09msg=20=3D=20= gettext_noop("permission=20denied=20for=20conversion=20%s");=0A=20=09=09=09= =09=09=09break;=0A@@=20-3564,6=20+3748,7=20@@=20aclcheck_error(AclResult=20= aclerr,=20ObjectType=20objtype,=0A=20=09=09=09=09=09case=20= OBJECT_AMPROC:=0A=20=09=09=09=09=09case=20OBJECT_ATTRIBUTE:=0A=20=09=09=09= =09=09case=20OBJECT_CAST:=0A+=09=09=09=09=09case=20OBJECT_SETTING:=0A=20=09= =09=09=09=09case=20OBJECT_DEFAULT:=0A=20=09=09=09=09=09case=20= OBJECT_DEFACL:=0A=20=09=09=09=09=09case=20OBJECT_DOMCONSTRAINT:=0A@@=20= -4000,6=20+4185,59=20@@=20pg_database_aclmask(Oid=20db_oid,=20Oid=20= roleid,=0A=20=09return=20result;=0A=20}=0A=20=0A+/*=0A+=20*=20Exported=20= routine=20for=20examining=20a=20user's=20privileges=20for=20a=20= configuration=0A+=20*=20parameter=20(GUC)=0A+=20*/=0A+AclMode=0A= +pg_setting_acl_aclmask(Oid=20config_oid,=20Oid=20roleid,=0A+=09=09=09=09= =09=09AclMode=20mask,=20AclMaskHow=20how)=0A+{=0A+=09AclMode=09=09= result;=0A+=09HeapTuple=09tuple;=0A+=09Datum=09=09aclDatum;=0A+=09bool=09= =09isNull;=0A+=09Acl=09=09=20=20=20*acl;=0A+=0A+=09/*=20Superusers=20= bypass=20all=20permission=20checking.=20*/=0A+=09if=20= (superuser_arg(roleid))=0A+=09=09return=20mask;=0A+=0A+=09/*=0A+=09=20*=20= Get=20the=20setting's=20ACL=20from=20pg_setting_acl=0A+=09=20*/=0A+=09= tuple=20=3D=20SearchSysCache1(SETTINGOID,=20= ObjectIdGetDatum(config_oid));=0A+=09if=20(!HeapTupleIsValid(tuple))=0A+=09= =09ereport(ERROR,=0A+=09=09=09=09(errcode(ERRCODE_UNDEFINED_DATABASE),=0A= +=09=09=09=09=20errmsg("setting=20with=20OID=20%u=20does=20not=20exist",=0A= +=09=09=09=09=09=09config_oid)));=0A+=0A+=09aclDatum=20=3D=20= SysCacheGetAttr(SETTINGOID,=20tuple,=20Anum_pg_setting_acl_setacl,=0A+=09= =09=09=09=09=09=09=20=20=20&isNull);=0A+=09if=20(isNull)=0A+=09{=0A+=09=09= /*=20No=20ACL,=20so=20build=20default=20ACL=20*/=0A+=09=09acl=20=3D=20= acldefault(OBJECT_SETTING,=20InvalidOid);=0A+=09=09aclDatum=20=3D=20= (Datum)=200;=0A+=09}=0A+=09else=0A+=09{=0A+=09=09/*=20detoast=20ACL=20if=20= necessary=20*/=0A+=09=09acl=20=3D=20DatumGetAclP(aclDatum);=0A+=09}=0A+=0A= +=09result=20=3D=20aclmask(acl,=20roleid,=20InvalidOid,=20mask,=20how);=0A= +=0A+=09/*=20if=20we=20have=20a=20detoasted=20copy,=20free=20it=20*/=0A+=09= if=20(acl=20&&=20(Pointer)=20acl=20!=3D=20DatumGetPointer(aclDatum))=0A+=09= =09pfree(acl);=0A+=0A+=09ReleaseSysCache(tuple);=0A+=0A+=09return=20= result;=0A+}=0A+=0A=20/*=0A=20=20*=20Exported=20routine=20for=20= examining=20a=20user's=20privileges=20for=20a=20function=0A=20=20*/=0A@@=20= -4713,6=20+4951,19=20@@=20pg_database_aclcheck(Oid=20db_oid,=20Oid=20= roleid,=20AclMode=20mode)=0A=20=09=09return=20ACLCHECK_NO_PRIV;=0A=20}=0A= =20=0A+/*=0A+=20*=20Exported=20routine=20for=20checking=20a=20user's=20= access=20privileges=20to=20a=20configuration=0A+=20*=20parameter=0A+=20= */=0A+AclResult=0A+pg_setting_acl_aclcheck(Oid=20config_oid,=20Oid=20= roleid,=20AclMode=20mode)=0A+{=0A+=09if=20= (pg_setting_acl_aclmask(config_oid,=20roleid,=20mode,=20ACLMASK_ANY)=20= !=3D=200)=0A+=09=09return=20ACLCHECK_OK;=0A+=09else=0A+=09=09return=20= ACLCHECK_NO_PRIV;=0A+}=0A+=0A=20/*=0A=20=20*=20Exported=20routine=20for=20= checking=20a=20user's=20access=20privileges=20to=20a=20function=0A=20=20= */=0Adiff=20--git=20a/src/backend/catalog/catalog.c=20= b/src/backend/catalog/catalog.c=0Aindex=20aa7d4d5456..a069c2fb39=20= 100644=0A---=20a/src/backend/catalog/catalog.c=0A+++=20= b/src/backend/catalog/catalog.c=0A@@=20-34,6=20+34,7=20@@=0A=20#include=20= "catalog/pg_largeobject.h"=0A=20#include=20"catalog/pg_namespace.h"=0A=20= #include=20"catalog/pg_replication_origin.h"=0A+#include=20= "catalog/pg_setting_acl.h"=0A=20#include=20"catalog/pg_shdepend.h"=0A=20= #include=20"catalog/pg_shdescription.h"=0A=20#include=20= "catalog/pg_shseclabel.h"=0A@@=20-246,6=20+247,7=20@@=20= IsSharedRelation(Oid=20relationId)=0A=20=09/*=20These=20are=20the=20= shared=20catalogs=20(look=20for=20BKI_SHARED_RELATION)=20*/=0A=20=09if=20= (relationId=20=3D=3D=20AuthIdRelationId=20||=0A=20=09=09relationId=20=3D=3D= =20AuthMemRelationId=20||=0A+=09=09relationId=20=3D=3D=20= SettingAclRelationId=20||=0A=20=09=09relationId=20=3D=3D=20= DatabaseRelationId=20||=0A=20=09=09relationId=20=3D=3D=20= SharedDescriptionRelationId=20||=0A=20=09=09relationId=20=3D=3D=20= SharedDependRelationId=20||=0A@@=20-260,6=20+262,8=20@@=20= IsSharedRelation(Oid=20relationId)=0A=20=09=09relationId=20=3D=3D=20= AuthIdOidIndexId=20||=0A=20=09=09relationId=20=3D=3D=20= AuthMemRoleMemIndexId=20||=0A=20=09=09relationId=20=3D=3D=20= AuthMemMemRoleIndexId=20||=0A+=09=09relationId=20=3D=3D=20= SettingAclSettingIndexId=20||=0A+=09=09relationId=20=3D=3D=20= SettingAclOidIndexId=20||=0A=20=09=09relationId=20=3D=3D=20= DatabaseNameIndexId=20||=0A=20=09=09relationId=20=3D=3D=20= DatabaseOidIndexId=20||=0A=20=09=09relationId=20=3D=3D=20= SharedDescriptionObjIndexId=20||=0A@@=20-277,6=20+281,8=20@@=20= IsSharedRelation(Oid=20relationId)=0A=20=09/*=20These=20are=20their=20= toast=20tables=20and=20toast=20indexes=20*/=0A=20=09if=20(relationId=20= =3D=3D=20PgAuthidToastTable=20||=0A=20=09=09relationId=20=3D=3D=20= PgAuthidToastIndex=20||=0A+=09=09relationId=20=3D=3D=20= PgSettingAclToastTable=20||=0A+=09=09relationId=20=3D=3D=20= PgSettingAclToastIndex=20||=0A=20=09=09relationId=20=3D=3D=20= PgDatabaseToastTable=20||=0A=20=09=09relationId=20=3D=3D=20= PgDatabaseToastIndex=20||=0A=20=09=09relationId=20=3D=3D=20= PgDbRoleSettingToastTable=20||=0Adiff=20--git=20= a/src/backend/catalog/dependency.c=20b/src/backend/catalog/dependency.c=0A= index=20fe9c714257..57174b7c19=20100644=0A---=20= a/src/backend/catalog/dependency.c=0A+++=20= b/src/backend/catalog/dependency.c=0A@@=20-52,6=20+52,7=20@@=0A=20= #include=20"catalog/pg_publication_namespace.h"=0A=20#include=20= "catalog/pg_publication_rel.h"=0A=20#include=20"catalog/pg_rewrite.h"=0A= +#include=20"catalog/pg_setting_acl.h"=0A=20#include=20= "catalog/pg_statistic_ext.h"=0A=20#include=20"catalog/pg_subscription.h"=0A= =20#include=20"catalog/pg_tablespace.h"=0A@@=20-150,6=20+151,7=20@@=20= static=20const=20Oid=20object_classes[]=20=3D=20{=0A=20=09= TypeRelationId,=09=09=09=09/*=20OCLASS_TYPE=20*/=0A=20=09CastRelationId,=09= =09=09=09/*=20OCLASS_CAST=20*/=0A=20=09CollationRelationId,=09=09/*=20= OCLASS_COLLATION=20*/=0A+=09SettingAclRelationId,=09=09/*=20= OCLASS_SETTING=20*/=0A=20=09ConstraintRelationId,=09=09/*=20= OCLASS_CONSTRAINT=20*/=0A=20=09ConversionRelationId,=09=09/*=20= OCLASS_CONVERSION=20*/=0A=20=09AttrDefaultRelationId,=09=09/*=20= OCLASS_DEFAULT=20*/=0A@@=20-1504,6=20+1506,7=20@@=20doDeletion(const=20= ObjectAddress=20*object,=20int=20flags)=0A=20=09=09=09/*=0A=20=09=09=09=20= *=20These=20global=20object=20types=20are=20not=20supported=20here.=0A=20= =09=09=09=20*/=0A+=09=09case=20OCLASS_SETTING:=0A=20=09=09case=20= OCLASS_ROLE:=0A=20=09=09case=20OCLASS_DATABASE:=0A=20=09=09case=20= OCLASS_TBLSPACE:=0A@@=20-2778,6=20+2781,9=20@@=20getObjectClass(const=20= ObjectAddress=20*object)=0A=20=09=09case=20CollationRelationId:=0A=20=09=09= =09return=20OCLASS_COLLATION;=0A=20=0A+=09=09case=20= SettingAclRelationId:=0A+=09=09=09return=20OCLASS_SETTING;=0A+=0A=20=09=09= case=20ConstraintRelationId:=0A=20=09=09=09return=20OCLASS_CONSTRAINT;=0A= =20=0Adiff=20--git=20a/src/backend/catalog/objectaddress.c=20= b/src/backend/catalog/objectaddress.c=0Aindex=202bae3fbb17..682ae5e390=20= 100644=0A---=20a/src/backend/catalog/objectaddress.c=0A+++=20= b/src/backend/catalog/objectaddress.c=0A@@=20-51,6=20+51,7=20@@=0A=20= #include=20"catalog/pg_publication_namespace.h"=0A=20#include=20= "catalog/pg_publication_rel.h"=0A=20#include=20"catalog/pg_rewrite.h"=0A= +#include=20"catalog/pg_setting_acl.h"=0A=20#include=20= "catalog/pg_statistic_ext.h"=0A=20#include=20"catalog/pg_subscription.h"=0A= =20#include=20"catalog/pg_tablespace.h"=0A@@=20-2309,6=20+2310,7=20@@=20= pg_get_object_address(PG_FUNCTION_ARGS)=0A=20=09=09case=20OBJECT_COLUMN:=0A= =20=09=09case=20OBJECT_ATTRIBUTE:=0A=20=09=09case=20OBJECT_COLLATION:=0A= +=09=09case=20OBJECT_SETTING:=0A=20=09=09case=20OBJECT_CONVERSION:=0A=20=09= =09case=20OBJECT_STATISTIC_EXT:=0A=20=09=09case=20OBJECT_TSPARSER:=0A@@=20= -3510,6=20+3512,22=20@@=20getObjectDescription(const=20ObjectAddress=20= *object,=20bool=20missing_ok)=0A=20=09=09=09=09break;=0A=20=09=09=09}=0A=20= =0A+=09=09case=20OCLASS_SETTING:=0A+=09=09=09{=0A+=09=09=09=09char=09=20=20= =20*setting;=0A+=0A+=09=09=09=09setting=20=3D=20= get_setting_name(object->objectId);=0A+=09=09=09=09if=20(!setting)=0A+=09= =09=09=09{=0A+=09=09=09=09=09if=20(!missing_ok)=0A+=09=09=09=09=09=09= elog(ERROR,=20"cache=20lookup=20failed=20for=20setting=20%u",=0A+=09=09=09= =09=09=09=09=20object->objectId);=0A+=09=09=09=09=09break;=0A+=09=09=09=09= }=0A+=09=09=09=09appendStringInfo(&buffer,=20_("setting=20%s"),=20= setting);=0A+=09=09=09=09break;=0A+=09=09=09}=0A+=0A=20=09=09case=20= OCLASS_SCHEMA:=0A=20=09=09=09{=0A=20=09=09=09=09char=09=20=20=20= *nspname;=0A@@=20-4473,6=20+4491,10=20@@=20= getObjectTypeDescription(const=20ObjectAddress=20*object,=20bool=20= missing_ok)=0A=20=09=09=09appendStringInfoString(&buffer,=20= "collation");=0A=20=09=09=09break;=0A=20=0A+=09=09case=20OCLASS_SETTING:=0A= +=09=09=09appendStringInfoString(&buffer,=20"setting");=0A+=09=09=09= break;=0A+=0A=20=09=09case=20OCLASS_CONSTRAINT:=0A=20=09=09=09= getConstraintTypeDescription(&buffer,=20object->objectId,=0A=20=09=09=09=09= =09=09=09=09=09=09=20missing_ok);=0A@@=20-4977,6=20+4999,30=20@@=20= getObjectIdentityParts(const=20ObjectAddress=20*object,=0A=20=09=09=09=09= break;=0A=20=09=09=09}=0A=20=0A+=09=09case=20OCLASS_SETTING:=0A+=09=09=09= {=0A+=09=09=09=09HeapTuple=09configTup;=0A+=09=09=09=09= Form_pg_setting_acl=20configForm;=0A+=09=09=09=09char=09=20=20=20= *namestr;=0A+=0A+=09=09=09=09configTup=20=3D=20= SearchSysCache1(SETTINGOID,=0A+=09=09=09=09=09=09=09=09=09=09=09= ObjectIdGetDatum(object->objectId));=0A+=09=09=09=09if=20= (!HeapTupleIsValid(configTup))=0A+=09=09=09=09{=0A+=09=09=09=09=09if=20= (!missing_ok)=0A+=09=09=09=09=09=09elog(ERROR,=20"cache=20lookup=20= failed=20for=20setting=20%u",=0A+=09=09=09=09=09=09=09=20= object->objectId);=0A+=09=09=09=09=09break;=0A+=09=09=09=09}=0A+=09=09=09= =09configForm=20=3D=20(Form_pg_setting_acl)=20GETSTRUCT(configTup);=0A+=09= =09=09=09namestr=20=3D=20text_to_cstring(&configForm->setting);=0A+=09=09= =09=09appendStringInfoString(&buffer,=20namestr);=0A+=09=09=09=09if=20= (objname)=0A+=09=09=09=09=09*objname=20=3D=20list_make1(namestr);=0A+=09=09= =09=09ReleaseSysCache(configTup);=0A+=09=09=09=09break;=0A+=09=09=09}=0A= +=0A=20=09=09case=20OCLASS_CONVERSION:=0A=20=09=09=09{=0A=20=09=09=09=09= HeapTuple=09conTup;=0Adiff=20--git=20= a/src/backend/catalog/pg_setting_acl.c=20= b/src/backend/catalog/pg_setting_acl.c=0Anew=20file=20mode=20100644=0A= index=200000000000..3c6594da03=0A---=20/dev/null=0A+++=20= b/src/backend/catalog/pg_setting_acl.c=0A@@=20-0,0=20+1,122=20@@=0A= +/*-----------------------------------------------------------------------= --=0A+=20*=0A+=20*=20pg_setting_acl.c=0A+=20*=09=20=20routines=20to=20= support=20manipulation=20of=20the=20pg_setting_acl=20relation=0A+=20*=0A= +=20*=20Portions=20Copyright=20(c)=201996-2021,=20PostgreSQL=20Global=20= Development=20Group=0A+=20*=20Portions=20Copyright=20(c)=201994,=20= Regents=20of=20the=20University=20of=20California=0A+=20*=0A+=20*=0A+=20= *=20IDENTIFICATION=0A+=20*=09=20=20src/backend/catalog/pg_setting_acl.c=0A= +=20*=0A+=20= *-------------------------------------------------------------------------= =0A+=20*/=0A+#include=20"postgres.h"=0A+=0A+#include=20"access/genam.h"=0A= +#include=20"access/heapam.h"=0A+#include=20"access/htup_details.h"=0A= +#include=20"access/sysattr.h"=0A+#include=20"access/table.h"=0A= +#include=20"access/tableam.h"=0A+#include=20"catalog/catalog.h"=0A= +#include=20"catalog/dependency.h"=0A+#include=20"catalog/indexing.h"=0A= +#include=20"catalog/objectaccess.h"=0A+#include=20= "catalog/pg_namespace.h"=0A+#include=20"catalog/pg_setting_acl.h"=0A= +#include=20"mb/pg_wchar.h"=0A+#include=20"utils/builtins.h"=0A+#include=20= "utils/fmgroids.h"=0A+#include=20"utils/guc.h"=0A+#include=20= "utils/pg_locale.h"=0A+#include=20"utils/rel.h"=0A+#include=20= "utils/syscache.h"=0A+=0A+=0A+/*=0A+=20*=20SettingAclCreate=0A+=20*=0A+=20= *=20Add=20a=20new=20tuple=20to=20pg_setting_acl.=0A+=20*=0A+=20*=20= setting:=20the=20setting=20name=20to=20create.=0A+=20*=20if_not_exists:=20= if=20true,=20don't=20fail=20on=20duplicate=20name,=20but=20rather=20= return=0A+=20*=20the=20existing=20entry's=20Oid.=0A+=20*/=0A+Oid=0A= +SettingAclCreate(const=20char=20*setting,=20bool=20if_not_exists)=0A+{=0A= +=09Relation=09rel;=0A+=09TupleDesc=09tupDesc;=0A+=09HeapTuple=09tuple;=0A= +=09Datum=09=09values[Natts_pg_setting_acl];=0A+=09bool=09=09= nulls[Natts_pg_setting_acl];=0A+=09Oid=09=09=09settingId;=0A+=09const=20= char=20*canonical;=0A+=0A+=09/*=0A+=09=20*=20Check=20whether=20the=20= setting=20(by=20the=20given=20name=20or=20alias)=0A+=09=20*=20already=20= exists.=0A+=09=20*/=0A+=09settingId=20=3D=20get_setting_oid(setting,=20= true);=0A+=09if=20(OidIsValid(settingId))=0A+=09{=0A+=09=09if=20= (if_not_exists)=0A+=09=09=09return=20settingId;=0A+=09=09ereport(ERROR,=0A= +=09=09=09=09(errcode(ERRCODE_DUPLICATE_OBJECT),=0A+=09=09=09=09=20= errmsg("setting=20\"%s\"=20already=20exists",=0A+=09=09=09=09=09=09= setting)));=0A+=09}=0A+=0A+=09/*=0A+=09=20*=20We=20must=20not=20require=20= the=20setting=20to=20be=20in=20the=20list=20of=20existent=20GUCs,=0A+=09=20= *=20as=20we=20may=20be=20called=20at=20different=20points=20during=20= upgrades=20or=20the=0A+=09=20*=20installation=20or=20removal=20of=20= extensions.=20=20Instead,=20perform=20a=20basic=20sanity=0A+=09=20*=20= check=20of=20the=20setting,=20and=20translate=20old=20forms=20of=20known=20= names=20to=20their=0A+=09=20*=20canonical=20forms.=0A+=09=20*=0A+=09=20*=20= If=20you=20deprecate=20a=20configuration=20name=20in=20favor=20of=20a=20= new=20spelling,=20be=0A+=09=20*=20sure=20to=20consider=20whether=20to=20= also=20upgrade=20pg_setting_acl=20entries.=0A+=09=20*/=0A+=09if=20= (!valid_variable_name(setting,=20NULL))=0A+=09=09ereport(ERROR,=0A+=09=09= =09=09(errcode(ERRCODE_INVALID_NAME),=0A+=09=09=09=09=20errmsg("invalid=20= setting=20name=20\"%s\"",=0A+=09=09=09=09=09=09setting)));=0A+=09= canonical=20=3D=20GetConfigOptionCanonicalName(setting);=0A+=09if=20= (!canonical)=0A+=09=09canonical=20=3D=20setting;=0A+=0A+=09/*=0A+=09=20*=20= Create=20and=20insert=20a=20new=20record,=20starting=20with=20a=20blank=20= Acl.=0A+=09=20*=0A+=09=20*=20We=20don't=20take=20a=20strong=20enough=20= lock=20to=20prevent=20concurrent=20insertions,=0A+=09=20*=20relying=20= instead=20on=20the=20unique=20index.=0A+=09=20*/=0A+=09rel=20=3D=20= table_open(SettingAclRelationId,=20RowExclusiveLock);=0A+=09tupDesc=20=3D=20= RelationGetDescr(rel);=0A+=09MemSet(values,=200,=20sizeof(values));=0A+=09= MemSet(nulls,=20false,=20sizeof(nulls));=0A+=09= values[Anum_pg_setting_acl_setting=20-=201]=20=3D=0A+=09=09= DirectFunctionCall1(textin,=20CStringGetDatum(canonical));=0A+=09= settingId=20=3D=20GetNewOidWithIndex(rel,=0A+=09=09=09=09=09=09=09=09=09=20= =20=20SettingAclOidIndexId,=0A+=09=09=09=09=09=09=09=09=09=20=20=20= Anum_pg_setting_acl_oid);=0A+=09values[Anum_pg_setting_acl_oid=20-=201]=20= =3D=20ObjectIdGetDatum(settingId);=0A+=09= nulls[Anum_pg_setting_acl_setacl=20-=201]=20=3D=20true;=0A+=09tuple=20=3D=20= heap_form_tuple(tupDesc,=20values,=20nulls);=0A+=09= CatalogTupleInsert(rel,=20tuple);=0A+=0A+=09/*=20Post=20creation=20hook=20= for=20new=20setting=20*/=0A+=09= InvokeObjectPostCreateHook(SettingAclRelationId,=20settingId,=200);=0A+=0A= +=09/*=0A+=09=20*=20Close=20pg_setting_acl,=20but=20keep=20lock=20till=20= commit.=0A+=09=20*/=0A+=09heap_freetuple(tuple);=0A+=09table_close(rel,=20= NoLock);=0A+=0A+=09return=20settingId;=0A+}=0Adiff=20--git=20= a/src/backend/catalog/setting_privileges.sql=20= b/src/backend/catalog/setting_privileges.sql=0Anew=20file=20mode=20= 100644=0Aindex=200000000000..b788ebee7f=0A---=20/dev/null=0A+++=20= b/src/backend/catalog/setting_privileges.sql=0A@@=20-0,0=20+1,62=20@@=0A= +/*=0A+=20*=20PostgreSQL=20User=20SET=20variables=0A+=20*=0A+=20*=20= Copyright=20(c)=202021,=20PostgreSQL=20Global=20Development=20Group=0A+=20= *=0A+=20*=20src/backend/catalog/setting_privileges.sql=0A+=20*=0A+=20*=20= Note:=20this=20file=20is=20read=20in=20single-user=20-j=20mode,=20which=20= means=20that=20the=0A+=20*=20command=20terminator=20is=20= semicolon-newline-newline;=20whenever=20the=20backend=0A+=20*=20sees=20= that,=20it=20stops=20and=20executes=20what=20it's=20got.=20=20If=20you=20= write=20a=20lot=20of=0A+=20*=20statements=20without=20empty=20lines=20= between,=20they'll=20all=20get=20quoted=20to=20you=0A+=20*=20in=20any=20= error=20message=20about=20one=20of=20them,=20so=20don't=20do=20that.=20=20= Also,=20you=0A+=20*=20cannot=20write=20a=20semicolon=20immediately=20= followed=20by=20an=20empty=20line=20in=20a=0A+=20*=20string=20literal=20= (including=20a=20function=20body!)=20or=20a=20multiline=20comment.=0A+=20= */=0A+=0A+GRANT=20SET=20VALUE=20ON=0A+=09enable_seqscan,=20= enable_indexscan,=20enable_indexonlyscan,=20enable_bitmapscan,=0A+=09= enable_tidscan,=20enable_sort,=20enable_incremental_sort,=20= enable_hashagg,=0A+=09enable_material,=20enable_memoize,=20= enable_nestloop,=20enable_mergejoin,=0A+=09enable_hashjoin,=20= enable_gathermerge,=20enable_partitionwise_join,=0A+=09= enable_partitionwise_aggregate,=20enable_parallel_append,=0A+=09= enable_parallel_hash,=20enable_partition_pruning,=20enable_async_append,=20= geqo,=0A+=09exit_on_error,=20debug_print_parse,=20debug_print_rewritten,=20= debug_print_plan,=0A+=09debug_pretty_print,=20trace_notify,=20= transform_null_equals,=0A+=09default_transaction_read_only,=20= transaction_read_only,=0A+=09default_transaction_deferrable,=20= transaction_deferrable,=20row_security,=0A+=09check_function_bodies,=20= array_nulls,=20default_with_oids,=20trace_sort,=0A+=09trace_syncscan,=20= optimize_bounded_sort,=20escape_string_warning,=0A+=09= standard_conforming_strings,=20synchronize_seqscans,=20= quote_all_identifiers,=0A+=09parallel_leader_participation,=20jit,=20= jit_expressions,=20jit_tuple_deforming,=0A+=09default_statistics_target,=20= from_collapse_limit,=20join_collapse_limit,=0A+=09geqo_threshold,=20= geqo_effort,=20geqo_pool_size,=20geqo_generations,=0A+=09temp_buffers,=20= work_mem,=20maintenance_work_mem,=20logical_decoding_work_mem,=0A+=09= vacuum_cost_page_hit,=20vacuum_cost_page_miss,=20vacuum_cost_page_dirty,=0A= +=09vacuum_cost_limit,=20statement_timeout,=20lock_timeout,=0A+=09= idle_in_transaction_session_timeout,=20idle_session_timeout,=0A+=09= vacuum_freeze_min_age,=20vacuum_freeze_table_age,=0A+=09= vacuum_multixact_freeze_min_age,=20vacuum_multixact_freeze_table_age,=0A= +=09vacuum_failsafe_age,=20vacuum_multixact_failsafe_age,=20= wal_skip_threshold,=0A+=09wal_sender_timeout,=20commit_siblings,=20= extra_float_digits,=0A+=09log_parameter_max_length_on_error,=20= effective_io_concurrency,=0A+=09maintenance_io_concurrency,=20= backend_flush_after,=0A+=09max_parallel_maintenance_workers,=20= max_parallel_workers_per_gather,=0A+=09max_parallel_workers,=20= tcp_keepalives_idle,=20tcp_keepalives_interval,=0A+=09= ssl_renegotiation_limit,=20tcp_keepalives_count,=20= gin_fuzzy_search_limit,=0A+=09effective_cache_size,=20= min_parallel_table_scan_size,=0A+=09min_parallel_index_scan_size,=20= gin_pending_list_limit,=20tcp_user_timeout,=0A+=09= client_connection_check_interval,=20seq_page_cost,=20random_page_cost,=0A= +=09cpu_tuple_cost,=20cpu_index_tuple_cost,=20cpu_operator_cost,=0A+=09= parallel_tuple_cost,=20parallel_setup_cost,=20jit_above_cost,=0A+=09= jit_optimize_above_cost,=20jit_inline_above_cost,=20= cursor_tuple_fraction,=0A+=09geqo_selection_bias,=20geqo_seed,=20= hash_mem_multiplier,=20seed,=0A+=09vacuum_cost_delay,=20DateStyle,=20= default_table_access_method,=0A+=09default_tablespace,=20= temp_tablespaces,=20lc_monetary,=20lc_numeric,=20lc_time,=0A+=09= local_preload_libraries,=20search_path,=20role,=20TimeZone,=0A+=09= timezone_abbreviations,=20default_text_search_config,=20= application_name,=0A+=09backslash_quote,=20bytea_output,=20= client_min_messages,=20constraint_exclusion,=0A+=09= default_toast_compression,=20default_transaction_isolation,=0A+=09= transaction_isolation,=20IntervalStyle,=20synchronous_commit,=20= xmlbinary,=0A+=09xmloption,=20force_parallel_mode,=20= password_encryption,=20plan_cache_mode=0A+=09TO=20public;=0Adiff=20--git=20= a/src/backend/catalog/system_views.sql=20= b/src/backend/catalog/system_views.sql=0Aindex=2061b515cdb8..bd772dc9c5=20= 100644=0A---=20a/src/backend/catalog/system_views.sql=0A+++=20= b/src/backend/catalog/system_views.sql=0A@@=20-593,6=20+593,19=20@@=20= CREATE=20RULE=20pg_settings_n=20AS=0A=20=0A=20GRANT=20SELECT,=20UPDATE=20= ON=20pg_settings=20TO=20PUBLIC;=0A=20=0A+CREATE=20VIEW=20= pg_setting_privileges=20AS=0A+=09SELECT=20grantor.rolname=20AS=20= grantor,=0A+=09=09=20=20=20grantee.rolname=20AS=20grantee,=0A+=09=09=20=20= =20set_acl.setting=20AS=20setting,=0A+=09=09=20=20=20acl.privilege_type=20= AS=20privilege_type,=0A+=09=09=20=20=20acl.is_grantable=0A+=09=09FROM=20= pg_catalog.pg_setting_acl=20set_acl,=0A+=09=09LATERAL=20(SELECT=20*=20= FROM=20aclexplode(set_acl.setacl))=20acl=0A+=09=09LEFT=20JOIN=20= pg_catalog.pg_authid=20grantee=20ON=20acl.grantee=20=3D=20grantee.oid=0A= +=09=09LEFT=20JOIN=20pg_catalog.pg_authid=20grantor=20ON=20acl.grantor=20= =3D=20grantor.oid;=0A+=0A+GRANT=20SELECT=20ON=20pg_setting_privileges=20= TO=20PUBLIC;=0A+=0A=20CREATE=20VIEW=20pg_file_settings=20AS=0A=20=20=20=20= SELECT=20*=20FROM=20pg_show_all_file_settings()=20AS=20A;=0A=20=0Adiff=20= --git=20a/src/backend/commands/alter.c=20b/src/backend/commands/alter.c=0A= index=2040044070cf..7da2e62683=20100644=0A---=20= a/src/backend/commands/alter.c=0A+++=20b/src/backend/commands/alter.c=0A= @@=20-639,6=20+639,7=20@@=20AlterObjectNamespace_oid(Oid=20classId,=20= Oid=20objid,=20Oid=20nspOid,=0A=20=09=09=09break;=0A=20=0A=20=09=09case=20= OCLASS_CAST:=0A+=09=09case=20OCLASS_SETTING:=0A=20=09=09case=20= OCLASS_CONSTRAINT:=0A=20=09=09case=20OCLASS_DEFAULT:=0A=20=09=09case=20= OCLASS_LANGUAGE:=0Adiff=20--git=20a/src/backend/commands/dropcmds.c=20= b/src/backend/commands/dropcmds.c=0Aindex=204e545adf95..45bc1c1948=20= 100644=0A---=20a/src/backend/commands/dropcmds.c=0A+++=20= b/src/backend/commands/dropcmds.c=0A@@=20-276,6=20+276,13=20@@=20= does_not_exist_skipping(ObjectType=20objtype,=20Node=20*object)=0A=20=09=09= =09=09name=20=3D=20NameListToString(castNode(List,=20object));=0A=20=09=09= =09}=0A=20=09=09=09break;=0A+=09=09case=20OBJECT_SETTING:=0A+=09=09=09if=20= (!schema_does_not_exist_skipping(castNode(List,=20object),=20&msg,=20= &name))=0A+=09=09=09{=0A+=09=09=09=09msg=20=3D=20gettext_noop("setting=20= \"%s\"=20does=20not=20exist,=20skipping");=0A+=09=09=09=09name=20=3D=20= NameListToString(castNode(List,=20object));=0A+=09=09=09}=0A+=09=09=09= break;=0A=20=09=09case=20OBJECT_CONVERSION:=0A=20=09=09=09if=20= (!schema_does_not_exist_skipping(castNode(List,=20object),=20&msg,=20= &name))=0A=20=09=09=09{=0Adiff=20--git=20= a/src/backend/commands/event_trigger.c=20= b/src/backend/commands/event_trigger.c=0Aindex=20df264329d8..d6df5b3ad9=20= 100644=0A---=20a/src/backend/commands/event_trigger.c=0A+++=20= b/src/backend/commands/event_trigger.c=0A@@=20-937,6=20+937,7=20@@=20= EventTriggerSupportsObjectType(ObjectType=20obtype)=0A=20{=0A=20=09= switch=20(obtype)=0A=20=09{=0A+=09=09case=20OBJECT_SETTING:=0A=20=09=09= case=20OBJECT_DATABASE:=0A=20=09=09case=20OBJECT_TABLESPACE:=0A=20=09=09= case=20OBJECT_ROLE:=0A@@=20-1012,6=20+1013,7=20@@=20= EventTriggerSupportsObjectClass(ObjectClass=20objclass)=0A=20{=0A=20=09= switch=20(objclass)=0A=20=09{=0A+=09=09case=20OCLASS_SETTING:=0A=20=09=09= case=20OCLASS_DATABASE:=0A=20=09=09case=20OCLASS_TBLSPACE:=0A=20=09=09= case=20OCLASS_ROLE:=0A@@=20-2078,6=20+2080,8=20@@=20= stringify_grant_objtype(ObjectType=20objtype)=0A=20=09{=0A=20=09=09case=20= OBJECT_COLUMN:=0A=20=09=09=09return=20"COLUMN";=0A+=09=09case=20= OBJECT_SETTING:=0A+=09=09=09return=20"SETTING";=0A=20=09=09case=20= OBJECT_TABLE:=0A=20=09=09=09return=20"TABLE";=0A=20=09=09case=20= OBJECT_SEQUENCE:=0A@@=20-2161,6=20+2165,8=20@@=20= stringify_adefprivs_objtype(ObjectType=20objtype)=0A=20=09{=0A=20=09=09= case=20OBJECT_COLUMN:=0A=20=09=09=09return=20"COLUMNS";=0A+=09=09case=20= OBJECT_SETTING:=0A+=09=09=09return=20"SETTINGS";=0A=20=09=09case=20= OBJECT_TABLE:=0A=20=09=09=09return=20"TABLES";=0A=20=09=09case=20= OBJECT_SEQUENCE:=0Adiff=20--git=20a/src/backend/commands/seclabel.c=20= b/src/backend/commands/seclabel.c=0Aindex=2053c18628a7..8f6f9bd7a0=20= 100644=0A---=20a/src/backend/commands/seclabel.c=0A+++=20= b/src/backend/commands/seclabel.c=0A@@=20-67,6=20+67,7=20@@=20= SecLabelSupportsObjectType(ObjectType=20objtype)=0A=20=09=09case=20= OBJECT_ATTRIBUTE:=0A=20=09=09case=20OBJECT_CAST:=0A=20=09=09case=20= OBJECT_COLLATION:=0A+=09=09case=20OBJECT_SETTING:=0A=20=09=09case=20= OBJECT_CONVERSION:=0A=20=09=09case=20OBJECT_DEFAULT:=0A=20=09=09case=20= OBJECT_DEFACL:=0Adiff=20--git=20a/src/backend/commands/tablecmds.c=20= b/src/backend/commands/tablecmds.c=0Aindex=2047b29001d5..5672e9d1e4=20= 100644=0A---=20a/src/backend/commands/tablecmds.c=0A+++=20= b/src/backend/commands/tablecmds.c=0A@@=20-12359,6=20+12359,7=20@@=20= ATExecAlterColumnType(AlteredTableInfo=20*tab,=20Relation=20rel,=0A=20=09= =09=09case=20OCLASS_TYPE:=0A=20=09=09=09case=20OCLASS_CAST:=0A=20=09=09=09= case=20OCLASS_COLLATION:=0A+=09=09=09case=20OCLASS_SETTING:=0A=20=09=09=09= case=20OCLASS_CONVERSION:=0A=20=09=09=09case=20OCLASS_LANGUAGE:=0A=20=09=09= =09case=20OCLASS_LARGEOBJECT:=0Adiff=20--git=20= a/src/backend/parser/gram.y=20b/src/backend/parser/gram.y=0Aindex=20= 3d4dd43e47..132b6907c5=20100644=0A---=20a/src/backend/parser/gram.y=0A= +++=20b/src/backend/parser/gram.y=0A@@=20-363,8=20+363,8=20@@=20static=20= Node=20*makeRecursiveViewSelect(char=20*relname,=20List=20*aliases,=20= Node=20*query);=0A=20%type=20=09=09foreign_server_version=20= opt_foreign_server_version=0A=20%type=20=09=09opt_in_database=0A=20=0A= -%type=20=09=09OptSchemaName=0A-%type=20=09OptSchemaEltList=0A= +%type=20=09=09OptSchemaName=20setting_name=0A+%type=20=09= OptSchemaEltList=20setting_target=0A=20=0A=20%type=20=09=09am_type=0A= =20=0A@@=20-402,8=20+402,8=20@@=20static=20Node=20= *makeRecursiveViewSelect(char=20*relname,=20List=20*aliases,=20Node=20= *query);=0A=20%type=20=09=09iso_level=20opt_encoding=0A=20%type=20= =20grantee=0A=20%type=20=09grantee_list=0A-%type=20= =20privilege=0A-%type=20=09privileges=20privilege_list=0A= +%type=20=20privilege=20setting_priv=0A+%type=20=09= privileges=20privilege_list=20setting_priv_list=0A=20%type=20= =20privilege_target=0A=20%type=20=20= function_with_argtypes=20aggregate_with_argtypes=20= operator_with_argtypes=0A=20%type=20=09function_with_argtypes_list=20= aggregate_with_argtypes_list=20operator_with_argtypes_list=0A@@=20-715,7=20= +715,7=20@@=20static=20Node=20*makeRecursiveViewSelect(char=20*relname,=20= List=20*aliases,=20Node=20*query);=0A=20=09ORDER=20ORDINALITY=20OTHERS=20= OUT_P=20OUTER_P=0A=20=09OVER=20OVERLAPS=20OVERLAY=20OVERRIDING=20OWNED=20= OWNER=0A=20=0A-=09PARALLEL=20PARSER=20PARTIAL=20PARTITION=20PASSING=20= PASSWORD=20PLACING=20PLANS=20POLICY=0A+=09PARALLEL=20PARAMETER=20PARSER=20= PARTIAL=20PARTITION=20PASSING=20PASSWORD=20PLACING=20PLANS=20POLICY=0A=20= =09POSITION=20PRECEDING=20PRECISION=20PRESERVE=20PREPARE=20PREPARED=20= PRIMARY=0A=20=09PRIOR=20PRIVILEGES=20PROCEDURAL=20PROCEDURE=20PROCEDURES=20= PROGRAM=20PUBLICATION=0A=20=0A@@=20-6972,6=20+6972,20=20@@=20GrantStmt:=09= GRANT=20privileges=20ON=20privilege_target=20TO=20grantee_list=0A=20=09=09= =09=09=09n->grantor=20=3D=20$8;=0A=20=09=09=09=09=09$$=20=3D=20(Node*)n;=0A= =20=09=09=09=09}=0A+=09=09=09|=20GRANT=20setting_priv_list=20ON=20= setting_target=20TO=20grantee_list=0A+=09=09=09opt_grant_grant_option=20= opt_granted_by=0A+=09=09=09=09{=0A+=09=09=09=09=09GrantStmt=20*n=20=3D=20= makeNode(GrantStmt);=0A+=09=09=09=09=09n->is_grant=20=3D=20true;=0A+=09=09= =09=09=09n->privileges=20=3D=20$2;=0A+=09=09=09=09=09n->targtype=20=3D=20= ACL_TARGET_OBJECT;=0A+=09=09=09=09=09n->objtype=20=3D=20OBJECT_SETTING;=0A= +=09=09=09=09=09n->objects=20=3D=20$4;=0A+=09=09=09=09=09n->grantees=20=3D= =20$6;=0A+=09=09=09=09=09n->grant_option=20=3D=20$7;=0A+=09=09=09=09=09= n->grantor=20=3D=20$8;=0A+=09=09=09=09=09$$=20=3D=20(Node*)n;=0A+=09=09=09= =09}=0A=20=09=09;=0A=20=0A=20RevokeStmt:=0A@@=20-7005,6=20+7019,36=20@@=20= RevokeStmt:=0A=20=09=09=09=09=09n->behavior=20=3D=20$11;=0A=20=09=09=09=09= =09$$=20=3D=20(Node=20*)n;=0A=20=09=09=09=09}=0A+=09=09=09|=20REVOKE=20= setting_priv_list=20ON=20setting_target=20FROM=20grantee_list=0A+=09=09=09= opt_granted_by=20opt_drop_behavior=0A+=09=09=09=09{=0A+=09=09=09=09=09= GrantStmt=20*n=20=3D=20makeNode(GrantStmt);=0A+=09=09=09=09=09= n->is_grant=20=3D=20false;=0A+=09=09=09=09=09n->grant_option=20=3D=20= false;=0A+=09=09=09=09=09n->privileges=20=3D=20$2;=0A+=09=09=09=09=09= n->targtype=20=3D=20ACL_TARGET_OBJECT;=0A+=09=09=09=09=09n->objtype=20=3D=20= OBJECT_SETTING;=0A+=09=09=09=09=09n->objects=20=3D=20$4;=0A+=09=09=09=09=09= n->grantees=20=3D=20$6;=0A+=09=09=09=09=09n->grantor=20=3D=20$7;=0A+=09=09= =09=09=09n->behavior=20=3D=20$8;=0A+=09=09=09=09=09$$=20=3D=20(Node=20= *)n;=0A+=09=09=09=09}=0A+=09=09=09|=20REVOKE=20GRANT=20OPTION=20FOR=20= setting_priv_list=20ON=20setting_target=0A+=09=09=09FROM=20grantee_list=20= opt_granted_by=20opt_drop_behavior=0A+=09=09=09=09{=0A+=09=09=09=09=09= GrantStmt=20*n=20=3D=20makeNode(GrantStmt);=0A+=09=09=09=09=09= n->is_grant=20=3D=20false;=0A+=09=09=09=09=09n->grant_option=20=3D=20= true;=0A+=09=09=09=09=09n->privileges=20=3D=20$5;=0A+=09=09=09=09=09= n->targtype=20=3D=20ACL_TARGET_OBJECT;=0A+=09=09=09=09=09n->objtype=20=3D=20= OBJECT_SETTING;=0A+=09=09=09=09=09n->objects=20=3D=20$7;=0A+=09=09=09=09=09= n->grantees=20=3D=20$9;=0A+=09=09=09=09=09n->grantor=20=3D=20$10;=0A+=09=09= =09=09=09n->behavior=20=3D=20$11;=0A+=09=09=09=09=09$$=20=3D=20(Node=20= *)n;=0A+=09=09=09=09}=0A=20=09=09;=0A=20=0A=20=0A@@=20-7073,6=20+7117,49=20= @@=20privilege:=09SELECT=20opt_column_list=0A=20=09=09=09}=0A=20=09=09;=0A= =20=0A+setting_priv_list:=20setting_priv=09=09=09=09=09=09{=20$$=20=3D=20= list_make1($1);=20}=0A+=09=09=09|=20setting_priv_list=20','=20= setting_priv=09{=20$$=20=3D=20lappend($1,=20$3);=20}=0A+=09=09;=0A+=0A= +setting_priv:=0A+=09=09ALTER=20SYSTEM_P=0A+=09=09=09{=0A+=09=09=09=09= AccessPriv=20*n=20=3D=20makeNode(AccessPriv);=0A+=09=09=09=09= n->priv_name=20=3D=20pstrdup("alter=20system");=0A+=09=09=09=09n->cols=20= =3D=20NIL;=0A+=09=09=09=09$$=20=3D=20n;=0A+=09=09=09}=0A+=09=09|=20SET=20= VALUE_P=0A+=09=09=09{=0A+=09=09=09=09AccessPriv=20*n=20=3D=20= makeNode(AccessPriv);=0A+=09=09=09=09n->priv_name=20=3D=20pstrdup("set=20= value");=0A+=09=09=09=09n->cols=20=3D=20NIL;=0A+=09=09=09=09$$=20=3D=20= n;=0A+=09=09=09}=0A+=09=09;=0A+=0A+=0A+setting_target:=0A+=09=09=09= setting_name=0A+=09=09=09=09{=0A+=09=09=09=09=09$$=20=3D=20= list_make1(makeString($1));=0A+=09=09=09=09}=0A+=09=09=09|=20= setting_target=20','=20setting_name=0A+=09=09=09=09{=0A+=09=09=09=09=09= $$=20=3D=20lappend($1,=20makeString($3));=0A+=09=09=09=09}=0A+=09=09;=0A= +=0A+setting_name:=0A+=09=09=09ColId=0A+=09=09=09=09{=0A+=09=09=09=09=09= $$=20=3D=20$1;=0A+=09=09=09=09}=0A+=09=09=09|=20setting_name=20'.'=20= ColId=0A+=09=09=09=09{=0A+=09=09=09=09=09$$=20=3D=20psprintf("%s.%s",=20= $1,=20$3);=0A+=09=09=09=09}=0A+=09=09;=0A=20=0A=20/*=20Don't=20bother=20= trying=20to=20fold=20the=20first=20two=20rules=20into=20one=20using=0A=20= =20*=20opt_table.=20=20You're=20going=20to=20get=20conflicts.=0A@@=20= -15818,6=20+15905,7=20@@=20unreserved_keyword:=0A=20=09=09=09|=20OWNED=0A= =20=09=09=09|=20OWNER=0A=20=09=09=09|=20PARALLEL=0A+=09=09=09|=20= PARAMETER=0A=20=09=09=09|=20PARSER=0A=20=09=09=09|=20PARTIAL=0A=20=09=09=09= |=20PARTITION=0A@@=20-16396,6=20+16484,7=20@@=20bare_label_keyword:=0A=20= =09=09=09|=20OWNED=0A=20=09=09=09|=20OWNER=0A=20=09=09=09|=20PARALLEL=0A= +=09=09=09|=20PARAMETER=0A=20=09=09=09|=20PARSER=0A=20=09=09=09|=20= PARTIAL=0A=20=09=09=09|=20PARTITION=0Adiff=20--git=20= a/src/backend/utils/adt/acl.c=20b/src/backend/utils/adt/acl.c=0Aindex=20= 67f8b29434..f0dd3e52ed=20100644=0A---=20a/src/backend/utils/adt/acl.c=0A= +++=20b/src/backend/utils/adt/acl.c=0A@@=20-23,6=20+23,7=20@@=0A=20= #include=20"catalog/pg_authid.h"=0A=20#include=20"catalog/pg_class.h"=0A=20= #include=20"catalog/pg_database.h"=0A+#include=20= "catalog/pg_setting_acl.h"=0A=20#include=20"catalog/pg_type.h"=0A=20= #include=20"commands/dbcommands.h"=0A=20#include=20"commands/proclang.h"=0A= @@=20-36,6=20+37,7=20@@=0A=20#include=20"utils/array.h"=0A=20#include=20= "utils/builtins.h"=0A=20#include=20"utils/catcache.h"=0A+#include=20= "utils/guc.h"=0A=20#include=20"utils/inval.h"=0A=20#include=20= "utils/lsyscache.h"=0A=20#include=20"utils/memutils.h"=0A@@=20-109,6=20= +111,8=20@@=20static=20Oid=09convert_tablespace_name(text=20= *tablespacename);=0A=20static=20AclMode=20= convert_tablespace_priv_string(text=20*priv_type_text);=0A=20static=20= Oid=09convert_type_name(text=20*typename);=0A=20static=20AclMode=20= convert_type_priv_string(text=20*priv_type_text);=0A+static=20Oid=09= convert_setting_name(text=20*setting);=0A+static=20AclMode=20= convert_setting_priv_string(text=20*priv_setting_text);=0A=20static=20= AclMode=20convert_role_priv_string(text=20*priv_type_text);=0A=20static=20= AclResult=20pg_role_aclcheck(Oid=20role_oid,=20Oid=20roleid,=20AclMode=20= mode);=0A=20=0A@@=20-306,6=20+310,12=20@@=20aclparse(const=20char=20*s,=20= AclItem=20*aip)=0A=20=09=09=09case=20ACL_CONNECT_CHR:=0A=20=09=09=09=09= read=20=3D=20ACL_CONNECT;=0A=20=09=09=09=09break;=0A+=09=09=09case=20= ACL_SET_VALUE_CHR:=0A+=09=09=09=09read=20=3D=20ACL_SET_VALUE;=0A+=09=09=09= =09break;=0A+=09=09=09case=20ACL_ALTER_SYSTEM_CHR:=0A+=09=09=09=09read=20= =3D=20ACL_ALTER_SYSTEM;=0A+=09=09=09=09break;=0A=20=09=09=09case=20'R':=09= =09=09/*=20ignore=20old=20RULE=20privileges=20*/=0A=20=09=09=09=09read=20= =3D=200;=0A=20=09=09=09=09break;=0A@@=20-794,6=20+804,10=20@@=20= acldefault(ObjectType=20objtype,=20Oid=20ownerId)=0A=20=09=09=09= world_default=20=3D=20ACL_USAGE;=0A=20=09=09=09owner_default=20=3D=20= ACL_ALL_RIGHTS_TYPE;=0A=20=09=09=09break;=0A+=09=09case=20= OBJECT_SETTING:=0A+=09=09=09world_default=20=3D=20ACL_NO_RIGHTS;=0A+=09=09= =09owner_default=20=3D=20ACL_NO_RIGHTS;=0A+=09=09=09break;=0A=20=09=09= default:=0A=20=09=09=09elog(ERROR,=20"unrecognized=20objtype:=20%d",=20= (int)=20objtype);=0A=20=09=09=09world_default=20=3D=20ACL_NO_RIGHTS;=09= /*=20keep=20compiler=20quiet=20*/=0A@@=20-1602,6=20+1616,10=20@@=20= convert_priv_string(text=20*priv_type_text)=0A=20=09=09return=20= ACL_CREATE_TEMP;=0A=20=09if=20(pg_strcasecmp(priv_type,=20"CONNECT")=20= =3D=3D=200)=0A=20=09=09return=20ACL_CONNECT;=0A+=09if=20= (pg_strcasecmp(priv_type,=20"SET=20VALUE")=20=3D=3D=200)=0A+=09=09return=20= ACL_SET_VALUE;=0A+=09if=20(pg_strcasecmp(priv_type,=20"ALTER=20SYSTEM")=20= =3D=3D=200)=0A+=09=09return=20ACL_ALTER_SYSTEM;=0A=20=09if=20= (pg_strcasecmp(priv_type,=20"RULE")=20=3D=3D=200)=0A=20=09=09return=200;=09= =09=09=09/*=20ignore=20old=20RULE=20privileges=20*/=0A=20=0A@@=20-1698,6=20= +1716,10=20@@=20convert_aclright_to_string(int=20aclright)=0A=20=09=09=09= return=20"TEMPORARY";=0A=20=09=09case=20ACL_CONNECT:=0A=20=09=09=09= return=20"CONNECT";=0A+=09=09case=20ACL_SET_VALUE:=0A+=09=09=09return=20= "SET=20VALUE";=0A+=09=09case=20ACL_ALTER_SYSTEM:=0A+=09=09=09return=20= "ALTER=20SYSTEM";=0A=20=09=09default:=0A=20=09=09=09elog(ERROR,=20= "unrecognized=20aclright:=20%d",=20aclright);=0A=20=09=09=09return=20= NULL;=0A@@=20-4429,6=20+4451,205=20@@=20convert_type_priv_string(text=20= *priv_type_text)=0A=20=09return=20= convert_any_priv_string(priv_type_text,=20type_priv_map);=0A=20}=0A=20=0A= +/*=0A+=20*=20has_setting_privilege=20variants=0A+=20*=09=09These=20are=20= all=20named=20"has_setting_privilege"=20at=20the=20SQL=20level.=0A+=20*=09= =09They=20take=20various=20combinations=20of=20setting=20name,=20setting=20= OID,=0A+=20*=09=09user=20name,=20user=20OID,=20or=20implicit=20user=20=3D=20= current_user.=0A+=20*=0A+=20*=09=09The=20result=20is=20a=20boolean=20= value:=20true=20if=20user=20has=20the=20indicated=0A+=20*=09=09= privilege,=20false=20if=20not,=20or=20NULL=20if=20object=20doesn't=20= exist.=0A+=20*/=0A+=0A+/*=0A+=20*=20has_setting_privilege_name_name=0A+=20= *=09=09Check=20user=20privileges=20on=20a=20setting=20given=0A+=20*=09=09= name=20username,=20text=20setting,=20and=20text=20priv=20name.=0A+=20*/=0A= +Datum=0A+has_setting_privilege_name_name(PG_FUNCTION_ARGS)=0A+{=0A+=09= Name=09=09username=20=3D=20PG_GETARG_NAME(0);=0A+=09text=09=20=20=20= *setting=20=3D=20PG_GETARG_TEXT_PP(1);=0A+=09text=09=20=20=20= *priv_setting_text=20=3D=20PG_GETARG_TEXT_PP(2);=0A+=09Oid=09=09=09= roleid;=0A+=09Oid=09=09=09settingoid;=0A+=09AclMode=09=09mode;=0A+=09= AclResult=09aclresult;=0A+=0A+=09roleid=20=3D=20= get_role_oid_or_public(NameStr(*username));=0A+=09settingoid=20=3D=20= convert_setting_name(setting);=0A+=09mode=20=3D=20= convert_setting_priv_string(priv_setting_text);=0A+=0A+=09aclresult=20=3D=20= pg_setting_acl_aclcheck(settingoid,=20roleid,=20mode);=0A+=0A+=09= PG_RETURN_BOOL(aclresult=20=3D=3D=20ACLCHECK_OK);=0A+}=0A+=0A+/*=0A+=20*=20= has_setting_privilege_name=0A+=20*=09=09Check=20user=20privileges=20on=20= a=20setting=20given=0A+=20*=09=09text=20setting=20and=20text=20priv=20= name.=0A+=20*=09=09current_user=20is=20assumed=0A+=20*/=0A+Datum=0A= +has_setting_privilege_name(PG_FUNCTION_ARGS)=0A+{=0A+=09text=09=20=20=20= *setting=20=3D=20PG_GETARG_TEXT_PP(0);=0A+=09text=09=20=20=20= *priv_setting_text=20=3D=20PG_GETARG_TEXT_PP(1);=0A+=09Oid=09=09=09= roleid;=0A+=09Oid=09=09=09settingoid;=0A+=09AclMode=09=09mode;=0A+=09= AclResult=09aclresult;=0A+=0A+=09roleid=20=3D=20GetUserId();=0A+=09= settingoid=20=3D=20convert_setting_name(setting);=0A+=09mode=20=3D=20= convert_setting_priv_string(priv_setting_text);=0A+=0A+=09aclresult=20=3D=20= pg_setting_acl_aclcheck(settingoid,=20roleid,=20mode);=0A+=0A+=09= PG_RETURN_BOOL(aclresult=20=3D=3D=20ACLCHECK_OK);=0A+}=0A+=0A+/*=0A+=20*=20= has_setting_privilege_name_id=0A+=20*=09=09Check=20user=20privileges=20= on=20a=20setting=20given=0A+=20*=09=09name=20usename,=20setting=20oid,=20= and=20text=20priv=20name.=0A+=20*/=0A+Datum=0A= +has_setting_privilege_name_id(PG_FUNCTION_ARGS)=0A+{=0A+=09Name=09=09= username=20=3D=20PG_GETARG_NAME(0);=0A+=09Oid=09=09=09settingoid=20=3D=20= PG_GETARG_OID(1);=0A+=09text=09=20=20=20*priv_setting_text=20=3D=20= PG_GETARG_TEXT_PP(2);=0A+=09Oid=09=09=09roleid;=0A+=09AclMode=09=09mode;=0A= +=09AclResult=09aclresult;=0A+=0A+=09roleid=20=3D=20= get_role_oid_or_public(NameStr(*username));=0A+=09mode=20=3D=20= convert_setting_priv_string(priv_setting_text);=0A+=0A+=09if=20= (!SearchSysCacheExists1(SETTINGOID,=20ObjectIdGetDatum(settingoid)))=0A+=09= =09PG_RETURN_NULL();=0A+=0A+=09aclresult=20=3D=20= pg_setting_acl_aclcheck(settingoid,=20roleid,=20mode);=0A+=0A+=09= PG_RETURN_BOOL(aclresult=20=3D=3D=20ACLCHECK_OK);=0A+}=0A+=0A+/*=0A+=20*=20= has_setting_privilege_id=0A+=20*=09=09Check=20user=20privileges=20on=20a=20= setting=20given=0A+=20*=09=09setting=20oid,=20and=20text=20priv=20name.=0A= +=20*=09=09current_user=20is=20assumed=0A+=20*/=0A+Datum=0A= +has_setting_privilege_id(PG_FUNCTION_ARGS)=0A+{=0A+=09Oid=09=09=09= settingoid=20=3D=20PG_GETARG_OID(0);=0A+=09text=09=20=20=20= *priv_setting_text=20=3D=20PG_GETARG_TEXT_PP(1);=0A+=09Oid=09=09=09= roleid;=0A+=09AclMode=09=09mode;=0A+=09AclResult=09aclresult;=0A+=0A+=09= roleid=20=3D=20GetUserId();=0A+=09mode=20=3D=20= convert_setting_priv_string(priv_setting_text);=0A+=0A+=09if=20= (!SearchSysCacheExists1(SETTINGOID,=20ObjectIdGetDatum(settingoid)))=0A+=09= =09PG_RETURN_NULL();=0A+=0A+=09aclresult=20=3D=20= pg_setting_acl_aclcheck(settingoid,=20roleid,=20mode);=0A+=0A+=09= PG_RETURN_BOOL(aclresult=20=3D=3D=20ACLCHECK_OK);=0A+}=0A+=0A+/*=0A+=20*=20= has_setting_privilege_id_name=0A+=20*=09=09Check=20user=20privileges=20= on=20a=20setting=20given=0A+=20*=09=09roleid,=20text=20setting,=20and=20= text=20priv=20name.=0A+=20*/=0A+Datum=0A= +has_setting_privilege_id_name(PG_FUNCTION_ARGS)=0A+{=0A+=09Oid=09=09=09= roleid=20=3D=20PG_GETARG_OID(0);=0A+=09text=09=20=20=20*setting=20=3D=20= PG_GETARG_TEXT_PP(1);=0A+=09text=09=20=20=20*priv_setting_text=20=3D=20= PG_GETARG_TEXT_PP(2);=0A+=09Oid=09=09=09settingoid;=0A+=09AclMode=09=09= mode;=0A+=09AclResult=09aclresult;=0A+=0A+=09settingoid=20=3D=20= convert_setting_name(setting);=0A+=09mode=20=3D=20= convert_setting_priv_string(priv_setting_text);=0A+=0A+=09aclresult=20=3D=20= pg_setting_acl_aclcheck(settingoid,=20roleid,=20mode);=0A+=0A+=09= PG_RETURN_BOOL(aclresult=20=3D=3D=20ACLCHECK_OK);=0A+}=0A+=0A+/*=0A+=20*=20= has_setting_privilege_id_id=0A+=20*=09=09Check=20user=20privileges=20on=20= a=20setting=20given=0A+=20*=09=09roleid,=20setting=20oid,=20and=20text=20= priv=20name.=0A+=20*/=0A+Datum=0A= +has_setting_privilege_id_id(PG_FUNCTION_ARGS)=0A+{=0A+=09Oid=09=09=09= roleid=20=3D=20PG_GETARG_OID(0);=0A+=09Oid=09=09=09settingoid=20=3D=20= PG_GETARG_OID(1);=0A+=09text=09=20=20=20*priv_setting_text=20=3D=20= PG_GETARG_TEXT_PP(2);=0A+=09AclMode=09=09mode;=0A+=09AclResult=09= aclresult;=0A+=0A+=09mode=20=3D=20= convert_setting_priv_string(priv_setting_text);=0A+=0A+=09if=20= (!SearchSysCacheExists1(SETTINGOID,=20ObjectIdGetDatum(settingoid)))=0A+=09= =09PG_RETURN_NULL();=0A+=0A+=09aclresult=20=3D=20= pg_setting_acl_aclcheck(settingoid,=20roleid,=20mode);=0A+=0A+=09= PG_RETURN_BOOL(aclresult=20=3D=3D=20ACLCHECK_OK);=0A+}=0A+=0A+/*=0A+=20*=09= =09Support=20routines=20for=20has_setting_privilege=20family.=0A+=20*/=0A= +=0A+/*=0A+=20*=20Given=20a=20setting=20name=20expressed=20as=20a=20= string,=20look=20it=20up=20and=20return=20Oid=0A+=20*/=0A+static=20Oid=0A= +convert_setting_name(text=20*settingname)=0A+{=0A+=09Oid=09=09=09oid;=0A= +=09char=09=20=20=20*setting=20=3D=20text_to_cstring(settingname);=0A+=0A= +=09oid=20=3D=20get_setting_oid(setting,=20true);=0A+=0A+=09if=20= (!OidIsValid(oid))=0A+=09=09ereport(ERROR,=0A+=09=09=09=09= (errcode(ERRCODE_UNDEFINED_OBJECT),=0A+=09=09=09=09=20errmsg("setting=20= \"%s\"=20does=20not=20exist",=20setting)));=0A+=0A+=09return=20oid;=0A+}=0A= +=0A+/*=0A+=20*=20convert_setting_priv_string=0A+=20*=09=09Convert=20= text=20string=20to=20AclMode=20value.=0A+=20*/=0A+static=20AclMode=0A= +convert_setting_priv_string(text=20*priv_setting_text)=0A+{=0A+=09= static=20const=20priv_map=20setting_priv_map[]=20=3D=20{=0A+=09=09{"SET=20= VALUE",=20ACL_SET_VALUE},=0A+=09=09{"SET=20VALUE=20WITH=20GRANT=20= OPTION",=20ACL_GRANT_OPTION_FOR(ACL_SET_VALUE)},=0A+=09=09{"ALTER=20= SYSTEM",=20ACL_ALTER_SYSTEM},=0A+=09=09{"ALTER=20SYSTEM=20WITH=20GRANT=20= OPTION",=20ACL_GRANT_OPTION_FOR(ACL_ALTER_SYSTEM)},=0A+=09=09{NULL,=200}=0A= +=09};=0A+=0A+=09return=20convert_any_priv_string(priv_setting_text,=20= setting_priv_map);=0A+}=0A=20=0A=20/*=0A=20=20*=20pg_has_role=20variants=0A= @@=20-4670,6=20+4891,43=20@@=20initialize_acl(void)=0A=20=09}=0A=20}=0A=20= =0A+/*=0A+=20*=20get_setting_oid=20-=20Given=20a=20configuration=20= parameter=20name,=20look=20up=20the=0A+=20*=20configuration=20= parameter's=20OID.=20=20Note=20that=20names=20which=20are=20aliases=20= for=0A+=20*=20a=20canonical=20name=20will=20be=20translated=20= automatically=20and=20the=20OID=20found.=0A+=20*=0A+=20*=20If=20= missing_ok=20is=20false,=20throw=20an=20error=20if=20the=20configuration=20= parameter=20name=0A+=20*=20is=20not=20found.=0A+=20*=0A+=20*=20Returns=20= the=20Oid=20of=20the=20configuration=20parameter.=0A+=20*/=0A+Oid=0A= +get_setting_oid(const=20char=20*setting,=20bool=20missing_ok)=0A+{=0A+=09= Oid=09=09=09oid;=0A+=0A+=09/*=20Check=20for=20the=20variable=20by=20the=20= name=20we=20were=20given=20*/=0A+=09oid=20=3D=20= GetSysCacheOid1(SETTINGNAME,=20Anum_pg_setting_acl_oid,=0A+=09=09=09=09=09= =09=20=20PointerGetDatum(cstring_to_text(setting)));=0A+=09if=20= (!OidIsValid(oid))=0A+=09{=0A+=09=09const=20char=20*canonical;=0A+=0A+=09= =09/*=20Check=20if=20the=20variable=20has=20a=20different=20canonical=20= spelling=20*/=0A+=09=09canonical=20=3D=20= GetConfigOptionCanonicalName(setting);=0A+=09=09if=20(canonical=20!=3D=20= NULL)=0A+=09=09=09oid=20=3D=20GetSysCacheOid1(SETTINGNAME,=20= Anum_pg_setting_acl_oid,=0A+=09=09=09=09=09=09=09=09=20=20= PointerGetDatum(cstring_to_text(canonical)));=0A+=0A+=09=09if=20= (!OidIsValid(oid)=20&&=20!missing_ok)=0A+=09=09=09ereport(ERROR,=0A+=09=09= =09=09=09(errcode(ERRCODE_UNDEFINED_OBJECT),=0A+=09=09=09=09=09=20= errmsg("setting=20\"%s\"=20does=20not=20exist",=20setting)));=0A+=09}=0A= +=0A+=09return=20oid;=0A+}=0A+=0A=20/*=0A=20=20*=20= RoleMembershipCacheCallback=0A=20=20*=09=09Syscache=20inval=20callback=20= function=0Adiff=20--git=20a/src/backend/utils/cache/lsyscache.c=20= b/src/backend/utils/cache/lsyscache.c=0Aindex=209176514a96..0a0cbfd9f0=20= 100644=0A---=20a/src/backend/utils/cache/lsyscache.c=0A+++=20= b/src/backend/utils/cache/lsyscache.c=0A@@=20-32,6=20+32,7=20@@=0A=20= #include=20"catalog/pg_operator.h"=0A=20#include=20"catalog/pg_proc.h"=0A= =20#include=20"catalog/pg_range.h"=0A+#include=20= "catalog/pg_setting_acl.h"=0A=20#include=20"catalog/pg_statistic.h"=0A=20= #include=20"catalog/pg_transform.h"=0A=20#include=20"catalog/pg_type.h"=0A= @@=20-3304,6=20+3305,25=20@@=20free_attstatsslot(AttStatsSlot=20*sslot)=0A= =20=09=09pfree(sslot->numbers_arr);=0A=20}=0A=20=0A+char=20*=0A= +get_setting_name(Oid=20configid)=0A+{=0A+=09HeapTuple=09tp;=0A+=0A+=09= tp=20=3D=20SearchSysCache1(SETTINGOID,=20ObjectIdGetDatum(configid));=0A= +=09if=20(HeapTupleIsValid(tp))=0A+=09{=0A+=09=09Form_pg_setting_acl=20= configtup=20=3D=20(Form_pg_setting_acl)=20GETSTRUCT(tp);=0A+=09=09char=09= =20=20=20*result;=0A+=0A+=09=09result=20=3D=20= pstrdup(text_to_cstring(&configtup->setting));=0A+=09=09= ReleaseSysCache(tp);=0A+=09=09return=20result;=0A+=09}=0A+=09else=0A+=09=09= return=20NULL;=0A+}=0A+=0A=20/*=09=09=09=09----------=20PG_NAMESPACE=20= CACHE=20----------=09=09=09=09=20*/=0A=20=0A=20/*=0Adiff=20--git=20= a/src/backend/utils/cache/syscache.c=20= b/src/backend/utils/cache/syscache.c=0Aindex=2056870b46e4..00fbe5218d=20= 100644=0A---=20a/src/backend/utils/cache/syscache.c=0A+++=20= b/src/backend/utils/cache/syscache.c=0A@@=20-57,6=20+57,7=20@@=0A=20= #include=20"catalog/pg_rewrite.h"=0A=20#include=20= "catalog/pg_seclabel.h"=0A=20#include=20"catalog/pg_sequence.h"=0A= +#include=20"catalog/pg_setting_acl.h"=0A=20#include=20= "catalog/pg_shdepend.h"=0A=20#include=20"catalog/pg_shdescription.h"=0A=20= #include=20"catalog/pg_shseclabel.h"=0A@@=20-762,6=20+763,28=20@@=20= static=20const=20struct=20cachedesc=20cacheinfo[]=20=3D=20{=0A=20=09=09= },=0A=20=09=0932=0A=20=09},=0A+=09{SettingAclRelationId,=09=09/*=20= SETTINGNAME=20*/=0A+=09=09SettingAclSettingIndexId,=0A+=09=091,=0A+=09=09= {=0A+=09=09=09Anum_pg_setting_acl_setting,=0A+=09=09=090,=0A+=09=09=090,=0A= +=09=09=090=0A+=09=09},=0A+=09=094=0A+=09},=0A+=09{SettingAclRelationId,=09= =09/*=20SETTINGOID=20*/=0A+=09=09SettingAclOidIndexId,=0A+=09=091,=0A+=09= =09{=0A+=09=09=09Anum_pg_setting_acl_oid,=0A+=09=09=090,=0A+=09=09=090,=0A= +=09=09=090=0A+=09=09},=0A+=09=094=0A+=09},=0A=20=09= {StatisticExtDataRelationId,=09/*=20STATEXTDATASTXOID=20*/=0A=20=09=09= StatisticExtDataStxoidIndexId,=0A=20=09=091,=0Adiff=20--git=20= a/src/backend/utils/misc/guc.c=20b/src/backend/utils/misc/guc.c=0Aindex=20= ee6a838b3a..6ac9c306e8=20100644=0A---=20a/src/backend/utils/misc/guc.c=0A= +++=20b/src/backend/utils/misc/guc.c=0A@@=20-974,7=20+974,7=20@@=20= static=20const=20unit_conversion=20time_unit_conversion_table[]=20=3D=0A=20= static=20struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A=20{=0A=20=09= {=0A-=09=09{"enable_seqscan",=20PGC_USERSET,=20QUERY_TUNING_METHOD,=0A+=09= =09{"enable_seqscan",=20PGC_SUSET,=20QUERY_TUNING_METHOD,=0A=20=09=09=09= gettext_noop("Enables=20the=20planner's=20use=20of=20sequential-scan=20= plans."),=0A=20=09=09=09NULL,=0A=20=09=09=09GUC_EXPLAIN=0A@@=20-984,7=20= +984,7=20@@=20static=20struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A= =20=09=09NULL,=20NULL,=20NULL=0A=20=09},=0A=20=09{=0A-=09=09= {"enable_indexscan",=20PGC_USERSET,=20QUERY_TUNING_METHOD,=0A+=09=09= {"enable_indexscan",=20PGC_SUSET,=20QUERY_TUNING_METHOD,=0A=20=09=09=09= gettext_noop("Enables=20the=20planner's=20use=20of=20index-scan=20= plans."),=0A=20=09=09=09NULL,=0A=20=09=09=09GUC_EXPLAIN=0A@@=20-994,7=20= +994,7=20@@=20static=20struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A= =20=09=09NULL,=20NULL,=20NULL=0A=20=09},=0A=20=09{=0A-=09=09= {"enable_indexonlyscan",=20PGC_USERSET,=20QUERY_TUNING_METHOD,=0A+=09=09= {"enable_indexonlyscan",=20PGC_SUSET,=20QUERY_TUNING_METHOD,=0A=20=09=09=09= gettext_noop("Enables=20the=20planner's=20use=20of=20index-only-scan=20= plans."),=0A=20=09=09=09NULL,=0A=20=09=09=09GUC_EXPLAIN=0A@@=20-1004,7=20= +1004,7=20@@=20static=20struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A= =20=09=09NULL,=20NULL,=20NULL=0A=20=09},=0A=20=09{=0A-=09=09= {"enable_bitmapscan",=20PGC_USERSET,=20QUERY_TUNING_METHOD,=0A+=09=09= {"enable_bitmapscan",=20PGC_SUSET,=20QUERY_TUNING_METHOD,=0A=20=09=09=09= gettext_noop("Enables=20the=20planner's=20use=20of=20bitmap-scan=20= plans."),=0A=20=09=09=09NULL,=0A=20=09=09=09GUC_EXPLAIN=0A@@=20-1014,7=20= +1014,7=20@@=20static=20struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A= =20=09=09NULL,=20NULL,=20NULL=0A=20=09},=0A=20=09{=0A-=09=09= {"enable_tidscan",=20PGC_USERSET,=20QUERY_TUNING_METHOD,=0A+=09=09= {"enable_tidscan",=20PGC_SUSET,=20QUERY_TUNING_METHOD,=0A=20=09=09=09= gettext_noop("Enables=20the=20planner's=20use=20of=20TID=20scan=20= plans."),=0A=20=09=09=09NULL,=0A=20=09=09=09GUC_EXPLAIN=0A@@=20-1024,7=20= +1024,7=20@@=20static=20struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A= =20=09=09NULL,=20NULL,=20NULL=0A=20=09},=0A=20=09{=0A-=09=09= {"enable_sort",=20PGC_USERSET,=20QUERY_TUNING_METHOD,=0A+=09=09= {"enable_sort",=20PGC_SUSET,=20QUERY_TUNING_METHOD,=0A=20=09=09=09= gettext_noop("Enables=20the=20planner's=20use=20of=20explicit=20sort=20= steps."),=0A=20=09=09=09NULL,=0A=20=09=09=09GUC_EXPLAIN=0A@@=20-1034,7=20= +1034,7=20@@=20static=20struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A= =20=09=09NULL,=20NULL,=20NULL=0A=20=09},=0A=20=09{=0A-=09=09= {"enable_incremental_sort",=20PGC_USERSET,=20QUERY_TUNING_METHOD,=0A+=09=09= {"enable_incremental_sort",=20PGC_SUSET,=20QUERY_TUNING_METHOD,=0A=20=09=09= =09gettext_noop("Enables=20the=20planner's=20use=20of=20incremental=20= sort=20steps."),=0A=20=09=09=09NULL,=0A=20=09=09=09GUC_EXPLAIN=0A@@=20= -1044,7=20+1044,7=20@@=20static=20struct=20config_bool=20= ConfigureNamesBool[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A=20=09},=0A=20= =09{=0A-=09=09{"enable_hashagg",=20PGC_USERSET,=20QUERY_TUNING_METHOD,=0A= +=09=09{"enable_hashagg",=20PGC_SUSET,=20QUERY_TUNING_METHOD,=0A=20=09=09= =09gettext_noop("Enables=20the=20planner's=20use=20of=20hashed=20= aggregation=20plans."),=0A=20=09=09=09NULL,=0A=20=09=09=09GUC_EXPLAIN=0A= @@=20-1054,7=20+1054,7=20@@=20static=20struct=20config_bool=20= ConfigureNamesBool[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A=20=09},=0A=20= =09{=0A-=09=09{"enable_material",=20PGC_USERSET,=20QUERY_TUNING_METHOD,=0A= +=09=09{"enable_material",=20PGC_SUSET,=20QUERY_TUNING_METHOD,=0A=20=09=09= =09gettext_noop("Enables=20the=20planner's=20use=20of=20= materialization."),=0A=20=09=09=09NULL,=0A=20=09=09=09GUC_EXPLAIN=0A@@=20= -1064,7=20+1064,7=20@@=20static=20struct=20config_bool=20= ConfigureNamesBool[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A=20=09},=0A=20= =09{=0A-=09=09{"enable_memoize",=20PGC_USERSET,=20QUERY_TUNING_METHOD,=0A= +=09=09{"enable_memoize",=20PGC_SUSET,=20QUERY_TUNING_METHOD,=0A=20=09=09= =09gettext_noop("Enables=20the=20planner's=20use=20of=20memoization."),=0A= =20=09=09=09NULL,=0A=20=09=09=09GUC_EXPLAIN=0A@@=20-1074,7=20+1074,7=20= @@=20static=20struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09=09= NULL,=20NULL,=20NULL=0A=20=09},=0A=20=09{=0A-=09=09{"enable_nestloop",=20= PGC_USERSET,=20QUERY_TUNING_METHOD,=0A+=09=09{"enable_nestloop",=20= PGC_SUSET,=20QUERY_TUNING_METHOD,=0A=20=09=09=09gettext_noop("Enables=20= the=20planner's=20use=20of=20nested-loop=20join=20plans."),=0A=20=09=09=09= NULL,=0A=20=09=09=09GUC_EXPLAIN=0A@@=20-1084,7=20+1084,7=20@@=20static=20= struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09=09NULL,=20= NULL,=20NULL=0A=20=09},=0A=20=09{=0A-=09=09{"enable_mergejoin",=20= PGC_USERSET,=20QUERY_TUNING_METHOD,=0A+=09=09{"enable_mergejoin",=20= PGC_SUSET,=20QUERY_TUNING_METHOD,=0A=20=09=09=09gettext_noop("Enables=20= the=20planner's=20use=20of=20merge=20join=20plans."),=0A=20=09=09=09= NULL,=0A=20=09=09=09GUC_EXPLAIN=0A@@=20-1094,7=20+1094,7=20@@=20static=20= struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09=09NULL,=20= NULL,=20NULL=0A=20=09},=0A=20=09{=0A-=09=09{"enable_hashjoin",=20= PGC_USERSET,=20QUERY_TUNING_METHOD,=0A+=09=09{"enable_hashjoin",=20= PGC_SUSET,=20QUERY_TUNING_METHOD,=0A=20=09=09=09gettext_noop("Enables=20= the=20planner's=20use=20of=20hash=20join=20plans."),=0A=20=09=09=09NULL,=0A= =20=09=09=09GUC_EXPLAIN=0A@@=20-1104,7=20+1104,7=20@@=20static=20struct=20= config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A= =20=09},=0A=20=09{=0A-=09=09{"enable_gathermerge",=20PGC_USERSET,=20= QUERY_TUNING_METHOD,=0A+=09=09{"enable_gathermerge",=20PGC_SUSET,=20= QUERY_TUNING_METHOD,=0A=20=09=09=09gettext_noop("Enables=20the=20= planner's=20use=20of=20gather=20merge=20plans."),=0A=20=09=09=09NULL,=0A=20= =09=09=09GUC_EXPLAIN=0A@@=20-1114,7=20+1114,7=20@@=20static=20struct=20= config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A= =20=09},=0A=20=09{=0A-=09=09{"enable_partitionwise_join",=20PGC_USERSET,=20= QUERY_TUNING_METHOD,=0A+=09=09{"enable_partitionwise_join",=20PGC_SUSET,=20= QUERY_TUNING_METHOD,=0A=20=09=09=09gettext_noop("Enables=20partitionwise=20= join."),=0A=20=09=09=09NULL,=0A=20=09=09=09GUC_EXPLAIN=0A@@=20-1124,7=20= +1124,7=20@@=20static=20struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A= =20=09=09NULL,=20NULL,=20NULL=0A=20=09},=0A=20=09{=0A-=09=09= {"enable_partitionwise_aggregate",=20PGC_USERSET,=20QUERY_TUNING_METHOD,=0A= +=09=09{"enable_partitionwise_aggregate",=20PGC_SUSET,=20= QUERY_TUNING_METHOD,=0A=20=09=09=09gettext_noop("Enables=20partitionwise=20= aggregation=20and=20grouping."),=0A=20=09=09=09NULL,=0A=20=09=09=09= GUC_EXPLAIN=0A@@=20-1134,7=20+1134,7=20@@=20static=20struct=20= config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A= =20=09},=0A=20=09{=0A-=09=09{"enable_parallel_append",=20PGC_USERSET,=20= QUERY_TUNING_METHOD,=0A+=09=09{"enable_parallel_append",=20PGC_SUSET,=20= QUERY_TUNING_METHOD,=0A=20=09=09=09gettext_noop("Enables=20the=20= planner's=20use=20of=20parallel=20append=20plans."),=0A=20=09=09=09NULL,=0A= =20=09=09=09GUC_EXPLAIN=0A@@=20-1144,7=20+1144,7=20@@=20static=20struct=20= config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A= =20=09},=0A=20=09{=0A-=09=09{"enable_parallel_hash",=20PGC_USERSET,=20= QUERY_TUNING_METHOD,=0A+=09=09{"enable_parallel_hash",=20PGC_SUSET,=20= QUERY_TUNING_METHOD,=0A=20=09=09=09gettext_noop("Enables=20the=20= planner's=20use=20of=20parallel=20hash=20plans."),=0A=20=09=09=09NULL,=0A= =20=09=09=09GUC_EXPLAIN=0A@@=20-1154,7=20+1154,7=20@@=20static=20struct=20= config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A= =20=09},=0A=20=09{=0A-=09=09{"enable_partition_pruning",=20PGC_USERSET,=20= QUERY_TUNING_METHOD,=0A+=09=09{"enable_partition_pruning",=20PGC_SUSET,=20= QUERY_TUNING_METHOD,=0A=20=09=09=09gettext_noop("Enables=20plan-time=20= and=20execution-time=20partition=20pruning."),=0A=20=09=09=09= gettext_noop("Allows=20the=20query=20planner=20and=20executor=20to=20= compare=20partition=20"=0A=20=09=09=09=09=09=09=20"bounds=20to=20= conditions=20in=20the=20query=20to=20determine=20which=20"=0A@@=20= -1166,7=20+1166,7=20@@=20static=20struct=20config_bool=20= ConfigureNamesBool[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A=20=09},=0A=20= =09{=0A-=09=09{"enable_async_append",=20PGC_USERSET,=20= QUERY_TUNING_METHOD,=0A+=09=09{"enable_async_append",=20PGC_SUSET,=20= QUERY_TUNING_METHOD,=0A=20=09=09=09gettext_noop("Enables=20the=20= planner's=20use=20of=20async=20append=20plans."),=0A=20=09=09=09NULL,=0A=20= =09=09=09GUC_EXPLAIN=0A@@=20-1176,7=20+1176,7=20@@=20static=20struct=20= config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A= =20=09},=0A=20=09{=0A-=09=09{"geqo",=20PGC_USERSET,=20QUERY_TUNING_GEQO,=0A= +=09=09{"geqo",=20PGC_SUSET,=20QUERY_TUNING_GEQO,=0A=20=09=09=09= gettext_noop("Enables=20genetic=20query=20optimization."),=0A=20=09=09=09= gettext_noop("This=20algorithm=20attempts=20to=20do=20planning=20without=20= "=0A=20=09=09=09=09=09=09=20"exhaustive=20searching."),=0A@@=20-1398,7=20= +1398,7=20@@=20static=20struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A= =20=09},=0A=20=0A=20=09{=0A-=09=09{"exit_on_error",=20PGC_USERSET,=20= ERROR_HANDLING_OPTIONS,=0A+=09=09{"exit_on_error",=20PGC_SUSET,=20= ERROR_HANDLING_OPTIONS,=0A=20=09=09=09gettext_noop("Terminate=20session=20= on=20any=20error."),=0A=20=09=09=09NULL=0A=20=09=09},=0A@@=20-1436,7=20= +1436,7=20@@=20static=20struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A= =20=09=09NULL,=20NULL,=20NULL=0A=20=09},=0A=20=09{=0A-=09=09= {"debug_print_parse",=20PGC_USERSET,=20LOGGING_WHAT,=0A+=09=09= {"debug_print_parse",=20PGC_SUSET,=20LOGGING_WHAT,=0A=20=09=09=09= gettext_noop("Logs=20each=20query's=20parse=20tree."),=0A=20=09=09=09= NULL=0A=20=09=09},=0A@@=20-1445,7=20+1445,7=20@@=20static=20struct=20= config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A= =20=09},=0A=20=09{=0A-=09=09{"debug_print_rewritten",=20PGC_USERSET,=20= LOGGING_WHAT,=0A+=09=09{"debug_print_rewritten",=20PGC_SUSET,=20= LOGGING_WHAT,=0A=20=09=09=09gettext_noop("Logs=20each=20query's=20= rewritten=20parse=20tree."),=0A=20=09=09=09NULL=0A=20=09=09},=0A@@=20= -1454,7=20+1454,7=20@@=20static=20struct=20config_bool=20= ConfigureNamesBool[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A=20=09},=0A=20= =09{=0A-=09=09{"debug_print_plan",=20PGC_USERSET,=20LOGGING_WHAT,=0A+=09=09= {"debug_print_plan",=20PGC_SUSET,=20LOGGING_WHAT,=0A=20=09=09=09= gettext_noop("Logs=20each=20query's=20execution=20plan."),=0A=20=09=09=09= NULL=0A=20=09=09},=0A@@=20-1463,7=20+1463,7=20@@=20static=20struct=20= config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A= =20=09},=0A=20=09{=0A-=09=09{"debug_pretty_print",=20PGC_USERSET,=20= LOGGING_WHAT,=0A+=09=09{"debug_pretty_print",=20PGC_SUSET,=20= LOGGING_WHAT,=0A=20=09=09=09gettext_noop("Indents=20parse=20and=20plan=20= tree=20displays."),=0A=20=09=09=09NULL=0A=20=09=09},=0A@@=20-1584,7=20= +1584,7=20@@=20static=20struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A= =20=09},=0A=20=0A=20=09{=0A-=09=09{"trace_notify",=20PGC_USERSET,=20= DEVELOPER_OPTIONS,=0A+=09=09{"trace_notify",=20PGC_SUSET,=20= DEVELOPER_OPTIONS,=0A=20=09=09=09gettext_noop("Generates=20debugging=20= output=20for=20LISTEN=20and=20NOTIFY."),=0A=20=09=09=09NULL,=0A=20=09=09=09= GUC_NOT_IN_SAMPLE=0A@@=20-1668,7=20+1668,7=20@@=20static=20struct=20= config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A= =20=09},=0A=20=09{=0A-=09=09{"transform_null_equals",=20PGC_USERSET,=20= COMPAT_OPTIONS_CLIENT,=0A+=09=09{"transform_null_equals",=20PGC_SUSET,=20= COMPAT_OPTIONS_CLIENT,=0A=20=09=09=09gettext_noop("Treats=20= \"expr=3DNULL\"=20as=20\"expr=20IS=20NULL\"."),=0A=20=09=09=09= gettext_noop("When=20turned=20on,=20expressions=20of=20the=20form=20expr=20= =3D=20NULL=20"=0A=20=09=09=09=09=09=09=20"(or=20NULL=20=3D=20expr)=20are=20= treated=20as=20expr=20IS=20NULL,=20that=20is,=20they=20"=0A@@=20-1690,7=20= +1690,7=20@@=20static=20struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A= =20=09=09NULL,=20NULL,=20NULL=0A=20=09},=0A=20=09{=0A-=09=09= {"default_transaction_read_only",=20PGC_USERSET,=20= CLIENT_CONN_STATEMENT,=0A+=09=09{"default_transaction_read_only",=20= PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20=09=09=09gettext_noop("Sets=20= the=20default=20read-only=20status=20of=20new=20transactions."),=0A=20=09= =09=09NULL,=0A=20=09=09=09GUC_REPORT=0A@@=20-1700,7=20+1700,7=20@@=20= static=20struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09=09= NULL,=20NULL,=20NULL=0A=20=09},=0A=20=09{=0A-=09=09= {"transaction_read_only",=20PGC_USERSET,=20CLIENT_CONN_STATEMENT,=0A+=09=09= {"transaction_read_only",=20PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20=09=09= =09gettext_noop("Sets=20the=20current=20transaction's=20read-only=20= status."),=0A=20=09=09=09NULL,=0A=20=09=09=09GUC_NO_RESET_ALL=20|=20= GUC_NOT_IN_SAMPLE=20|=20GUC_DISALLOW_IN_FILE=0A@@=20-1710,7=20+1710,7=20= @@=20static=20struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09=09= check_transaction_read_only,=20NULL,=20NULL=0A=20=09},=0A=20=09{=0A-=09=09= {"default_transaction_deferrable",=20PGC_USERSET,=20= CLIENT_CONN_STATEMENT,=0A+=09=09{"default_transaction_deferrable",=20= PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20=09=09=09gettext_noop("Sets=20= the=20default=20deferrable=20status=20of=20new=20transactions."),=0A=20=09= =09=09NULL=0A=20=09=09},=0A@@=20-1719,7=20+1719,7=20@@=20static=20struct=20= config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A= =20=09},=0A=20=09{=0A-=09=09{"transaction_deferrable",=20PGC_USERSET,=20= CLIENT_CONN_STATEMENT,=0A+=09=09{"transaction_deferrable",=20PGC_SUSET,=20= CLIENT_CONN_STATEMENT,=0A=20=09=09=09gettext_noop("Whether=20to=20defer=20= a=20read-only=20serializable=20transaction=20until=20it=20can=20be=20= executed=20with=20no=20possible=20serialization=20failures."),=0A=20=09=09= =09NULL,=0A=20=09=09=09GUC_NO_RESET_ALL=20|=20GUC_NOT_IN_SAMPLE=20|=20= GUC_DISALLOW_IN_FILE=0A@@=20-1729,7=20+1729,7=20@@=20static=20struct=20= config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09=09= check_transaction_deferrable,=20NULL,=20NULL=0A=20=09},=0A=20=09{=0A-=09=09= {"row_security",=20PGC_USERSET,=20CLIENT_CONN_STATEMENT,=0A+=09=09= {"row_security",=20PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20=09=09=09= gettext_noop("Enable=20row=20security."),=0A=20=09=09=09= gettext_noop("When=20enabled,=20row=20security=20will=20be=20applied=20= to=20all=20users.")=0A=20=09=09},=0A@@=20-1738,7=20+1738,7=20@@=20static=20= struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09=09NULL,=20= NULL,=20NULL=0A=20=09},=0A=20=09{=0A-=09=09{"check_function_bodies",=20= PGC_USERSET,=20CLIENT_CONN_STATEMENT,=0A+=09=09{"check_function_bodies",=20= PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20=09=09=09gettext_noop("Check=20= routine=20bodies=20during=20CREATE=20FUNCTION=20and=20CREATE=20= PROCEDURE."),=0A=20=09=09=09NULL=0A=20=09=09},=0A@@=20-1747,7=20+1747,7=20= @@=20static=20struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09=09= NULL,=20NULL,=20NULL=0A=20=09},=0A=20=09{=0A-=09=09{"array_nulls",=20= PGC_USERSET,=20COMPAT_OPTIONS_PREVIOUS,=0A+=09=09{"array_nulls",=20= PGC_SUSET,=20COMPAT_OPTIONS_PREVIOUS,=0A=20=09=09=09gettext_noop("Enable=20= input=20of=20NULL=20elements=20in=20arrays."),=0A=20=09=09=09= gettext_noop("When=20turned=20on,=20unquoted=20NULL=20in=20an=20array=20= input=20"=0A=20=09=09=09=09=09=09=20"value=20means=20a=20null=20value;=20= "=0A@@=20-1764,7=20+1764,7=20@@=20static=20struct=20config_bool=20= ConfigureNamesBool[]=20=3D=0A=20=09=20*=20avoid=20unnecessarily=20= breaking=20older=20dump=20files.=0A=20=09=20*/=0A=20=09{=0A-=09=09= {"default_with_oids",=20PGC_USERSET,=20COMPAT_OPTIONS_PREVIOUS,=0A+=09=09= {"default_with_oids",=20PGC_SUSET,=20COMPAT_OPTIONS_PREVIOUS,=0A=20=09=09= =09gettext_noop("WITH=20OIDS=20is=20no=20longer=20supported;=20this=20= can=20only=20be=20false."),=0A=20=09=09=09NULL,=0A=20=09=09=09= GUC_NO_SHOW_ALL=20|=20GUC_NOT_IN_SAMPLE=0A@@=20-1794,7=20+1794,7=20@@=20= static=20struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A=20=0A=20= #ifdef=20TRACE_SORT=0A=20=09{=0A-=09=09{"trace_sort",=20PGC_USERSET,=20= DEVELOPER_OPTIONS,=0A+=09=09{"trace_sort",=20PGC_SUSET,=20= DEVELOPER_OPTIONS,=0A=20=09=09=09gettext_noop("Emit=20information=20= about=20resource=20usage=20in=20sorting."),=0A=20=09=09=09NULL,=0A=20=09=09= =09GUC_NOT_IN_SAMPLE=0A@@=20-1808,7=20+1808,7=20@@=20static=20struct=20= config_bool=20ConfigureNamesBool[]=20=3D=0A=20#ifdef=20TRACE_SYNCSCAN=0A=20= =09/*=20this=20is=20undocumented=20because=20not=20exposed=20in=20a=20= standard=20build=20*/=0A=20=09{=0A-=09=09{"trace_syncscan",=20= PGC_USERSET,=20DEVELOPER_OPTIONS,=0A+=09=09{"trace_syncscan",=20= PGC_SUSET,=20DEVELOPER_OPTIONS,=0A=20=09=09=09gettext_noop("Generate=20= debugging=20output=20for=20synchronized=20scanning."),=0A=20=09=09=09= NULL,=0A=20=09=09=09GUC_NOT_IN_SAMPLE=0A@@=20-1823,7=20+1823,7=20@@=20= static=20struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09/*=20= this=20is=20undocumented=20because=20not=20exposed=20in=20a=20standard=20= build=20*/=0A=20=09{=0A=20=09=09{=0A-=09=09=09"optimize_bounded_sort",=20= PGC_USERSET,=20QUERY_TUNING_METHOD,=0A+=09=09=09"optimize_bounded_sort",=20= PGC_SUSET,=20QUERY_TUNING_METHOD,=0A=20=09=09=09gettext_noop("Enable=20= bounded=20sorting=20using=20heap=20sort."),=0A=20=09=09=09NULL,=0A=20=09=09= =09GUC_NOT_IN_SAMPLE=20|=20GUC_EXPLAIN=0A@@=20-1869,7=20+1869,7=20@@=20= static=20struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09},=0A=20= =0A=20=09{=0A-=09=09{"escape_string_warning",=20PGC_USERSET,=20= COMPAT_OPTIONS_PREVIOUS,=0A+=09=09{"escape_string_warning",=20PGC_SUSET,=20= COMPAT_OPTIONS_PREVIOUS,=0A=20=09=09=09gettext_noop("Warn=20about=20= backslash=20escapes=20in=20ordinary=20string=20literals."),=0A=20=09=09=09= NULL=0A=20=09=09},=0A@@=20-1879,7=20+1879,7=20@@=20static=20struct=20= config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09= =09{"standard_conforming_strings",=20PGC_USERSET,=20= COMPAT_OPTIONS_PREVIOUS,=0A+=09=09{"standard_conforming_strings",=20= PGC_SUSET,=20COMPAT_OPTIONS_PREVIOUS,=0A=20=09=09=09gettext_noop("Causes=20= '...'=20strings=20to=20treat=20backslashes=20literally."),=0A=20=09=09=09= NULL,=0A=20=09=09=09GUC_REPORT=0A@@=20-1890,7=20+1890,7=20@@=20static=20= struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09},=0A=20=0A=20=09= {=0A-=09=09{"synchronize_seqscans",=20PGC_USERSET,=20= COMPAT_OPTIONS_PREVIOUS,=0A+=09=09{"synchronize_seqscans",=20PGC_SUSET,=20= COMPAT_OPTIONS_PREVIOUS,=0A=20=09=09=09gettext_noop("Enable=20= synchronized=20sequential=20scans."),=0A=20=09=09=09NULL=0A=20=09=09},=0A= @@=20-1975,7=20+1975,7=20@@=20static=20struct=20config_bool=20= ConfigureNamesBool[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"quote_all_identifiers",=20PGC_USERSET,=20COMPAT_OPTIONS_PREVIOUS,=0A+=09= =09{"quote_all_identifiers",=20PGC_SUSET,=20COMPAT_OPTIONS_PREVIOUS,=0A=20= =09=09=09gettext_noop("When=20generating=20SQL=20fragments,=20quote=20= all=20identifiers."),=0A=20=09=09=09NULL,=0A=20=09=09},=0A@@=20-2016,7=20= +2016,7=20@@=20static=20struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A= =20=09},=0A=20=0A=20=09{=0A-=09=09{"parallel_leader_participation",=20= PGC_USERSET,=20RESOURCES_ASYNCHRONOUS,=0A+=09=09= {"parallel_leader_participation",=20PGC_SUSET,=20RESOURCES_ASYNCHRONOUS,=0A= =20=09=09=09gettext_noop("Controls=20whether=20Gather=20and=20Gather=20= Merge=20also=20run=20subplans."),=0A=20=09=09=09gettext_noop("Should=20= gather=20nodes=20also=20run=20subplans=20or=20just=20gather=20tuples?"),=0A= =20=09=09=09GUC_EXPLAIN=0A@@=20-2027,7=20+2027,7=20@@=20static=20struct=20= config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09= =09{"jit",=20PGC_USERSET,=20QUERY_TUNING_OTHER,=0A+=09=09{"jit",=20= PGC_SUSET,=20QUERY_TUNING_OTHER,=0A=20=09=09=09gettext_noop("Allow=20JIT=20= compilation."),=0A=20=09=09=09NULL,=0A=20=09=09=09GUC_EXPLAIN=0A@@=20= -2066,7=20+2066,7=20@@=20static=20struct=20config_bool=20= ConfigureNamesBool[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"jit_expressions",=20PGC_USERSET,=20DEVELOPER_OPTIONS,=0A+=09=09= {"jit_expressions",=20PGC_SUSET,=20DEVELOPER_OPTIONS,=0A=20=09=09=09= gettext_noop("Allow=20JIT=20compilation=20of=20expressions."),=0A=20=09=09= =09NULL,=0A=20=09=09=09GUC_NOT_IN_SAMPLE=0A@@=20-2094,7=20+2094,7=20@@=20= static=20struct=20config_bool=20ConfigureNamesBool[]=20=3D=0A=20=09},=0A=20= =0A=20=09{=0A-=09=09{"jit_tuple_deforming",=20PGC_USERSET,=20= DEVELOPER_OPTIONS,=0A+=09=09{"jit_tuple_deforming",=20PGC_SUSET,=20= DEVELOPER_OPTIONS,=0A=20=09=09=09gettext_noop("Allow=20JIT=20compilation=20= of=20tuple=20deforming."),=0A=20=09=09=09NULL,=0A=20=09=09=09= GUC_NOT_IN_SAMPLE=0A@@=20-2154,7=20+2154,7=20@@=20static=20struct=20= config_int=20ConfigureNamesInt[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A= =20=09},=0A=20=09{=0A-=09=09{"default_statistics_target",=20PGC_USERSET,=20= QUERY_TUNING_OTHER,=0A+=09=09{"default_statistics_target",=20PGC_SUSET,=20= QUERY_TUNING_OTHER,=0A=20=09=09=09gettext_noop("Sets=20the=20default=20= statistics=20target."),=0A=20=09=09=09gettext_noop("This=20applies=20to=20= table=20columns=20that=20have=20not=20had=20a=20"=0A=20=09=09=09=09=09=09= =20"column-specific=20target=20set=20via=20ALTER=20TABLE=20SET=20= STATISTICS.")=0A@@=20-2164,7=20+2164,7=20@@=20static=20struct=20= config_int=20ConfigureNamesInt[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A= =20=09},=0A=20=09{=0A-=09=09{"from_collapse_limit",=20PGC_USERSET,=20= QUERY_TUNING_OTHER,=0A+=09=09{"from_collapse_limit",=20PGC_SUSET,=20= QUERY_TUNING_OTHER,=0A=20=09=09=09gettext_noop("Sets=20the=20FROM-list=20= size=20beyond=20which=20subqueries=20"=0A=20=09=09=09=09=09=09=20"are=20= not=20collapsed."),=0A=20=09=09=09gettext_noop("The=20planner=20will=20= merge=20subqueries=20into=20upper=20"=0A@@=20-2177,7=20+2177,7=20@@=20= static=20struct=20config_int=20ConfigureNamesInt[]=20=3D=0A=20=09=09= NULL,=20NULL,=20NULL=0A=20=09},=0A=20=09{=0A-=09=09= {"join_collapse_limit",=20PGC_USERSET,=20QUERY_TUNING_OTHER,=0A+=09=09= {"join_collapse_limit",=20PGC_SUSET,=20QUERY_TUNING_OTHER,=0A=20=09=09=09= gettext_noop("Sets=20the=20FROM-list=20size=20beyond=20which=20JOIN=20"=0A= =20=09=09=09=09=09=09=20"constructs=20are=20not=20flattened."),=0A=20=09=09= =09gettext_noop("The=20planner=20will=20flatten=20explicit=20JOIN=20"=0A= @@=20-2190,7=20+2190,7=20@@=20static=20struct=20config_int=20= ConfigureNamesInt[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A=20=09},=0A=20= =09{=0A-=09=09{"geqo_threshold",=20PGC_USERSET,=20QUERY_TUNING_GEQO,=0A+=09= =09{"geqo_threshold",=20PGC_SUSET,=20QUERY_TUNING_GEQO,=0A=20=09=09=09= gettext_noop("Sets=20the=20threshold=20of=20FROM=20items=20beyond=20= which=20GEQO=20is=20used."),=0A=20=09=09=09NULL,=0A=20=09=09=09= GUC_EXPLAIN=0A@@=20-2200,7=20+2200,7=20@@=20static=20struct=20config_int=20= ConfigureNamesInt[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A=20=09},=0A=20= =09{=0A-=09=09{"geqo_effort",=20PGC_USERSET,=20QUERY_TUNING_GEQO,=0A+=09=09= {"geqo_effort",=20PGC_SUSET,=20QUERY_TUNING_GEQO,=0A=20=09=09=09= gettext_noop("GEQO:=20effort=20is=20used=20to=20set=20the=20default=20= for=20other=20GEQO=20parameters."),=0A=20=09=09=09NULL,=0A=20=09=09=09= GUC_EXPLAIN=0A@@=20-2210,7=20+2210,7=20@@=20static=20struct=20config_int=20= ConfigureNamesInt[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A=20=09},=0A=20= =09{=0A-=09=09{"geqo_pool_size",=20PGC_USERSET,=20QUERY_TUNING_GEQO,=0A+=09= =09{"geqo_pool_size",=20PGC_SUSET,=20QUERY_TUNING_GEQO,=0A=20=09=09=09= gettext_noop("GEQO:=20number=20of=20individuals=20in=20the=20= population."),=0A=20=09=09=09gettext_noop("Zero=20selects=20a=20suitable=20= default=20value."),=0A=20=09=09=09GUC_EXPLAIN=0A@@=20-2220,7=20+2220,7=20= @@=20static=20struct=20config_int=20ConfigureNamesInt[]=20=3D=0A=20=09=09= NULL,=20NULL,=20NULL=0A=20=09},=0A=20=09{=0A-=09=09{"geqo_generations",=20= PGC_USERSET,=20QUERY_TUNING_GEQO,=0A+=09=09{"geqo_generations",=20= PGC_SUSET,=20QUERY_TUNING_GEQO,=0A=20=09=09=09gettext_noop("GEQO:=20= number=20of=20iterations=20of=20the=20algorithm."),=0A=20=09=09=09= gettext_noop("Zero=20selects=20a=20suitable=20default=20value."),=0A=20=09= =09=09GUC_EXPLAIN=0A@@=20-2367,7=20+2367,7=20@@=20static=20struct=20= config_int=20ConfigureNamesInt[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"temp_buffers",=20PGC_USERSET,=20RESOURCES_MEM,=0A+=09=09= {"temp_buffers",=20PGC_SUSET,=20RESOURCES_MEM,=0A=20=09=09=09= gettext_noop("Sets=20the=20maximum=20number=20of=20temporary=20buffers=20= used=20by=20each=20session."),=0A=20=09=09=09NULL,=0A=20=09=09=09= GUC_UNIT_BLOCKS=20|=20GUC_EXPLAIN=0A@@=20-2432,7=20+2432,7=20@@=20static=20= struct=20config_int=20ConfigureNamesInt[]=20=3D=0A=20=09},=0A=20=0A=20=09= {=0A-=09=09{"work_mem",=20PGC_USERSET,=20RESOURCES_MEM,=0A+=09=09= {"work_mem",=20PGC_SUSET,=20RESOURCES_MEM,=0A=20=09=09=09= gettext_noop("Sets=20the=20maximum=20memory=20to=20be=20used=20for=20= query=20workspaces."),=0A=20=09=09=09gettext_noop("This=20much=20memory=20= can=20be=20used=20by=20each=20internal=20"=0A=20=09=09=09=09=09=09=20= "sort=20operation=20and=20hash=20table=20before=20switching=20to=20"=0A= @@=20-2445,7=20+2445,7=20@@=20static=20struct=20config_int=20= ConfigureNamesInt[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"maintenance_work_mem",=20PGC_USERSET,=20RESOURCES_MEM,=0A+=09=09= {"maintenance_work_mem",=20PGC_SUSET,=20RESOURCES_MEM,=0A=20=09=09=09= gettext_noop("Sets=20the=20maximum=20memory=20to=20be=20used=20for=20= maintenance=20operations."),=0A=20=09=09=09gettext_noop("This=20includes=20= operations=20such=20as=20VACUUM=20and=20CREATE=20INDEX."),=0A=20=09=09=09= GUC_UNIT_KB=0A@@=20-2456,7=20+2456,7=20@@=20static=20struct=20config_int=20= ConfigureNamesInt[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"logical_decoding_work_mem",=20PGC_USERSET,=20RESOURCES_MEM,=0A+=09=09= {"logical_decoding_work_mem",=20PGC_SUSET,=20RESOURCES_MEM,=0A=20=09=09=09= gettext_noop("Sets=20the=20maximum=20memory=20to=20be=20used=20for=20= logical=20decoding."),=0A=20=09=09=09gettext_noop("This=20much=20memory=20= can=20be=20used=20by=20each=20internal=20"=0A=20=09=09=09=09=09=09=20= "reorder=20buffer=20before=20spilling=20to=20disk."),=0A@@=20-2495,7=20= +2495,7=20@@=20static=20struct=20config_int=20ConfigureNamesInt[]=20=3D=0A= =20=09},=0A=20=0A=20=09{=0A-=09=09{"vacuum_cost_page_hit",=20= PGC_USERSET,=20RESOURCES_VACUUM_DELAY,=0A+=09=09{"vacuum_cost_page_hit",=20= PGC_SUSET,=20RESOURCES_VACUUM_DELAY,=0A=20=09=09=09gettext_noop("Vacuum=20= cost=20for=20a=20page=20found=20in=20the=20buffer=20cache."),=0A=20=09=09= =09NULL=0A=20=09=09},=0A@@=20-2505,7=20+2505,7=20@@=20static=20struct=20= config_int=20ConfigureNamesInt[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"vacuum_cost_page_miss",=20PGC_USERSET,=20RESOURCES_VACUUM_DELAY,=0A+=09= =09{"vacuum_cost_page_miss",=20PGC_SUSET,=20RESOURCES_VACUUM_DELAY,=0A=20= =09=09=09gettext_noop("Vacuum=20cost=20for=20a=20page=20not=20found=20in=20= the=20buffer=20cache."),=0A=20=09=09=09NULL=0A=20=09=09},=0A@@=20-2515,7=20= +2515,7=20@@=20static=20struct=20config_int=20ConfigureNamesInt[]=20=3D=0A= =20=09},=0A=20=0A=20=09{=0A-=09=09{"vacuum_cost_page_dirty",=20= PGC_USERSET,=20RESOURCES_VACUUM_DELAY,=0A+=09=09= {"vacuum_cost_page_dirty",=20PGC_SUSET,=20RESOURCES_VACUUM_DELAY,=0A=20=09= =09=09gettext_noop("Vacuum=20cost=20for=20a=20page=20dirtied=20by=20= vacuum."),=0A=20=09=09=09NULL=0A=20=09=09},=0A@@=20-2525,7=20+2525,7=20= @@=20static=20struct=20config_int=20ConfigureNamesInt[]=20=3D=0A=20=09},=0A= =20=0A=20=09{=0A-=09=09{"vacuum_cost_limit",=20PGC_USERSET,=20= RESOURCES_VACUUM_DELAY,=0A+=09=09{"vacuum_cost_limit",=20PGC_SUSET,=20= RESOURCES_VACUUM_DELAY,=0A=20=09=09=09gettext_noop("Vacuum=20cost=20= amount=20available=20before=20napping."),=0A=20=09=09=09NULL=0A=20=09=09= },=0A@@=20-2591,7=20+2591,7=20@@=20static=20struct=20config_int=20= ConfigureNamesInt[]=20=3D=0A=20#endif=0A=20=0A=20=09{=0A-=09=09= {"statement_timeout",=20PGC_USERSET,=20CLIENT_CONN_STATEMENT,=0A+=09=09= {"statement_timeout",=20PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20=09=09=09= gettext_noop("Sets=20the=20maximum=20allowed=20duration=20of=20any=20= statement."),=0A=20=09=09=09gettext_noop("A=20value=20of=200=20turns=20= off=20the=20timeout."),=0A=20=09=09=09GUC_UNIT_MS=0A@@=20-2602,7=20= +2602,7=20@@=20static=20struct=20config_int=20ConfigureNamesInt[]=20=3D=0A= =20=09},=0A=20=0A=20=09{=0A-=09=09{"lock_timeout",=20PGC_USERSET,=20= CLIENT_CONN_STATEMENT,=0A+=09=09{"lock_timeout",=20PGC_SUSET,=20= CLIENT_CONN_STATEMENT,=0A=20=09=09=09gettext_noop("Sets=20the=20maximum=20= allowed=20duration=20of=20any=20wait=20for=20a=20lock."),=0A=20=09=09=09= gettext_noop("A=20value=20of=200=20turns=20off=20the=20timeout."),=0A=20=09= =09=09GUC_UNIT_MS=0A@@=20-2613,7=20+2613,7=20@@=20static=20struct=20= config_int=20ConfigureNamesInt[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"idle_in_transaction_session_timeout",=20PGC_USERSET,=20= CLIENT_CONN_STATEMENT,=0A+=09=09{"idle_in_transaction_session_timeout",=20= PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20=09=09=09gettext_noop("Sets=20= the=20maximum=20allowed=20idle=20time=20between=20queries,=20when=20in=20= a=20transaction."),=0A=20=09=09=09gettext_noop("A=20value=20of=200=20= turns=20off=20the=20timeout."),=0A=20=09=09=09GUC_UNIT_MS=0A@@=20-2624,7=20= +2624,7=20@@=20static=20struct=20config_int=20ConfigureNamesInt[]=20=3D=0A= =20=09},=0A=20=0A=20=09{=0A-=09=09{"idle_session_timeout",=20= PGC_USERSET,=20CLIENT_CONN_STATEMENT,=0A+=09=09{"idle_session_timeout",=20= PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20=09=09=09gettext_noop("Sets=20= the=20maximum=20allowed=20idle=20time=20between=20queries,=20when=20not=20= in=20a=20transaction."),=0A=20=09=09=09gettext_noop("A=20value=20of=200=20= turns=20off=20the=20timeout."),=0A=20=09=09=09GUC_UNIT_MS=0A@@=20-2635,7=20= +2635,7=20@@=20static=20struct=20config_int=20ConfigureNamesInt[]=20=3D=0A= =20=09},=0A=20=0A=20=09{=0A-=09=09{"vacuum_freeze_min_age",=20= PGC_USERSET,=20CLIENT_CONN_STATEMENT,=0A+=09=09{"vacuum_freeze_min_age",=20= PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20=09=09=09gettext_noop("Minimum=20= age=20at=20which=20VACUUM=20should=20freeze=20a=20table=20row."),=0A=20=09= =09=09NULL=0A=20=09=09},=0A@@=20-2645,7=20+2645,7=20@@=20static=20struct=20= config_int=20ConfigureNamesInt[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"vacuum_freeze_table_age",=20PGC_USERSET,=20CLIENT_CONN_STATEMENT,=0A+=09= =09{"vacuum_freeze_table_age",=20PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20= =09=09=09gettext_noop("Age=20at=20which=20VACUUM=20should=20scan=20whole=20= table=20to=20freeze=20tuples."),=0A=20=09=09=09NULL=0A=20=09=09},=0A@@=20= -2655,7=20+2655,7=20@@=20static=20struct=20config_int=20= ConfigureNamesInt[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"vacuum_multixact_freeze_min_age",=20PGC_USERSET,=20= CLIENT_CONN_STATEMENT,=0A+=09=09{"vacuum_multixact_freeze_min_age",=20= PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20=09=09=09gettext_noop("Minimum=20= age=20at=20which=20VACUUM=20should=20freeze=20a=20MultiXactId=20in=20a=20= table=20row."),=0A=20=09=09=09NULL=0A=20=09=09},=0A@@=20-2665,7=20= +2665,7=20@@=20static=20struct=20config_int=20ConfigureNamesInt[]=20=3D=0A= =20=09},=0A=20=0A=20=09{=0A-=09=09{"vacuum_multixact_freeze_table_age",=20= PGC_USERSET,=20CLIENT_CONN_STATEMENT,=0A+=09=09= {"vacuum_multixact_freeze_table_age",=20PGC_SUSET,=20= CLIENT_CONN_STATEMENT,=0A=20=09=09=09gettext_noop("Multixact=20age=20at=20= which=20VACUUM=20should=20scan=20whole=20table=20to=20freeze=20= tuples."),=0A=20=09=09=09NULL=0A=20=09=09},=0A@@=20-2684,7=20+2684,7=20= @@=20static=20struct=20config_int=20ConfigureNamesInt[]=20=3D=0A=20=09=09= NULL,=20NULL,=20NULL=0A=20=09},=0A=20=09{=0A-=09=09= {"vacuum_failsafe_age",=20PGC_USERSET,=20CLIENT_CONN_STATEMENT,=0A+=09=09= {"vacuum_failsafe_age",=20PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20=09=09= =09gettext_noop("Age=20at=20which=20VACUUM=20should=20trigger=20failsafe=20= to=20avoid=20a=20wraparound=20outage."),=0A=20=09=09=09NULL=0A=20=09=09= },=0A@@=20-2693,7=20+2693,7=20@@=20static=20struct=20config_int=20= ConfigureNamesInt[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A=20=09},=0A=20= =09{=0A-=09=09{"vacuum_multixact_failsafe_age",=20PGC_USERSET,=20= CLIENT_CONN_STATEMENT,=0A+=09=09{"vacuum_multixact_failsafe_age",=20= PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20=09=09=09= gettext_noop("Multixact=20age=20at=20which=20VACUUM=20should=20trigger=20= failsafe=20to=20avoid=20a=20wraparound=20outage."),=0A=20=09=09=09NULL=0A= =20=09=09},=0A@@=20-2881,7=20+2881,7=20@@=20static=20struct=20config_int=20= ConfigureNamesInt[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"wal_skip_threshold",=20PGC_USERSET,=20WAL_SETTINGS,=0A+=09=09= {"wal_skip_threshold",=20PGC_SUSET,=20WAL_SETTINGS,=0A=20=09=09=09= gettext_noop("Minimum=20size=20of=20new=20file=20to=20fsync=20instead=20= of=20writing=20WAL."),=0A=20=09=09=09NULL,=0A=20=09=09=09GUC_UNIT_KB=0A= @@=20-2926,7=20+2926,7=20@@=20static=20struct=20config_int=20= ConfigureNamesInt[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"wal_sender_timeout",=20PGC_USERSET,=20REPLICATION_SENDING,=0A+=09=09= {"wal_sender_timeout",=20PGC_SUSET,=20REPLICATION_SENDING,=0A=20=09=09=09= gettext_noop("Sets=20the=20maximum=20time=20to=20wait=20for=20WAL=20= replication."),=0A=20=09=09=09NULL,=0A=20=09=09=09GUC_UNIT_MS=0A@@=20= -2949,7=20+2949,7=20@@=20static=20struct=20config_int=20= ConfigureNamesInt[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"commit_siblings",=20PGC_USERSET,=20WAL_SETTINGS,=0A+=09=09= {"commit_siblings",=20PGC_SUSET,=20WAL_SETTINGS,=0A=20=09=09=09= gettext_noop("Sets=20the=20minimum=20number=20of=20concurrent=20open=20= transactions=20"=0A=20=09=09=09=09=09=09=20"required=20before=20= performing=20commit_delay."),=0A=20=09=09=09NULL=0A@@=20-2960,7=20= +2960,7=20@@=20static=20struct=20config_int=20ConfigureNamesInt[]=20=3D=0A= =20=09},=0A=20=0A=20=09{=0A-=09=09{"extra_float_digits",=20PGC_USERSET,=20= CLIENT_CONN_LOCALE,=0A+=09=09{"extra_float_digits",=20PGC_SUSET,=20= CLIENT_CONN_LOCALE,=0A=20=09=09=09gettext_noop("Sets=20the=20number=20of=20= digits=20displayed=20for=20floating-point=20values."),=0A=20=09=09=09= gettext_noop("This=20affects=20real,=20double=20precision,=20and=20= geometric=20data=20types.=20"=0A=20=09=09=09=09=09=09=20"A=20zero=20or=20= negative=20parameter=20value=20is=20added=20to=20the=20standard=20"=0A@@=20= -3022,7=20+3022,7=20@@=20static=20struct=20config_int=20= ConfigureNamesInt[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"log_parameter_max_length_on_error",=20PGC_USERSET,=20LOGGING_WHAT,=0A+=09= =09{"log_parameter_max_length_on_error",=20PGC_SUSET,=20LOGGING_WHAT,=0A=20= =09=09=09gettext_noop("Sets=20the=20maximum=20length=20in=20bytes=20of=20= data=20logged=20for=20bind=20"=0A=20=09=09=09=09=09=09=20"parameter=20= values=20when=20logging=20statements,=20on=20error."),=0A=20=09=09=09= gettext_noop("-1=20to=20print=20values=20in=20full."),=0A@@=20-3067,7=20= +3067,7=20@@=20static=20struct=20config_int=20ConfigureNamesInt[]=20=3D=0A= =20=0A=20=09{=0A=20=09=09{"effective_io_concurrency",=0A-=09=09=09= PGC_USERSET,=0A+=09=09=09PGC_SUSET,=0A=20=09=09=09= RESOURCES_ASYNCHRONOUS,=0A=20=09=09=09gettext_noop("Number=20of=20= simultaneous=20requests=20that=20can=20be=20handled=20efficiently=20by=20= the=20disk=20subsystem."),=0A=20=09=09=09NULL,=0A@@=20-3085,7=20+3085,7=20= @@=20static=20struct=20config_int=20ConfigureNamesInt[]=20=3D=0A=20=0A=20= =09{=0A=20=09=09{"maintenance_io_concurrency",=0A-=09=09=09PGC_USERSET,=0A= +=09=09=09PGC_SUSET,=0A=20=09=09=09RESOURCES_ASYNCHRONOUS,=0A=20=09=09=09= gettext_noop("A=20variant=20of=20effective_io_concurrency=20that=20is=20= used=20for=20maintenance=20work."),=0A=20=09=09=09NULL,=0A@@=20-3102,7=20= +3102,7=20@@=20static=20struct=20config_int=20ConfigureNamesInt[]=20=3D=0A= =20=09},=0A=20=0A=20=09{=0A-=09=09{"backend_flush_after",=20PGC_USERSET,=20= RESOURCES_ASYNCHRONOUS,=0A+=09=09{"backend_flush_after",=20PGC_SUSET,=20= RESOURCES_ASYNCHRONOUS,=0A=20=09=09=09gettext_noop("Number=20of=20pages=20= after=20which=20previously=20performed=20writes=20are=20flushed=20to=20= disk."),=0A=20=09=09=09NULL,=0A=20=09=09=09GUC_UNIT_BLOCKS=0A@@=20= -3334,7=20+3334,7=20@@=20static=20struct=20config_int=20= ConfigureNamesInt[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"max_parallel_maintenance_workers",=20PGC_USERSET,=20= RESOURCES_ASYNCHRONOUS,=0A+=09=09{"max_parallel_maintenance_workers",=20= PGC_SUSET,=20RESOURCES_ASYNCHRONOUS,=0A=20=09=09=09gettext_noop("Sets=20= the=20maximum=20number=20of=20parallel=20processes=20per=20maintenance=20= operation."),=0A=20=09=09=09NULL=0A=20=09=09},=0A@@=20-3344,7=20+3344,7=20= @@=20static=20struct=20config_int=20ConfigureNamesInt[]=20=3D=0A=20=09},=0A= =20=0A=20=09{=0A-=09=09{"max_parallel_workers_per_gather",=20= PGC_USERSET,=20RESOURCES_ASYNCHRONOUS,=0A+=09=09= {"max_parallel_workers_per_gather",=20PGC_SUSET,=20= RESOURCES_ASYNCHRONOUS,=0A=20=09=09=09gettext_noop("Sets=20the=20maximum=20= number=20of=20parallel=20processes=20per=20executor=20node."),=0A=20=09=09= =09NULL,=0A=20=09=09=09GUC_EXPLAIN=0A@@=20-3355,7=20+3355,7=20@@=20= static=20struct=20config_int=20ConfigureNamesInt[]=20=3D=0A=20=09},=0A=20= =0A=20=09{=0A-=09=09{"max_parallel_workers",=20PGC_USERSET,=20= RESOURCES_ASYNCHRONOUS,=0A+=09=09{"max_parallel_workers",=20PGC_SUSET,=20= RESOURCES_ASYNCHRONOUS,=0A=20=09=09=09gettext_noop("Sets=20the=20maximum=20= number=20of=20parallel=20workers=20that=20can=20be=20active=20at=20one=20= time."),=0A=20=09=09=09NULL,=0A=20=09=09=09GUC_EXPLAIN=0A@@=20-3388,7=20= +3388,7=20@@=20static=20struct=20config_int=20ConfigureNamesInt[]=20=3D=0A= =20=09},=0A=20=0A=20=09{=0A-=09=09{"tcp_keepalives_idle",=20PGC_USERSET,=20= CONN_AUTH_SETTINGS,=0A+=09=09{"tcp_keepalives_idle",=20PGC_SUSET,=20= CONN_AUTH_SETTINGS,=0A=20=09=09=09gettext_noop("Time=20between=20issuing=20= TCP=20keepalives."),=0A=20=09=09=09gettext_noop("A=20value=20of=200=20= uses=20the=20system=20default."),=0A=20=09=09=09GUC_UNIT_S=0A@@=20= -3399,7=20+3399,7=20@@=20static=20struct=20config_int=20= ConfigureNamesInt[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"tcp_keepalives_interval",=20PGC_USERSET,=20CONN_AUTH_SETTINGS,=0A+=09=09= {"tcp_keepalives_interval",=20PGC_SUSET,=20CONN_AUTH_SETTINGS,=0A=20=09=09= =09gettext_noop("Time=20between=20TCP=20keepalive=20retransmits."),=0A=20= =09=09=09gettext_noop("A=20value=20of=200=20uses=20the=20system=20= default."),=0A=20=09=09=09GUC_UNIT_S=0A@@=20-3410,7=20+3410,7=20@@=20= static=20struct=20config_int=20ConfigureNamesInt[]=20=3D=0A=20=09},=0A=20= =0A=20=09{=0A-=09=09{"ssl_renegotiation_limit",=20PGC_USERSET,=20= COMPAT_OPTIONS_PREVIOUS,=0A+=09=09{"ssl_renegotiation_limit",=20= PGC_SUSET,=20COMPAT_OPTIONS_PREVIOUS,=0A=20=09=09=09gettext_noop("SSL=20= renegotiation=20is=20no=20longer=20supported;=20this=20can=20only=20be=20= 0."),=0A=20=09=09=09NULL,=0A=20=09=09=09GUC_NO_SHOW_ALL=20|=20= GUC_NOT_IN_SAMPLE=20|=20GUC_DISALLOW_IN_FILE,=0A@@=20-3421,7=20+3421,7=20= @@=20static=20struct=20config_int=20ConfigureNamesInt[]=20=3D=0A=20=09},=0A= =20=0A=20=09{=0A-=09=09{"tcp_keepalives_count",=20PGC_USERSET,=20= CONN_AUTH_SETTINGS,=0A+=09=09{"tcp_keepalives_count",=20PGC_SUSET,=20= CONN_AUTH_SETTINGS,=0A=20=09=09=09gettext_noop("Maximum=20number=20of=20= TCP=20keepalive=20retransmits."),=0A=20=09=09=09gettext_noop("This=20= controls=20the=20number=20of=20consecutive=20keepalive=20retransmits=20= that=20can=20be=20"=0A=20=09=09=09=09=09=09=20"lost=20before=20a=20= connection=20is=20considered=20dead.=20A=20value=20of=200=20uses=20the=20= "=0A@@=20-3433,7=20+3433,7=20@@=20static=20struct=20config_int=20= ConfigureNamesInt[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"gin_fuzzy_search_limit",=20PGC_USERSET,=20CLIENT_CONN_OTHER,=0A+=09=09= {"gin_fuzzy_search_limit",=20PGC_SUSET,=20CLIENT_CONN_OTHER,=0A=20=09=09=09= gettext_noop("Sets=20the=20maximum=20allowed=20result=20for=20exact=20= search=20by=20GIN."),=0A=20=09=09=09NULL,=0A=20=09=09=090=0A@@=20-3444,7=20= +3444,7=20@@=20static=20struct=20config_int=20ConfigureNamesInt[]=20=3D=0A= =20=09},=0A=20=0A=20=09{=0A-=09=09{"effective_cache_size",=20= PGC_USERSET,=20QUERY_TUNING_COST,=0A+=09=09{"effective_cache_size",=20= PGC_SUSET,=20QUERY_TUNING_COST,=0A=20=09=09=09gettext_noop("Sets=20the=20= planner's=20assumption=20about=20the=20total=20size=20of=20the=20data=20= caches."),=0A=20=09=09=09gettext_noop("That=20is,=20the=20total=20size=20= of=20the=20caches=20(kernel=20cache=20and=20shared=20buffers)=20used=20= for=20PostgreSQL=20data=20files.=20"=0A=20=09=09=09=09=09=09=20"This=20= is=20measured=20in=20disk=20pages,=20which=20are=20normally=208=20kB=20= each."),=0A@@=20-3456,7=20+3456,7=20@@=20static=20struct=20config_int=20= ConfigureNamesInt[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"min_parallel_table_scan_size",=20PGC_USERSET,=20QUERY_TUNING_COST,=0A+=09= =09{"min_parallel_table_scan_size",=20PGC_SUSET,=20QUERY_TUNING_COST,=0A=20= =09=09=09gettext_noop("Sets=20the=20minimum=20amount=20of=20table=20data=20= for=20a=20parallel=20scan."),=0A=20=09=09=09gettext_noop("If=20the=20= planner=20estimates=20that=20it=20will=20read=20a=20number=20of=20table=20= pages=20too=20small=20to=20reach=20this=20limit,=20a=20parallel=20scan=20= will=20not=20be=20considered."),=0A=20=09=09=09GUC_UNIT_BLOCKS=20|=20= GUC_EXPLAIN,=0A@@=20-3467,7=20+3467,7=20@@=20static=20struct=20= config_int=20ConfigureNamesInt[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"min_parallel_index_scan_size",=20PGC_USERSET,=20QUERY_TUNING_COST,=0A+=09= =09{"min_parallel_index_scan_size",=20PGC_SUSET,=20QUERY_TUNING_COST,=0A=20= =09=09=09gettext_noop("Sets=20the=20minimum=20amount=20of=20index=20data=20= for=20a=20parallel=20scan."),=0A=20=09=09=09gettext_noop("If=20the=20= planner=20estimates=20that=20it=20will=20read=20a=20number=20of=20index=20= pages=20too=20small=20to=20reach=20this=20limit,=20a=20parallel=20scan=20= will=20not=20be=20considered."),=0A=20=09=09=09GUC_UNIT_BLOCKS=20|=20= GUC_EXPLAIN,=0A@@=20-3512,7=20+3512,7=20@@=20static=20struct=20= config_int=20ConfigureNamesInt[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"gin_pending_list_limit",=20PGC_USERSET,=20CLIENT_CONN_STATEMENT,=0A+=09= =09{"gin_pending_list_limit",=20PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20= =09=09=09gettext_noop("Sets=20the=20maximum=20size=20of=20the=20pending=20= list=20for=20GIN=20index."),=0A=20=09=09=09NULL,=0A=20=09=09=09= GUC_UNIT_KB=0A@@=20-3523,7=20+3523,7=20@@=20static=20struct=20config_int=20= ConfigureNamesInt[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"tcp_user_timeout",=20PGC_USERSET,=20CONN_AUTH_SETTINGS,=0A+=09=09= {"tcp_user_timeout",=20PGC_SUSET,=20CONN_AUTH_SETTINGS,=0A=20=09=09=09= gettext_noop("TCP=20user=20timeout."),=0A=20=09=09=09gettext_noop("A=20= value=20of=200=20uses=20the=20system=20default."),=0A=20=09=09=09= GUC_UNIT_MS=0A@@=20-3568,7=20+3568,7=20@@=20static=20struct=20config_int=20= ConfigureNamesInt[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"client_connection_check_interval",=20PGC_USERSET,=20= CONN_AUTH_SETTINGS,=0A+=09=09{"client_connection_check_interval",=20= PGC_SUSET,=20CONN_AUTH_SETTINGS,=0A=20=09=09=09gettext_noop("Sets=20the=20= time=20interval=20between=20checks=20for=20disconnection=20while=20= running=20queries."),=0A=20=09=09=09NULL,=0A=20=09=09=09GUC_UNIT_MS=0A@@=20= -3600,7=20+3600,7=20@@=20static=20struct=20config_int=20= ConfigureNamesInt[]=20=3D=0A=20static=20struct=20config_real=20= ConfigureNamesReal[]=20=3D=0A=20{=0A=20=09{=0A-=09=09{"seq_page_cost",=20= PGC_USERSET,=20QUERY_TUNING_COST,=0A+=09=09{"seq_page_cost",=20= PGC_SUSET,=20QUERY_TUNING_COST,=0A=20=09=09=09gettext_noop("Sets=20the=20= planner's=20estimate=20of=20the=20cost=20of=20a=20"=0A=20=09=09=09=09=09=09= =20"sequentially=20fetched=20disk=20page."),=0A=20=09=09=09NULL,=0A@@=20= -3611,7=20+3611,7=20@@=20static=20struct=20config_real=20= ConfigureNamesReal[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A=20=09},=0A=20= =09{=0A-=09=09{"random_page_cost",=20PGC_USERSET,=20QUERY_TUNING_COST,=0A= +=09=09{"random_page_cost",=20PGC_SUSET,=20QUERY_TUNING_COST,=0A=20=09=09= =09gettext_noop("Sets=20the=20planner's=20estimate=20of=20the=20cost=20= of=20a=20"=0A=20=09=09=09=09=09=09=20"nonsequentially=20fetched=20disk=20= page."),=0A=20=09=09=09NULL,=0A@@=20-3622,7=20+3622,7=20@@=20static=20= struct=20config_real=20ConfigureNamesReal[]=20=3D=0A=20=09=09NULL,=20= NULL,=20NULL=0A=20=09},=0A=20=09{=0A-=09=09{"cpu_tuple_cost",=20= PGC_USERSET,=20QUERY_TUNING_COST,=0A+=09=09{"cpu_tuple_cost",=20= PGC_SUSET,=20QUERY_TUNING_COST,=0A=20=09=09=09gettext_noop("Sets=20the=20= planner's=20estimate=20of=20the=20cost=20of=20"=0A=20=09=09=09=09=09=09=20= "processing=20each=20tuple=20(row)."),=0A=20=09=09=09NULL,=0A@@=20= -3633,7=20+3633,7=20@@=20static=20struct=20config_real=20= ConfigureNamesReal[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A=20=09},=0A=20= =09{=0A-=09=09{"cpu_index_tuple_cost",=20PGC_USERSET,=20= QUERY_TUNING_COST,=0A+=09=09{"cpu_index_tuple_cost",=20PGC_SUSET,=20= QUERY_TUNING_COST,=0A=20=09=09=09gettext_noop("Sets=20the=20planner's=20= estimate=20of=20the=20cost=20of=20"=0A=20=09=09=09=09=09=09=20= "processing=20each=20index=20entry=20during=20an=20index=20scan."),=0A=20= =09=09=09NULL,=0A@@=20-3644,7=20+3644,7=20@@=20static=20struct=20= config_real=20ConfigureNamesReal[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A= =20=09},=0A=20=09{=0A-=09=09{"cpu_operator_cost",=20PGC_USERSET,=20= QUERY_TUNING_COST,=0A+=09=09{"cpu_operator_cost",=20PGC_SUSET,=20= QUERY_TUNING_COST,=0A=20=09=09=09gettext_noop("Sets=20the=20planner's=20= estimate=20of=20the=20cost=20of=20"=0A=20=09=09=09=09=09=09=20= "processing=20each=20operator=20or=20function=20call."),=0A=20=09=09=09= NULL,=0A@@=20-3655,7=20+3655,7=20@@=20static=20struct=20config_real=20= ConfigureNamesReal[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A=20=09},=0A=20= =09{=0A-=09=09{"parallel_tuple_cost",=20PGC_USERSET,=20= QUERY_TUNING_COST,=0A+=09=09{"parallel_tuple_cost",=20PGC_SUSET,=20= QUERY_TUNING_COST,=0A=20=09=09=09gettext_noop("Sets=20the=20planner's=20= estimate=20of=20the=20cost=20of=20"=0A=20=09=09=09=09=09=09=20"passing=20= each=20tuple=20(row)=20from=20worker=20to=20leader=20backend."),=0A=20=09= =09=09NULL,=0A@@=20-3666,7=20+3666,7=20@@=20static=20struct=20= config_real=20ConfigureNamesReal[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A= =20=09},=0A=20=09{=0A-=09=09{"parallel_setup_cost",=20PGC_USERSET,=20= QUERY_TUNING_COST,=0A+=09=09{"parallel_setup_cost",=20PGC_SUSET,=20= QUERY_TUNING_COST,=0A=20=09=09=09gettext_noop("Sets=20the=20planner's=20= estimate=20of=20the=20cost=20of=20"=0A=20=09=09=09=09=09=09=20"starting=20= up=20worker=20processes=20for=20parallel=20query."),=0A=20=09=09=09NULL,=0A= @@=20-3678,7=20+3678,7=20@@=20static=20struct=20config_real=20= ConfigureNamesReal[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"jit_above_cost",=20PGC_USERSET,=20QUERY_TUNING_COST,=0A+=09=09= {"jit_above_cost",=20PGC_SUSET,=20QUERY_TUNING_COST,=0A=20=09=09=09= gettext_noop("Perform=20JIT=20compilation=20if=20query=20is=20more=20= expensive."),=0A=20=09=09=09gettext_noop("-1=20disables=20JIT=20= compilation."),=0A=20=09=09=09GUC_EXPLAIN=0A@@=20-3689,7=20+3689,7=20@@=20= static=20struct=20config_real=20ConfigureNamesReal[]=20=3D=0A=20=09},=0A=20= =0A=20=09{=0A-=09=09{"jit_optimize_above_cost",=20PGC_USERSET,=20= QUERY_TUNING_COST,=0A+=09=09{"jit_optimize_above_cost",=20PGC_SUSET,=20= QUERY_TUNING_COST,=0A=20=09=09=09gettext_noop("Optimize=20JIT-compiled=20= functions=20if=20query=20is=20more=20expensive."),=0A=20=09=09=09= gettext_noop("-1=20disables=20optimization."),=0A=20=09=09=09GUC_EXPLAIN=0A= @@=20-3700,7=20+3700,7=20@@=20static=20struct=20config_real=20= ConfigureNamesReal[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"jit_inline_above_cost",=20PGC_USERSET,=20QUERY_TUNING_COST,=0A+=09=09= {"jit_inline_above_cost",=20PGC_SUSET,=20QUERY_TUNING_COST,=0A=20=09=09=09= gettext_noop("Perform=20JIT=20inlining=20if=20query=20is=20more=20= expensive."),=0A=20=09=09=09gettext_noop("-1=20disables=20inlining."),=0A= =20=09=09=09GUC_EXPLAIN=0A@@=20-3711,7=20+3711,7=20@@=20static=20struct=20= config_real=20ConfigureNamesReal[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09= =09{"cursor_tuple_fraction",=20PGC_USERSET,=20QUERY_TUNING_OTHER,=0A+=09=09= {"cursor_tuple_fraction",=20PGC_SUSET,=20QUERY_TUNING_OTHER,=0A=20=09=09=09= gettext_noop("Sets=20the=20planner's=20estimate=20of=20the=20fraction=20= of=20"=0A=20=09=09=09=09=09=09=20"a=20cursor's=20rows=20that=20will=20be=20= retrieved."),=0A=20=09=09=09NULL,=0A@@=20-3723,7=20+3723,7=20@@=20static=20= struct=20config_real=20ConfigureNamesReal[]=20=3D=0A=20=09},=0A=20=0A=20=09= {=0A-=09=09{"geqo_selection_bias",=20PGC_USERSET,=20QUERY_TUNING_GEQO,=0A= +=09=09{"geqo_selection_bias",=20PGC_SUSET,=20QUERY_TUNING_GEQO,=0A=20=09= =09=09gettext_noop("GEQO:=20selective=20pressure=20within=20the=20= population."),=0A=20=09=09=09NULL,=0A=20=09=09=09GUC_EXPLAIN=0A@@=20= -3734,7=20+3734,7=20@@=20static=20struct=20config_real=20= ConfigureNamesReal[]=20=3D=0A=20=09=09NULL,=20NULL,=20NULL=0A=20=09},=0A=20= =09{=0A-=09=09{"geqo_seed",=20PGC_USERSET,=20QUERY_TUNING_GEQO,=0A+=09=09= {"geqo_seed",=20PGC_SUSET,=20QUERY_TUNING_GEQO,=0A=20=09=09=09= gettext_noop("GEQO:=20seed=20for=20random=20path=20selection."),=0A=20=09= =09=09NULL,=0A=20=09=09=09GUC_EXPLAIN=0A@@=20-3745,7=20+3745,7=20@@=20= static=20struct=20config_real=20ConfigureNamesReal[]=20=3D=0A=20=09},=0A=20= =0A=20=09{=0A-=09=09{"hash_mem_multiplier",=20PGC_USERSET,=20= RESOURCES_MEM,=0A+=09=09{"hash_mem_multiplier",=20PGC_SUSET,=20= RESOURCES_MEM,=0A=20=09=09=09gettext_noop("Multiple=20of=20work_mem=20to=20= use=20for=20hash=20tables."),=0A=20=09=09=09NULL,=0A=20=09=09=09= GUC_EXPLAIN=0A@@=20-3766,7=20+3766,7=20@@=20static=20struct=20= config_real=20ConfigureNamesReal[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09= =09{"seed",=20PGC_USERSET,=20UNGROUPED,=0A+=09=09{"seed",=20PGC_SUSET,=20= UNGROUPED,=0A=20=09=09=09gettext_noop("Sets=20the=20seed=20for=20= random-number=20generation."),=0A=20=09=09=09NULL,=0A=20=09=09=09= GUC_NO_SHOW_ALL=20|=20GUC_NO_RESET_ALL=20|=20GUC_NOT_IN_SAMPLE=20|=20= GUC_DISALLOW_IN_FILE=0A@@=20-3777,7=20+3777,7=20@@=20static=20struct=20= config_real=20ConfigureNamesReal[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09= =09{"vacuum_cost_delay",=20PGC_USERSET,=20RESOURCES_VACUUM_DELAY,=0A+=09=09= {"vacuum_cost_delay",=20PGC_SUSET,=20RESOURCES_VACUUM_DELAY,=0A=20=09=09=09= gettext_noop("Vacuum=20cost=20delay=20in=20milliseconds."),=0A=20=09=09=09= NULL,=0A=20=09=09=09GUC_UNIT_MS=0A@@=20-4027,7=20+4027,7=20@@=20static=20= struct=20config_string=20ConfigureNamesString[]=20=3D=0A=20=09},=0A=20=0A= =20=09{=0A-=09=09{"DateStyle",=20PGC_USERSET,=20CLIENT_CONN_LOCALE,=0A+=09= =09{"DateStyle",=20PGC_SUSET,=20CLIENT_CONN_LOCALE,=0A=20=09=09=09= gettext_noop("Sets=20the=20display=20format=20for=20date=20and=20time=20= values."),=0A=20=09=09=09gettext_noop("Also=20controls=20interpretation=20= of=20ambiguous=20"=0A=20=09=09=09=09=09=09=20"date=20inputs."),=0A@@=20= -4039,7=20+4039,7=20@@=20static=20struct=20config_string=20= ConfigureNamesString[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"default_table_access_method",=20PGC_USERSET,=20CLIENT_CONN_STATEMENT,=0A= +=09=09{"default_table_access_method",=20PGC_SUSET,=20= CLIENT_CONN_STATEMENT,=0A=20=09=09=09gettext_noop("Sets=20the=20default=20= table=20access=20method=20for=20new=20tables."),=0A=20=09=09=09NULL,=0A=20= =09=09=09GUC_IS_NAME=0A@@=20-4050,7=20+4050,7=20@@=20static=20struct=20= config_string=20ConfigureNamesString[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A= -=09=09{"default_tablespace",=20PGC_USERSET,=20CLIENT_CONN_STATEMENT,=0A= +=09=09{"default_tablespace",=20PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20= =09=09=09gettext_noop("Sets=20the=20default=20tablespace=20to=20create=20= tables=20and=20indexes=20in."),=0A=20=09=09=09gettext_noop("An=20empty=20= string=20selects=20the=20database's=20default=20tablespace."),=0A=20=09=09= =09GUC_IS_NAME=0A@@=20-4061,7=20+4061,7=20@@=20static=20struct=20= config_string=20ConfigureNamesString[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A= -=09=09{"temp_tablespaces",=20PGC_USERSET,=20CLIENT_CONN_STATEMENT,=0A+=09= =09{"temp_tablespaces",=20PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20=09=09= =09gettext_noop("Sets=20the=20tablespace(s)=20to=20use=20for=20temporary=20= tables=20and=20sort=20files."),=0A=20=09=09=09NULL,=0A=20=09=09=09= GUC_LIST_INPUT=20|=20GUC_LIST_QUOTE=0A@@=20-4141,7=20+4141,7=20@@=20= static=20struct=20config_string=20ConfigureNamesString[]=20=3D=0A=20=09= },=0A=20=0A=20=09{=0A-=09=09{"lc_monetary",=20PGC_USERSET,=20= CLIENT_CONN_LOCALE,=0A+=09=09{"lc_monetary",=20PGC_SUSET,=20= CLIENT_CONN_LOCALE,=0A=20=09=09=09gettext_noop("Sets=20the=20locale=20= for=20formatting=20monetary=20amounts."),=0A=20=09=09=09NULL=0A=20=09=09= },=0A@@=20-4151,7=20+4151,7=20@@=20static=20struct=20config_string=20= ConfigureNamesString[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"lc_numeric",=20PGC_USERSET,=20CLIENT_CONN_LOCALE,=0A+=09=09= {"lc_numeric",=20PGC_SUSET,=20CLIENT_CONN_LOCALE,=0A=20=09=09=09= gettext_noop("Sets=20the=20locale=20for=20formatting=20numbers."),=0A=20=09= =09=09NULL=0A=20=09=09},=0A@@=20-4161,7=20+4161,7=20@@=20static=20struct=20= config_string=20ConfigureNamesString[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A= -=09=09{"lc_time",=20PGC_USERSET,=20CLIENT_CONN_LOCALE,=0A+=09=09= {"lc_time",=20PGC_SUSET,=20CLIENT_CONN_LOCALE,=0A=20=09=09=09= gettext_noop("Sets=20the=20locale=20for=20formatting=20date=20and=20time=20= values."),=0A=20=09=09=09NULL=0A=20=09=09},=0A@@=20-4193,7=20+4193,7=20= @@=20static=20struct=20config_string=20ConfigureNamesString[]=20=3D=0A=20= =09},=0A=20=0A=20=09{=0A-=09=09{"local_preload_libraries",=20= PGC_USERSET,=20CLIENT_CONN_PRELOAD,=0A+=09=09{"local_preload_libraries",=20= PGC_SUSET,=20CLIENT_CONN_PRELOAD,=0A=20=09=09=09gettext_noop("Lists=20= unprivileged=20shared=20libraries=20to=20preload=20into=20each=20= backend."),=0A=20=09=09=09NULL,=0A=20=09=09=09GUC_LIST_INPUT=20|=20= GUC_LIST_QUOTE=0A@@=20-4204,7=20+4204,7=20@@=20static=20struct=20= config_string=20ConfigureNamesString[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A= -=09=09{"search_path",=20PGC_USERSET,=20CLIENT_CONN_STATEMENT,=0A+=09=09= {"search_path",=20PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20=09=09=09= gettext_noop("Sets=20the=20schema=20search=20order=20for=20names=20that=20= are=20not=20schema-qualified."),=0A=20=09=09=09NULL,=0A=20=09=09=09= GUC_LIST_INPUT=20|=20GUC_LIST_QUOTE=20|=20GUC_EXPLAIN=0A@@=20-4240,7=20= +4240,7=20@@=20static=20struct=20config_string=20ConfigureNamesString[]=20= =3D=0A=20=0A=20=09{=0A=20=09=09/*=20Not=20for=20general=20use=20---=20= used=20by=20SET=20ROLE=20*/=0A-=09=09{"role",=20PGC_USERSET,=20= UNGROUPED,=0A+=09=09{"role",=20PGC_SUSET,=20UNGROUPED,=0A=20=09=09=09= gettext_noop("Sets=20the=20current=20role."),=0A=20=09=09=09NULL,=0A=20=09= =09=09GUC_IS_NAME=20|=20GUC_NO_SHOW_ALL=20|=20GUC_NO_RESET_ALL=20|=20= GUC_NOT_IN_SAMPLE=20|=20GUC_DISALLOW_IN_FILE=20|=20= GUC_NOT_WHILE_SEC_REST=0A@@=20-4319,7=20+4319,7=20@@=20static=20struct=20= config_string=20ConfigureNamesString[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A= -=09=09{"TimeZone",=20PGC_USERSET,=20CLIENT_CONN_LOCALE,=0A+=09=09= {"TimeZone",=20PGC_SUSET,=20CLIENT_CONN_LOCALE,=0A=20=09=09=09= gettext_noop("Sets=20the=20time=20zone=20for=20displaying=20and=20= interpreting=20time=20stamps."),=0A=20=09=09=09NULL,=0A=20=09=09=09= GUC_REPORT=0A@@=20-4329,7=20+4329,7=20@@=20static=20struct=20= config_string=20ConfigureNamesString[]=20=3D=0A=20=09=09check_timezone,=20= assign_timezone,=20show_timezone=0A=20=09},=0A=20=09{=0A-=09=09= {"timezone_abbreviations",=20PGC_USERSET,=20CLIENT_CONN_LOCALE,=0A+=09=09= {"timezone_abbreviations",=20PGC_SUSET,=20CLIENT_CONN_LOCALE,=0A=20=09=09= =09gettext_noop("Selects=20a=20file=20of=20time=20zone=20= abbreviations."),=0A=20=09=09=09NULL=0A=20=09=09},=0A@@=20-4522,7=20= +4522,7=20@@=20static=20struct=20config_string=20ConfigureNamesString[]=20= =3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09{"default_text_search_config",=20= PGC_USERSET,=20CLIENT_CONN_LOCALE,=0A+=09=09= {"default_text_search_config",=20PGC_SUSET,=20CLIENT_CONN_LOCALE,=0A=20=09= =09=09gettext_noop("Sets=20default=20text=20search=20configuration."),=0A= =20=09=09=09NULL=0A=20=09=09},=0A@@=20-4584,7=20+4584,7=20@@=20static=20= struct=20config_string=20ConfigureNamesString[]=20=3D=0A=20=09},=0A=20=0A= =20=09{=0A-=09=09{"application_name",=20PGC_USERSET,=20LOGGING_WHAT,=0A+=09= =09{"application_name",=20PGC_SUSET,=20LOGGING_WHAT,=0A=20=09=09=09= gettext_noop("Sets=20the=20application=20name=20to=20be=20reported=20in=20= statistics=20and=20logs."),=0A=20=09=09=09NULL,=0A=20=09=09=09= GUC_IS_NAME=20|=20GUC_REPORT=20|=20GUC_NOT_IN_SAMPLE=0A@@=20-4648,7=20= +4648,7=20@@=20static=20struct=20config_string=20ConfigureNamesString[]=20= =3D=0A=20static=20struct=20config_enum=20ConfigureNamesEnum[]=20=3D=0A=20= {=0A=20=09{=0A-=09=09{"backslash_quote",=20PGC_USERSET,=20= COMPAT_OPTIONS_PREVIOUS,=0A+=09=09{"backslash_quote",=20PGC_SUSET,=20= COMPAT_OPTIONS_PREVIOUS,=0A=20=09=09=09gettext_noop("Sets=20whether=20= \"\\'\"=20is=20allowed=20in=20string=20literals."),=0A=20=09=09=09NULL=0A= =20=09=09},=0A@@=20-4658,7=20+4658,7=20@@=20static=20struct=20= config_enum=20ConfigureNamesEnum[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09= =09{"bytea_output",=20PGC_USERSET,=20CLIENT_CONN_STATEMENT,=0A+=09=09= {"bytea_output",=20PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20=09=09=09= gettext_noop("Sets=20the=20output=20format=20for=20bytea."),=0A=20=09=09=09= NULL=0A=20=09=09},=0A@@=20-4668,7=20+4668,7=20@@=20static=20struct=20= config_enum=20ConfigureNamesEnum[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09= =09{"client_min_messages",=20PGC_USERSET,=20CLIENT_CONN_STATEMENT,=0A+=09= =09{"client_min_messages",=20PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20=09= =09=09gettext_noop("Sets=20the=20message=20levels=20that=20are=20sent=20= to=20the=20client."),=0A=20=09=09=09gettext_noop("Each=20level=20= includes=20all=20the=20levels=20that=20follow=20it.=20The=20later"=0A=20=09= =09=09=09=09=09=20"=20the=20level,=20the=20fewer=20messages=20are=20= sent.")=0A@@=20-4689,7=20+4689,7=20@@=20static=20struct=20config_enum=20= ConfigureNamesEnum[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"constraint_exclusion",=20PGC_USERSET,=20QUERY_TUNING_OTHER,=0A+=09=09= {"constraint_exclusion",=20PGC_SUSET,=20QUERY_TUNING_OTHER,=0A=20=09=09=09= gettext_noop("Enables=20the=20planner=20to=20use=20constraints=20to=20= optimize=20queries."),=0A=20=09=09=09gettext_noop("Table=20scans=20will=20= be=20skipped=20if=20their=20constraints"=0A=20=09=09=09=09=09=09=20"=20= guarantee=20that=20no=20rows=20match=20the=20query."),=0A@@=20-4701,7=20= +4701,7=20@@=20static=20struct=20config_enum=20ConfigureNamesEnum[]=20=3D=0A= =20=09},=0A=20=0A=20=09{=0A-=09=09{"default_toast_compression",=20= PGC_USERSET,=20CLIENT_CONN_STATEMENT,=0A+=09=09= {"default_toast_compression",=20PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20= =09=09=09gettext_noop("Sets=20the=20default=20compression=20method=20for=20= compressible=20values."),=0A=20=09=09=09NULL=0A=20=09=09},=0A@@=20= -4712,7=20+4712,7=20@@=20static=20struct=20config_enum=20= ConfigureNamesEnum[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"default_transaction_isolation",=20PGC_USERSET,=20= CLIENT_CONN_STATEMENT,=0A+=09=09{"default_transaction_isolation",=20= PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20=09=09=09gettext_noop("Sets=20= the=20transaction=20isolation=20level=20of=20each=20new=20= transaction."),=0A=20=09=09=09NULL=0A=20=09=09},=0A@@=20-4722,7=20= +4722,7=20@@=20static=20struct=20config_enum=20ConfigureNamesEnum[]=20=3D=0A= =20=09},=0A=20=0A=20=09{=0A-=09=09{"transaction_isolation",=20= PGC_USERSET,=20CLIENT_CONN_STATEMENT,=0A+=09=09{"transaction_isolation",=20= PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20=09=09=09gettext_noop("Sets=20= the=20current=20transaction's=20isolation=20level."),=0A=20=09=09=09= NULL,=0A=20=09=09=09GUC_NO_RESET_ALL=20|=20GUC_NOT_IN_SAMPLE=20|=20= GUC_DISALLOW_IN_FILE=0A@@=20-4733,7=20+4733,7=20@@=20static=20struct=20= config_enum=20ConfigureNamesEnum[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09= =09{"IntervalStyle",=20PGC_USERSET,=20CLIENT_CONN_LOCALE,=0A+=09=09= {"IntervalStyle",=20PGC_SUSET,=20CLIENT_CONN_LOCALE,=0A=20=09=09=09= gettext_noop("Sets=20the=20display=20format=20for=20interval=20= values."),=0A=20=09=09=09NULL,=0A=20=09=09=09GUC_REPORT=0A@@=20-4811,7=20= +4811,7=20@@=20static=20struct=20config_enum=20ConfigureNamesEnum[]=20=3D=0A= =20=09},=0A=20=0A=20=09{=0A-=09=09{"synchronous_commit",=20PGC_USERSET,=20= WAL_SETTINGS,=0A+=09=09{"synchronous_commit",=20PGC_SUSET,=20= WAL_SETTINGS,=0A=20=09=09=09gettext_noop("Sets=20the=20current=20= transaction's=20synchronization=20level."),=0A=20=09=09=09NULL=0A=20=09=09= },=0A@@=20-4918,7=20+4918,7=20@@=20static=20struct=20config_enum=20= ConfigureNamesEnum[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09=09= {"xmlbinary",=20PGC_USERSET,=20CLIENT_CONN_STATEMENT,=0A+=09=09= {"xmlbinary",=20PGC_SUSET,=20CLIENT_CONN_STATEMENT,=0A=20=09=09=09= gettext_noop("Sets=20how=20binary=20values=20are=20to=20be=20encoded=20= in=20XML."),=0A=20=09=09=09NULL=0A=20=09=09},=0A@@=20-4928,7=20+4928,7=20= @@=20static=20struct=20config_enum=20ConfigureNamesEnum[]=20=3D=0A=20=09= },=0A=20=0A=20=09{=0A-=09=09{"xmloption",=20PGC_USERSET,=20= CLIENT_CONN_STATEMENT,=0A+=09=09{"xmloption",=20PGC_SUSET,=20= CLIENT_CONN_STATEMENT,=0A=20=09=09=09gettext_noop("Sets=20whether=20XML=20= data=20in=20implicit=20parsing=20and=20serialization=20"=0A=20=09=09=09=09= =09=09=20"operations=20is=20to=20be=20considered=20as=20documents=20or=20= content=20fragments."),=0A=20=09=09=09NULL=0A@@=20-4949,7=20+4949,7=20@@=20= static=20struct=20config_enum=20ConfigureNamesEnum[]=20=3D=0A=20=09},=0A=20= =0A=20=09{=0A-=09=09{"force_parallel_mode",=20PGC_USERSET,=20= DEVELOPER_OPTIONS,=0A+=09=09{"force_parallel_mode",=20PGC_SUSET,=20= DEVELOPER_OPTIONS,=0A=20=09=09=09gettext_noop("Forces=20use=20of=20= parallel=20query=20facilities."),=0A=20=09=09=09gettext_noop("If=20= possible,=20run=20query=20using=20a=20parallel=20worker=20and=20with=20= parallel=20restrictions."),=0A=20=09=09=09GUC_NOT_IN_SAMPLE=20|=20= GUC_EXPLAIN=0A@@=20-4960,7=20+4960,7=20@@=20static=20struct=20= config_enum=20ConfigureNamesEnum[]=20=3D=0A=20=09},=0A=20=0A=20=09{=0A-=09= =09{"password_encryption",=20PGC_USERSET,=20CONN_AUTH_AUTH,=0A+=09=09= {"password_encryption",=20PGC_SUSET,=20CONN_AUTH_AUTH,=0A=20=09=09=09= gettext_noop("Chooses=20the=20algorithm=20for=20encrypting=20= passwords."),=0A=20=09=09=09NULL=0A=20=09=09},=0A@@=20-4970,7=20+4970,7=20= @@=20static=20struct=20config_enum=20ConfigureNamesEnum[]=20=3D=0A=20=09= },=0A=20=0A=20=09{=0A-=09=09{"plan_cache_mode",=20PGC_USERSET,=20= QUERY_TUNING_OTHER,=0A+=09=09{"plan_cache_mode",=20PGC_SUSET,=20= QUERY_TUNING_OTHER,=0A=20=09=09=09gettext_noop("Controls=20the=20= planner's=20selection=20of=20custom=20or=20generic=20plan."),=0A=20=09=09= =09gettext_noop("Prepared=20statements=20can=20have=20custom=20and=20= generic=20plans,=20and=20the=20planner=20"=0A=20=09=09=09=09=09=09=20= "will=20attempt=20to=20choose=20which=20is=20better.=20=20This=20can=20= be=20set=20to=20override=20"=0A@@=20-5029,6=20+5029,10=20@@=20static=20= struct=20config_enum=20ConfigureNamesEnum[]=20=3D=0A=20=20*=20the=20= following=20mappings=20to=20any=20unrecognized=20name.=20=20Note=20that=20= an=20old=20name=0A=20=20*=20should=20be=20mapped=20to=20a=20new=20one=20= only=20if=20the=20new=20variable=20has=20very=20similar=0A=20=20*=20= semantics=20to=20the=20old.=0A+=20*=0A+=20*=20If=20you=20deprecate=20a=20= name=20in=20favor=20of=20a=20new=20spelling,=20be=20sure=20to=20consider=20= what=0A+=20*=20upgrade=20support=20will=20be=20needed,=20if=20any,=20for=20= existing=20pg_setting_acl=0A+=20*=20entries.=0A=20=20*/=0A=20static=20= const=20char=20*const=20map_old_guc_names[]=20=3D=20{=0A=20=09= "sort_mem",=20"work_mem",=0A@@=20-5428,25=20+5432,29=20@@=20= add_guc_variable(struct=20config_generic=20*var,=20int=20elevel)=0A=20}=0A= =20=0A=20/*=0A-=20*=20Decide=20whether=20a=20proposed=20custom=20= variable=20name=20is=20allowed.=0A+=20*=20Decide=20whether=20a=20= proposed=20variable=20name=20is=20allowed.=0A=20=20*=0A-=20*=20It=20must=20= be=20two=20or=20more=20identifiers=20separated=20by=20dots,=20where=20= the=20rules=0A-=20*=20for=20what=20is=20an=20identifier=20agree=20with=20= scan.l.=20=20(If=20you=20change=20this=20rule,=0A-=20*=20adjust=20the=20= errdetail=20in=20find_option().)=0A+=20*=20It=20must=20be=20one=20or=20= more=20identifiers=20separated=20by=20zero=20or=20more=20dots,=20where=20= the=0A+=20*=20rules=20for=20what=20is=20an=20identifier=20agree=20with=20= scan.l.=20=20(If=20you=20change=20this=0A+=20*=20rule,=20adjust=20the=20= errdetail=20in=20find_option().)=0A+=20*=0A+=20*=20partcnt:=20returns=20= by=20reference=20the=20number=20of=20dot=20separated=20identifiers.=0A=20= =20*/=0A-static=20bool=0A-valid_custom_variable_name(const=20char=20= *name)=0A+bool=0A+valid_variable_name(const=20char=20*name,=20int=20= *partcnt)=0A=20{=0A-=09bool=09=09saw_sep=20=3D=20false;=0A+=09int=09=09=09= parts=20=3D=201;=0A=20=09bool=09=09name_start=20=3D=20true;=0A=20=0A+=09= if=20(partcnt)=0A+=09=09*partcnt=20=3D=20-1;=0A=20=09for=20(const=20char=20= *p=20=3D=20name;=20*p;=20p++)=0A=20=09{=0A=20=09=09if=20(*p=20=3D=3D=20= GUC_QUALIFIER_SEPARATOR)=0A=20=09=09{=0A=20=09=09=09if=20(name_start)=0A=20= =09=09=09=09return=20false;=09/*=20empty=20name=20component=20*/=0A-=09=09= =09saw_sep=20=3D=20true;=0A+=09=09=09parts++;=0A=20=09=09=09name_start=20= =3D=20true;=0A=20=09=09}=0A=20=09=09else=20if=20= (strchr("ABCDEFGHIJKLMNOPQRSTUVWXYZ"=0A@@=20-5463,8=20+5471,24=20@@=20= valid_custom_variable_name(const=20char=20*name)=0A=20=09}=0A=20=09if=20= (name_start)=0A=20=09=09return=20false;=09=09=09/*=20empty=20name=20= component=20*/=0A-=09/*=20OK=20if=20we=20found=20at=20least=20one=20= separator=20*/=0A-=09return=20saw_sep;=0A+=09if=20(partcnt)=0A+=09=09= *partcnt=20=3D=20parts;=0A+=09return=20true;=0A+}=0A+=0A+/*=0A+=20*=20= Decide=20whether=20a=20proposed=20custom=20variable=20name=20is=20= allowed.=0A+=20*=0A+=20*=20It=20must=20be=20two=20or=20more=20= identifiers=20separated=20by=20dots,=20where=20the=20rules=0A+=20*=20for=20= what=20is=20an=20identifier=20agree=20with=20scan.l.=20=20(If=20you=20= change=20this=20rule,=0A+=20*=20adjust=20the=20errdetail=20in=20= find_option().)=0A+=20*/=0A+static=20bool=0A= +valid_custom_variable_name(const=20char=20*name)=0A+{=0A+=09int=09=09=09= partcnt;=0A+=0A+=09return=20(valid_variable_name(name,=20&partcnt)=20&&=20= partcnt=20>=201);=0A=20}=0A=20=0A=20/*=0A@@=20-7492,6=20+7516,24=20@@=20= set_config_option(const=20char=20*name,=20const=20char=20*value,=0A=20=09= =09case=20PGC_SUSET:=0A=20=09=09=09if=20(context=20=3D=3D=20PGC_USERSET=20= ||=20context=20=3D=3D=20PGC_BACKEND)=0A=20=09=09=09{=0A+=09=09=09=09/*=0A= +=09=09=09=09=20*=20Check=20whether=20the=20current=20user=20has=20= granted=20privilege=20to=20set=0A+=09=09=09=09=20*=20this=20GUC.=0A+=09=09= =09=09=20*/=0A+=09=09=09=09Oid=09=09=09settingid=20=3D=20= get_setting_oid(name,=20true);=0A+=0A+=09=09=09=09if=20= (OidIsValid(settingid))=0A+=09=09=09=09{=0A+=09=09=09=09=09AclResult=09= aclresult;=0A+=0A+=09=09=09=09=09aclresult=20=3D=20= pg_setting_acl_aclcheck(settingid,=20GetUserId(),=0A+=09=09=09=09=09=09=09= =09=09=09=09=09=09=09ACL_SET_VALUE);=0A+=0A+=09=09=09=09=09if=20= (aclresult=20=3D=3D=20ACLCHECK_OK)=0A+=09=09=09=09=09=09break;=09=09/*=20= okay=20*/=0A+=09=09=09=09}=0A+=0A+=09=09=09=09/*=20No=20granted=20= privilege=20*/=0A=20=09=09=09=09ereport(elevel,=0A=20=09=09=09=09=09=09= (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),=0A=20=09=09=09=09=09=09=20= errmsg("permission=20denied=20to=20set=20parameter=20\"%s\"",=0A@@=20= -8541,16=20+8583,32=20@@=20AlterSystemSetConfigFile(AlterSystemStmt=20= *altersysstmt)=0A=20=09char=09=09AutoConfFileName[MAXPGPATH];=0A=20=09= char=09=09AutoConfTmpFileName[MAXPGPATH];=0A=20=0A-=09if=20= (!superuser())=0A-=09=09ereport(ERROR,=0A-=09=09=09=09= (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),=0A-=09=09=09=09=20errmsg("must=20= be=20superuser=20to=20execute=20ALTER=20SYSTEM=20command")));=0A-=0A=20=09= /*=0A=20=09=20*=20Extract=20statement=20arguments=0A=20=09=20*/=0A=20=09= name=20=3D=20altersysstmt->setstmt->name;=0A=20=0A+=09/*=0A+=09=20*=20= Check=20permission=20to=20run=20ALTER=20SYSTEM=20on=20the=20target=20= variable=20registered.=0A+=09=20*/=0A+=09if=20(!superuser())=0A+=09{=0A+=09= =09AclResult=09aclresult;=0A+=09=09Oid=09=09=09settingId;=0A+=0A+=09=09= settingId=20=3D=20get_setting_oid(name,=20true);=0A+=09=09if=20= (!OidIsValid(settingId))=0A+=09=09=09ereport(ERROR,=0A+=09=09=09=09=09= (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),=0A+=09=09=09=09=09=20= errmsg("permission=20denied=20to=20set=20parameter=20\"%s\"",=0A+=09=09=09= =09=09=09=09name)));=0A+=0A+=09=09aclresult=20=3D=20= pg_setting_acl_aclcheck(settingId,=20GetUserId(),=0A+=09=09=09=09=09=09=09= =09=09=09=09=20ACL_ALTER_SYSTEM);=0A+=09=09if=20(aclresult=20!=3D=20= ACLCHECK_OK)=0A+=09=09=09aclcheck_error(aclresult,=20OBJECT_SETTING,=20= name);=0A+=09}=0A+=0A=20=09switch=20(altersysstmt->setstmt->kind)=0A=20=09= {=0A=20=09=09case=20VAR_SET_VALUE:=0A@@=20-8743,6=20+8801,9=20@@=20void=0A= =20ExecSetVariableStmt(VariableSetStmt=20*stmt,=20bool=20isTopLevel)=0A=20= {=0A=20=09GucAction=09action=20=3D=20stmt->is_local=20?=20= GUC_ACTION_LOCAL=20:=20GUC_ACTION_SET;=0A+=09GucContext=09context;=0A+=09= AclResult=09aclresult;=0A+=09Oid=09=09=09settingId;=0A=20=0A=20=09/*=0A=20= =09=20*=20Workers=20synchronize=20these=20parameters=20at=20the=20start=20= of=20the=20parallel=0A@@=20-8753,6=20+8814,21=20@@=20= ExecSetVariableStmt(VariableSetStmt=20*stmt,=20bool=20isTopLevel)=0A=20=09= =09=09=09(errcode(ERRCODE_INVALID_TRANSACTION_STATE),=0A=20=09=09=09=09=20= errmsg("cannot=20set=20parameters=20during=20a=20parallel=20= operation")));=0A=20=0A+=09/*=0A+=09=20*=20Superusers=20and=20users=20= who=20have=20been=20granted=20SET=20privilege=20can=20set=20with=0A+=09=20= *=20PGC_SUSET=20context.=20=20All=20others=20have=20only=20PGC_USERSET.=0A= +=09=20*/=0A+=09context=20=3D=20PGC_USERSET;=0A+=09if=20(superuser())=0A= +=09=09context=20=3D=20PGC_SUSET;=0A+=09else=20if=20= (OidIsValid(settingId=20=3D=20get_setting_oid(stmt->name,=20true)))=0A+=09= {=0A+=09=09aclresult=20=3D=20pg_setting_acl_aclcheck(settingId,=20= GetUserId(),=0A+=09=09=09=09=09=09=09=09=09=09=09ACL_SET_VALUE);=0A+=09=09= if=20(aclresult=20=3D=3D=20ACLCHECK_OK)=0A+=09=09=09context=20=3D=20= PGC_SUSET;=0A+=09}=0A+=0A=20=09switch=20(stmt->kind)=0A=20=09{=0A=20=09=09= case=20VAR_SET_VALUE:=0A@@=20-8761,7=20+8837,7=20@@=20= ExecSetVariableStmt(VariableSetStmt=20*stmt,=20bool=20isTopLevel)=0A=20=09= =09=09=09WarnNoTransactionBlock(isTopLevel,=20"SET=20LOCAL");=0A=20=09=09= =09(void)=20set_config_option(stmt->name,=0A=20=09=09=09=09=09=09=09=09=09= =20ExtractSetVariableArgs(stmt),=0A-=09=09=09=09=09=09=09=09=09=20= (superuser()=20?=20PGC_SUSET=20:=20PGC_USERSET),=0A+=09=09=09=09=09=09=09= =09=09=20context,=0A=20=09=09=09=09=09=09=09=09=09=20PGC_S_SESSION,=0A=20= =09=09=09=09=09=09=09=09=09=20action,=20true,=200,=20false);=0A=20=09=09=09= check_reserved_prefixes(stmt->name);=0A@@=20-8847,7=20+8923,7=20@@=20= ExecSetVariableStmt(VariableSetStmt=20*stmt,=20bool=20isTopLevel)=0A=20=0A= =20=09=09=09(void)=20set_config_option(stmt->name,=0A=20=09=09=09=09=09=09= =09=09=09=20NULL,=0A-=09=09=09=09=09=09=09=09=09=20(superuser()=20?=20= PGC_SUSET=20:=20PGC_USERSET),=0A+=09=09=09=09=09=09=09=09=09=20context,=0A= =20=09=09=09=09=09=09=09=09=09=20PGC_S_SESSION,=0A=20=09=09=09=09=09=09=09= =09=09=20action,=20true,=200,=20false);=0A=20=0A@@=20-9631,6=20+9707,22=20= @@=20get_explain_guc_options(int=20*num)=0A=20=09return=20result;=0A=20}=0A= =20=0A+/*=0A+=20*=20Return=20GUC=20variable=20canonical=20name,=20or=20= NULL=20if=20no=20variable=20by=20the=20given=0A+=20*=20name=20or=20alias=20= exists.=0A+=20*/=0A+const=20char=20*=0A= +GetConfigOptionCanonicalName(const=20char=20*alias)=0A+{=0A+=09struct=20= config_generic=20*record;=0A+=0A+=09record=20=3D=20find_option(alias,=20= false,=20true,=20LOG);=0A+=09if=20(record=20=3D=3D=20NULL)=0A+=09=09= return=20NULL;=0A+=0A+=09return=20record->name;=0A+}=0A+=0A=20/*=0A=20=20= *=20Return=20GUC=20variable=20value=20by=20name;=20optionally=20return=20= canonical=20form=20of=0A=20=20*=20name.=20=20If=20the=20GUC=20is=20= unset,=20then=20throw=20an=20error=20unless=20missing_ok=20is=20true,=0A= diff=20--git=20a/src/bin/initdb/initdb.c=20b/src/bin/initdb/initdb.c=0A= index=20403adb0ee7..39fbbabe03=20100644=0A---=20= a/src/bin/initdb/initdb.c=0A+++=20b/src/bin/initdb/initdb.c=0A@@=20= -163,6=20+163,7=20@@=20static=20char=20*features_file;=0A=20static=20= char=20*system_constraints_file;=0A=20static=20char=20= *system_functions_file;=0A=20static=20char=20*system_views_file;=0A= +static=20char=20*setting_privileges_file;=0A=20static=20bool=20success=20= =3D=20false;=0A=20static=20bool=20made_new_pgdata=20=3D=20false;=0A=20= static=20bool=20found_existing_pgdata=20=3D=20false;=0A@@=20-2441,6=20= +2442,7=20@@=20setup_data_file_paths(void)=0A=20=09= set_input(&system_constraints_file,=20"system_constraints.sql");=0A=20=09= set_input(&system_functions_file,=20"system_functions.sql");=0A=20=09= set_input(&system_views_file,=20"system_views.sql");=0A+=09= set_input(&setting_privileges_file,=20"setting_privileges.sql");=0A=20=0A= =20=09if=20(show_setting=20||=20debug)=0A=20=09{=0A@@=20-2469,6=20= +2471,7=20@@=20setup_data_file_paths(void)=0A=20=09= check_input(system_constraints_file);=0A=20=09= check_input(system_functions_file);=0A=20=09= check_input(system_views_file);=0A+=09= check_input(setting_privileges_file);=0A=20}=0A=20=0A=20=0A@@=20-2816,6=20= +2819,8=20@@=20initialize_data_directory(void)=0A=20=0A=20=09= setup_run_file(cmdfd,=20system_views_file);=0A=20=0A+=09= setup_run_file(cmdfd,=20setting_privileges_file);=0A+=0A=20=09= setup_description(cmdfd);=0A=20=0A=20=09setup_collation(cmdfd);=0Adiff=20= --git=20a/src/bin/pg_dump/dumputils.c=20b/src/bin/pg_dump/dumputils.c=0A= index=206e216313c6..6552ef345c=20100644=0A---=20= a/src/bin/pg_dump/dumputils.c=0A+++=20b/src/bin/pg_dump/dumputils.c=0A@@=20= -37,7=20+37,7=20@@=20static=20void=20AddAcl(PQExpBuffer=20aclbuf,=20= const=20char=20*keyword,=0A=20=20*=09nspname:=20the=20namespace=20the=20= object=20is=20in=20(NULL=20if=20none);=20not=20pre-quoted=0A=20=20*=09= type:=20the=20object=20type=20(as=20seen=20in=20GRANT=20command:=20must=20= be=20one=20of=0A=20=20*=09=09TABLE,=20SEQUENCE,=20FUNCTION,=20PROCEDURE,=20= LANGUAGE,=20SCHEMA,=20DATABASE,=20TABLESPACE,=0A-=20*=09=09FOREIGN=20= DATA=20WRAPPER,=20SERVER,=20or=20LARGE=20OBJECT)=0A+=20*=09=09FOREIGN=20= DATA=20WRAPPER,=20SERVER,=20SETTING=20or=20LARGE=20OBJECT)=0A=20=20*=09= acls:=20the=20ACL=20string=20fetched=20from=20the=20database=0A=20=20*=09= baseacls:=20the=20initial=20ACL=20string=20for=20this=20object;=20can=20= be=0A=20=20*=09=09NULL=20or=20empty=20string=20to=20indicate=20"not=20= available=20from=20server"=0A@@=20-561,6=20+561,11=20@@=20do=20{=20\=0A=20= =09=09CONVERT_PRIV('U',=20"USAGE");=0A=20=09else=20if=20(strcmp(type,=20= "FOREIGN=20TABLE")=20=3D=3D=200)=0A=20=09=09CONVERT_PRIV('r',=20= "SELECT");=0A+=09else=20if=20(strcmp(type,=20"SETTING")=20=3D=3D=200)=0A= +=09{=0A+=09=09CONVERT_PRIV('s',=20"SET=20VALUE");=0A+=09=09= CONVERT_PRIV('A',=20"ALTER=20SYSTEM");=0A+=09}=0A=20=09else=20if=20= (strcmp(type,=20"LARGE=20OBJECT")=20=3D=3D=200)=0A=20=09{=0A=20=09=09= CONVERT_PRIV('r',=20"SELECT");=0Adiff=20--git=20= a/src/bin/pg_dump/pg_backup_archiver.c=20= b/src/bin/pg_dump/pg_backup_archiver.c=0Aindex=2059f4fbb2cc..0950d159c2=20= 100644=0A---=20a/src/bin/pg_dump/pg_backup_archiver.c=0A+++=20= b/src/bin/pg_dump/pg_backup_archiver.c=0A@@=20-3413,6=20+3413,7=20@@=20= _getObjectDescription(PQExpBuffer=20buf,=20TocEntry=20*te)=0A=20=09=09= strcmp(type,=20"SCHEMA")=20=3D=3D=200=20||=0A=20=09=09strcmp(type,=20= "EVENT=20TRIGGER")=20=3D=3D=200=20||=0A=20=09=09strcmp(type,=20"FOREIGN=20= DATA=20WRAPPER")=20=3D=3D=200=20||=0A+=09=09strcmp(type,=20"SETTING")=20= =3D=3D=200=20||=0A=20=09=09strcmp(type,=20"SERVER")=20=3D=3D=200=20||=0A=20= =09=09strcmp(type,=20"PUBLICATION")=20=3D=3D=200=20||=0A=20=09=09= strcmp(type,=20"SUBSCRIPTION")=20=3D=3D=200=20||=0A@@=20-3596,6=20= +3597,7=20@@=20_printTocEntry(ArchiveHandle=20*AH,=20TocEntry=20*te,=20= bool=20isData)=0A=20=09=09=09strcmp(te->desc,=20"TEXT=20SEARCH=20= DICTIONARY")=20=3D=3D=200=20||=0A=20=09=09=09strcmp(te->desc,=20"TEXT=20= SEARCH=20CONFIGURATION")=20=3D=3D=200=20||=0A=20=09=09=09= strcmp(te->desc,=20"FOREIGN=20DATA=20WRAPPER")=20=3D=3D=200=20||=0A+=09=09= =09strcmp(te->desc,=20"SETTING")=20=3D=3D=200=20||=0A=20=09=09=09= strcmp(te->desc,=20"SERVER")=20=3D=3D=200=20||=0A=20=09=09=09= strcmp(te->desc,=20"STATISTICS")=20=3D=3D=200=20||=0A=20=09=09=09= strcmp(te->desc,=20"PUBLICATION")=20=3D=3D=200=20||=0Adiff=20--git=20= a/src/bin/pg_dump/pg_dump.c=20b/src/bin/pg_dump/pg_dump.c=0Aindex=20= 10a86f9810..5fd8923ce8=20100644=0A---=20a/src/bin/pg_dump/pg_dump.c=0A= +++=20b/src/bin/pg_dump/pg_dump.c=0A@@=20-15236,6=20+15236,9=20@@=20= dumpDefaultACL(Archive=20*fout,=20const=20DefaultACLInfo=20*daclinfo)=0A=20= =09=09case=20DEFACLOBJ_NAMESPACE:=0A=20=09=09=09type=20=3D=20"SCHEMAS";=0A= =20=09=09=09break;=0A+=09=09case=20DEFACLOBJ_SETTING:=0A+=09=09=09type=20= =3D=20"SETTINGS";=0A+=09=09=09break;=0A=20=09=09default:=0A=20=09=09=09= /*=20shouldn't=20get=20here=20*/=0A=20=09=09=09fatal("unrecognized=20= object=20type=20in=20default=20privileges:=20%d",=0A@@=20-15279,7=20= +15282,7=20@@=20dumpDefaultACL(Archive=20*fout,=20const=20DefaultACLInfo=20= *daclinfo)=0A=20=20*=09=09or=20InvalidDumpId=20if=20there=20is=20no=20= need=20for=20a=20second=20dependency.=0A=20=20*=20'type'=20must=20be=20= one=20of=0A=20=20*=09=09TABLE,=20SEQUENCE,=20FUNCTION,=20LANGUAGE,=20= SCHEMA,=20DATABASE,=20TABLESPACE,=0A-=20*=09=09FOREIGN=20DATA=20WRAPPER,=20= SERVER,=20or=20LARGE=20OBJECT.=0A+=20*=09=09FOREIGN=20DATA=20WRAPPER,=20= SERVER,=20SETTING=20or=20LARGE=20OBJECT.=0A=20=20*=20'name'=20is=20the=20= formatted=20name=20of=20the=20object.=20=20Must=20be=20quoted=20etc.=20= already.=0A=20=20*=20'subname'=20is=20the=20formatted=20name=20of=20the=20= sub-object,=20if=20any.=20=20Must=20be=20quoted.=0A=20=20*=09=09= (Currently=20we=20assume=20that=20subname=20is=20only=20provided=20for=20= table=20columns.)=0Adiff=20--git=20a/src/bin/pg_dump/pg_dumpall.c=20= b/src/bin/pg_dump/pg_dumpall.c=0Aindex=2027b95732c8..62a5f612b0=20100644=0A= ---=20a/src/bin/pg_dump/pg_dumpall.c=0A+++=20= b/src/bin/pg_dump/pg_dumpall.c=0A@@=20-36,6=20+36,7=20@@=20static=20void=20= help(void);=0A=20static=20void=20dropRoles(PGconn=20*conn);=0A=20static=20= void=20dumpRoles(PGconn=20*conn);=0A=20static=20void=20= dumpRoleMembership(PGconn=20*conn);=0A+static=20void=20= dumpRoleGUCPrivs(PGconn=20*conn);=0A=20static=20void=20dumpGroups(PGconn=20= *conn);=0A=20static=20void=20dropTablespaces(PGconn=20*conn);=0A=20= static=20void=20dumpTablespaces(PGconn=20*conn);=0A@@=20-586,6=20+587,10=20= @@=20main(int=20argc,=20char=20*argv[])=0A=20=09=09=09=09= dumpRoleMembership(conn);=0A=20=09=09=09else=0A=20=09=09=09=09= dumpGroups(conn);=0A+=0A+=09=09=09/*=20Dump=20role=20guc=20privileges=20= */=0A+=09=09=09if=20(server_version=20>=3D=20150000)=0A+=09=09=09=09= dumpRoleGUCPrivs(conn);=0A=20=09=09}=0A=20=0A=20=09=09/*=20Dump=20= tablespaces=20*/=0A@@=20-1049,6=20+1054,72=20@@=20= dumpRoleMembership(PGconn=20*conn)=0A=20=09fprintf(OPF,=20"\n\n");=0A=20= }=0A=20=0A+/*=0A+=20*=20Dump=20role=20configuration=20parameter=20= privileges.=20=20This=20code=20is=20used=20for=2015.0=0A+=20*=20and=20= later=20servers.=0A+=20*=0A+=20*=20Note:=20we=20expect=20dumpRoles=20= already=20created=20all=20the=20roles,=20but=20there=20are=0A+=20*=20no=20= per-role=20configuration=20parameter=20privileges=20yet..=0A+=20*/=0A= +static=20void=0A+dumpRoleGUCPrivs(PGconn=20*conn)=0A+{=0A+=09= PQExpBuffer=20buf=20=3D=20createPQExpBuffer();=0A+=09PGresult=20=20=20= *res;=0A+=09int=09=09=09i;=0A+=0A+=09printfPQExpBuffer(buf,=20"SELECT=20= string_agg(acl.privilege_type,=20',=20'=20ORDER=20BY=20= acl.privilege_type),=20"=0A+=09=09=09=09=09=20=20"set_acl.setting,=20"=0A= +=09=09=09=09=09=20=20"grantee.rolname=20AS=20grantee,=20"=0A+=09=09=09=09= =09=20=20"acl.is_grantable,=20"=0A+=09=09=09=09=09=20=20"grantor.rolname=20= AS=20grantor=20"=0A+=09=09=09=09=09=20=20"FROM=20= pg_catalog.pg_setting_acl=20set_acl,=20"=0A+=09=09=09=09=09=20=20= "LATERAL=20(SELECT=20*=20FROM=20aclexplode(set_acl.setacl))=20acl=20"=0A= +=09=09=09=09=09=20=20"JOIN=20pg_catalog.pg_authid=20grantee=20"=0A+=09=09= =09=09=09=20=20"ON=20acl.grantee=20=3D=20grantee.oid=20"=0A+=09=09=09=09=09= =20=20"LEFT=20JOIN=20pg_catalog.pg_authid=20grantor=20ON=20"=0A+=09=09=09= =09=09=20=20"acl.grantor=20=3D=20grantor.oid=20"=0A+=09=09=09=09=09=20=20= "WHERE=20acl.grantee=20>=200=20"=0A+=09=09=09=09=09=20=20"GROUP=20BY=20= setting,=20grantee.rolname,=20is_grantable,=20grantor.rolname"=0A+=09=09=09= =09=09=20=20);=0A+=0A+=09res=20=3D=20executeQuery(conn,=20buf->data);=0A= +=0A+=09if=20(PQntuples(res)=20>=200)=0A+=09=09fprintf(OPF,=20"--\n--=20= Role=20privileges=20on=20configuration=20parameters\n--\n\n");=0A+=0A+=09= for=20(i=20=3D=200;=20i=20<=20PQntuples(res);=20i++)=0A+=09{=0A+=09=09= char=09=20=20=20*privilege=20=3D=20PQgetvalue(res,=20i,=200);=0A+=09=09= char=09=20=20=20*setting=20=3D=20PQgetvalue(res,=20i,=201);=0A+=09=09= char=09=20=20=20*grantee=20=3D=20PQgetvalue(res,=20i,=202);=0A+=09=09= char=09=20=20=20*grantable=20=3D=20PQgetvalue(res,=20i,=203);=0A+=0A+=09=09= fprintf(OPF,=20"GRANT=20%s",=20privilege);=0A+=09=09fprintf(OPF,=20"=20= ON=20%s",=20setting);=0A+=09=09fprintf(OPF,=20"=20TO=20%s",=20= fmtId(grantee));=0A+=09=09if=20(*grantable=20=3D=3D=20't')=0A+=09=09=09= fprintf(OPF,=20"=20WITH=20GRANT=20OPTION");=0A+=0A+=09=09/*=0A+=09=09=20= *=20We=20don't=20track=20the=20grantor=20very=20carefully=20in=20the=20= backend,=20so=20cope=0A+=09=09=20*=20with=20the=20possibility=20that=20= it=20has=20been=20dropped.=0A+=09=09=20*/=0A+=09=09if=20= (!PQgetisnull(res,=20i,=204))=0A+=09=09{=0A+=09=09=09char=09=20=20=20= *grantor=20=3D=20PQgetvalue(res,=20i,=204);=0A+=0A+=09=09=09fprintf(OPF,=20= "=20GRANTED=20BY=20%s",=20fmtId(grantor));=0A+=09=09}=0A+=09=09= fprintf(OPF,=20";\n");=0A+=09}=0A+=0A+=09PQclear(res);=0A+=09= destroyPQExpBuffer(buf);=0A+=0A+=09fprintf(OPF,=20"\n\n");=0A+}=0A+=0A=20= /*=0A=20=20*=20Dump=20group=20memberships=20from=20a=20pre-8.1=20server.=20= =20It's=20annoying=20that=20we=0A=20=20*=20can't=20share=20any=20useful=20= amount=20of=20code=20with=20the=20post-8.1=20case,=20but=0Adiff=20--git=20= a/src/include/catalog/dependency.h=20b/src/include/catalog/dependency.h=0A= index=203eca295ff4..a800f0b544=20100644=0A---=20= a/src/include/catalog/dependency.h=0A+++=20= b/src/include/catalog/dependency.h=0A@@=20-92,6=20+92,7=20@@=20typedef=20= enum=20ObjectClass=0A=20=09OCLASS_TYPE,=09=09=09=09/*=20pg_type=20*/=0A=20= =09OCLASS_CAST,=09=09=09=09/*=20pg_cast=20*/=0A=20=09OCLASS_COLLATION,=09= =09=09/*=20pg_collation=20*/=0A+=09OCLASS_SETTING,=09=09=09=09/*=20= pg_setting_acl=20*/=0A=20=09OCLASS_CONSTRAINT,=09=09=09/*=20= pg_constraint=20*/=0A=20=09OCLASS_CONVERSION,=09=09=09/*=20pg_conversion=20= */=0A=20=09OCLASS_DEFAULT,=09=09=09=09/*=20pg_attrdef=20*/=0Adiff=20= --git=20a/src/include/catalog/pg_default_acl.h=20= b/src/include/catalog/pg_default_acl.h=0Aindex=20eb72dd6293..08a2dcee41=20= 100644=0A---=20a/src/include/catalog/pg_default_acl.h=0A+++=20= b/src/include/catalog/pg_default_acl.h=0A@@=20-66,6=20+66,7=20@@=20= DECLARE_UNIQUE_INDEX_PKEY(pg_default_acl_oid_index,=20828,=20= DefaultAclOidIndexId,=20o=0A=20#define=20DEFACLOBJ_FUNCTION=09=09'f'=20= /*=20function=20*/=0A=20#define=20DEFACLOBJ_TYPE=09=09=09'T'=20/*=20type=20= */=0A=20#define=20DEFACLOBJ_NAMESPACE=09=09'n'=20/*=20namespace=20*/=0A= +#define=20DEFACLOBJ_SETTING=09'c'=20/*=20configuration=20parameter=20*/=0A= =20=0A=20#endif=09=09=09=09=09=09=09/*=20EXPOSE_TO_CLIENT_CODE=20*/=0A=20= =0Adiff=20--git=20a/src/include/catalog/pg_proc.dat=20= b/src/include/catalog/pg_proc.dat=0Aindex=2079d787cd26..b6f1159931=20= 100644=0A---=20a/src/include/catalog/pg_proc.dat=0A+++=20= b/src/include/catalog/pg_proc.dat=0A@@=20-7214,6=20+7214,25=20@@=0A=20=20= =20proname=20=3D>=20'has_type_privilege',=20provolatile=20=3D>=20's',=20= prorettype=20=3D>=20'bool',=0A=20=20=20proargtypes=20=3D>=20'oid=20= text',=20prosrc=20=3D>=20'has_type_privilege_id'=20},=0A=20=0A+{=20oid=20= =3D>=20'8050',=20descr=20=3D>=20'user=20privilege=20on=20setting=20by=20= username,=20setting=20name',=0A+=20=20proname=20=3D>=20= 'has_setting_privilege',=20provolatile=20=3D>=20's',=20prorettype=20=3D>=20= 'bool',=0A+=20=20proargtypes=20=3D>=20'name=20text=20text',=20prosrc=20= =3D>=20'has_setting_privilege_name_name'=20},=0A+{=20oid=20=3D>=20= '8051',=20descr=20=3D>=20'user=20privilege=20on=20setting=20by=20= username,=20setting=20oid',=0A+=20=20proname=20=3D>=20= 'has_setting_privilege',=20provolatile=20=3D>=20's',=20prorettype=20=3D>=20= 'bool',=0A+=20=20proargtypes=20=3D>=20'name=20oid=20text',=20prosrc=20=3D>= =20'has_setting_privilege_name_id'=20},=0A+{=20oid=20=3D>=20'8052',=20= descr=20=3D>=20'user=20privilege=20on=20setting=20by=20user=20oid,=20= setting=20name',=0A+=20=20proname=20=3D>=20'has_setting_privilege',=20= provolatile=20=3D>=20's',=20prorettype=20=3D>=20'bool',=0A+=20=20= proargtypes=20=3D>=20'oid=20text=20text',=20prosrc=20=3D>=20= 'has_setting_privilege_id_name'=20},=0A+{=20oid=20=3D>=20'8053',=20descr=20= =3D>=20'user=20privilege=20on=20setting=20by=20user=20oid,=20setting=20= oid',=0A+=20=20proname=20=3D>=20'has_setting_privilege',=20provolatile=20= =3D>=20's',=20prorettype=20=3D>=20'bool',=0A+=20=20proargtypes=20=3D>=20= 'oid=20oid=20text',=20prosrc=20=3D>=20'has_setting_privilege_id_id'=20},=0A= +{=20oid=20=3D>=20'8054',=20descr=20=3D>=20'current=20user=20privilege=20= on=20setting=20by=20setting=20name',=0A+=20=20proname=20=3D>=20= 'has_setting_privilege',=20provolatile=20=3D>=20's',=20prorettype=20=3D>=20= 'bool',=0A+=20=20proargtypes=20=3D>=20'text=20text',=20prosrc=20=3D>=20= 'has_setting_privilege_name'=20},=0A+{=20oid=20=3D>=20'8055',=20descr=20= =3D>=20'current=20user=20privilege=20on=20setting=20by=20setting=20oid',=0A= +=20=20proname=20=3D>=20'has_setting_privilege',=20provolatile=20=3D>=20= 's',=20prorettype=20=3D>=20'bool',=0A+=20=20proargtypes=20=3D>=20'oid=20= text',=20prosrc=20=3D>=20'has_setting_privilege_id'=20},=0A+=0A=20{=20= oid=20=3D>=20'2705',=20descr=20=3D>=20'user=20privilege=20on=20role=20by=20= username,=20role=20name',=0A=20=20=20proname=20=3D>=20'pg_has_role',=20= provolatile=20=3D>=20's',=20prorettype=20=3D>=20'bool',=0A=20=20=20= proargtypes=20=3D>=20'name=20name=20text',=20prosrc=20=3D>=20= 'pg_has_role_name_name'=20},=0Adiff=20--git=20= a/src/include/catalog/pg_setting_acl.h=20= b/src/include/catalog/pg_setting_acl.h=0Anew=20file=20mode=20100644=0A= index=200000000000..b7dee55e5c=0A---=20/dev/null=0A+++=20= b/src/include/catalog/pg_setting_acl.h=0A@@=20-0,0=20+1,63=20@@=0A= +/*-----------------------------------------------------------------------= --=0A+=20*=0A+=20*=20pg_setting_acl.h=0A+=20*=09=20=20definition=20of=20= the=20"configuration=20parameter"=20system=20catalog=0A+=20*=09=20=20= (pg_setting_acl).=0A+=20*=0A+=20*=0A+=20*=20Portions=20Copyright=20(c)=20= 1996-2021,=20PostgreSQL=20Global=20Development=20Group=0A+=20*=20= Portions=20Copyright=20(c)=201994,=20Regents=20of=20the=20University=20= of=20California=0A+=20*=0A+=20*=20src/include/catalog/pg_setting_acl.h=0A= +=20*=0A+=20*=20NOTES=0A+=20*=09=20=20The=20Catalog.pm=20module=20reads=20= this=20file=20and=20derives=20schema=0A+=20*=09=20=20information.=0A+=20= *=0A+=20= *-------------------------------------------------------------------------= =0A+=20*/=0A+#ifndef=20PG_SETTING_ACL_H=0A+#define=20PG_SETTING_ACL_H=0A= +=0A+#include=20"catalog/genbki.h"=0A+#include=20= "catalog/pg_setting_acl_d.h"=0A+=0A+/*=20----------------=0A+=20*=09=09= pg_setting_acl=20definition.=20=20cpp=20turns=20this=20into=0A+=20*=09=09= typedef=20struct=20FormData_pg_setting_acl=0A+=20*=20----------------=0A= +=20*/=0A+CATALOG(pg_setting_acl,8924,SettingAclRelationId)=20= BKI_SHARED_RELATION=0A+{=0A+=09Oid=09=09=09oid;=09=09=09/*=20oid=20*/=0A= +=09/*=0A+=0A+=09=20*=20Variable-length=20fields=20start=20here,=20but=20= we=20allow=20direct=20access=20to=0A+=09=20*=20setting.=0A+=09=20*/=0A+=09= text=09=09setting=20BKI_FORCE_NOT_NULL;=0A+=0A+#ifdef=20CATALOG_VARLEN=0A= +=09/*=20Access=20privileges=20*/=0A+=09aclitem=09=09setacl[1]=20= BKI_DEFAULT(_null_);=0A+#endif=0A+}=20FormData_pg_setting_acl;=0A+=0A+=0A= +/*=20----------------=0A+=20*=09=09Form_pg_setting_acl=20corresponds=20= to=20a=20pointer=20to=20a=20tuple=20with=0A+=20*=09=09the=20format=20of=20= pg_setting_acl=20relation.=0A+=20*=20----------------=0A+=20*/=0A= +typedef=20FormData_pg_setting_acl=20*Form_pg_setting_acl;=0A+=0A= +DECLARE_TOAST(pg_setting_acl,=208925,=208926);=0A+#define=20= PgSettingAclToastTable=208925=0A+#define=20PgSettingAclToastIndex=208926=0A= +=0A+DECLARE_UNIQUE_INDEX(pg_setting_acl_setting_index,=208927,=20= SettingAclSettingIndexId,=20on=20pg_setting_acl=20using=20btree(setting=20= text_ops));=0A+DECLARE_UNIQUE_INDEX_PKEY(pg_setting_acl_oid_index,=20= 8928,=20SettingAclOidIndexId,=20on=20pg_setting_acl=20using=20btree(oid=20= oid_ops));=0A+=0A+extern=20Oid=09SettingAclCreate(const=20char=20= *setting,=20bool=20if_not_exists);=0A+=0A+#endif=09=09=09=09=09=09=09/*=20= PG_SETTING_ACL_H=20*/=0Adiff=20--git=20a/src/include/nodes/parsenodes.h=20= b/src/include/nodes/parsenodes.h=0Aindex=204c5a8a39bf..1cd57d5552=20= 100644=0A---=20a/src/include/nodes/parsenodes.h=0A+++=20= b/src/include/nodes/parsenodes.h=0A@@=20-92,7=20+92,9=20@@=20typedef=20= uint32=20AclMode;=09=09=09/*=20a=20bitmask=20of=20privilege=20bits=20*/=0A= =20#define=20ACL_CREATE=09=09(1<<9)=09/*=20for=20namespaces=20and=20= databases=20*/=0A=20#define=20ACL_CREATE_TEMP=20(1<<10)=20/*=20for=20= databases=20*/=0A=20#define=20ACL_CONNECT=09=09(1<<11)=20/*=20for=20= databases=20*/=0A-#define=20N_ACL_RIGHTS=0912=09=09/*=201=20plus=20the=20= last=201<=20= {=20pg_dumpall_globals=20=3D>=201,=20},=0A=20=09},=0A=20=0A+=09'GRANT=20= ALTER=20SYSTEM=20ON=20ignore_checksum_failure'=20=3D>=20{=0A+=09=09= create_order=20=3D>=202,=0A+=09=09create_sql=20=20=20=3D>=0A+=09=09=09= 'GRANT=20ALTER=20SYSTEM=20ON=20ignore_checksum_failure=20TO=20= regress_dump_test_role;',=0A+=09=09regexp=20=20=20=20=20=20=20=3D>=0A+=09= =09=09qr/^GRANT=20ALTER=20SYSTEM=20ON=20ignore_checksum_failure=20TO=20= regress_dump_test_role=20GRANTED=20BY=20/m,=0A+=09=09like=20=20=20=20=20=20= =20=20=20=3D>=20{=20pg_dumpall_globals=20=3D>=201,=20},=0A+=09},=0A+=0A+=09= 'GRANT=20SET=20VALUE=20ON=20my.missing.guc'=20=3D>=20{=0A+=09=09= create_order=20=3D>=202,=0A+=09=09create_sql=20=20=20=3D>=0A+=09=09=09= 'GRANT=20SET=20VALUE=20ON=20my.missing.guc=20TO=20= regress_dump_test_role;',=0A+=09=09regexp=20=20=20=20=20=20=20=3D>=0A+=09= =09=09qr/^GRANT=20SET=20VALUE=20ON=20my\.missing\.guc=20TO=20= regress_dump_test_role=20GRANTED=20BY=20/m,=0A+=09=09like=20=20=20=20=20=20= =20=20=20=3D>=20{=20pg_dumpall_globals=20=3D>=201,=20},=0A+=09},=0A+=0A+=09= 'GRANT=20SET=20VALUE,=20ALTER=20SYSTEM=20ON=20something=20WITH=20GRANT=20= OPTION'=20=3D>=20{=0A+=09=09create_order=20=3D>=202,=0A+=09=09create_sql=20= =3D>=0A+=09=09=09'GRANT=20SET=20VALUE,=20ALTER=20SYSTEM=20ON=20something=20= TO=20regress_dump_test_role=20WITH=20GRANT=20OPTION;',=0A+=09=09regexp=20= =3D>=0A+=09=09=09qr/^GRANT=20ALTER=20SYSTEM,=20SET=20VALUE=20ON=20= something=20TO=20regress_dump_test_role=20WITH=20GRANT=20OPTION=20= GRANTED=20BY=20/m,=0A+=09=09like=20=3D>=20{=20pg_dumpall_globals=20=3D>=20= 1,=20},=0A+=09},=0A+=0A+=09'GRANT=20ALTER=20SYSTEM=20ON=20= MyReallyLong.ButValidCustom.GucNameThatCannotFit.InNamedata64Byte.Format'=20= =3D>=20{=0A+=09=09create_order=20=3D>=202,=0A+=09=09create_sql=20=3D>=0A= +=09=09=09#=20configuration=20parameters=20get=20cased=20folded=0A+=09=09= =09'GRANT=20ALTER=20SYSTEM=20ON=20= MyReallyLong.ButValidCustom.GucNameThatCannotFit.InNamedata64Byte.Format=20= TO=20regress_dump_test_role;',=0A+=09=09regexp=20=3D>=0A+=09=09=09= qr/^GRANT=20ALTER=20SYSTEM=20ON=20= myreallylong\.butvalidcustom\.gucnamethatcannotfit\.innamedata64byte\.form= at=20TO=20regress_dump_test_role=20GRANTED=20BY=20/m,=0A+=09=09like=20=3D>= =20{=20pg_dumpall_globals=20=3D>=201,=20},=0A+=09},=0A+=0A+=09'GRANT=20= ALTER=20SYSTEM,=20SET=20VALUE=20ON=20my.guc=20TO=20= regress_dump_test_role=20GRANTED=20BY=20CURRENT_ROLE'=20=3D>=20{=0A+=09=09= create_order=20=3D>=202,=0A+=09=09create_sql=20=3D>=0A+=09=09=09#=20= GRANTED=20BY=20CURRENT_ROLE=20is=20allowed=20for=20SQL=20compatibility,=20= but=20is=20ignored=0A+=09=09=09'GRANT=20ALTER=20SYSTEM,=20SET=20VALUE=20= ON=20my.guc=20TO=20regress_dump_test_role=20GRANTED=20BY=20= CURRENT_ROLE;',=0A+=09=09regexp=20=3D>=0A+=09=09=09qr/^GRANT=20ALTER=20= SYSTEM,=20SET=20VALUE=20ON=20my\.guc=20TO=20regress_dump_test_role=20= GRANTED=20BY=20/m,=0A+=09=09like=20=3D>=20{=20pg_dumpall_globals=20=3D>=20= 1,=20},=0A+=09},=0A+=0A=20=09'CREATE=20SCHEMA=20public'=20=3D>=20{=0A=20=09= =09regexp=20=3D>=20qr/^CREATE=20SCHEMA=20public;/m,=0A=20=09=09like=20=20= =20=3D>=20{=0Adiff=20--git=20a/src/test/regress/expected/guc_privs.out=20= b/src/test/regress/expected/guc_privs.out=0Anew=20file=20mode=20100644=0A= index=200000000000..f8bc8e7276=0A---=20/dev/null=0A+++=20= b/src/test/regress/expected/guc_privs.out=0A@@=20-0,0=20+1,780=20@@=0A= +--=20Test=20superuser=0A+--=20Superuser=20DBA=0A+CREATE=20ROLE=20= regress_admin=20SUPERUSER;=0A+--=20Perform=20all=20operations=20as=20= user=20'regress_admin'=20--=0A+SET=20SESSION=20AUTHORIZATION=20= regress_admin;=0A+--=20PGC_BACKEND=0A+SET=20ignore_system_indexes=20=3D=20= OFF;=20=20--=20fail,=20cannot=20be=20set=20after=20connection=20start=0A= +ERROR:=20=20parameter=20"ignore_system_indexes"=20cannot=20be=20set=20= after=20connection=20start=0A+RESET=20ignore_system_indexes;=20=20--=20= fail,=20cannot=20be=20set=20after=20connection=20start=0A+ERROR:=20=20= parameter=20"ignore_system_indexes"=20cannot=20be=20set=20after=20= connection=20start=0A+ALTER=20SYSTEM=20SET=20ignore_system_indexes=20=3D=20= OFF;=20=20--=20ok=0A+ALTER=20SYSTEM=20RESET=20ignore_system_indexes;=20=20= --=20ok=0A+--=20PGC_INTERNAL=0A+SET=20block_size=20=3D=2050;=20=20--=20= fail,=20cannot=20be=20changed=0A+ERROR:=20=20parameter=20"block_size"=20= cannot=20be=20changed=0A+RESET=20block_size;=20=20--=20fail,=20cannot=20= be=20changed=0A+ERROR:=20=20parameter=20"block_size"=20cannot=20be=20= changed=0A+ALTER=20SYSTEM=20SET=20block_size=20=3D=2050;=20=20--=20fail,=20= cannot=20be=20changed=0A+ERROR:=20=20parameter=20"block_size"=20cannot=20= be=20changed=0A+ALTER=20SYSTEM=20RESET=20block_size;=20=20--=20fail,=20= cannot=20be=20changed=0A+ERROR:=20=20parameter=20"block_size"=20cannot=20= be=20changed=0A+--=20PGC_POSTMASTER=0A+SET=20autovacuum_freeze_max_age=20= =3D=201000050000;=20=20--=20fail,=20requires=20restart=0A+ERROR:=20=20= parameter=20"autovacuum_freeze_max_age"=20cannot=20be=20changed=20= without=20restarting=20the=20server=0A+RESET=20= autovacuum_freeze_max_age;=20=20--=20fail,=20requires=20restart=0A= +ERROR:=20=20parameter=20"autovacuum_freeze_max_age"=20cannot=20be=20= changed=20without=20restarting=20the=20server=0A+ALTER=20SYSTEM=20SET=20= autovacuum_freeze_max_age=20=3D=201000050000;=20=20--=20ok=0A+ALTER=20= SYSTEM=20RESET=20autovacuum_freeze_max_age;=20=20--=20ok=0A+ALTER=20= SYSTEM=20SET=20config_file=20=3D=20'/usr/local/data/postgresql.conf';=20=20= --=20fail,=20cannot=20be=20changed=0A+ERROR:=20=20parameter=20= "config_file"=20cannot=20be=20changed=0A+ALTER=20SYSTEM=20RESET=20= config_file;=20=20--=20fail,=20cannot=20be=20changed=0A+ERROR:=20=20= parameter=20"config_file"=20cannot=20be=20changed=0A+--=20PGC_SIGHUP=0A= +SET=20autovacuum=20=3D=20OFF;=20=20--=20fail,=20requires=20reload=0A= +ERROR:=20=20parameter=20"autovacuum"=20cannot=20be=20changed=20now=0A= +RESET=20autovacuum;=20=20--=20fail,=20requires=20reload=0A+ERROR:=20=20= parameter=20"autovacuum"=20cannot=20be=20changed=20now=0A+ALTER=20SYSTEM=20= SET=20autovacuum=20=3D=20OFF;=20=20--=20ok=0A+ALTER=20SYSTEM=20RESET=20= autovacuum;=20=20--=20ok=0A+--=20PGC_SUSET=0A+SET=20lc_messages=20=3D=20= 'en_US.UTF-8';=20=20--=20ok=0A+RESET=20lc_messages;=20=20--=20ok=0A= +ALTER=20SYSTEM=20SET=20lc_messages=20=3D=20'en_US.UTF-8';=20=20--=20ok=0A= +ALTER=20SYSTEM=20RESET=20lc_messages;=20=20--=20ok=0A+--=20= PGC_SU_BACKEND=0A+SET=20jit_debugging_support=20=3D=20OFF;=20=20--=20= fail,=20cannot=20be=20set=20after=20connection=20start=0A+ERROR:=20=20= parameter=20"jit_debugging_support"=20cannot=20be=20set=20after=20= connection=20start=0A+RESET=20jit_debugging_support;=20=20--=20fail,=20= cannot=20be=20set=20after=20connection=20start=0A+ERROR:=20=20parameter=20= "jit_debugging_support"=20cannot=20be=20set=20after=20connection=20start=0A= +ALTER=20SYSTEM=20SET=20jit_debugging_support=20=3D=20OFF;=20=20--=20ok=0A= +ALTER=20SYSTEM=20RESET=20jit_debugging_support;=20=20--=20ok=0A+--=20= PGC_USERSET=0A+SET=20DateStyle=20=3D=20'ISO,=20MDY';=20=20--=20ok=0A= +RESET=20DateStyle;=20=20--=20ok=0A+ALTER=20SYSTEM=20SET=20DateStyle=20=3D= =20'ISO,=20MDY';=20=20--=20ok=0A+ALTER=20SYSTEM=20RESET=20DateStyle;=20=20= --=20ok=0A+ALTER=20SYSTEM=20SET=20ssl_renegotiation_limit=20=3D=200;=20=20= --=20fail,=20cannot=20be=20changed=0A+ERROR:=20=20parameter=20= "ssl_renegotiation_limit"=20cannot=20be=20changed=0A+ALTER=20SYSTEM=20= RESET=20ssl_renegotiation_limit;=20=20--=20fail,=20cannot=20be=20changed=0A= +ERROR:=20=20parameter=20"ssl_renegotiation_limit"=20cannot=20be=20= changed=0A+--=20Finished=20testing=20superuser=0A+RESET=20= statement_timeout;=0A+--=20Check=20setting=20privileges=20prior=20to=20= creating=20any=0A+SELECT=20grantee,=20setting,=20privilege_type,=20= is_grantable=0A+=09FROM=20pg_catalog.pg_setting_privileges=0A+=09ORDER=20= BY=20grantee,=20setting,=20privilege_type;=0A+=20grantee=20|=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20setting=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20privilege_type=20|=20is_grantable=20=0A= +---------+-------------------------------------+----------------+--------= ------=0A+=20=20=20=20=20=20=20=20=20|=20DateStyle=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20= =20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20IntervalStyle=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20TimeZone=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= |=20application_name=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= |=20array_nulls=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20|=20backend_flush_after=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20= =20|=20backslash_quote=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20= =20=20|=20bytea_output=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20= =20=20=20=20=20|=20check_function_bodies=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20= =20=20|=20client_connection_check_interval=20=20=20=20|=20SET=20VALUE=20=20= =20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20client_min_messages=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20= =20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20commit_siblings=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20= =20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20constraint_exclusion=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20|=20cpu_index_tuple_cost=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A= +=20=20=20=20=20=20=20=20=20|=20cpu_operator_cost=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A= +=20=20=20=20=20=20=20=20=20|=20cpu_tuple_cost=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20|=20cursor_tuple_fraction=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A= +=20=20=20=20=20=20=20=20=20|=20debug_pretty_print=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20= =20=20=20=20=20=20=20=20|=20debug_print_parse=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20= =20=20=20=20=20=20=20|=20debug_print_plan=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20= =20=20=20=20=20=20=20|=20debug_print_rewritten=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20= =20=20=20=20|=20default_statistics_target=20=20=20=20=20=20=20=20=20=20=20= |=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= default_table_access_method=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20= =20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20default_tablespace=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20= =20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= default_text_search_config=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20= =20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= default_toast_compression=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= default_transaction_deferrable=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20= =20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= default_transaction_isolation=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20= =20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= default_transaction_read_only=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20= =20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20default_with_oids=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20= =20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20effective_cache_size=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20|=20effective_io_concurrency=20=20=20= =20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20= =20=20=20=20=20=20=20|=20enable_async_append=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20= =20=20=20=20=20|=20enable_bitmapscan=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20= =20=20=20=20|=20enable_gathermerge=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20|=20enable_hashagg=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20= =20=20=20=20|=20enable_hashjoin=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20= =20=20=20=20=20|=20enable_incremental_sort=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= |=20enable_indexonlyscan=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= enable_indexscan=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= |=20enable_material=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20= =20|=20enable_memoize=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20= =20=20|=20enable_mergejoin=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20= =20=20|=20enable_nestloop=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20|=20enable_parallel_append=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= |=20enable_parallel_hash=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= enable_partition_pruning=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= enable_partitionwise_aggregate=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20= =20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20enable_partitionwise_join=20= =20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20= =20=20=20=20=20=20=20=20|=20enable_seqscan=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A= +=20=20=20=20=20=20=20=20=20|=20enable_sort=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20= =20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20enable_tidscan=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20= =20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20escape_string_warning=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20|=20exit_on_error=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20= =20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20extra_float_digits=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20= =20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20force_parallel_mode=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20|=20from_collapse_limit=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20= f=0A+=20=20=20=20=20=20=20=20=20|=20geqo=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= geqo_effort=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20= =20=20|=20geqo_generations=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20= =20=20|=20geqo_pool_size=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20|=20geqo_seed=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20= =20=20=20=20=20=20=20=20|=20geqo_selection_bias=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20= =20=20=20=20=20=20|=20geqo_threshold=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20= =20=20=20=20=20=20=20|=20gin_fuzzy_search_limit=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20|=20gin_pending_list_limit=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= |=20hash_mem_multiplier=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= idle_in_transaction_session_timeout=20|=20SET=20VALUE=20=20=20=20=20=20|=20= f=0A+=20=20=20=20=20=20=20=20=20|=20idle_session_timeout=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20= =20=20=20=20=20=20=20=20|=20jit=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20= =20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20jit_above_cost=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= jit_expressions=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= |=20jit_inline_above_cost=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= jit_optimize_above_cost=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= jit_tuple_deforming=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= join_collapse_limit=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= lc_monetary=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20= =20=20|=20lc_numeric=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20= =20=20=20=20=20=20|=20lc_time=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20|=20local_preload_libraries=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20= =20=20=20=20=20=20=20|=20lock_timeout=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20= f=0A+=20=20=20=20=20=20=20=20=20|=20log_parameter_max_length_on_error=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= |=20logical_decoding_work_mem=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= maintenance_io_concurrency=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20= =20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= maintenance_work_mem=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= max_parallel_maintenance_workers=20=20=20=20|=20SET=20VALUE=20=20=20=20=20= =20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20max_parallel_workers=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20= f=0A+=20=20=20=20=20=20=20=20=20|=20max_parallel_workers_per_gather=20=20= =20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20= =20|=20min_parallel_index_scan_size=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= min_parallel_table_scan_size=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20= =20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= optimize_bounded_sort=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= parallel_leader_participation=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20= =20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20parallel_setup_cost=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20= =20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20parallel_tuple_cost=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20|=20password_encryption=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20= f=0A+=20=20=20=20=20=20=20=20=20|=20plan_cache_mode=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20|=20quote_all_identifiers=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A= +=20=20=20=20=20=20=20=20=20|=20random_page_cost=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A= +=20=20=20=20=20=20=20=20=20|=20role=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20= =20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20row_security=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= search_path=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20= =20=20|=20seed=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20= f=0A+=20=20=20=20=20=20=20=20=20|=20seq_page_cost=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20= =20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20ssl_renegotiation_limit=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20= =20=20=20=20=20=20=20=20|=20standard_conforming_strings=20=20=20=20=20=20= =20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20= =20|=20statement_timeout=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= |=20synchronize_seqscans=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= synchronous_commit=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= tcp_keepalives_count=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= tcp_keepalives_idle=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= tcp_keepalives_interval=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= tcp_user_timeout=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= |=20temp_buffers=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20|=20temp_tablespaces=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20|=20timezone_abbreviations=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= |=20trace_notify=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20|=20trace_sort=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20= =20=20=20=20=20=20=20|=20trace_syncscan=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20= =20=20=20=20=20=20=20=20|=20transaction_deferrable=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20= =20=20=20=20|=20transaction_isolation=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20= =20|=20transaction_read_only=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= transform_null_equals=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= vacuum_cost_delay=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= vacuum_cost_limit=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= vacuum_cost_page_dirty=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= vacuum_cost_page_hit=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= vacuum_cost_page_miss=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= vacuum_failsafe_age=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= vacuum_freeze_min_age=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= vacuum_freeze_table_age=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= vacuum_multixact_failsafe_age=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20= =20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= vacuum_multixact_freeze_min_age=20=20=20=20=20|=20SET=20VALUE=20=20=20=20= =20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= vacuum_multixact_freeze_table_age=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20|=20wal_sender_timeout=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20|=20wal_skip_threshold=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20|=20work_mem=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20= =20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20xmlbinary=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20|=20= xmloption=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+(138=20rows)=0A= +=0A+--=20Create=20non-superuser=20with=20privileges=20to=20configure=20= host=20resource=20usage=0A+CREATE=20ROLE=20regress_host_resource_admin=20= NOSUPERUSER;=0A+--=20Check=20the=20new=20role=20does=20not=20yet=20have=20= privileges=20on=20settings=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'SET=20VALUE,=20ALTER=20SYSTEM');=0A+=20has_setting_privilege=20=0A= +-----------------------=0A+=20t=0A+(1=20row)=0A+=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'SET=20VALUE');=0A+=20has_setting_privilege=20=0A= +-----------------------=0A+=20t=0A+(1=20row)=0A+=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'ALTER=20SYSTEM');=0A+=20has_setting_privilege=20=0A= +-----------------------=0A+=20f=0A+(1=20row)=0A+=0A+--=20Check=20= inappropriate=20and=20nonsense=20privilege=20types=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'SELECT,=20UPDATE,=20CREATE');=0A+ERROR:=20=20unrecognized=20privilege=20= type:=20"SELECT"=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'USAGE');=0A+ERROR:=20=20unrecognized=20privilege=20type:=20"USAGE"=0A= +SELECT=20has_setting_privilege('regress_host_resource_admin',=20= 'work_mem',=20'WHATEVER');=0A+ERROR:=20=20unrecognized=20privilege=20= type:=20"WHATEVER"=0A+--=20Grant=20privileges=20on=20settings=20to=20the=20= new=20non-superuser=20role=0A+GRANT=20SET=20VALUE,=20ALTER=20SYSTEM=20ON=0A= +=09autovacuum_work_mem,=20hash_mem_multiplier,=20= logical_decoding_work_mem,=0A+=09maintenance_work_mem,=20= max_stack_depth,=20min_dynamic_shared_memory,=0A+=09shared_buffers,=20= temp_buffers,=20temp_file_limit,=20work_mem=0A+TO=20= regress_host_resource_admin;=0A+--=20Check=20setting=20privileges=20= after=20creating=20some=0A+SELECT=20grantee,=20setting,=20= privilege_type,=20is_grantable=0A+=09FROM=20= pg_catalog.pg_setting_privileges=0A+=09ORDER=20BY=20grantee,=20setting,=20= privilege_type;=0A+=20=20=20=20=20=20=20=20=20=20=20grantee=20=20=20=20=20= =20=20=20=20=20=20|=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20setting=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20privilege_type=20|=20= is_grantable=20=0A= +-----------------------------+-------------------------------------+-----= -----------+--------------=0A+=20regress_host_resource_admin=20|=20= autovacuum_work_mem=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= ALTER=20SYSTEM=20=20=20|=20f=0A+=20regress_host_resource_admin=20|=20= autovacuum_work_mem=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20regress_host_resource_admin=20|=20= hash_mem_multiplier=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= ALTER=20SYSTEM=20=20=20|=20f=0A+=20regress_host_resource_admin=20|=20= hash_mem_multiplier=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20regress_host_resource_admin=20|=20= logical_decoding_work_mem=20=20=20=20=20=20=20=20=20=20=20|=20ALTER=20= SYSTEM=20=20=20|=20f=0A+=20regress_host_resource_admin=20|=20= logical_decoding_work_mem=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20regress_host_resource_admin=20|=20= maintenance_work_mem=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= ALTER=20SYSTEM=20=20=20|=20f=0A+=20regress_host_resource_admin=20|=20= maintenance_work_mem=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20regress_host_resource_admin=20|=20= max_stack_depth=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20ALTER=20SYSTEM=20=20=20|=20f=0A+=20regress_host_resource_admin=20= |=20max_stack_depth=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20= regress_host_resource_admin=20|=20min_dynamic_shared_memory=20=20=20=20=20= =20=20=20=20=20=20|=20ALTER=20SYSTEM=20=20=20|=20f=0A+=20= regress_host_resource_admin=20|=20min_dynamic_shared_memory=20=20=20=20=20= =20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20= regress_host_resource_admin=20|=20shared_buffers=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20|=20ALTER=20SYSTEM=20=20=20|=20f=0A= +=20regress_host_resource_admin=20|=20shared_buffers=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20= =20|=20f=0A+=20regress_host_resource_admin=20|=20temp_buffers=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20ALTER=20= SYSTEM=20=20=20|=20f=0A+=20regress_host_resource_admin=20|=20= temp_buffers=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20= regress_host_resource_admin=20|=20temp_file_limit=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20|=20ALTER=20SYSTEM=20=20=20|=20f=0A= +=20regress_host_resource_admin=20|=20temp_file_limit=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20regress_host_resource_admin=20|=20work_mem=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20ALTER=20= SYSTEM=20=20=20|=20f=0A+=20regress_host_resource_admin=20|=20work_mem=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20DateStyle=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= IntervalStyle=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= TimeZone=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20application_name=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= array_nulls=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= backend_flush_after=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20backslash_quote=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20bytea_output=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20check_function_bodies=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20client_connection_check_interval=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= client_min_messages=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20commit_siblings=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20constraint_exclusion=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20cpu_index_tuple_cost=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20cpu_operator_cost=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= cpu_tuple_cost=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= cursor_tuple_fraction=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= debug_pretty_print=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= debug_print_parse=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= debug_print_plan=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= debug_print_rewritten=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= default_statistics_target=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= default_table_access_method=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20= =20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20default_tablespace=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20= f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20default_text_search_config=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= default_toast_compression=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= default_transaction_deferrable=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20= =20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20default_transaction_isolation=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= default_transaction_read_only=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20= =20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20default_with_oids=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20effective_cache_size=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= effective_io_concurrency=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20enable_async_append=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20= =20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20|=20enable_bitmapscan=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20enable_gathermerge=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= enable_hashagg=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= enable_hashjoin=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= enable_incremental_sort=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20enable_indexonlyscan=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20enable_indexscan=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20enable_material=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= enable_memoize=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= enable_mergejoin=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= enable_nestloop=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= enable_parallel_append=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20enable_parallel_hash=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20enable_partition_pruning=20=20=20=20=20=20=20=20= =20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= enable_partitionwise_aggregate=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20= =20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20enable_partitionwise_join=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= enable_seqscan=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= enable_sort=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= enable_tidscan=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= escape_string_warning=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20exit_on_error=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20extra_float_digits=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20= =20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20force_parallel_mode=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20from_collapse_limit=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20geqo=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= geqo_effort=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= geqo_generations=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= geqo_pool_size=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= geqo_seed=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= geqo_selection_bias=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20geqo_threshold=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20gin_fuzzy_search_limit=20= =20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20gin_pending_list_limit=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= hash_mem_multiplier=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= idle_in_transaction_session_timeout=20|=20SET=20VALUE=20=20=20=20=20=20|=20= f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20idle_session_timeout=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= jit=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20jit_above_cost=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= jit_expressions=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= jit_inline_above_cost=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= jit_optimize_above_cost=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20jit_tuple_deforming=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20= =20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20|=20join_collapse_limit=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20lc_monetary=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20lc_numeric=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20lc_time=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20local_preload_libraries=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20lock_timeout=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= log_parameter_max_length_on_error=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20logical_decoding_work_mem=20=20=20=20=20=20=20=20= =20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= maintenance_io_concurrency=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20= =20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20|=20maintenance_work_mem=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20max_parallel_maintenance_workers=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20max_parallel_workers=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20max_parallel_workers_per_gather=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= min_parallel_index_scan_size=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20= =20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20min_parallel_table_scan_size=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= optimize_bounded_sort=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= parallel_leader_participation=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20= =20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20parallel_setup_cost=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20parallel_tuple_cost=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= password_encryption=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20plan_cache_mode=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20quote_all_identifiers=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20random_page_cost=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20role=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20= f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20row_security=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20search_path=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20seed=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20seq_page_cost=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20ssl_renegotiation_limit=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= standard_conforming_strings=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20= =20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20statement_timeout=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20= f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20synchronize_seqscans=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= synchronous_commit=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= tcp_keepalives_count=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= tcp_keepalives_idle=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= tcp_keepalives_interval=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20tcp_user_timeout=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20= =20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20temp_buffers=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20= =20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20|=20temp_tablespaces=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20timezone_abbreviations=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= trace_notify=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= trace_sort=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= trace_syncscan=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= transaction_deferrable=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20transaction_isolation=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20transaction_read_only=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20transform_null_equals=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20vacuum_cost_delay=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20= =20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20vacuum_cost_limit=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20= f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20vacuum_cost_page_dirty=20=20=20=20=20=20=20=20=20=20= =20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= vacuum_cost_page_hit=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= vacuum_cost_page_miss=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= vacuum_failsafe_age=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= vacuum_freeze_min_age=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= vacuum_freeze_table_age=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= vacuum_multixact_failsafe_age=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20= =20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20vacuum_multixact_freeze_min_age=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= vacuum_multixact_freeze_table_age=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20wal_sender_timeout=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20wal_skip_threshold=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20work_mem=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= xmlbinary=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= xmloption=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+(158=20rows)=0A= +=0A+--=20Check=20the=20new=20role=20now=20has=20privilges=20on=20= settings=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'SET=20VALUE,=20ALTER=20SYSTEM');=0A+=20has_setting_privilege=20=0A= +-----------------------=0A+=20t=0A+(1=20row)=0A+=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'SET=20VALUE');=0A+=20has_setting_privilege=20=0A= +-----------------------=0A+=20t=0A+(1=20row)=0A+=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'ALTER=20SYSTEM');=0A+=20has_setting_privilege=20=0A= +-----------------------=0A+=20t=0A+(1=20row)=0A+=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'SET=20VALUE=20WITH=20GRANT=20OPTION,=20ALTER=20SYSTEM=20WITH=20GRANT=20= OPTION');=0A+=20has_setting_privilege=20=0A+-----------------------=0A+=20= f=0A+(1=20row)=0A+=0A+--=20Check=20again=20the=20inappropriate=20and=20= nonsense=20privilege=20types.=20=20The=20prior=20similar=20check=0A+--=20= was=20performed=20before=20any=20entry=20for=20work_mem=20existed.=0A= +SELECT=20has_setting_privilege('regress_host_resource_admin',=20= 'work_mem',=20'SELECT,=20UPDATE,=20CREATE');=0A+ERROR:=20=20unrecognized=20= privilege=20type:=20"SELECT"=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'USAGE');=0A+ERROR:=20=20unrecognized=20privilege=20type:=20"USAGE"=0A= +SELECT=20has_setting_privilege('regress_host_resource_admin',=20= 'work_mem',=20'WHATEVER');=0A+ERROR:=20=20unrecognized=20privilege=20= type:=20"WHATEVER"=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'WHATEVER=20WITH=20GRANT=20OPTION');=0A+ERROR:=20=20unrecognized=20= privilege=20type:=20"WHATEVER=20WITH=20GRANT=20OPTION"=0A+--=20Check=20= other=20function=20signatures=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=0A+=09=09=09=09=09=09= =09=20(SELECT=20oid=20FROM=20pg_catalog.pg_setting_acl=20WHERE=20setting=20= =3D=20'max_stack_depth'),=0A+=09=09=09=09=09=09=09=20'SET=20VALUE');=0A+=20= has_setting_privilege=20=0A+-----------------------=0A+=20t=0A+(1=20row)=0A= +=0A+SELECT=20has_setting_privilege((SELECT=20oid=20FROM=20= pg_catalog.pg_authid=20WHERE=20rolname=20=3D=20= 'regress_host_resource_admin'),=0A+=09=09=09=09=09=09=09=20= 'max_stack_depth',=0A+=09=09=09=09=09=09=09=20'SET=20VALUE');=0A+=20= has_setting_privilege=20=0A+-----------------------=0A+=20t=0A+(1=20row)=0A= +=0A+SELECT=20has_setting_privilege((SELECT=20oid=20FROM=20= pg_catalog.pg_authid=20WHERE=20rolname=20=3D=20= 'regress_host_resource_admin'),=0A+=09=09=09=09=09=09=09=20(SELECT=20oid=20= FROM=20pg_catalog.pg_setting_acl=20WHERE=20setting=20=3D=20= 'max_stack_depth'),=0A+=09=09=09=09=09=09=09=20'SET=20VALUE');=0A+=20= has_setting_privilege=20=0A+-----------------------=0A+=20t=0A+(1=20row)=0A= +=0A+SELECT=20has_setting_privilege('hash_mem_multiplier',=20'set=20= value');=0A+=20has_setting_privilege=20=0A+-----------------------=0A+=20= t=0A+(1=20row)=0A+=0A+SELECT=20has_setting_privilege((SELECT=20oid=20= FROM=20pg_catalog.pg_setting_acl=20WHERE=20setting=20=3D=20'work_mem'),=0A= +=09=09=09=09=09=09=09=20'alter=20system=20with=20grant=20option');=0A+=20= has_setting_privilege=20=0A+-----------------------=0A+=20t=0A+(1=20row)=0A= +=0A+--=20Check=20setting=20privileges=20show=20up=20in=20view=0A+SELECT=20= grantee,=20setting,=20privilege_type,=20is_grantable=0A+=09FROM=20= pg_catalog.pg_setting_privileges=0A+=09ORDER=20BY=20grantee,=20setting,=20= privilege_type;=0A+=20=20=20=20=20=20=20=20=20=20=20grantee=20=20=20=20=20= =20=20=20=20=20=20|=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20setting=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20privilege_type=20|=20= is_grantable=20=0A= +-----------------------------+-------------------------------------+-----= -----------+--------------=0A+=20regress_host_resource_admin=20|=20= autovacuum_work_mem=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= ALTER=20SYSTEM=20=20=20|=20f=0A+=20regress_host_resource_admin=20|=20= autovacuum_work_mem=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20regress_host_resource_admin=20|=20= hash_mem_multiplier=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= ALTER=20SYSTEM=20=20=20|=20f=0A+=20regress_host_resource_admin=20|=20= hash_mem_multiplier=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20regress_host_resource_admin=20|=20= logical_decoding_work_mem=20=20=20=20=20=20=20=20=20=20=20|=20ALTER=20= SYSTEM=20=20=20|=20f=0A+=20regress_host_resource_admin=20|=20= logical_decoding_work_mem=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20regress_host_resource_admin=20|=20= maintenance_work_mem=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= ALTER=20SYSTEM=20=20=20|=20f=0A+=20regress_host_resource_admin=20|=20= maintenance_work_mem=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20regress_host_resource_admin=20|=20= max_stack_depth=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20ALTER=20SYSTEM=20=20=20|=20f=0A+=20regress_host_resource_admin=20= |=20max_stack_depth=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20= regress_host_resource_admin=20|=20min_dynamic_shared_memory=20=20=20=20=20= =20=20=20=20=20=20|=20ALTER=20SYSTEM=20=20=20|=20f=0A+=20= regress_host_resource_admin=20|=20min_dynamic_shared_memory=20=20=20=20=20= =20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20= regress_host_resource_admin=20|=20shared_buffers=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20|=20ALTER=20SYSTEM=20=20=20|=20f=0A= +=20regress_host_resource_admin=20|=20shared_buffers=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20= =20|=20f=0A+=20regress_host_resource_admin=20|=20temp_buffers=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20ALTER=20= SYSTEM=20=20=20|=20f=0A+=20regress_host_resource_admin=20|=20= temp_buffers=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20= regress_host_resource_admin=20|=20temp_file_limit=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20|=20ALTER=20SYSTEM=20=20=20|=20f=0A= +=20regress_host_resource_admin=20|=20temp_file_limit=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20regress_host_resource_admin=20|=20work_mem=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20ALTER=20= SYSTEM=20=20=20|=20f=0A+=20regress_host_resource_admin=20|=20work_mem=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20DateStyle=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= IntervalStyle=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= TimeZone=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20application_name=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= array_nulls=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= backend_flush_after=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20backslash_quote=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20bytea_output=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20check_function_bodies=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20client_connection_check_interval=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= client_min_messages=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20commit_siblings=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20constraint_exclusion=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20cpu_index_tuple_cost=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20cpu_operator_cost=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= cpu_tuple_cost=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= cursor_tuple_fraction=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= debug_pretty_print=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= debug_print_parse=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= debug_print_plan=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= debug_print_rewritten=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= default_statistics_target=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= default_table_access_method=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20= =20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20default_tablespace=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20= f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20default_text_search_config=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= default_toast_compression=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= default_transaction_deferrable=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20= =20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20default_transaction_isolation=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= default_transaction_read_only=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20= =20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20default_with_oids=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20effective_cache_size=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= effective_io_concurrency=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20enable_async_append=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20= =20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20|=20enable_bitmapscan=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20enable_gathermerge=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= enable_hashagg=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= enable_hashjoin=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= enable_incremental_sort=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20enable_indexonlyscan=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20enable_indexscan=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20enable_material=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= enable_memoize=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= enable_mergejoin=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= enable_nestloop=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= enable_parallel_append=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20enable_parallel_hash=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20enable_partition_pruning=20=20=20=20=20=20=20=20= =20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= enable_partitionwise_aggregate=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20= =20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20enable_partitionwise_join=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= enable_seqscan=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= enable_sort=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= enable_tidscan=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= escape_string_warning=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20exit_on_error=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20extra_float_digits=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20= =20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20force_parallel_mode=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20from_collapse_limit=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20geqo=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= geqo_effort=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= geqo_generations=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= geqo_pool_size=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= geqo_seed=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= geqo_selection_bias=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20geqo_threshold=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20gin_fuzzy_search_limit=20= =20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20gin_pending_list_limit=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= hash_mem_multiplier=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= idle_in_transaction_session_timeout=20|=20SET=20VALUE=20=20=20=20=20=20|=20= f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20idle_session_timeout=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= jit=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20jit_above_cost=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= jit_expressions=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= jit_inline_above_cost=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= jit_optimize_above_cost=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20jit_tuple_deforming=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20= =20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20|=20join_collapse_limit=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20lc_monetary=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20lc_numeric=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20lc_time=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20local_preload_libraries=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20lock_timeout=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= log_parameter_max_length_on_error=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20logical_decoding_work_mem=20=20=20=20=20=20=20=20= =20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= maintenance_io_concurrency=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20= =20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20|=20maintenance_work_mem=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20max_parallel_maintenance_workers=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20max_parallel_workers=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20max_parallel_workers_per_gather=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= min_parallel_index_scan_size=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20= =20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20min_parallel_table_scan_size=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= optimize_bounded_sort=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= parallel_leader_participation=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20= =20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20parallel_setup_cost=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20parallel_tuple_cost=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= password_encryption=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20plan_cache_mode=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20quote_all_identifiers=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20random_page_cost=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20role=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20= f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20row_security=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20search_path=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20seed=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20seq_page_cost=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20ssl_renegotiation_limit=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= standard_conforming_strings=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20= =20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20statement_timeout=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20= f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20synchronize_seqscans=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= synchronous_commit=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= tcp_keepalives_count=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= tcp_keepalives_idle=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= tcp_keepalives_interval=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20tcp_user_timeout=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20= =20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20temp_buffers=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20= =20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20|=20temp_tablespaces=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20timezone_abbreviations=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= trace_notify=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= trace_sort=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= trace_syncscan=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= transaction_deferrable=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20transaction_isolation=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20transaction_read_only=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= |=20transform_null_equals=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20vacuum_cost_delay=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20= =20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20|=20vacuum_cost_limit=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20= f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20vacuum_cost_page_dirty=20=20=20=20=20=20=20=20=20=20= =20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= vacuum_cost_page_hit=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= vacuum_cost_page_miss=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= vacuum_failsafe_age=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= vacuum_freeze_min_age=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= vacuum_freeze_table_age=20=20=20=20=20=20=20=20=20=20=20=20=20|=20SET=20= VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= vacuum_multixact_failsafe_age=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20= =20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20vacuum_multixact_freeze_min_age=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= vacuum_multixact_freeze_table_age=20=20=20|=20SET=20VALUE=20=20=20=20=20=20= |=20f=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20|=20wal_sender_timeout=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20|=20wal_skip_threshold=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20work_mem=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= xmlbinary=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20= xmloption=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20|=20SET=20VALUE=20=20=20=20=20=20|=20f=0A+(158=20rows)=0A= +=0A+--=20Perform=20all=20operations=20as=20user=20= 'regress_host_resource_admin'=20--=0A+SET=20SESSION=20AUTHORIZATION=20= regress_host_resource_admin;=0A+ALTER=20SYSTEM=20SET=20= autovacuum_work_mem=20=3D=2032;=20=20--=20ok,=20privileges=20have=20been=20= granted=0A+ALTER=20SYSTEM=20SET=20ignore_system_indexes=20=3D=20OFF;=20=20= --=20fail,=20insufficient=20privileges=0A+ERROR:=20=20permission=20= denied=20to=20set=20parameter=20"ignore_system_indexes"=0A+ALTER=20= SYSTEM=20RESET=20autovacuum_multixact_freeze_max_age;=20=20--=20fail,=20= insufficient=20privileges=0A+ERROR:=20=20permission=20denied=20to=20set=20= parameter=20"autovacuum_multixact_freeze_max_age"=0A+SET=20jit_provider=20= =3D=20'llvmjit';=20=20--=20fail,=20insufficient=20privileges=0A+ERROR:=20= =20parameter=20"jit_provider"=20cannot=20be=20changed=20without=20= restarting=20the=20server=0A+ALTER=20SYSTEM=20SET=20shared_buffers=20=3D=20= 50;=20=20--=20ok=0A+ALTER=20SYSTEM=20RESET=20shared_buffers;=20=20--=20= ok=0A+SET=20autovacuum_work_mem=20=3D=2050;=20=20--=20cannot=20be=20= changed=20now=0A+ERROR:=20=20parameter=20"autovacuum_work_mem"=20cannot=20= be=20changed=20now=0A+ALTER=20SYSTEM=20RESET=20temp_file_limit;=20=20--=20= ok=0A+SET=20TimeZone=20=3D=20'Europe/Helsinki';=20=20--=20ok=0A+ALTER=20= SYSTEM=20RESET=20autovacuum_work_mem;=20=20--=20ok,=20privileges=20have=20= been=20granted=0A+RESET=20TimeZone;=20=20--=20ok=0A+SET=20SESSION=20= AUTHORIZATION=20regress_admin;=0A+DROP=20ROLE=20= regress_host_resource_admin;=20=20--=20fail,=20privileges=20remain=0A= +ERROR:=20=20role=20"regress_host_resource_admin"=20cannot=20be=20= dropped=20because=20some=20objects=20depend=20on=20it=0A+DETAIL:=20=20= privileges=20for=20setting=20temp_buffers=0A+privileges=20for=20setting=20= work_mem=0A+privileges=20for=20setting=20maintenance_work_mem=0A= +privileges=20for=20setting=20logical_decoding_work_mem=0A+privileges=20= for=20setting=20hash_mem_multiplier=0A+privileges=20for=20setting=20= autovacuum_work_mem=0A+privileges=20for=20setting=20max_stack_depth=0A= +privileges=20for=20setting=20min_dynamic_shared_memory=0A+privileges=20= for=20setting=20shared_buffers=0A+privileges=20for=20setting=20= temp_file_limit=0A+--=20Use=20"revoke"=20to=20remove=20the=20privileges=20= and=20allow=20the=20role=20to=20be=20dropped=0A+REVOKE=20SET=20VALUE,=20= ALTER=20SYSTEM=20ON=0A+=09autovacuum_work_mem,=20hash_mem_multiplier,=20= logical_decoding_work_mem,=0A+=09maintenance_work_mem,=20= max_stack_depth,=20min_dynamic_shared_memory,=0A+=09shared_buffers,=20= temp_buffers,=20temp_file_limit,=20work_mem=0A+FROM=20= regress_host_resource_admin;=0A+DROP=20ROLE=20= regress_host_resource_admin;=20=20--=20ok=0A+--=20Try=20that=20again,=20= but=20use=20"drop=20owned=20by"=20instead=20of=20"revoke"=0A+CREATE=20= ROLE=20regress_host_resource_admin=20NOSUPERUSER;=0A+SET=20SESSION=20= AUTHORIZATION=20regress_host_resource_admin;=0A+ALTER=20SYSTEM=20SET=20= autovacuum_work_mem=20=3D=2032;=20=20--=20fail,=20privileges=20not=20yet=20= granted=0A+ERROR:=20=20permission=20denied=20to=20set=20parameter=20= "autovacuum_work_mem"=0A+SET=20SESSION=20AUTHORIZATION=20regress_admin;=0A= +GRANT=20SET=20VALUE,=20ALTER=20SYSTEM=20ON=0A+=09autovacuum_work_mem,=20= hash_mem_multiplier,=20logical_decoding_work_mem,=0A+=09= maintenance_work_mem,=20max_stack_depth,=20min_dynamic_shared_memory,=0A= +=09shared_buffers,=20temp_buffers,=20temp_file_limit,=20work_mem=0A+TO=20= regress_host_resource_admin;=0A+DROP=20ROLE=20= regress_host_resource_admin;=20=20--=20fail,=20privileges=20remain=0A= +ERROR:=20=20role=20"regress_host_resource_admin"=20cannot=20be=20= dropped=20because=20some=20objects=20depend=20on=20it=0A+DETAIL:=20=20= privileges=20for=20setting=20temp_buffers=0A+privileges=20for=20setting=20= work_mem=0A+privileges=20for=20setting=20maintenance_work_mem=0A= +privileges=20for=20setting=20logical_decoding_work_mem=0A+privileges=20= for=20setting=20hash_mem_multiplier=0A+privileges=20for=20setting=20= autovacuum_work_mem=0A+privileges=20for=20setting=20max_stack_depth=0A= +privileges=20for=20setting=20min_dynamic_shared_memory=0A+privileges=20= for=20setting=20shared_buffers=0A+privileges=20for=20setting=20= temp_file_limit=0A+DROP=20OWNED=20BY=20regress_host_resource_admin=20= RESTRICT;=20--=20cascade=20should=20not=20be=20needed=0A+SET=20SESSION=20= AUTHORIZATION=20regress_host_resource_admin;=0A+ALTER=20SYSTEM=20SET=20= autovacuum_work_mem=20=3D=2032;=20=20--=20fail,=20"drop=20owned"=20has=20= dropped=20privileges=0A+ERROR:=20=20permission=20denied=20to=20set=20= parameter=20"autovacuum_work_mem"=0A+SET=20SESSION=20AUTHORIZATION=20= regress_admin;=0A+DROP=20ROLE=20regress_host_resource_admin;=20=20--=20= ok=0A+--=20Try=20that=20again,=20but=20use=20"reassign=20owned=20by"=20= this=20time=0A+CREATE=20ROLE=20regress_host_resource_admin=20= NOSUPERUSER;=0A+CREATE=20ROLE=20regress_host_resource_newadmin=20= NOSUPERUSER;=0A+GRANT=20SET=20VALUE,=20ALTER=20SYSTEM=20ON=0A+=09= autovacuum_work_mem,=20hash_mem_multiplier,=20logical_decoding_work_mem,=0A= +=09maintenance_work_mem,=20max_stack_depth,=20= min_dynamic_shared_memory,=0A+=09shared_buffers,=20temp_buffers,=20= temp_file_limit,=20work_mem=0A+TO=20regress_host_resource_admin;=0A= +REASSIGN=20OWNED=20BY=20regress_host_resource_admin=20TO=20= regress_host_resource_newadmin;=0A+SET=20SESSION=20AUTHORIZATION=20= regress_host_resource_admin;=0A+ALTER=20SYSTEM=20SET=20= autovacuum_work_mem=20=3D=2032;=20=20--=20ok,=20"reassign=20owned"=20did=20= not=20change=20privileges=0A+SET=20SESSION=20AUTHORIZATION=20= regress_admin;=0A+DROP=20ROLE=20regress_host_resource_admin;=20=20--=20= fail,=20privileges=20remain=0A+ERROR:=20=20role=20= "regress_host_resource_admin"=20cannot=20be=20dropped=20because=20some=20= objects=20depend=20on=20it=0A+DETAIL:=20=20privileges=20for=20setting=20= temp_buffers=0A+privileges=20for=20setting=20work_mem=0A+privileges=20= for=20setting=20maintenance_work_mem=0A+privileges=20for=20setting=20= logical_decoding_work_mem=0A+privileges=20for=20setting=20= hash_mem_multiplier=0A+privileges=20for=20setting=20autovacuum_work_mem=0A= +privileges=20for=20setting=20max_stack_depth=0A+privileges=20for=20= setting=20min_dynamic_shared_memory=0A+privileges=20for=20setting=20= shared_buffers=0A+privileges=20for=20setting=20temp_file_limit=0A+DROP=20= ROLE=20regress_host_resource_newadmin;=20=20--=20ok,=20nothing=20was=20= transferred=0A+--=20Use=20"drop=20owned=20by"=20so=20we=20can=20drop=20= the=20role=0A+DROP=20OWNED=20BY=20regress_host_resource_admin;=20=20--=20= ok=0A+DROP=20ROLE=20regress_host_resource_admin;=20=20--=20ok=0A+--=20= Create=20non-superuser=20with=20privileges=20to=20configure=20plgsql=20= custom=20variables=0A+CREATE=20ROLE=20regress_plpgsql_admin=20= NOSUPERUSER;=0A+--=20Perform=20all=20operations=20as=20user=20= 'regress_plpgsql_admin'=20--=0A+SET=20SESSION=20AUTHORIZATION=20= regress_plpgsql_admin;=0A+SET=20plpgsql.extra_errors=20TO=20'all';=0A= +SET=20plpgsql.extra_warnings=20TO=20'all';=0A+RESET=20= plpgsql.extra_errors;=0A+RESET=20plpgsql.extra_warnings;=0A+ALTER=20= SYSTEM=20SET=20plpgsql.extra_errors=20TO=20'all';=0A+ERROR:=20=20= permission=20denied=20to=20set=20parameter=20"plpgsql.extra_errors"=0A= +ALTER=20SYSTEM=20SET=20plpgsql.extra_warnings=20TO=20'all';=0A+ERROR:=20= =20permission=20denied=20to=20set=20parameter=20"plpgsql.extra_warnings"=0A= +ALTER=20SYSTEM=20RESET=20plpgsql.extra_errors;=0A+ERROR:=20=20= permission=20denied=20to=20set=20parameter=20"plpgsql.extra_errors"=0A= +ALTER=20SYSTEM=20RESET=20plpgsql.extra_warnings;=0A+ERROR:=20=20= permission=20denied=20to=20set=20parameter=20"plpgsql.extra_warnings"=0A= +SET=20SESSION=20AUTHORIZATION=20regress_admin;=0A+GRANT=20SET=20VALUE,=20= ALTER=20SYSTEM=20ON=0A+=09plpgsql.extra_warnings,=20plpgsql.extra_errors=0A= +TO=20regress_plpgsql_admin;=0A+--=20Perform=20all=20operations=20as=20= user=20'regress_plpgsql_admin'=20--=0A+SET=20SESSION=20AUTHORIZATION=20= regress_plpgsql_admin;=20=20--=20ok=0A+SET=20plpgsql.extra_errors=20TO=20= 'all';=20=20--=20ok=0A+SET=20plpgsql.extra_warnings=20TO=20'all';=20=20= --=20ok=0A+RESET=20plpgsql.extra_errors;=20=20--=20ok=0A+RESET=20= plpgsql.extra_warnings;=20=20--=20ok=0A+ALTER=20SYSTEM=20SET=20= plpgsql.extra_errors=20TO=20'all';=20=20--=20ok=0A+ALTER=20SYSTEM=20SET=20= plpgsql.extra_warnings=20TO=20'all';=20=20--=20ok=0A+ALTER=20SYSTEM=20= RESET=20plpgsql.extra_errors;=20=20--=20ok=0A+ALTER=20SYSTEM=20RESET=20= plpgsql.extra_warnings;=20=20--=20ok=0A+SET=20SESSION=20AUTHORIZATION=20= regress_admin;=0A+DROP=20ROLE=20regress_plpgsql_admin;=20=20--=20fail,=20= privileges=20remain=0A+ERROR:=20=20role=20"regress_plpgsql_admin"=20= cannot=20be=20dropped=20because=20some=20objects=20depend=20on=20it=0A= +DETAIL:=20=20privileges=20for=20setting=20plpgsql.extra_warnings=0A= +privileges=20for=20setting=20plpgsql.extra_errors=0A+REVOKE=20SET=20= VALUE,=20ALTER=20SYSTEM=20ON=0A+=09plpgsql.extra_warnings,=20= plpgsql.extra_errors=0A+FROM=20regress_plpgsql_admin;=0A+DROP=20ROLE=20= regress_plpgsql_admin;=20=20--=20ok=0Adiff=20--git=20= a/src/test/regress/expected/privileges.out=20= b/src/test/regress/expected/privileges.out=0Aindex=20= 0bc79be03d..6c8afdba57=20100644=0A---=20= a/src/test/regress/expected/privileges.out=0A+++=20= b/src/test/regress/expected/privileges.out=0A@@=20-54,6=20+54,33=20@@=20= REVOKE=20pg_read_all_settings=20FROM=20regress_priv_user8;=0A=20DROP=20= USER=20regress_priv_user10;=0A=20DROP=20USER=20regress_priv_user9;=0A=20= DROP=20USER=20regress_priv_user8;=0A+GRANT=20SET=20VALUE=20ON=20= enable_memoize=20TO=20regress_priv_user6;=0A+GRANT=20SET=20VALUE=20ON=20= enable_nestloop=20TO=20regress_priv_user6;=0A+SET=20ROLE=20= regress_priv_user6;=0A+SET=20enable_memoize=20TO=20false;=0A+SET=20= enable_nestloop=20TO=20false;=0A+RESET=20enable_memoize;=0A+RESET=20= enable_nestloop;=0A+RESET=20ROLE;=0A+GRANT=20ALTER=20SYSTEM=20ON=20= enable_seqscan=20TO=20regress_priv_user7;=20--=20ok=0A+GRANT=20ALTER=20= SYSTEM=20ON=20sort_mem=20TO=20regress_priv_user7;=20--=20old=20name=20= for=20"work_mem"=0A+GRANT=20ALTER=20SYSTEM=20ON=20maintenance_work_mem=20= TO=20regress_priv_user7;=20--=20ok=0A+GRANT=20ALTER=20SYSTEM=20ON=20= no_such_param=20TO=20regress_priv_user7;=20--=20ok=0A+GRANT=20ALTER=20= SYSTEM=20ON=20no_such_extension.no_such_param=20TO=20regress_priv_user7;=20= --=20ok=0A+GRANT=20ALTER=20SYSTEM=20ON=20= no_such_extension.no_such_param.longer.than.maximum.namedata.length=20TO=20= regress_priv_user7;=20--=20ok=0A+GRANT=20ALTER=20SYSTEM=20ON=20""=20TO=20= regress_priv_user7;=20--=20bad=20name=0A+ERROR:=20=20zero-length=20= delimited=20identifier=20at=20or=20near=20""""=0A+LINE=201:=20GRANT=20= ALTER=20SYSTEM=20ON=20""=20TO=20regress_priv_user7;=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= ^=0A+GRANT=20ALTER=20SYSTEM=20ON=20"=20"=20TO=20regress_priv_user7;=20--=20= bad=20name=0A+ERROR:=20=20invalid=20setting=20name=20"=20"=0A+GRANT=20= ALTER=20SYSTEM=20ON=20"=20foo=20"=20TO=20regress_priv_user7;=20--=20bad=20= name=0A+ERROR:=20=20invalid=20setting=20name=20"=20foo=20"=0A+GRANT=20= SELECT=20ON=20public.persons2=20TO=20regress_priv_user7;=0A+SET=20ROLE=20= regress_priv_user7;=0A+ALTER=20SYSTEM=20SET=20enable_seqscan=20=3D=20= OFF;=0A+ALTER=20SYSTEM=20RESET=20enable_seqscan;=0A+RESET=20ROLE;=0A=20= CREATE=20GROUP=20regress_priv_group1;=0A=20CREATE=20GROUP=20= regress_priv_group2=20WITH=20USER=20regress_priv_user1,=20= regress_priv_user2;=0A=20ALTER=20GROUP=20regress_priv_group1=20ADD=20= USER=20regress_priv_user4;=0A@@=20-2357,10=20+2384,32=20@@=20DROP=20USER=20= regress_priv_user2;=0A=20DROP=20USER=20regress_priv_user3;=0A=20DROP=20= USER=20regress_priv_user4;=0A=20DROP=20USER=20regress_priv_user5;=0A= -DROP=20USER=20regress_priv_user6;=0A-DROP=20USER=20regress_priv_user7;=0A= +DROP=20USER=20regress_priv_user6;=20--=20privileges=20remain=0A+ERROR:=20= =20role=20"regress_priv_user6"=20cannot=20be=20dropped=20because=20some=20= objects=20depend=20on=20it=0A+DETAIL:=20=20privileges=20for=20setting=20= enable_memoize=0A+privileges=20for=20setting=20enable_nestloop=0A+DROP=20= USER=20regress_priv_user7;=20--=20privileges=20remain=0A+ERROR:=20=20= role=20"regress_priv_user7"=20cannot=20be=20dropped=20because=20some=20= objects=20depend=20on=20it=0A+DETAIL:=20=20privileges=20for=20setting=20= enable_seqscan=0A+privileges=20for=20setting=20work_mem=0A+privileges=20= for=20setting=20maintenance_work_mem=0A+privileges=20for=20table=20= persons2=0A+privileges=20for=20setting=20no_such_param=0A+privileges=20= for=20setting=20no_such_extension.no_such_param=0A+privileges=20for=20= setting=20= no_such_extension.no_such_param.longer.than.maximum.namedata.length=0A=20= DROP=20USER=20regress_priv_user8;=20--=20does=20not=20exist=0A=20ERROR:=20= =20role=20"regress_priv_user8"=20does=20not=20exist=0A+REVOKE=20SELECT=20= ON=20public.persons2=20FROM=20regress_priv_user7;=0A+REVOKE=20ALTER=20= SYSTEM=20ON=20enable_seqscan=20FROM=20regress_priv_user7;=20--=20ok=0A= +REVOKE=20ALTER=20SYSTEM=20ON=20work_mem=20FROM=20regress_priv_user7;=20= --=20ok,=20use=20new=20name=0A+REVOKE=20ALTER=20SYSTEM=20ON=20vacuum_mem=20= FROM=20regress_priv_user7;=20--=20ok,=20use=20old=20name=0A+REVOKE=20= ALTER=20SYSTEM=20ON=20no_such_param=20FROM=20regress_priv_user7;=20--=20= ok=0A+REVOKE=20ALTER=20SYSTEM=20ON=20no_such_extension.no_such_param=20= FROM=20regress_priv_user7;=20--=20ok=0A+REVOKE=20ALTER=20SYSTEM=20ON=20= no_such_extension.no_such_param.longer.than.maximum.namedata.length=20= FROM=20regress_priv_user7;=20--=20ok=0A+DROP=20USER=20= regress_priv_user7;=20--=20ok=0A+REVOKE=20SET=20VALUE=20ON=20= enable_memoize=20FROM=20regress_priv_user6;=0A+REVOKE=20SET=20VALUE=20ON=20= enable_nestloop=20FROM=20regress_priv_user6;=0A+DROP=20USER=20= regress_priv_user6;=20--=20ok=0A=20--=20permissions=20with=20LOCK=20= TABLE=0A=20CREATE=20USER=20regress_locktable_user;=0A=20CREATE=20TABLE=20= lock_table=20(a=20int);=0Adiff=20--git=20= a/src/test/regress/expected/rules.out=20= b/src/test/regress/expected/rules.out=0Aindex=20b58b062b10..e262035269=20= 100644=0A---=20a/src/test/regress/expected/rules.out=0A+++=20= b/src/test/regress/expected/rules.out=0A@@=20-1708,6=20+1708,19=20@@=20= pg_sequences|=20SELECT=20n.nspname=20AS=20schemaname,=0A=20=20=20=20=20=20= JOIN=20pg_class=20c=20ON=20((c.oid=20=3D=20s.seqrelid)))=0A=20=20=20=20=20= =20LEFT=20JOIN=20pg_namespace=20n=20ON=20((n.oid=20=3D=20= c.relnamespace)))=0A=20=20=20WHERE=20((NOT=20= pg_is_other_temp_schema(n.oid))=20AND=20(c.relkind=20=3D=20= 'S'::"char"));=0A+pg_setting_privileges|=20SELECT=20grantor.rolname=20AS=20= grantor,=0A+=20=20=20=20grantee.rolname=20AS=20grantee,=0A+=20=20=20=20= set_acl.setting,=0A+=20=20=20=20acl.privilege_type,=0A+=20=20=20=20= acl.is_grantable=0A+=20=20=20FROM=20pg_setting_acl=20set_acl,=0A+=20=20=20= =20((LATERAL=20(=20SELECT=20aclexplode.grantor,=0A+=20=20=20=20=20=20=20=20= =20=20=20=20aclexplode.grantee,=0A+=20=20=20=20=20=20=20=20=20=20=20=20= aclexplode.privilege_type,=0A+=20=20=20=20=20=20=20=20=20=20=20=20= aclexplode.is_grantable=0A+=20=20=20=20=20=20=20=20=20=20=20FROM=20= aclexplode(set_acl.setacl)=20aclexplode(grantor,=20grantee,=20= privilege_type,=20is_grantable))=20acl=0A+=20=20=20=20=20LEFT=20JOIN=20= pg_authid=20grantee=20ON=20((acl.grantee=20=3D=20grantee.oid)))=0A+=20=20= =20=20=20LEFT=20JOIN=20pg_authid=20grantor=20ON=20((acl.grantor=20=3D=20= grantor.oid)));=0A=20pg_settings|=20SELECT=20a.name,=0A=20=20=20=20=20= a.setting,=0A=20=20=20=20=20a.unit,=0Adiff=20--git=20= a/src/test/regress/expected/sanity_check.out=20= b/src/test/regress/expected/sanity_check.out=0Aindex=20= 63706a28cc..4a8208c789=20100644=0A---=20= a/src/test/regress/expected/sanity_check.out=0A+++=20= b/src/test/regress/expected/sanity_check.out=0A@@=20-147,6=20+147,7=20@@=20= pg_replication_origin|t=0A=20pg_rewrite|t=0A=20pg_seclabel|t=0A=20= pg_sequence|t=0A+pg_setting_acl|t=0A=20pg_shdepend|t=0A=20= pg_shdescription|t=0A=20pg_shseclabel|t=0Adiff=20--git=20= a/src/test/regress/parallel_schedule=20= b/src/test/regress/parallel_schedule=0Aindex=20017e962fed..b45a203eb6=20= 100644=0A---=20a/src/test/regress/parallel_schedule=0A+++=20= b/src/test/regress/parallel_schedule=0A@@=20-86,7=20+86,7=20@@=20test:=20= brin_bloom=20brin_multi=0A=20#=20----------=0A=20#=20Another=20group=20= of=20parallel=20tests=0A=20#=20----------=0A-test:=20create_table_like=20= alter_generic=20alter_operator=20misc=20async=20dbsize=20misc_functions=20= sysviews=20tsrf=20tid=20tidscan=20tidrangescan=20collate.icu.utf8=20= incremental_sort=0A+test:=20create_table_like=20alter_generic=20= alter_operator=20misc=20async=20dbsize=20misc_functions=20sysviews=20= tsrf=20tid=20tidscan=20tidrangescan=20collate.icu.utf8=20= incremental_sort=20guc_privs=0A=20=0A=20#=20rules=20cannot=20run=20= concurrently=20with=20any=20test=20that=20creates=0A=20#=20a=20view=20or=20= rule=20in=20the=20public=20schema=0Adiff=20--git=20= a/src/test/regress/sql/guc_privs.sql=20= b/src/test/regress/sql/guc_privs.sql=0Anew=20file=20mode=20100644=0A= index=200000000000..31728c5be8=0A---=20/dev/null=0A+++=20= b/src/test/regress/sql/guc_privs.sql=0A@@=20-0,0=20+1,185=20@@=0A+--=20= Test=20superuser=0A+--=20Superuser=20DBA=0A+CREATE=20ROLE=20= regress_admin=20SUPERUSER;=0A+--=20Perform=20all=20operations=20as=20= user=20'regress_admin'=20--=0A+SET=20SESSION=20AUTHORIZATION=20= regress_admin;=0A+--=20PGC_BACKEND=0A+SET=20ignore_system_indexes=20=3D=20= OFF;=20=20--=20fail,=20cannot=20be=20set=20after=20connection=20start=0A= +RESET=20ignore_system_indexes;=20=20--=20fail,=20cannot=20be=20set=20= after=20connection=20start=0A+ALTER=20SYSTEM=20SET=20= ignore_system_indexes=20=3D=20OFF;=20=20--=20ok=0A+ALTER=20SYSTEM=20= RESET=20ignore_system_indexes;=20=20--=20ok=0A+--=20PGC_INTERNAL=0A+SET=20= block_size=20=3D=2050;=20=20--=20fail,=20cannot=20be=20changed=0A+RESET=20= block_size;=20=20--=20fail,=20cannot=20be=20changed=0A+ALTER=20SYSTEM=20= SET=20block_size=20=3D=2050;=20=20--=20fail,=20cannot=20be=20changed=0A= +ALTER=20SYSTEM=20RESET=20block_size;=20=20--=20fail,=20cannot=20be=20= changed=0A+--=20PGC_POSTMASTER=0A+SET=20autovacuum_freeze_max_age=20=3D=20= 1000050000;=20=20--=20fail,=20requires=20restart=0A+RESET=20= autovacuum_freeze_max_age;=20=20--=20fail,=20requires=20restart=0A+ALTER=20= SYSTEM=20SET=20autovacuum_freeze_max_age=20=3D=201000050000;=20=20--=20= ok=0A+ALTER=20SYSTEM=20RESET=20autovacuum_freeze_max_age;=20=20--=20ok=0A= +ALTER=20SYSTEM=20SET=20config_file=20=3D=20= '/usr/local/data/postgresql.conf';=20=20--=20fail,=20cannot=20be=20= changed=0A+ALTER=20SYSTEM=20RESET=20config_file;=20=20--=20fail,=20= cannot=20be=20changed=0A+--=20PGC_SIGHUP=0A+SET=20autovacuum=20=3D=20= OFF;=20=20--=20fail,=20requires=20reload=0A+RESET=20autovacuum;=20=20--=20= fail,=20requires=20reload=0A+ALTER=20SYSTEM=20SET=20autovacuum=20=3D=20= OFF;=20=20--=20ok=0A+ALTER=20SYSTEM=20RESET=20autovacuum;=20=20--=20ok=0A= +--=20PGC_SUSET=0A+SET=20lc_messages=20=3D=20'en_US.UTF-8';=20=20--=20ok=0A= +RESET=20lc_messages;=20=20--=20ok=0A+ALTER=20SYSTEM=20SET=20lc_messages=20= =3D=20'en_US.UTF-8';=20=20--=20ok=0A+ALTER=20SYSTEM=20RESET=20= lc_messages;=20=20--=20ok=0A+--=20PGC_SU_BACKEND=0A+SET=20= jit_debugging_support=20=3D=20OFF;=20=20--=20fail,=20cannot=20be=20set=20= after=20connection=20start=0A+RESET=20jit_debugging_support;=20=20--=20= fail,=20cannot=20be=20set=20after=20connection=20start=0A+ALTER=20SYSTEM=20= SET=20jit_debugging_support=20=3D=20OFF;=20=20--=20ok=0A+ALTER=20SYSTEM=20= RESET=20jit_debugging_support;=20=20--=20ok=0A+--=20PGC_USERSET=0A+SET=20= DateStyle=20=3D=20'ISO,=20MDY';=20=20--=20ok=0A+RESET=20DateStyle;=20=20= --=20ok=0A+ALTER=20SYSTEM=20SET=20DateStyle=20=3D=20'ISO,=20MDY';=20=20= --=20ok=0A+ALTER=20SYSTEM=20RESET=20DateStyle;=20=20--=20ok=0A+ALTER=20= SYSTEM=20SET=20ssl_renegotiation_limit=20=3D=200;=20=20--=20fail,=20= cannot=20be=20changed=0A+ALTER=20SYSTEM=20RESET=20= ssl_renegotiation_limit;=20=20--=20fail,=20cannot=20be=20changed=0A+--=20= Finished=20testing=20superuser=0A+RESET=20statement_timeout;=0A+--=20= Check=20setting=20privileges=20prior=20to=20creating=20any=0A+SELECT=20= grantee,=20setting,=20privilege_type,=20is_grantable=0A+=09FROM=20= pg_catalog.pg_setting_privileges=0A+=09ORDER=20BY=20grantee,=20setting,=20= privilege_type;=0A+--=20Create=20non-superuser=20with=20privileges=20to=20= configure=20host=20resource=20usage=0A+CREATE=20ROLE=20= regress_host_resource_admin=20NOSUPERUSER;=0A+--=20Check=20the=20new=20= role=20does=20not=20yet=20have=20privileges=20on=20settings=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'SET=20VALUE,=20ALTER=20SYSTEM');=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'SET=20VALUE');=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'ALTER=20SYSTEM');=0A+--=20Check=20inappropriate=20and=20nonsense=20= privilege=20types=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'SELECT,=20UPDATE,=20CREATE');=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'USAGE');=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'WHATEVER');=0A+--=20Grant=20privileges=20on=20settings=20to=20the=20new=20= non-superuser=20role=0A+GRANT=20SET=20VALUE,=20ALTER=20SYSTEM=20ON=0A+=09= autovacuum_work_mem,=20hash_mem_multiplier,=20logical_decoding_work_mem,=0A= +=09maintenance_work_mem,=20max_stack_depth,=20= min_dynamic_shared_memory,=0A+=09shared_buffers,=20temp_buffers,=20= temp_file_limit,=20work_mem=0A+TO=20regress_host_resource_admin;=0A+--=20= Check=20setting=20privileges=20after=20creating=20some=0A+SELECT=20= grantee,=20setting,=20privilege_type,=20is_grantable=0A+=09FROM=20= pg_catalog.pg_setting_privileges=0A+=09ORDER=20BY=20grantee,=20setting,=20= privilege_type;=0A+--=20Check=20the=20new=20role=20now=20has=20privilges=20= on=20settings=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'SET=20VALUE,=20ALTER=20SYSTEM');=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'SET=20VALUE');=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'ALTER=20SYSTEM');=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'SET=20VALUE=20WITH=20GRANT=20OPTION,=20ALTER=20SYSTEM=20WITH=20GRANT=20= OPTION');=0A+--=20Check=20again=20the=20inappropriate=20and=20nonsense=20= privilege=20types.=20=20The=20prior=20similar=20check=0A+--=20was=20= performed=20before=20any=20entry=20for=20work_mem=20existed.=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'SELECT,=20UPDATE,=20CREATE');=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'USAGE');=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'WHATEVER');=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=20'work_mem',=20= 'WHATEVER=20WITH=20GRANT=20OPTION');=0A+--=20Check=20other=20function=20= signatures=0A+SELECT=20= has_setting_privilege('regress_host_resource_admin',=0A+=09=09=09=09=09=09= =09=20(SELECT=20oid=20FROM=20pg_catalog.pg_setting_acl=20WHERE=20setting=20= =3D=20'max_stack_depth'),=0A+=09=09=09=09=09=09=09=20'SET=20VALUE');=0A= +SELECT=20has_setting_privilege((SELECT=20oid=20FROM=20= pg_catalog.pg_authid=20WHERE=20rolname=20=3D=20= 'regress_host_resource_admin'),=0A+=09=09=09=09=09=09=09=20= 'max_stack_depth',=0A+=09=09=09=09=09=09=09=20'SET=20VALUE');=0A+SELECT=20= has_setting_privilege((SELECT=20oid=20FROM=20pg_catalog.pg_authid=20= WHERE=20rolname=20=3D=20'regress_host_resource_admin'),=0A+=09=09=09=09=09= =09=09=20(SELECT=20oid=20FROM=20pg_catalog.pg_setting_acl=20WHERE=20= setting=20=3D=20'max_stack_depth'),=0A+=09=09=09=09=09=09=09=20'SET=20= VALUE');=0A+SELECT=20has_setting_privilege('hash_mem_multiplier',=20'set=20= value');=0A+SELECT=20has_setting_privilege((SELECT=20oid=20FROM=20= pg_catalog.pg_setting_acl=20WHERE=20setting=20=3D=20'work_mem'),=0A+=09=09= =09=09=09=09=09=20'alter=20system=20with=20grant=20option');=0A+--=20= Check=20setting=20privileges=20show=20up=20in=20view=0A+SELECT=20= grantee,=20setting,=20privilege_type,=20is_grantable=0A+=09FROM=20= pg_catalog.pg_setting_privileges=0A+=09ORDER=20BY=20grantee,=20setting,=20= privilege_type;=0A+--=20Perform=20all=20operations=20as=20user=20= 'regress_host_resource_admin'=20--=0A+SET=20SESSION=20AUTHORIZATION=20= regress_host_resource_admin;=0A+ALTER=20SYSTEM=20SET=20= autovacuum_work_mem=20=3D=2032;=20=20--=20ok,=20privileges=20have=20been=20= granted=0A+ALTER=20SYSTEM=20SET=20ignore_system_indexes=20=3D=20OFF;=20=20= --=20fail,=20insufficient=20privileges=0A+ALTER=20SYSTEM=20RESET=20= autovacuum_multixact_freeze_max_age;=20=20--=20fail,=20insufficient=20= privileges=0A+SET=20jit_provider=20=3D=20'llvmjit';=20=20--=20fail,=20= insufficient=20privileges=0A+ALTER=20SYSTEM=20SET=20shared_buffers=20=3D=20= 50;=20=20--=20ok=0A+ALTER=20SYSTEM=20RESET=20shared_buffers;=20=20--=20= ok=0A+SET=20autovacuum_work_mem=20=3D=2050;=20=20--=20cannot=20be=20= changed=20now=0A+ALTER=20SYSTEM=20RESET=20temp_file_limit;=20=20--=20ok=0A= +SET=20TimeZone=20=3D=20'Europe/Helsinki';=20=20--=20ok=0A+ALTER=20= SYSTEM=20RESET=20autovacuum_work_mem;=20=20--=20ok,=20privileges=20have=20= been=20granted=0A+RESET=20TimeZone;=20=20--=20ok=0A+SET=20SESSION=20= AUTHORIZATION=20regress_admin;=0A+DROP=20ROLE=20= regress_host_resource_admin;=20=20--=20fail,=20privileges=20remain=0A+--=20= Use=20"revoke"=20to=20remove=20the=20privileges=20and=20allow=20the=20= role=20to=20be=20dropped=0A+REVOKE=20SET=20VALUE,=20ALTER=20SYSTEM=20ON=0A= +=09autovacuum_work_mem,=20hash_mem_multiplier,=20= logical_decoding_work_mem,=0A+=09maintenance_work_mem,=20= max_stack_depth,=20min_dynamic_shared_memory,=0A+=09shared_buffers,=20= temp_buffers,=20temp_file_limit,=20work_mem=0A+FROM=20= regress_host_resource_admin;=0A+DROP=20ROLE=20= regress_host_resource_admin;=20=20--=20ok=0A+--=20Try=20that=20again,=20= but=20use=20"drop=20owned=20by"=20instead=20of=20"revoke"=0A+CREATE=20= ROLE=20regress_host_resource_admin=20NOSUPERUSER;=0A+SET=20SESSION=20= AUTHORIZATION=20regress_host_resource_admin;=0A+ALTER=20SYSTEM=20SET=20= autovacuum_work_mem=20=3D=2032;=20=20--=20fail,=20privileges=20not=20yet=20= granted=0A+SET=20SESSION=20AUTHORIZATION=20regress_admin;=0A+GRANT=20SET=20= VALUE,=20ALTER=20SYSTEM=20ON=0A+=09autovacuum_work_mem,=20= hash_mem_multiplier,=20logical_decoding_work_mem,=0A+=09= maintenance_work_mem,=20max_stack_depth,=20min_dynamic_shared_memory,=0A= +=09shared_buffers,=20temp_buffers,=20temp_file_limit,=20work_mem=0A+TO=20= regress_host_resource_admin;=0A+DROP=20ROLE=20= regress_host_resource_admin;=20=20--=20fail,=20privileges=20remain=0A= +DROP=20OWNED=20BY=20regress_host_resource_admin=20RESTRICT;=20--=20= cascade=20should=20not=20be=20needed=0A+SET=20SESSION=20AUTHORIZATION=20= regress_host_resource_admin;=0A+ALTER=20SYSTEM=20SET=20= autovacuum_work_mem=20=3D=2032;=20=20--=20fail,=20"drop=20owned"=20has=20= dropped=20privileges=0A+SET=20SESSION=20AUTHORIZATION=20regress_admin;=0A= +DROP=20ROLE=20regress_host_resource_admin;=20=20--=20ok=0A+--=20Try=20= that=20again,=20but=20use=20"reassign=20owned=20by"=20this=20time=0A= +CREATE=20ROLE=20regress_host_resource_admin=20NOSUPERUSER;=0A+CREATE=20= ROLE=20regress_host_resource_newadmin=20NOSUPERUSER;=0A+GRANT=20SET=20= VALUE,=20ALTER=20SYSTEM=20ON=0A+=09autovacuum_work_mem,=20= hash_mem_multiplier,=20logical_decoding_work_mem,=0A+=09= maintenance_work_mem,=20max_stack_depth,=20min_dynamic_shared_memory,=0A= +=09shared_buffers,=20temp_buffers,=20temp_file_limit,=20work_mem=0A+TO=20= regress_host_resource_admin;=0A+REASSIGN=20OWNED=20BY=20= regress_host_resource_admin=20TO=20regress_host_resource_newadmin;=0A= +SET=20SESSION=20AUTHORIZATION=20regress_host_resource_admin;=0A+ALTER=20= SYSTEM=20SET=20autovacuum_work_mem=20=3D=2032;=20=20--=20ok,=20"reassign=20= owned"=20did=20not=20change=20privileges=0A+SET=20SESSION=20= AUTHORIZATION=20regress_admin;=0A+DROP=20ROLE=20= regress_host_resource_admin;=20=20--=20fail,=20privileges=20remain=0A= +DROP=20ROLE=20regress_host_resource_newadmin;=20=20--=20ok,=20nothing=20= was=20transferred=0A+--=20Use=20"drop=20owned=20by"=20so=20we=20can=20= drop=20the=20role=0A+DROP=20OWNED=20BY=20regress_host_resource_admin;=20=20= --=20ok=0A+DROP=20ROLE=20regress_host_resource_admin;=20=20--=20ok=0A+--=20= Create=20non-superuser=20with=20privileges=20to=20configure=20plgsql=20= custom=20variables=0A+CREATE=20ROLE=20regress_plpgsql_admin=20= NOSUPERUSER;=0A+--=20Perform=20all=20operations=20as=20user=20= 'regress_plpgsql_admin'=20--=0A+SET=20SESSION=20AUTHORIZATION=20= regress_plpgsql_admin;=0A+SET=20plpgsql.extra_errors=20TO=20'all';=0A= +SET=20plpgsql.extra_warnings=20TO=20'all';=0A+RESET=20= plpgsql.extra_errors;=0A+RESET=20plpgsql.extra_warnings;=0A+ALTER=20= SYSTEM=20SET=20plpgsql.extra_errors=20TO=20'all';=0A+ALTER=20SYSTEM=20= SET=20plpgsql.extra_warnings=20TO=20'all';=0A+ALTER=20SYSTEM=20RESET=20= plpgsql.extra_errors;=0A+ALTER=20SYSTEM=20RESET=20= plpgsql.extra_warnings;=0A+SET=20SESSION=20AUTHORIZATION=20= regress_admin;=0A+GRANT=20SET=20VALUE,=20ALTER=20SYSTEM=20ON=0A+=09= plpgsql.extra_warnings,=20plpgsql.extra_errors=0A+TO=20= regress_plpgsql_admin;=0A+--=20Perform=20all=20operations=20as=20user=20= 'regress_plpgsql_admin'=20--=0A+SET=20SESSION=20AUTHORIZATION=20= regress_plpgsql_admin;=20=20--=20ok=0A+SET=20plpgsql.extra_errors=20TO=20= 'all';=20=20--=20ok=0A+SET=20plpgsql.extra_warnings=20TO=20'all';=20=20= --=20ok=0A+RESET=20plpgsql.extra_errors;=20=20--=20ok=0A+RESET=20= plpgsql.extra_warnings;=20=20--=20ok=0A+ALTER=20SYSTEM=20SET=20= plpgsql.extra_errors=20TO=20'all';=20=20--=20ok=0A+ALTER=20SYSTEM=20SET=20= plpgsql.extra_warnings=20TO=20'all';=20=20--=20ok=0A+ALTER=20SYSTEM=20= RESET=20plpgsql.extra_errors;=20=20--=20ok=0A+ALTER=20SYSTEM=20RESET=20= plpgsql.extra_warnings;=20=20--=20ok=0A+SET=20SESSION=20AUTHORIZATION=20= regress_admin;=0A+DROP=20ROLE=20regress_plpgsql_admin;=20=20--=20fail,=20= privileges=20remain=0A+REVOKE=20SET=20VALUE,=20ALTER=20SYSTEM=20ON=0A+=09= plpgsql.extra_warnings,=20plpgsql.extra_errors=0A+FROM=20= regress_plpgsql_admin;=0A+DROP=20ROLE=20regress_plpgsql_admin;=20=20--=20= ok=0Adiff=20--git=20a/src/test/regress/sql/privileges.sql=20= b/src/test/regress/sql/privileges.sql=0Aindex=20c8c545b64c..ddbf6afa44=20= 100644=0A---=20a/src/test/regress/sql/privileges.sql=0A+++=20= b/src/test/regress/sql/privileges.sql=0A@@=20-66,6=20+66,33=20@@=20DROP=20= USER=20regress_priv_user10;=0A=20DROP=20USER=20regress_priv_user9;=0A=20= DROP=20USER=20regress_priv_user8;=0A=20=0A+GRANT=20SET=20VALUE=20ON=20= enable_memoize=20TO=20regress_priv_user6;=0A+GRANT=20SET=20VALUE=20ON=20= enable_nestloop=20TO=20regress_priv_user6;=0A+=0A+SET=20ROLE=20= regress_priv_user6;=0A+SET=20enable_memoize=20TO=20false;=0A+SET=20= enable_nestloop=20TO=20false;=0A+RESET=20enable_memoize;=0A+RESET=20= enable_nestloop;=0A+RESET=20ROLE;=0A+=0A+GRANT=20ALTER=20SYSTEM=20ON=20= enable_seqscan=20TO=20regress_priv_user7;=20--=20ok=0A+GRANT=20ALTER=20= SYSTEM=20ON=20sort_mem=20TO=20regress_priv_user7;=20--=20old=20name=20= for=20"work_mem"=0A+GRANT=20ALTER=20SYSTEM=20ON=20maintenance_work_mem=20= TO=20regress_priv_user7;=20--=20ok=0A+GRANT=20ALTER=20SYSTEM=20ON=20= no_such_param=20TO=20regress_priv_user7;=20--=20ok=0A+GRANT=20ALTER=20= SYSTEM=20ON=20no_such_extension.no_such_param=20TO=20regress_priv_user7;=20= --=20ok=0A+GRANT=20ALTER=20SYSTEM=20ON=20= no_such_extension.no_such_param.longer.than.maximum.namedata.length=20TO=20= regress_priv_user7;=20--=20ok=0A+GRANT=20ALTER=20SYSTEM=20ON=20""=20TO=20= regress_priv_user7;=20--=20bad=20name=0A+GRANT=20ALTER=20SYSTEM=20ON=20"=20= "=20TO=20regress_priv_user7;=20--=20bad=20name=0A+GRANT=20ALTER=20SYSTEM=20= ON=20"=20foo=20"=20TO=20regress_priv_user7;=20--=20bad=20name=0A+=0A= +GRANT=20SELECT=20ON=20public.persons2=20TO=20regress_priv_user7;=0A+=0A= +SET=20ROLE=20regress_priv_user7;=0A+ALTER=20SYSTEM=20SET=20= enable_seqscan=20=3D=20OFF;=0A+ALTER=20SYSTEM=20RESET=20enable_seqscan;=0A= +RESET=20ROLE;=0A+=0A=20CREATE=20GROUP=20regress_priv_group1;=0A=20= CREATE=20GROUP=20regress_priv_group2=20WITH=20USER=20regress_priv_user1,=20= regress_priv_user2;=0A=20=0A@@=20-1426,10=20+1453,23=20@@=20DROP=20USER=20= regress_priv_user2;=0A=20DROP=20USER=20regress_priv_user3;=0A=20DROP=20= USER=20regress_priv_user4;=0A=20DROP=20USER=20regress_priv_user5;=0A= -DROP=20USER=20regress_priv_user6;=0A-DROP=20USER=20regress_priv_user7;=0A= +DROP=20USER=20regress_priv_user6;=20--=20privileges=20remain=0A+DROP=20= USER=20regress_priv_user7;=20--=20privileges=20remain=0A=20DROP=20USER=20= regress_priv_user8;=20--=20does=20not=20exist=0A=20=0A+REVOKE=20SELECT=20= ON=20public.persons2=20FROM=20regress_priv_user7;=0A+REVOKE=20ALTER=20= SYSTEM=20ON=20enable_seqscan=20FROM=20regress_priv_user7;=20--=20ok=0A= +REVOKE=20ALTER=20SYSTEM=20ON=20work_mem=20FROM=20regress_priv_user7;=20= --=20ok,=20use=20new=20name=0A+REVOKE=20ALTER=20SYSTEM=20ON=20vacuum_mem=20= FROM=20regress_priv_user7;=20--=20ok,=20use=20old=20name=0A+REVOKE=20= ALTER=20SYSTEM=20ON=20no_such_param=20FROM=20regress_priv_user7;=20--=20= ok=0A+REVOKE=20ALTER=20SYSTEM=20ON=20no_such_extension.no_such_param=20= FROM=20regress_priv_user7;=20--=20ok=0A+REVOKE=20ALTER=20SYSTEM=20ON=20= no_such_extension.no_such_param.longer.than.maximum.namedata.length=20= FROM=20regress_priv_user7;=20--=20ok=0A+DROP=20USER=20= regress_priv_user7;=20--=20ok=0A+=0A+REVOKE=20SET=20VALUE=20ON=20= enable_memoize=20FROM=20regress_priv_user6;=0A+REVOKE=20SET=20VALUE=20ON=20= enable_nestloop=20FROM=20regress_priv_user6;=0A+=0A+DROP=20USER=20= regress_priv_user6;=20--=20ok=0A=20=0A=20--=20permissions=20with=20LOCK=20= TABLE=0A=20CREATE=20USER=20regress_locktable_user;=0A--=20=0A2.21.1=20= (Apple=20Git-122.3)=0A=0A= --Apple-Mail=_E024C488-3E6F-43F1-8B4C-C80F6788C871 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 =E2=80=94 Mark Dilger EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --Apple-Mail=_E024C488-3E6F-43F1-8B4C-C80F6788C871--