[sepostgresql/f14/master] fixup sepostgresql-9.0-fullset.patch (rebased to the v9.0.0)
KaiGai Kohei
kaigai at fedoraproject.org
Tue Oct 5 12:43:28 UTC 2010
commit 70e09826ba077775276df45e3f8569c0a1d3cb73
Author: KaiGai Kohei <kaigai at ak.jp.nec.com>
Date: Tue Oct 5 21:43:17 2010 +0900
fixup sepostgresql-9.0-fullset.patch (rebased to the v9.0.0)
sepostgresql-9.0-fullset.patch | 1207 +++++++++++++++++-----------------------
1 files changed, 500 insertions(+), 707 deletions(-)
---
diff --git a/sepostgresql-9.0-fullset.patch b/sepostgresql-9.0-fullset.patch
index ae16554..01b861d 100644
--- a/sepostgresql-9.0-fullset.patch
+++ b/sepostgresql-9.0-fullset.patch
@@ -1,8 +1,8 @@
diff --git a/configure b/configure
-index b91de59..b44a6be 100755
+index 7c54dc6..bb7e49c 100755
--- a/configure
+++ b/configure
-@@ -707,6 +707,7 @@ LDFLAGS_SL
+@@ -708,6 +708,7 @@ LDFLAGS_EX
ELF_SYS
EGREP
GREP
@@ -10,7 +10,7 @@ index b91de59..b44a6be 100755
with_zlib
with_system_tzdata
with_libxslt
-@@ -842,6 +843,7 @@ with_libxml
+@@ -843,6 +844,7 @@ with_libxml
with_libxslt
with_system_tzdata
with_zlib
@@ -18,7 +18,7 @@ index b91de59..b44a6be 100755
with_gnu_ld
enable_largefile
enable_float4_byval
-@@ -1498,6 +1500,7 @@ Optional Features:
+@@ -1500,6 +1502,7 @@ Optional Features:
--enable-depend turn on automatic dependency tracking
--enable-cassert enable assertion checks (for debugging)
--disable-thread-safety disable thread-safety in client libraries
@@ -26,7 +26,7 @@ index b91de59..b44a6be 100755
--disable-largefile omit support for large files
--disable-float4-byval disable float4 passed by value
--disable-float8-byval disable float8 passed by value
-@@ -5608,6 +5611,201 @@ fi
+@@ -5611,6 +5614,201 @@ fi
#
@@ -229,7 +229,7 @@ index b91de59..b44a6be 100755
#
diff --git a/configure.in b/configure.in
-index b2fa682..5797ff5 100644
+index d7fec2c..cc3b119 100644
--- a/configure.in
+++ b/configure.in
@@ -755,6 +755,19 @@ PGAC_ARG_BOOL(with, zlib, yes,
@@ -253,7 +253,7 @@ index b2fa682..5797ff5 100644
#
diff --git a/contrib/adminpack/adminpack.c b/contrib/adminpack/adminpack.c
-index 13e04b2..c613826 100644
+index 5271ef6..397786d 100644
--- a/contrib/adminpack/adminpack.c
+++ b/contrib/adminpack/adminpack.c
@@ -22,6 +22,7 @@
@@ -342,208 +342,11 @@ index 13e04b2..c613826 100644
TupleDescInitEntry(tupdesc, (AttrNumber) 1, "starttime",
TIMESTAMPOID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 2, "filename",
-diff --git a/contrib/sepgtest/sepgtest b/contrib/sepgtest/sepgtest
-new file mode 100755
-index 0000000..30e7cb9
---- /dev/null
-+++ b/contrib/sepgtest/sepgtest
-@@ -0,0 +1,45 @@
-+#!/bin/sh
-+
-+SEPGTEST=`basename $0`
-+PSQL=`which psql`
-+DIFF=`which diff`
-+RUNCON=`which runcon`
-+
-+DBUSER=""
-+DBHOST=""
-+DBPORT=""
-+DBNAME="testdb"
-+
-+usage()
-+{
-+ echo "${SEPGTEST}: [-u <username>] [-h <host>] [-p <port>] [-d <dbname>]"
-+ exit 1
-+}
-+
-+# parse options
-+CMD_OPTS=`getopt -n "${SEPGTEST}" "u:h:p:d:" $*` || usage
-+eval set -- $CMD_OPTS
-+while [ -n "$1" ];
-+do
-+ case $1 in
-+ -u)
-+ DBUSER="-U $2"; shift 2;;
-+ -h)
-+ DBHOST="-h $2"; shift 2;;
-+ -p)
-+ DBPORT="-p $2"; shift 2;;
-+ -d)
-+ DBNAME="$2"; shift 2;;
-+ --)
-+ shift; break;;
-+ *)
-+ usage; shift 2;;
-+ esac
-+done
-+
-+PSQL_OPTS="${PSQL} ${DBUSER} ${DBHOST} ${DBPORT} ${DBNAME}"
-+
-+# check environment
-+
-+
-+
-diff --git a/contrib/sepgtest/sepgtest.in b/contrib/sepgtest/sepgtest.in
-new file mode 100755
-index 0000000..30e7cb9
---- /dev/null
-+++ b/contrib/sepgtest/sepgtest.in
-@@ -0,0 +1,45 @@
-+#!/bin/sh
-+
-+SEPGTEST=`basename $0`
-+PSQL=`which psql`
-+DIFF=`which diff`
-+RUNCON=`which runcon`
-+
-+DBUSER=""
-+DBHOST=""
-+DBPORT=""
-+DBNAME="testdb"
-+
-+usage()
-+{
-+ echo "${SEPGTEST}: [-u <username>] [-h <host>] [-p <port>] [-d <dbname>]"
-+ exit 1
-+}
-+
-+# parse options
-+CMD_OPTS=`getopt -n "${SEPGTEST}" "u:h:p:d:" $*` || usage
-+eval set -- $CMD_OPTS
-+while [ -n "$1" ];
-+do
-+ case $1 in
-+ -u)
-+ DBUSER="-U $2"; shift 2;;
-+ -h)
-+ DBHOST="-h $2"; shift 2;;
-+ -p)
-+ DBPORT="-p $2"; shift 2;;
-+ -d)
-+ DBNAME="$2"; shift 2;;
-+ --)
-+ shift; break;;
-+ *)
-+ usage; shift 2;;
-+ esac
-+done
-+
-+PSQL_OPTS="${PSQL} ${DBUSER} ${DBHOST} ${DBPORT} ${DBNAME}"
-+
-+# check environment
-+
-+
-+
-diff --git a/git-update-branches.sh b/git-update-branches.sh
-new file mode 100755
-index 0000000..2f25fde
---- /dev/null
-+++ b/git-update-branches.sh
-@@ -0,0 +1,89 @@
-+#!/bin/sh
-+
-+GIT_BIN=`which git`
-+GIT_DIR=`(cd \`dirname $0\`; pwd)`
-+UPSTREAM_URL="git://git.postgresql.org/git/postgresql.git"
-+UPSTREAM_BRANCH="master"
-+LOCAL_BRANCHES="master v9.0/sepgsql"
-+RPMSOURCE=`rpm -E '%{_sourcedir}'`
-+#================================================================
-+
-+cd ${GIT_DIR}
-+
-+CURRENT_BRANCH=`${GIT_BIN} branch -l | grep '^*' | awk '{print $2}'`
-+
-+for tree in ${LOCAL_BRANCHES}
-+do
-+ ${GIT_BIN} branch -lr | grep -q "origin/${tree}" || exit 1
-+ ${GIT_BIN} branch -l | grep -q "${tree}" || \
-+ ${GIT_BIN} checkout --track "origin/${tree}" || exit 1
-+done
-+
-+# ======== create patches ========
-+if [ "$1" = "--patch" ]; then
-+ LEFT_TREE=""
-+ RIGHT_TREE=""
-+ NUM=0
-+
-+ BASE_VERSION=`grep AC_INIT ${GIT_DIR}/configure.in \
-+ | head -1 \
-+ | sed -e 's/,/ /g' -e 's/\[//g' -e 's/\]//g' \
-+ | awk '{print $2}'`
-+ BASE_MAJOR=`echo $BASE_VERSION | sed 's/\.[0-9]\+$//g'`
-+
-+ for tree in ${LOCAL_BRANCHES}
-+ do
-+ LEFT_TREE=$RIGHT_TREE
-+ RIGHT_TREE=$tree
-+
-+ if [ -n "$LEFT_TREE" -a -n "$RIGHT_TREE" ]; then
-+ tag=`basename ${RIGHT_TREE}`
-+ ${GIT_BIN} diff $LEFT_TREE $RIGHT_TREE \
-+ > $RPMSOURCE/pgsql-${NUM}-${BASE_MAJOR}-${tag}.patch
-+ echo "${NUM}) $RPMSOURCE/pgsql-${NUM}-${BASE_MAJOR}-${tag}.patch"
-+ fi
-+ NUM=`printf "%02d" \`expr $NUM + 1\``
-+ done
-+
-+ exit 0
-+fi
-+
-+# ======== sync remote git ========
-+
-+if echo "$1" | grep -q '^--sync-upstream=\?'; then
-+ UPSTREAM_TAG=`echo "$1" | sed 's/^--sync-upstream=\?//g'`
-+ if [ -n "${UPSTREAM_TAG}" ]; then
-+ UPSTREAM_TAG=HEAD
-+ fi
-+
-+ LOCAL_MASTER=`echo "${LOCAL_BRANCHES}" | awk '{print $1}'`
-+
-+ ${GIT_BIN} checkout ${LOCAL_MASTER} || exit 1
-+ ${GIT_BIN} pull ${UPSTREAM_URL} ${UPSTREAM_BRANCH} ${UPSTREAM_TAG}
-+ if [ $? -ne 0 ]; then
-+ ${GIT_BIN} reset HEAD
-+ ${GIT_BIN} checkout .
-+ ${GIT_BIN} clean -fd
-+ ${GIT_BIN} pull --no-commit ${UPSTREAM_URL} ${UPSTREAM_BRANCH} ${UPSTREAM_TAG}
-+ exit 2
-+ fi
-+fi
-+
-+LEFT_TREE=""
-+for RIGHT_TREE in ${LOCAL_BRANCHES}
-+do
-+ if [ -n "${LEFT_TREE}" -a -n "${RIGHT_TREE}" ]; then
-+ ${GIT_BIN} checkout ${RIGHT_TREE} || exit 1
-+ ${GIT_BIN} pull ${GIT_DIR} ${LEFT_TREE} || exit 1
-+ if [ $? -ne 0 ]; then
-+ ${GIT_BIN} reset HEAD
-+ ${GIT_BIN} checkout .
-+ ${GIT_BIN} clean -fd
-+ ${GIT_BIN} pull --no-commit ${GIT_DIR} ${LEFT_TREE}
-+ exit 2
-+ fi
-+ fi
-+ LEFT_TREE=${RIGHT_TREE}
-+done
-+
-+${GIT_BIN} checkout ${CURRENT_BRANCH}
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
-index 1c38ac2..0e3bed5 100644
+index 280578a..6495097 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
-@@ -164,6 +164,7 @@ enable_nls = @enable_nls@
+@@ -166,6 +166,7 @@ enable_nls = @enable_nls@
enable_debug = @enable_debug@
enable_dtrace = @enable_dtrace@
enable_coverage = @enable_coverage@
@@ -552,10 +355,10 @@ index 1c38ac2..0e3bed5 100644
python_includespec = @python_includespec@
diff --git a/src/backend/Makefile b/src/backend/Makefile
-index 218544e..0b1dd31 100644
+index a11b2b5..25198fd 100644
--- a/src/backend/Makefile
+++ b/src/backend/Makefile
-@@ -16,7 +16,7 @@ include $(top_builddir)/src/Makefile.global
+@@ -19,7 +19,7 @@ include $(top_builddir)/src/Makefile.global
SUBDIRS = access bootstrap catalog parser commands executor foreign lib libpq \
main nodes optimizer port postmaster regex replication rewrite \
@@ -564,7 +367,7 @@ index 218544e..0b1dd31 100644
include $(srcdir)/common.mk
-@@ -40,6 +40,11 @@ LIBS := $(filter-out -lpgport, $(LIBS)) $(LDAP_LIBS_BE)
+@@ -43,6 +43,11 @@ LIBS := $(filter-out -lpgport, $(LIBS)) $(LDAP_LIBS_BE)
# The backend doesn't need everything that's in LIBS, however
LIBS := $(filter-out -lz -lreadline -ledit -ltermcap -lncurses -lcurses, $(LIBS))
@@ -577,7 +380,7 @@ index 218544e..0b1dd31 100644
all: submake-libpgport submake-schemapg postgres $(POSTGRES_IMP)
diff --git a/src/backend/access/common/heaptuple.c b/src/backend/access/common/heaptuple.c
-index 6ec73f0..db0023f 100644
+index 8d770a3..a3b1474 100644
--- a/src/backend/access/common/heaptuple.c
+++ b/src/backend/access/common/heaptuple.c
@@ -60,6 +60,7 @@
@@ -630,7 +433,7 @@ index 6ec73f0..db0023f 100644
if (tupleDescriptor->tdhasoid)
len += sizeof(Oid);
+ if (tupleDescriptor->tdhassecid)
-+ len += sizeof(Oid);
++ len += sizeof(Oid)+1;
hoff = len = MAXALIGN(len); /* align user data safely */
@@ -644,7 +447,7 @@ index 6ec73f0..db0023f 100644
heap_fill_tuple(tupleDescriptor,
values,
diff --git a/src/backend/access/common/tupdesc.c b/src/backend/access/common/tupdesc.c
-index 9a8611f..325dbde 100644
+index 2125fdf..5880ec7 100644
--- a/src/backend/access/common/tupdesc.c
+++ b/src/backend/access/common/tupdesc.c
@@ -34,7 +34,7 @@
@@ -738,7 +541,7 @@ index 9a8611f..325dbde 100644
attnum = 0;
diff --git a/src/backend/access/gin/ginutil.c b/src/backend/access/gin/ginutil.c
-index f01ed1e..4e8dfcb 100644
+index 2a75820..065ba1a 100644
--- a/src/backend/access/gin/ginutil.c
+++ b/src/backend/access/gin/ginutil.c
@@ -33,7 +33,7 @@ initGinState(GinState *state, Relation index)
@@ -751,7 +554,7 @@ index f01ed1e..4e8dfcb 100644
TupleDescInitEntry(state->tupdesc[i], (AttrNumber) 1, NULL,
INT2OID, -1, 0);
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c
-index 759fc35..2fc282d 100644
+index 48a387e..f00a9cc 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -52,6 +52,7 @@
@@ -818,7 +621,7 @@ index 759fc35..2fc282d 100644
MarkBufferDirty(buffer);
diff --git a/src/backend/access/heap/tuptoaster.c b/src/backend/access/heap/tuptoaster.c
-index 2af81df..18341f4 100644
+index 7518db1..fb78993 100644
--- a/src/backend/access/heap/tuptoaster.c
+++ b/src/backend/access/heap/tuptoaster.c
@@ -591,6 +591,8 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup,
@@ -844,12 +647,12 @@ index 2af81df..18341f4 100644
if (olddata->t_infomask & HEAP_HASOID)
new_len += sizeof(Oid);
+ if (HeapTupleHeaderHasSecid(olddata))
-+ new_len += sizeof(Oid);
++ new_len += sizeof(Oid)+1;
new_len = MAXALIGN(new_len);
Assert(new_len == olddata->t_hoff);
new_data_len = heap_compute_data_size(tupleDesc,
diff --git a/src/backend/access/transam/twophase.c b/src/backend/access/transam/twophase.c
-index d432c9d..28e7bde 100644
+index d6dca97..710b891 100644
--- a/src/backend/access/transam/twophase.c
+++ b/src/backend/access/transam/twophase.c
@@ -605,7 +605,7 @@ pg_prepared_xact(PG_FUNCTION_ARGS)
@@ -862,7 +665,7 @@ index d432c9d..28e7bde 100644
XIDOID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 2, "gid",
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
-index b88cff2..d6636f7 100644
+index 8436dea..d9de0e4 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -36,6 +36,7 @@
@@ -891,7 +694,7 @@ index b88cff2..d6636f7 100644
false, /* entry-time xact r/o state */
false, /* startedInRecovery */
NULL /* link to parent state block */
-@@ -1658,6 +1663,10 @@ StartTransaction(void)
+@@ -1698,6 +1703,10 @@ StartTransaction(void)
/* SecurityRestrictionContext should never be set outside a transaction */
Assert(s->prevSecContext == 0);
@@ -902,7 +705,7 @@ index b88cff2..d6636f7 100644
/*
* initialize other subsystems for new transaction
*/
-@@ -2162,6 +2171,10 @@ AbortTransaction(void)
+@@ -2202,6 +2211,10 @@ AbortTransaction(void)
*/
SetUserIdAndSecContext(s->prevUser, s->prevSecContext);
@@ -913,7 +716,7 @@ index b88cff2..d6636f7 100644
/*
* do abort processing
*/
-@@ -4006,6 +4019,10 @@ AbortSubTransaction(void)
+@@ -4046,6 +4059,10 @@ AbortSubTransaction(void)
*/
SetUserIdAndSecContext(s->prevUser, s->prevSecContext);
@@ -924,7 +727,7 @@ index b88cff2..d6636f7 100644
/*
* We can skip all this stuff if the subxact failed before creating a
* ResourceOwner...
-@@ -4145,6 +4162,8 @@ PushTransaction(void)
+@@ -4185,6 +4202,8 @@ PushTransaction(void)
s->state = TRANS_DEFAULT;
s->blockState = TBLOCK_SUBBEGIN;
GetUserIdAndSecContext(&s->prevUser, &s->prevSecContext);
@@ -934,10 +737,10 @@ index b88cff2..d6636f7 100644
CurrentTransactionState = s;
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
-index 0b05e25..4f783e5 100644
+index 15b3476..54a9105 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
-@@ -8765,7 +8765,7 @@ pg_xlogfile_name_offset(PG_FUNCTION_ARGS)
+@@ -8895,7 +8895,7 @@ pg_xlogfile_name_offset(PG_FUNCTION_ARGS)
* Construct a tuple descriptor for the result row. This must match this
* function's pg_proc entry!
*/
@@ -947,7 +750,7 @@ index 0b05e25..4f783e5 100644
TEXTOID, -1, 0);
TupleDescInitEntry(resultTupleDesc, (AttrNumber) 2, "file_offset",
diff --git a/src/backend/bootstrap/bootparse.y b/src/backend/bootstrap/bootparse.y
-index 387d43e..aecb449 100644
+index 9cc6850..7537984 100644
--- a/src/backend/bootstrap/bootparse.y
+++ b/src/backend/bootstrap/bootparse.y
@@ -32,6 +32,7 @@
@@ -982,7 +785,7 @@ index 387d43e..aecb449 100644
}
do_end();
diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c
-index 455eac1..0590156 100644
+index 080d80e..a870b31 100644
--- a/src/backend/bootstrap/bootstrap.c
+++ b/src/backend/bootstrap/bootstrap.c
@@ -33,6 +33,7 @@
@@ -1035,7 +838,7 @@ index 455eac1..0590156 100644
tuple = heap_form_tuple(tupDesc, values, Nulls);
if (objectid != (Oid) 0)
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
-index dafae3f..c2aea7a 100644
+index a970039..0381d6b 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -13,7 +13,7 @@ include $(top_builddir)/src/Makefile.global
@@ -1057,7 +860,7 @@ index dafae3f..c2aea7a 100644
pg_foreign_data_wrapper.h pg_foreign_server.h pg_user_mapping.h \
pg_default_acl.h \
diff --git a/src/backend/catalog/aclchk.c b/src/backend/catalog/aclchk.c
-index 2561d83..002a66c 100644
+index 0470a70..62fedb1 100644
--- a/src/backend/catalog/aclchk.c
+++ b/src/backend/catalog/aclchk.c
@@ -38,6 +38,7 @@
@@ -1074,9 +877,9 @@ index 2561d83..002a66c 100644
#include "parser/parse_func.h"
+#include "sepgsql/hooks.h"
#include "utils/acl.h"
+ #include "utils/builtins.h"
#include "utils/fmgroids.h"
- #include "utils/lsyscache.h"
-@@ -1499,6 +1501,10 @@ expand_all_col_privileges(Oid table_oid, Form_pg_class classForm,
+@@ -1500,6 +1502,10 @@ expand_all_col_privileges(Oid table_oid, Form_pg_class classForm,
if (curr_att == ObjectIdAttributeNumber && !classForm->relhasoids)
continue;
@@ -1087,7 +890,7 @@ index 2561d83..002a66c 100644
/* Views don't have any system columns at all */
if (classForm->relkind == RELKIND_VIEW && curr_att < 0)
continue;
-@@ -1608,6 +1614,8 @@ ExecGrant_Attribute(InternalGrant *istmt, Oid relOid, const char *relname,
+@@ -1609,6 +1615,8 @@ ExecGrant_Attribute(InternalGrant *istmt, Oid relOid, const char *relname,
relOid, grantorId, ACL_KIND_COLUMN,
relname, attnum,
NameStr(pg_attribute_tuple->attname));
@@ -1096,7 +899,7 @@ index 2561d83..002a66c 100644
/*
* Generate new ACL.
-@@ -1869,6 +1877,8 @@ ExecGrant_Relation(InternalGrant *istmt)
+@@ -1870,6 +1878,8 @@ ExecGrant_Relation(InternalGrant *istmt)
? ACL_KIND_SEQUENCE : ACL_KIND_CLASS,
NameStr(pg_class_tuple->relname),
0, NULL);
@@ -1105,7 +908,7 @@ index 2561d83..002a66c 100644
/*
* Generate new ACL.
-@@ -2063,6 +2073,8 @@ ExecGrant_Database(InternalGrant *istmt)
+@@ -2064,6 +2074,8 @@ ExecGrant_Database(InternalGrant *istmt)
datId, grantorId, ACL_KIND_DATABASE,
NameStr(pg_database_tuple->datname),
0, NULL);
@@ -1114,7 +917,7 @@ index 2561d83..002a66c 100644
/*
* Generate new ACL.
-@@ -2188,6 +2200,8 @@ ExecGrant_Fdw(InternalGrant *istmt)
+@@ -2189,6 +2201,8 @@ ExecGrant_Fdw(InternalGrant *istmt)
fdwid, grantorId, ACL_KIND_FDW,
NameStr(pg_fdw_tuple->fdwname),
0, NULL);
@@ -1123,7 +926,7 @@ index 2561d83..002a66c 100644
/*
* Generate new ACL.
-@@ -2313,6 +2327,8 @@ ExecGrant_ForeignServer(InternalGrant *istmt)
+@@ -2314,6 +2328,8 @@ ExecGrant_ForeignServer(InternalGrant *istmt)
srvid, grantorId, ACL_KIND_FOREIGN_SERVER,
NameStr(pg_server_tuple->srvname),
0, NULL);
@@ -1132,7 +935,7 @@ index 2561d83..002a66c 100644
/*
* Generate new ACL.
-@@ -2831,6 +2847,8 @@ ExecGrant_Namespace(InternalGrant *istmt)
+@@ -2832,6 +2848,8 @@ ExecGrant_Namespace(InternalGrant *istmt)
nspid, grantorId, ACL_KIND_NAMESPACE,
NameStr(pg_namespace_tuple->nspname),
0, NULL);
@@ -1141,7 +944,7 @@ index 2561d83..002a66c 100644
/*
* Generate new ACL.
-@@ -2955,6 +2973,8 @@ ExecGrant_Tablespace(InternalGrant *istmt)
+@@ -2956,6 +2974,8 @@ ExecGrant_Tablespace(InternalGrant *istmt)
tblId, grantorId, ACL_KIND_TABLESPACE,
NameStr(pg_tablespace_tuple->spcname),
0, NULL);
@@ -1151,7 +954,7 @@ index 2561d83..002a66c 100644
/*
* Generate new ACL.
diff --git a/src/backend/catalog/catalog.c b/src/backend/catalog/catalog.c
-index 3edfc23..b451e59 100644
+index 1739085..36d4852 100644
--- a/src/backend/catalog/catalog.c
+++ b/src/backend/catalog/catalog.c
@@ -32,6 +32,7 @@
@@ -1189,7 +992,7 @@ index 3edfc23..b451e59 100644
relationId == PgShdescriptionToastIndex ||
relationId == PgDbRoleSettingToastTable ||
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
-index 31aabda..c9fc09e 100644
+index 85d1d71..853074e 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -218,7 +218,8 @@ foreach my $catname ( @{ $catalogs->{names} } )
@@ -1203,7 +1006,7 @@ index 31aabda..c9fc09e 100644
foreach my $attr (@SYS_ATTRS)
{
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
-index d848ef0..deaf2fb 100644
+index 47e0c9b..73cbfcf 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -43,6 +43,7 @@
@@ -1547,7 +1350,7 @@ index d848ef0..deaf2fb 100644
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
-index 69946fe..23fb19b 100644
+index dea6889..18d96da 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -39,6 +39,7 @@
@@ -1656,7 +1459,7 @@ index 69946fe..23fb19b 100644
/* ----------------
* update pg_index
diff --git a/src/backend/catalog/namespace.c b/src/backend/catalog/namespace.c
-index 5581346..cf1910a 100644
+index 2e5bb27..e730904 100644
--- a/src/backend/catalog/namespace.c
+++ b/src/backend/catalog/namespace.c
@@ -40,6 +40,7 @@
@@ -1677,7 +1480,7 @@ index 5581346..cf1910a 100644
return namespaceId;
}
-@@ -2903,7 +2907,8 @@ recomputeNamespacePath(void)
+@@ -2911,7 +2915,8 @@ recomputeNamespacePath(void)
if (OidIsValid(namespaceId) &&
!list_member_oid(oidlist, namespaceId) &&
pg_namespace_aclcheck(namespaceId, roleid,
@@ -1687,7 +1490,7 @@ index 5581346..cf1910a 100644
oidlist = lappend_oid(oidlist, namespaceId);
}
}
-@@ -2930,7 +2935,8 @@ recomputeNamespacePath(void)
+@@ -2938,7 +2943,8 @@ recomputeNamespacePath(void)
if (OidIsValid(namespaceId) &&
!list_member_oid(oidlist, namespaceId) &&
pg_namespace_aclcheck(namespaceId, roleid,
@@ -1697,7 +1500,7 @@ index 5581346..cf1910a 100644
oidlist = lappend_oid(oidlist, namespaceId);
}
}
-@@ -2996,9 +3002,12 @@ InitTempTableNamespace(void)
+@@ -3004,9 +3010,12 @@ InitTempTableNamespace(void)
char namespaceName[NAMEDATALEN];
Oid namespaceId;
Oid toastspaceId;
@@ -1710,7 +1513,7 @@ index 5581346..cf1910a 100644
/*
* First, do permission check to see if we are authorized to make temp
* tables. We use a nonstandard error message here since "databasename:
-@@ -3016,6 +3025,9 @@ InitTempTableNamespace(void)
+@@ -3024,6 +3033,9 @@ InitTempTableNamespace(void)
errmsg("permission denied to create temporary tables in database \"%s\"",
get_database_name(MyDatabaseId))));
@@ -1720,7 +1523,7 @@ index 5581346..cf1910a 100644
/*
* Do not allow a Hot Standby slave session to make temp tables. Aside
* from problems with modifying the system catalogs, there is a naming
-@@ -3031,8 +3043,6 @@ InitTempTableNamespace(void)
+@@ -3039,8 +3051,6 @@ InitTempTableNamespace(void)
(errcode(ERRCODE_READ_ONLY_SQL_TRANSACTION),
errmsg("cannot create temporary tables during recovery")));
@@ -1729,7 +1532,7 @@ index 5581346..cf1910a 100644
namespaceId = GetSysCacheOid1(NAMESPACENAME,
CStringGetDatum(namespaceName));
if (!OidIsValid(namespaceId))
-@@ -3045,7 +3055,9 @@ InitTempTableNamespace(void)
+@@ -3053,7 +3063,9 @@ InitTempTableNamespace(void)
* temp tables. This works because the places that access the temp
* namespace for my own backend skip permissions checks on it.
*/
@@ -1740,7 +1543,7 @@ index 5581346..cf1910a 100644
/* Advance command counter to make namespace visible */
CommandCounterIncrement();
}
-@@ -3070,7 +3082,9 @@ InitTempTableNamespace(void)
+@@ -3078,7 +3090,9 @@ InitTempTableNamespace(void)
CStringGetDatum(namespaceName));
if (!OidIsValid(toastspaceId))
{
@@ -1752,7 +1555,7 @@ index 5581346..cf1910a 100644
CommandCounterIncrement();
}
diff --git a/src/backend/catalog/pg_aggregate.c b/src/backend/catalog/pg_aggregate.c
-index 582d894..d7b6bd1 100644
+index 9672ecf..b28a314 100644
--- a/src/backend/catalog/pg_aggregate.c
+++ b/src/backend/catalog/pg_aggregate.c
@@ -27,6 +27,7 @@
@@ -1793,7 +1596,7 @@ index 582d894..d7b6bd1 100644
/*
* Okay to create the pg_aggregate entry.
diff --git a/src/backend/catalog/pg_conversion.c b/src/backend/catalog/pg_conversion.c
-index 99085c9..b4c0b3a 100644
+index 574eef5..2a46cdb 100644
--- a/src/backend/catalog/pg_conversion.c
+++ b/src/backend/catalog/pg_conversion.c
@@ -40,7 +40,7 @@ Oid
@@ -1815,7 +1618,7 @@ index 99085c9..b4c0b3a 100644
oid = simple_heap_insert(rel, tup);
Assert(OidIsValid(oid));
diff --git a/src/backend/catalog/pg_largeobject.c b/src/backend/catalog/pg_largeobject.c
-index e3f18bf..572ce01 100644
+index 7c5f56f..fb8bf22 100644
--- a/src/backend/catalog/pg_largeobject.c
+++ b/src/backend/catalog/pg_largeobject.c
@@ -21,10 +21,13 @@
@@ -1914,9 +1717,9 @@ index e3f18bf..572ce01 100644
+/*
* LargeObjectExists
*
- * We don't use the system cache to for large object metadata, for fear of
+ * We don't use the system cache for large object metadata, for fear of
diff --git a/src/backend/catalog/pg_namespace.c b/src/backend/catalog/pg_namespace.c
-index 22111a3..cba7274 100644
+index 79d03b3..4357a9e 100644
--- a/src/backend/catalog/pg_namespace.c
+++ b/src/backend/catalog/pg_namespace.c
@@ -28,7 +28,7 @@
@@ -1938,7 +1741,7 @@ index 22111a3..cba7274 100644
nspoid = simple_heap_insert(nspdesc, tup);
Assert(OidIsValid(nspoid));
diff --git a/src/backend/catalog/pg_operator.c b/src/backend/catalog/pg_operator.c
-index 2362268..f6df55e 100644
+index 8eebb1d..71be3c5 100644
--- a/src/backend/catalog/pg_operator.c
+++ b/src/backend/catalog/pg_operator.c
@@ -28,6 +28,7 @@
@@ -2019,7 +1822,7 @@ index 2362268..f6df55e 100644
}
diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c
-index d76e415..f4c74a3 100644
+index f60cc61..a2ccc76 100644
--- a/src/backend/catalog/pg_proc.c
+++ b/src/backend/catalog/pg_proc.c
@@ -84,7 +84,8 @@ ProcedureCreate(const char *procedureName,
@@ -2704,7 +2507,7 @@ index 0000000..4816635
+ PG_RETURN_OID(HeapTupleHeaderGetSecid(htup));
+}
diff --git a/src/backend/catalog/pg_type.c b/src/backend/catalog/pg_type.c
-index 76f9e06..0b4dcc3 100644
+index d4fdea9..a1220ea 100644
--- a/src/backend/catalog/pg_type.c
+++ b/src/backend/catalog/pg_type.c
@@ -25,6 +25,7 @@
@@ -2771,7 +2574,7 @@ index 76f9e06..0b4dcc3 100644
}
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
-index 435dfdd..5d86354 100644
+index 86e7daa..82cf587 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -24,6 +24,7 @@
@@ -2822,7 +2625,7 @@ index 435dfdd..5d86354 100644
/* make the toast relation visible, else index creation will fail */
CommandCounterIncrement();
diff --git a/src/backend/commands/aggregatecmds.c b/src/backend/commands/aggregatecmds.c
-index 4964fb3..390a1c1 100644
+index 2c6ce59..312d59f 100644
--- a/src/backend/commands/aggregatecmds.c
+++ b/src/backend/commands/aggregatecmds.c
@@ -32,6 +32,7 @@
@@ -2844,10 +2647,10 @@ index 4964fb3..390a1c1 100644
namestrcpy(&(((Form_pg_proc) GETSTRUCT(tup))->proname), newname);
simple_heap_update(rel, &tup->t_self, tup);
diff --git a/src/backend/commands/alter.c b/src/backend/commands/alter.c
-index 17e1e77..c1c8bfd 100644
+index cecdfa5..5b51f68 100644
--- a/src/backend/commands/alter.c
+++ b/src/backend/commands/alter.c
-@@ -289,3 +289,64 @@ ExecAlterOwnerStmt(AlterOwnerStmt *stmt)
+@@ -290,3 +290,64 @@ ExecAlterOwnerStmt(AlterOwnerStmt *stmt)
(int) stmt->objectType);
}
}
@@ -2913,7 +2716,7 @@ index 17e1e77..c1c8bfd 100644
+ }
+}
diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c
-index ccb4599..394740a 100644
+index 7a1b8e8..69988d0 100644
--- a/src/backend/commands/cluster.c
+++ b/src/backend/commands/cluster.c
@@ -30,12 +30,14 @@
@@ -3002,7 +2805,7 @@ index ccb4599..394740a 100644
/*
diff --git a/src/backend/commands/comment.c b/src/backend/commands/comment.c
-index 64792f2..6d71642 100644
+index 7fa09c8..2deb171 100644
--- a/src/backend/commands/comment.c
+++ b/src/backend/commands/comment.c
@@ -49,6 +49,7 @@
@@ -3173,7 +2976,7 @@ index 64792f2..6d71642 100644
ReleaseSysCache(tuple);
/* Call CreateComments() to create/drop the comments */
-@@ -1505,6 +1554,9 @@ CommentCast(List *qualname, List *arguments, char *comment)
+@@ -1482,6 +1531,9 @@ CommentCast(List *qualname, List *arguments, char *comment)
format_type_be(sourcetypeid),
format_type_be(targettypeid))));
@@ -3183,7 +2986,7 @@ index 64792f2..6d71642 100644
ReleaseSysCache(tuple);
/* Call CreateComments() to create/drop the comments */
-@@ -1522,6 +1574,8 @@ CommentTSParser(List *qualname, char *comment)
+@@ -1499,6 +1551,8 @@ CommentTSParser(List *qualname, char *comment)
ereport(ERROR,
(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
errmsg("must be superuser to comment on text search parser")));
@@ -3192,7 +2995,7 @@ index 64792f2..6d71642 100644
CreateComments(prsId, TSParserRelationId, 0, comment);
}
-@@ -1536,6 +1590,8 @@ CommentTSDictionary(List *qualname, char *comment)
+@@ -1513,6 +1567,8 @@ CommentTSDictionary(List *qualname, char *comment)
if (!pg_ts_dict_ownercheck(dictId, GetUserId()))
aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_TSDICTIONARY,
NameListToString(qualname));
@@ -3201,7 +3004,7 @@ index 64792f2..6d71642 100644
CreateComments(dictId, TSDictionaryRelationId, 0, comment);
}
-@@ -1551,6 +1607,8 @@ CommentTSTemplate(List *qualname, char *comment)
+@@ -1528,6 +1584,8 @@ CommentTSTemplate(List *qualname, char *comment)
ereport(ERROR,
(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
errmsg("must be superuser to comment on text search template")));
@@ -3210,7 +3013,7 @@ index 64792f2..6d71642 100644
CreateComments(tmplId, TSTemplateRelationId, 0, comment);
}
-@@ -1565,6 +1623,8 @@ CommentTSConfiguration(List *qualname, char *comment)
+@@ -1542,6 +1600,8 @@ CommentTSConfiguration(List *qualname, char *comment)
if (!pg_ts_config_ownercheck(cfgId, GetUserId()))
aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_TSCONFIGURATION,
NameListToString(qualname));
@@ -3220,7 +3023,7 @@ index 64792f2..6d71642 100644
CreateComments(cfgId, TSConfigRelationId, 0, comment);
}
diff --git a/src/backend/commands/conversioncmds.c b/src/backend/commands/conversioncmds.c
-index 57ddab0..0c10a64 100644
+index 2e5a7df..9647622 100644
--- a/src/backend/commands/conversioncmds.c
+++ b/src/backend/commands/conversioncmds.c
@@ -24,6 +24,7 @@
@@ -3289,7 +3092,7 @@ index 57ddab0..0c10a64 100644
/*
* Modify the owner --- okay to scribble on tup because it's a copy
diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c
-index 9d46e47..270eb74 100644
+index 4e95a83..a09eabe 100644
--- a/src/backend/commands/copy.c
+++ b/src/backend/commands/copy.c
@@ -22,7 +22,10 @@
@@ -3794,7 +3597,7 @@ index 9d46e47..270eb74 100644
/*
diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c
-index e7dac22..16360db 100644
+index 3d54324..3687922 100644
--- a/src/backend/commands/dbcommands.c
+++ b/src/backend/commands/dbcommands.c
@@ -35,6 +35,8 @@
@@ -3983,7 +3786,7 @@ index e7dac22..16360db 100644
/*
* Helper functions
diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c
-index 0bda24a..334b123 100644
+index e8dba94..4c4fc36 100644
--- a/src/backend/commands/explain.c
+++ b/src/backend/commands/explain.c
@@ -257,7 +257,7 @@ ExplainResultDesc(ExplainStmt *stmt)
@@ -3996,7 +3799,7 @@ index 0bda24a..334b123 100644
xml ? XMLOID : TEXTOID, -1, 0);
return tupdesc;
diff --git a/src/backend/commands/foreigncmds.c b/src/backend/commands/foreigncmds.c
-index 14356a2..d1f255e 100644
+index abbe731..b36c928 100644
--- a/src/backend/commands/foreigncmds.c
+++ b/src/backend/commands/foreigncmds.c
@@ -27,6 +27,7 @@
@@ -4160,7 +3963,7 @@ index 14356a2..d1f255e 100644
* Do the deletion
*/
diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c
-index 9a584ed..f914280 100644
+index 26a3a52..e2b8683 100644
--- a/src/backend/commands/functioncmds.c
+++ b/src/backend/commands/functioncmds.c
@@ -43,6 +43,7 @@
@@ -4337,10 +4140,10 @@ index 9a584ed..f914280 100644
ereport(ERROR,
(errcode(ERRCODE_DUPLICATE_FUNCTION),
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
-index 94657b8..7cb3634 100644
+index 780dbc2..f471123 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
-@@ -39,6 +39,7 @@
+@@ -40,6 +40,7 @@
#include "parser/parse_func.h"
#include "parser/parse_oper.h"
#include "parser/parsetree.h"
@@ -4348,7 +4151,7 @@ index 94657b8..7cb3634 100644
#include "storage/lmgr.h"
#include "storage/proc.h"
#include "storage/procarray.h"
-@@ -242,6 +243,10 @@ DefineIndex(RangeVar *heapRelation,
+@@ -243,6 +244,10 @@ DefineIndex(RangeVar *heapRelation,
get_tablespace_name(tablespaceId));
}
@@ -4359,7 +4162,7 @@ index 94657b8..7cb3634 100644
/*
* Force shared indexes into the pg_global tablespace. This is a bit of a
* hack but seems simpler than marking them in the BKI commands. On the
-@@ -363,7 +368,9 @@ DefineIndex(RangeVar *heapRelation,
+@@ -364,7 +369,9 @@ DefineIndex(RangeVar *heapRelation,
errmsg("primary keys cannot be expressions")));
/* System attributes are never null, so no problem */
@@ -4370,7 +4173,7 @@ index 94657b8..7cb3634 100644
continue;
atttuple = SearchSysCacheAttName(relationId, key->name);
-@@ -1572,6 +1579,9 @@ ReindexIndex(RangeVar *indexRelation)
+@@ -1600,6 +1607,9 @@ ReindexIndex(RangeVar *indexRelation)
aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_CLASS,
indexRelation->relname);
@@ -4380,7 +4183,7 @@ index 94657b8..7cb3634 100644
ReleaseSysCache(tuple);
reindex_index(indOid, false);
-@@ -1604,6 +1614,9 @@ ReindexTable(RangeVar *relation)
+@@ -1632,6 +1642,9 @@ ReindexTable(RangeVar *relation)
aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_CLASS,
relation->relname);
@@ -4390,7 +4193,7 @@ index 94657b8..7cb3634 100644
ReleaseSysCache(tuple);
if (!reindex_relation(heapOid, true, false))
-@@ -1642,6 +1655,9 @@ ReindexDatabase(const char *databaseName, bool do_system, bool do_user)
+@@ -1670,6 +1683,9 @@ ReindexDatabase(const char *databaseName, bool do_system, bool do_user)
aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_DATABASE,
databaseName);
@@ -4401,7 +4204,7 @@ index 94657b8..7cb3634 100644
* Create a memory context that will survive forced transaction commits we
* do below. Since it is a child of PortalContext, it will go away
diff --git a/src/backend/commands/lockcmds.c b/src/backend/commands/lockcmds.c
-index 283947a..657ff95 100644
+index 34d657c..d3c69a3 100644
--- a/src/backend/commands/lockcmds.c
+++ b/src/backend/commands/lockcmds.c
@@ -20,6 +20,7 @@
@@ -4423,7 +4226,7 @@ index 283947a..657ff95 100644
* If requested, recurse to children. We use find_inheritance_children
* not find_all_inheritors to avoid taking locks far in advance of
diff --git a/src/backend/commands/opclasscmds.c b/src/backend/commands/opclasscmds.c
-index ac0270f..25b84fd 100644
+index cae1a31..c946c5c 100644
--- a/src/backend/commands/opclasscmds.c
+++ b/src/backend/commands/opclasscmds.c
@@ -35,6 +35,7 @@
@@ -4571,7 +4374,7 @@ index ac0270f..25b84fd 100644
/* rename */
namestrcpy(&(((Form_pg_opfamily) GETSTRUCT(tup))->opfname), newname);
simple_heap_update(rel, &tup->t_self, tup);
-@@ -1990,6 +2029,8 @@ AlterOpClassOwner_internal(Relation rel, HeapTuple tup, Oid newOwnerId)
+@@ -2011,6 +2050,8 @@ AlterOpClassOwner_internal(Relation rel, HeapTuple tup, Oid newOwnerId)
aclcheck_error(aclresult, ACL_KIND_NAMESPACE,
get_namespace_name(namespaceOid));
}
@@ -4580,7 +4383,7 @@ index ac0270f..25b84fd 100644
/*
* Modify the owner --- okay to scribble on tup because it's a copy
-@@ -2112,7 +2153,8 @@ AlterOpFamilyOwner_internal(Relation rel, HeapTuple tup, Oid newOwnerId)
+@@ -2154,7 +2195,8 @@ AlterOpFamilyOwner_internal(Relation rel, HeapTuple tup, Oid newOwnerId)
aclcheck_error(aclresult, ACL_KIND_NAMESPACE,
get_namespace_name(namespaceOid));
}
@@ -4591,7 +4394,7 @@ index ac0270f..25b84fd 100644
* Modify the owner --- okay to scribble on tup because it's a copy
*/
diff --git a/src/backend/commands/operatorcmds.c b/src/backend/commands/operatorcmds.c
-index 9c07cf3..2e19448 100644
+index fa84a9b..36a4ac7 100644
--- a/src/backend/commands/operatorcmds.c
+++ b/src/backend/commands/operatorcmds.c
@@ -45,6 +45,7 @@
@@ -4602,7 +4405,7 @@ index 9c07cf3..2e19448 100644
#include "utils/acl.h"
#include "utils/lsyscache.h"
#include "utils/rel.h"
-@@ -319,6 +320,9 @@ RemoveOperator(RemoveFuncStmt *stmt)
+@@ -329,6 +330,9 @@ RemoveOperator(RemoveFuncStmt *stmt)
aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_OPER,
NameListToString(operatorName));
@@ -4612,7 +4415,7 @@ index 9c07cf3..2e19448 100644
ReleaseSysCache(tup);
/*
-@@ -426,6 +430,8 @@ AlterOperatorOwner_internal(Relation rel, Oid operOid, Oid newOwnerId)
+@@ -436,6 +440,8 @@ AlterOperatorOwner_internal(Relation rel, Oid operOid, Oid newOwnerId)
aclcheck_error(aclresult, ACL_KIND_NAMESPACE,
get_namespace_name(oprForm->oprnamespace));
}
@@ -4622,7 +4425,7 @@ index 9c07cf3..2e19448 100644
/*
* Modify the owner --- okay to scribble on tup because it's a copy
diff --git a/src/backend/commands/prepare.c b/src/backend/commands/prepare.c
-index e765382..a54dd3f 100644
+index 7fa8278..9b3662d 100644
--- a/src/backend/commands/prepare.c
+++ b/src/backend/commands/prepare.c
@@ -759,7 +759,7 @@ pg_prepared_statement(PG_FUNCTION_ARGS)
@@ -4635,7 +4438,7 @@ index e765382..a54dd3f 100644
TEXTOID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 2, "statement",
diff --git a/src/backend/commands/proclang.c b/src/backend/commands/proclang.c
-index 633a093..a3375b2 100644
+index 8292ae1..0ce601a 100644
--- a/src/backend/commands/proclang.c
+++ b/src/backend/commands/proclang.c
@@ -29,6 +29,7 @@
@@ -4677,7 +4480,7 @@ index 633a093..a3375b2 100644
}
else
diff --git a/src/backend/commands/schemacmds.c b/src/backend/commands/schemacmds.c
-index b0a9a22..57951fe 100644
+index b30fdce..8430e3e 100644
--- a/src/backend/commands/schemacmds.c
+++ b/src/backend/commands/schemacmds.c
@@ -21,10 +21,12 @@
@@ -4795,7 +4598,7 @@ index b0a9a22..57951fe 100644
+ heap_close(rel, RowExclusiveLock);
+}
diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c
-index f52e1d8..ecff05d 100644
+index 292a427..3c8a36f 100644
--- a/src/backend/commands/sequence.c
+++ b/src/backend/commands/sequence.c
@@ -26,6 +26,7 @@
@@ -4857,7 +4660,7 @@ index f52e1d8..ecff05d 100644
if (!seqrel->rd_islocaltemp)
PreventCommandIfReadOnly("setval()");
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
-index 9b5ce65..34ffbe2 100644
+index c4d81bb..9516700 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -32,6 +32,7 @@
@@ -4906,7 +4709,7 @@ index 9b5ce65..34ffbe2 100644
static void ATExecDropNotNull(Relation rel, const char *colName);
static void ATExecSetNotNull(AlteredTableInfo *tab, Relation rel,
const char *colName);
-@@ -355,6 +360,7 @@ DefineRelation(CreateStmt *stmt, char relkind)
+@@ -367,6 +372,7 @@ DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId)
List *old_constraints;
bool localHasOids;
int parentOidCount;
@@ -4914,7 +4717,7 @@ index 9b5ce65..34ffbe2 100644
List *rawDefaults;
List *cookedDefaults;
Datum reloptions;
-@@ -362,6 +368,7 @@ DefineRelation(CreateStmt *stmt, char relkind)
+@@ -374,6 +380,7 @@ DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId)
AttrNumber attnum;
static char *validnsps[] = HEAP_RELOPT_NAMESPACES;
Oid ofTypeId;
@@ -4922,7 +4725,7 @@ index 9b5ce65..34ffbe2 100644
/*
* Truncate relname to appropriate length (probably a waste of time, as
-@@ -461,7 +468,8 @@ DefineRelation(CreateStmt *stmt, char relkind)
+@@ -477,7 +484,8 @@ DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId)
*/
schema = MergeAttributes(schema, stmt->inhRelations,
stmt->relation->istemp,
@@ -4932,7 +4735,7 @@ index 9b5ce65..34ffbe2 100644
/*
* Create a tuple descriptor from the relation schema. Note that this
-@@ -473,6 +481,16 @@ DefineRelation(CreateStmt *stmt, char relkind)
+@@ -489,6 +497,16 @@ DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId)
localHasOids = interpretOidsOption(stmt->options);
descriptor->tdhasoid = (localHasOids || parentOidCount > 0);
@@ -4949,7 +4752,7 @@ index 9b5ce65..34ffbe2 100644
/*
* Find columns with default values and prepare for insertion of the
* defaults. Pre-cooked (that is, inherited) defaults go into a list of
-@@ -546,7 +564,8 @@ DefineRelation(CreateStmt *stmt, char relkind)
+@@ -562,7 +580,8 @@ DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId)
stmt->oncommit,
reloptions,
true,
@@ -4959,7 +4762,7 @@ index 9b5ce65..34ffbe2 100644
StoreCatalogInheritance(relationId, inheritOids);
-@@ -755,6 +774,9 @@ RemoveRelations(DropStmt *drop)
+@@ -771,6 +790,9 @@ RemoveRelations(DropStmt *drop)
aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_CLASS,
rel->relname);
@@ -4969,7 +4772,7 @@ index 9b5ce65..34ffbe2 100644
if (!allowSystemTableMods && IsSystemClass(classform))
ereport(ERROR,
(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-@@ -918,6 +940,9 @@ ExecuteTruncate(TruncateStmt *stmt)
+@@ -934,6 +956,9 @@ ExecuteTruncate(TruncateStmt *stmt)
aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_CLASS,
RelationGetRelationName(seq_rel));
@@ -4979,7 +4782,7 @@ index 9b5ce65..34ffbe2 100644
seq_relids = lappend_oid(seq_relids, seq_relid);
relation_close(seq_rel, NoLock);
-@@ -1086,6 +1111,8 @@ truncate_check_rel(Relation rel)
+@@ -1102,6 +1127,8 @@ truncate_check_rel(Relation rel)
if (aclresult != ACLCHECK_OK)
aclcheck_error(aclresult, ACL_KIND_CLASS,
RelationGetRelationName(rel));
@@ -4988,7 +4791,7 @@ index 9b5ce65..34ffbe2 100644
if (!allowSystemTableMods && IsSystemRelation(rel))
ereport(ERROR,
-@@ -1146,6 +1173,7 @@ storage_name(char c)
+@@ -1162,6 +1189,7 @@ storage_name(char c)
* 'supconstr' receives a list of constraints belonging to the parents,
* updated as necessary to be valid for the child.
* 'supOidCount' is set to the number of parents that have OID columns.
@@ -4996,7 +4799,7 @@ index 9b5ce65..34ffbe2 100644
*
* Return value:
* Completed schema list.
-@@ -1191,13 +1219,15 @@ storage_name(char c)
+@@ -1207,13 +1235,15 @@ storage_name(char c)
*/
static List *
MergeAttributes(List *schema, List *supers, bool istemp,
@@ -5013,7 +4816,7 @@ index 9b5ce65..34ffbe2 100644
bool have_bogus_defaults = false;
int child_attno;
static Node bogus_marker = {0}; /* marks conflicting defaults */
-@@ -1325,6 +1355,8 @@ MergeAttributes(List *schema, List *supers, bool istemp,
+@@ -1341,6 +1371,8 @@ MergeAttributes(List *schema, List *supers, bool istemp,
if (relation->rd_rel->relhasoids)
parentsWithOids++;
@@ -5022,7 +4825,7 @@ index 9b5ce65..34ffbe2 100644
tupleDesc = RelationGetDescr(relation);
constr = tupleDesc->constr;
-@@ -1626,6 +1658,7 @@ MergeAttributes(List *schema, List *supers, bool istemp,
+@@ -1642,6 +1674,7 @@ MergeAttributes(List *schema, List *supers, bool istemp,
*supOids = parentOids;
*supconstr = constraints;
*supOidCount = parentsWithOids;
@@ -5030,7 +4833,7 @@ index 9b5ce65..34ffbe2 100644
return schema;
}
-@@ -1985,6 +2018,9 @@ renameatt(Oid myrelid,
+@@ -2001,6 +2034,9 @@ renameatt(Oid myrelid,
errmsg("permission denied: \"%s\" is a system catalog",
RelationGetRelationName(targetrelation))));
@@ -5040,7 +4843,7 @@ index 9b5ce65..34ffbe2 100644
/*
* if the 'recurse' flag is set then we are supposed to rename this
* attribute in all classes that inherit from 'relname' (as well as in
-@@ -2136,6 +2172,9 @@ RenameRelation(Oid myrelid, const char *newrelname, ObjectType reltype)
+@@ -2152,6 +2188,9 @@ RenameRelation(Oid myrelid, const char *newrelname, ObjectType reltype)
errmsg("\"%s\" is not a view",
RelationGetRelationName(targetrelation))));
@@ -5050,7 +4853,7 @@ index 9b5ce65..34ffbe2 100644
/*
* Don't allow ALTER TABLE on composite types. We want people to use ALTER
* TYPE for that.
-@@ -2566,6 +2605,27 @@ ATPrepCmd(List **wqueue, Relation rel, AlterTableCmd *cmd,
+@@ -2580,6 +2619,27 @@ ATPrepCmd(List **wqueue, Relation rel, AlterTableCmd *cmd,
}
pass = AT_PASS_DROP;
break;
@@ -5078,7 +4881,7 @@ index 9b5ce65..34ffbe2 100644
case AT_SetTableSpace: /* SET TABLESPACE */
ATSimplePermissionsRelationOrIndex(rel);
/* This command never recurses */
-@@ -2690,7 +2750,7 @@ ATExecCmd(List **wqueue, AlteredTableInfo *tab, Relation rel,
+@@ -2709,7 +2769,7 @@ ATExecCmd(List **wqueue, AlteredTableInfo *tab, Relation rel,
case AT_AddColumn: /* ADD COLUMN */
case AT_AddColumnToView: /* add column via CREATE OR REPLACE
* VIEW */
@@ -5087,7 +4890,7 @@ index 9b5ce65..34ffbe2 100644
break;
case AT_ColumnDefault: /* ALTER COLUMN DEFAULT */
ATExecColumnDefault(rel, cmd->name, cmd->def);
-@@ -2762,17 +2822,22 @@ ATExecCmd(List **wqueue, AlteredTableInfo *tab, Relation rel,
+@@ -2781,17 +2841,22 @@ ATExecCmd(List **wqueue, AlteredTableInfo *tab, Relation rel,
case AT_AddOids: /* SET WITH OIDS */
/* Use the ADD COLUMN code, unless prep decided to do nothing */
if (cmd->def != NULL)
@@ -5113,7 +4916,7 @@ index 9b5ce65..34ffbe2 100644
/*
* Nothing to do here; Phase 3 does the work
*/
-@@ -3126,6 +3191,7 @@ ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap)
+@@ -3145,6 +3210,7 @@ ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap)
MemoryContext oldCxt;
List *dropped_attrs = NIL;
ListCell *lc;
@@ -5121,7 +4924,7 @@ index 9b5ce65..34ffbe2 100644
econtext = GetPerTupleExprContext(estate);
-@@ -3156,6 +3222,19 @@ ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap)
+@@ -3175,6 +3241,19 @@ ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap)
}
/*
@@ -5141,7 +4944,7 @@ index 9b5ce65..34ffbe2 100644
* Scan through the rows, generating a new row if needed and then
* checking all the constraints.
*/
-@@ -3172,11 +3251,16 @@ ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap)
+@@ -3191,11 +3270,16 @@ ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap)
if (newrel)
{
Oid tupOid = InvalidOid;
@@ -5158,7 +4961,7 @@ index 9b5ce65..34ffbe2 100644
/* Set dropped attributes to null in new tuple */
foreach(lc, dropped_attrs)
-@@ -3208,6 +3292,9 @@ ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap)
+@@ -3227,6 +3311,9 @@ ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap)
/* Preserve OID, if any */
if (newTupDesc->tdhasoid)
HeapTupleSetOid(tuple, tupOid);
@@ -5168,7 +4971,7 @@ index 9b5ce65..34ffbe2 100644
}
/* Now check any constraints on the possibly-changed tuple */
-@@ -3601,7 +3688,7 @@ ATPrepAddColumn(List **wqueue, Relation rel, bool recurse,
+@@ -3625,7 +3712,7 @@ ATPrepAddColumn(List **wqueue, Relation rel, bool recurse,
static void
ATExecAddColumn(AlteredTableInfo *tab, Relation rel,
@@ -5177,24 +4980,18 @@ index 9b5ce65..34ffbe2 100644
{
Oid myrelid = RelationGetRelid(rel);
Relation pgclass,
-@@ -3615,12 +3702,16 @@ ATExecAddColumn(AlteredTableInfo *tab, Relation rel,
+@@ -3639,6 +3726,10 @@ ATExecAddColumn(AlteredTableInfo *tab, Relation rel,
int32 typmod;
Form_pg_type tform;
Expr *defval;
+ Oid securityId;
-
- if (rel->rd_rel->reloftype)
- ereport(ERROR,
- (errcode(ERRCODE_WRONG_OBJECT_TYPE),
- errmsg("cannot add column to typed table")));
-
++
+ /* SELinux permission check */
+ securityId = sepgsql_attribute_create(myrelid, colDef->colname);
-+
+
attrdesc = heap_open(AttributeRelationId, RowExclusiveLock);
- /*
-@@ -3648,6 +3739,13 @@ ATExecAddColumn(AlteredTableInfo *tab, Relation rel,
+@@ -3667,6 +3758,13 @@ ATExecAddColumn(AlteredTableInfo *tab, Relation rel,
errmsg("child table \"%s\" has different type for column \"%s\"",
RelationGetRelationName(rel), colDef->colname)));
@@ -5208,7 +5005,7 @@ index 9b5ce65..34ffbe2 100644
/* If it's OID, child column must actually be OID */
if (isOid && childatt->attnum != ObjectIdAttributeNumber)
ereport(ERROR,
-@@ -3655,6 +3753,13 @@ ATExecAddColumn(AlteredTableInfo *tab, Relation rel,
+@@ -3674,6 +3772,13 @@ ATExecAddColumn(AlteredTableInfo *tab, Relation rel,
errmsg("child table \"%s\" has a conflicting \"%s\" column",
RelationGetRelationName(rel), colDef->colname)));
@@ -5222,7 +5019,7 @@ index 9b5ce65..34ffbe2 100644
/* Bump the existing child att's inhcount */
childatt->attinhcount++;
simple_heap_update(attrdesc, &tuple->t_self, tuple);
-@@ -3694,6 +3799,8 @@ ATExecAddColumn(AlteredTableInfo *tab, Relation rel,
+@@ -3713,6 +3818,8 @@ ATExecAddColumn(AlteredTableInfo *tab, Relation rel,
/* Determine the new attribute's number */
if (isOid)
newattnum = ObjectIdAttributeNumber;
@@ -5231,7 +5028,7 @@ index 9b5ce65..34ffbe2 100644
else
{
newattnum = ((Form_pg_class) GETSTRUCT(reltup))->relnatts + 1;
-@@ -3733,7 +3840,7 @@ ATExecAddColumn(AlteredTableInfo *tab, Relation rel,
+@@ -3752,7 +3859,7 @@ ATExecAddColumn(AlteredTableInfo *tab, Relation rel,
ReleaseSysCache(typeTuple);
@@ -5240,7 +5037,7 @@ index 9b5ce65..34ffbe2 100644
heap_close(attrdesc, RowExclusiveLock);
-@@ -3742,6 +3849,8 @@ ATExecAddColumn(AlteredTableInfo *tab, Relation rel,
+@@ -3761,6 +3868,8 @@ ATExecAddColumn(AlteredTableInfo *tab, Relation rel,
*/
if (isOid)
((Form_pg_class) GETSTRUCT(reltup))->relhasoids = true;
@@ -5249,7 +5046,7 @@ index 9b5ce65..34ffbe2 100644
else
((Form_pg_class) GETSTRUCT(reltup))->relnatts = newattnum;
-@@ -3853,7 +3962,7 @@ ATExecAddColumn(AlteredTableInfo *tab, Relation rel,
+@@ -3872,7 +3981,7 @@ ATExecAddColumn(AlteredTableInfo *tab, Relation rel,
* If we are adding an OID column, we have to tell Phase 3 to rewrite the
* table to fix that.
*/
@@ -5258,7 +5055,7 @@ index 9b5ce65..34ffbe2 100644
tab->new_changeoids = true;
/*
-@@ -3906,6 +4015,31 @@ ATPrepAddOids(List **wqueue, Relation rel, bool recurse, AlterTableCmd *cmd)
+@@ -3925,6 +4034,31 @@ ATPrepAddOids(List **wqueue, Relation rel, bool recurse, AlterTableCmd *cmd)
}
/*
@@ -5290,7 +5087,7 @@ index 9b5ce65..34ffbe2 100644
* ALTER TABLE ALTER COLUMN DROP NOT NULL
*/
static void
-@@ -3917,6 +4051,9 @@ ATExecDropNotNull(Relation rel, const char *colName)
+@@ -3936,6 +4070,9 @@ ATExecDropNotNull(Relation rel, const char *colName)
List *indexoidlist;
ListCell *indexoidscan;
@@ -5300,7 +5097,7 @@ index 9b5ce65..34ffbe2 100644
/*
* lookup the attribute
*/
-@@ -4007,6 +4144,9 @@ ATExecSetNotNull(AlteredTableInfo *tab, Relation rel,
+@@ -4026,6 +4163,9 @@ ATExecSetNotNull(AlteredTableInfo *tab, Relation rel,
AttrNumber attnum;
Relation attr_rel;
@@ -5310,7 +5107,7 @@ index 9b5ce65..34ffbe2 100644
/*
* lookup the attribute
*/
-@@ -4057,6 +4197,9 @@ ATExecColumnDefault(Relation rel, const char *colName,
+@@ -4076,6 +4216,9 @@ ATExecColumnDefault(Relation rel, const char *colName,
{
AttrNumber attnum;
@@ -5320,7 +5117,7 @@ index 9b5ce65..34ffbe2 100644
/*
* get the number of the attribute
*/
-@@ -4131,6 +4274,9 @@ ATExecSetStatistics(Relation rel, const char *colName, Node *newValue)
+@@ -4150,6 +4293,9 @@ ATExecSetStatistics(Relation rel, const char *colName, Node *newValue)
HeapTuple tuple;
Form_pg_attribute attrtuple;
@@ -5330,7 +5127,7 @@ index 9b5ce65..34ffbe2 100644
Assert(IsA(newValue, Integer));
newtarget = intVal(newValue);
-@@ -4197,6 +4343,9 @@ ATExecSetOptions(Relation rel, const char *colName, Node *options,
+@@ -4216,6 +4362,9 @@ ATExecSetOptions(Relation rel, const char *colName, Node *options,
bool repl_null[Natts_pg_attribute];
bool repl_repl[Natts_pg_attribute];
@@ -5340,7 +5137,7 @@ index 9b5ce65..34ffbe2 100644
attrelation = heap_open(AttributeRelationId, RowExclusiveLock);
tuple = SearchSysCacheAttName(RelationGetRelid(rel), colName);
-@@ -4256,6 +4405,9 @@ ATExecSetStorage(Relation rel, const char *colName, Node *newValue)
+@@ -4275,6 +4424,9 @@ ATExecSetStorage(Relation rel, const char *colName, Node *newValue)
HeapTuple tuple;
Form_pg_attribute attrtuple;
@@ -5350,7 +5147,7 @@ index 9b5ce65..34ffbe2 100644
Assert(IsA(newValue, String));
storagemode = strVal(newValue);
-@@ -4346,6 +4498,9 @@ ATExecDropColumn(List **wqueue, Relation rel, const char *colName,
+@@ -4373,6 +4525,9 @@ ATExecDropColumn(List **wqueue, Relation rel, const char *colName,
if (recursing)
ATSimplePermissions(rel, false);
@@ -5360,7 +5157,7 @@ index 9b5ce65..34ffbe2 100644
/*
* get the number of the attribute
*/
-@@ -4371,8 +4526,10 @@ ATExecDropColumn(List **wqueue, Relation rel, const char *colName,
+@@ -4398,8 +4553,10 @@ ATExecDropColumn(List **wqueue, Relation rel, const char *colName,
attnum = targetatt->attnum;
@@ -5373,7 +5170,7 @@ index 9b5ce65..34ffbe2 100644
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("cannot drop system column \"%s\"",
-@@ -4488,7 +4645,8 @@ ATExecDropColumn(List **wqueue, Relation rel, const char *colName,
+@@ -4515,7 +4672,8 @@ ATExecDropColumn(List **wqueue, Relation rel, const char *colName,
* If we dropped the OID column, must adjust pg_class.relhasoids and tell
* Phase 3 to physically get rid of the column.
*/
@@ -5383,7 +5180,7 @@ index 9b5ce65..34ffbe2 100644
{
Relation class_rel;
Form_pg_class tuple_class;
-@@ -4503,7 +4661,11 @@ ATExecDropColumn(List **wqueue, Relation rel, const char *colName,
+@@ -4530,7 +4688,11 @@ ATExecDropColumn(List **wqueue, Relation rel, const char *colName,
RelationGetRelid(rel));
tuple_class = (Form_pg_class) GETSTRUCT(tuple);
@@ -5396,7 +5193,7 @@ index 9b5ce65..34ffbe2 100644
simple_heap_update(class_rel, &tuple->t_self, tuple);
/* Keep the catalog indexes up to date */
-@@ -4650,6 +4812,9 @@ ATAddCheckConstraint(List **wqueue, AlteredTableInfo *tab, Relation rel,
+@@ -4677,6 +4839,9 @@ ATAddCheckConstraint(List **wqueue, AlteredTableInfo *tab, Relation rel,
if (recursing)
ATSimplePermissions(rel, false);
@@ -5406,7 +5203,7 @@ index 9b5ce65..34ffbe2 100644
/*
* Call AddRelationNewConstraints to do the work, making sure it works on
* a copy of the Constraint so transformExpr can't modify the original. It
-@@ -4847,6 +5012,9 @@ ATAddForeignKeyConstraint(AlteredTableInfo *tab, Relation rel,
+@@ -4883,6 +5048,9 @@ ATAddForeignKeyConstraint(AlteredTableInfo *tab, Relation rel,
checkFkeyPermissions(pkrel, pkattnum, numpks);
checkFkeyPermissions(rel, fkattnum, numfks);
@@ -5416,7 +5213,7 @@ index 9b5ce65..34ffbe2 100644
/*
* Look up the equality operators to use in the constraint.
*
-@@ -5592,6 +5760,9 @@ ATExecDropConstraint(Relation rel, const char *constrName,
+@@ -5628,6 +5796,9 @@ ATExecDropConstraint(Relation rel, const char *constrName,
if (recursing)
ATSimplePermissions(rel, false);
@@ -5426,7 +5223,7 @@ index 9b5ce65..34ffbe2 100644
conrel = heap_open(ConstraintRelationId, RowExclusiveLock);
/*
-@@ -5924,6 +6095,9 @@ ATExecAlterColumnType(AlteredTableInfo *tab, Relation rel,
+@@ -5965,6 +6136,9 @@ ATExecAlterColumnType(AlteredTableInfo *tab, Relation rel,
SysScanDesc scan;
HeapTuple depTup;
@@ -5436,7 +5233,7 @@ index 9b5ce65..34ffbe2 100644
attrelation = heap_open(AttributeRelationId, RowExclusiveLock);
/* Look up the target column */
-@@ -6537,6 +6711,8 @@ ATExecChangeOwner(Oid relationOid, Oid newOwnerId, bool recursing)
+@@ -6578,6 +6752,8 @@ ATExecChangeOwner(Oid relationOid, Oid newOwnerId, bool recursing)
aclcheck_error(aclresult, ACL_KIND_NAMESPACE,
get_namespace_name(namespaceOid));
}
@@ -5445,7 +5242,7 @@ index 9b5ce65..34ffbe2 100644
}
memset(repl_null, false, sizeof(repl_null));
-@@ -6702,6 +6878,9 @@ ATExecClusterOn(Relation rel, const char *indexName)
+@@ -6743,6 +6919,9 @@ ATExecClusterOn(Relation rel, const char *indexName)
{
Oid indexOid;
@@ -5455,7 +5252,7 @@ index 9b5ce65..34ffbe2 100644
indexOid = get_relname_relid(indexName, rel->rd_rel->relnamespace);
if (!OidIsValid(indexOid))
-@@ -6726,6 +6905,9 @@ ATExecClusterOn(Relation rel, const char *indexName)
+@@ -6767,6 +6946,9 @@ ATExecClusterOn(Relation rel, const char *indexName)
static void
ATExecDropCluster(Relation rel)
{
@@ -5465,7 +5262,7 @@ index 9b5ce65..34ffbe2 100644
mark_index_clustered(rel, InvalidOid);
}
-@@ -6776,6 +6958,9 @@ ATExecSetRelOptions(Relation rel, List *defList, bool isReset)
+@@ -6817,6 +6999,9 @@ ATExecSetRelOptions(Relation rel, List *defList, bool isReset)
bool repl_repl[Natts_pg_class];
static char *validnsps[] = HEAP_RELOPT_NAMESPACES;
@@ -5475,7 +5272,7 @@ index 9b5ce65..34ffbe2 100644
if (defList == NIL)
return; /* nothing to do */
-@@ -7090,6 +7275,9 @@ static void
+@@ -7145,6 +7330,9 @@ static void
ATExecEnableDisableTrigger(Relation rel, char *trigname,
char fires_when, bool skip_system)
{
@@ -5485,7 +5282,7 @@ index 9b5ce65..34ffbe2 100644
EnableDisableTrigger(rel, trigname, fires_when, skip_system);
}
-@@ -7102,6 +7290,9 @@ static void
+@@ -7157,6 +7345,9 @@ static void
ATExecEnableDisableRule(Relation rel, char *trigname,
char fires_when)
{
@@ -5495,7 +5292,7 @@ index 9b5ce65..34ffbe2 100644
EnableDisableRule(rel, trigname, fires_when);
}
-@@ -7135,6 +7326,10 @@ ATExecAddInherit(Relation child_rel, RangeVar *parent)
+@@ -7199,6 +7390,10 @@ ATExecAddInherit(Relation child_rel, RangeVar *parent)
*/
ATSimplePermissions(parent_rel, false);
@@ -5506,7 +5303,7 @@ index 9b5ce65..34ffbe2 100644
/* Permanent rels cannot inherit from temporary ones */
if (parent_rel->rd_istemp && !child_rel->rd_istemp)
ereport(ERROR,
-@@ -7487,6 +7682,9 @@ ATExecDropInherit(Relation rel, RangeVar *parent)
+@@ -7551,6 +7746,9 @@ ATExecDropInherit(Relation rel, RangeVar *parent)
List *connames;
bool found = false;
@@ -5516,7 +5313,7 @@ index 9b5ce65..34ffbe2 100644
/*
* AccessShareLock on the parent is probably enough, seeing that DROP
* TABLE doesn't lock parent tables at all. We need some lock since we'll
-@@ -7784,6 +7982,9 @@ AlterTableNamespace(RangeVar *relation, const char *newschema,
+@@ -7848,6 +8046,9 @@ AlterTableNamespace(RangeVar *relation, const char *newschema,
/* get schema OID and check its permissions */
nspOid = LookupCreationNamespace(newschema);
@@ -5526,7 +5323,7 @@ index 9b5ce65..34ffbe2 100644
if (oldNspOid == nspOid)
ereport(ERROR,
(errcode(ERRCODE_DUPLICATE_TABLE),
-@@ -7981,6 +8182,282 @@ AlterSeqNamespaces(Relation classRel, Relation rel,
+@@ -8045,6 +8246,282 @@ AlterSeqNamespaces(Relation classRel, Relation rel,
relation_close(depRel, AccessShareLock);
}
@@ -5810,7 +5607,7 @@ index 9b5ce65..34ffbe2 100644
/*
* This code supports
diff --git a/src/backend/commands/tablespace.c b/src/backend/commands/tablespace.c
-index 862cd2d..8ea4118 100644
+index 4c57a73..ce0bb99 100644
--- a/src/backend/commands/tablespace.c
+++ b/src/backend/commands/tablespace.c
@@ -65,6 +65,7 @@
@@ -5858,7 +5655,7 @@ index 862cd2d..8ea4118 100644
/* Disallow drop of the standard tablespaces, even by superuser */
if (tablespaceoid == GLOBALTABLESPACE_OID ||
tablespaceoid == DEFAULTTABLESPACE_OID)
-@@ -787,6 +797,9 @@ RenameTableSpace(const char *oldname, const char *newname)
+@@ -817,6 +827,9 @@ RenameTableSpace(const char *oldname, const char *newname)
if (!pg_tablespace_ownercheck(HeapTupleGetOid(newtuple), GetUserId()))
aclcheck_error(ACLCHECK_NO_PRIV, ACL_KIND_TABLESPACE, oldname);
@@ -5868,7 +5665,7 @@ index 862cd2d..8ea4118 100644
/* Validate new name */
if (!allowSystemTableMods && IsReservedName(newname))
ereport(ERROR,
-@@ -868,6 +881,9 @@ AlterTableSpaceOwner(const char *name, Oid newOwnerId)
+@@ -898,6 +911,9 @@ AlterTableSpaceOwner(const char *name, Oid newOwnerId)
/* Must be able to become new owner */
check_is_member_of_role(GetUserId(), newOwnerId);
@@ -5878,7 +5675,7 @@ index 862cd2d..8ea4118 100644
/*
* Normally we would also check for create permissions here, but there
* are none for tablespaces so we follow what rename tablespace does
-@@ -985,6 +1001,54 @@ AlterTableSpaceOptions(AlterTableSpaceOptionsStmt *stmt)
+@@ -1015,6 +1031,54 @@ AlterTableSpaceOptions(AlterTableSpaceOptionsStmt *stmt)
}
/*
@@ -5934,7 +5731,7 @@ index 862cd2d..8ea4118 100644
*/
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
-index 2cbc192..2ea9e6e 100644
+index 251c3e8..2f7d3d5 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -40,6 +40,7 @@
@@ -5977,7 +5774,7 @@ index 2cbc192..2ea9e6e 100644
* Grab an exclusive lock on the target table, which we will NOT release
* until end of transaction.
diff --git a/src/backend/commands/tsearchcmds.c b/src/backend/commands/tsearchcmds.c
-index ba3de63..19bebb4 100644
+index 522ea6e..8c6e0d3 100644
--- a/src/backend/commands/tsearchcmds.c
+++ b/src/backend/commands/tsearchcmds.c
@@ -35,6 +35,7 @@
@@ -6222,7 +6019,7 @@ index ba3de63..19bebb4 100644
/* Add or drop mappings */
diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c
-index 1e14dca..f7429f0 100644
+index abde562..a5cf445 100644
--- a/src/backend/commands/typecmds.c
+++ b/src/backend/commands/typecmds.c
@@ -56,6 +56,7 @@
@@ -6529,7 +6326,7 @@ index 1e14dca..f7429f0 100644
+ ReleaseSysCache(typtup);
+}
diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c
-index 2f0788e..8de31ae 100644
+index cdf7dc5..f6aee43 100644
--- a/src/backend/commands/user.c
+++ b/src/backend/commands/user.c
@@ -21,11 +21,13 @@
@@ -6621,24 +6418,21 @@ index 2f0788e..8de31ae 100644
pg_authmem_rel = heap_open(AuthMemRelationId, RowExclusiveLock);
pg_authmem_dsc = RelationGetDescr(pg_authmem_rel);
diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c
-index 49a206e..4646c41 100644
+index e77430e..3dfc7d4 100644
--- a/src/backend/commands/vacuum.c
+++ b/src/backend/commands/vacuum.c
-@@ -980,6 +980,12 @@ vacuum_rel(Oid relid, VacuumStmt *vacstmt, bool do_toast, bool for_wraparound,
- relation_close(onerel, NoLock);
-
- /*
-+ * VACUUM FULL also reclaim orphan security labels, if exist
-+ */
-+ if (vacstmt->options & VACOPT_FULL)
+@@ -957,6 +957,9 @@ vacuum_rel(Oid relid, VacuumStmt *vacstmt, bool do_toast, bool for_wraparound,
+ */
+ if (vacstmt->options & VACOPT_FULL)
+ {
++ /* Also reclaim unreferenced security labels */
+ seclabelRelationReclaim(relid);
+
-+ /*
- * Complete the transaction and free all temporary memory used.
- */
- PopActiveSnapshot();
+ /* close relation before vacuuming, but hold lock until commit */
+ relation_close(onerel, NoLock);
+ onerel = NULL;
diff --git a/src/backend/commands/view.c b/src/backend/commands/view.c
-index d7a06bc..5480c83 100644
+index c291529..dd0b12a 100644
--- a/src/backend/commands/view.c
+++ b/src/backend/commands/view.c
@@ -28,6 +28,7 @@
@@ -6660,7 +6454,7 @@ index d7a06bc..5480c83 100644
CheckTableNotInUse(rel, "CREATE OR REPLACE VIEW");
diff --git a/src/backend/executor/execJunk.c b/src/backend/executor/execJunk.c
-index 5e555ad..963096d 100644
+index 2fa7e68..c2b926c 100644
--- a/src/backend/executor/execJunk.c
+++ b/src/backend/executor/execJunk.c
@@ -58,7 +58,8 @@
@@ -6683,7 +6477,7 @@ index 5e555ad..963096d 100644
/*
* Use the given slot, or make a new slot if we weren't given one.
diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c
-index d299310..febb02e 100644
+index 0b6cbcc..fbce8e4 100644
--- a/src/backend/executor/execMain.c
+++ b/src/backend/executor/execMain.c
@@ -38,6 +38,7 @@
@@ -6818,7 +6612,7 @@ index d299310..febb02e 100644
heap_insert(myState->rel,
tuple,
diff --git a/src/backend/executor/execQual.c b/src/backend/executor/execQual.c
-index 005e15e..6e93932 100644
+index bfcce0f..a07b314 100644
--- a/src/backend/executor/execQual.c
+++ b/src/backend/executor/execQual.c
@@ -49,6 +49,7 @@
@@ -6857,7 +6651,7 @@ index 005e15e..6e93932 100644
TupleDescInitEntry(tupdesc,
(AttrNumber) 1,
"column",
-@@ -4108,6 +4112,9 @@ ExecEvalArrayCoerceExpr(ArrayCoerceExprState *astate,
+@@ -4118,6 +4122,9 @@ ExecEvalArrayCoerceExpr(ArrayCoerceExprState *astate,
aclcheck_error(aclresult, ACL_KIND_PROC,
get_func_name(acoerce->elemfuncid));
@@ -6868,7 +6662,7 @@ index 005e15e..6e93932 100644
fmgr_info_cxt(acoerce->elemfuncid, &(astate->elemfunc),
econtext->ecxt_per_query_memory);
diff --git a/src/backend/executor/execScan.c b/src/backend/executor/execScan.c
-index 53fe195..68f790f 100644
+index fa5ff2d..fb9093c 100644
--- a/src/backend/executor/execScan.c
+++ b/src/backend/executor/execScan.c
@@ -20,6 +20,7 @@
@@ -6939,7 +6733,7 @@ index 53fe195..68f790f 100644
return true;
}
diff --git a/src/backend/executor/execTuples.c b/src/backend/executor/execTuples.c
-index 1caf976..64f6468 100644
+index e2ee706..d4d216b 100644
--- a/src/backend/executor/execTuples.c
+++ b/src/backend/executor/execTuples.c
@@ -98,7 +98,7 @@
@@ -7000,7 +6794,7 @@ index 1caf976..64f6468 100644
foreach(l, exprList)
{
diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c
-index 98e4a64..14f9404 100644
+index 5886c1b..50f91f5 100644
--- a/src/backend/executor/execUtils.c
+++ b/src/backend/executor/execUtils.c
@@ -444,6 +444,7 @@ void
@@ -7029,7 +6823,7 @@ index 98e4a64..14f9404 100644
}
diff --git a/src/backend/executor/functions.c b/src/backend/executor/functions.c
-index d552698..ed1913f 100644
+index ea2cfc9..7b489db 100644
--- a/src/backend/executor/functions.c
+++ b/src/backend/executor/functions.c
@@ -1153,7 +1153,7 @@ check_sql_fn_retval(Oid func_id, Oid rettype, List *queryTreeList,
@@ -7060,7 +6854,7 @@ index d552698..ed1913f 100644
}
Assert(tupdesc);
diff --git a/src/backend/executor/nodeAgg.c b/src/backend/executor/nodeAgg.c
-index ddd91fc..cfb685e 100644
+index 74fc87a..4b222b1 100644
--- a/src/backend/executor/nodeAgg.c
+++ b/src/backend/executor/nodeAgg.c
@@ -89,6 +89,7 @@
@@ -7090,7 +6884,7 @@ index ddd91fc..cfb685e 100644
/* Create slot we're going to do argument evaluation in */
peraggstate->evalslot = ExecInitExtraTupleSlot(estate);
diff --git a/src/backend/executor/nodeFunctionscan.c b/src/backend/executor/nodeFunctionscan.c
-index 66e6b74..a31907c 100644
+index 6989961..471653f 100644
--- a/src/backend/executor/nodeFunctionscan.c
+++ b/src/backend/executor/nodeFunctionscan.c
@@ -178,7 +178,7 @@ ExecInitFunctionScan(FunctionScan *node, EState *estate, int eflags)
@@ -7103,7 +6897,7 @@ index 66e6b74..a31907c 100644
(AttrNumber) 1,
attname,
diff --git a/src/backend/executor/nodeMergejoin.c b/src/backend/executor/nodeMergejoin.c
-index ca6b0f8..b5c79d0 100644
+index 948f580..7d9f4f4 100644
--- a/src/backend/executor/nodeMergejoin.c
+++ b/src/backend/executor/nodeMergejoin.c
@@ -98,6 +98,7 @@
@@ -7114,7 +6908,7 @@ index ca6b0f8..b5c79d0 100644
#include "utils/acl.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
-@@ -216,6 +217,9 @@ MJExamineQuals(List *mergeclauses,
+@@ -224,6 +225,9 @@ MJExamineQuals(List *mergeclauses,
aclcheck_error(aclresult, ACL_KIND_PROC,
get_func_name(cmpproc));
@@ -7125,7 +6919,7 @@ index ca6b0f8..b5c79d0 100644
fmgr_info(cmpproc, &(clause->cmpfinfo));
diff --git a/src/backend/executor/nodeModifyTable.c b/src/backend/executor/nodeModifyTable.c
-index 7856b66..eee2739 100644
+index 9699381..03afb4e 100644
--- a/src/backend/executor/nodeModifyTable.c
+++ b/src/backend/executor/nodeModifyTable.c
@@ -38,11 +38,13 @@
@@ -7252,10 +7046,10 @@ index 7856b66..eee2739 100644
{
+ Oid securityId = InvalidOid;
+
- planSlot = ExecProcNode(subplanstate);
-
- if (TupIsNull(planSlot))
-@@ -705,6 +760,14 @@ ExecModifyTable(ModifyTableState *node)
+ /*
+ * Reset the per-output-tuple exprcontext. This is needed because
+ * triggers expect to use that context as workspace. It's a bit ugly
+@@ -713,6 +768,14 @@ ExecModifyTable(ModifyTableState *node)
if (junkfilter != NULL)
{
@@ -7270,7 +7064,7 @@ index 7856b66..eee2739 100644
/*
* extract the 'ctid' junk attribute.
*/
-@@ -734,11 +797,11 @@ ExecModifyTable(ModifyTableState *node)
+@@ -742,11 +805,11 @@ ExecModifyTable(ModifyTableState *node)
switch (operation)
{
case CMD_INSERT:
@@ -7284,7 +7078,7 @@ index 7856b66..eee2739 100644
break;
case CMD_DELETE:
slot = ExecDelete(tupleid, planSlot,
-@@ -850,7 +913,7 @@ ExecInitModifyTable(ModifyTable *node, EState *estate, int eflags)
+@@ -858,7 +921,7 @@ ExecInitModifyTable(ModifyTable *node, EState *estate, int eflags)
* RETURNING list. We assume the rest will look the same.
*/
tupDesc = ExecTypeFromTL((List *) linitial(node->returningLists),
@@ -7293,7 +7087,7 @@ index 7856b66..eee2739 100644
/* Set up a slot for the output of the RETURNING projection(s) */
ExecInitResultTupleSlot(estate, &mtstate->ps);
-@@ -884,7 +947,7 @@ ExecInitModifyTable(ModifyTable *node, EState *estate, int eflags)
+@@ -892,7 +955,7 @@ ExecInitModifyTable(ModifyTable *node, EState *estate, int eflags)
* We still must construct a dummy result tuple type, because InitPlan
* expects one (maybe should change that?).
*/
@@ -7302,7 +7096,7 @@ index 7856b66..eee2739 100644
ExecInitResultTupleSlot(estate, &mtstate->ps);
ExecAssignResultType(&mtstate->ps, tupDesc);
-@@ -976,6 +1039,7 @@ ExecInitModifyTable(ModifyTable *node, EState *estate, int eflags)
+@@ -984,6 +1047,7 @@ ExecInitModifyTable(ModifyTable *node, EState *estate, int eflags)
j = ExecInitJunkFilter(subplan->targetlist,
resultRelInfo->ri_RelationDesc->rd_att->tdhasoid,
@@ -7311,7 +7105,7 @@ index 7856b66..eee2739 100644
if (operation == CMD_UPDATE || operation == CMD_DELETE)
diff --git a/src/backend/executor/nodeSubplan.c b/src/backend/executor/nodeSubplan.c
-index 9f1ff16..bef704b 100644
+index d397b13..90e2e65 100644
--- a/src/backend/executor/nodeSubplan.c
+++ b/src/backend/executor/nodeSubplan.c
@@ -859,7 +859,7 @@ ExecInitSubPlan(SubPlan *subplan, PlanState *parent)
@@ -7333,7 +7127,7 @@ index 9f1ff16..bef704b 100644
ExecSetSlotDescriptor(slot, tupDesc);
sstate->projRight = ExecBuildProjectionInfo(righttlist,
diff --git a/src/backend/executor/nodeWindowAgg.c b/src/backend/executor/nodeWindowAgg.c
-index 712bab1..e69f3c7 100644
+index de6d038..2ee0a8f 100644
--- a/src/backend/executor/nodeWindowAgg.c
+++ b/src/backend/executor/nodeWindowAgg.c
@@ -43,6 +43,7 @@
@@ -7358,7 +7152,7 @@ index 712bab1..e69f3c7 100644
perfuncstate->wfuncstate = wfuncstate;
perfuncstate->wfunc = wfunc;
diff --git a/src/backend/executor/spi.c b/src/backend/executor/spi.c
-index 7f0b5e4..2e2c63b 100644
+index 1ffb1b2..623b2dd 100644
--- a/src/backend/executor/spi.c
+++ b/src/backend/executor/spi.c
@@ -767,6 +767,8 @@ SPI_modifytuple(Relation rel, HeapTuple tuple, int natts, int *attnum,
@@ -7417,7 +7211,7 @@ index 7f0b5e4..2e2c63b 100644
char *
diff --git a/src/backend/libpq/be-fsstubs.c b/src/backend/libpq/be-fsstubs.c
-index f4f50f8..4ab5698 100644
+index 464183d..67d0316 100644
--- a/src/backend/libpq/be-fsstubs.c
+++ b/src/backend/libpq/be-fsstubs.c
@@ -46,6 +46,7 @@
@@ -7580,10 +7374,10 @@ index f4f50f8..4ab5698 100644
PG_RETURN_INT32(0);
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c
-index e770e89..9642a66 100644
+index 3e237c1..387d85d 100644
--- a/src/backend/nodes/copyfuncs.c
+++ b/src/backend/nodes/copyfuncs.c
-@@ -1823,6 +1823,7 @@ _copyRangeTblEntry(RangeTblEntry *from)
+@@ -1824,6 +1824,7 @@ _copyRangeTblEntry(RangeTblEntry *from)
COPY_SCALAR_FIELD(checkAsUser);
COPY_BITMAPSET_FIELD(selectedCols);
COPY_BITMAPSET_FIELD(modifiedCols);
@@ -7591,7 +7385,7 @@ index e770e89..9642a66 100644
return newnode;
}
-@@ -2755,6 +2756,21 @@ _copyAlterOwnerStmt(AlterOwnerStmt *from)
+@@ -2756,6 +2757,21 @@ _copyAlterOwnerStmt(AlterOwnerStmt *from)
return newnode;
}
@@ -7613,7 +7407,7 @@ index e770e89..9642a66 100644
static RuleStmt *
_copyRuleStmt(RuleStmt *from)
{
-@@ -3968,6 +3984,9 @@ copyObject(void *from)
+@@ -3970,6 +3986,9 @@ copyObject(void *from)
case T_AlterOwnerStmt:
retval = _copyAlterOwnerStmt(from);
break;
@@ -7624,7 +7418,7 @@ index e770e89..9642a66 100644
retval = _copyRuleStmt(from);
break;
diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c
-index 5d83727..fd4071d 100644
+index dc5f883..33f2f5d 100644
--- a/src/backend/nodes/equalfuncs.c
+++ b/src/backend/nodes/equalfuncs.c
@@ -1308,6 +1308,19 @@ _equalAlterOwnerStmt(AlterOwnerStmt *a, AlterOwnerStmt *b)
@@ -7647,7 +7441,7 @@ index 5d83727..fd4071d 100644
_equalRuleStmt(RuleStmt *a, RuleStmt *b)
{
COMPARE_NODE_FIELD(relation);
-@@ -2186,6 +2199,7 @@ _equalRangeTblEntry(RangeTblEntry *a, RangeTblEntry *b)
+@@ -2187,6 +2200,7 @@ _equalRangeTblEntry(RangeTblEntry *a, RangeTblEntry *b)
COMPARE_SCALAR_FIELD(checkAsUser);
COMPARE_BITMAPSET_FIELD(selectedCols);
COMPARE_BITMAPSET_FIELD(modifiedCols);
@@ -7655,7 +7449,7 @@ index 5d83727..fd4071d 100644
return true;
}
-@@ -2657,6 +2671,9 @@ equal(void *a, void *b)
+@@ -2658,6 +2672,9 @@ equal(void *a, void *b)
case T_AlterOwnerStmt:
retval = _equalAlterOwnerStmt(a, b);
break;
@@ -7666,10 +7460,10 @@ index 5d83727..fd4071d 100644
retval = _equalRuleStmt(a, b);
break;
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c
-index e7dae4b..4e8b350 100644
+index 48c0888..34632d2 100644
--- a/src/backend/nodes/outfuncs.c
+++ b/src/backend/nodes/outfuncs.c
-@@ -2135,6 +2135,7 @@ _outRangeTblEntry(StringInfo str, RangeTblEntry *node)
+@@ -2136,6 +2136,7 @@ _outRangeTblEntry(StringInfo str, RangeTblEntry *node)
WRITE_OID_FIELD(checkAsUser);
WRITE_BITMAPSET_FIELD(selectedCols);
WRITE_BITMAPSET_FIELD(modifiedCols);
@@ -7678,7 +7472,7 @@ index e7dae4b..4e8b350 100644
static void
diff --git a/src/backend/nodes/readfuncs.c b/src/backend/nodes/readfuncs.c
-index bc6e2a6..792b9ff 100644
+index f28191d..f6f31e5 100644
--- a/src/backend/nodes/readfuncs.c
+++ b/src/backend/nodes/readfuncs.c
@@ -1171,6 +1171,7 @@ _readRangeTblEntry(void)
@@ -7690,7 +7484,7 @@ index bc6e2a6..792b9ff 100644
READ_DONE();
}
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c
-index 3950ab4..18e5d80 100644
+index 317a7e8..5b88ad6 100644
--- a/src/backend/optimizer/plan/planner.c
+++ b/src/backend/optimizer/plan/planner.c
@@ -39,6 +39,7 @@
@@ -7719,7 +7513,7 @@ index 3950ab4..18e5d80 100644
* pullup (so that all non-inherited RTEs are present) and before
* inheritance expansion (so that the info is available for
diff --git a/src/backend/optimizer/util/clauses.c b/src/backend/optimizer/util/clauses.c
-index e525ba6..6474fbc 100644
+index 8486516..acd6bac 100644
--- a/src/backend/optimizer/util/clauses.c
+++ b/src/backend/optimizer/util/clauses.c
@@ -38,6 +38,7 @@
@@ -7730,7 +7524,7 @@ index e525ba6..6474fbc 100644
#include "tcop/tcopprot.h"
#include "utils/acl.h"
#include "utils/builtins.h"
-@@ -3712,6 +3713,10 @@ inline_function(Oid funcid, Oid result_type, List *args,
+@@ -3724,6 +3725,10 @@ inline_function(Oid funcid, Oid result_type, List *args,
if (pg_proc_aclcheck(funcid, GetUserId(), ACL_EXECUTE) != ACLCHECK_OK)
return NULL;
@@ -7741,7 +7535,7 @@ index e525ba6..6474fbc 100644
/*
* Make a temporary memory context, so that we don't leak all the stuff
* that parsing might create.
-@@ -4164,7 +4169,8 @@ inline_set_returning_function(PlannerInfo *root, RangeTblEntry *rte)
+@@ -4176,7 +4181,8 @@ inline_set_returning_function(PlannerInfo *root, RangeTblEntry *rte)
funcform->provolatile == PROVOLATILE_VOLATILE ||
funcform->prosecdef ||
!funcform->proretset ||
@@ -7752,7 +7546,7 @@ index e525ba6..6474fbc 100644
ReleaseSysCache(func_tuple);
return NULL;
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c
-index 6b99a10..4eb9d24 100644
+index 1576613..51e197f 100644
--- a/src/backend/parser/analyze.c
+++ b/src/backend/parser/analyze.c
@@ -25,6 +25,7 @@
@@ -7781,7 +7575,7 @@ index 6b99a10..4eb9d24 100644
rte->modifiedCols = bms_add_member(rte->modifiedCols,
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
-index b793c4d..866e0ba 100644
+index 50ed871..d6b13da 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -183,8 +183,8 @@ static TypeName *TableFuncTypeName(List *columns);
@@ -7842,7 +7636,7 @@ index b793c4d..866e0ba 100644
/* ALTER TABLE <name> CLUSTER ON <indexname> */
| CLUSTER ON name
{
-@@ -6022,6 +6039,102 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleId
+@@ -6027,6 +6044,102 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleId
}
;
@@ -7945,7 +7739,7 @@ index b793c4d..866e0ba 100644
/*****************************************************************************
*
-@@ -10921,6 +11034,7 @@ unreserved_keyword:
+@@ -10922,6 +11035,7 @@ unreserved_keyword:
| INVOKER
| ISOLATION
| KEY
@@ -7954,7 +7748,7 @@ index b793c4d..866e0ba 100644
| LARGE_P
| LAST_P
diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c
-index 38c7e91..fbc4e9f 100644
+index 1d0fc82..7ad1eeb 100644
--- a/src/backend/parser/parse_relation.c
+++ b/src/backend/parser/parse_relation.c
@@ -2302,8 +2302,8 @@ specialAttNum(const char *attname)
@@ -7991,7 +7785,7 @@ index 38c7e91..fbc4e9f 100644
}
if (attid > rd->rd_att->natts)
diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c
-index e542dc0..8191f94 100644
+index 7e04a94..da10dc7 100644
--- a/src/backend/parser/parse_target.c
+++ b/src/backend/parser/parse_target.c
@@ -14,6 +14,7 @@
@@ -8128,7 +7922,7 @@ index e542dc0..8191f94 100644
forboth(lname, names, lvar, vars)
{
diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c
-index 90d5c76..b78f9ba 100644
+index d1e1dac..8e994da 100644
--- a/src/backend/parser/parse_utilcmd.c
+++ b/src/backend/parser/parse_utilcmd.c
@@ -53,8 +53,10 @@
@@ -8158,7 +7952,7 @@ index 90d5c76..b78f9ba 100644
Assert(!stmt->ofTypename || !stmt->inhRelations); /* grammar enforces */
-@@ -587,6 +591,9 @@ transformInhRelation(ParseState *pstate, CreateStmtContext *cxt,
+@@ -599,6 +603,9 @@ transformInhRelation(ParseState *pstate, CreateStmtContext *cxt,
aclcheck_error(aclresult, ACL_KIND_CLASS,
RelationGetRelationName(relation));
@@ -8168,7 +7962,7 @@ index 90d5c76..b78f9ba 100644
tupleDesc = RelationGetDescr(relation);
constr = tupleDesc->constr;
-@@ -1368,7 +1375,7 @@ transformIndexConstraint(Constraint *constraint, CreateStmtContext *cxt)
+@@ -1380,7 +1387,7 @@ transformIndexConstraint(Constraint *constraint, CreateStmtContext *cxt)
if (constraint->contype == CONSTR_PRIMARY)
column->is_not_null = TRUE;
}
@@ -8177,7 +7971,7 @@ index 90d5c76..b78f9ba 100644
{
/*
* column will be a system column in the new table, so accept it.
-@@ -1945,6 +1952,7 @@ transformAlterTableStmt(AlterTableStmt *stmt, const char *queryString)
+@@ -1957,6 +1964,7 @@ transformAlterTableStmt(AlterTableStmt *stmt, const char *queryString)
cxt.inhRelations = NIL;
cxt.isalter = true;
cxt.hasoids = false; /* need not be right */
@@ -8186,7 +7980,7 @@ index 90d5c76..b78f9ba 100644
cxt.ckconstraints = NIL;
cxt.fkconstraints = NIL;
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
-index aa8f2da..604a72c 100644
+index 4666fd6..784723d 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -109,6 +109,7 @@
@@ -8236,18 +8030,17 @@ index aa8f2da..604a72c 100644
/* Reload authentication config files too */
if (!load_hba())
-@@ -2180,6 +2190,10 @@ pmdie(SIGNAL_ARGS)
+@@ -2180,6 +2190,9 @@ pmdie(SIGNAL_ARGS)
/* and the walwriter too */
if (WalWriterPID != 0)
signal_child(WalWriterPID, SIGTERM);
+ /* and the security worker too */
+ if (SecWorkerPID != 0)
+ signal_child(SecWorkerPID, SIGTERM);
-+
+
/*
* If we're in recovery, we can't kill the startup process
- * right away, because at present doing so does not release
-@@ -2241,6 +2255,9 @@ pmdie(SIGNAL_ARGS)
+@@ -2242,6 +2255,9 @@ pmdie(SIGNAL_ARGS)
/* and the walwriter too */
if (WalWriterPID != 0)
signal_child(WalWriterPID, SIGTERM);
@@ -8257,7 +8050,7 @@ index aa8f2da..604a72c 100644
pmState = PM_WAIT_BACKENDS;
}
-@@ -2276,6 +2293,8 @@ pmdie(SIGNAL_ARGS)
+@@ -2277,6 +2293,8 @@ pmdie(SIGNAL_ARGS)
signal_child(PgArchPID, SIGQUIT);
if (PgStatPID != 0)
signal_child(PgStatPID, SIGQUIT);
@@ -8266,7 +8059,7 @@ index aa8f2da..604a72c 100644
ExitPostmaster(0);
break;
}
-@@ -2547,6 +2566,16 @@ reaper(SIGNAL_ARGS)
+@@ -2549,6 +2567,16 @@ reaper(SIGNAL_ARGS)
continue;
}
@@ -8283,7 +8076,7 @@ index aa8f2da..604a72c 100644
/*
* Else do standard backend child cleanup.
*/
-@@ -2750,6 +2779,18 @@ HandleChildCrash(int pid, int exitstatus, const char *procname)
+@@ -2765,6 +2793,18 @@ HandleChildCrash(int pid, int exitstatus, const char *procname)
signal_child(AutoVacPID, (SendStop ? SIGSTOP : SIGQUIT));
}
@@ -8302,7 +8095,7 @@ index aa8f2da..604a72c 100644
/*
* Force a power-cycle of the pgarch process too. (This isn't absolutely
* necessary, but it seems like a good idea for robustness, and it
-@@ -2906,7 +2947,8 @@ PostmasterStateMachine(void)
+@@ -2921,7 +2961,8 @@ PostmasterStateMachine(void)
WalReceiverPID == 0 &&
(BgWriterPID == 0 || !FatalError) &&
WalWriterPID == 0 &&
@@ -8313,7 +8106,7 @@ index aa8f2da..604a72c 100644
if (FatalError)
{
diff --git a/src/backend/rewrite/rewriteDefine.c b/src/backend/rewrite/rewriteDefine.c
-index 68be146..6ba1d2f 100644
+index 06469b3..34f8cbe 100644
--- a/src/backend/rewrite/rewriteDefine.c
+++ b/src/backend/rewrite/rewriteDefine.c
@@ -27,6 +27,7 @@
@@ -8335,7 +8128,7 @@ index 68be146..6ba1d2f 100644
* No rule actions that modify OLD or NEW
*/
diff --git a/src/backend/rewrite/rewriteRemove.c b/src/backend/rewrite/rewriteRemove.c
-index c1c5ce9..0f6a446 100644
+index 2bbfc1f..b412ee9 100644
--- a/src/backend/rewrite/rewriteRemove.c
+++ b/src/backend/rewrite/rewriteRemove.c
@@ -22,6 +22,7 @@
@@ -12986,7 +12779,7 @@ index 0000000..3c4891c
+}
diff --git a/src/backend/sepgsql/rowlv.c b/src/backend/sepgsql/rowlv.c
new file mode 100644
-index 0000000..1078777
+index 0000000..892daf9
--- /dev/null
+++ b/src/backend/sepgsql/rowlv.c
@@ -0,0 +1,346 @@
@@ -13094,7 +12887,6 @@ index 0000000..1078777
+ Form_pg_type typForm;
+ sepgsql_sid_t tsid;
+ uint16 tclass;
-+ bool result;
+
+ /* object class? */
+ switch (RelationGetRelid(rel))
@@ -13145,9 +12937,13 @@ index 0000000..1078777
+ case RELKIND_COMPOSITE_TYPE:
+ tclass = SEPG_CLASS_DB_TUPLE;
+ break;
-+ default: /* index, toast */
++ case RELKIND_INDEX:
++ case RELKIND_TOASTVALUE:
+ tclass = SEPG_CLASS_DB_TABLE;
+ break;
++ default:
++ /* orphan attribute? */
++ return !sepgsql_get_enforce();
+ }
+ break;
+
@@ -13172,6 +12968,8 @@ index 0000000..1078777
+ switch (get_rel_relkind(typForm->typrelid))
+ {
+ case RELKIND_RELATION:
++ case RELKIND_INDEX:
++ case RELKIND_TOASTVALUE:
+ tclass = SEPG_CLASS_DB_TABLE;
+ break;
+ case RELKIND_SEQUENCE:
@@ -13183,9 +12981,9 @@ index 0000000..1078777
+ case RELKIND_COMPOSITE_TYPE:
+ tclass = SEPG_CLASS_DB_TUPLE;
+ break;
-+ default: /* index, toast */
-+ tclass = SEPG_CLASS_DB_TABLE;
-+ break;
++ default:
++ /* orphan type? */
++ return !sepgsql_get_enforce();
+ }
+ }
+ break;
@@ -13199,12 +12997,7 @@ index 0000000..1078777
+ tsid.relid = RelationGetRelid(rel);
+ tsid.secid = HeapTupleGetSecid(tuple);
+
-+ result = sepgsql_client_perms(tsid, tclass, required, NULL, abort);
-+
-+ if (!result)
-+ elog(NOTICE, "denied: oid=%u tsid(relid=%u, secid=%u) label=%s tclass=%d required=%u", HeapTupleGetOid(tuple), tsid.relid, tsid.secid, seclabelRawOutput(tsid.relid, tsid.secid), tclass, required);
-+
-+ return result;
++ return sepgsql_client_perms(tsid, tclass, required, NULL, abort);
+}
+#endif
+
@@ -15225,7 +15018,7 @@ index 0000000..8cd65ae
+#endif
+}
diff --git a/src/backend/storage/large_object/inv_api.c b/src/backend/storage/large_object/inv_api.c
-index ca48cdd..bb0688f 100644
+index 36da56d..6240a62 100644
--- a/src/backend/storage/large_object/inv_api.c
+++ b/src/backend/storage/large_object/inv_api.c
@@ -197,14 +197,14 @@ getbytealen(bytea *data)
@@ -15246,7 +15039,7 @@ index ca48cdd..bb0688f 100644
/*
* dependency on the owner of largeobject
diff --git a/src/backend/tcop/fastpath.c b/src/backend/tcop/fastpath.c
-index 575fa86..eb2b5e8 100644
+index 5870081..7ae10b3 100644
--- a/src/backend/tcop/fastpath.c
+++ b/src/backend/tcop/fastpath.c
@@ -26,6 +26,7 @@
@@ -15257,7 +15050,7 @@ index 575fa86..eb2b5e8 100644
#include "tcop/fastpath.h"
#include "tcop/tcopprot.h"
#include "utils/acl.h"
-@@ -347,6 +348,10 @@ HandleFunctionRequest(StringInfo msgBuf)
+@@ -348,6 +349,10 @@ HandleFunctionRequest(StringInfo msgBuf)
aclcheck_error(aclresult, ACL_KIND_PROC,
get_func_name(fid));
@@ -15266,10 +15059,10 @@ index 575fa86..eb2b5e8 100644
+ sepgsql_proc_execute(fid);
+
/*
- * Prepare function call info block and insert arguments.
- */
+ * Restrict access to pg_get_expr(). This reflects the hack in
+ * transformFuncCall() in parse_expr.c, see comments there for an
diff --git a/src/backend/tcop/pquery.c b/src/backend/tcop/pquery.c
-index 8ad4915..54961d8 100644
+index d60dc49..0ef21eb 100644
--- a/src/backend/tcop/pquery.c
+++ b/src/backend/tcop/pquery.c
@@ -575,7 +575,7 @@ PortalStart(Portal portal, ParamListInfo params, Snapshot snapshot)
@@ -15282,7 +15075,7 @@ index 8ad4915..54961d8 100644
/*
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
-index 8960246..e8f8ea3 100644
+index ec36644..a25bd00 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -165,6 +165,7 @@ check_xact_readonly(Node *parsetree)
@@ -15293,7 +15086,7 @@ index 8960246..e8f8ea3 100644
case T_AlterSeqStmt:
case T_AlterTableStmt:
case T_RenameStmt:
-@@ -696,6 +697,10 @@ standard_ProcessUtility(Node *parsetree,
+@@ -697,6 +698,10 @@ standard_ProcessUtility(Node *parsetree,
ExecAlterOwnerStmt((AlterOwnerStmt *) parsetree);
break;
@@ -15304,7 +15097,7 @@ index 8960246..e8f8ea3 100644
case T_AlterTableStmt:
{
List *stmts;
-@@ -1760,6 +1765,46 @@ CreateCommandTag(Node *parsetree)
+@@ -1761,6 +1766,46 @@ CreateCommandTag(Node *parsetree)
}
break;
@@ -15351,7 +15144,7 @@ index 8960246..e8f8ea3 100644
case T_AlterTableStmt:
switch (((AlterTableStmt *) parsetree)->relkind)
{
-@@ -2352,6 +2397,10 @@ GetCommandLogLevel(Node *parsetree)
+@@ -2353,6 +2398,10 @@ GetCommandLogLevel(Node *parsetree)
lev = LOGSTMT_DDL;
break;
@@ -15363,7 +15156,7 @@ index 8960246..e8f8ea3 100644
lev = LOGSTMT_DDL;
break;
diff --git a/src/backend/tsearch/wparser.c b/src/backend/tsearch/wparser.c
-index 0fed35c..ca9e9d1 100644
+index d74256f..f876951 100644
--- a/src/backend/tsearch/wparser.c
+++ b/src/backend/tsearch/wparser.c
@@ -59,7 +59,7 @@ tt_setup_firstcall(FuncCallContext *funcctx, Oid prsid)
@@ -15385,7 +15178,7 @@ index 0fed35c..ca9e9d1 100644
INT4OID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 2, "token",
diff --git a/src/backend/utils/adt/acl.c b/src/backend/utils/adt/acl.c
-index faad11e..53e6944 100644
+index 79ca6c1..70fc9fb 100644
--- a/src/backend/utils/adt/acl.c
+++ b/src/backend/utils/adt/acl.c
@@ -1695,7 +1695,7 @@ aclexplode(PG_FUNCTION_ARGS)
@@ -15398,10 +15191,10 @@ index faad11e..53e6944 100644
OIDOID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 2, "grantee",
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
-index ed81ced..f3d4b99 100644
+index 8e342a9..2cbd1d9 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
-@@ -4193,7 +4193,7 @@ pg_timezone_abbrevs(PG_FUNCTION_ARGS)
+@@ -4200,7 +4200,7 @@ pg_timezone_abbrevs(PG_FUNCTION_ARGS)
* build tupdesc for result tuples. This must match this function's
* pg_proc entry!
*/
@@ -15410,7 +15203,7 @@ index ed81ced..f3d4b99 100644
TupleDescInitEntry(tupdesc, (AttrNumber) 1, "abbrev",
TEXTOID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 2, "utc_offset",
-@@ -4286,7 +4286,7 @@ pg_timezone_names(PG_FUNCTION_ARGS)
+@@ -4293,7 +4293,7 @@ pg_timezone_names(PG_FUNCTION_ARGS)
* build tupdesc for result tuples. This must match this function's
* pg_proc entry!
*/
@@ -15420,7 +15213,7 @@ index ed81ced..f3d4b99 100644
TEXTOID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 2, "abbrev",
diff --git a/src/backend/utils/adt/dbsize.c b/src/backend/utils/adt/dbsize.c
-index a4e0252..36d07b7 100644
+index 8b5def4..9f79a5c 100644
--- a/src/backend/utils/adt/dbsize.c
+++ b/src/backend/utils/adt/dbsize.c
@@ -21,6 +21,7 @@
@@ -15451,7 +15244,7 @@ index a4e0252..36d07b7 100644
if (tblspcOid == DEFAULTTABLESPACE_OID)
snprintf(tblspcPath, MAXPGPATH, "base");
diff --git a/src/backend/utils/adt/genfile.c b/src/backend/utils/adt/genfile.c
-index e074b79..8bb707f 100644
+index 863727d..d4a5220 100644
--- a/src/backend/utils/adt/genfile.c
+++ b/src/backend/utils/adt/genfile.c
@@ -25,6 +25,7 @@
@@ -15499,7 +15292,7 @@ index e074b79..8bb707f 100644
if (!fctx->dirdesc)
diff --git a/src/backend/utils/adt/lockfuncs.c b/src/backend/utils/adt/lockfuncs.c
-index 07e6aab..e5c8182 100644
+index c72c4c1..0d23605 100644
--- a/src/backend/utils/adt/lockfuncs.c
+++ b/src/backend/utils/adt/lockfuncs.c
@@ -85,7 +85,7 @@ pg_lock_status(PG_FUNCTION_ARGS)
@@ -15512,7 +15305,7 @@ index 07e6aab..e5c8182 100644
TEXTOID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 2, "database",
diff --git a/src/backend/utils/adt/misc.c b/src/backend/utils/adt/misc.c
-index 11342b2..0ddf907 100644
+index 66c8598..c532dea 100644
--- a/src/backend/utils/adt/misc.c
+++ b/src/backend/utils/adt/misc.c
@@ -322,7 +322,7 @@ pg_get_keywords(PG_FUNCTION_ARGS)
@@ -15525,7 +15318,7 @@ index 11342b2..0ddf907 100644
TEXTOID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 2, "catcode",
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c
-index 8379407..d44655b 100644
+index 8b13c8a..09bb38e 100644
--- a/src/backend/utils/adt/pgstatfuncs.c
+++ b/src/backend/utils/adt/pgstatfuncs.c
@@ -419,7 +419,7 @@ pg_stat_get_activity(PG_FUNCTION_ARGS)
@@ -15538,7 +15331,7 @@ index 8379407..d44655b 100644
TupleDescInitEntry(tupdesc, (AttrNumber) 2, "procpid", INT4OID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 3, "usesysid", OIDOID, -1, 0);
diff --git a/src/backend/utils/adt/ri_triggers.c b/src/backend/utils/adt/ri_triggers.c
-index 9db070d..6881976 100644
+index 2d0ab44..87eb953 100644
--- a/src/backend/utils/adt/ri_triggers.c
+++ b/src/backend/utils/adt/ri_triggers.c
@@ -30,6 +30,7 @@
@@ -15615,7 +15408,7 @@ index 9db070d..6881976 100644
if (spi_result < 0)
elog(ERROR, "SPI_execute_snapshot returned %d", spi_result);
diff --git a/src/backend/utils/adt/tid.c b/src/backend/utils/adt/tid.c
-index c837e67..1bf4eb8 100644
+index 8c18a26..843d702 100644
--- a/src/backend/utils/adt/tid.c
+++ b/src/backend/utils/adt/tid.c
@@ -27,6 +27,7 @@
@@ -15645,7 +15438,7 @@ index c837e67..1bf4eb8 100644
if (rel->rd_rel->relkind == RELKIND_VIEW)
return currtid_for_view(rel, tid);
diff --git a/src/backend/utils/adt/trigfuncs.c b/src/backend/utils/adt/trigfuncs.c
-index 70246fb..b996537 100644
+index d831b60..badc1f5 100644
--- a/src/backend/utils/adt/trigfuncs.c
+++ b/src/backend/utils/adt/trigfuncs.c
@@ -76,6 +76,10 @@ suppress_redundant_updates_trigger(PG_FUNCTION_ARGS)
@@ -15660,7 +15453,7 @@ index 70246fb..b996537 100644
if (newtuple->t_len == oldtuple->t_len &&
newheader->t_hoff == oldheader->t_hoff &&
diff --git a/src/backend/utils/adt/tsvector_op.c b/src/backend/utils/adt/tsvector_op.c
-index 78f08f4..4a44810 100644
+index 94c242d..b44cb63 100644
--- a/src/backend/utils/adt/tsvector_op.c
+++ b/src/backend/utils/adt/tsvector_op.c
@@ -975,7 +975,7 @@ ts_setup_firstcall(FunctionCallInfo fcinfo, FuncCallContext *funcctx,
@@ -15673,10 +15466,10 @@ index 78f08f4..4a44810 100644
TEXTOID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 2, "ndoc",
diff --git a/src/backend/utils/cache/plancache.c b/src/backend/utils/cache/plancache.c
-index 88d8d8b..281acb0 100644
+index 06e2549..56c5df9 100644
--- a/src/backend/utils/cache/plancache.c
+++ b/src/backend/utils/cache/plancache.c
-@@ -924,12 +924,12 @@ PlanCacheComputeResultDesc(List *stmt_list)
+@@ -926,12 +926,12 @@ PlanCacheComputeResultDesc(List *stmt_list)
if (IsA(node, Query))
{
query = (Query *) node;
@@ -15691,7 +15484,7 @@ index 88d8d8b..281acb0 100644
}
/* other cases shouldn't happen, but return NULL */
break;
-@@ -940,13 +940,13 @@ PlanCacheComputeResultDesc(List *stmt_list)
+@@ -942,13 +942,13 @@ PlanCacheComputeResultDesc(List *stmt_list)
{
query = (Query *) node;
Assert(query->returningList);
@@ -15708,10 +15501,10 @@ index 88d8d8b..281acb0 100644
/* other cases shouldn't happen, but return NULL */
break;
diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c
-index d462510..c704bc9 100644
+index 510f077..430d89e 100644
--- a/src/backend/utils/cache/relcache.c
+++ b/src/backend/utils/cache/relcache.c
-@@ -216,7 +216,7 @@ static void write_relcache_init_file(bool shared);
+@@ -215,7 +215,7 @@ static void write_relcache_init_file(bool shared);
static void write_item(const void *data, Size len, FILE *fp);
static void formrdesc(const char *relationName, Oid relationReltype,
@@ -15720,7 +15513,7 @@ index d462510..c704bc9 100644
int natts, const FormData_pg_attribute *attrs);
static HeapTuple ScanPgRelation(Oid targetRelId, bool indexOK);
-@@ -355,7 +355,8 @@ AllocateRelationDesc(Form_pg_class relp)
+@@ -354,7 +354,8 @@ AllocateRelationDesc(Form_pg_class relp)
/* and allocate attribute tuple form storage */
relation->rd_att = CreateTemplateTupleDesc(relationForm->relnatts,
@@ -15730,7 +15523,7 @@ index d462510..c704bc9 100644
/* which we mark as a reference-counted tupdesc */
relation->rd_att->tdrefcount = 1;
-@@ -437,6 +438,7 @@ RelationBuildTupleDesc(Relation relation)
+@@ -436,6 +437,7 @@ RelationBuildTupleDesc(Relation relation)
relation->rd_att->tdtypeid = relation->rd_rel->reltype;
relation->rd_att->tdtypmod = -1; /* unnecessary, but... */
relation->rd_att->tdhasoid = relation->rd_rel->relhasoids;
@@ -15738,7 +15531,7 @@ index d462510..c704bc9 100644
constr = (TupleConstr *) MemoryContextAlloc(CacheMemoryContext,
sizeof(TupleConstr));
-@@ -1396,7 +1398,7 @@ LookupOpclassInfo(Oid operatorClassOid,
+@@ -1395,7 +1397,7 @@ LookupOpclassInfo(Oid operatorClassOid,
*/
static void
formrdesc(const char *relationName, Oid relationReltype,
@@ -15747,7 +15540,7 @@ index d462510..c704bc9 100644
int natts, const FormData_pg_attribute *attrs)
{
Relation relation;
-@@ -1459,6 +1461,7 @@ formrdesc(const char *relationName, Oid relationReltype,
+@@ -1458,6 +1460,7 @@ formrdesc(const char *relationName, Oid relationReltype,
relation->rd_rel->reltuples = 1;
relation->rd_rel->relkind = RELKIND_RELATION;
relation->rd_rel->relhasoids = hasoids;
@@ -15755,7 +15548,7 @@ index d462510..c704bc9 100644
relation->rd_rel->relnatts = (int16) natts;
/*
-@@ -1468,7 +1471,7 @@ formrdesc(const char *relationName, Oid relationReltype,
+@@ -1467,7 +1470,7 @@ formrdesc(const char *relationName, Oid relationReltype,
* because it will never be replaced. The data comes from
* src/include/catalog/ headers via genbki.pl.
*/
@@ -15764,7 +15557,7 @@ index d462510..c704bc9 100644
relation->rd_att->tdrefcount = 1; /* mark as refcounted */
relation->rd_att->tdtypeid = relationReltype;
-@@ -2551,6 +2554,7 @@ RelationBuildLocalRelation(const char *relname,
+@@ -2542,6 +2545,7 @@ RelationBuildLocalRelation(const char *relname,
rel->rd_rel->relkind = RELKIND_UNCATALOGED;
rel->rd_rel->relhasoids = rel->rd_att->tdhasoid;
@@ -15772,7 +15565,7 @@ index d462510..c704bc9 100644
rel->rd_rel->relnatts = natts;
rel->rd_rel->reltype = InvalidOid;
/* needed when bootstrapping: */
-@@ -2793,11 +2797,11 @@ RelationCacheInitializePhase2(void)
+@@ -2784,11 +2788,11 @@ RelationCacheInitializePhase2(void)
if (!load_relcache_init_file(true))
{
formrdesc("pg_database", DatabaseRelation_Rowtype_Id, true,
@@ -15787,7 +15580,7 @@ index d462510..c704bc9 100644
#define NUM_CRITICAL_SHARED_RELS 3 /* fix if you change list above */
}
-@@ -2848,13 +2852,13 @@ RelationCacheInitializePhase3(void)
+@@ -2839,13 +2843,13 @@ RelationCacheInitializePhase3(void)
needNewCacheFile = true;
formrdesc("pg_class", RelationRelation_Rowtype_Id, false,
@@ -15805,7 +15598,7 @@ index d462510..c704bc9 100644
#define NUM_CRITICAL_LOCAL_RELS 4 /* fix if you change list above */
}
-@@ -3007,6 +3011,7 @@ RelationCacheInitializePhase3(void)
+@@ -2998,6 +3002,7 @@ RelationCacheInitializePhase3(void)
Assert(relation->rd_att->tdtypeid == relp->reltype);
Assert(relation->rd_att->tdtypmod == -1);
Assert(relation->rd_att->tdhasoid == relp->relhasoids);
@@ -15813,7 +15606,7 @@ index d462510..c704bc9 100644
ReleaseSysCache(htup);
-@@ -3117,7 +3122,7 @@ load_critical_index(Oid indexoid, Oid heapoid)
+@@ -3108,7 +3113,7 @@ load_critical_index(Oid indexoid, Oid heapoid)
*/
static TupleDesc
BuildHardcodedDescriptor(int natts, const FormData_pg_attribute *attrs,
@@ -15822,7 +15615,7 @@ index d462510..c704bc9 100644
{
TupleDesc result;
MemoryContext oldcxt;
-@@ -3125,7 +3130,7 @@ BuildHardcodedDescriptor(int natts, const FormData_pg_attribute *attrs,
+@@ -3116,7 +3121,7 @@ BuildHardcodedDescriptor(int natts, const FormData_pg_attribute *attrs,
oldcxt = MemoryContextSwitchTo(CacheMemoryContext);
@@ -15831,7 +15624,7 @@ index d462510..c704bc9 100644
result->tdtypeid = RECORDOID; /* not right, but we don't care */
result->tdtypmod = -1;
-@@ -3155,7 +3160,7 @@ GetPgClassDescriptor(void)
+@@ -3146,7 +3151,7 @@ GetPgClassDescriptor(void)
if (pgclassdesc == NULL)
pgclassdesc = BuildHardcodedDescriptor(Natts_pg_class,
Desc_pg_class,
@@ -15840,7 +15633,7 @@ index d462510..c704bc9 100644
return pgclassdesc;
}
-@@ -3169,7 +3174,7 @@ GetPgIndexDescriptor(void)
+@@ -3160,7 +3165,7 @@ GetPgIndexDescriptor(void)
if (pgindexdesc == NULL)
pgindexdesc = BuildHardcodedDescriptor(Natts_pg_index,
Desc_pg_index,
@@ -15849,7 +15642,7 @@ index d462510..c704bc9 100644
return pgindexdesc;
}
-@@ -3985,7 +3990,8 @@ load_relcache_init_file(bool shared)
+@@ -3976,7 +3981,8 @@ load_relcache_init_file(bool shared)
/* initialize attribute tuple forms */
rel->rd_att = CreateTemplateTupleDesc(relform->relnatts,
@@ -15860,7 +15653,7 @@ index d462510..c704bc9 100644
rel->rd_att->tdtypeid = relform->reltype;
diff --git a/src/backend/utils/cache/syscache.c b/src/backend/utils/cache/syscache.c
-index 61b06ac..b08654b 100644
+index 0224cfb..3137199 100644
--- a/src/backend/utils/cache/syscache.c
+++ b/src/backend/utils/cache/syscache.c
@@ -895,6 +895,30 @@ GetSysCacheOid(int cacheId,
@@ -15895,7 +15688,7 @@ index 61b06ac..b08654b 100644
/*
* SearchSysCacheAttName
diff --git a/src/backend/utils/fmgr/fmgr.c b/src/backend/utils/fmgr/fmgr.c
-index c3c0440..fb5b762 100644
+index 04f91f1..6f82199 100644
--- a/src/backend/utils/fmgr/fmgr.c
+++ b/src/backend/utils/fmgr/fmgr.c
@@ -24,6 +24,7 @@
@@ -15974,7 +15767,7 @@ index c3c0440..fb5b762 100644
return result;
}
diff --git a/src/backend/utils/fmgr/funcapi.c b/src/backend/utils/fmgr/funcapi.c
-index 382008c..e6eba47 100644
+index d946aab..f7581a7 100644
--- a/src/backend/utils/fmgr/funcapi.c
+++ b/src/backend/utils/fmgr/funcapi.c
@@ -1105,7 +1105,7 @@ build_function_result_tupdesc_d(Datum proallargtypes,
@@ -15996,7 +15789,7 @@ index 382008c..e6eba47 100644
(AttrNumber) 1,
attname,
diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c
-index 179d009..4bd7314 100644
+index fc97683..1fcb33f 100644
--- a/src/backend/utils/init/postinit.c
+++ b/src/backend/utils/init/postinit.c
@@ -37,6 +37,7 @@
@@ -16007,7 +15800,7 @@ index 179d009..4bd7314 100644
#include "storage/bufmgr.h"
#include "storage/fd.h"
#include "storage/ipc.h"
-@@ -304,6 +305,9 @@ CheckMyDatabase(const char *name, bool am_superuser)
+@@ -306,6 +307,9 @@ CheckMyDatabase(const char *name, bool am_superuser)
errmsg("permission denied for database \"%s\"", name),
errdetail("User does not have CONNECT privilege.")));
@@ -16017,7 +15810,7 @@ index 179d009..4bd7314 100644
/*
* Check connection limit for this database.
*
-@@ -800,6 +804,9 @@ InitPostgres(const char *in_dbname, Oid dboid, const char *username,
+@@ -817,6 +821,9 @@ InitPostgres(const char *in_dbname, Oid dboid, const char *username,
/* set up ACL framework (so CheckMyDatabase can check permissions) */
initialize_acl();
@@ -16028,7 +15821,7 @@ index 179d009..4bd7314 100644
* Re-read the pg_database row for our database, check permissions and set
* up database-specific GUC settings. We can't do this until all the
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
-index 920daeb..44fd3a9 100644
+index 4e55b16..a9f9f7e 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -31,6 +31,7 @@
@@ -16045,9 +15838,9 @@ index 920daeb..44fd3a9 100644
#include "replication/walsender.h"
+#include "sepgsql/sepgsql.h"
#include "storage/bufmgr.h"
+ #include "storage/standby.h"
#include "storage/fd.h"
- #include "tcop/tcopprot.h"
-@@ -337,6 +339,18 @@ static const struct config_enum_entry constraint_exclusion_options[] = {
+@@ -335,6 +337,18 @@ static const struct config_enum_entry constraint_exclusion_options[] = {
{NULL, 0, false}
};
@@ -16066,7 +15859,7 @@ index 920daeb..44fd3a9 100644
/*
* Options for enum values stored in other modules
*/
-@@ -366,6 +380,7 @@ bool log_btree_build_stats = false;
+@@ -364,6 +378,7 @@ bool log_btree_build_stats = false;
bool check_function_bodies = true;
bool default_with_oids = false;
@@ -16074,7 +15867,7 @@ index 920daeb..44fd3a9 100644
bool SQL_inheritance = true;
bool Password_encryption = true;
-@@ -1094,6 +1109,14 @@ static struct config_bool ConfigureNamesBool[] =
+@@ -1103,6 +1118,14 @@ static struct config_bool ConfigureNamesBool[] =
false, NULL, NULL
},
{
@@ -16089,7 +15882,7 @@ index 920daeb..44fd3a9 100644
{"logging_collector", PGC_POSTMASTER, LOGGING_WHERE,
gettext_noop("Start a subprocess to capture stderr output and/or csvlogs into log files."),
NULL
-@@ -1261,6 +1284,36 @@ static struct config_bool ConfigureNamesBool[] =
+@@ -1270,6 +1293,36 @@ static struct config_bool ConfigureNamesBool[] =
false, NULL, NULL
},
@@ -16126,7 +15919,7 @@ index 920daeb..44fd3a9 100644
/* End-of-list marker */
{
{NULL, 0, 0, NULL, NULL}, NULL, false, NULL, NULL
-@@ -2820,7 +2873,16 @@ static struct config_enum ConfigureNamesEnum[] =
+@@ -2844,7 +2897,16 @@ static struct config_enum ConfigureNamesEnum[] =
&xmloption,
XMLOPTION_CONTENT, xmloption_options, NULL, NULL
},
@@ -16144,7 +15937,7 @@ index 920daeb..44fd3a9 100644
/* End-of-list marker */
{
-@@ -6113,7 +6175,7 @@ GetPGVariableResultDesc(const char *name)
+@@ -6139,7 +6201,7 @@ GetPGVariableResultDesc(const char *name)
if (guc_name_compare(name, "all") == 0)
{
/* need a tuple descriptor representing three TEXT columns */
@@ -16153,7 +15946,7 @@ index 920daeb..44fd3a9 100644
TupleDescInitEntry(tupdesc, (AttrNumber) 1, "name",
TEXTOID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 2, "setting",
-@@ -6129,7 +6191,7 @@ GetPGVariableResultDesc(const char *name)
+@@ -6155,7 +6217,7 @@ GetPGVariableResultDesc(const char *name)
(void) GetConfigOptionByName(name, &varname);
/* need a tuple descriptor representing a single TEXT column */
@@ -16162,7 +15955,7 @@ index 920daeb..44fd3a9 100644
TupleDescInitEntry(tupdesc, (AttrNumber) 1, varname,
TEXTOID, -1, 0);
}
-@@ -6152,7 +6214,7 @@ ShowGUCConfigOption(const char *name, DestReceiver *dest)
+@@ -6178,7 +6240,7 @@ ShowGUCConfigOption(const char *name, DestReceiver *dest)
value = GetConfigOptionByName(name, &varname);
/* need a tuple descriptor representing a single TEXT column */
@@ -16171,7 +15964,7 @@ index 920daeb..44fd3a9 100644
TupleDescInitEntry(tupdesc, (AttrNumber) 1, varname,
TEXTOID, -1, 0);
-@@ -6179,7 +6241,7 @@ ShowAllGUCConfig(DestReceiver *dest)
+@@ -6205,7 +6267,7 @@ ShowAllGUCConfig(DestReceiver *dest)
bool isnull[3] = {false, false, false};
/* need a tuple descriptor representing three TEXT columns */
@@ -16180,7 +15973,7 @@ index 920daeb..44fd3a9 100644
TupleDescInitEntry(tupdesc, (AttrNumber) 1, "name",
TEXTOID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 2, "setting",
-@@ -6574,7 +6636,7 @@ show_all_settings(PG_FUNCTION_ARGS)
+@@ -6600,7 +6662,7 @@ show_all_settings(PG_FUNCTION_ARGS)
* need a tuple descriptor representing NUM_PG_SETTINGS_ATTS columns
* of the appropriate types
*/
@@ -16190,7 +15983,7 @@ index 920daeb..44fd3a9 100644
TEXTOID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 2, "setting",
diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample
-index 2ed8412..10f8947 100644
+index a3b1457..b78c6d9 100644
--- a/src/backend/utils/misc/postgresql.conf.sample
+++ b/src/backend/utils/misc/postgresql.conf.sample
@@ -76,6 +76,8 @@
@@ -16203,10 +15996,10 @@ index 2ed8412..10f8947 100644
#ssl = off # (change requires restart)
#ssl_ciphers = 'ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH' # allowed SSL ciphers
diff --git a/src/backend/utils/mmgr/portalmem.c b/src/backend/utils/mmgr/portalmem.c
-index ac62d45..f05a094 100644
+index 19c594d..b80b6ac 100644
--- a/src/backend/utils/mmgr/portalmem.c
+++ b/src/backend/utils/mmgr/portalmem.c
-@@ -894,7 +894,7 @@ pg_cursor(PG_FUNCTION_ARGS)
+@@ -949,7 +949,7 @@ pg_cursor(PG_FUNCTION_ARGS)
* build tupdesc for result tuples. This must match the definition of the
* pg_cursors view in system_views.sql
*/
@@ -16216,7 +16009,7 @@ index ac62d45..f05a094 100644
TEXTOID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 2, "statement",
diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c
-index f40ad87..497bdf0 100644
+index 0aee70d..ceb9a87 100644
--- a/src/bin/initdb/initdb.c
+++ b/src/bin/initdb/initdb.c
@@ -87,6 +87,7 @@ static bool debug = false;
@@ -16268,7 +16061,7 @@ index f40ad87..497bdf0 100644
show_setting = true;
break;
diff --git a/src/bin/pg_dump/pg_backup.h b/src/bin/pg_dump/pg_backup.h
-index 14fe652..40b7b40 100644
+index 5a73779..67fce14 100644
--- a/src/bin/pg_dump/pg_backup.h
+++ b/src/bin/pg_dump/pg_backup.h
@@ -103,6 +103,7 @@ typedef struct _restoreOptions
@@ -16289,7 +16082,7 @@ index 14fe652..40b7b40 100644
const char *defn,
const char *dropStmt, const char *copyStmt,
diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c
-index 6bbe2de..9da50b0 100644
+index be5339e..8352c93 100644
--- a/src/bin/pg_dump/pg_backup_archiver.c
+++ b/src/bin/pg_dump/pg_backup_archiver.c
@@ -540,6 +540,8 @@ restore_toc_entry(ArchiveHandle *AH, TocEntry *te,
@@ -16345,7 +16138,7 @@ index 6bbe2de..9da50b0 100644
newToc->desc = strdup(desc);
newToc->defn = strdup(defn);
newToc->dropStmt = strdup(dropStmt);
-@@ -2027,6 +2043,7 @@ WriteToc(ArchiveHandle *AH)
+@@ -2046,6 +2062,7 @@ WriteToc(ArchiveHandle *AH)
WriteStr(AH, te->tablespace);
WriteStr(AH, te->owner);
WriteStr(AH, te->withOids ? "true" : "false");
@@ -16353,7 +16146,7 @@ index 6bbe2de..9da50b0 100644
/* Dump list of dependencies */
for (i = 0; i < te->nDeps; i++)
-@@ -2138,6 +2155,16 @@ ReadToc(ArchiveHandle *AH)
+@@ -2157,6 +2174,16 @@ ReadToc(ArchiveHandle *AH)
else
te->withOids = true;
@@ -16370,7 +16163,7 @@ index 6bbe2de..9da50b0 100644
/* Read TOC entry dependencies */
if (AH->version >= K_VERS_1_5)
{
-@@ -2256,6 +2283,9 @@ _tocEntryRequired(TocEntry *te, RestoreOptions *ropt, bool include_acls)
+@@ -2275,6 +2302,9 @@ _tocEntryRequired(TocEntry *te, RestoreOptions *ropt, bool include_acls)
if ((!include_acls || ropt->aclsSkip) && _tocEntryIsACL(te))
return 0;
@@ -16378,9 +16171,9 @@ index 6bbe2de..9da50b0 100644
+ return 0;
+
/* Ignore DATABASE entry unless we should create it */
- if (!ropt->create && strcmp(te->desc, "DATABASE") == 0)
+ if (!ropt->createDB && strcmp(te->desc, "DATABASE") == 0)
return 0;
-@@ -2322,6 +2352,8 @@ _tocEntryRequired(TocEntry *te, RestoreOptions *ropt, bool include_acls)
+@@ -2341,6 +2371,8 @@ _tocEntryRequired(TocEntry *te, RestoreOptions *ropt, bool include_acls)
(strcmp(te->desc, "ACL") == 0 &&
strncmp(te->tag, "LARGE OBJECT ", 13) == 0) ||
(strcmp(te->desc, "COMMENT") == 0 &&
@@ -16389,7 +16182,7 @@ index 6bbe2de..9da50b0 100644
strncmp(te->tag, "LARGE OBJECT ", 13) == 0))
res = res & REQ_DATA;
else
-@@ -2473,6 +2505,36 @@ _doSetWithOids(ArchiveHandle *AH, const bool withOids)
+@@ -2492,6 +2524,36 @@ _doSetWithOids(ArchiveHandle *AH, const bool withOids)
destroyPQExpBuffer(cmd);
}
@@ -16426,7 +16219,7 @@ index 6bbe2de..9da50b0 100644
/*
* Issue the commands to connect to the specified database.
-@@ -2571,6 +2633,18 @@ _setWithOids(ArchiveHandle *AH, TocEntry *te)
+@@ -2590,6 +2652,18 @@ _setWithOids(ArchiveHandle *AH, TocEntry *te)
}
}
@@ -16445,7 +16238,7 @@ index 6bbe2de..9da50b0 100644
/*
* Issue the commands to select the specified schema as the current schema
-@@ -2808,9 +2882,12 @@ _printTocEntry(ArchiveHandle *AH, TocEntry *te, RestoreOptions *ropt, bool isDat
+@@ -2827,9 +2901,12 @@ _printTocEntry(ArchiveHandle *AH, TocEntry *te, RestoreOptions *ropt, bool isDat
_selectOutputSchema(AH, te->namespace);
_selectTablespace(AH, te->tablespace);
@@ -16460,7 +16253,7 @@ index 6bbe2de..9da50b0 100644
/* Emit header comment for item */
if (!AH->noTocComments)
diff --git a/src/bin/pg_dump/pg_backup_archiver.h b/src/bin/pg_dump/pg_backup_archiver.h
-index 2e944c1..67f62ac 100644
+index 0a135ee..27b2ef5 100644
--- a/src/bin/pg_dump/pg_backup_archiver.h
+++ b/src/bin/pg_dump/pg_backup_archiver.h
@@ -63,7 +63,7 @@ typedef z_stream *z_streamp;
@@ -16502,7 +16295,7 @@ index 2e944c1..67f62ac 100644
char *defn;
char *dropStmt;
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
-index 2431d71..e7ef296 100644
+index 7a06f9b..f7fa80a 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -125,7 +125,7 @@ static int binary_upgrade = 0;
@@ -16552,7 +16345,7 @@ index 2431d71..e7ef296 100644
else
{
fprintf(stderr,
-@@ -515,6 +523,10 @@ main(int argc, char **argv)
+@@ -516,6 +524,10 @@ main(int argc, char **argv)
exit(1);
}
@@ -16563,7 +16356,7 @@ index 2431d71..e7ef296 100644
/* open the output file */
if (pg_strcasecmp(format, "a") == 0 || pg_strcasecmp(format, "append") == 0)
{
-@@ -833,6 +845,7 @@ help(const char *progname)
+@@ -834,6 +846,7 @@ help(const char *progname)
printf(_(" --use-set-session-authorization\n"
" use SET SESSION AUTHORIZATION commands instead of\n"
" ALTER OWNER commands to set ownership\n"));
@@ -16571,7 +16364,7 @@ index 2431d71..e7ef296 100644
printf(_("\nConnection options:\n"));
printf(_(" -h, --host=HOSTNAME database server host or socket directory\n"));
-@@ -1127,7 +1140,7 @@ dumpTableData_copy(Archive *fout, void *dcontext)
+@@ -1128,7 +1141,7 @@ dumpTableData_copy(Archive *fout, void *dcontext)
* cases involving ADD COLUMN and inheritance.)
*/
if (g_fout->remoteVersion >= 70300)
@@ -16580,7 +16373,7 @@ index 2431d71..e7ef296 100644
else
column_list = ""; /* can't select columns in COPY */
-@@ -1251,14 +1264,16 @@ dumpTableData_insert(Archive *fout, void *dcontext)
+@@ -1252,14 +1265,16 @@ dumpTableData_insert(Archive *fout, void *dcontext)
if (fout->remoteVersion >= 70100)
{
appendPQExpBuffer(q, "DECLARE _pg_dump_cursor CURSOR FOR "
@@ -16599,7 +16392,7 @@ index 2431d71..e7ef296 100644
fmtQualifiedId(tbinfo->dobj.namespace->dobj.name,
classname));
}
-@@ -1398,7 +1413,7 @@ dumpTableData(Archive *fout, TableDataInfo *tdinfo)
+@@ -1399,7 +1414,7 @@ dumpTableData(Archive *fout, TableDataInfo *tdinfo)
appendPQExpBuffer(copyBuf, "COPY %s ",
fmtId(tbinfo->dobj.name));
appendPQExpBuffer(copyBuf, "%s %sFROM stdin;\n",
@@ -16608,7 +16401,7 @@ index 2431d71..e7ef296 100644
(tdinfo->oids && tbinfo->hasoids) ? "WITH OIDS " : "");
copyStmt = copyBuf->data;
}
-@@ -1412,7 +1427,7 @@ dumpTableData(Archive *fout, TableDataInfo *tdinfo)
+@@ -1413,7 +1428,7 @@ dumpTableData(Archive *fout, TableDataInfo *tdinfo)
ArchiveEntry(fout, tdinfo->dobj.catId, tdinfo->dobj.dumpId,
tbinfo->dobj.name, tbinfo->dobj.namespace->dobj.name,
NULL, tbinfo->rolname,
@@ -16617,7 +16410,7 @@ index 2431d71..e7ef296 100644
"", "", copyStmt,
tdinfo->dobj.dependencies, tdinfo->dobj.nDeps,
dumpFn, tdinfo);
-@@ -1457,6 +1472,7 @@ getTableData(TableInfo *tblinfo, int numTables, bool oids)
+@@ -1458,6 +1473,7 @@ getTableData(TableInfo *tblinfo, int numTables, bool oids)
tdinfo->dobj.namespace = tblinfo[i].dobj.namespace;
tdinfo->tdtable = &(tblinfo[i]);
tdinfo->oids = oids;
@@ -16625,7 +16418,7 @@ index 2431d71..e7ef296 100644
addObjectDependency(&tdinfo->dobj, tblinfo[i].dobj.dumpId);
tblinfo[i].dataObj = tdinfo;
-@@ -1780,6 +1796,7 @@ dumpDatabase(Archive *AH)
+@@ -1781,6 +1797,7 @@ dumpDatabase(Archive *AH)
NULL, /* Tablespace */
dba, /* Owner */
false, /* with oids */
@@ -16633,7 +16426,7 @@ index 2431d71..e7ef296 100644
"DATABASE", /* Desc */
SECTION_PRE_DATA, /* Section */
creaQry->data, /* Create */
-@@ -1825,7 +1842,7 @@ dumpDatabase(Archive *AH)
+@@ -1826,7 +1843,7 @@ dumpDatabase(Archive *AH)
LargeObjectRelationId);
ArchiveEntry(AH, nilCatalogId, createDumpId(),
"pg_largeobject", NULL, NULL, "",
@@ -16642,7 +16435,7 @@ index 2431d71..e7ef296 100644
loOutQry->data, "", NULL,
NULL, 0,
NULL, NULL);
-@@ -1857,7 +1874,7 @@ dumpDatabase(Archive *AH)
+@@ -1858,7 +1875,7 @@ dumpDatabase(Archive *AH)
appendPQExpBuffer(dbQry, ";\n");
ArchiveEntry(AH, dbCatId, createDumpId(), datname, NULL, NULL,
@@ -16651,7 +16444,7 @@ index 2431d71..e7ef296 100644
dbQry->data, "", NULL,
&dbDumpId, 1, NULL, NULL);
}
-@@ -1896,7 +1913,7 @@ dumpEncoding(Archive *AH)
+@@ -1897,7 +1914,7 @@ dumpEncoding(Archive *AH)
ArchiveEntry(AH, nilCatalogId, createDumpId(),
"ENCODING", NULL, NULL, "",
@@ -16660,7 +16453,7 @@ index 2431d71..e7ef296 100644
qry->data, "", NULL,
NULL, 0,
NULL, NULL);
-@@ -1923,7 +1940,7 @@ dumpStdStrings(Archive *AH)
+@@ -1924,7 +1941,7 @@ dumpStdStrings(Archive *AH)
ArchiveEntry(AH, nilCatalogId, createDumpId(),
"STDSTRINGS", NULL, NULL, "",
@@ -16669,7 +16462,7 @@ index 2431d71..e7ef296 100644
qry->data, "", NULL,
NULL, 0,
NULL, NULL);
-@@ -1956,16 +1973,17 @@ getBlobs(Archive *AH)
+@@ -1957,16 +1974,17 @@ getBlobs(Archive *AH)
/* Fetch BLOB OIDs, and owner/ACL data if >= 9.0 */
if (AH->remoteVersion >= 90000)
appendPQExpBuffer(blobQry,
@@ -16691,7 +16484,7 @@ index 2431d71..e7ef296 100644
" FROM pg_class WHERE relkind = 'l'");
res = PQexec(g_conn, blobQry->data);
-@@ -1995,6 +2013,11 @@ getBlobs(Archive *AH)
+@@ -1996,6 +2014,11 @@ getBlobs(Archive *AH)
binfo[i].blobacl = strdup(PQgetvalue(res, i, 2));
else
binfo[i].blobacl = NULL;
@@ -16703,7 +16496,7 @@ index 2431d71..e7ef296 100644
}
/*
-@@ -2034,7 +2057,7 @@ dumpBlob(Archive *AH, BlobInfo *binfo)
+@@ -2035,7 +2058,7 @@ dumpBlob(Archive *AH, BlobInfo *binfo)
ArchiveEntry(AH, binfo->dobj.catId, binfo->dobj.dumpId,
binfo->dobj.name,
NULL, NULL,
@@ -16712,7 +16505,7 @@ index 2431d71..e7ef296 100644
"BLOB", SECTION_PRE_DATA,
cquery->data, dquery->data, NULL,
binfo->dobj.dependencies, binfo->dobj.nDeps,
-@@ -2049,6 +2072,10 @@ dumpBlob(Archive *AH, BlobInfo *binfo)
+@@ -2050,6 +2073,10 @@ dumpBlob(Archive *AH, BlobInfo *binfo)
NULL, binfo->rolname,
binfo->dobj.catId, 0, binfo->dobj.dumpId);
@@ -16723,7 +16516,7 @@ index 2431d71..e7ef296 100644
/* Dump ACL if any */
if (binfo->blobacl)
dumpACL(AH, binfo->dobj.catId, binfo->dobj.dumpId, "LARGE OBJECT",
-@@ -2356,6 +2383,7 @@ getNamespaces(int *numNamespaces)
+@@ -2357,6 +2384,7 @@ getNamespaces(int *numNamespaces)
int i_nspname;
int i_rolname;
int i_nspacl;
@@ -16731,7 +16524,7 @@ index 2431d71..e7ef296 100644
/*
* Before 7.3, there are no real namespaces; create two dummy entries, one
-@@ -2372,6 +2400,7 @@ getNamespaces(int *numNamespaces)
+@@ -2373,6 +2401,7 @@ getNamespaces(int *numNamespaces)
nsinfo[0].dobj.name = strdup("public");
nsinfo[0].rolname = strdup("");
nsinfo[0].nspacl = strdup("");
@@ -16739,7 +16532,7 @@ index 2431d71..e7ef296 100644
selectDumpableNamespace(&nsinfo[0]);
-@@ -2382,6 +2411,7 @@ getNamespaces(int *numNamespaces)
+@@ -2383,6 +2412,7 @@ getNamespaces(int *numNamespaces)
nsinfo[1].dobj.name = strdup("pg_catalog");
nsinfo[1].rolname = strdup("");
nsinfo[1].nspacl = strdup("");
@@ -16747,7 +16540,7 @@ index 2431d71..e7ef296 100644
selectDumpableNamespace(&nsinfo[1]);
-@@ -2402,8 +2432,8 @@ getNamespaces(int *numNamespaces)
+@@ -2403,8 +2433,8 @@ getNamespaces(int *numNamespaces)
*/
appendPQExpBuffer(query, "SELECT tableoid, oid, nspname, "
"(%s nspowner) AS rolname, "
@@ -16758,7 +16551,7 @@ index 2431d71..e7ef296 100644
res = PQexec(g_conn, query->data);
check_sql_result(res, g_conn, query->data, PGRES_TUPLES_OK);
-@@ -2417,6 +2447,7 @@ getNamespaces(int *numNamespaces)
+@@ -2418,6 +2448,7 @@ getNamespaces(int *numNamespaces)
i_nspname = PQfnumber(res, "nspname");
i_rolname = PQfnumber(res, "rolname");
i_nspacl = PQfnumber(res, "nspacl");
@@ -16766,7 +16559,7 @@ index 2431d71..e7ef296 100644
for (i = 0; i < ntups; i++)
{
-@@ -2427,6 +2458,7 @@ getNamespaces(int *numNamespaces)
+@@ -2428,6 +2459,7 @@ getNamespaces(int *numNamespaces)
nsinfo[i].dobj.name = strdup(PQgetvalue(res, i, i_nspname));
nsinfo[i].rolname = strdup(PQgetvalue(res, i, i_rolname));
nsinfo[i].nspacl = strdup(PQgetvalue(res, i, i_nspacl));
@@ -16774,7 +16567,7 @@ index 2431d71..e7ef296 100644
/* Decide whether to dump this namespace */
selectDumpableNamespace(&nsinfo[i]);
-@@ -2515,6 +2547,7 @@ getTypes(int *numTypes)
+@@ -2516,6 +2548,7 @@ getTypes(int *numTypes)
int i_typtype;
int i_typisdefined;
int i_isarray;
@@ -16782,7 +16575,7 @@ index 2431d71..e7ef296 100644
/*
* we include even the built-in types because those may be used as array
-@@ -2547,8 +2580,10 @@ getTypes(int *numTypes)
+@@ -2548,8 +2581,10 @@ getTypes(int *numTypes)
"typtype, typisdefined, "
"typname[0] = '_' AND typelem != 0 AND "
"(SELECT typarray FROM pg_type te WHERE oid = pg_type.typelem) = oid AS isarray "
@@ -16794,7 +16587,7 @@ index 2431d71..e7ef296 100644
}
else if (g_fout->remoteVersion >= 70300)
{
-@@ -2561,6 +2596,7 @@ getTypes(int *numTypes)
+@@ -2562,6 +2597,7 @@ getTypes(int *numTypes)
"ELSE (SELECT relkind FROM pg_class WHERE oid = typrelid) END AS typrelkind, "
"typtype, typisdefined, "
"typname[0] = '_' AND typelem != 0 AS isarray "
@@ -16802,7 +16595,7 @@ index 2431d71..e7ef296 100644
"FROM pg_type",
username_subquery);
}
-@@ -2575,6 +2611,7 @@ getTypes(int *numTypes)
+@@ -2576,6 +2612,7 @@ getTypes(int *numTypes)
"ELSE (SELECT relkind FROM pg_class WHERE oid = typrelid) END AS typrelkind, "
"typtype, typisdefined, "
"typname[0] = '_' AND typelem != 0 AS isarray "
@@ -16810,7 +16603,7 @@ index 2431d71..e7ef296 100644
"FROM pg_type",
username_subquery);
}
-@@ -2591,6 +2628,7 @@ getTypes(int *numTypes)
+@@ -2592,6 +2629,7 @@ getTypes(int *numTypes)
"ELSE (SELECT relkind FROM pg_class WHERE oid = typrelid) END AS typrelkind, "
"typtype, typisdefined, "
"typname[0] = '_' AND typelem != 0 AS isarray "
@@ -16818,7 +16611,7 @@ index 2431d71..e7ef296 100644
"FROM pg_type",
username_subquery);
}
-@@ -2615,6 +2653,7 @@ getTypes(int *numTypes)
+@@ -2616,6 +2654,7 @@ getTypes(int *numTypes)
i_typtype = PQfnumber(res, "typtype");
i_typisdefined = PQfnumber(res, "typisdefined");
i_isarray = PQfnumber(res, "isarray");
@@ -16826,7 +16619,7 @@ index 2431d71..e7ef296 100644
for (i = 0; i < ntups; i++)
{
-@@ -2642,6 +2681,8 @@ getTypes(int *numTypes)
+@@ -2643,6 +2682,8 @@ getTypes(int *numTypes)
else
tyinfo[i].isArray = false;
@@ -16835,7 +16628,7 @@ index 2431d71..e7ef296 100644
/* Decide whether we want to dump it */
selectDumpableType(&tyinfo[i]);
-@@ -3407,6 +3448,7 @@ getTables(int *numTables)
+@@ -3408,6 +3449,7 @@ getTables(int *numTables)
int i_relhasindex;
int i_relhasrules;
int i_relhasoids;
@@ -16843,7 +16636,7 @@ index 2431d71..e7ef296 100644
int i_relfrozenxid;
int i_owning_tab;
int i_owning_col;
-@@ -3414,6 +3456,7 @@ getTables(int *numTables)
+@@ -3415,6 +3457,7 @@ getTables(int *numTables)
int i_reloptions;
int i_toastreloptions;
int i_reloftype;
@@ -16851,7 +16644,7 @@ index 2431d71..e7ef296 100644
/* Make sure we are in proper schema */
selectSourceSchema("pg_catalog");
-@@ -3450,6 +3493,7 @@ getTables(int *numTables)
+@@ -3451,6 +3494,7 @@ getTables(int *numTables)
"(%s c.relowner) AS rolname, "
"c.relchecks, c.relhastriggers, "
"c.relhasindex, c.relhasrules, c.relhasoids, "
@@ -16859,7 +16652,7 @@ index 2431d71..e7ef296 100644
"c.relfrozenxid, "
"CASE WHEN c.reloftype <> 0 THEN c.reloftype::pg_catalog.regtype ELSE NULL END AS reloftype, "
"d.refobjid AS owning_tab, "
-@@ -3457,6 +3501,7 @@ getTables(int *numTables)
+@@ -3458,6 +3502,7 @@ getTables(int *numTables)
"(SELECT spcname FROM pg_tablespace t WHERE t.oid = c.reltablespace) AS reltablespace, "
"array_to_string(c.reloptions, ', ') AS reloptions, "
"array_to_string(array(SELECT 'toast.' || x FROM unnest(tc.reloptions) x), ', ') AS toast_reloptions "
@@ -16867,7 +16660,7 @@ index 2431d71..e7ef296 100644
"FROM pg_class c "
"LEFT JOIN pg_depend d ON "
"(c.relkind = '%c' AND "
-@@ -3467,6 +3512,7 @@ getTables(int *numTables)
+@@ -3468,6 +3513,7 @@ getTables(int *numTables)
"WHERE c.relkind in ('%c', '%c', '%c', '%c') "
"ORDER BY c.oid",
username_subquery,
@@ -16875,7 +16668,7 @@ index 2431d71..e7ef296 100644
RELKIND_SEQUENCE,
RELKIND_RELATION, RELKIND_SEQUENCE,
RELKIND_VIEW, RELKIND_COMPOSITE_TYPE);
-@@ -3483,6 +3529,7 @@ getTables(int *numTables)
+@@ -3484,6 +3530,7 @@ getTables(int *numTables)
"(%s c.relowner) AS rolname, "
"c.relchecks, c.relhastriggers, "
"c.relhasindex, c.relhasrules, c.relhasoids, "
@@ -16883,7 +16676,7 @@ index 2431d71..e7ef296 100644
"c.relfrozenxid, "
"NULL AS reloftype, "
"d.refobjid AS owning_tab, "
-@@ -3490,6 +3537,7 @@ getTables(int *numTables)
+@@ -3491,6 +3538,7 @@ getTables(int *numTables)
"(SELECT spcname FROM pg_tablespace t WHERE t.oid = c.reltablespace) AS reltablespace, "
"array_to_string(c.reloptions, ', ') AS reloptions, "
"array_to_string(array(SELECT 'toast.' || x FROM unnest(tc.reloptions) x), ', ') AS toast_reloptions "
@@ -16891,7 +16684,7 @@ index 2431d71..e7ef296 100644
"FROM pg_class c "
"LEFT JOIN pg_depend d ON "
"(c.relkind = '%c' AND "
-@@ -3500,6 +3548,7 @@ getTables(int *numTables)
+@@ -3501,6 +3549,7 @@ getTables(int *numTables)
"WHERE c.relkind in ('%c', '%c', '%c', '%c') "
"ORDER BY c.oid",
username_subquery,
@@ -16899,7 +16692,7 @@ index 2431d71..e7ef296 100644
RELKIND_SEQUENCE,
RELKIND_RELATION, RELKIND_SEQUENCE,
RELKIND_VIEW, RELKIND_COMPOSITE_TYPE);
-@@ -3516,6 +3565,7 @@ getTables(int *numTables)
+@@ -3517,6 +3566,7 @@ getTables(int *numTables)
"(%s relowner) AS rolname, "
"relchecks, (reltriggers <> 0) AS relhastriggers, "
"relhasindex, relhasrules, relhasoids, "
@@ -16907,7 +16700,7 @@ index 2431d71..e7ef296 100644
"relfrozenxid, "
"NULL AS reloftype, "
"d.refobjid AS owning_tab, "
-@@ -3523,6 +3573,7 @@ getTables(int *numTables)
+@@ -3524,6 +3574,7 @@ getTables(int *numTables)
"(SELECT spcname FROM pg_tablespace t WHERE t.oid = c.reltablespace) AS reltablespace, "
"array_to_string(c.reloptions, ', ') AS reloptions, "
"NULL AS toast_reloptions "
@@ -16915,7 +16708,7 @@ index 2431d71..e7ef296 100644
"FROM pg_class c "
"LEFT JOIN pg_depend d ON "
"(c.relkind = '%c' AND "
-@@ -3548,6 +3599,7 @@ getTables(int *numTables)
+@@ -3549,6 +3600,7 @@ getTables(int *numTables)
"(%s relowner) AS rolname, "
"relchecks, (reltriggers <> 0) AS relhastriggers, "
"relhasindex, relhasrules, relhasoids, "
@@ -16923,7 +16716,7 @@ index 2431d71..e7ef296 100644
"0 AS relfrozenxid, "
"NULL AS reloftype, "
"d.refobjid AS owning_tab, "
-@@ -3555,6 +3607,7 @@ getTables(int *numTables)
+@@ -3556,6 +3608,7 @@ getTables(int *numTables)
"(SELECT spcname FROM pg_tablespace t WHERE t.oid = c.reltablespace) AS reltablespace, "
"NULL AS reloptions, "
"NULL AS toast_reloptions "
@@ -16931,7 +16724,7 @@ index 2431d71..e7ef296 100644
"FROM pg_class c "
"LEFT JOIN pg_depend d ON "
"(c.relkind = '%c' AND "
-@@ -3580,6 +3633,7 @@ getTables(int *numTables)
+@@ -3581,6 +3634,7 @@ getTables(int *numTables)
"(%s relowner) AS rolname, "
"relchecks, (reltriggers <> 0) AS relhastriggers, "
"relhasindex, relhasrules, relhasoids, "
@@ -16939,7 +16732,7 @@ index 2431d71..e7ef296 100644
"0 AS relfrozenxid, "
"NULL AS reloftype, "
"d.refobjid AS owning_tab, "
-@@ -3587,6 +3641,7 @@ getTables(int *numTables)
+@@ -3588,6 +3642,7 @@ getTables(int *numTables)
"NULL AS reltablespace, "
"NULL AS reloptions, "
"NULL AS toast_reloptions "
@@ -16947,7 +16740,7 @@ index 2431d71..e7ef296 100644
"FROM pg_class c "
"LEFT JOIN pg_depend d ON "
"(c.relkind = '%c' AND "
-@@ -3608,6 +3663,7 @@ getTables(int *numTables)
+@@ -3609,6 +3664,7 @@ getTables(int *numTables)
"(%s relowner) AS rolname, "
"relchecks, (reltriggers <> 0) AS relhastriggers, "
"relhasindex, relhasrules, relhasoids, "
@@ -16955,7 +16748,7 @@ index 2431d71..e7ef296 100644
"0 AS relfrozenxid, "
"NULL AS reloftype, "
"NULL::oid AS owning_tab, "
-@@ -3615,6 +3671,7 @@ getTables(int *numTables)
+@@ -3616,6 +3672,7 @@ getTables(int *numTables)
"NULL AS reltablespace, "
"NULL AS reloptions, "
"NULL AS toast_reloptions "
@@ -16963,7 +16756,7 @@ index 2431d71..e7ef296 100644
"FROM pg_class "
"WHERE relkind IN ('%c', '%c', '%c') "
"ORDER BY oid",
-@@ -3631,6 +3688,7 @@ getTables(int *numTables)
+@@ -3632,6 +3689,7 @@ getTables(int *numTables)
"relchecks, (reltriggers <> 0) AS relhastriggers, "
"relhasindex, relhasrules, "
"'t'::bool AS relhasoids, "
@@ -16971,7 +16764,7 @@ index 2431d71..e7ef296 100644
"0 AS relfrozenxid, "
"NULL AS reloftype, "
"NULL::oid AS owning_tab, "
-@@ -3638,6 +3696,7 @@ getTables(int *numTables)
+@@ -3639,6 +3697,7 @@ getTables(int *numTables)
"NULL AS reltablespace, "
"NULL AS reloptions, "
"NULL AS toast_reloptions "
@@ -16979,7 +16772,7 @@ index 2431d71..e7ef296 100644
"FROM pg_class "
"WHERE relkind IN ('%c', '%c', '%c') "
"ORDER BY oid",
-@@ -3671,6 +3730,7 @@ getTables(int *numTables)
+@@ -3672,6 +3731,7 @@ getTables(int *numTables)
"NULL AS reltablespace, "
"NULL AS reloptions, "
"NULL AS toast_reloptions "
@@ -16987,7 +16780,7 @@ index 2431d71..e7ef296 100644
"FROM pg_class c "
"WHERE relkind IN ('%c', '%c') "
"ORDER BY oid",
-@@ -3709,6 +3769,7 @@ getTables(int *numTables)
+@@ -3710,6 +3770,7 @@ getTables(int *numTables)
i_relhasindex = PQfnumber(res, "relhasindex");
i_relhasrules = PQfnumber(res, "relhasrules");
i_relhasoids = PQfnumber(res, "relhasoids");
@@ -16995,7 +16788,7 @@ index 2431d71..e7ef296 100644
i_relfrozenxid = PQfnumber(res, "relfrozenxid");
i_owning_tab = PQfnumber(res, "owning_tab");
i_owning_col = PQfnumber(res, "owning_col");
-@@ -3716,6 +3777,7 @@ getTables(int *numTables)
+@@ -3717,6 +3778,7 @@ getTables(int *numTables)
i_reloptions = PQfnumber(res, "reloptions");
i_toastreloptions = PQfnumber(res, "toast_reloptions");
i_reloftype = PQfnumber(res, "reloftype");
@@ -17003,7 +16796,7 @@ index 2431d71..e7ef296 100644
if (lockWaitTimeout && g_fout->remoteVersion >= 70300)
{
-@@ -3748,6 +3810,7 @@ getTables(int *numTables)
+@@ -3749,6 +3811,7 @@ getTables(int *numTables)
tblinfo[i].hasrules = (strcmp(PQgetvalue(res, i, i_relhasrules), "t") == 0);
tblinfo[i].hastriggers = (strcmp(PQgetvalue(res, i, i_relhastriggers), "t") == 0);
tblinfo[i].hasoids = (strcmp(PQgetvalue(res, i, i_relhasoids), "t") == 0);
@@ -17011,7 +16804,7 @@ index 2431d71..e7ef296 100644
tblinfo[i].frozenxid = atooid(PQgetvalue(res, i, i_relfrozenxid));
if (PQgetisnull(res, i, i_reloftype))
tblinfo[i].reloftype = NULL;
-@@ -3767,6 +3830,7 @@ getTables(int *numTables)
+@@ -3768,6 +3831,7 @@ getTables(int *numTables)
tblinfo[i].reltablespace = strdup(PQgetvalue(res, i, i_reltablespace));
tblinfo[i].reloptions = strdup(PQgetvalue(res, i, i_reloptions));
tblinfo[i].toast_reloptions = strdup(PQgetvalue(res, i, i_toastreloptions));
@@ -17019,7 +16812,7 @@ index 2431d71..e7ef296 100644
/* other fields were zeroed above */
-@@ -5082,6 +5146,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
+@@ -5083,6 +5147,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
int i_attalign;
int i_attislocal;
int i_attoptions;
@@ -17027,7 +16820,7 @@ index 2431d71..e7ef296 100644
PGresult *res;
int ntups;
bool hasdefaults;
-@@ -5128,11 +5193,13 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
+@@ -5129,11 +5194,13 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
"a.attlen, a.attalign, a.attislocal, "
"pg_catalog.format_type(t.oid,a.atttypmod) AS atttypname, "
"array_to_string(attoptions, ', ') AS attoptions "
@@ -17041,7 +16834,7 @@ index 2431d71..e7ef296 100644
tbinfo->dobj.catId.oid);
}
else if (g_fout->remoteVersion >= 70300)
-@@ -5144,6 +5211,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
+@@ -5145,6 +5212,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
"a.attlen, a.attalign, a.attislocal, "
"pg_catalog.format_type(t.oid,a.atttypmod) AS atttypname, "
"'' AS attoptions "
@@ -17049,7 +16842,7 @@ index 2431d71..e7ef296 100644
"FROM pg_catalog.pg_attribute a LEFT JOIN pg_catalog.pg_type t "
"ON a.atttypid = t.oid "
"WHERE a.attrelid = '%u'::pg_catalog.oid "
-@@ -5165,6 +5233,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
+@@ -5166,6 +5234,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
"a.attalign, false AS attislocal, "
"format_type(t.oid,a.atttypmod) AS atttypname, "
"'' AS attoptions "
@@ -17057,7 +16850,7 @@ index 2431d71..e7ef296 100644
"FROM pg_attribute a LEFT JOIN pg_type t "
"ON a.atttypid = t.oid "
"WHERE a.attrelid = '%u'::oid "
-@@ -5183,6 +5252,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
+@@ -5184,6 +5253,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
"false AS attislocal, "
"(SELECT typname FROM pg_type WHERE oid = atttypid) AS atttypname, "
"'' AS attoptions "
@@ -17065,7 +16858,7 @@ index 2431d71..e7ef296 100644
"FROM pg_attribute a "
"WHERE attrelid = '%u'::oid "
"AND attnum > 0::int2 "
-@@ -5209,6 +5279,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
+@@ -5210,6 +5280,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
i_attalign = PQfnumber(res, "attalign");
i_attislocal = PQfnumber(res, "attislocal");
i_attoptions = PQfnumber(res, "attoptions");
@@ -17073,7 +16866,7 @@ index 2431d71..e7ef296 100644
tbinfo->numatts = ntups;
tbinfo->attnames = (char **) malloc(ntups * sizeof(char *));
-@@ -5227,6 +5298,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
+@@ -5228,6 +5299,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
tbinfo->inhAttrs = (bool *) malloc(ntups * sizeof(bool));
tbinfo->inhAttrDef = (bool *) malloc(ntups * sizeof(bool));
tbinfo->inhNotNull = (bool *) malloc(ntups * sizeof(bool));
@@ -17081,7 +16874,7 @@ index 2431d71..e7ef296 100644
hasdefaults = false;
for (j = 0; j < ntups; j++)
-@@ -5256,6 +5328,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
+@@ -5257,6 +5329,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
tbinfo->inhAttrs[j] = false;
tbinfo->inhAttrDef[j] = false;
tbinfo->inhNotNull[j] = false;
@@ -17089,7 +16882,7 @@ index 2431d71..e7ef296 100644
}
PQclear(res);
-@@ -6146,7 +6219,7 @@ dumpComment(Archive *fout, const char *target,
+@@ -6147,7 +6220,7 @@ dumpComment(Archive *fout, const char *target,
*/
ArchiveEntry(fout, nilCatalogId, createDumpId(),
target, namespace, NULL, owner,
@@ -17098,7 +16891,7 @@ index 2431d71..e7ef296 100644
query->data, "", NULL,
&(dumpId), 1,
NULL, NULL);
-@@ -6207,7 +6280,7 @@ dumpTableComment(Archive *fout, TableInfo *tbinfo,
+@@ -6208,7 +6281,7 @@ dumpTableComment(Archive *fout, TableInfo *tbinfo,
target->data,
tbinfo->dobj.namespace->dobj.name,
NULL, tbinfo->rolname,
@@ -17107,7 +16900,7 @@ index 2431d71..e7ef296 100644
query->data, "", NULL,
&(tbinfo->dobj.dumpId), 1,
NULL, NULL);
-@@ -6229,7 +6302,7 @@ dumpTableComment(Archive *fout, TableInfo *tbinfo,
+@@ -6230,7 +6303,7 @@ dumpTableComment(Archive *fout, TableInfo *tbinfo,
target->data,
tbinfo->dobj.namespace->dobj.name,
NULL, tbinfo->rolname,
@@ -17116,7 +16909,7 @@ index 2431d71..e7ef296 100644
query->data, "", NULL,
&(tbinfo->dobj.dumpId), 1,
NULL, NULL);
-@@ -6509,7 +6582,7 @@ dumpDumpableObject(Archive *fout, DumpableObject *dobj)
+@@ -6510,7 +6583,7 @@ dumpDumpableObject(Archive *fout, DumpableObject *dobj)
case DO_BLOB_DATA:
ArchiveEntry(fout, dobj->catId, dobj->dumpId,
dobj->name, NULL, NULL, "",
@@ -17125,7 +16918,7 @@ index 2431d71..e7ef296 100644
"", "", NULL,
dobj->dependencies, dobj->nDeps,
dumpBlobs, NULL);
-@@ -6549,7 +6622,7 @@ dumpNamespace(Archive *fout, NamespaceInfo *nspinfo)
+@@ -6550,7 +6623,7 @@ dumpNamespace(Archive *fout, NamespaceInfo *nspinfo)
nspinfo->dobj.name,
NULL, NULL,
nspinfo->rolname,
@@ -17134,7 +16927,7 @@ index 2431d71..e7ef296 100644
q->data, delq->data, NULL,
nspinfo->dobj.dependencies, nspinfo->dobj.nDeps,
NULL, NULL);
-@@ -6561,6 +6634,9 @@ dumpNamespace(Archive *fout, NamespaceInfo *nspinfo)
+@@ -6562,6 +6635,9 @@ dumpNamespace(Archive *fout, NamespaceInfo *nspinfo)
NULL, nspinfo->rolname,
nspinfo->dobj.catId, 0, nspinfo->dobj.dumpId);
@@ -17144,7 +16937,7 @@ index 2431d71..e7ef296 100644
dumpACL(fout, nspinfo->dobj.catId, nspinfo->dobj.dumpId, "SCHEMA",
qnspname, NULL, nspinfo->dobj.name, NULL,
nspinfo->rolname, nspinfo->nspacl);
-@@ -6678,7 +6754,7 @@ dumpEnumType(Archive *fout, TypeInfo *tyinfo)
+@@ -6679,7 +6755,7 @@ dumpEnumType(Archive *fout, TypeInfo *tyinfo)
tyinfo->dobj.name,
tyinfo->dobj.namespace->dobj.name,
NULL,
@@ -17153,7 +16946,7 @@ index 2431d71..e7ef296 100644
"TYPE", SECTION_PRE_DATA,
q->data, delq->data, NULL,
tyinfo->dobj.dependencies, tyinfo->dobj.nDeps,
-@@ -6692,6 +6768,12 @@ dumpEnumType(Archive *fout, TypeInfo *tyinfo)
+@@ -6693,6 +6769,12 @@ dumpEnumType(Archive *fout, TypeInfo *tyinfo)
tyinfo->dobj.namespace->dobj.name, tyinfo->rolname,
tyinfo->dobj.catId, 0, tyinfo->dobj.dumpId);
@@ -17166,7 +16959,7 @@ index 2431d71..e7ef296 100644
PQclear(res);
destroyPQExpBuffer(q);
destroyPQExpBuffer(delq);
-@@ -7054,7 +7136,7 @@ dumpBaseType(Archive *fout, TypeInfo *tyinfo)
+@@ -7055,7 +7137,7 @@ dumpBaseType(Archive *fout, TypeInfo *tyinfo)
tyinfo->dobj.name,
tyinfo->dobj.namespace->dobj.name,
NULL,
@@ -17175,7 +16968,7 @@ index 2431d71..e7ef296 100644
"TYPE", SECTION_PRE_DATA,
q->data, delq->data, NULL,
tyinfo->dobj.dependencies, tyinfo->dobj.nDeps,
-@@ -7068,6 +7150,12 @@ dumpBaseType(Archive *fout, TypeInfo *tyinfo)
+@@ -7069,6 +7151,12 @@ dumpBaseType(Archive *fout, TypeInfo *tyinfo)
tyinfo->dobj.namespace->dobj.name, tyinfo->rolname,
tyinfo->dobj.catId, 0, tyinfo->dobj.dumpId);
@@ -17188,7 +16981,7 @@ index 2431d71..e7ef296 100644
PQclear(res);
destroyPQExpBuffer(q);
destroyPQExpBuffer(delq);
-@@ -7178,7 +7266,7 @@ dumpDomain(Archive *fout, TypeInfo *tyinfo)
+@@ -7179,7 +7267,7 @@ dumpDomain(Archive *fout, TypeInfo *tyinfo)
tyinfo->dobj.name,
tyinfo->dobj.namespace->dobj.name,
NULL,
@@ -17197,7 +16990,7 @@ index 2431d71..e7ef296 100644
"DOMAIN", SECTION_PRE_DATA,
q->data, delq->data, NULL,
tyinfo->dobj.dependencies, tyinfo->dobj.nDeps,
-@@ -7192,6 +7280,12 @@ dumpDomain(Archive *fout, TypeInfo *tyinfo)
+@@ -7193,6 +7281,12 @@ dumpDomain(Archive *fout, TypeInfo *tyinfo)
tyinfo->dobj.namespace->dobj.name, tyinfo->rolname,
tyinfo->dobj.catId, 0, tyinfo->dobj.dumpId);
@@ -17210,7 +17003,7 @@ index 2431d71..e7ef296 100644
destroyPQExpBuffer(q);
destroyPQExpBuffer(delq);
destroyPQExpBuffer(query);
-@@ -7283,7 +7377,7 @@ dumpCompositeType(Archive *fout, TypeInfo *tyinfo)
+@@ -7284,7 +7378,7 @@ dumpCompositeType(Archive *fout, TypeInfo *tyinfo)
tyinfo->dobj.name,
tyinfo->dobj.namespace->dobj.name,
NULL,
@@ -17219,7 +17012,7 @@ index 2431d71..e7ef296 100644
"TYPE", SECTION_PRE_DATA,
q->data, delq->data, NULL,
tyinfo->dobj.dependencies, tyinfo->dobj.nDeps,
-@@ -7298,6 +7392,12 @@ dumpCompositeType(Archive *fout, TypeInfo *tyinfo)
+@@ -7299,6 +7393,12 @@ dumpCompositeType(Archive *fout, TypeInfo *tyinfo)
tyinfo->dobj.namespace->dobj.name, tyinfo->rolname,
tyinfo->dobj.catId, 0, tyinfo->dobj.dumpId);
@@ -17232,7 +17025,7 @@ index 2431d71..e7ef296 100644
PQclear(res);
destroyPQExpBuffer(q);
destroyPQExpBuffer(delq);
-@@ -7402,7 +7502,7 @@ dumpCompositeTypeColComments(Archive *fout, TypeInfo *tyinfo)
+@@ -7403,7 +7503,7 @@ dumpCompositeTypeColComments(Archive *fout, TypeInfo *tyinfo)
target->data,
tyinfo->dobj.namespace->dobj.name,
NULL, tyinfo->rolname,
@@ -17241,7 +17034,7 @@ index 2431d71..e7ef296 100644
query->data, "", NULL,
&(tyinfo->dobj.dumpId), 1,
NULL, NULL);
-@@ -7454,7 +7554,7 @@ dumpShellType(Archive *fout, ShellTypeInfo *stinfo)
+@@ -7455,7 +7555,7 @@ dumpShellType(Archive *fout, ShellTypeInfo *stinfo)
stinfo->dobj.name,
stinfo->dobj.namespace->dobj.name,
NULL,
@@ -17250,7 +17043,7 @@ index 2431d71..e7ef296 100644
"SHELL TYPE", SECTION_PRE_DATA,
q->data, "", NULL,
stinfo->dobj.dependencies, stinfo->dobj.nDeps,
-@@ -7609,7 +7709,7 @@ dumpProcLang(Archive *fout, ProcLangInfo *plang)
+@@ -7610,7 +7710,7 @@ dumpProcLang(Archive *fout, ProcLangInfo *plang)
ArchiveEntry(fout, plang->dobj.catId, plang->dobj.dumpId,
plang->dobj.name,
lanschema, NULL, plang->lanowner,
@@ -17259,7 +17052,7 @@ index 2431d71..e7ef296 100644
defqry->data, delqry->data, NULL,
plang->dobj.dependencies, plang->dobj.nDeps,
NULL, NULL);
-@@ -7795,6 +7895,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
+@@ -7796,6 +7896,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
char **argmodes = NULL;
char **argnames = NULL;
char **configitems = NULL;
@@ -17267,7 +17060,7 @@ index 2431d71..e7ef296 100644
int nconfigitems = 0;
int i;
-@@ -7825,8 +7926,10 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
+@@ -7826,8 +7927,10 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
"proiswindow, provolatile, proisstrict, prosecdef, "
"proconfig, procost, prorows, "
"(SELECT lanname FROM pg_catalog.pg_language WHERE oid = prolang) AS lanname "
@@ -17278,7 +17071,7 @@ index 2431d71..e7ef296 100644
finfo->dobj.catId.oid);
}
else if (g_fout->remoteVersion >= 80300)
-@@ -7838,6 +7941,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
+@@ -7839,6 +7942,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
"provolatile, proisstrict, prosecdef, "
"proconfig, procost, prorows, "
"(SELECT lanname FROM pg_catalog.pg_language WHERE oid = prolang) AS lanname "
@@ -17286,7 +17079,7 @@ index 2431d71..e7ef296 100644
"FROM pg_catalog.pg_proc "
"WHERE oid = '%u'::pg_catalog.oid",
finfo->dobj.catId.oid);
-@@ -7851,6 +7955,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
+@@ -7852,6 +7956,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
"provolatile, proisstrict, prosecdef, "
"null AS proconfig, 0 AS procost, 0 AS prorows, "
"(SELECT lanname FROM pg_catalog.pg_language WHERE oid = prolang) AS lanname "
@@ -17294,7 +17087,7 @@ index 2431d71..e7ef296 100644
"FROM pg_catalog.pg_proc "
"WHERE oid = '%u'::pg_catalog.oid",
finfo->dobj.catId.oid);
-@@ -7866,6 +7971,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
+@@ -7867,6 +7972,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
"provolatile, proisstrict, prosecdef, "
"null AS proconfig, 0 AS procost, 0 AS prorows, "
"(SELECT lanname FROM pg_catalog.pg_language WHERE oid = prolang) AS lanname "
@@ -17302,7 +17095,7 @@ index 2431d71..e7ef296 100644
"FROM pg_catalog.pg_proc "
"WHERE oid = '%u'::pg_catalog.oid",
finfo->dobj.catId.oid);
-@@ -7881,6 +7987,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
+@@ -7882,6 +7988,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
"provolatile, proisstrict, prosecdef, "
"null AS proconfig, 0 AS procost, 0 AS prorows, "
"(SELECT lanname FROM pg_catalog.pg_language WHERE oid = prolang) AS lanname "
@@ -17310,7 +17103,7 @@ index 2431d71..e7ef296 100644
"FROM pg_catalog.pg_proc "
"WHERE oid = '%u'::pg_catalog.oid",
finfo->dobj.catId.oid);
-@@ -7898,6 +8005,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
+@@ -7899,6 +8006,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
"false AS prosecdef, "
"null AS proconfig, 0 AS procost, 0 AS prorows, "
"(SELECT lanname FROM pg_language WHERE oid = prolang) AS lanname "
@@ -17318,7 +17111,7 @@ index 2431d71..e7ef296 100644
"FROM pg_proc "
"WHERE oid = '%u'::oid",
finfo->dobj.catId.oid);
-@@ -7915,6 +8023,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
+@@ -7916,6 +8024,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
"false AS prosecdef, "
"NULL AS proconfig, 0 AS procost, 0 AS prorows, "
"(SELECT lanname FROM pg_language WHERE oid = prolang) AS lanname "
@@ -17326,7 +17119,7 @@ index 2431d71..e7ef296 100644
"FROM pg_proc "
"WHERE oid = '%u'::oid",
finfo->dobj.catId.oid);
-@@ -7959,6 +8068,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
+@@ -7960,6 +8069,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
procost = PQgetvalue(res, 0, PQfnumber(res, "procost"));
prorows = PQgetvalue(res, 0, PQfnumber(res, "prorows"));
lanname = PQgetvalue(res, 0, PQfnumber(res, "lanname"));
@@ -17334,7 +17127,7 @@ index 2431d71..e7ef296 100644
/*
* See backend/commands/functioncmds.c for details of how the 'AS' clause
-@@ -8169,7 +8279,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
+@@ -8170,7 +8280,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
funcsig_tag,
finfo->dobj.namespace->dobj.name,
NULL,
@@ -17343,7 +17136,7 @@ index 2431d71..e7ef296 100644
"FUNCTION", SECTION_PRE_DATA,
q->data, delqry->data, NULL,
finfo->dobj.dependencies, finfo->dobj.nDeps,
-@@ -8182,6 +8292,12 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
+@@ -8183,6 +8293,12 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
finfo->dobj.namespace->dobj.name, finfo->rolname,
finfo->dobj.catId, 0, finfo->dobj.dumpId);
@@ -17356,7 +17149,7 @@ index 2431d71..e7ef296 100644
dumpACL(fout, finfo->dobj.catId, finfo->dobj.dumpId, "FUNCTION",
funcsig, NULL, funcsig_tag,
finfo->dobj.namespace->dobj.name,
-@@ -8323,7 +8439,7 @@ dumpCast(Archive *fout, CastInfo *cast)
+@@ -8324,7 +8440,7 @@ dumpCast(Archive *fout, CastInfo *cast)
ArchiveEntry(fout, cast->dobj.catId, cast->dobj.dumpId,
castsig->data,
"pg_catalog", NULL, "",
@@ -17365,7 +17158,7 @@ index 2431d71..e7ef296 100644
defqry->data, delqry->data, NULL,
cast->dobj.dependencies, cast->dobj.nDeps,
NULL, NULL);
-@@ -8567,7 +8683,7 @@ dumpOpr(Archive *fout, OprInfo *oprinfo)
+@@ -8568,7 +8684,7 @@ dumpOpr(Archive *fout, OprInfo *oprinfo)
oprinfo->dobj.namespace->dobj.name,
NULL,
oprinfo->rolname,
@@ -17374,7 +17167,7 @@ index 2431d71..e7ef296 100644
q->data, delq->data, NULL,
oprinfo->dobj.dependencies, oprinfo->dobj.nDeps,
NULL, NULL);
-@@ -9026,7 +9142,7 @@ dumpOpclass(Archive *fout, OpclassInfo *opcinfo)
+@@ -9027,7 +9143,7 @@ dumpOpclass(Archive *fout, OpclassInfo *opcinfo)
opcinfo->dobj.namespace->dobj.name,
NULL,
opcinfo->rolname,
@@ -17383,7 +17176,7 @@ index 2431d71..e7ef296 100644
q->data, delq->data, NULL,
opcinfo->dobj.dependencies, opcinfo->dobj.nDeps,
NULL, NULL);
-@@ -9307,7 +9423,7 @@ dumpOpfamily(Archive *fout, OpfamilyInfo *opfinfo)
+@@ -9308,7 +9424,7 @@ dumpOpfamily(Archive *fout, OpfamilyInfo *opfinfo)
opfinfo->dobj.namespace->dobj.name,
NULL,
opfinfo->rolname,
@@ -17392,7 +17185,7 @@ index 2431d71..e7ef296 100644
q->data, delq->data, NULL,
opfinfo->dobj.dependencies, opfinfo->dobj.nDeps,
NULL, NULL);
-@@ -9423,7 +9539,7 @@ dumpConversion(Archive *fout, ConvInfo *convinfo)
+@@ -9424,7 +9540,7 @@ dumpConversion(Archive *fout, ConvInfo *convinfo)
convinfo->dobj.namespace->dobj.name,
NULL,
convinfo->rolname,
@@ -17401,7 +17194,7 @@ index 2431d71..e7ef296 100644
q->data, delq->data, NULL,
convinfo->dobj.dependencies, convinfo->dobj.nDeps,
NULL, NULL);
-@@ -9504,11 +9620,13 @@ dumpAgg(Archive *fout, AggInfo *agginfo)
+@@ -9505,11 +9621,13 @@ dumpAgg(Archive *fout, AggInfo *agginfo)
int i_aggtranstype;
int i_agginitval;
int i_convertok;
@@ -17415,7 +17208,7 @@ index 2431d71..e7ef296 100644
bool convertok;
/* Skip if not to be dumped */
-@@ -9531,9 +9649,11 @@ dumpAgg(Archive *fout, AggInfo *agginfo)
+@@ -9532,9 +9650,11 @@ dumpAgg(Archive *fout, AggInfo *agginfo)
"aggsortop::pg_catalog.regoperator, "
"agginitval, "
"'t'::boolean AS convertok "
@@ -17427,7 +17220,7 @@ index 2431d71..e7ef296 100644
agginfo->aggfn.dobj.catId.oid);
}
else if (g_fout->remoteVersion >= 70300)
-@@ -9543,6 +9663,7 @@ dumpAgg(Archive *fout, AggInfo *agginfo)
+@@ -9544,6 +9664,7 @@ dumpAgg(Archive *fout, AggInfo *agginfo)
"0 AS aggsortop, "
"agginitval, "
"'t'::boolean AS convertok "
@@ -17435,7 +17228,7 @@ index 2431d71..e7ef296 100644
"FROM pg_catalog.pg_aggregate a, pg_catalog.pg_proc p "
"WHERE a.aggfnoid = p.oid "
"AND p.oid = '%u'::pg_catalog.oid",
-@@ -9555,6 +9676,7 @@ dumpAgg(Archive *fout, AggInfo *agginfo)
+@@ -9556,6 +9677,7 @@ dumpAgg(Archive *fout, AggInfo *agginfo)
"0 AS aggsortop, "
"agginitval, "
"'t'::boolean AS convertok "
@@ -17443,7 +17236,7 @@ index 2431d71..e7ef296 100644
"FROM pg_aggregate "
"WHERE oid = '%u'::oid",
agginfo->aggfn.dobj.catId.oid);
-@@ -9567,6 +9689,7 @@ dumpAgg(Archive *fout, AggInfo *agginfo)
+@@ -9568,6 +9690,7 @@ dumpAgg(Archive *fout, AggInfo *agginfo)
"0 AS aggsortop, "
"agginitval1 AS agginitval, "
"(aggtransfn2 = 0 and aggtranstype2 = 0 and agginitval2 is null) AS convertok "
@@ -17451,7 +17244,7 @@ index 2431d71..e7ef296 100644
"FROM pg_aggregate "
"WHERE oid = '%u'::oid",
agginfo->aggfn.dobj.catId.oid);
-@@ -9592,6 +9715,7 @@ dumpAgg(Archive *fout, AggInfo *agginfo)
+@@ -9593,6 +9716,7 @@ dumpAgg(Archive *fout, AggInfo *agginfo)
i_aggtranstype = PQfnumber(res, "aggtranstype");
i_agginitval = PQfnumber(res, "agginitval");
i_convertok = PQfnumber(res, "convertok");
@@ -17459,7 +17252,7 @@ index 2431d71..e7ef296 100644
aggtransfn = PQgetvalue(res, 0, i_aggtransfn);
aggfinalfn = PQgetvalue(res, 0, i_aggfinalfn);
-@@ -9599,6 +9723,7 @@ dumpAgg(Archive *fout, AggInfo *agginfo)
+@@ -9600,6 +9724,7 @@ dumpAgg(Archive *fout, AggInfo *agginfo)
aggtranstype = PQgetvalue(res, 0, i_aggtranstype);
agginitval = PQgetvalue(res, 0, i_agginitval);
convertok = (PQgetvalue(res, 0, i_convertok)[0] == 't');
@@ -17467,7 +17260,7 @@ index 2431d71..e7ef296 100644
aggsig = format_aggregate_signature(agginfo, fout, true);
aggsig_tag = format_aggregate_signature(agginfo, fout, false);
-@@ -9667,7 +9792,7 @@ dumpAgg(Archive *fout, AggInfo *agginfo)
+@@ -9668,7 +9793,7 @@ dumpAgg(Archive *fout, AggInfo *agginfo)
agginfo->aggfn.dobj.namespace->dobj.name,
NULL,
agginfo->aggfn.rolname,
@@ -17476,7 +17269,7 @@ index 2431d71..e7ef296 100644
q->data, delq->data, NULL,
agginfo->aggfn.dobj.dependencies, agginfo->aggfn.dobj.nDeps,
NULL, NULL);
-@@ -9679,6 +9804,12 @@ dumpAgg(Archive *fout, AggInfo *agginfo)
+@@ -9680,6 +9805,12 @@ dumpAgg(Archive *fout, AggInfo *agginfo)
agginfo->aggfn.dobj.namespace->dobj.name, agginfo->aggfn.rolname,
agginfo->aggfn.dobj.catId, 0, agginfo->aggfn.dobj.dumpId);
@@ -17489,7 +17282,7 @@ index 2431d71..e7ef296 100644
/*
* Since there is no GRANT ON AGGREGATE syntax, we have to make the ACL
* command look like a function's GRANT; in particular this affects the
-@@ -9755,7 +9886,7 @@ dumpTSParser(Archive *fout, TSParserInfo *prsinfo)
+@@ -9756,7 +9887,7 @@ dumpTSParser(Archive *fout, TSParserInfo *prsinfo)
prsinfo->dobj.namespace->dobj.name,
NULL,
"",
@@ -17498,7 +17291,7 @@ index 2431d71..e7ef296 100644
q->data, delq->data, NULL,
prsinfo->dobj.dependencies, prsinfo->dobj.nDeps,
NULL, NULL);
-@@ -9847,7 +9978,7 @@ dumpTSDictionary(Archive *fout, TSDictInfo *dictinfo)
+@@ -9848,7 +9979,7 @@ dumpTSDictionary(Archive *fout, TSDictInfo *dictinfo)
dictinfo->dobj.namespace->dobj.name,
NULL,
dictinfo->rolname,
@@ -17507,7 +17300,7 @@ index 2431d71..e7ef296 100644
q->data, delq->data, NULL,
dictinfo->dobj.dependencies, dictinfo->dobj.nDeps,
NULL, NULL);
-@@ -9907,7 +10038,7 @@ dumpTSTemplate(Archive *fout, TSTemplateInfo *tmplinfo)
+@@ -9908,7 +10039,7 @@ dumpTSTemplate(Archive *fout, TSTemplateInfo *tmplinfo)
tmplinfo->dobj.namespace->dobj.name,
NULL,
"",
@@ -17516,7 +17309,7 @@ index 2431d71..e7ef296 100644
q->data, delq->data, NULL,
tmplinfo->dobj.dependencies, tmplinfo->dobj.nDeps,
NULL, NULL);
-@@ -10040,7 +10171,7 @@ dumpTSConfig(Archive *fout, TSConfigInfo *cfginfo)
+@@ -10041,7 +10172,7 @@ dumpTSConfig(Archive *fout, TSConfigInfo *cfginfo)
cfginfo->dobj.namespace->dobj.name,
NULL,
cfginfo->rolname,
@@ -17525,7 +17318,7 @@ index 2431d71..e7ef296 100644
q->data, delq->data, NULL,
cfginfo->dobj.dependencies, cfginfo->dobj.nDeps,
NULL, NULL);
-@@ -10096,7 +10227,7 @@ dumpForeignDataWrapper(Archive *fout, FdwInfo *fdwinfo)
+@@ -10097,7 +10228,7 @@ dumpForeignDataWrapper(Archive *fout, FdwInfo *fdwinfo)
NULL,
NULL,
fdwinfo->rolname,
@@ -17534,7 +17327,7 @@ index 2431d71..e7ef296 100644
q->data, delq->data, NULL,
fdwinfo->dobj.dependencies, fdwinfo->dobj.nDeps,
NULL, NULL);
-@@ -10183,7 +10314,7 @@ dumpForeignServer(Archive *fout, ForeignServerInfo *srvinfo)
+@@ -10185,7 +10316,7 @@ dumpForeignServer(Archive *fout, ForeignServerInfo *srvinfo)
NULL,
NULL,
srvinfo->rolname,
@@ -17543,7 +17336,7 @@ index 2431d71..e7ef296 100644
q->data, delq->data, NULL,
srvinfo->dobj.dependencies, srvinfo->dobj.nDeps,
NULL, NULL);
-@@ -10279,7 +10410,7 @@ dumpUserMappings(Archive *fout, const char *target,
+@@ -10290,7 +10421,7 @@ dumpUserMappings(Archive *fout,
tag->data,
namespace,
NULL,
@@ -17552,7 +17345,7 @@ index 2431d71..e7ef296 100644
"USER MAPPING", SECTION_PRE_DATA,
q->data, delq->data, NULL,
&dumpId, 1,
-@@ -10350,7 +10481,7 @@ dumpDefaultACL(Archive *fout, DefaultACLInfo *daclinfo)
+@@ -10361,7 +10492,7 @@ dumpDefaultACL(Archive *fout, DefaultACLInfo *daclinfo)
daclinfo->dobj.namespace ? daclinfo->dobj.namespace->dobj.name : NULL,
NULL,
daclinfo->defaclrole,
@@ -17561,7 +17354,7 @@ index 2431d71..e7ef296 100644
q->data, "", NULL,
daclinfo->dobj.dependencies, daclinfo->dobj.nDeps,
NULL, NULL);
-@@ -10407,7 +10538,7 @@ dumpACL(Archive *fout, CatalogId objCatId, DumpId objDumpId,
+@@ -10418,7 +10549,7 @@ dumpACL(Archive *fout, CatalogId objCatId, DumpId objDumpId,
tag, nspname,
NULL,
owner ? owner : "",
@@ -17570,7 +17363,7 @@ index 2431d71..e7ef296 100644
sql->data, "", NULL,
&(objDumpId), 1,
NULL, NULL);
-@@ -10416,6 +10547,123 @@ dumpACL(Archive *fout, CatalogId objCatId, DumpId objDumpId,
+@@ -10427,6 +10558,123 @@ dumpACL(Archive *fout, CatalogId objCatId, DumpId objDumpId,
}
/*
@@ -17694,7 +17487,7 @@ index 2431d71..e7ef296 100644
* dumpTable
* write out to fout the declarations (not data) of a user-defined table
*/
-@@ -10571,7 +10819,6 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo)
+@@ -10582,7 +10830,6 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo)
appendPQExpBuffer(q, "CREATE VIEW %s AS\n %s\n",
fmtId(tbinfo->dobj.name), viewdef);
@@ -17702,7 +17495,7 @@ index 2431d71..e7ef296 100644
PQclear(res);
}
else
-@@ -10922,6 +11169,7 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo)
+@@ -10933,6 +11180,7 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo)
(tbinfo->relkind == RELKIND_VIEW) ? NULL : tbinfo->reltablespace,
tbinfo->rolname,
(strcmp(reltypename, "TABLE") == 0) ? tbinfo->hasoids : false,
@@ -17710,7 +17503,7 @@ index 2431d71..e7ef296 100644
reltypename, SECTION_PRE_DATA,
q->data, delq->data, NULL,
tbinfo->dobj.dependencies, tbinfo->dobj.nDeps,
-@@ -10942,6 +11190,27 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo)
+@@ -10953,6 +11201,27 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo)
dumpTableConstraintComment(fout, constr);
}
@@ -17738,7 +17531,7 @@ index 2431d71..e7ef296 100644
destroyPQExpBuffer(query);
destroyPQExpBuffer(q);
destroyPQExpBuffer(delq);
-@@ -10990,7 +11259,7 @@ dumpAttrDef(Archive *fout, AttrDefInfo *adinfo)
+@@ -11001,7 +11270,7 @@ dumpAttrDef(Archive *fout, AttrDefInfo *adinfo)
tbinfo->dobj.namespace->dobj.name,
NULL,
tbinfo->rolname,
@@ -17747,7 +17540,7 @@ index 2431d71..e7ef296 100644
q->data, delq->data, NULL,
adinfo->dobj.dependencies, adinfo->dobj.nDeps,
NULL, NULL);
-@@ -11086,7 +11355,7 @@ dumpIndex(Archive *fout, IndxInfo *indxinfo)
+@@ -11097,7 +11366,7 @@ dumpIndex(Archive *fout, IndxInfo *indxinfo)
indxinfo->dobj.name,
tbinfo->dobj.namespace->dobj.name,
indxinfo->tablespace,
@@ -17756,7 +17549,7 @@ index 2431d71..e7ef296 100644
"INDEX", SECTION_POST_DATA,
q->data, delq->data, NULL,
indxinfo->dobj.dependencies, indxinfo->dobj.nDeps,
-@@ -11211,7 +11480,7 @@ dumpConstraint(Archive *fout, ConstraintInfo *coninfo)
+@@ -11222,7 +11491,7 @@ dumpConstraint(Archive *fout, ConstraintInfo *coninfo)
coninfo->dobj.name,
tbinfo->dobj.namespace->dobj.name,
indxinfo->tablespace,
@@ -17765,7 +17558,7 @@ index 2431d71..e7ef296 100644
"CONSTRAINT", SECTION_POST_DATA,
q->data, delq->data, NULL,
coninfo->dobj.dependencies, coninfo->dobj.nDeps,
-@@ -11244,7 +11513,7 @@ dumpConstraint(Archive *fout, ConstraintInfo *coninfo)
+@@ -11255,7 +11524,7 @@ dumpConstraint(Archive *fout, ConstraintInfo *coninfo)
coninfo->dobj.name,
tbinfo->dobj.namespace->dobj.name,
NULL,
@@ -17774,7 +17567,7 @@ index 2431d71..e7ef296 100644
"FK CONSTRAINT", SECTION_POST_DATA,
q->data, delq->data, NULL,
coninfo->dobj.dependencies, coninfo->dobj.nDeps,
-@@ -11279,7 +11548,7 @@ dumpConstraint(Archive *fout, ConstraintInfo *coninfo)
+@@ -11290,7 +11559,7 @@ dumpConstraint(Archive *fout, ConstraintInfo *coninfo)
coninfo->dobj.name,
tbinfo->dobj.namespace->dobj.name,
NULL,
@@ -17783,7 +17576,7 @@ index 2431d71..e7ef296 100644
"CHECK CONSTRAINT", SECTION_POST_DATA,
q->data, delq->data, NULL,
coninfo->dobj.dependencies, coninfo->dobj.nDeps,
-@@ -11315,7 +11584,7 @@ dumpConstraint(Archive *fout, ConstraintInfo *coninfo)
+@@ -11326,7 +11595,7 @@ dumpConstraint(Archive *fout, ConstraintInfo *coninfo)
coninfo->dobj.name,
tyinfo->dobj.namespace->dobj.name,
NULL,
@@ -17792,7 +17585,7 @@ index 2431d71..e7ef296 100644
"CHECK CONSTRAINT", SECTION_POST_DATA,
q->data, delq->data, NULL,
coninfo->dobj.dependencies, coninfo->dobj.nDeps,
-@@ -11601,7 +11870,7 @@ dumpSequence(Archive *fout, TableInfo *tbinfo)
+@@ -11612,7 +11881,7 @@ dumpSequence(Archive *fout, TableInfo *tbinfo)
tbinfo->dobj.namespace->dobj.name,
NULL,
tbinfo->rolname,
@@ -17801,7 +17594,7 @@ index 2431d71..e7ef296 100644
query->data, delqry->data, NULL,
tbinfo->dobj.dependencies, tbinfo->dobj.nDeps,
NULL, NULL);
-@@ -11637,7 +11906,7 @@ dumpSequence(Archive *fout, TableInfo *tbinfo)
+@@ -11648,7 +11917,7 @@ dumpSequence(Archive *fout, TableInfo *tbinfo)
tbinfo->dobj.namespace->dobj.name,
NULL,
tbinfo->rolname,
@@ -17810,7 +17603,7 @@ index 2431d71..e7ef296 100644
query->data, "", NULL,
&(tbinfo->dobj.dumpId), 1,
NULL, NULL);
-@@ -11650,6 +11919,12 @@ dumpSequence(Archive *fout, TableInfo *tbinfo)
+@@ -11661,6 +11930,12 @@ dumpSequence(Archive *fout, TableInfo *tbinfo)
dumpComment(fout, query->data,
tbinfo->dobj.namespace->dobj.name, tbinfo->rolname,
tbinfo->dobj.catId, 0, tbinfo->dobj.dumpId);
@@ -17823,7 +17616,7 @@ index 2431d71..e7ef296 100644
}
if (!schemaOnly)
-@@ -11665,7 +11940,7 @@ dumpSequence(Archive *fout, TableInfo *tbinfo)
+@@ -11676,7 +11951,7 @@ dumpSequence(Archive *fout, TableInfo *tbinfo)
tbinfo->dobj.namespace->dobj.name,
NULL,
tbinfo->rolname,
@@ -17832,7 +17625,7 @@ index 2431d71..e7ef296 100644
query->data, "", NULL,
&(tbinfo->dobj.dumpId), 1,
NULL, NULL);
-@@ -11849,7 +12124,7 @@ dumpTrigger(Archive *fout, TriggerInfo *tginfo)
+@@ -11860,7 +12135,7 @@ dumpTrigger(Archive *fout, TriggerInfo *tginfo)
tginfo->dobj.name,
tbinfo->dobj.namespace->dobj.name,
NULL,
@@ -17841,7 +17634,7 @@ index 2431d71..e7ef296 100644
"TRIGGER", SECTION_POST_DATA,
query->data, delqry->data, NULL,
tginfo->dobj.dependencies, tginfo->dobj.nDeps,
-@@ -11969,7 +12244,7 @@ dumpRule(Archive *fout, RuleInfo *rinfo)
+@@ -11980,7 +12255,7 @@ dumpRule(Archive *fout, RuleInfo *rinfo)
rinfo->dobj.name,
tbinfo->dobj.namespace->dobj.name,
NULL,
@@ -17850,7 +17643,7 @@ index 2431d71..e7ef296 100644
"RULE", SECTION_POST_DATA,
cmd->data, delcmd->data, NULL,
rinfo->dobj.dependencies, rinfo->dobj.nDeps,
-@@ -12334,7 +12609,7 @@ fmtQualifiedId(const char *schema, const char *id)
+@@ -12345,7 +12620,7 @@ fmtQualifiedId(const char *schema, const char *id)
* "", not an invalid "()" column list.
*/
static const char *
@@ -17859,7 +17652,7 @@ index 2431d71..e7ef296 100644
{
static PQExpBuffer q = NULL;
int numatts = ti->numatts;
-@@ -12350,6 +12625,11 @@ fmtCopyColumnList(const TableInfo *ti)
+@@ -12361,6 +12636,11 @@ fmtCopyColumnList(const TableInfo *ti)
appendPQExpBuffer(q, "(");
needComma = false;
@@ -17872,7 +17665,7 @@ index 2431d71..e7ef296 100644
{
if (attisdropped[i])
diff --git a/src/bin/pg_dump/pg_dump.h b/src/bin/pg_dump/pg_dump.h
-index c93bada..78a50bd 100644
+index c309f69..2a35392 100644
--- a/src/bin/pg_dump/pg_dump.h
+++ b/src/bin/pg_dump/pg_dump.h
@@ -137,6 +137,7 @@ typedef struct _namespaceInfo
@@ -17928,7 +17721,7 @@ index c93bada..78a50bd 100644
/* global decls */
diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c
-index 0c3f63f..83f1678 100644
+index 85032a9..3e4aad6 100644
--- a/src/bin/pg_dump/pg_dumpall.c
+++ b/src/bin/pg_dump/pg_dumpall.c
@@ -69,6 +69,7 @@ static int disable_triggers = 0;
@@ -17956,16 +17749,16 @@ index 0c3f63f..83f1678 100644
else
{
fprintf(stderr,
-@@ -330,6 +334,8 @@ main(int argc, char *argv[])
+@@ -368,6 +372,8 @@ main(int argc, char *argv[])
appendPQExpBuffer(pgdumpopts, " --no-tablespaces");
if (use_setsessauth)
appendPQExpBuffer(pgdumpopts, " --use-set-session-authorization");
+ if (security_label)
+ appendPQExpBuffer(pgdumpopts, " --security-label");
- if (optind < argc)
- {
-@@ -561,6 +567,7 @@ help(void)
+ /*
+ * If there was a database specified on the command line, use that,
+@@ -562,6 +568,7 @@ help(void)
printf(_(" --use-set-session-authorization\n"
" use SET SESSION AUTHORIZATION commands instead of\n"
" ALTER OWNER commands to set ownership\n"));
@@ -17973,7 +17766,7 @@ index 0c3f63f..83f1678 100644
printf(_("\nConnection options:\n"));
printf(_(" -h, --host=HOSTNAME database server host or socket directory\n"));
-@@ -949,6 +956,7 @@ dropTablespaces(PGconn *conn)
+@@ -950,6 +957,7 @@ dropTablespaces(PGconn *conn)
static void
dumpTablespaces(PGconn *conn)
{
@@ -17981,7 +17774,7 @@ index 0c3f63f..83f1678 100644
PGresult *res;
int i;
-@@ -957,31 +965,37 @@ dumpTablespaces(PGconn *conn)
+@@ -958,31 +966,37 @@ dumpTablespaces(PGconn *conn)
* pg_xxx)
*/
if (server_version >= 90000)
@@ -18023,7 +17816,7 @@ index 0c3f63f..83f1678 100644
if (PQntuples(res) > 0)
fprintf(OPF, "--\n-- Tablespaces\n--\n\n");
-@@ -994,6 +1008,7 @@ dumpTablespaces(PGconn *conn)
+@@ -995,6 +1009,7 @@ dumpTablespaces(PGconn *conn)
char *spcacl = PQgetvalue(res, i, 3);
char *spcoptions = PQgetvalue(res, i, 4);
char *spccomment = PQgetvalue(res, i, 5);
@@ -18031,7 +17824,7 @@ index 0c3f63f..83f1678 100644
char *fspcname;
/* needed for buildACLCommands() */
-@@ -1010,6 +1025,10 @@ dumpTablespaces(PGconn *conn)
+@@ -1011,6 +1026,10 @@ dumpTablespaces(PGconn *conn)
appendPQExpBuffer(buf, "ALTER TABLESPACE %s SET (%s);\n",
fspcname, spcoptions);
@@ -18042,7 +17835,7 @@ index 0c3f63f..83f1678 100644
if (!skip_acls &&
!buildACLCommands(fspcname, NULL, "TABLESPACE", spcacl, spcowner,
"", server_version, buf))
-@@ -1153,48 +1172,48 @@ dumpCreateDB(PGconn *conn)
+@@ -1154,48 +1173,48 @@ dumpCreateDB(PGconn *conn)
/* Now collect all the information about databases to dump */
if (server_version >= 80400)
@@ -18102,7 +17895,7 @@ index 0c3f63f..83f1678 100644
"coalesce("
"(select usename from pg_shadow where usesysid=datdba), "
"(select usename from pg_shadow where usesysid=(select datdba from pg_database where datname='template0'))), "
-@@ -1202,6 +1221,7 @@ dumpCreateDB(PGconn *conn)
+@@ -1203,6 +1222,7 @@ dumpCreateDB(PGconn *conn)
"null::text AS datcollate, null::text AS datctype, 0 AS datfrozenxid, "
"datistemplate, '' as datacl, -1 as datconnlimit, "
"'pg_default' AS dattablespace "
@@ -18110,7 +17903,7 @@ index 0c3f63f..83f1678 100644
"FROM pg_database d "
"WHERE datallowconn ORDER BY 1");
else
-@@ -1210,18 +1230,20 @@ dumpCreateDB(PGconn *conn)
+@@ -1211,18 +1231,20 @@ dumpCreateDB(PGconn *conn)
* Note: 7.0 fails to cope with sub-select in COALESCE, so just deal
* with getting a NULL by not printing any OWNER clause.
*/
@@ -18133,7 +17926,7 @@ index 0c3f63f..83f1678 100644
for (i = 0; i < PQntuples(res); i++)
{
char *dbname = PQgetvalue(res, i, 0);
-@@ -1234,6 +1256,7 @@ dumpCreateDB(PGconn *conn)
+@@ -1235,6 +1257,7 @@ dumpCreateDB(PGconn *conn)
char *dbacl = PQgetvalue(res, i, 7);
char *dbconnlimit = PQgetvalue(res, i, 8);
char *dbtablespace = PQgetvalue(res, i, 9);
@@ -18141,7 +17934,7 @@ index 0c3f63f..83f1678 100644
char *fdbname;
fdbname = strdup(fmtId(dbname));
-@@ -1309,6 +1332,9 @@ dumpCreateDB(PGconn *conn)
+@@ -1310,6 +1333,9 @@ dumpCreateDB(PGconn *conn)
appendPQExpBuffer(buf, ";\n");
}
}
@@ -18152,7 +17945,7 @@ index 0c3f63f..83f1678 100644
if (!skip_acls &&
!buildACLCommands(fdbname, NULL, "DATABASE", dbacl, dbowner,
diff --git a/src/bin/pg_dump/pg_restore.c b/src/bin/pg_dump/pg_restore.c
-index b0bcbc2..cdb2592 100644
+index dbdf7ac..03b9d67 100644
--- a/src/bin/pg_dump/pg_restore.c
+++ b/src/bin/pg_dump/pg_restore.c
@@ -76,6 +76,7 @@ main(int argc, char **argv)
@@ -18180,7 +17973,7 @@ index b0bcbc2..cdb2592 100644
else
{
fprintf(stderr,
-@@ -326,6 +330,7 @@ main(int argc, char **argv)
+@@ -337,6 +341,7 @@ main(int argc, char **argv)
opts->noDataForFailedTables = no_data_for_failed_tables;
opts->noTablespace = outputNoTablespaces;
opts->use_setsessauth = use_setsessauth;
@@ -18188,7 +17981,7 @@ index b0bcbc2..cdb2592 100644
if (opts->formatName)
{
-@@ -437,6 +442,7 @@ usage(const char *progname)
+@@ -448,6 +453,7 @@ usage(const char *progname)
" ALTER OWNER commands to set ownership\n"));
printf(_(" -1, --single-transaction\n"
" restore as a single transaction\n"));
@@ -18197,7 +17990,7 @@ index b0bcbc2..cdb2592 100644
printf(_("\nConnection options:\n"));
printf(_(" -h, --host=HOSTNAME database server host or socket directory\n"));
diff --git a/src/include/access/htup.h b/src/include/access/htup.h
-index d87e888..270ff67 100644
+index 3be701b..4501289 100644
--- a/src/include/access/htup.h
+++ b/src/include/access/htup.h
@@ -163,7 +163,7 @@ typedef HeapTupleHeaderData *HeapTupleHeader;
@@ -18270,7 +18063,7 @@ index d87e888..270ff67 100644
/*
* WAL record definitions for heapam.c's WAL operations
diff --git a/src/include/access/sysattr.h b/src/include/access/sysattr.h
-index 59cd2cd..ad5903b 100644
+index 6047735..ce9a994 100644
--- a/src/include/access/sysattr.h
+++ b/src/include/access/sysattr.h
@@ -25,7 +25,8 @@
@@ -18284,7 +18077,7 @@ index 59cd2cd..ad5903b 100644
#endif /* SYSATTR_H */
diff --git a/src/include/access/tupdesc.h b/src/include/access/tupdesc.h
-index 53e0be6..dea713b 100644
+index e38a6e76..d5688d5 100644
--- a/src/include/access/tupdesc.h
+++ b/src/include/access/tupdesc.h
@@ -75,13 +75,14 @@ typedef struct tupleDesc
@@ -18305,7 +18098,7 @@ index 53e0be6..dea713b 100644
extern TupleDesc CreateTupleDescCopy(TupleDesc tupdesc);
diff --git a/src/include/bootstrap/bootstrap.h b/src/include/bootstrap/bootstrap.h
-index 49a32e3..f088876 100644
+index 5e989ef..c3ed1d5 100644
--- a/src/include/bootstrap/bootstrap.h
+++ b/src/include/bootstrap/bootstrap.h
@@ -24,6 +24,7 @@ typedef enum
@@ -18317,7 +18110,7 @@ index 49a32e3..f088876 100644
NUM_AUXPROCTYPES /* Must be last! */
} AuxProcType;
diff --git a/src/include/catalog/heap.h b/src/include/catalog/heap.h
-index 8292273..e2a86e8 100644
+index 557c311..162ad1c 100644
--- a/src/include/catalog/heap.h
+++ b/src/include/catalog/heap.h
@@ -61,7 +61,8 @@ extern Oid heap_create_with_catalog(const char *relname,
@@ -18365,7 +18158,7 @@ index 8292273..e2a86e8 100644
extern void CheckAttributeNamesTypes(TupleDesc tupdesc, char relkind,
bool allow_system_table_mods);
diff --git a/src/include/catalog/indexing.h b/src/include/catalog/indexing.h
-index 4f437fd..069256f 100644
+index 752a35e..a3da55e 100644
--- a/src/include/catalog/indexing.h
+++ b/src/include/catalog/indexing.h
@@ -255,6 +255,11 @@ DECLARE_UNIQUE_INDEX(pg_type_oid_index, 2703, on pg_type using btree(oid oid_ops
@@ -18381,7 +18174,7 @@ index 4f437fd..069256f 100644
#define ForeignDataWrapperOidIndexId 112
diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h
-index 5ea514d..0f07482 100644
+index 2296fa2..4a412aa 100644
--- a/src/include/catalog/pg_class.h
+++ b/src/include/catalog/pg_class.h
@@ -60,6 +60,7 @@ CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO
@@ -18444,7 +18237,7 @@ index 5ea514d..0f07482 100644
#define RELKIND_INDEX 'i' /* secondary index */
diff --git a/src/include/catalog/pg_conversion_fn.h b/src/include/catalog/pg_conversion_fn.h
-index d40dea6..add5fd9 100644
+index 3086936..47f49e2 100644
--- a/src/include/catalog/pg_conversion_fn.h
+++ b/src/include/catalog/pg_conversion_fn.h
@@ -17,7 +17,7 @@
@@ -18457,7 +18250,7 @@ index d40dea6..add5fd9 100644
extern Oid FindDefaultConversion(Oid connamespace, int32 for_encoding, int32 to_encoding);
diff --git a/src/include/catalog/pg_largeobject.h b/src/include/catalog/pg_largeobject.h
-index c4c4a26..6025f56 100644
+index 78b3119..cf43db1 100644
--- a/src/include/catalog/pg_largeobject.h
+++ b/src/include/catalog/pg_largeobject.h
@@ -51,9 +51,10 @@ typedef FormData_pg_largeobject *Form_pg_largeobject;
@@ -18473,7 +18266,7 @@ index c4c4a26..6025f56 100644
#endif /* PG_LARGEOBJECT_H */
diff --git a/src/include/catalog/pg_namespace.h b/src/include/catalog/pg_namespace.h
-index 425f039..0f8043d 100644
+index cc576a5..eeb1079 100644
--- a/src/include/catalog/pg_namespace.h
+++ b/src/include/catalog/pg_namespace.h
@@ -77,6 +77,6 @@ DESCR("standard public schema");
@@ -18485,10 +18278,10 @@ index 425f039..0f8043d 100644
#endif /* PG_NAMESPACE_H */
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
-index f2751a4..3e024b3 100644
+index 31a9650..254e19b 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
-@@ -3719,6 +3719,10 @@ DESCR("current user privilege on role by role name");
+@@ -3715,6 +3715,10 @@ DESCR("current user privilege on role by role name");
DATA(insert OID = 2710 ( pg_has_role PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "26 25" _null_ _null_ _null_ _null_ pg_has_role_id _null_ _null_ _null_ ));
DESCR("current user privilege on role by role oid");
@@ -18500,7 +18293,7 @@ index f2751a4..3e024b3 100644
DESCR("bytes required to store the value, perhaps with compression");
DATA(insert OID = 2322 ( pg_tablespace_size PGNSP PGUID 12 1 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_tablespace_size_oid _null_ _null_ _null_ ));
diff --git a/src/include/catalog/pg_proc_fn.h b/src/include/catalog/pg_proc_fn.h
-index c886f81..f2351c1 100644
+index 0cb82b0..44ee57b 100644
--- a/src/include/catalog/pg_proc_fn.h
+++ b/src/include/catalog/pg_proc_fn.h
@@ -37,7 +37,8 @@ extern Oid ProcedureCreate(const char *procedureName,
@@ -18599,7 +18392,7 @@ index 0000000..21b25de
+
+#endif /* PG_SECLABEL_H */
diff --git a/src/include/catalog/pg_type_fn.h b/src/include/catalog/pg_type_fn.h
-index 5cf90af..1ca2dd4 100644
+index baf3012..c344bf8 100644
--- a/src/include/catalog/pg_type_fn.h
+++ b/src/include/catalog/pg_type_fn.h
@@ -50,7 +50,8 @@ extern Oid TypeCreate(Oid newTypeOid,
@@ -18613,7 +18406,7 @@ index 5cf90af..1ca2dd4 100644
extern void GenerateTypeDependencies(Oid typeNamespace,
Oid typeObjectId,
diff --git a/src/include/catalog/toasting.h b/src/include/catalog/toasting.h
-index fb6f678..f642ded 100644
+index 056fd19..e99dea7 100644
--- a/src/include/catalog/toasting.h
+++ b/src/include/catalog/toasting.h
@@ -58,5 +58,8 @@ DECLARE_TOAST(pg_shdescription, 2846, 2847);
@@ -18626,7 +18419,7 @@ index fb6f678..f642ded 100644
#endif /* TOASTING_H */
diff --git a/src/include/commands/alter.h b/src/include/commands/alter.h
-index b1e04fb..6cd19ba 100644
+index 83e735a..37b772e 100644
--- a/src/include/commands/alter.h
+++ b/src/include/commands/alter.h
@@ -19,5 +19,6 @@
@@ -18637,7 +18430,7 @@ index b1e04fb..6cd19ba 100644
#endif /* ALTER_H */
diff --git a/src/include/commands/dbcommands.h b/src/include/commands/dbcommands.h
-index 542fc27..874e07a 100644
+index f150da3..c085321 100644
--- a/src/include/commands/dbcommands.h
+++ b/src/include/commands/dbcommands.h
@@ -58,6 +58,7 @@ extern void RenameDatabase(const char *oldname, const char *newname);
@@ -18649,7 +18442,7 @@ index 542fc27..874e07a 100644
extern Oid get_database_oid(const char *dbname);
extern char *get_database_name(Oid dbid);
diff --git a/src/include/commands/defrem.h b/src/include/commands/defrem.h
-index e8dbe81..7fc4922 100644
+index cd5be6e..9a71ae4 100644
--- a/src/include/commands/defrem.h
+++ b/src/include/commands/defrem.h
@@ -60,6 +60,8 @@ extern void SetFunctionArgType(Oid funcOid, int argIndex, Oid newArgType);
@@ -18662,7 +18455,7 @@ index e8dbe81..7fc4922 100644
extern void CreateCast(CreateCastStmt *stmt);
extern void DropCast(DropCastStmt *stmt);
diff --git a/src/include/commands/schemacmds.h b/src/include/commands/schemacmds.h
-index c914bd5..edd5abd 100644
+index 62562fa..d122106 100644
--- a/src/include/commands/schemacmds.h
+++ b/src/include/commands/schemacmds.h
@@ -26,5 +26,6 @@ extern void RemoveSchemaById(Oid schemaOid);
@@ -18673,7 +18466,7 @@ index c914bd5..edd5abd 100644
#endif /* SCHEMACMDS_H */
diff --git a/src/include/commands/tablecmds.h b/src/include/commands/tablecmds.h
-index f9269cc..a531f45 100644
+index c1774a2..cc6b11a 100644
--- a/src/include/commands/tablecmds.h
+++ b/src/include/commands/tablecmds.h
@@ -35,6 +35,13 @@ extern void AlterRelationNamespaceInternal(Relation classRel, Oid relOid,
@@ -18691,7 +18484,7 @@ index f9269cc..a531f45 100644
extern void ExecuteTruncate(TruncateStmt *stmt);
diff --git a/src/include/commands/tablespace.h b/src/include/commands/tablespace.h
-index cf005ee..e9e8a55 100644
+index 3d46eeb..71fa5d2 100644
--- a/src/include/commands/tablespace.h
+++ b/src/include/commands/tablespace.h
@@ -44,6 +44,7 @@ extern void DropTableSpace(DropTableSpaceStmt *stmt);
@@ -18703,7 +18496,7 @@ index cf005ee..e9e8a55 100644
extern void TablespaceCreateDbspace(Oid spcNode, Oid dbNode, bool isRedo);
diff --git a/src/include/commands/typecmds.h b/src/include/commands/typecmds.h
-index 8e5b610..f8c5872 100644
+index 4dc2d4f..e50a83f 100644
--- a/src/include/commands/typecmds.h
+++ b/src/include/commands/typecmds.h
@@ -43,5 +43,7 @@ extern void AlterTypeNamespace(List *names, const char *newschema);
@@ -18715,7 +18508,7 @@ index 8e5b610..f8c5872 100644
#endif /* TYPECMDS_H */
diff --git a/src/include/executor/executor.h b/src/include/executor/executor.h
-index 820314c..7873b44 100644
+index b2424a0..609f31b 100644
--- a/src/include/executor/executor.h
+++ b/src/include/executor/executor.h
@@ -131,8 +131,8 @@ extern TupleHashEntry FindTupleHashEntry(TupleHashTable hashtable,
@@ -18749,7 +18542,7 @@ index 820314c..7873b44 100644
extern void UpdateChangedParamSet(PlanState *node, Bitmapset *newchg);
diff --git a/src/include/fmgr.h b/src/include/fmgr.h
-index d1a0dc1..e9de809 100644
+index e588bb1..1298e3e 100644
--- a/src/include/fmgr.h
+++ b/src/include/fmgr.h
@@ -51,6 +51,7 @@ typedef struct FmgrInfo
@@ -18761,7 +18554,7 @@ index d1a0dc1..e9de809 100644
fmNodePtr fn_expr; /* expression parse tree for call, or NULL */
} FmgrInfo;
diff --git a/src/include/nodes/nodes.h b/src/include/nodes/nodes.h
-index 1b5e476..37ffdfa 100644
+index 401b69e..4e2c59d 100644
--- a/src/include/nodes/nodes.h
+++ b/src/include/nodes/nodes.h
@@ -346,6 +346,7 @@ typedef enum NodeTag
@@ -18773,7 +18566,7 @@ index 1b5e476..37ffdfa 100644
/*
* TAGS FOR PARSE TREE NODES (parsenodes.h)
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h
-index b591073..53609e8 100644
+index 54eebbc..94d0969 100644
--- a/src/include/nodes/parsenodes.h
+++ b/src/include/nodes/parsenodes.h
@@ -731,6 +731,7 @@ typedef struct RangeTblEntry
@@ -18793,7 +18586,7 @@ index b591073..53609e8 100644
AT_SetTableSpace, /* SET TABLESPACE */
AT_SetRelOptions, /* SET (...) -- AM specific parameters */
AT_ResetRelOptions, /* RESET (...) -- AM specific parameters */
-@@ -2073,6 +2076,20 @@ typedef struct AlterOwnerStmt
+@@ -2074,6 +2077,20 @@ typedef struct AlterOwnerStmt
char *newowner; /* the new owner */
} AlterOwnerStmt;
@@ -18815,7 +18608,7 @@ index b591073..53609e8 100644
/* ----------------------
* Create Rule Statement
diff --git a/src/include/parser/kwlist.h b/src/include/parser/kwlist.h
-index 49d4b6c..13c88a1 100644
+index 5065bd6..0c67e25 100644
--- a/src/include/parser/kwlist.h
+++ b/src/include/parser/kwlist.h
@@ -208,6 +208,7 @@ PG_KEYWORD("isnull", ISNULL, TYPE_FUNC_NAME_KEYWORD)
@@ -18827,10 +18620,10 @@ index 49d4b6c..13c88a1 100644
PG_KEYWORD("large", LARGE_P, UNRESERVED_KEYWORD)
PG_KEYWORD("last", LAST_P, UNRESERVED_KEYWORD)
diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in
-index 684aed4..2080c95 100644
+index fd169b6..4dd3ca7 100644
--- a/src/include/pg_config.h.in
+++ b/src/include/pg_config.h.in
-@@ -412,6 +412,9 @@
+@@ -418,6 +418,9 @@
/* Define to 1 if you have the <security/pam_appl.h> header file. */
#undef HAVE_SECURITY_PAM_APPL_H
@@ -19464,7 +19257,7 @@ index 0000000..5fd7195
+
+#endif /* SEPGSQL_H */
diff --git a/src/include/storage/large_object.h b/src/include/storage/large_object.h
-index 43a61f3..6385b5c 100644
+index b8de372..2bd6973 100644
--- a/src/include/storage/large_object.h
+++ b/src/include/storage/large_object.h
@@ -70,7 +70,7 @@ typedef struct LargeObjectDesc
@@ -19477,7 +19270,7 @@ index 43a61f3..6385b5c 100644
extern void inv_close(LargeObjectDesc *obj_desc);
extern int inv_drop(Oid lobjId);
diff --git a/src/include/storage/lwlock.h b/src/include/storage/lwlock.h
-index 4eece8b..4176eac 100644
+index 0322007..f807707 100644
--- a/src/include/storage/lwlock.h
+++ b/src/include/storage/lwlock.h
@@ -70,6 +70,7 @@ typedef enum LWLockId
@@ -19489,7 +19282,7 @@ index 4eece8b..4176eac 100644
FirstBufMappingLock,
FirstLockMgrLock = FirstBufMappingLock + NUM_BUFFER_PARTITIONS,
diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h
-index c22c65a..5b94283 100644
+index 9eb37b88..6165c4d 100644
--- a/src/include/utils/guc.h
+++ b/src/include/utils/guc.h
@@ -166,6 +166,7 @@ extern bool log_btree_build_stats;
@@ -19501,7 +19294,7 @@ index c22c65a..5b94283 100644
extern int log_min_error_statement;
diff --git a/src/include/utils/syscache.h b/src/include/utils/syscache.h
-index 2f19e5c..6744782 100644
+index 9faefbe..90b7c94 100644
--- a/src/include/utils/syscache.h
+++ b/src/include/utils/syscache.h
@@ -101,6 +101,8 @@ extern bool SearchSysCacheExists(int cacheId,
@@ -19530,7 +19323,7 @@ index 2f19e5c..6744782 100644
SearchSysCacheList(cacheId, 1, key1, 0, 0, 0)
#define SearchSysCacheList2(cacheId, key1, key2) \
diff --git a/src/pl/plpgsql/src/pl_comp.c b/src/pl/plpgsql/src/pl_comp.c
-index 656ea73..2ce4e94 100644
+index 25d2760..9bb9d3f 100644
--- a/src/pl/plpgsql/src/pl_comp.c
+++ b/src/pl/plpgsql/src/pl_comp.c
@@ -1936,7 +1936,7 @@ build_row_from_vars(PLpgSQL_variable **vars, int numvars)
More information about the scm-commits
mailing list