summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contrib/Makefile9
-rw-r--r--contrib/dblink/dblink.c10
-rw-r--r--contrib/dummy_seclabel/dummy_seclabel.c1
-rw-r--r--contrib/file_fdw/file_fdw.c19
-rw-r--r--contrib/file_fdw/input/file_fdw.source1
-rw-r--r--contrib/file_fdw/output/file_fdw.source2
-rw-r--r--contrib/lo/lo.c7
-rw-r--r--contrib/pageinspect/btreefuncs.c1
-rw-r--r--contrib/pageinspect/rawpage.c1
-rw-r--r--contrib/pg_upgrade/check.c117
-rw-r--r--contrib/pg_upgrade/controldata.c4
-rw-r--r--contrib/pg_upgrade/option.c81
-rw-r--r--contrib/pg_upgrade/pg_upgrade.h5
-rw-r--r--contrib/pgcrypto/crypt-blowfish.c26
-rw-r--r--contrib/pgcrypto/px-crypt.c1
-rw-r--r--contrib/pgrowlocks/pgrowlocks.c1
-rw-r--r--contrib/pgstattuple/pgstatindex.c1
-rw-r--r--contrib/spi/autoinc.c1
-rw-r--r--contrib/spi/insert_username.c1
-rw-r--r--contrib/spi/moddatetime.c1
-rw-r--r--contrib/spi/refint.c1
-rw-r--r--contrib/spi/timetravel.c1
-rw-r--r--doc/src/sgml/catalogs.sgml53
-rw-r--r--doc/src/sgml/client-auth.sgml4
-rw-r--r--doc/src/sgml/config.sgml44
-rw-r--r--doc/src/sgml/datatype.sgml29
-rw-r--r--doc/src/sgml/ecpg.sgml5
-rw-r--r--doc/src/sgml/fdwhandler.sgml77
-rw-r--r--doc/src/sgml/func.sgml2
-rw-r--r--doc/src/sgml/high-availability.sgml12
-rw-r--r--doc/src/sgml/indexam.sgml2
-rw-r--r--doc/src/sgml/information_schema.sgml489
-rw-r--r--doc/src/sgml/install-windows.sgml2
-rw-r--r--doc/src/sgml/libpq.sgml4
-rw-r--r--doc/src/sgml/monitoring.sgml14
-rw-r--r--doc/src/sgml/mvcc.sgml20
-rw-r--r--doc/src/sgml/pgupgrade.sgml42
-rw-r--r--doc/src/sgml/protocol.sgml2
-rw-r--r--doc/src/sgml/ref/alter_domain.sgml45
-rw-r--r--doc/src/sgml/ref/alter_table.sgml12
-rw-r--r--doc/src/sgml/ref/psql-ref.sgml15
-rw-r--r--doc/src/sgml/ref/set_transaction.sgml2
-rw-r--r--doc/src/sgml/release-7.4.sgml2
-rw-r--r--doc/src/sgml/release-8.0.sgml2
-rw-r--r--doc/src/sgml/release-8.1.sgml4
-rw-r--r--doc/src/sgml/release-8.2.sgml2
-rw-r--r--doc/src/sgml/release-8.3.sgml2
-rw-r--r--doc/src/sgml/release-8.4.sgml2
-rw-r--r--doc/src/sgml/release-9.1.sgml19
-rw-r--r--src/Makefile.global.in12
-rw-r--r--src/backend/Makefile5
-rw-r--r--src/backend/access/common/tupdesc.c1
-rw-r--r--src/backend/access/gin/ginfast.c1
-rw-r--r--src/backend/access/gin/gininsert.c1
-rw-r--r--src/backend/access/gist/gist.c3
-rw-r--r--src/backend/access/gist/gistget.c1
-rw-r--r--src/backend/access/gist/gistvacuum.c2
-rw-r--r--src/backend/access/hash/hash.c1
-rw-r--r--src/backend/access/hash/hashutil.c1
-rw-r--r--src/backend/access/heap/heapam.c385
-rw-r--r--src/backend/access/heap/hio.c107
-rw-r--r--src/backend/access/heap/visibilitymap.c110
-rw-r--r--src/backend/access/index/genam.c4
-rw-r--r--src/backend/access/index/indexam.c174
-rw-r--r--src/backend/access/nbtree/nbtpage.c12
-rw-r--r--src/backend/access/nbtree/nbtutils.c18
-rw-r--r--src/backend/access/transam/transam.c5
-rw-r--r--src/backend/access/transam/xact.c245
-rw-r--r--src/backend/access/transam/xlog.c26
-rw-r--r--src/backend/bootstrap/bootstrap.c1
-rw-r--r--src/backend/catalog/heap.c15
-rw-r--r--src/backend/catalog/indexing.c1
-rw-r--r--src/backend/catalog/information_schema.sql166
-rw-r--r--src/backend/catalog/namespace.c57
-rw-r--r--src/backend/catalog/objectaddress.c210
-rw-r--r--src/backend/catalog/pg_collation.c1
-rw-r--r--src/backend/catalog/pg_proc.c2
-rw-r--r--src/backend/catalog/toasting.c1
-rw-r--r--src/backend/commands/alter.c1
-rw-r--r--src/backend/commands/collationcmds.c1
-rw-r--r--src/backend/commands/comment.c3
-rw-r--r--src/backend/commands/constraint.c1
-rw-r--r--src/backend/commands/copy.c1
-rw-r--r--src/backend/commands/explain.c3
-rw-r--r--src/backend/commands/extension.c7
-rw-r--r--src/backend/commands/foreigncmds.c14
-rw-r--r--src/backend/commands/schemacmds.c1
-rw-r--r--src/backend/commands/seclabel.c3
-rw-r--r--src/backend/commands/tablecmds.c305
-rw-r--r--src/backend/commands/trigger.c1
-rw-r--r--src/backend/commands/typecmds.c137
-rw-r--r--src/backend/commands/vacuum.c4
-rw-r--r--src/backend/commands/vacuumlazy.c8
-rw-r--r--src/backend/commands/view.c27
-rw-r--r--src/backend/executor/execAmi.c1
-rw-r--r--src/backend/executor/execCurrent.c1
-rw-r--r--src/backend/executor/execMain.c13
-rw-r--r--src/backend/executor/nodeBitmapHeapscan.c17
-rw-r--r--src/backend/executor/nodeForeignscan.c1
-rw-r--r--src/backend/executor/nodeIndexscan.c1
-rw-r--r--src/backend/executor/nodeLockRows.c1
-rw-r--r--src/backend/executor/nodeMergeAppend.c1
-rw-r--r--src/backend/executor/nodeModifyTable.c1
-rw-r--r--src/backend/executor/nodeSeqscan.c7
-rw-r--r--src/backend/executor/nodeTidscan.c1
-rw-r--r--src/backend/executor/spi.c1
-rw-r--r--src/backend/libpq/auth.c14
-rw-r--r--src/backend/libpq/be-secure.c2
-rw-r--r--src/backend/libpq/hba.c1256
-rw-r--r--src/backend/nls.mk14
-rw-r--r--src/backend/optimizer/plan/planner.c1
-rw-r--r--src/backend/optimizer/util/clauses.c87
-rw-r--r--src/backend/optimizer/util/plancat.c11
-rw-r--r--src/backend/optimizer/util/predtest.c192
-rw-r--r--src/backend/parser/gram.y12
-rw-r--r--src/backend/parser/parse_clause.c22
-rw-r--r--src/backend/parser/parse_expr.c26
-rw-r--r--src/backend/parser/parse_relation.c3
-rw-r--r--src/backend/parser/parse_target.c1
-rw-r--r--src/backend/parser/parse_utilcmd.c29
-rw-r--r--src/backend/port/pipe.c14
-rw-r--r--src/backend/port/win32/crashdump.c10
-rw-r--r--src/backend/port/win32/signal.c6
-rw-r--r--src/backend/port/win32/socket.c14
-rw-r--r--src/backend/port/win32/timer.c4
-rw-r--r--src/backend/postmaster/autovacuum.c5
-rw-r--r--src/backend/postmaster/bgwriter.c2
-rw-r--r--src/backend/postmaster/postmaster.c115
-rw-r--r--src/backend/replication/Makefile2
-rw-r--r--src/backend/replication/syncrep.c6
-rw-r--r--src/backend/rewrite/rewriteHandler.c3
-rw-r--r--src/backend/rewrite/rewriteSupport.c37
-rw-r--r--src/backend/storage/buffer/bufmgr.c2
-rw-r--r--src/backend/storage/lmgr/README-SSI122
-rw-r--r--src/backend/storage/lmgr/deadlock.c2
-rw-r--r--src/backend/storage/lmgr/predicate.c131
-rw-r--r--src/backend/storage/lmgr/proc.c2
-rw-r--r--src/backend/tcop/postgres.c2
-rw-r--r--src/backend/tcop/utility.c4
-rw-r--r--src/backend/utils/adt/ri_triggers.c1
-rw-r--r--src/backend/utils/adt/ruleutils.c3
-rw-r--r--src/backend/utils/adt/selfuncs.c1
-rw-r--r--src/backend/utils/adt/trigfuncs.c1
-rw-r--r--src/backend/utils/adt/tsvector_op.c1
-rw-r--r--src/backend/utils/adt/varchar.c34
-rw-r--r--src/backend/utils/adt/varlena.c2
-rw-r--r--src/backend/utils/adt/xml.c1
-rw-r--r--src/backend/utils/cache/lsyscache.c98
-rw-r--r--src/backend/utils/cache/relcache.c3
-rw-r--r--src/backend/utils/fmgr/funcapi.c1
-rw-r--r--src/backend/utils/misc/guc.c24
-rw-r--r--src/backend/utils/misc/postgresql.conf.sample5
-rw-r--r--src/bin/Makefile6
-rw-r--r--src/bin/initdb/nls.mk8
-rw-r--r--src/bin/pg_basebackup/nls.mk7
-rw-r--r--src/bin/pg_config/nls.mk7
-rw-r--r--src/bin/pg_controldata/nls.mk7
-rw-r--r--src/bin/pg_ctl/Makefile6
-rw-r--r--src/bin/pg_ctl/nls.mk7
-rw-r--r--src/bin/pg_ctl/pg_ctl.c10
-rw-r--r--src/bin/pg_dump/nls.mk15
-rw-r--r--src/bin/pg_resetxlog/nls.mk7
-rw-r--r--src/bin/psql/command.c37
-rw-r--r--src/bin/psql/command.h2
-rw-r--r--src/bin/psql/common.c2
-rw-r--r--src/bin/psql/copy.c3
-rw-r--r--src/bin/psql/describe.c48
-rw-r--r--src/bin/psql/help.c3
-rw-r--r--src/bin/psql/nls.mk9
-rw-r--r--src/bin/psql/settings.h2
-rw-r--r--src/bin/psql/startup.c6
-rw-r--r--src/bin/psql/tab-complete.c3
-rw-r--r--src/bin/scripts/common.c2
-rw-r--r--src/bin/scripts/nls.mk8
-rw-r--r--src/include/access/heapam.h11
-rw-r--r--src/include/access/hio.h3
-rw-r--r--src/include/access/htup.h10
-rw-r--r--src/include/access/relscan.h5
-rw-r--r--src/include/access/transam.h3
-rw-r--r--src/include/access/tupdesc.h1
-rw-r--r--src/include/access/visibilitymap.h6
-rw-r--r--src/include/access/xact.h15
-rw-r--r--src/include/access/xlog_internal.h2
-rw-r--r--src/include/catalog/catversion.h2
-rw-r--r--src/include/catalog/heap.h1
-rw-r--r--src/include/catalog/namespace.h1
-rw-r--r--src/include/catalog/objectaddress.h5
-rw-r--r--src/include/catalog/pg_class.h2
-rw-r--r--src/include/catalog/pg_proc.h4568
-rw-r--r--src/include/commands/typecmds.h1
-rw-r--r--src/include/libpq/hba.h8
-rw-r--r--src/include/nodes/execnodes.h2
-rw-r--r--src/include/nodes/parsenodes.h3
-rw-r--r--src/include/parser/parse_clause.h2
-rw-r--r--src/include/port.h1
-rw-r--r--src/include/postmaster/postmaster.h1
-rw-r--r--src/include/rewrite/rewriteSupport.h3
-rw-r--r--src/include/storage/predicate.h26
-rw-r--r--src/include/storage/predicate_internals.h21
-rw-r--r--src/include/utils/builtins.h1
-rw-r--r--src/include/utils/lsyscache.h12
-rw-r--r--src/include/utils/rel.h55
-rw-r--r--src/include/utils/reltrigger.h74
-rw-r--r--src/interfaces/ecpg/ecpglib/nls.mk7
-rw-r--r--src/interfaces/ecpg/preproc/nls.mk9
-rw-r--r--src/interfaces/libpq/nls.mk9
-rw-r--r--src/nls-global.mk34
-rw-r--r--src/pl/Makefile7
-rw-r--r--src/pl/plperl/nls.mk9
-rw-r--r--src/pl/plperl/plperl--1.0.sql2
-rw-r--r--src/pl/plperl/plperl.c1
-rw-r--r--src/pl/plperl/plperlu--1.0.sql2
-rw-r--r--src/pl/plpgsql/src/nls.mk12
-rw-r--r--src/pl/plpgsql/src/pl_comp.c1
-rw-r--r--src/pl/plpgsql/src/pl_exec.c1
-rw-r--r--src/pl/plpgsql/src/plpgsql--1.0.sql2
-rw-r--r--src/pl/plpython/Makefile28
-rw-r--r--src/pl/plpython/nls.mk13
-rw-r--r--src/pl/plpython/plpython.c1
-rw-r--r--src/pl/plpython/plpython2u--1.0.sql2
-rw-r--r--src/pl/plpython/plpython3u--1.0.sql2
-rw-r--r--src/pl/plpython/plpythonu--1.0.sql2
-rw-r--r--src/pl/tcl/nls.mk9
-rw-r--r--src/pl/tcl/pltcl--1.0.sql2
-rw-r--r--src/pl/tcl/pltcl.c5
-rw-r--r--src/pl/tcl/pltclu--1.0.sql2
-rw-r--r--src/port/path.c13
-rw-r--r--src/test/regress/expected/alter_table.out177
-rw-r--r--src/test/regress/expected/create_index.out48
-rw-r--r--src/test/regress/expected/create_view.out4
-rw-r--r--src/test/regress/expected/domain.out15
-rw-r--r--src/test/regress/expected/foreign_data.out6
-rw-r--r--src/test/regress/expected/prepared_xacts.out47
-rw-r--r--src/test/regress/expected/prepared_xacts_1.out48
-rw-r--r--src/test/regress/expected/rowtypes.out2
-rw-r--r--src/test/regress/expected/sequence.out108
-rw-r--r--src/test/regress/expected/sequence_1.out108
-rw-r--r--src/test/regress/expected/subselect.out36
-rw-r--r--src/test/regress/expected/text.out2
-rw-r--r--src/test/regress/regress.c1
-rw-r--r--src/test/regress/sql/alter_table.sql48
-rw-r--r--src/test/regress/sql/create_index.sql8
-rw-r--r--src/test/regress/sql/domain.sql10
-rw-r--r--src/test/regress/sql/foreign_data.sql2
-rw-r--r--src/test/regress/sql/prepared_xacts.sql22
-rw-r--r--src/test/regress/sql/sequence.sql60
-rw-r--r--src/test/regress/sql/subselect.sql10
-rw-r--r--src/tools/msvc/install.bat2
-rwxr-xr-xsrc/tools/msvc/pgbison.bat54
-rw-r--r--src/tools/msvc/pgbison.pl48
-rwxr-xr-xsrc/tools/msvc/pgflex.bat48
-rw-r--r--src/tools/msvc/pgflex.pl76
252 files changed, 7128 insertions, 4746 deletions
diff --git a/contrib/Makefile b/contrib/Makefile
index 62811bb987..6daf8684ac 100644
--- a/contrib/Makefile
+++ b/contrib/Makefile
@@ -53,18 +53,26 @@ SUBDIRS = \
ifeq ($(with_openssl),yes)
SUBDIRS += sslinfo
+else
+ALWAYS_SUBDIRS += sslinfo
endif
ifeq ($(with_ossp_uuid),yes)
SUBDIRS += uuid-ossp
+else
+ALWAYS_SUBDIRS += uuid-ossp
endif
ifeq ($(with_libxml),yes)
SUBDIRS += xml2
+else
+ALWAYS_SUBDIRS += xml2
endif
ifeq ($(with_selinux),yes)
SUBDIRS += sepgsql
+else
+ALWAYS_SUBDIRS += sepgsql
endif
# Missing:
@@ -72,3 +80,4 @@ endif
$(recurse)
+$(recurse_always)
diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c
index 19b98fb73d..76617e3f36 100644
--- a/contrib/dblink/dblink.c
+++ b/contrib/dblink/dblink.c
@@ -63,6 +63,7 @@
#include "utils/hsearch.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
@@ -613,16 +614,13 @@ Datum
dblink_send_query(PG_FUNCTION_ARGS)
{
PGconn *conn = NULL;
- char *connstr = NULL;
char *sql = NULL;
remoteConn *rconn = NULL;
- char *msg;
- bool freeconn = false;
int retval;
if (PG_NARGS() == 2)
{
- DBLINK_GET_CONN;
+ DBLINK_GET_NAMED_CONN;
sql = text_to_cstring(PG_GETARG_TEXT_PP(1));
}
else
@@ -711,13 +709,13 @@ dblink_record_internal(FunctionCallInfo fcinfo, bool is_async)
if (PG_NARGS() == 2)
{
/* text,bool */
- DBLINK_GET_CONN;
+ DBLINK_GET_NAMED_CONN;
fail = PG_GETARG_BOOL(1);
}
else if (PG_NARGS() == 1)
{
/* text */
- DBLINK_GET_CONN;
+ DBLINK_GET_NAMED_CONN;
}
else
/* shouldn't happen */
diff --git a/contrib/dummy_seclabel/dummy_seclabel.c b/contrib/dummy_seclabel/dummy_seclabel.c
index 5deb43fa9b..2979fecd06 100644
--- a/contrib/dummy_seclabel/dummy_seclabel.c
+++ b/contrib/dummy_seclabel/dummy_seclabel.c
@@ -14,6 +14,7 @@
#include "commands/seclabel.h"
#include "miscadmin.h"
+#include "utils/rel.h"
PG_MODULE_MAGIC;
diff --git a/contrib/file_fdw/file_fdw.c b/contrib/file_fdw/file_fdw.c
index 466c015107..224e74ff32 100644
--- a/contrib/file_fdw/file_fdw.c
+++ b/contrib/file_fdw/file_fdw.c
@@ -24,6 +24,7 @@
#include "foreign/foreign.h"
#include "miscadmin.h"
#include "optimizer/cost.h"
+#include "utils/rel.h"
PG_MODULE_MAGIC;
@@ -215,6 +216,14 @@ file_fdw_validator(PG_FUNCTION_ARGS)
*/
ProcessCopyOptions(NULL, true, other_options);
+ /*
+ * Filename option is required for file_fdw foreign tables.
+ */
+ if (catalog == ForeignTableRelationId && filename == NULL)
+ ereport(ERROR,
+ (errcode(ERRCODE_FDW_DYNAMIC_PARAMETER_VALUE_NEEDED),
+ errmsg("filename is required for file_fdw foreign tables")));
+
PG_RETURN_VOID();
}
@@ -286,10 +295,14 @@ fileGetOptions(Oid foreigntableid,
}
prev = lc;
}
+
+ /*
+ * The validator should have checked that a filename was included in the
+ * options, but check again, just in case.
+ */
if (*filename == NULL)
- ereport(ERROR,
- (errcode(ERRCODE_FDW_UNABLE_TO_CREATE_REPLY),
- errmsg("filename is required for file_fdw foreign tables")));
+ elog(ERROR, "filename is required for file_fdw foreign tables");
+
*other_options = options;
}
diff --git a/contrib/file_fdw/input/file_fdw.source b/contrib/file_fdw/input/file_fdw.source
index 9ff7235a12..1405752819 100644
--- a/contrib/file_fdw/input/file_fdw.source
+++ b/contrib/file_fdw/input/file_fdw.source
@@ -59,6 +59,7 @@ CREATE FOREIGN TABLE tbl () SERVER file_server OPTIONS (format 'csv', delimiter
'); -- ERROR
CREATE FOREIGN TABLE tbl () SERVER file_server OPTIONS (format 'csv', null '
'); -- ERROR
+CREATE FOREIGN TABLE tbl () SERVER file_server; -- ERROR
CREATE FOREIGN TABLE agg_text (
a int2,
diff --git a/contrib/file_fdw/output/file_fdw.source b/contrib/file_fdw/output/file_fdw.source
index 2ba36c9368..6dd2653d0a 100644
--- a/contrib/file_fdw/output/file_fdw.source
+++ b/contrib/file_fdw/output/file_fdw.source
@@ -75,6 +75,8 @@ ERROR: COPY delimiter cannot be newline or carriage return
CREATE FOREIGN TABLE tbl () SERVER file_server OPTIONS (format 'csv', null '
'); -- ERROR
ERROR: COPY null representation cannot use newline or carriage return
+CREATE FOREIGN TABLE tbl () SERVER file_server; -- ERROR
+ERROR: filename is required for file_fdw foreign tables
CREATE FOREIGN TABLE agg_text (
a int2,
b float4
diff --git a/contrib/lo/lo.c b/contrib/lo/lo.c
index 0e3559c020..6946150fed 100644
--- a/contrib/lo/lo.c
+++ b/contrib/lo/lo.c
@@ -7,15 +7,12 @@
#include "postgres.h"
-/* Required for SPI */
+#include "commands/trigger.h"
#include "executor/spi.h"
-
-/* Required for largeobjects */
#include "libpq/be-fsstubs.h"
#include "libpq/libpq-fs.h"
+#include "utils/rel.h"
-/* Required for triggers */
-#include "commands/trigger.h"
PG_MODULE_MAGIC;
diff --git a/contrib/pageinspect/btreefuncs.c b/contrib/pageinspect/btreefuncs.c
index ef27cd4080..514406a67a 100644
--- a/contrib/pageinspect/btreefuncs.c
+++ b/contrib/pageinspect/btreefuncs.c
@@ -35,6 +35,7 @@
#include "miscadmin.h"
#include "storage/bufmgr.h"
#include "utils/builtins.h"
+#include "utils/rel.h"
extern Datum bt_metap(PG_FUNCTION_ARGS);
diff --git a/contrib/pageinspect/rawpage.c b/contrib/pageinspect/rawpage.c
index 2607576c37..8fc3a48d56 100644
--- a/contrib/pageinspect/rawpage.c
+++ b/contrib/pageinspect/rawpage.c
@@ -25,6 +25,7 @@
#include "miscadmin.h"
#include "storage/bufmgr.h"
#include "utils/builtins.h"
+#include "utils/rel.h"
PG_MODULE_MAGIC;
diff --git a/contrib/pg_upgrade/check.c b/contrib/pg_upgrade/check.c
index 376d25a09a..5c5ce72294 100644
--- a/contrib/pg_upgrade/check.c
+++ b/contrib/pg_upgrade/check.c
@@ -19,6 +19,8 @@ static void check_is_super_user(ClusterInfo *cluster);
static void check_for_prepared_transactions(ClusterInfo *cluster);
static void check_for_isn_and_int8_passing_mismatch(ClusterInfo *cluster);
static void check_for_reg_data_type_usage(ClusterInfo *cluster);
+static void check_for_support_lib(ClusterInfo *cluster);
+static void get_bin_version(ClusterInfo *cluster);
void
@@ -27,10 +29,13 @@ output_check_banner(bool *live_check)
if (user_opts.check && is_server_running(old_cluster.pgdata))
{
*live_check = true;
+ if (old_cluster.port == DEF_PGUPORT)
+ pg_log(PG_FATAL, "When checking a live old server, "
+ "you must specify the old server's port number.\n");
if (old_cluster.port == new_cluster.port)
pg_log(PG_FATAL, "When checking a live server, "
"the old and new port numbers must be different.\n");
- pg_log(PG_REPORT, "PerForming Consistency Checks on Old Live Server\n");
+ pg_log(PG_REPORT, "Performing Consistency Checks on Old Live Server\n");
pg_log(PG_REPORT, "------------------------------------------------\n");
}
else
@@ -42,8 +47,7 @@ output_check_banner(bool *live_check)
void
-check_old_cluster(bool live_check,
- char **sequence_script_file_name)
+check_old_cluster(bool live_check, char **sequence_script_file_name)
{
/* -- OLD -- */
@@ -216,6 +220,8 @@ output_completion_banner(char *deletion_script_file_name)
void
check_cluster_versions(void)
{
+ prep_status("Checking cluster versions");
+
/* get old and new cluster versions */
old_cluster.major_version = get_major_server_version(&old_cluster);
new_cluster.major_version = get_major_server_version(&new_cluster);
@@ -235,31 +241,33 @@ check_cluster_versions(void)
/*
* We can't allow downgrading because we use the target pg_dumpall, and
- * pg_dumpall cannot operate on new datbase versions, only older versions.
+ * pg_dumpall cannot operate on new database versions, only older versions.
*/
if (old_cluster.major_version > new_cluster.major_version)
pg_log(PG_FATAL, "This utility cannot be used to downgrade to older major PostgreSQL versions.\n");
+
+ /* get old and new binary versions */
+ get_bin_version(&old_cluster);
+ get_bin_version(&new_cluster);
+
+ /* Ensure binaries match the designated data directories */
+ if (GET_MAJOR_VERSION(old_cluster.major_version) !=
+ GET_MAJOR_VERSION(old_cluster.bin_version))
+ pg_log(PG_FATAL,
+ "Old cluster data and binary directories are from different major versions.\n");
+ if (GET_MAJOR_VERSION(new_cluster.major_version) !=
+ GET_MAJOR_VERSION(new_cluster.bin_version))
+ pg_log(PG_FATAL,
+ "New cluster data and binary directories are from different major versions.\n");
+
+ check_ok();
}
void
check_cluster_compatibility(bool live_check)
{
- char libfile[MAXPGPATH];
- FILE *lib_test;
-
- /*
- * Test pg_upgrade_support.so is in the proper place. We cannot copy it
- * ourselves because install directories are typically root-owned.
- */
- snprintf(libfile, sizeof(libfile), "%s/pg_upgrade_support%s", new_cluster.libpath,
- DLSUFFIX);
-
- if ((lib_test = fopen(libfile, "r")) == NULL)
- pg_log(PG_FATAL,
- "pg_upgrade_support%s must be created and installed in %s\n", DLSUFFIX, libfile);
- else
- fclose(lib_test);
+ check_for_support_lib(&new_cluster);
/* get/check pg_control data of servers */
get_control_data(&old_cluster, live_check);
@@ -406,8 +414,7 @@ check_old_cluster_has_new_cluster_dbs(void)
* This is particularly useful for tablespace deletion.
*/
void
-create_script_for_old_cluster_deletion(
- char **deletion_script_file_name)
+create_script_for_old_cluster_deletion(char **deletion_script_file_name)
{
FILE *script = NULL;
int tblnum;
@@ -730,3 +737,71 @@ check_for_reg_data_type_usage(ClusterInfo *cluster)
else
check_ok();
}
+
+
+/*
+ * Test pg_upgrade_support.so is in the proper place. We cannot copy it
+ * ourselves because install directories are typically root-owned.
+ */
+static void
+check_for_support_lib(ClusterInfo *cluster)
+{
+ char cmd[MAXPGPATH];
+ char libdir[MAX_STRING];
+ char libfile[MAXPGPATH];
+ FILE *lib_test;
+ FILE *output;
+
+ snprintf(cmd, sizeof(cmd), "\"%s/pg_config\" --pkglibdir", cluster->bindir);
+
+ if ((output = popen(cmd, "r")) == NULL)
+ pg_log(PG_FATAL, "Could not get pkglibdir data: %s\n",
+ getErrorText(errno));
+
+ fgets(libdir, sizeof(libdir), output);
+
+ pclose(output);
+
+ /* Remove trailing newline */
+ if (strchr(libdir, '\n') != NULL)
+ *strchr(libdir, '\n') = '\0';
+
+ snprintf(libfile, sizeof(libfile), "%s/pg_upgrade_support%s", libdir,
+ DLSUFFIX);
+
+ if ((lib_test = fopen(libfile, "r")) == NULL)
+ pg_log(PG_FATAL,
+ "The pg_upgrade_support module must be created and installed in the %s cluster.\n",
+ CLUSTER_NAME(cluster));
+
+ fclose(lib_test);
+}
+
+
+static void
+get_bin_version(ClusterInfo *cluster)
+{
+ char cmd[MAXPGPATH], cmd_output[MAX_STRING];
+ FILE *output;
+ int pre_dot, post_dot;
+
+ snprintf(cmd, sizeof(cmd), "\"%s/pg_ctl\" --version", cluster->bindir);
+
+ if ((output = popen(cmd, "r")) == NULL)
+ pg_log(PG_FATAL, "Could not get pg_ctl version data: %s\n",
+ getErrorText(errno));
+
+ fgets(cmd_output, sizeof(cmd_output), output);
+
+ pclose(output);
+
+ /* Remove trailing newline */
+ if (strchr(cmd_output, '\n') != NULL)
+ *strchr(cmd_output, '\n') = '\0';
+
+ if (sscanf(cmd_output, "%*s %*s %d.%d", &pre_dot, &post_dot) != 2)
+ pg_log(PG_FATAL, "could not get version from %s\n", cmd);
+
+ cluster->bin_version = (pre_dot * 100 + post_dot) * 100;
+}
+
diff --git a/contrib/pg_upgrade/controldata.c b/contrib/pg_upgrade/controldata.c
index 25ee81f2a0..8e0db7750f 100644
--- a/contrib/pg_upgrade/controldata.c
+++ b/contrib/pg_upgrade/controldata.c
@@ -140,8 +140,8 @@ get_control_data(ClusterInfo *cluster, bool live_check)
if (!isascii(*p))
pg_log(PG_FATAL,
"The 8.3 cluster's pg_controldata is incapable of outputting ASCII, even\n"
- "with LANG=C. You must upgrade this cluster to a newer version of Postgres\n"
- "8.3 to fix this bug. Postgres 8.3.7 and later are known to work properly.\n");
+ "with LANG=C. You must upgrade this cluster to a newer version of PostgreSQL\n"
+ "8.3 to fix this bug. PostgreSQL 8.3.7 and later are known to work properly.\n");
}
#endif
diff --git a/contrib/pg_upgrade/option.c b/contrib/pg_upgrade/option.c
index 8153e3087a..d29aad0e1d 100644
--- a/contrib/pg_upgrade/option.c
+++ b/contrib/pg_upgrade/option.c
@@ -17,10 +17,8 @@
static void usage(void);
-static void validateDirectoryOption(char **dirpath,
+static void check_required_directory(char **dirpath,
char *envVarName, char *cmdLineOption, char *description);
-static void get_pkglibdirs(void);
-static char *get_pkglibdir(const char *bindir);
UserOpts user_opts;
@@ -60,8 +58,8 @@ parseCommandLine(int argc, char *argv[])
os_info.progname = get_progname(argv[0]);
/* Process libpq env. variables; load values here for usage() output */
- old_cluster.port = getenv("PGPORT") ? atoi(getenv("PGPORT")) : DEF_PGPORT;
- new_cluster.port = getenv("PGPORT") ? atoi(getenv("PGPORT")) : DEF_PGPORT;
+ old_cluster.port = getenv("PGPORTOLD") ? atoi(getenv("PGPORTOLD")) : DEF_PGUPORT;
+ new_cluster.port = getenv("PGPORTNEW") ? atoi(getenv("PGPORTNEW")) : DEF_PGUPORT;
os_user_effective_id = get_user_info(&os_info.user);
/* we override just the database user name; we got the OS id above */
@@ -205,16 +203,14 @@ parseCommandLine(int argc, char *argv[])
}
/* Get values from env if not already set */
- validateDirectoryOption(&old_cluster.bindir, "OLDBINDIR", "-b",
+ check_required_directory(&old_cluster.bindir, "PGBINOLD", "-b",
"old cluster binaries reside");
- validateDirectoryOption(&new_cluster.bindir, "NEWBINDIR", "-B",
+ check_required_directory(&new_cluster.bindir, "PGBINNEW", "-B",
"new cluster binaries reside");
- validateDirectoryOption(&old_cluster.pgdata, "OLDDATADIR", "-d",
+ check_required_directory(&old_cluster.pgdata, "PGDATAOLD", "-d",
"old cluster data resides");
- validateDirectoryOption(&new_cluster.pgdata, "NEWDATADIR", "-D",
+ check_required_directory(&new_cluster.pgdata, "PGDATANEW", "-D",
"new cluster data resides");
-
- get_pkglibdirs();
}
@@ -258,17 +254,17 @@ For example:\n\
or\n"), old_cluster.port, new_cluster.port, os_info.user);
#ifndef WIN32
printf(_("\
- $ export OLDDATADIR=oldCluster/data\n\
- $ export NEWDATADIR=newCluster/data\n\
- $ export OLDBINDIR=oldCluster/bin\n\
- $ export NEWBINDIR=newCluster/bin\n\
+ $ export PGDATAOLD=oldCluster/data\n\
+ $ export PGDATANEW=newCluster/data\n\
+ $ export PGBINOLD=oldCluster/bin\n\
+ $ export PGBINNEW=newCluster/bin\n\
$ pg_upgrade\n"));
#else
printf(_("\
- C:\\> set OLDDATADIR=oldCluster/data\n\
- C:\\> set NEWDATADIR=newCluster/data\n\
- C:\\> set OLDBINDIR=oldCluster/bin\n\
- C:\\> set NEWBINDIR=newCluster/bin\n\
+ C:\\> set PGDATAOLD=oldCluster/data\n\
+ C:\\> set PGDATANEW=newCluster/data\n\
+ C:\\> set PGBINOLD=oldCluster/bin\n\
+ C:\\> set PGBINNEW=newCluster/bin\n\
C:\\> pg_upgrade\n"));
#endif
printf(_("\nReport bugs to <[email protected]>.\n"));
@@ -276,9 +272,9 @@ or\n"), old_cluster.port, new_cluster.port, os_info.user);
/*
- * validateDirectoryOption()
+ * check_required_directory()
*
- * Validates a directory option.
+ * Checks a directory option.
* dirpath - the directory name supplied on the command line
* envVarName - the name of an environment variable to get if dirpath is NULL
* cmdLineOption - the command line option corresponds to this directory (-o, -O, -n, -N)
@@ -288,7 +284,7 @@ or\n"), old_cluster.port, new_cluster.port, os_info.user);
* user hasn't provided the required directory name.
*/
static void
-validateDirectoryOption(char **dirpath, char *envVarName,
+check_required_directory(char **dirpath, char *envVarName,
char *cmdLineOption, char *description)
{
if (*dirpath == NULL || strlen(*dirpath) == 0)
@@ -314,44 +310,3 @@ validateDirectoryOption(char **dirpath, char *envVarName,
#endif
(*dirpath)[strlen(*dirpath) - 1] = 0;
}
-
-
-static void
-get_pkglibdirs(void)
-{
- /*
- * we do not need to know the libpath in the old cluster, and might not
- * have a working pg_config to ask for it anyway.
- */
- old_cluster.libpath = NULL;
- new_cluster.libpath = get_pkglibdir(new_cluster.bindir);
-}
-
-
-static char *
-get_pkglibdir(const char *bindir)
-{
- char cmd[MAXPGPATH];
- char bufin[MAX_STRING];
- FILE *output;
- int i;
-
- snprintf(cmd, sizeof(cmd), "\"%s/pg_config\" --pkglibdir", bindir);
-
- if ((output = popen(cmd, "r")) == NULL)
- pg_log(PG_FATAL, "Could not get pkglibdir data: %s\n",
- getErrorText(errno));
-
- fgets(bufin, sizeof(bufin), output);
-
- if (output)
- pclose(output);
-
- /* Remove trailing newline */
- i = strlen(bufin) - 1;
-
- if (bufin[i] == '\n')
- bufin[i] = '\0';
-
- return pg_strdup(bufin);
-}
diff --git a/contrib/pg_upgrade/pg_upgrade.h b/contrib/pg_upgrade/pg_upgrade.h
index a3a0856309..4729ac39d9 100644
--- a/contrib/pg_upgrade/pg_upgrade.h
+++ b/contrib/pg_upgrade/pg_upgrade.h
@@ -15,6 +15,9 @@
#include "libpq-fe.h"
+/* Use port in the private/dynamic port number range */
+#define DEF_PGUPORT 50432
+
/* Allocate for null byte */
#define USER_NAME_SIZE 128
@@ -184,8 +187,8 @@ typedef struct
unsigned short port; /* port number where postmaster is waiting */
uint32 major_version; /* PG_VERSION of cluster */
char major_version_str[64]; /* string PG_VERSION of cluster */
+ uint32 bin_version; /* version returned from pg_ctl */
Oid pg_database_oid; /* OID of pg_database relation */
- char *libpath; /* pathname for cluster's pkglibdir */
char *tablespace_suffix; /* directory specification */
} ClusterInfo;
diff --git a/contrib/pgcrypto/crypt-blowfish.c b/contrib/pgcrypto/crypt-blowfish.c
index a7b7e758ff..eebf1877cf 100644
--- a/contrib/pgcrypto/crypt-blowfish.c
+++ b/contrib/pgcrypto/crypt-blowfish.c
@@ -5,8 +5,8 @@
* and crypt(3) interfaces added, but optimizations specific to password
* cracking removed.
*
- * Written by Solar Designer <[email protected]> in 1998-2001, and placed
- * in the public domain.
+ * Written by Solar Designer <solar at openwall.com> in 1998-2002 and
+ * placed in the public domain.
*
* There's absolutely no warranty.
*
@@ -19,9 +19,9 @@
* of your choice.
*
* This implementation is compatible with OpenBSD bcrypt.c (version 2a)
- * by Niels Provos <[email protected]>, and uses some of his
- * ideas. The password hashing algorithm was designed by David Mazieres
+ * by Niels Provos <provos at citi.umich.edu>, and uses some of his
+ * ideas. The password hashing algorithm was designed by David Mazieres
+ * <dm at lcs.mit.edu>.
*
* There's a paper on the algorithm that explains its design decisions:
*
@@ -40,7 +40,7 @@
#ifdef __i386__
#define BF_ASM 0 /* 1 */
#define BF_SCALE 1
-#elif defined(__alpha__)
+#elif defined(__x86_64__) || defined(__alpha__) || defined(__hppa__)
#define BF_ASM 0
#define BF_SCALE 1
#else
@@ -49,6 +49,7 @@
#endif
typedef unsigned int BF_word;
+typedef signed int BF_word_signed;
/* Number of Blowfish rounds, this is also hardcoded into a few places */
#define BF_N 16
@@ -544,7 +545,8 @@ extern void _BF_body_r(BF_ctx *ctx);
#endif
static void
-BF_set_key(const char *key, BF_key expanded, BF_key initial)
+BF_set_key(const char *key, BF_key expanded, BF_key initial,
+ int sign_extension_bug)
{
const char *ptr = key;
int i,
@@ -557,7 +559,10 @@ BF_set_key(const char *key, BF_key expanded, BF_key initial)
for (j = 0; j < 4; j++)
{
tmp <<= 8;
- tmp |= *ptr;
+ if (sign_extension_bug)
+ tmp |= (BF_word_signed) (signed char) *ptr;
+ else
+ tmp |= (unsigned char) *ptr;
if (!*ptr)
ptr = key;
@@ -599,10 +604,11 @@ _crypt_blowfish_rn(const char *key, const char *setting,
if (setting[0] != '$' ||
setting[1] != '2' ||
- setting[2] != 'a' ||
+ (setting[2] != 'a' && setting[2] != 'x') ||
setting[3] != '$' ||
setting[4] < '0' || setting[4] > '3' ||
setting[5] < '0' || setting[5] > '9' ||
+ (setting[4] == '3' && setting[5] > '1') ||
setting[6] != '$')
{
return NULL;
@@ -616,7 +622,7 @@ _crypt_blowfish_rn(const char *key, const char *setting,
}
BF_swap(data.binary.salt, 4);
- BF_set_key(key, data.expanded_key, data.ctx.P);
+ BF_set_key(key, data.expanded_key, data.ctx.P, setting[2] == 'x');
memcpy(data.ctx.S, BF_init_state.S, sizeof(data.ctx.S));
diff --git a/contrib/pgcrypto/px-crypt.c b/contrib/pgcrypto/px-crypt.c
index ab12e2a6e7..d2e1682e15 100644
--- a/contrib/pgcrypto/px-crypt.c
+++ b/contrib/pgcrypto/px-crypt.c
@@ -79,6 +79,7 @@ struct px_crypt_algo
static const struct px_crypt_algo
px_crypt_list[] = {
{"$2a$", 4, run_crypt_bf},
+ {"$2x$", 4, run_crypt_bf},
{"$2$", 3, NULL}, /* N/A */
{"$1$", 3, run_crypt_md5},
{"_", 1, run_crypt_des},
diff --git a/contrib/pgrowlocks/pgrowlocks.c b/contrib/pgrowlocks/pgrowlocks.c
index 302bb5c39c..4a49ee342f 100644
--- a/contrib/pgrowlocks/pgrowlocks.c
+++ b/contrib/pgrowlocks/pgrowlocks.c
@@ -35,6 +35,7 @@
#include "storage/procarray.h"
#include "utils/acl.h"
#include "utils/builtins.h"
+#include "utils/rel.h"
#include "utils/tqual.h"
diff --git a/contrib/pgstattuple/pgstatindex.c b/contrib/pgstattuple/pgstatindex.c
index fd2cc9246b..f0d6341bd1 100644
--- a/contrib/pgstattuple/pgstatindex.c
+++ b/contrib/pgstattuple/pgstatindex.c
@@ -34,6 +34,7 @@
#include "miscadmin.h"
#include "storage/bufmgr.h"
#include "utils/builtins.h"
+#include "utils/rel.h"
extern Datum pgstatindex(PG_FUNCTION_ARGS);
diff --git a/contrib/spi/autoinc.c b/contrib/spi/autoinc.c
index 9b38493a33..54bbc4345c 100644
--- a/contrib/spi/autoinc.c
+++ b/contrib/spi/autoinc.c
@@ -8,6 +8,7 @@
#include "commands/trigger.h"
#include "executor/spi.h"
#include "utils/builtins.h"
+#include "utils/rel.h"
PG_MODULE_MAGIC;
diff --git a/contrib/spi/insert_username.c b/contrib/spi/insert_username.c
index 18a13344cf..3bc51c7f02 100644
--- a/contrib/spi/insert_username.c
+++ b/contrib/spi/insert_username.c
@@ -13,6 +13,7 @@
#include "executor/spi.h"
#include "miscadmin.h"
#include "utils/builtins.h"
+#include "utils/rel.h"
PG_MODULE_MAGIC;
diff --git a/contrib/spi/moddatetime.c b/contrib/spi/moddatetime.c
index d02560c298..d0bc4078f9 100644
--- a/contrib/spi/moddatetime.c
+++ b/contrib/spi/moddatetime.c
@@ -18,6 +18,7 @@ OH, me, I'm Terry Mackintosh <[email protected]>
#include "catalog/pg_type.h"
#include "executor/spi.h"
#include "commands/trigger.h"
+#include "utils/rel.h"
PG_MODULE_MAGIC;
diff --git a/contrib/spi/refint.c b/contrib/spi/refint.c
index 36f9ee421e..ed7e00782b 100644
--- a/contrib/spi/refint.c
+++ b/contrib/spi/refint.c
@@ -12,6 +12,7 @@
#include "commands/trigger.h"
#include "executor/spi.h"
#include "utils/builtins.h"
+#include "utils/rel.h"
PG_MODULE_MAGIC;
diff --git a/contrib/spi/timetravel.c b/contrib/spi/timetravel.c
index 3d05cc505c..69ec627868 100644
--- a/contrib/spi/timetravel.c
+++ b/contrib/spi/timetravel.c
@@ -17,6 +17,7 @@
#include "miscadmin.h"
#include "utils/builtins.h"
#include "utils/nabstime.h"
+#include "utils/rel.h"
PG_MODULE_MAGIC;
diff --git a/doc/src/sgml/catalogs.sgml b/doc/src/sgml/catalogs.sgml
index 24d7d98722..d4a1d3686f 100644
--- a/doc/src/sgml/catalogs.sgml
+++ b/doc/src/sgml/catalogs.sgml
@@ -1263,7 +1263,7 @@
<entry><type>bool</type></entry>
<entry>
Role can log in. That is, this role can be given as the initial
- session authorization identifier.
+ session authorization identifier
</entry>
</row>
@@ -1274,7 +1274,7 @@
Role is a replication role. That is, this role can initiate streaming
replication (see <xref linkend="streaming-replication">) and set/unset
the system backup mode using <function>pg_start_backup</> and
- <function>pg_stop_backup</>.
+ <function>pg_stop_backup</>
</entry>
</row>
@@ -1899,7 +1899,7 @@
<entry><type>bool</type></entry>
<entry></entry>
<entry>Has the constraint been validated?
- Currently, can only be false for foreign keys</entry>
+ Currently, can only be false for foreign keys and CHECK constraints</entry>
</row>
<row>
@@ -4338,6 +4338,13 @@
</row>
<row>
+ <entry><structfield>protransform</structfield></entry>
+ <entry><type>regproc</type></entry>
+ <entry><literal><link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.oid</literal></entry>
+ <entry>Calls to function can be simplified by this other function</entry>
+ </row>
+
+ <row>
<entry><structfield>proisagg</structfield></entry>
<entry><type>bool</type></entry>
<entry></entry>
@@ -7078,13 +7085,18 @@
</para>
<para>
- When the <structname>pg_locks</structname> view is accessed, the
- internal lock manager data structures are momentarily locked, and
- a copy is made for the view to display. This ensures that the
- view produces a consistent set of results, while not blocking
- normal lock manager operations longer than necessary. Nonetheless
- there could be some impact on database performance if this view is
- frequently accessed.
+ The <structname>pg_locks</structname> view displays data from both the
+ regular lock manager and the predicate lock manager, which are
+ separate systems. When this view is accessed, the internal data
+ structures of each lock manager are momentarily locked, and copies are
+ made for the view to display. Each lock manager will therefore
+ produce a consistent set of results, but as we do not lock both lock
+ managers simultaneously, it is possible for locks to be taken or
+ released after we interrogate the regular lock manager and before we
+ interrogate the predicate lock manager. Each lock manager is only
+ locked for the minimum possible time so as to reduce the performance
+ impact of querying this view, but there could nevertheless be some
+ impact on database performance if it is frequently accessed.
</para>
<para>
@@ -7365,7 +7377,7 @@
<entry></entry>
<entry>
Role can update system catalogs directly. (Even a superuser cannot do
- this unless this column is true.)
+ this unless this column is true)
</entry>
</row>
@@ -7380,6 +7392,18 @@
</row>
<row>
+ <entry><structfield>rolreplication</structfield></entry>
+ <entry><type>bool</type></entry>
+ <entry></entry>
+ <entry>
+ Role is a replication role. That is, this role can initiate streaming
+ replication (see <xref linkend="streaming-replication">) and set/unset
+ the system backup mode using <function>pg_start_backup</> and
+ <function>pg_stop_backup</>
+ </entry>
+ </row>
+
+ <row>
<entry><structfield>rolconnlimit</structfield></entry>
<entry><type>int4</type></entry>
<entry></entry>
@@ -7405,6 +7429,13 @@
</row>
<row>
+ <entry><structfield>rolconfig</structfield></entry>
+ <entry><type>text[]</type></entry>
+ <entry></entry>
+ <entry>Role-specific defaults for run-time configuration variables</entry>
+ </row>
+
+ <row>
<entry><structfield>oid</structfield></entry>
<entry><type>oid</type></entry>
<entry><literal><link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.oid</literal></entry>
diff --git a/doc/src/sgml/client-auth.sgml b/doc/src/sgml/client-auth.sgml
index 575eb3be44..5d543cb67c 100644
--- a/doc/src/sgml/client-auth.sgml
+++ b/doc/src/sgml/client-auth.sgml
@@ -990,7 +990,9 @@ omicron bryanh guest1
<productname>Kerberos</productname> when possible and automatically
fall back to <productname>NTLM</productname> in other cases.
<productname>SSPI</productname> authentication only works when both
- server and client are running <productname>Windows</productname>.
+ server and client are running <productname>Windows</productname>,
+ or, on non-Windows platforms, when <productname>GSSAPI</productname>
+ is available.
</para>
<para>
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 794aef4e6a..54719e40a5 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -2083,15 +2083,15 @@ SET ENABLE_SEQSCAN TO OFF;
synchronous standby that will wake sleeping users following commit.
The synchronous standby will be the first named standby that is
both currently connected and streaming in real-time to the standby
- (as shown by a state of "STREAMING"). Other standby servers
+ (as shown by a state of <literal>STREAMING</literal>). Other standby servers
with listed later will become potential synchronous standbys.
If the current synchronous standby disconnects for whatever reason
it will be replaced immediately with the next highest priority standby.
Specifying more than one standby name can allow very high availability.
</para>
<para>
- The standby name is currently taken as the application_name of the
- standby, as set in the primary_conninfo on the standby. Names are
+ The standby name is currently taken as the <varname>application_name</> setting of the
+ standby, as set in the <varname>primary_conninfo</> on the standby. Names are
not enforced for uniqueness. In case of duplicates one of the standbys
will be chosen to be the synchronous standby, though exactly which
one is indeterminate.
@@ -2211,12 +2211,13 @@ SET ENABLE_SEQSCAN TO OFF;
</indexterm>
<listitem>
<para>
- Specifies the minimum frequency, in seconds, for the WAL receiver
+ Specifies the minimum frequency for the WAL receiver
process on the standby to send information about replication progress
to the primary, where they can be seen using the
<literal>pg_stat_replication</literal> view. The standby will report
the last transaction log position it has written, the last position it
- has flushed to disk, and the last position it has applied. Updates are
+ has flushed to disk, and the last position it has applied. The parameter
+ value is the maximum interval, in seconds, between reports. Updates are
sent each time the write or flush positions changed, or at least as
often as specified by this parameter. Thus, the apply position may
lag slightly behind the true position. Setting this parameter to zero
@@ -3201,36 +3202,6 @@ local0.* /var/log/postgresql
</listitem>
</varlistentry>
- <varlistentry id="guc-silent-mode" xreflabel="silent_mode">
- <term><varname>silent_mode</varname> (<type>boolean</type>)</term>
- <indexterm>
- <primary><varname>silent_mode</> configuration parameter</primary>
- </indexterm>
- <listitem>
- <para>
- Runs the server silently. If this parameter is set, the server
- will automatically run in background and disassociate from the
- controlling terminal.
- This parameter can only be set at server start.
- </para>
-
- <caution>
- <para>
- When this parameter is set,
- the server's standard output and standard error are redirected
- to the file <filename>postmaster.log</> within the data directory.
- There is no provision for rotating this file, so it will grow
- indefinitely unless server log output is redirected elsewhere
- by other settings. It is recommended that <varname>log_destination</>
- be set to <literal>syslog</> or that <varname>logging_collector</> be
- enabled when using this option. Even with those measures, errors
- reported early during startup may appear in
- <filename>postmaster.log</> rather than the normal log destination.
- </para>
- </caution>
- </listitem>
- </varlistentry>
-
</variablelist>
</sect2>
<sect2 id="runtime-config-logging-when">
@@ -5266,7 +5237,8 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
practice. On a heavily loaded server you might want to raise it.
Ideally the setting should exceed your typical transaction time,
so as to improve the odds that a lock will be released before
- the waiter decides to check for deadlock.
+ the waiter decides to check for deadlock. Only superusers can change
+ this setting.
</para>
<para>
diff --git a/doc/src/sgml/datatype.sgml b/doc/src/sgml/datatype.sgml
index ab8eb2d30b..0b4f978d98 100644
--- a/doc/src/sgml/datatype.sgml
+++ b/doc/src/sgml/datatype.sgml
@@ -199,6 +199,12 @@
</row>
<row>
+ <entry><type>smallserial</type></entry>
+ <entry><type>serial2</type></entry>
+ <entry>autoincrementing two-byte integer</entry>
+ </row>
+
+ <row>
<entry><type>serial</type></entry>
<entry><type>serial4</type></entry>
<entry>autoincrementing four-byte integer</entry>
@@ -369,6 +375,13 @@
</row>
<row>
+ <entry><type>smallserial</type></entry>
+ <entry>2 bytes</entry>
+ <entry>small autoincrementing integer</entry>
+ <entry>1 to 32767</entry>
+ </row>
+
+ <row>
<entry><type>serial</></entry>
<entry>4 bytes</entry>
<entry>autoincrementing integer</entry>
@@ -743,6 +756,10 @@ NUMERIC
<title>Serial Types</title>
<indexterm zone="datatype-serial">
+ <primary>smallserial</primary>
+ </indexterm>
+
+ <indexterm zone="datatype-serial">
<primary>serial</primary>
</indexterm>
@@ -751,6 +768,10 @@ NUMERIC
</indexterm>
<indexterm zone="datatype-serial">
+ <primary>serial2</primary>
+ </indexterm>
+
+ <indexterm zone="datatype-serial">
<primary>serial4</primary>
</indexterm>
@@ -769,8 +790,8 @@ NUMERIC
</indexterm>
<para>
- The data types <type>serial</type> and <type>bigserial</type>
- are not true types, but merely
+ The data types <type>smallserial</type>, <type>serial</type> and
+ <type>bigserial</type> are not true types, but merely
a notational convenience for creating unique identifier columns
(similar to the <literal>AUTO_INCREMENT</literal> property
supported by some other databases). In the current
@@ -828,7 +849,9 @@ ALTER SEQUENCE <replaceable class="parameter">tablename</replaceable>_<replaceab
the same way, except that they create a <type>bigint</type>
column. <type>bigserial</type> should be used if you anticipate
the use of more than 2<superscript>31</> identifiers over the
- lifetime of the table.
+ lifetime of the table. The type names <type>smallserial</type> and
+ <type>serial2</type> also work the same way, execpt that they
+ create a <type>smallint</type> column.
</para>
<para>
diff --git a/doc/src/sgml/ecpg.sgml b/doc/src/sgml/ecpg.sgml
index def250c156..847012293b 100644
--- a/doc/src/sgml/ecpg.sgml
+++ b/doc/src/sgml/ecpg.sgml
@@ -845,6 +845,11 @@ do
</row>
<row>
+ <entry><type>smallserial</type></entry>
+ <entry><type>short</type></entry>
+ </row>
+
+ <row>
<entry><type>serial</type></entry>
<entry><type>int</type></entry>
</row>
diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index c8ae861852..9ab712f6d1 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -18,37 +18,6 @@
</para>
<para>
- The FDW author needs to implement a handler function, and optionally
- a validator function. Both functions must be written in a compiled
- language such as C, using the version-1 interface.
- For details on C language calling conventions and dynamic loading,
- see <xref linkend="xfunc-c">.
- </para>
-
- <para>
- The handler function simply returns a struct of function pointers to
- callback functions that will be called by the planner and executor.
- Most of the effort in writing an FDW is in implementing these callback
- functions.
- The handler function must be registered with
- <productname>PostgreSQL</productname> as taking no arguments and returning
- the special pseudo-type <type>fdw_handler</type>.
- The callback functions are plain C functions and are not visible or
- callable at the SQL level.
- </para>
-
- <para>
- The validator function is responsible for validating options given in the
- <command>CREATE FOREIGN DATA WRAPPER</command>, <command>CREATE
- SERVER</command> and <command>CREATE FOREIGN TABLE</command> commands.
- The validator function must be registered as taking two arguments, a text
- array containing the options to be validated, and an OID representing the
- type of object the options are associated with (in the form of the OID
- of the system catalog the object would be stored in). If no validator
- function is supplied, the options are not checked at object creation time.
- </para>
-
- <para>
The foreign data wrappers included in the standard distribution are good
references when trying to write your own. Look into the
<filename>contrib/file_fdw</> subdirectory of the source tree.
@@ -65,7 +34,51 @@
</para>
</note>
- <sect1 id="fdw-routines">
+ <sect1 id="fdw-functions">
+ <title>Foreign Data Wrapper Functions</title>
+
+ <para>
+ The FDW author needs to implement a handler function, and optionally
+ a validator function. Both functions must be written in a compiled
+ language such as C, using the version-1 interface.
+ For details on C language calling conventions and dynamic loading,
+ see <xref linkend="xfunc-c">.
+ </para>
+
+ <para>
+ The handler function simply returns a struct of function pointers to
+ callback functions that will be called by the planner and executor.
+ Most of the effort in writing an FDW is in implementing these callback
+ functions.
+ The handler function must be registered with
+ <productname>PostgreSQL</productname> as taking no arguments and
+ returning the special pseudo-type <type>fdw_handler</type>. The
+ callback functions are plain C functions and are not visible or
+ callable at the SQL level. The callback functions are described in
+ <xref linkend="fdw-callbacks">.
+ </para>
+
+ <para>
+ The validator function is responsible for validating options given in
+ <command>CREATE</command> and <command>ALTER</command> commands for its
+ foreign data wrapper, as well as foreign servers, user mappings, and
+ foreign tables using the wrapper.
+ The validator function must be registered as taking two arguments, a
+ text array containing the options to be validated, and an OID
+ representing the type of object the options are associated with (in
+ the form of the OID of the system catalog the object would be stored
+ in, either
+ <literal>ForeignDataWrapperRelationId</>,
+ <literal>ForeignServerRelationId</>,
+ <literal>UserMappingRelationId</>,
+ or <literal>ForeignTableRelationId</>).
+ If no validator function is supplied, options are not checked at object
+ creation time or object alteration time.
+ </para>
+
+ </sect1>
+
+ <sect1 id="fdw-callbacks">
<title>Foreign Data Wrapper Callback Routines</title>
<para>
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml
index 8f223d6891..628fbef001 100644
--- a/doc/src/sgml/func.sgml
+++ b/doc/src/sgml/func.sgml
@@ -13366,7 +13366,7 @@ SELECT pg_type_is_visible('myschema.widget'::regtype);
<row>
<entry><literal><function>pg_get_serial_sequence(<parameter>table_name</parameter>, <parameter>column_name</parameter>)</function></literal></entry>
<entry><type>text</type></entry>
- <entry>get name of the sequence that a <type>serial</type> or <type>bigserial</type> column
+ <entry>get name of the sequence that a <type>serial</type>, <type>smallserial</type> or <type>bigserial</type> column
uses</entry>
</row>
<row>
diff --git a/doc/src/sgml/high-availability.sgml b/doc/src/sgml/high-availability.sgml
index 80665a5cb2..0d3baa04bc 100644
--- a/doc/src/sgml/high-availability.sgml
+++ b/doc/src/sgml/high-availability.sgml
@@ -1585,7 +1585,7 @@ if (!triggered)
<para>
There are also additional types of conflict that can occur with Hot Standby.
These conflicts are <emphasis>hard conflicts</> in the sense that queries
- might need to be cancelled and, in some cases, sessions disconnected to resolve them.
+ might need to be canceled and, in some cases, sessions disconnected to resolve them.
The user is provided with several ways to handle these
conflicts. Conflict cases include:
@@ -1682,7 +1682,7 @@ if (!triggered)
<para>
Once the delay specified by <varname>max_standby_archive_delay</> or
<varname>max_standby_streaming_delay</> has been exceeded, conflicting
- queries will be cancelled. This usually results just in a cancellation
+ queries will be canceled. This usually results just in a cancellation
error, although in the case of replaying a <command>DROP DATABASE</>
the entire conflicting session will be terminated. Also, if the conflict
is over a lock held by an idle transaction, the conflicting session is
@@ -1690,10 +1690,10 @@ if (!triggered)
</para>
<para>
- Cancelled queries may be retried immediately (after beginning a new
+ Canceled queries may be retried immediately (after beginning a new
transaction, of course). Since query cancellation depends on
the nature of the WAL records being replayed, a query that was
- cancelled may well succeed if it is executed again.
+ canceled may well succeed if it is executed again.
</para>
<para>
@@ -1751,7 +1751,7 @@ if (!triggered)
Another option is to increase <xref linkend="guc-vacuum-defer-cleanup-age">
on the primary server, so that dead rows will not be cleaned up as quickly
as they normally would be. This will allow more time for queries to
- execute before they are cancelled on the standby, without having to set
+ execute before they are canceled on the standby, without having to set
a high <varname>max_standby_streaming_delay</>. However it is
difficult to guarantee any specific execution-time window with this
approach, since <varname>vacuum_defer_cleanup_age</> is measured in
@@ -1981,7 +1981,7 @@ LOG: database system is ready to accept read only connections
<command>DROP TABLESPACE</> can only succeed if the tablespace is empty.
Some standby users may be actively using the tablespace via their
<varname>temp_tablespaces</> parameter. If there are temporary files in the
- tablespace, all active queries are cancelled to ensure that temporary
+ tablespace, all active queries are canceled to ensure that temporary
files are removed, so the tablespace can be removed and WAL replay
can continue.
</para>
diff --git a/doc/src/sgml/indexam.sgml b/doc/src/sgml/indexam.sgml
index c7e997793d..bb94258385 100644
--- a/doc/src/sgml/indexam.sgml
+++ b/doc/src/sgml/indexam.sgml
@@ -712,7 +712,7 @@ amrestrpos (IndexScanDesc scan);
read-write conflict with the insert of any tuple into that index by a
concurrent serializable transaction. If certain patterns of read-write
conflicts are detected among a set of concurrent serializable
- transactions, one of those transactions may be cancelled to protect data
+ transactions, one of those transactions may be canceled to protect data
integrity. When the flag is set, it indicates that the index access
method implements finer-grained predicate locking, which will tend to
reduce the frequency of such transaction cancellations.
diff --git a/doc/src/sgml/information_schema.sgml b/doc/src/sgml/information_schema.sgml
index 6df69db4aa..77a00cde9b 100644
--- a/doc/src/sgml/information_schema.sgml
+++ b/doc/src/sgml/information_schema.sgml
@@ -380,6 +380,53 @@
</row>
<row>
+ <entry><literal>character_set_catalog</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>character_set_schema</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>character_set_name</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>collation_catalog</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>
+ Name of the database containing the collation of the attribute
+ (always the current database), null if default or the data type
+ of the attribute is not collatable
+ </entry>
+ </row>
+
+ <row>
+ <entry><literal>collation_schema</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>
+ Name of the schema containing the collation of the attribute,
+ null if default or the data type of the attribute is not
+ collatable
+ </entry>
+ </row>
+
+ <row>
+ <entry><literal>collation_name</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>
+ Name of the collation of the attribute, null if default or the
+ data type of the attribute is not collatable
+ </entry>
+ </row>
+
+ <row>
<entry><literal>numeric_precision</literal></entry>
<entry><type>cardinal_number</type></entry>
<entry>
@@ -1321,19 +1368,29 @@
<row>
<entry><literal>collation_catalog</literal></entry>
<entry><type>sql_identifier</type></entry>
- <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ <entry>
+ Name of the database containing the collation of the column
+ (always the current database), null if default or the data type
+ of the column is not collatable
+ </entry>
</row>
<row>
<entry><literal>collation_schema</literal></entry>
<entry><type>sql_identifier</type></entry>
- <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ <entry>
+ Name of the schema containing the collation of the column, null
+ if default or the data type of the column is not collatable
+ </entry>
</row>
<row>
<entry><literal>collation_name</literal></entry>
<entry><type>sql_identifier</type></entry>
- <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ <entry>
+ Name of the collation of the column, null if default or the
+ data type of the column is not collatable
+ </entry>
</row>
<row>
@@ -1996,19 +2053,29 @@
<row>
<entry><literal>collation_catalog</literal></entry>
<entry><type>sql_identifier</type></entry>
- <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ <entry>
+ Name of the database containing the collation of the domain
+ (always the current database), null if default or the data type
+ of the domain is not collatable
+ </entry>
</row>
<row>
<entry><literal>collation_schema</literal></entry>
<entry><type>sql_identifier</type></entry>
- <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ <entry>
+ Name of the schema containing the collation of the domain, null
+ if default or the data type of the domain is not collatable
+ </entry>
</row>
<row>
<entry><literal>collation_name</literal></entry>
<entry><type>sql_identifier</type></entry>
- <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ <entry>
+ Name of the collation of the column, null if default or the
+ data type of the domain is not collatable
+ </entry>
</row>
<row>
@@ -2147,7 +2214,7 @@
<para>
The view <literal>element_types</literal> contains the data type
- descriptors of the elements of arrays. When a table column,
+ descriptors of the elements of arrays. When a table column, composite-type attribute,
domain, function parameter, or function return value is defined to
be of an array type, the respective information schema view only
contains <literal>ARRAY</literal> in the column
@@ -2212,9 +2279,11 @@ ORDER BY c.ordinal_position;
<entry>
The type of the object that uses the array being described: one
of <literal>TABLE</literal> (the array is used by a column of
- that table), <literal>DOMAIN</literal> (the array is used by
- that domain), <literal>ROUTINE</literal> (the array is used by
- a parameter or the return data type of that function).
+ that table), <literal>USER-DEFINED TYPE</literal> (the array is
+ used by an attribute of that composite type),
+ <literal>DOMAIN</literal> (the array is used by that domain),
+ <literal>ROUTINE</literal> (the array is used by a parameter or
+ the return data type of that function).
</entry>
</row>
@@ -2273,19 +2342,30 @@ ORDER BY c.ordinal_position;
<row>
<entry><literal>collation_catalog</literal></entry>
<entry><type>sql_identifier</type></entry>
- <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ <entry>
+ Name of the database containing the collation of the element
+ type (always the current database), null if default or the data
+ type of the element is not collatable
+ </entry>
</row>
<row>
<entry><literal>collation_schema</literal></entry>
<entry><type>sql_identifier</type></entry>
- <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ <entry>
+ Name of the schema containing the collation of the element
+ type, null if default or the data type of the element is not
+ collatable
+ </entry>
</row>
<row>
<entry><literal>collation_name</literal></entry>
<entry><type>sql_identifier</type></entry>
- <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ <entry>
+ Name of the collation of the element type, null if default or
+ the data type of the element is not collatable
+ </entry>
</row>
<row>
@@ -3023,19 +3103,19 @@ ORDER BY c.ordinal_position;
<row>
<entry><literal>collation_catalog</literal></entry>
<entry><type>sql_identifier</type></entry>
- <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ <entry>Always null, since this information is not applied to parameter data types in <productname>PostgreSQL</></entry>
</row>
<row>
<entry><literal>collation_schema</literal></entry>
<entry><type>sql_identifier</type></entry>
- <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ <entry>Always null, since this information is not applied to parameter data types in <productname>PostgreSQL</></entry>
</row>
<row>
<entry><literal>collation_name</literal></entry>
<entry><type>sql_identifier</type></entry>
- <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ <entry>Always null, since this information is not applied to parameter data types in <productname>PostgreSQL</></entry>
</row>
<row>
@@ -3259,7 +3339,7 @@ ORDER BY c.ordinal_position;
difference between this view
and <literal>column_privileges</literal> is that this view omits
columns that have been made accessible to the current user by way
- of a grant to public.
+ of a grant to <literal>PUBLIC</literal>.
</para>
<table>
@@ -3342,7 +3422,7 @@ ORDER BY c.ordinal_position;
difference between this view
and <literal>routine_privileges</literal> is that this view omits
functions that have been made accessible to the current user by way
- of a grant to public.
+ of a grant to <literal>PUBLIC</literal>.
</para>
<table>
@@ -3436,7 +3516,7 @@ ORDER BY c.ordinal_position;
difference between this view
and <literal>table_privileges</literal> is that this view omits
tables that have been made accessible to the current user by way of
- a grant to public.
+ a grant to <literal>PUBLIC</literal>.
</para>
<table>
@@ -3509,6 +3589,81 @@ ORDER BY c.ordinal_position;
</table>
</sect1>
+ <sect1 id="infoschema-role-udt-grants">
+ <title><literal>role_udt_grants</literal></title>
+
+ <para>
+ The view <literal>role_udt_grants</literal> is intended to identify
+ <literal>USAGE</literal> privileges granted on user-defined types
+ where the grantor or grantee is a currently enabled role. Further
+ information can be found under
+ <literal>udt_privileges</literal>. The only effective difference
+ between this view and <literal>udt_privileges</literal> is that
+ this view omits objects that have been made accessible to the
+ current user by way of a grant to <literal>PUBLIC</literal>. Since
+ data types do not have real privileges in PostgreSQL, but only an
+ implicit grant to <literal>PUBLIC</literal>, this view is empty.
+ </para>
+
+ <table>
+ <title><literal>role_udt_grants</literal> Columns</title>
+
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Data Type</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry><literal>grantor</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>The name of the role that granted the privilege</entry>
+ </row>
+
+ <row>
+ <entry><literal>grantee</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>The name of the role that the privilege was granted to</entry>
+ </row>
+
+ <row>
+ <entry><literal>udt_catalog</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Name of the database containing the type (always the current database)</entry>
+ </row>
+
+ <row>
+ <entry><literal>udt_schema</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Name of the schema containing the type</entry>
+ </row>
+
+ <row>
+ <entry><literal>udt_name</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Name of the type</entry>
+ </row>
+
+ <row>
+ <entry><literal>privilege_type</literal></entry>
+ <entry><type>character_data</type></entry>
+ <entry>Always <literal>TYPE USAGE</literal></entry>
+ </row>
+
+ <row>
+ <entry><literal>is_grantable</literal></entry>
+ <entry><type>yes_or_no</type></entry>
+ <entry><literal>YES</literal> if the privilege is grantable, <literal>NO</literal> if not</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect1>
+
<sect1 id="infoschema-role-usage-grants">
<title><literal>role_usage_grants</literal></title>
@@ -3520,7 +3675,7 @@ ORDER BY c.ordinal_position;
<literal>usage_privileges</literal>. The only effective difference
between this view and <literal>usage_privileges</literal> is that
this view omits objects that have been made accessible to the
- current user by way of a grant to public.
+ current user by way of a grant to <literal>PUBLIC</literal>.
</para>
<table>
@@ -3835,19 +3990,19 @@ ORDER BY c.ordinal_position;
<row>
<entry><literal>collation_catalog</literal></entry>
<entry><type>sql_identifier</type></entry>
- <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ <entry>Always null, since this information is not applied to return data types in <productname>PostgreSQL</></entry>
</row>
<row>
<entry><literal>collation_schema</literal></entry>
<entry><type>sql_identifier</type></entry>
- <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ <entry>Always null, since this information is not applied to return data types in <productname>PostgreSQL</></entry>
</row>
<row>
<entry><literal>collation_name</literal></entry>
<entry><type>sql_identifier</type></entry>
- <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ <entry>Always null, since this information is not applied to return data types in <productname>PostgreSQL</></entry>
</row>
<row>
@@ -5499,6 +5654,80 @@ ORDER BY c.ordinal_position;
</note>
</sect1>
+ <sect1 id="infoschema-udt-privileges">
+ <title><literal>udt_privileges</literal></title>
+
+ <para>
+ The view <literal>udt_privileges</literal> is intended to identify
+ <literal>USAGE</literal> privileges granted on user-defined types
+ to a currently enabled role or by a currently enabled role. Since
+ data types do not have real privileges
+ in <productname>PostgreSQL</productname>, this view shows implicit
+ non-grantable <literal>USAGE</literal> privileges granted by the
+ owner to <literal>PUBLIC</literal> for all types, including
+ built-in ones (except domains,
+ see <xref linkend="infoschema-usage-privileges"> for that).
+ </para>
+
+ <table>
+ <title><literal>udt_privileges</literal> Columns</title>
+
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Data Type</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry><literal>grantor</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Name of the role that granted the privilege</entry>
+ </row>
+
+ <row>
+ <entry><literal>grantee</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Name of the role that the privilege was granted to</entry>
+ </row>
+
+ <row>
+ <entry><literal>udt_catalog</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Name of the database containing the type (always the current database)</entry>
+ </row>
+
+ <row>
+ <entry><literal>udt_schema</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Name of the schema containing the type</entry>
+ </row>
+
+ <row>
+ <entry><literal>udt_name</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Name of the type</entry>
+ </row>
+
+ <row>
+ <entry><literal>privilege_type</literal></entry>
+ <entry><type>character_data</type></entry>
+ <entry>Always <literal>TYPE USAGE</literal></entry>
+ </row>
+
+ <row>
+ <entry><literal>is_grantable</literal></entry>
+ <entry><type>yes_or_no</type></entry>
+ <entry><literal>YES</literal> if the privilege is grantable, <literal>NO</literal> if not</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect1>
+
<sect1 id="infoschema-usage-privileges">
<title><literal>usage_privileges</literal></title>
@@ -5585,6 +5814,220 @@ ORDER BY c.ordinal_position;
</table>
</sect1>
+ <sect1 id="infoschema-user-defined-types">
+ <title><literal>user_defined_types</literal></title>
+
+ <para>
+ The view <literal>user_defined_types</literal> currently contains
+ all composite types defined in the current database.
+ </para>
+
+ <para>
+ SQL knows about two kinds of user-defined types: structured types
+ (also known as composite types
+ in <productname>PostgreSQL</productname>) and distinct types (not
+ implemented in <productname>PostgreSQL</productname>). To be
+ future-proof, use the
+ column <literal>user_defined_type_category</literal> to
+ differentiate between these. Other user-defined types such as base
+ types and enums, which are <productname>PostgreSQL</productname>
+ extensions, are not shown here. For domains,
+ see <xref linkend="infoschema-domains"> instead.
+ </para>
+
+ <table>
+ <title><literal>user_defined_types</literal> Columns</title>
+
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Data Type</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry><literal>user_defined_type_catalog</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Name of the database that contains the type (always the current database)</entry>
+ </row>
+
+ <row>
+ <entry><literal>user_defined_type_schema</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Name of the schema that contains the type</entry>
+ </row>
+
+ <row>
+ <entry><literal>user_defined_type_name</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Name of the type</entry>
+ </row>
+
+ <row>
+ <entry><literal>user_defined_type_category</literal></entry>
+ <entry><type>character_data</type></entry>
+ <entry>
+ Currently always <literal>STRUCTURED</literal>
+ </entry>
+ </row>
+
+ <row>
+ <entry><literal>is_instantiable</literal></entry>
+ <entry><type>yes_or_no</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>is_final</literal></entry>
+ <entry><type>yes_or_no</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>ordering_form</literal></entry>
+ <entry><type>character_data</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>ordering_category</literal></entry>
+ <entry><type>character_data</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>ordering_routine_catalog</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>ordering_routine_schema</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>ordering_routine_name</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>reference_type</literal></entry>
+ <entry><type>character_data</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>data_type</literal></entry>
+ <entry><type>character_data</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>character_maximum_length</literal></entry>
+ <entry><type>cardinal_number</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>character_octet_length</literal></entry>
+ <entry><type>cardinal_number</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>character_set_catalog</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>character_set_schema</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>character_set_name</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>collation_catalog</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>collation_schema</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>collation_name</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>numeric_precision</literal></entry>
+ <entry><type>cardinal_number</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>numeric_precision_radix</literal></entry>
+ <entry><type>cardinal_number</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>numeric_scale</literal></entry>
+ <entry><type>cardinal_number</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>datetime_precision</literal></entry>
+ <entry><type>cardinal_number</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>interval_type</literal></entry>
+ <entry><type>character_data</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>interval_precision</literal></entry>
+ <entry><type>character_data</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>source_dtd_identifier</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+
+ <row>
+ <entry><literal>ref_dtd_identifier</literal></entry>
+ <entry><type>sql_identifier</type></entry>
+ <entry>Applies to a feature not available in <productname>PostgreSQL</></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect1>
+
<sect1 id="infoschema-user-mapping-options">
<title><literal>user_mapping_options</literal></title>
diff --git a/doc/src/sgml/install-windows.sgml b/doc/src/sgml/install-windows.sgml
index cb8bca9c63..439f5ad82b 100644
--- a/doc/src/sgml/install-windows.sgml
+++ b/doc/src/sgml/install-windows.sgml
@@ -170,7 +170,7 @@ $ENV{PATH}=$ENV{PATH} . ';c:\some\where\bison\bin';
ActiveState Perl is required to run the build generation scripts. MinGW
or Cygwin Perl will not work. It must also be present in the PATH.
Binaries can be downloaded from
- <ulink url="http://www.activestate.com"></> (Note: version 5.8 is required,
+ <ulink url="http://www.activestate.com"></> (Note: version 5.8 or later is required,
the free Standard Distribution is sufficient).
</para></listitem>
</varlistentry>
diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml
index 3a57295bd3..268b642b82 100644
--- a/doc/src/sgml/libpq.sgml
+++ b/doc/src/sgml/libpq.sgml
@@ -4088,7 +4088,7 @@ int PQflush(PGconn *conn);
</sect1>
<sect1 id="libpq-cancel">
- <title>Cancelling Queries in Progress</title>
+ <title>Canceling Queries in Progress</title>
<indexterm zone="libpq-cancel">
<primary>canceling</primary>
@@ -6866,7 +6866,7 @@ ldap://ldap.acme.com/cn=dbserver,cn=hosts?pgconnectinfo?base?(objectclass=*)
<tbody>
<row>
- <entry><literal>disabled</></entry>
+ <entry><literal>disable</></entry>
<entry>No</entry>
<entry>No</entry>
<entry>I don't care about security, and I don't want to pay the overhead
diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml
index 553c16873f..8da8f85e70 100644
--- a/doc/src/sgml/monitoring.sgml
+++ b/doc/src/sgml/monitoring.sgml
@@ -282,7 +282,7 @@ postgres: <replaceable>user</> <replaceable>database</> <replaceable>host</> <re
total disk blocks read, total buffer hits (i.e., block
read requests avoided by finding the block already in buffer cache),
number of rows returned, fetched, inserted, updated and deleted, the
- total number of queries cancelled due to conflict with recovery (on
+ total number of queries canceled due to conflict with recovery (on
standby servers), and time of last statistics reset.
</entry>
</row>
@@ -290,7 +290,7 @@ postgres: <replaceable>user</> <replaceable>database</> <replaceable>host</> <re
<row>
<entry><structname>pg_stat_database_conflicts</><indexterm><primary>pg_stat_database_conflicts</primary></indexterm></entry>
<entry>One row per database, showing database OID, database name and
- the number of queries that have been cancelled in this database due to
+ the number of queries that have been canceled in this database due to
dropped tablespaces, lock timeouts, old snapshots, pinned buffers and
deadlocks. Will only contain information on standby servers, since
conflicts do not occur on master servers.
@@ -639,7 +639,7 @@ postgres: <replaceable>user</> <replaceable>database</> <replaceable>host</> <re
<entry><literal><function>pg_stat_get_db_conflict_tablespace</function>(<type>oid</type>)</literal></entry>
<entry><type>bigint</type></entry>
<entry>
- Number of queries cancelled because of recovery conflict with dropped tablespaces in database
+ Number of queries canceled because of recovery conflict with dropped tablespaces in database
</entry>
</row>
@@ -647,7 +647,7 @@ postgres: <replaceable>user</> <replaceable>database</> <replaceable>host</> <re
<entry><literal><function>pg_stat_get_db_conflict_lock</function>(<type>oid</type>)</literal></entry>
<entry><type>bigint</type></entry>
<entry>
- Number of queries cancelled because of recovery conflict with locks in database
+ Number of queries canceled because of recovery conflict with locks in database
</entry>
</row>
@@ -655,7 +655,7 @@ postgres: <replaceable>user</> <replaceable>database</> <replaceable>host</> <re
<entry><literal><function>pg_stat_get_db_conflict_snapshot</function>(<type>oid</type>)</literal></entry>
<entry><type>bigint</type></entry>
<entry>
- Number of queries cancelled because of recovery conflict with old snapshots in database
+ Number of queries canceled because of recovery conflict with old snapshots in database
</entry>
</row>
@@ -663,7 +663,7 @@ postgres: <replaceable>user</> <replaceable>database</> <replaceable>host</> <re
<entry><literal><function>pg_stat_get_db_conflict_bufferpin</function>(<type>oid</type>)</literal></entry>
<entry><type>bigint</type></entry>
<entry>
- Number of queries cancelled because of recovery conflict with pinned buffers in database
+ Number of queries canceled because of recovery conflict with pinned buffers in database
</entry>
</row>
@@ -671,7 +671,7 @@ postgres: <replaceable>user</> <replaceable>database</> <replaceable>host</> <re
<entry><literal><function>pg_stat_get_db_conflict_startup_deadlock</function>(<type>oid</type>)</literal></entry>
<entry><type>bigint</type></entry>
<entry>
- Number of queries cancelled because of recovery conflict with deadlocks in database
+ Number of queries canceled because of recovery conflict with deadlocks in database
</entry>
</row>
diff --git a/doc/src/sgml/mvcc.sgml b/doc/src/sgml/mvcc.sgml
index e688176acb..1d337b8055 100644
--- a/doc/src/sgml/mvcc.sgml
+++ b/doc/src/sgml/mvcc.sgml
@@ -658,6 +658,26 @@ ERROR: could not serialize access due to read/write dependencies among transact
protections automatically provided by Serializable transactions.
</para>
</listitem>
+ <listitem>
+ <para>
+ When the system is forced to combine multiple page-level predicate
+ locks into a single relation-level predicate lock because the predicate
+ lock table is short of memory, an increase in the rate of serialization
+ failures may occur. You can avoid this by increasing
+ <xref linkend="guc-max-pred-locks-per-transaction">.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ A sequential scan will always necessitate a relation-level predicate
+ lock. This can result in an increased rate of serialization failures.
+ It may be helpful to encourage the use of index scans by reducing
+ <xref linkend="guc-random-page-cost"> and/or increasing
+ <xref linkend="guc-cpu-tuple-cost">. Be sure to weigh any decrease
+ in transaction rollbacks and restarts against any overall change in
+ query execution time.
+ </para>
+ </listitem>
</itemizedlist>
</para>
diff --git a/doc/src/sgml/pgupgrade.sgml b/doc/src/sgml/pgupgrade.sgml
index a505707cc0..102ca526bb 100644
--- a/doc/src/sgml/pgupgrade.sgml
+++ b/doc/src/sgml/pgupgrade.sgml
@@ -60,14 +60,14 @@
<term><option>-b</option> <replaceable>old_bindir</></term>
<term><option>--old-bindir=</option><replaceable>old_bindir</></term>
<listitem><para>the old cluster executable directory;
- environment variable <envar>OLDBINDIR</></para></listitem>
+ environment variable <envar>PGBINOLD</></para></listitem>
</varlistentry>
<varlistentry>
<term><option>-B</option> <replaceable>new_bindir</></term>
<term><option>--new-bindir=</option><replaceable>new_bindir</></term>
<listitem><para>the new cluster executable directory;
- environment variable <envar>NEWBINDIR</></para></listitem>
+ environment variable <envar>PGBINNEW</></para></listitem>
</varlistentry>
<varlistentry>
@@ -80,14 +80,14 @@
<term><option>-d</option> <replaceable>old_datadir</></term>
<term><option>--old-datadir=</option><replaceable>old_datadir</></term>
<listitem><para>the old cluster data directory; environment
- variable <envar>OLDDATADIR</></para></listitem>
+ variable <envar>PGDATAOLD</></para></listitem>
</varlistentry>
<varlistentry>
<term><option>-D</option> <replaceable>new_datadir</></term>
<term><option>--new-datadir=</option><replaceable>new_datadir</></term>
<listitem><para>the new cluster data directory; environment
- variable <envar>NEWDATADIR</></para></listitem>
+ variable <envar>PGDATANEW</></para></listitem>
</varlistentry>
<varlistentry>
@@ -105,7 +105,7 @@
<varlistentry>
<term><option>-k</option></term>
<term><option>--link</option></term>
- <listitem><para>link instead of copying files to new cluster</para></listitem>
+ <listitem><para>use hard links instead of copying files to the new cluster</para></listitem>
</varlistentry>
<varlistentry>
@@ -118,14 +118,14 @@
<term><option>-p</option> <replaceable>old_port_number</></term>
<term><option>--old-port=</option><replaceable>old_portnum</></term>
<listitem><para>the old cluster port number; environment
- variable <envar>PGPORT</></para></listitem>
+ variable <envar>PGPORTOLD</></para></listitem>
</varlistentry>
<varlistentry>
<term><option>-P</option> <replaceable>new_port_number</></term>
<term><option>--new-port=</option><replaceable>new_portnum</></term>
<listitem><para>the new cluster port number; environment
- variable <envar>PGPORT</></para></listitem>
+ variable <envar>PGPORTNEW</></para></listitem>
</varlistentry>
<varlistentry>
@@ -256,8 +256,7 @@ gmake prefix=/usr/local/pgsql.new install
so you might want to set authentication to <literal>trust</> in
<filename>pg_hba.conf</>, or if using <literal>md5</> authentication,
use a <filename>~/.pgpass</> file (see <xref linkend="libpq-pgpass">)
- to avoid being prompted repeatedly for a password. Also make sure
- pg_upgrade is the only program that can connect to the clusters.
+ to avoid being prompted repeatedly for a password.
</para>
</step>
@@ -293,17 +292,24 @@ NET STOP pgsql-8.3 (<productname>PostgreSQL</> 8.3 and older used a different s
<para>
Always run the <application>pg_upgrade</> binary of the new server, not the old one.
<application>pg_upgrade</> requires the specification of the old and new cluster's
- data and executable (<filename>bin</>) directories. You can also specify separate
+ data and executable (<filename>bin</>) directories. You can also specify
user and port values, and whether you want the data linked instead of
- copied (the default). If you use linking, the upgrade will be much
- faster (hard link data files rather than copying them), but you
- will no longer be able to access your old cluster once you start
- the new cluster after the upgrade. Link mode also requires that the
- old and new cluster data directories be in the same file system.
- See <literal>pg_upgrade --help</> for a full list of options.
+ copied (the default).
</para>
<para>
+ If you use link mode, the upgrade will be much faster (no file
+ copying), but you will not be able to access your old cluster
+ once you start the new cluster after the upgrade. Link mode also
+ requires that the old and new cluster data directories be in the
+ same file system. See <literal>pg_upgrade --help</> for a full
+ list of options.
+ </para>
+
+ <para>
+ </para>
+
+ <para>
For Windows users, you must be logged into an administrative account, and
then start a shell as the <literal>postgres</> user and set the proper path:
@@ -331,7 +337,9 @@ pg_upgrade.exe
</para>
<para>
- Obviously, no one should be accessing the clusters during the upgrade.
+ Obviously, no one should be accessing the clusters during the
+ upgrade. <application>pg_upgrade</> defaults to running servers
+ on port 50432 to avoid unintended client connections.
</para>
<para>
diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index d3de330916..508991bcc2 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -1142,7 +1142,7 @@
</sect2>
<sect2>
- <title>Cancelling Requests in Progress</title>
+ <title>Canceling Requests in Progress</title>
<para>
During the processing of a query, the frontend might request
diff --git a/doc/src/sgml/ref/alter_domain.sgml b/doc/src/sgml/ref/alter_domain.sgml
index 2a5a935edc..cf504c3bcc 100644
--- a/doc/src/sgml/ref/alter_domain.sgml
+++ b/doc/src/sgml/ref/alter_domain.sgml
@@ -28,10 +28,12 @@ ALTER DOMAIN <replaceable class="PARAMETER">name</replaceable>
ALTER DOMAIN <replaceable class="PARAMETER">name</replaceable>
{ SET | DROP } NOT NULL
ALTER DOMAIN <replaceable class="PARAMETER">name</replaceable>
- ADD <replaceable class="PARAMETER">domain_constraint</replaceable>
+ ADD <replaceable class="PARAMETER">domain_constraint</replaceable> [ NOT VALID ]
ALTER DOMAIN <replaceable class="PARAMETER">name</replaceable>
DROP CONSTRAINT <replaceable class="PARAMETER">constraint_name</replaceable> [ RESTRICT | CASCADE ]
ALTER DOMAIN <replaceable class="PARAMETER">name</replaceable>
+ VALIDATE CONSTRAINT <replaceable class="PARAMETER">constraint_name</replaceable>
+ALTER DOMAIN <replaceable class="PARAMETER">name</replaceable>
OWNER TO <replaceable class="PARAMETER">new_owner</replaceable>
ALTER DOMAIN <replaceable class="PARAMETER">name</replaceable>
SET SCHEMA <replaceable class="PARAMETER">new_schema</replaceable>
@@ -70,13 +72,19 @@ ALTER DOMAIN <replaceable class="PARAMETER">name</replaceable>
</varlistentry>
<varlistentry>
- <term>ADD <replaceable class="PARAMETER">domain_constraint</replaceable></term>
+ <term>ADD <replaceable class="PARAMETER">domain_constraint</replaceable> [ NOT VALID ]</term>
<listitem>
<para>
This form adds a new constraint to a domain using the same syntax as
<xref linkend="SQL-CREATEDOMAIN">.
- This will only succeed if all columns using the domain satisfy the
- new constraint.
+ When a new constraint is added to a domain, all columns using that
+ domain will be checked against the newly added constraint. These
+ checks can be suppressed by adding the new constraint using the
+ <literal>NOT VALID</literal> option; the constraint can later be made
+ valid using <command>ALTER DOMAIN ... VALIDATE CONSTRAINT</command>.
+ Newly inserted or updated rows are always checked against all
+ constraints, even those marked <literal>NOT VALID</literal>.
+ <literal>NOT VALID</> is only accepted for <literal>CHECK</> constraints.
</para>
</listitem>
</varlistentry>
@@ -91,6 +99,17 @@ ALTER DOMAIN <replaceable class="PARAMETER">name</replaceable>
</varlistentry>
<varlistentry>
+ <term>VALIDATE CONSTRAINT</term>
+ <listitem>
+ <para>
+ This form validates a constraint previously added as
+ <literal>NOT VALID</>, that is, verify that all data in columns using the
+ domain satisfy the specified constraint.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term>OWNER</term>
<listitem>
<para>
@@ -156,6 +175,16 @@ ALTER DOMAIN <replaceable class="PARAMETER">name</replaceable>
</varlistentry>
<varlistentry>
+ <term><replaceable class="PARAMETER">NOT VALID</replaceable></term>
+ <listitem>
+ <para>
+ Do not verify existing column data for constraint validity.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
<term><literal>CASCADE</literal></term>
<listitem>
<para>
@@ -250,9 +279,11 @@ ALTER DOMAIN zipcode SET SCHEMA customers;
<para>
<command>ALTER DOMAIN</command> conforms to the <acronym>SQL</acronym>
- standard,
- except for the <literal>OWNER</> and <literal>SET SCHEMA</> variants,
- which are <productname>PostgreSQL</productname> extensions.
+ standard, except for the <literal>OWNER</>, <literal>SET SCHEMA</> and
+ <literal>VALIDATE CONSTRAINT</> variants, which are
+ <productname>PostgreSQL</productname> extensions. The <literal>NOT VALID</>
+ clause of the <literal>ADD CONSTRAINT</> variant is also a
+ <productname>PostgreSQL</productname> extension.
</para>
</refsect1>
diff --git a/doc/src/sgml/ref/alter_table.sgml b/doc/src/sgml/ref/alter_table.sgml
index 01d3105bf6..4c2a4cd22e 100644
--- a/doc/src/sgml/ref/alter_table.sgml
+++ b/doc/src/sgml/ref/alter_table.sgml
@@ -240,12 +240,14 @@ ALTER TABLE <replaceable class="PARAMETER">name</replaceable>
This form adds a new constraint to a table using the same syntax as
<xref linkend="SQL-CREATETABLE">, plus the option <literal>NOT
VALID</literal>, which is currently only allowed for foreign key
- constraints.
+ and CHECK constraints.
If the constraint is marked <literal>NOT VALID</literal>, the
potentially-lengthy initial check to verify that all rows in the table
satisfy the constraint is skipped. The constraint will still be
enforced against subsequent inserts or updates (that is, they'll fail
- unless there is a matching row in the referenced table). But the
+ unless there is a matching row in the referenced table, in the case
+ of foreign keys; and they'll fail unless the new row matches the
+ specified check constraints). But the
database will not assume that the constraint holds for all rows in
the table, until it is validated by using the <literal>VALIDATE
CONSTRAINT</literal> option.
@@ -308,10 +310,10 @@ ALTER TABLE <replaceable class="PARAMETER">name</replaceable>
<term><literal>VALIDATE CONSTRAINT</literal></term>
<listitem>
<para>
- This form validates a foreign key constraint that was previously created
+ This form validates a foreign key or check constraint that was previously created
as <literal>NOT VALID</literal>, by scanning the table to ensure there
- are no unmatched rows. Nothing happens if the constraint is
- already marked valid.
+ are no rows for which the constraint is not satisfied.
+ Nothing happens if the constraint is already marked valid.
The value of separating validation from initial creation of the
constraint is that validation requires a lesser lock on the table
than constraint creation does.
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 132a7b354b..6385c78d1d 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -1626,6 +1626,21 @@ Tue Oct 26 21:40:57 CEST 1999
<varlistentry>
+ <term><literal>\ir <replaceable class="parameter">filename</replaceable></literal></term>
+ <listitem>
+ <para>
+ The <literal>\ir</> command is similar to <literal>\i</>, but resolves
+ relative pathnames differently. When executing in interactive mode,
+ the two commands behave identically. However, when invoked from a
+ script, <literal>\ir</literal> interprets pathnames relative to the
+ directory in which the script is located, rather than the current
+ working directory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
<term><literal>\l</literal> (or <literal>\list</literal>)</term>
<term><literal>\l+</literal> (or <literal>\list+</literal>)</term>
<listitem>
diff --git a/doc/src/sgml/ref/set_transaction.sgml b/doc/src/sgml/ref/set_transaction.sgml
index f864bbf6a6..e28a7e1cde 100644
--- a/doc/src/sgml/ref/set_transaction.sgml
+++ b/doc/src/sgml/ref/set_transaction.sgml
@@ -143,7 +143,7 @@ SET SESSION CHARACTERISTICS AS TRANSACTION <replaceable class="parameter">transa
transaction, the transaction may block when first acquiring its snapshot,
after which it is able to run without the normal overhead of a
<literal>SERIALIZABLE</literal> transaction and without any risk of
- contributing to or being cancelled by a serialization failure. This mode
+ contributing to or being canceled by a serialization failure. This mode
is well suited for long-running reports or backups.
</para>
</refsect1>
diff --git a/doc/src/sgml/release-7.4.sgml b/doc/src/sgml/release-7.4.sgml
index ee8184b16c..f13957b026 100644
--- a/doc/src/sgml/release-7.4.sgml
+++ b/doc/src/sgml/release-7.4.sgml
@@ -465,7 +465,7 @@
</para>
<para>
- This fix prevents a PANIC if a <literal>VACUUM FULL</> is cancelled
+ This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled
after it's already committed its tuple movements, as well as transient
errors if a plain <literal>VACUUM</> is interrupted after having
truncated the table.
diff --git a/doc/src/sgml/release-8.0.sgml b/doc/src/sgml/release-8.0.sgml
index 469a76d893..5d6d60e607 100644
--- a/doc/src/sgml/release-8.0.sgml
+++ b/doc/src/sgml/release-8.0.sgml
@@ -609,7 +609,7 @@
</para>
<para>
- This fix prevents a PANIC if a <literal>VACUUM FULL</> is cancelled
+ This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled
after it's already committed its tuple movements, as well as transient
errors if a plain <literal>VACUUM</> is interrupted after having
truncated the table.
diff --git a/doc/src/sgml/release-8.1.sgml b/doc/src/sgml/release-8.1.sgml
index 4e1a0c5dd0..5f74abf45e 100644
--- a/doc/src/sgml/release-8.1.sgml
+++ b/doc/src/sgml/release-8.1.sgml
@@ -849,7 +849,7 @@
</para>
<para>
- This fix prevents a PANIC if a <literal>VACUUM FULL</> is cancelled
+ This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled
after it's already committed its tuple movements, as well as transient
errors if a plain <literal>VACUUM</> is interrupted after having
truncated the table.
@@ -4203,7 +4203,7 @@ psql -t -f fixseq.sql db1 | psql -e db1
<para>
While the <varname>statement_timeout</> configuration
parameter allows a query taking more than a certain amount of
- time to be cancelled, the <command>NOWAIT</> option allows a
+ time to be canceled, the <command>NOWAIT</> option allows a
query to be canceled as soon as a <command>SELECT ... FOR
UPDATE/SHARE</> command cannot immediately acquire a row lock.
</para>
diff --git a/doc/src/sgml/release-8.2.sgml b/doc/src/sgml/release-8.2.sgml
index 0a9ee5031a..2ab644fa3f 100644
--- a/doc/src/sgml/release-8.2.sgml
+++ b/doc/src/sgml/release-8.2.sgml
@@ -1334,7 +1334,7 @@
</para>
<para>
- This fix prevents a PANIC if a <literal>VACUUM FULL</> is cancelled
+ This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled
after it's already committed its tuple movements, as well as transient
errors if a plain <literal>VACUUM</> is interrupted after having
truncated the table.
diff --git a/doc/src/sgml/release-8.3.sgml b/doc/src/sgml/release-8.3.sgml
index bccc141a54..7db9d6bcb0 100644
--- a/doc/src/sgml/release-8.3.sgml
+++ b/doc/src/sgml/release-8.3.sgml
@@ -1566,7 +1566,7 @@
</para>
<para>
- This fix prevents a PANIC if a <literal>VACUUM FULL</> is cancelled
+ This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled
after it's already committed its tuple movements, as well as transient
errors if a plain <literal>VACUUM</> is interrupted after having
truncated the table.
diff --git a/doc/src/sgml/release-8.4.sgml b/doc/src/sgml/release-8.4.sgml
index e4fddd44e6..27e4e2902d 100644
--- a/doc/src/sgml/release-8.4.sgml
+++ b/doc/src/sgml/release-8.4.sgml
@@ -2062,7 +2062,7 @@
</para>
<para>
- This fix prevents a PANIC if a <literal>VACUUM FULL</> is cancelled
+ This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled
after it's already committed its tuple movements, as well as transient
errors if a plain <literal>VACUUM</> is interrupted after having
truncated the table.
diff --git a/doc/src/sgml/release-9.1.sgml b/doc/src/sgml/release-9.1.sgml
index 2d6c8edf9b..914464eb6c 100644
--- a/doc/src/sgml/release-9.1.sgml
+++ b/doc/src/sgml/release-9.1.sgml
@@ -779,7 +779,7 @@
</para>
<para>
- This helps avoid cancelling long-running queries on the standby.
+ This helps avoid canceling long-running queries on the standby.
</para>
</listitem>
@@ -846,8 +846,7 @@
<listitem>
<para>
- Add functions to control streaming replication replay (Simon
- Riggs)
+ Add functions to control streaming replication replay (Simon Riggs)
</para>
<para>
@@ -1742,20 +1741,6 @@
</para>
</listitem>
- <listitem>
- <para>
- Minimize lock levels for <link
- linkend="SQL-CREATETRIGGER"><command>CREATE TRIGGER</></link>
- and many <link linkend="SQL-ALTERTABLE"><command>ALTER
- TABLE</></link> and <link linkend="SQL-CREATERULE"><command>CREATE
- RULE</></link> operations (Simon Riggs)
- </para>
-
- <para>
- This improves database availability when altering active databases.
- </para>
- </listitem>
-
</itemizedlist>
</sect4>
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index ba0822383f..3bf658d6b0 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -19,6 +19,8 @@
# Meta configuration
standard_targets = all install installdirs uninstall distprep clean distclean maintainer-clean coverage check installcheck maintainer-check
+# these targets should recurse even into subdirectories not being built:
+standard_always_targets = distprep clean distclean maintainer-clean
.PHONY: $(standard_targets) install-strip html man installcheck-parallel
@@ -603,6 +605,16 @@ endef
# $3: target to run in subdir (defaults to current element of $1)
recurse = $(foreach target,$(if $1,$1,$(standard_targets)),$(foreach subdir,$(if $2,$2,$(SUBDIRS)),$(eval $(call _create_recursive_target,$(target),$(subdir),$(if $3,$3,$(target))))))
+# If a makefile's list of SUBDIRS varies depending on configuration, then
+# any subdirectories excluded from SUBDIRS should instead be added to
+# ALWAYS_SUBDIRS, and then it must call recurse_always as well as recurse.
+# This ensures that distprep, distclean, etc will apply to all subdirectories.
+# In the normal case all arguments will be defaulted.
+# $1: targets to make recursive (defaults to standard_always_targets)
+# $2: list of subdirs (defaults to ALWAYS_SUBDIRS variable)
+# $3: target to run in subdir (defaults to current element of $1)
+recurse_always = $(foreach target,$(if $1,$1,$(standard_always_targets)),$(foreach subdir,$(if $2,$2,$(ALWAYS_SUBDIRS)),$(eval $(call _create_recursive_target,$(target),$(subdir),$(if $3,$3,$(target))))))
+
##########################################################################
#
diff --git a/src/backend/Makefile b/src/backend/Makefile
index e156bb48aa..ec82d8d344 100644
--- a/src/backend/Makefile
+++ b/src/backend/Makefile
@@ -174,8 +174,9 @@ $(top_builddir)/src/include/catalog/schemapg.h: catalog/schemapg.h
$(LN_S) "$$prereqdir/$(notdir $<)" .
$(top_builddir)/src/include/utils/errcodes.h: utils/errcodes.h
- cd '$(dir $@)' && rm -f $(notdir $@) && \
- $(LN_S) "../../../$(subdir)/utils/errcodes.h" .
+ prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
+ cd '$(dir $@)' && rm -f $(notdir $@) && \
+ $(LN_S) "$$prereqdir/$(notdir $<)" .
$(top_builddir)/src/include/utils/fmgroids.h: utils/fmgroids.h
prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
diff --git a/src/backend/access/common/tupdesc.c b/src/backend/access/common/tupdesc.c
index 16979c4ea7..4656dba642 100644
--- a/src/backend/access/common/tupdesc.c
+++ b/src/backend/access/common/tupdesc.c
@@ -200,6 +200,7 @@ CreateTupleDescCopyConstr(TupleDesc tupdesc)
cpy->check[i].ccname = pstrdup(constr->check[i].ccname);
if (constr->check[i].ccbin)
cpy->check[i].ccbin = pstrdup(constr->check[i].ccbin);
+ cpy->check[i].ccvalid = constr->check[i].ccvalid;
}
}
diff --git a/src/backend/access/gin/ginfast.c b/src/backend/access/gin/ginfast.c
index 82419e37ac..60a6d80a18 100644
--- a/src/backend/access/gin/ginfast.c
+++ b/src/backend/access/gin/ginfast.c
@@ -24,6 +24,7 @@
#include "miscadmin.h"
#include "storage/bufmgr.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
#define GIN_PAGE_FREESIZE \
diff --git a/src/backend/access/gin/gininsert.c b/src/backend/access/gin/gininsert.c
index 3e32af94a9..bea5f681fd 100644
--- a/src/backend/access/gin/gininsert.c
+++ b/src/backend/access/gin/gininsert.c
@@ -21,6 +21,7 @@
#include "storage/smgr.h"
#include "storage/indexfsm.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
typedef struct
diff --git a/src/backend/access/gist/gist.c b/src/backend/access/gist/gist.c
index 8227bfdb88..b756f6e0e3 100644
--- a/src/backend/access/gist/gist.c
+++ b/src/backend/access/gist/gist.c
@@ -22,6 +22,7 @@
#include "storage/bufmgr.h"
#include "storage/indexfsm.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
/* Working state for gistbuild and its callback */
typedef struct
@@ -714,7 +715,7 @@ gistdoinsert(Relation r, IndexTuple itup, Size freespace, GISTSTATE *giststate)
ereport(ERROR,
(errmsg("index \"%s\" contains an inner tuple marked as invalid",
RelationGetRelationName(r)),
- errdetail("This is caused by an incomplete page split at crash recovery before upgrading to 9.1."),
+ errdetail("This is caused by an incomplete page split at crash recovery before upgrading to PostgreSQL 9.1."),
errhint("Please REINDEX it.")));
/*
diff --git a/src/backend/access/gist/gistget.c b/src/backend/access/gist/gistget.c
index 1aba686844..5d5fd5b738 100644
--- a/src/backend/access/gist/gistget.c
+++ b/src/backend/access/gist/gistget.c
@@ -22,6 +22,7 @@
#include "storage/bufmgr.h"
#include "utils/builtins.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
/*
diff --git a/src/backend/access/gist/gistvacuum.c b/src/backend/access/gist/gistvacuum.c
index 33e6f34154..50c6270b00 100644
--- a/src/backend/access/gist/gistvacuum.c
+++ b/src/backend/access/gist/gistvacuum.c
@@ -270,7 +270,7 @@ gistbulkdelete(PG_FUNCTION_ARGS)
ereport(LOG,
(errmsg("index \"%s\" contains an inner tuple marked as invalid",
RelationGetRelationName(rel)),
- errdetail("This is caused by an incomplete page split at crash recovery before upgrading to 9.1."),
+ errdetail("This is caused by an incomplete page split at crash recovery before upgrading to PostgreSQL 9.1."),
errhint("Please REINDEX it.")));
}
}
diff --git a/src/backend/access/hash/hash.c b/src/backend/access/hash/hash.c
index 4cb29b2bb4..bfb10897d2 100644
--- a/src/backend/access/hash/hash.c
+++ b/src/backend/access/hash/hash.c
@@ -25,6 +25,7 @@
#include "optimizer/cost.h"
#include "optimizer/plancat.h"
#include "storage/bufmgr.h"
+#include "utils/rel.h"
/* Working state for hashbuild and its callback */
diff --git a/src/backend/access/hash/hashutil.c b/src/backend/access/hash/hashutil.c
index 6283f4a82b..aa68be596e 100644
--- a/src/backend/access/hash/hashutil.c
+++ b/src/backend/access/hash/hashutil.c
@@ -20,6 +20,7 @@
#include "executor/execdebug.h"
#include "storage/bufmgr.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
/*
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c
index b947c11f7d..c9b1d5fd04 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -479,8 +479,6 @@ heapgettup(HeapScanDesc scan,
if (valid)
{
- if (!scan->rs_relpredicatelocked)
- PredicateLockTuple(scan->rs_rd, tuple, snapshot);
LockBuffer(scan->rs_cbuf, BUFFER_LOCK_UNLOCK);
return;
}
@@ -748,16 +746,12 @@ heapgettup_pagemode(HeapScanDesc scan,
nkeys, key, valid);
if (valid)
{
- if (!scan->rs_relpredicatelocked)
- PredicateLockTuple(scan->rs_rd, tuple, scan->rs_snapshot);
scan->rs_cindex = lineindex;
return;
}
}
else
{
- if (!scan->rs_relpredicatelocked)
- PredicateLockTuple(scan->rs_rd, tuple, scan->rs_snapshot);
scan->rs_cindex = lineindex;
return;
}
@@ -1004,15 +998,17 @@ relation_openrv(const RangeVar *relation, LOCKMODE lockmode)
}
/* ----------------
- * try_relation_openrv - open any relation specified by a RangeVar
+ * relation_openrv_extended - open any relation specified by a RangeVar
*
- * Same as relation_openrv, but return NULL instead of failing for
- * relation-not-found. (Note that some other causes, such as
- * permissions problems, will still result in an ereport.)
+ * Same as relation_openrv, but with an additional missing_ok argument
+ * allowing a NULL return rather than an error if the relation is not
+ * found. (Note that some other causes, such as permissions problems,
+ * will still result in an ereport.)
* ----------------
*/
Relation
-try_relation_openrv(const RangeVar *relation, LOCKMODE lockmode)
+relation_openrv_extended(const RangeVar *relation, LOCKMODE lockmode,
+ bool missing_ok)
{
Oid relOid;
@@ -1032,7 +1028,7 @@ try_relation_openrv(const RangeVar *relation, LOCKMODE lockmode)
AcceptInvalidationMessages();
/* Look up the appropriate relation using namespace search */
- relOid = RangeVarGetRelid(relation, true);
+ relOid = RangeVarGetRelid(relation, missing_ok);
/* Return NULL on not-found */
if (!OidIsValid(relOid))
@@ -1125,18 +1121,20 @@ heap_openrv(const RangeVar *relation, LOCKMODE lockmode)
}
/* ----------------
- * try_heap_openrv - open a heap relation specified
+ * heap_openrv_extended - open a heap relation specified
* by a RangeVar node
*
- * As above, but return NULL instead of failing for relation-not-found.
+ * As above, but optionally return NULL instead of failing for
+ * relation-not-found.
* ----------------
*/
Relation
-try_heap_openrv(const RangeVar *relation, LOCKMODE lockmode)
+heap_openrv_extended(const RangeVar *relation, LOCKMODE lockmode,
+ bool missing_ok)
{
Relation r;
- r = try_relation_openrv(relation, lockmode);
+ r = relation_openrv_extended(relation, lockmode, missing_ok);
if (r)
{
@@ -1224,13 +1222,26 @@ heap_beginscan_internal(Relation relation, Snapshot snapshot,
scan->rs_strategy = NULL; /* set in initscan */
scan->rs_allow_strat = allow_strat;
scan->rs_allow_sync = allow_sync;
- scan->rs_relpredicatelocked = false;
/*
* we can use page-at-a-time mode if it's an MVCC-safe snapshot
*/
scan->rs_pageatatime = IsMVCCSnapshot(snapshot);
+ /*
+ * For a seqscan in a serializable transaction, acquire a predicate lock
+ * on the entire relation. This is required not only to lock all the
+ * matching tuples, but also to conflict with new insertions into the
+ * table. In an indexscan, we take page locks on the index pages covering
+ * the range specified in the scan qual, but in a heap scan there is
+ * nothing more fine-grained to lock. A bitmap scan is a different story,
+ * there we have already scanned the index and locked the index pages
+ * covering the predicate. But in that case we still have to lock any
+ * matching heap tuples.
+ */
+ if (!is_bitmapscan)
+ PredicateLockRelation(relation, snapshot);
+
/* we only need to set this up once */
scan->rs_ctup.t_tableOid = RelationGetRelid(relation);
@@ -1514,6 +1525,10 @@ heap_fetch(Relation relation,
* found, we update *tid to reference that tuple's offset number, and
* return TRUE. If no match, return FALSE without modifying *tid.
*
+ * heapTuple is a caller-supplied buffer. When a match is found, we return
+ * the tuple here, in addition to updating *tid. If no match is found, the
+ * contents of this buffer on return are undefined.
+ *
* If all_dead is not NULL, we check non-visible tuples to see if they are
* globally dead; *all_dead is set TRUE if all members of the HOT chain
* are vacuumable, FALSE if not.
@@ -1524,28 +1539,31 @@ heap_fetch(Relation relation,
*/
bool
heap_hot_search_buffer(ItemPointer tid, Relation relation, Buffer buffer,
- Snapshot snapshot, bool *all_dead)
+ Snapshot snapshot, HeapTuple heapTuple,
+ bool *all_dead, bool first_call)
{
Page dp = (Page) BufferGetPage(buffer);
TransactionId prev_xmax = InvalidTransactionId;
OffsetNumber offnum;
bool at_chain_start;
bool valid;
+ bool skip;
+ /* If this is not the first call, previous call returned a (live!) tuple */
if (all_dead)
- *all_dead = true;
+ *all_dead = first_call;
Assert(TransactionIdIsValid(RecentGlobalXmin));
Assert(ItemPointerGetBlockNumber(tid) == BufferGetBlockNumber(buffer));
offnum = ItemPointerGetOffsetNumber(tid);
- at_chain_start = true;
+ at_chain_start = first_call;
+ skip = !first_call;
/* Scan through possible multiple members of HOT-chain */
for (;;)
{
ItemId lp;
- HeapTupleData heapTuple;
/* check for bogus TID */
if (offnum < FirstOffsetNumber || offnum > PageGetMaxOffsetNumber(dp))
@@ -1568,15 +1586,15 @@ heap_hot_search_buffer(ItemPointer tid, Relation relation, Buffer buffer,
break;
}
- heapTuple.t_data = (HeapTupleHeader) PageGetItem(dp, lp);
- heapTuple.t_len = ItemIdGetLength(lp);
- heapTuple.t_tableOid = relation->rd_id;
- heapTuple.t_self = *tid;
+ heapTuple->t_data = (HeapTupleHeader) PageGetItem(dp, lp);
+ heapTuple->t_len = ItemIdGetLength(lp);
+ heapTuple->t_tableOid = relation->rd_id;
+ heapTuple->t_self = *tid;
/*
* Shouldn't see a HEAP_ONLY tuple at chain start.
*/
- if (at_chain_start && HeapTupleIsHeapOnly(&heapTuple))
+ if (at_chain_start && HeapTupleIsHeapOnly(heapTuple))
break;
/*
@@ -1585,21 +1603,32 @@ heap_hot_search_buffer(ItemPointer tid, Relation relation, Buffer buffer,
*/
if (TransactionIdIsValid(prev_xmax) &&
!TransactionIdEquals(prev_xmax,
- HeapTupleHeaderGetXmin(heapTuple.t_data)))
+ HeapTupleHeaderGetXmin(heapTuple->t_data)))
break;
- /* If it's visible per the snapshot, we must return it */
- valid = HeapTupleSatisfiesVisibility(&heapTuple, snapshot, buffer);
- CheckForSerializableConflictOut(valid, relation, &heapTuple, buffer,
- snapshot);
- if (valid)
+ /*
+ * When first_call is true (and thus, skip is initally false) we'll
+ * return the first tuple we find. But on later passes, heapTuple
+ * will initially be pointing to the tuple we returned last time.
+ * Returning it again would be incorrect (and would loop forever),
+ * so we skip it and return the next match we find.
+ */
+ if (!skip)
{
- ItemPointerSetOffsetNumber(tid, offnum);
- PredicateLockTuple(relation, &heapTuple, snapshot);
- if (all_dead)
- *all_dead = false;
- return true;
+ /* If it's visible per the snapshot, we must return it */
+ valid = HeapTupleSatisfiesVisibility(heapTuple, snapshot, buffer);
+ CheckForSerializableConflictOut(valid, relation, heapTuple,
+ buffer, snapshot);
+ if (valid)
+ {
+ ItemPointerSetOffsetNumber(tid, offnum);
+ PredicateLockTuple(relation, heapTuple, snapshot);
+ if (all_dead)
+ *all_dead = false;
+ return true;
+ }
}
+ skip = false;
/*
* If we can't see it, maybe no one else can either. At caller
@@ -1607,7 +1636,7 @@ heap_hot_search_buffer(ItemPointer tid, Relation relation, Buffer buffer,
* transactions.
*/
if (all_dead && *all_dead &&
- HeapTupleSatisfiesVacuum(heapTuple.t_data, RecentGlobalXmin,
+ HeapTupleSatisfiesVacuum(heapTuple->t_data, RecentGlobalXmin,
buffer) != HEAPTUPLE_DEAD)
*all_dead = false;
@@ -1615,13 +1644,13 @@ heap_hot_search_buffer(ItemPointer tid, Relation relation, Buffer buffer,
* Check to see if HOT chain continues past this tuple; if so fetch
* the next offnum and loop around.
*/
- if (HeapTupleIsHotUpdated(&heapTuple))
+ if (HeapTupleIsHotUpdated(heapTuple))
{
- Assert(ItemPointerGetBlockNumber(&heapTuple.t_data->t_ctid) ==
+ Assert(ItemPointerGetBlockNumber(&heapTuple->t_data->t_ctid) ==
ItemPointerGetBlockNumber(tid));
- offnum = ItemPointerGetOffsetNumber(&heapTuple.t_data->t_ctid);
+ offnum = ItemPointerGetOffsetNumber(&heapTuple->t_data->t_ctid);
at_chain_start = false;
- prev_xmax = HeapTupleHeaderGetXmax(heapTuple.t_data);
+ prev_xmax = HeapTupleHeaderGetXmax(heapTuple->t_data);
}
else
break; /* end of chain */
@@ -1643,10 +1672,12 @@ heap_hot_search(ItemPointer tid, Relation relation, Snapshot snapshot,
{
bool result;
Buffer buffer;
+ HeapTupleData heapTuple;
buffer = ReadBuffer(relation, ItemPointerGetBlockNumber(tid));
LockBuffer(buffer, BUFFER_LOCK_SHARE);
- result = heap_hot_search_buffer(tid, relation, buffer, snapshot, all_dead);
+ result = heap_hot_search_buffer(tid, relation, buffer, snapshot,
+ &heapTuple, all_dead, true);
LockBuffer(buffer, BUFFER_LOCK_UNLOCK);
ReleaseBuffer(buffer);
return result;
@@ -1862,6 +1893,7 @@ heap_insert(Relation relation, HeapTuple tup, CommandId cid,
TransactionId xid = GetCurrentTransactionId();
HeapTuple heaptup;
Buffer buffer;
+ Buffer vmbuffer = InvalidBuffer;
bool all_visible_cleared = false;
if (relation->rd_rel->relhasoids)
@@ -1914,9 +1946,13 @@ heap_insert(Relation relation, HeapTuple tup, CommandId cid,
else
heaptup = tup;
- /* Find buffer to insert this tuple into */
+ /*
+ * Find buffer to insert this tuple into. If the page is all visible,
+ * this will also pin the requisite visibility map page.
+ */
buffer = RelationGetBufferForTuple(relation, heaptup->t_len,
- InvalidBuffer, options, bistate);
+ InvalidBuffer, options, bistate,
+ &vmbuffer, NULL);
/*
* We're about to do the actual insert -- check for conflict at the
@@ -1934,6 +1970,9 @@ heap_insert(Relation relation, HeapTuple tup, CommandId cid,
{
all_visible_cleared = true;
PageClearAllVisible(BufferGetPage(buffer));
+ visibilitymap_clear(relation,
+ ItemPointerGetBlockNumber(&(heaptup->t_self)),
+ vmbuffer);
}
/*
@@ -2010,11 +2049,8 @@ heap_insert(Relation relation, HeapTuple tup, CommandId cid,
END_CRIT_SECTION();
UnlockReleaseBuffer(buffer);
-
- /* Clear the bit in the visibility map if necessary */
- if (all_visible_cleared)
- visibilitymap_clear(relation,
- ItemPointerGetBlockNumber(&(heaptup->t_self)));
+ if (vmbuffer != InvalidBuffer)
+ ReleaseBuffer(vmbuffer);
/*
* If tuple is cachable, mark it for invalidation from the caches in case
@@ -2089,17 +2125,43 @@ heap_delete(Relation relation, ItemPointer tid,
ItemId lp;
HeapTupleData tp;
Page page;
+ BlockNumber block;
Buffer buffer;
+ Buffer vmbuffer = InvalidBuffer;
bool have_tuple_lock = false;
bool iscombo;
bool all_visible_cleared = false;
Assert(ItemPointerIsValid(tid));
- buffer = ReadBuffer(relation, ItemPointerGetBlockNumber(tid));
+ block = ItemPointerGetBlockNumber(tid);
+ buffer = ReadBuffer(relation, block);
+ page = BufferGetPage(buffer);
+
+ /*
+ * Before locking the buffer, pin the visibility map page if it appears
+ * to be necessary. Since we haven't got the lock yet, someone else might
+ * be in the middle of changing this, so we'll need to recheck after
+ * we have the lock.
+ */
+ if (PageIsAllVisible(page))
+ visibilitymap_pin(relation, block, &vmbuffer);
+
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
- page = BufferGetPage(buffer);
+ /*
+ * If we didn't pin the visibility map page and the page has become all
+ * visible while we were busy locking the buffer, we'll have to unlock and
+ * re-lock, to avoid holding the buffer lock across an I/O. That's a bit
+ * unfortunate, but hopefully shouldn't happen often.
+ */
+ if (vmbuffer == InvalidBuffer && PageIsAllVisible(page))
+ {
+ LockBuffer(buffer, BUFFER_LOCK_UNLOCK);
+ visibilitymap_pin(relation, block, &vmbuffer);
+ LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
+ }
+
lp = PageGetItemId(page, ItemPointerGetOffsetNumber(tid));
Assert(ItemIdIsNormal(lp));
@@ -2222,6 +2284,8 @@ l1:
UnlockReleaseBuffer(buffer);
if (have_tuple_lock)
UnlockTuple(relation, &(tp.t_self), ExclusiveLock);
+ if (vmbuffer != InvalidBuffer)
+ ReleaseBuffer(vmbuffer);
return result;
}
@@ -2249,6 +2313,8 @@ l1:
{
all_visible_cleared = true;
PageClearAllVisible(page);
+ visibilitymap_clear(relation, BufferGetBlockNumber(buffer),
+ vmbuffer);
}
/* store transaction information of xact deleting the tuple */
@@ -2296,6 +2362,9 @@ l1:
LockBuffer(buffer, BUFFER_LOCK_UNLOCK);
+ if (vmbuffer != InvalidBuffer)
+ ReleaseBuffer(vmbuffer);
+
/*
* If the tuple has toasted out-of-line attributes, we need to delete
* those items too. We have to do this before releasing the buffer
@@ -2317,10 +2386,6 @@ l1:
*/
CacheInvalidateHeapTuple(relation, &tp);
- /* Clear the bit in the visibility map if necessary */
- if (all_visible_cleared)
- visibilitymap_clear(relation, BufferGetBlockNumber(buffer));
-
/* Now we can release the buffer */
ReleaseBuffer(buffer);
@@ -2419,8 +2484,11 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
HeapTupleData oldtup;
HeapTuple heaptup;
Page page;
+ BlockNumber block;
Buffer buffer,
- newbuf;
+ newbuf,
+ vmbuffer = InvalidBuffer,
+ vmbuffer_new = InvalidBuffer;
bool need_toast,
already_marked;
Size newtupsize,
@@ -2447,10 +2515,21 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
*/
hot_attrs = RelationGetIndexAttrBitmap(relation);
- buffer = ReadBuffer(relation, ItemPointerGetBlockNumber(otid));
+ block = ItemPointerGetBlockNumber(otid);
+ buffer = ReadBuffer(relation, block);
+ page = BufferGetPage(buffer);
+
+ /*
+ * Before locking the buffer, pin the visibility map page if it appears
+ * to be necessary. Since we haven't got the lock yet, someone else might
+ * be in the middle of changing this, so we'll need to recheck after
+ * we have the lock.
+ */
+ if (PageIsAllVisible(page))
+ visibilitymap_pin(relation, block, &vmbuffer);
+
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
- page = BufferGetPage(buffer);
lp = PageGetItemId(page, ItemPointerGetOffsetNumber(otid));
Assert(ItemIdIsNormal(lp));
@@ -2580,11 +2659,27 @@ l2:
UnlockReleaseBuffer(buffer);
if (have_tuple_lock)
UnlockTuple(relation, &(oldtup.t_self), ExclusiveLock);
+ if (vmbuffer != InvalidBuffer)
+ ReleaseBuffer(vmbuffer);
bms_free(hot_attrs);
return result;
}
/*
+ * If we didn't pin the visibility map page and the page has become all
+ * visible while we were busy locking the buffer, or during some subsequent
+ * window during which we had it unlocked, we'll have to unlock and
+ * re-lock, to avoid holding the buffer lock across an I/O. That's a bit
+ * unfortunate, but hopefully shouldn't happen often.
+ */
+ if (vmbuffer == InvalidBuffer && PageIsAllVisible(page))
+ {
+ LockBuffer(buffer, BUFFER_LOCK_UNLOCK);
+ visibilitymap_pin(relation, block, &vmbuffer);
+ LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
+ }
+
+ /*
* We're about to do the actual update -- check for conflict first, to
* avoid possibly having to roll back work we've just done.
*/
@@ -2700,7 +2795,8 @@ l2:
{
/* Assume there's no chance to put heaptup on same page. */
newbuf = RelationGetBufferForTuple(relation, heaptup->t_len,
- buffer, 0, NULL);
+ buffer, 0, NULL,
+ &vmbuffer_new, &vmbuffer);
}
else
{
@@ -2717,7 +2813,8 @@ l2:
*/
LockBuffer(buffer, BUFFER_LOCK_UNLOCK);
newbuf = RelationGetBufferForTuple(relation, heaptup->t_len,
- buffer, 0, NULL);
+ buffer, 0, NULL,
+ &vmbuffer_new, &vmbuffer);
}
else
{
@@ -2823,11 +2920,15 @@ l2:
{
all_visible_cleared = true;
PageClearAllVisible(BufferGetPage(buffer));
+ visibilitymap_clear(relation, BufferGetBlockNumber(buffer),
+ vmbuffer);
}
if (newbuf != buffer && PageIsAllVisible(BufferGetPage(newbuf)))
{
all_visible_cleared_new = true;
PageClearAllVisible(BufferGetPage(newbuf));
+ visibilitymap_clear(relation, BufferGetBlockNumber(newbuf),
+ vmbuffer_new);
}
if (newbuf != buffer)
@@ -2864,16 +2965,14 @@ l2:
*/
CacheInvalidateHeapTuple(relation, &oldtup);
- /* Clear bits in visibility map */
- if (all_visible_cleared)
- visibilitymap_clear(relation, BufferGetBlockNumber(buffer));
- if (all_visible_cleared_new)
- visibilitymap_clear(relation, BufferGetBlockNumber(newbuf));
-
/* Now we can release the buffer(s) */
if (newbuf != buffer)
ReleaseBuffer(newbuf);
ReleaseBuffer(buffer);
+ if (BufferIsValid(vmbuffer_new))
+ ReleaseBuffer(vmbuffer_new);
+ if (BufferIsValid(vmbuffer))
+ ReleaseBuffer(vmbuffer);
/*
* If new tuple is cachable, mark it for invalidation from the caches in
@@ -4036,6 +4135,38 @@ log_heap_freeze(Relation reln, Buffer buffer,
}
/*
+ * Perform XLogInsert for a heap-visible operation. 'block' is the block
+ * being marked all-visible, and vm_buffer is the buffer containing the
+ * corresponding visibility map block. Both should have already been modified
+ * and dirtied.
+ */
+XLogRecPtr
+log_heap_visible(RelFileNode rnode, BlockNumber block, Buffer vm_buffer)
+{
+ xl_heap_visible xlrec;
+ XLogRecPtr recptr;
+ XLogRecData rdata[2];
+
+ xlrec.node = rnode;
+ xlrec.block = block;
+
+ rdata[0].data = (char *) &xlrec;
+ rdata[0].len = SizeOfHeapVisible;
+ rdata[0].buffer = InvalidBuffer;
+ rdata[0].next = &(rdata[1]);
+
+ rdata[1].data = NULL;
+ rdata[1].len = 0;
+ rdata[1].buffer = vm_buffer;
+ rdata[1].buffer_std = false;
+ rdata[1].next = NULL;
+
+ recptr = XLogInsert(RM_HEAP2_ID, XLOG_HEAP2_VISIBLE, rdata);
+
+ return recptr;
+}
+
+/*
* Perform XLogInsert for a heap-update operation. Caller must already
* have modified the buffer(s) and marked them dirty.
*/
@@ -4323,6 +4454,92 @@ heap_xlog_freeze(XLogRecPtr lsn, XLogRecord *record)
UnlockReleaseBuffer(buffer);
}
+/*
+ * Replay XLOG_HEAP2_VISIBLE record.
+ *
+ * The critical integrity requirement here is that we must never end up with
+ * a situation where the visibility map bit is set, and the page-level
+ * PD_ALL_VISIBLE bit is clear. If that were to occur, then a subsequent
+ * page modification would fail to clear the visibility map bit.
+ */
+static void
+heap_xlog_visible(XLogRecPtr lsn, XLogRecord *record)
+{
+ xl_heap_visible *xlrec = (xl_heap_visible *) XLogRecGetData(record);
+ Buffer buffer;
+ Page page;
+
+ /*
+ * Read the heap page, if it still exists. If the heap file has been
+ * dropped or truncated later in recovery, this might fail. In that case,
+ * there's no point in doing anything further, since the visibility map
+ * will have to be cleared out at the same time.
+ */
+ buffer = XLogReadBufferExtended(xlrec->node, MAIN_FORKNUM, xlrec->block,
+ RBM_NORMAL);
+ if (!BufferIsValid(buffer))
+ return;
+ page = (Page) BufferGetPage(buffer);
+
+ LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
+
+ /*
+ * We don't bump the LSN of the heap page when setting the visibility
+ * map bit, because that would generate an unworkable volume of
+ * full-page writes. This exposes us to torn page hazards, but since
+ * we're not inspecting the existing page contents in any way, we
+ * don't care.
+ *
+ * However, all operations that clear the visibility map bit *do* bump
+ * the LSN, and those operations will only be replayed if the XLOG LSN
+ * follows the page LSN. Thus, if the page LSN has advanced past our
+ * XLOG record's LSN, we mustn't mark the page all-visible, because
+ * the subsequent update won't be replayed to clear the flag.
+ */
+ if (!XLByteLE(lsn, PageGetLSN(page)))
+ {
+ PageSetAllVisible(page);
+ MarkBufferDirty(buffer);
+ }
+
+ /* Done with heap page. */
+ UnlockReleaseBuffer(buffer);
+
+ /*
+ * Even we skipped the heap page update due to the LSN interlock, it's
+ * still safe to update the visibility map. Any WAL record that clears
+ * the visibility map bit does so before checking the page LSN, so any
+ * bits that need to be cleared will still be cleared.
+ */
+ if (record->xl_info & XLR_BKP_BLOCK_1)
+ RestoreBkpBlocks(lsn, record, false);
+ else
+ {
+ Relation reln;
+ Buffer vmbuffer = InvalidBuffer;
+
+ reln = CreateFakeRelcacheEntry(xlrec->node);
+ visibilitymap_pin(reln, xlrec->block, &vmbuffer);
+
+ /*
+ * Don't set the bit if replay has already passed this point.
+ *
+ * It might be safe to do this unconditionally; if replay has past
+ * this point, we'll replay at least as far this time as we did before,
+ * and if this bit needs to be cleared, the record responsible for
+ * doing so should be again replayed, and clear it. For right now,
+ * out of an abundance of conservatism, we use the same test here
+ * we did for the heap page; if this results in a dropped bit, no real
+ * harm is done; and the next VACUUM will fix it.
+ */
+ if (!XLByteLE(lsn, PageGetLSN(BufferGetPage(vmbuffer))))
+ visibilitymap_set(reln, xlrec->block, lsn, vmbuffer);
+
+ ReleaseBuffer(vmbuffer);
+ FreeFakeRelcacheEntry(reln);
+ }
+}
+
static void
heap_xlog_newpage(XLogRecPtr lsn, XLogRecord *record)
{
@@ -4377,8 +4594,11 @@ heap_xlog_delete(XLogRecPtr lsn, XLogRecord *record)
if (xlrec->all_visible_cleared)
{
Relation reln = CreateFakeRelcacheEntry(xlrec->target.node);
+ Buffer vmbuffer = InvalidBuffer;
- visibilitymap_clear(reln, blkno);
+ visibilitymap_pin(reln, blkno, &vmbuffer);
+ visibilitymap_clear(reln, blkno, vmbuffer);
+ ReleaseBuffer(vmbuffer);
FreeFakeRelcacheEntry(reln);
}
@@ -4455,8 +4675,11 @@ heap_xlog_insert(XLogRecPtr lsn, XLogRecord *record)
if (xlrec->all_visible_cleared)
{
Relation reln = CreateFakeRelcacheEntry(xlrec->target.node);
+ Buffer vmbuffer = InvalidBuffer;
- visibilitymap_clear(reln, blkno);
+ visibilitymap_pin(reln, blkno, &vmbuffer);
+ visibilitymap_clear(reln, blkno, vmbuffer);
+ ReleaseBuffer(vmbuffer);
FreeFakeRelcacheEntry(reln);
}
@@ -4567,9 +4790,12 @@ heap_xlog_update(XLogRecPtr lsn, XLogRecord *record, bool hot_update)
if (xlrec->all_visible_cleared)
{
Relation reln = CreateFakeRelcacheEntry(xlrec->target.node);
+ BlockNumber block = ItemPointerGetBlockNumber(&xlrec->target.tid);
+ Buffer vmbuffer = InvalidBuffer;
- visibilitymap_clear(reln,
- ItemPointerGetBlockNumber(&xlrec->target.tid));
+ visibilitymap_pin(reln, block, &vmbuffer);
+ visibilitymap_clear(reln, block, vmbuffer);
+ ReleaseBuffer(vmbuffer);
FreeFakeRelcacheEntry(reln);
}
@@ -4648,8 +4874,12 @@ newt:;
if (xlrec->new_all_visible_cleared)
{
Relation reln = CreateFakeRelcacheEntry(xlrec->target.node);
+ BlockNumber block = ItemPointerGetBlockNumber(&xlrec->newtid);
+ Buffer vmbuffer = InvalidBuffer;
- visibilitymap_clear(reln, ItemPointerGetBlockNumber(&xlrec->newtid));
+ visibilitymap_pin(reln, block, &vmbuffer);
+ visibilitymap_clear(reln, block, vmbuffer);
+ ReleaseBuffer(vmbuffer);
FreeFakeRelcacheEntry(reln);
}
@@ -4915,6 +5145,9 @@ heap2_redo(XLogRecPtr lsn, XLogRecord *record)
case XLOG_HEAP2_CLEANUP_INFO:
heap_xlog_cleanup_info(lsn, record);
break;
+ case XLOG_HEAP2_VISIBLE:
+ heap_xlog_visible(lsn, record);
+ break;
default:
elog(PANIC, "heap2_redo: unknown op code %u", info);
}
@@ -5044,6 +5277,14 @@ heap2_desc(StringInfo buf, uint8 xl_info, char *rec)
appendStringInfo(buf, "cleanup info: remxid %u",
xlrec->latestRemovedXid);
}
+ else if (info == XLOG_HEAP2_VISIBLE)
+ {
+ xl_heap_visible *xlrec = (xl_heap_visible *) rec;
+
+ appendStringInfo(buf, "visible: rel %u/%u/%u; blk %u",
+ xlrec->node.spcNode, xlrec->node.dbNode,
+ xlrec->node.relNode, xlrec->block);
+ }
else
appendStringInfo(buf, "UNKNOWN");
}
diff --git a/src/backend/access/heap/hio.c b/src/backend/access/heap/hio.c
index 72a69e52b0..b4ea84a614 100644
--- a/src/backend/access/heap/hio.c
+++ b/src/backend/access/heap/hio.c
@@ -17,6 +17,7 @@
#include "access/heapam.h"
#include "access/hio.h"
+#include "access/visibilitymap.h"
#include "storage/bufmgr.h"
#include "storage/freespace.h"
#include "storage/lmgr.h"
@@ -96,6 +97,64 @@ ReadBufferBI(Relation relation, BlockNumber targetBlock,
}
/*
+ * For each heap page which is all-visible, acquire a pin on the appropriate
+ * visibility map page, if we haven't already got one.
+ *
+ * buffer2 may be InvalidBuffer, if only one buffer is involved. buffer1
+ * must not be InvalidBuffer. If both buffers are specified, buffer1 must
+ * be less than buffer2.
+ */
+static void
+GetVisibilityMapPins(Relation relation, Buffer buffer1, Buffer buffer2,
+ BlockNumber block1, BlockNumber block2,
+ Buffer *vmbuffer1, Buffer *vmbuffer2)
+{
+ bool need_to_pin_buffer1;
+ bool need_to_pin_buffer2;
+
+ Assert(BufferIsValid(buffer1));
+ Assert(buffer2 == InvalidBuffer || buffer1 <= buffer2);
+
+ while (1)
+ {
+ /* Figure out which pins we need but don't have. */
+ need_to_pin_buffer1 = PageIsAllVisible(BufferGetPage(buffer1))
+ && !visibilitymap_pin_ok(block1, *vmbuffer1);
+ need_to_pin_buffer2 = buffer2 != InvalidBuffer
+ && PageIsAllVisible(BufferGetPage(buffer2))
+ && !visibilitymap_pin_ok(block2, *vmbuffer2);
+ if (!need_to_pin_buffer1 && !need_to_pin_buffer2)
+ return;
+
+ /* We must unlock both buffers before doing any I/O. */
+ LockBuffer(buffer1, BUFFER_LOCK_UNLOCK);
+ if (buffer2 != InvalidBuffer && buffer2 != buffer1)
+ LockBuffer(buffer2, BUFFER_LOCK_UNLOCK);
+
+ /* Get pins. */
+ if (need_to_pin_buffer1)
+ visibilitymap_pin(relation, block1, vmbuffer1);
+ if (need_to_pin_buffer2)
+ visibilitymap_pin(relation, block2, vmbuffer2);
+
+ /* Relock buffers. */
+ LockBuffer(buffer1, BUFFER_LOCK_EXCLUSIVE);
+ if (buffer2 != InvalidBuffer && buffer2 != buffer1)
+ LockBuffer(buffer2, BUFFER_LOCK_EXCLUSIVE);
+
+ /*
+ * If there are two buffers involved and we pinned just one of them,
+ * it's possible that the second one became all-visible while we were
+ * busy pinning the first one. If it looks like that's a possible
+ * scenario, we'll need to make a second pass through this loop.
+ */
+ if (buffer2 == InvalidBuffer || buffer1 == buffer2
+ || (need_to_pin_buffer1 && need_to_pin_buffer2))
+ break;
+ }
+}
+
+/*
* RelationGetBufferForTuple
*
* Returns pinned and exclusive-locked buffer of a page in given relation
@@ -150,7 +209,8 @@ ReadBufferBI(Relation relation, BlockNumber targetBlock,
Buffer
RelationGetBufferForTuple(Relation relation, Size len,
Buffer otherBuffer, int options,
- struct BulkInsertStateData * bistate)
+ struct BulkInsertStateData * bistate,
+ Buffer *vmbuffer, Buffer *vmbuffer_other)
{
bool use_fsm = !(options & HEAP_INSERT_SKIP_FSM);
Buffer buffer = InvalidBuffer;
@@ -237,23 +297,37 @@ RelationGetBufferForTuple(Relation relation, Size len,
* Read and exclusive-lock the target block, as well as the other
* block if one was given, taking suitable care with lock ordering and
* the possibility they are the same block.
+ *
+ * If the page-level all-visible flag is set, caller will need to clear
+ * both that and the corresponding visibility map bit. However, by the
+ * time we return, we'll have x-locked the buffer, and we don't want to
+ * do any I/O while in that state. So we check the bit here before
+ * taking the lock, and pin the page if it appears necessary.
+ * Checking without the lock creates a risk of getting the wrong
+ * answer, so we'll have to recheck after acquiring the lock.
*/
if (otherBuffer == InvalidBuffer)
{
/* easy case */
buffer = ReadBufferBI(relation, targetBlock, bistate);
+ if (PageIsAllVisible(BufferGetPage(buffer)))
+ visibilitymap_pin(relation, targetBlock, vmbuffer);
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
}
else if (otherBlock == targetBlock)
{
/* also easy case */
buffer = otherBuffer;
+ if (PageIsAllVisible(BufferGetPage(buffer)))
+ visibilitymap_pin(relation, targetBlock, vmbuffer);
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
}
else if (otherBlock < targetBlock)
{
/* lock other buffer first */
buffer = ReadBuffer(relation, targetBlock);
+ if (PageIsAllVisible(BufferGetPage(buffer)))
+ visibilitymap_pin(relation, targetBlock, vmbuffer);
LockBuffer(otherBuffer, BUFFER_LOCK_EXCLUSIVE);
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
}
@@ -261,11 +335,42 @@ RelationGetBufferForTuple(Relation relation, Size len,
{
/* lock target buffer first */
buffer = ReadBuffer(relation, targetBlock);
+ if (PageIsAllVisible(BufferGetPage(buffer)))
+ visibilitymap_pin(relation, targetBlock, vmbuffer);
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
LockBuffer(otherBuffer, BUFFER_LOCK_EXCLUSIVE);
}
/*
+ * We now have the target page (and the other buffer, if any) pinned
+ * and locked. However, since our initial PageIsAllVisible checks
+ * were performed before acquiring the lock, the results might now
+ * be out of date, either for the selected victim buffer, or for the
+ * other buffer passed by the caller. In that case, we'll need to give
+ * up our locks, go get the pin(s) we failed to get earlier, and
+ * re-lock. That's pretty painful, but hopefully shouldn't happen
+ * often.
+ *
+ * Note that there's a small possibility that we didn't pin the
+ * page above but still have the correct page pinned anyway, either
+ * because we've already made a previous pass through this loop, or
+ * because caller passed us the right page anyway.
+ *
+ * Note also that it's possible that by the time we get the pin and
+ * retake the buffer locks, the visibility map bit will have been
+ * cleared by some other backend anyway. In that case, we'll have done
+ * a bit of extra work for no gain, but there's no real harm done.
+ */
+ if (otherBuffer == InvalidBuffer || buffer <= otherBuffer)
+ GetVisibilityMapPins(relation, buffer, otherBuffer,
+ targetBlock, otherBlock, vmbuffer,
+ vmbuffer_other);
+ else
+ GetVisibilityMapPins(relation, otherBuffer, buffer,
+ otherBlock, targetBlock, vmbuffer_other,
+ vmbuffer);
+
+ /*
* Now we can check to see if there's enough free space here. If so,
* we're done.
*/
diff --git a/src/backend/access/heap/visibilitymap.c b/src/backend/access/heap/visibilitymap.c
index 58bab7df10..a19352021d 100644
--- a/src/backend/access/heap/visibilitymap.c
+++ b/src/backend/access/heap/visibilitymap.c
@@ -11,10 +11,11 @@
* src/backend/access/heap/visibilitymap.c
*
* INTERFACE ROUTINES
- * visibilitymap_clear - clear a bit in the visibility map
- * visibilitymap_pin - pin a map page for setting a bit
- * visibilitymap_set - set a bit in a previously pinned page
- * visibilitymap_test - test if a bit is set
+ * visibilitymap_clear - clear a bit in the visibility map
+ * visibilitymap_pin - pin a map page for setting a bit
+ * visibilitymap_pin_ok - check whether correct map page is already pinned
+ * visibilitymap_set - set a bit in a previously pinned page
+ * visibilitymap_test - test if a bit is set
*
* NOTES
*
@@ -64,32 +65,13 @@
* It would be nice to use the visibility map to skip visibility checks in
* index scans.
*
- * Currently, the visibility map is not 100% correct all the time.
- * During updates, the bit in the visibility map is cleared after releasing
- * the lock on the heap page. During the window between releasing the lock
- * and clearing the bit in the visibility map, the bit in the visibility map
- * is set, but the new insertion or deletion is not yet visible to other
- * backends.
- *
- * That might actually be OK for the index scans, though. The newly inserted
- * tuple wouldn't have an index pointer yet, so all tuples reachable from an
- * index would still be visible to all other backends, and deletions wouldn't
- * be visible to other backends yet. (But HOT breaks that argument, no?)
- *
- * There's another hole in the way the PD_ALL_VISIBLE flag is set. When
- * vacuum observes that all tuples are visible to all, it sets the flag on
- * the heap page, and also sets the bit in the visibility map. If we then
- * crash, and only the visibility map page was flushed to disk, we'll have
- * a bit set in the visibility map, but the corresponding flag on the heap
- * page is not set. If the heap page is then updated, the updater won't
- * know to clear the bit in the visibility map. (Isn't that prevented by
- * the LSN interlock?)
- *
*-------------------------------------------------------------------------
*/
#include "postgres.h"
+#include "access/heapam.h"
#include "access/visibilitymap.h"
+#include "miscadmin.h"
#include "storage/bufmgr.h"
#include "storage/bufpage.h"
#include "storage/lmgr.h"
@@ -127,38 +109,37 @@ static void vm_extend(Relation rel, BlockNumber nvmblocks);
/*
* visibilitymap_clear - clear a bit in visibility map
*
- * Clear a bit in the visibility map, marking that not all tuples are
- * visible to all transactions anymore.
+ * You must pass a buffer containing the correct map page to this function.
+ * Call visibilitymap_pin first to pin the right one. This function doesn't do
+ * any I/O.
*/
void
-visibilitymap_clear(Relation rel, BlockNumber heapBlk)
+visibilitymap_clear(Relation rel, BlockNumber heapBlk, Buffer buf)
{
BlockNumber mapBlock = HEAPBLK_TO_MAPBLOCK(heapBlk);
int mapByte = HEAPBLK_TO_MAPBYTE(heapBlk);
int mapBit = HEAPBLK_TO_MAPBIT(heapBlk);
uint8 mask = 1 << mapBit;
- Buffer mapBuffer;
char *map;
#ifdef TRACE_VISIBILITYMAP
elog(DEBUG1, "vm_clear %s %d", RelationGetRelationName(rel), heapBlk);
#endif
- mapBuffer = vm_readbuf(rel, mapBlock, false);
- if (!BufferIsValid(mapBuffer))
- return; /* nothing to do */
+ if (!BufferIsValid(buf) || BufferGetBlockNumber(buf) != mapBlock)
+ elog(ERROR, "wrong buffer passed to visibilitymap_clear");
- LockBuffer(mapBuffer, BUFFER_LOCK_EXCLUSIVE);
- map = PageGetContents(BufferGetPage(mapBuffer));
+ LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE);
+ map = PageGetContents(BufferGetPage(buf));
if (map[mapByte] & mask)
{
map[mapByte] &= ~mask;
- MarkBufferDirty(mapBuffer);
+ MarkBufferDirty(buf);
}
- UnlockReleaseBuffer(mapBuffer);
+ LockBuffer(buf, BUFFER_LOCK_UNLOCK);
}
/*
@@ -194,19 +175,36 @@ visibilitymap_pin(Relation rel, BlockNumber heapBlk, Buffer *buf)
}
/*
+ * visibilitymap_pin_ok - do we already have the correct page pinned?
+ *
+ * On entry, buf should be InvalidBuffer or a valid buffer returned by
+ * an earlier call to visibilitymap_pin or visibilitymap_test on the same
+ * relation. The return value indicates whether the buffer covers the
+ * given heapBlk.
+ */
+bool
+visibilitymap_pin_ok(BlockNumber heapBlk, Buffer buf)
+{
+ BlockNumber mapBlock = HEAPBLK_TO_MAPBLOCK(heapBlk);
+
+ return BufferIsValid(buf) && BufferGetBlockNumber(buf) == mapBlock;
+}
+
+/*
* visibilitymap_set - set a bit on a previously pinned page
*
- * recptr is the LSN of the heap page. The LSN of the visibility map page is
- * advanced to that, to make sure that the visibility map doesn't get flushed
- * to disk before the update to the heap page that made all tuples visible.
+ * recptr is the LSN of the XLOG record we're replaying, if we're in recovery,
+ * or InvalidXLogRecPtr in normal running. The page LSN is advanced to the
+ * one provided; in normal running, we generate a new XLOG record and set the
+ * page LSN to that value.
*
- * This is an opportunistic function. It does nothing, unless *buf
- * contains the bit for heapBlk. Call visibilitymap_pin first to pin
- * the right map page. This function doesn't do any I/O.
+ * You must pass a buffer containing the correct map page to this function.
+ * Call visibilitymap_pin first to pin the right one. This function doesn't do
+ * any I/O.
*/
void
visibilitymap_set(Relation rel, BlockNumber heapBlk, XLogRecPtr recptr,
- Buffer *buf)
+ Buffer buf)
{
BlockNumber mapBlock = HEAPBLK_TO_MAPBLOCK(heapBlk);
uint32 mapByte = HEAPBLK_TO_MAPBYTE(heapBlk);
@@ -218,25 +216,35 @@ visibilitymap_set(Relation rel, BlockNumber heapBlk, XLogRecPtr recptr,
elog(DEBUG1, "vm_set %s %d", RelationGetRelationName(rel), heapBlk);
#endif
+ Assert(InRecovery || XLogRecPtrIsInvalid(recptr));
+
/* Check that we have the right page pinned */
- if (!BufferIsValid(*buf) || BufferGetBlockNumber(*buf) != mapBlock)
- return;
+ if (!BufferIsValid(buf) || BufferGetBlockNumber(buf) != mapBlock)
+ elog(ERROR, "wrong buffer passed to visibilitymap_set");
- page = BufferGetPage(*buf);
+ page = BufferGetPage(buf);
map = PageGetContents(page);
- LockBuffer(*buf, BUFFER_LOCK_EXCLUSIVE);
+ LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE);
if (!(map[mapByte] & (1 << mapBit)))
{
+ START_CRIT_SECTION();
+
map[mapByte] |= (1 << mapBit);
+ MarkBufferDirty(buf);
- if (XLByteLT(PageGetLSN(page), recptr))
+ if (RelationNeedsWAL(rel))
+ {
+ if (XLogRecPtrIsInvalid(recptr))
+ recptr = log_heap_visible(rel->rd_node, heapBlk, buf);
PageSetLSN(page, recptr);
- PageSetTLI(page, ThisTimeLineID);
- MarkBufferDirty(*buf);
+ PageSetTLI(page, ThisTimeLineID);
+ }
+
+ END_CRIT_SECTION();
}
- LockBuffer(*buf, BUFFER_LOCK_UNLOCK);
+ LockBuffer(buf, BUFFER_LOCK_UNLOCK);
}
/*
diff --git a/src/backend/access/index/genam.c b/src/backend/access/index/genam.c
index db04e26a65..fe3aa3c9c1 100644
--- a/src/backend/access/index/genam.c
+++ b/src/backend/access/index/genam.c
@@ -113,9 +113,7 @@ RelationGetIndexScan(Relation indexRelation, int nkeys, int norderbys)
ItemPointerSetInvalid(&scan->xs_ctup.t_self);
scan->xs_ctup.t_data = NULL;
scan->xs_cbuf = InvalidBuffer;
- scan->xs_hot_dead = false;
- scan->xs_next_hot = InvalidOffsetNumber;
- scan->xs_prev_xmax = InvalidTransactionId;
+ scan->xs_continue_hot = false;
return scan;
}
diff --git a/src/backend/access/index/indexam.c b/src/backend/access/index/indexam.c
index 31d705c056..13e68d644e 100644
--- a/src/backend/access/index/indexam.c
+++ b/src/backend/access/index/indexam.c
@@ -335,7 +335,7 @@ index_rescan(IndexScanDesc scan,
scan->xs_cbuf = InvalidBuffer;
}
- scan->xs_next_hot = InvalidOffsetNumber;
+ scan->xs_continue_hot = false;
scan->kill_prior_tuple = false; /* for safety */
@@ -417,7 +417,7 @@ index_restrpos(IndexScanDesc scan)
SCAN_CHECKS;
GET_SCAN_PROCEDURE(amrestrpos);
- scan->xs_next_hot = InvalidOffsetNumber;
+ scan->xs_continue_hot = false;
scan->kill_prior_tuple = false; /* for safety */
@@ -443,26 +443,18 @@ index_getnext(IndexScanDesc scan, ScanDirection direction)
HeapTuple heapTuple = &scan->xs_ctup;
ItemPointer tid = &heapTuple->t_self;
FmgrInfo *procedure;
+ bool all_dead = false;
SCAN_CHECKS;
GET_SCAN_PROCEDURE(amgettuple);
Assert(TransactionIdIsValid(RecentGlobalXmin));
- /*
- * We always reset xs_hot_dead; if we are here then either we are just
- * starting the scan, or we previously returned a visible tuple, and in
- * either case it's inappropriate to kill the prior index entry.
- */
- scan->xs_hot_dead = false;
-
for (;;)
{
- OffsetNumber offnum;
- bool at_chain_start;
- Page dp;
+ bool got_heap_tuple;
- if (scan->xs_next_hot != InvalidOffsetNumber)
+ if (scan->xs_continue_hot)
{
/*
* We are resuming scan of a HOT chain after having returned an
@@ -471,10 +463,6 @@ index_getnext(IndexScanDesc scan, ScanDirection direction)
Assert(BufferIsValid(scan->xs_cbuf));
Assert(ItemPointerGetBlockNumber(tid) ==
BufferGetBlockNumber(scan->xs_cbuf));
- Assert(TransactionIdIsValid(scan->xs_prev_xmax));
- offnum = scan->xs_next_hot;
- at_chain_start = false;
- scan->xs_next_hot = InvalidOffsetNumber;
}
else
{
@@ -488,7 +476,7 @@ index_getnext(IndexScanDesc scan, ScanDirection direction)
* comments in RelationGetIndexScan().
*/
if (!scan->xactStartedInRecovery)
- scan->kill_prior_tuple = scan->xs_hot_dead;
+ scan->kill_prior_tuple = all_dead;
/*
* The AM's gettuple proc finds the next index entry matching the
@@ -521,151 +509,31 @@ index_getnext(IndexScanDesc scan, ScanDirection direction)
if (prev_buf != scan->xs_cbuf)
heap_page_prune_opt(scan->heapRelation, scan->xs_cbuf,
RecentGlobalXmin);
-
- /* Prepare to scan HOT chain starting at index-referenced offnum */
- offnum = ItemPointerGetOffsetNumber(tid);
- at_chain_start = true;
-
- /* We don't know what the first tuple's xmin should be */
- scan->xs_prev_xmax = InvalidTransactionId;
-
- /* Initialize flag to detect if all entries are dead */
- scan->xs_hot_dead = true;
}
/* Obtain share-lock on the buffer so we can examine visibility */
LockBuffer(scan->xs_cbuf, BUFFER_LOCK_SHARE);
+ got_heap_tuple = heap_hot_search_buffer(tid, scan->heapRelation,
+ scan->xs_cbuf,
+ scan->xs_snapshot,
+ &scan->xs_ctup,
+ &all_dead,
+ !scan->xs_continue_hot);
+ LockBuffer(scan->xs_cbuf, BUFFER_LOCK_UNLOCK);
- dp = (Page) BufferGetPage(scan->xs_cbuf);
-
- /* Scan through possible multiple members of HOT-chain */
- for (;;)
+ if (got_heap_tuple)
{
- ItemId lp;
- ItemPointer ctid;
- bool valid;
-
- /* check for bogus TID */
- if (offnum < FirstOffsetNumber ||
- offnum > PageGetMaxOffsetNumber(dp))
- break;
-
- lp = PageGetItemId(dp, offnum);
-
- /* check for unused, dead, or redirected items */
- if (!ItemIdIsNormal(lp))
- {
- /* We should only see a redirect at start of chain */
- if (ItemIdIsRedirected(lp) && at_chain_start)
- {
- /* Follow the redirect */
- offnum = ItemIdGetRedirect(lp);
- at_chain_start = false;
- continue;
- }
- /* else must be end of chain */
- break;
- }
-
- /*
- * We must initialize all of *heapTuple (ie, scan->xs_ctup) since
- * it is returned to the executor on success.
- */
- heapTuple->t_data = (HeapTupleHeader) PageGetItem(dp, lp);
- heapTuple->t_len = ItemIdGetLength(lp);
- ItemPointerSetOffsetNumber(tid, offnum);
- heapTuple->t_tableOid = RelationGetRelid(scan->heapRelation);
- ctid = &heapTuple->t_data->t_ctid;
-
/*
- * Shouldn't see a HEAP_ONLY tuple at chain start. (This test
- * should be unnecessary, since the chain root can't be removed
- * while we have pin on the index entry, but let's make it
- * anyway.)
+ * Only in a non-MVCC snapshot can more than one member of the
+ * HOT chain be visible.
*/
- if (at_chain_start && HeapTupleIsHeapOnly(heapTuple))
- break;
-
- /*
- * The xmin should match the previous xmax value, else chain is
- * broken. (Note: this test is not optional because it protects
- * us against the case where the prior chain member's xmax aborted
- * since we looked at it.)
- */
- if (TransactionIdIsValid(scan->xs_prev_xmax) &&
- !TransactionIdEquals(scan->xs_prev_xmax,
- HeapTupleHeaderGetXmin(heapTuple->t_data)))
- break;
-
- /* If it's visible per the snapshot, we must return it */
- valid = HeapTupleSatisfiesVisibility(heapTuple, scan->xs_snapshot,
- scan->xs_cbuf);
-
- CheckForSerializableConflictOut(valid, scan->heapRelation,
- heapTuple, scan->xs_cbuf,
- scan->xs_snapshot);
-
- if (valid)
- {
- /*
- * If the snapshot is MVCC, we know that it could accept at
- * most one member of the HOT chain, so we can skip examining
- * any more members. Otherwise, check for continuation of the
- * HOT-chain, and set state for next time.
- */
- if (IsMVCCSnapshot(scan->xs_snapshot))
- scan->xs_next_hot = InvalidOffsetNumber;
- else if (HeapTupleIsHotUpdated(heapTuple))
- {
- Assert(ItemPointerGetBlockNumber(ctid) ==
- ItemPointerGetBlockNumber(tid));
- scan->xs_next_hot = ItemPointerGetOffsetNumber(ctid);
- scan->xs_prev_xmax = HeapTupleHeaderGetXmax(heapTuple->t_data);
- }
- else
- scan->xs_next_hot = InvalidOffsetNumber;
-
- PredicateLockTuple(scan->heapRelation, heapTuple, scan->xs_snapshot);
-
- LockBuffer(scan->xs_cbuf, BUFFER_LOCK_UNLOCK);
-
- pgstat_count_heap_fetch(scan->indexRelation);
-
- return heapTuple;
- }
-
- /*
- * If we can't see it, maybe no one else can either. Check to see
- * if the tuple is dead to all transactions. If we find that all
- * the tuples in the HOT chain are dead, we'll signal the index AM
- * to not return that TID on future indexscans.
- */
- if (scan->xs_hot_dead &&
- HeapTupleSatisfiesVacuum(heapTuple->t_data, RecentGlobalXmin,
- scan->xs_cbuf) != HEAPTUPLE_DEAD)
- scan->xs_hot_dead = false;
-
- /*
- * Check to see if HOT chain continues past this tuple; if so
- * fetch the next offnum (we don't bother storing it into
- * xs_next_hot, but must store xs_prev_xmax), and loop around.
- */
- if (HeapTupleIsHotUpdated(heapTuple))
- {
- Assert(ItemPointerGetBlockNumber(ctid) ==
- ItemPointerGetBlockNumber(tid));
- offnum = ItemPointerGetOffsetNumber(ctid);
- at_chain_start = false;
- scan->xs_prev_xmax = HeapTupleHeaderGetXmax(heapTuple->t_data);
- }
- else
- break; /* end of chain */
- } /* loop over a single HOT chain */
-
- LockBuffer(scan->xs_cbuf, BUFFER_LOCK_UNLOCK);
+ scan->xs_continue_hot = !IsMVCCSnapshot(scan->xs_snapshot);
+ pgstat_count_heap_fetch(scan->indexRelation);
+ return heapTuple;
+ }
/* Loop around to ask index AM for another TID */
- scan->xs_next_hot = InvalidOffsetNumber;
+ scan->xs_continue_hot = false;
}
/* Release any held pin on a heap page */
diff --git a/src/backend/access/nbtree/nbtpage.c b/src/backend/access/nbtree/nbtpage.c
index 65354e6d28..4b1a2e912b 100644
--- a/src/backend/access/nbtree/nbtpage.c
+++ b/src/backend/access/nbtree/nbtpage.c
@@ -560,9 +560,19 @@ _bt_getbuf(Relation rel, BlockNumber blkno, int access)
*/
if (XLogStandbyInfoActive())
{
+ TransactionId latestRemovedXid;
+
BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page);
- _bt_log_reuse_page(rel, blkno, opaque->btpo.xact);
+ /*
+ * opaque->btpo.xact is the threshold value not the
+ * value to measure conflicts against. We must retreat
+ * by one from it to get the correct conflict xid.
+ */
+ latestRemovedXid = opaque->btpo.xact;
+ TransactionIdRetreat(latestRemovedXid);
+
+ _bt_log_reuse_page(rel, blkno, latestRemovedXid);
}
/* Okay to use page. Re-initialize and return it */
diff --git a/src/backend/access/nbtree/nbtutils.c b/src/backend/access/nbtree/nbtutils.c
index 2e896a258f..3996203a7e 100644
--- a/src/backend/access/nbtree/nbtutils.c
+++ b/src/backend/access/nbtree/nbtutils.c
@@ -27,6 +27,7 @@
#include "storage/lwlock.h"
#include "storage/shmem.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
static bool _bt_compare_scankey_args(IndexScanDesc scan, ScanKey op,
@@ -325,8 +326,14 @@ _bt_preprocess_keys(IndexScanDesc scan)
/*
* If = has been specified, all other keys can be eliminated as
- * redundant. In case of key > 2 && key == 1 we can set qual_ok
- * to false and abandon further processing.
+ * redundant. If we have a case like key = 1 AND key > 2, we can
+ * set qual_ok to false and abandon further processing.
+ *
+ * We also have to deal with the case of "key IS NULL", which is
+ * unsatisfiable in combination with any other index condition.
+ * By the time we get here, that's been classified as an equality
+ * check, and we've rejected any combination of it with a regular
+ * equality condition; but not with other types of conditions.
*/
if (xform[BTEqualStrategyNumber - 1])
{
@@ -339,6 +346,13 @@ _bt_preprocess_keys(IndexScanDesc scan)
if (!chk || j == (BTEqualStrategyNumber - 1))
continue;
+ if (eq->sk_flags & SK_SEARCHNULL)
+ {
+ /* IS NULL is contradictory to anything else */
+ so->qual_ok = false;
+ return;
+ }
+
if (_bt_compare_scankey_args(scan, chk, eq, chk,
&test_result))
{
diff --git a/src/backend/access/transam/transam.c b/src/backend/access/transam/transam.c
index bc02f15e86..472dd4cca6 100644
--- a/src/backend/access/transam/transam.c
+++ b/src/backend/access/transam/transam.c
@@ -24,6 +24,8 @@
#include "access/transam.h"
#include "utils/snapmgr.h"
+/* Handy constant for an invalid xlog recptr */
+const XLogRecPtr InvalidXLogRecPtr = {0, 0};
/*
* Single-item cache for results of TransactionLogFetch. It's worth having
@@ -35,9 +37,6 @@ static TransactionId cachedFetchXid = InvalidTransactionId;
static XidStatus cachedFetchXidStatus;
static XLogRecPtr cachedCommitLSN;
-/* Handy constant for an invalid xlog recptr */
-static const XLogRecPtr InvalidXLogRecPtr = {0, 0};
-
/* Local functions */
static XidStatus TransactionLogFetch(TransactionId transactionId);
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 2ca1c14549..7f01a83c4f 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -962,26 +962,10 @@ RecordTransactionCommit(void)
/*
* Begin commit critical section and insert the commit XLOG record.
*/
- XLogRecData rdata[4];
- int lastrdata = 0;
- xl_xact_commit xlrec;
-
/* Tell bufmgr and smgr to prepare for commit */
BufmgrCommit();
/*
- * Set flags required for recovery processing of commits.
- */
- xlrec.xinfo = 0;
- if (RelcacheInitFileInval)
- xlrec.xinfo |= XACT_COMPLETION_UPDATE_RELCACHE_FILE;
- if (forceSyncCommit)
- xlrec.xinfo |= XACT_COMPLETION_FORCE_SYNC_COMMIT;
-
- xlrec.dbId = MyDatabaseId;
- xlrec.tsId = MyDatabaseTableSpace;
-
- /*
* Mark ourselves as within our "commit critical section". This
* forces any concurrent checkpoint to wait until we've updated
* pg_clog. Without this, it is possible for the checkpoint to set
@@ -1002,43 +986,88 @@ RecordTransactionCommit(void)
MyProc->inCommit = true;
SetCurrentTransactionStopTimestamp();
- xlrec.xact_time = xactStopTimestamp;
- xlrec.nrels = nrels;
- xlrec.nsubxacts = nchildren;
- xlrec.nmsgs = nmsgs;
- rdata[0].data = (char *) (&xlrec);
- rdata[0].len = MinSizeOfXactCommit;
- rdata[0].buffer = InvalidBuffer;
- /* dump rels to delete */
- if (nrels > 0)
- {
- rdata[0].next = &(rdata[1]);
- rdata[1].data = (char *) rels;
- rdata[1].len = nrels * sizeof(RelFileNode);
- rdata[1].buffer = InvalidBuffer;
- lastrdata = 1;
- }
- /* dump committed child Xids */
- if (nchildren > 0)
+
+ /*
+ * Do we need the long commit record? If not, use the compact format.
+ */
+ if (nrels > 0 || nmsgs > 0 || RelcacheInitFileInval || forceSyncCommit)
{
- rdata[lastrdata].next = &(rdata[2]);
- rdata[2].data = (char *) children;
- rdata[2].len = nchildren * sizeof(TransactionId);
- rdata[2].buffer = InvalidBuffer;
- lastrdata = 2;
+ XLogRecData rdata[4];
+ int lastrdata = 0;
+ xl_xact_commit xlrec;
+ /*
+ * Set flags required for recovery processing of commits.
+ */
+ xlrec.xinfo = 0;
+ if (RelcacheInitFileInval)
+ xlrec.xinfo |= XACT_COMPLETION_UPDATE_RELCACHE_FILE;
+ if (forceSyncCommit)
+ xlrec.xinfo |= XACT_COMPLETION_FORCE_SYNC_COMMIT;
+
+ xlrec.dbId = MyDatabaseId;
+ xlrec.tsId = MyDatabaseTableSpace;
+
+ xlrec.xact_time = xactStopTimestamp;
+ xlrec.nrels = nrels;
+ xlrec.nsubxacts = nchildren;
+ xlrec.nmsgs = nmsgs;
+ rdata[0].data = (char *) (&xlrec);
+ rdata[0].len = MinSizeOfXactCommit;
+ rdata[0].buffer = InvalidBuffer;
+ /* dump rels to delete */
+ if (nrels > 0)
+ {
+ rdata[0].next = &(rdata[1]);
+ rdata[1].data = (char *) rels;
+ rdata[1].len = nrels * sizeof(RelFileNode);
+ rdata[1].buffer = InvalidBuffer;
+ lastrdata = 1;
+ }
+ /* dump committed child Xids */
+ if (nchildren > 0)
+ {
+ rdata[lastrdata].next = &(rdata[2]);
+ rdata[2].data = (char *) children;
+ rdata[2].len = nchildren * sizeof(TransactionId);
+ rdata[2].buffer = InvalidBuffer;
+ lastrdata = 2;
+ }
+ /* dump shared cache invalidation messages */
+ if (nmsgs > 0)
+ {
+ rdata[lastrdata].next = &(rdata[3]);
+ rdata[3].data = (char *) invalMessages;
+ rdata[3].len = nmsgs * sizeof(SharedInvalidationMessage);
+ rdata[3].buffer = InvalidBuffer;
+ lastrdata = 3;
+ }
+ rdata[lastrdata].next = NULL;
+
+ (void) XLogInsert(RM_XACT_ID, XLOG_XACT_COMMIT, rdata);
}
- /* dump shared cache invalidation messages */
- if (nmsgs > 0)
+ else
{
- rdata[lastrdata].next = &(rdata[3]);
- rdata[3].data = (char *) invalMessages;
- rdata[3].len = nmsgs * sizeof(SharedInvalidationMessage);
- rdata[3].buffer = InvalidBuffer;
- lastrdata = 3;
- }
- rdata[lastrdata].next = NULL;
+ XLogRecData rdata[2];
+ int lastrdata = 0;
+ xl_xact_commit_compact xlrec;
+ xlrec.xact_time = xactStopTimestamp;
+ xlrec.nsubxacts = nchildren;
+ rdata[0].data = (char *) (&xlrec);
+ rdata[0].len = MinSizeOfXactCommitCompact;
+ rdata[0].buffer = InvalidBuffer;
+ /* dump committed child Xids */
+ if (nchildren > 0)
+ {
+ rdata[0].next = &(rdata[1]);
+ rdata[1].data = (char *) children;
+ rdata[1].len = nchildren * sizeof(TransactionId);
+ rdata[1].buffer = InvalidBuffer;
+ lastrdata = 1;
+ }
+ rdata[lastrdata].next = NULL;
- (void) XLogInsert(RM_XACT_ID, XLOG_XACT_COMMIT, rdata);
+ (void) XLogInsert(RM_XACT_ID, XLOG_XACT_COMMIT_COMPACT, rdata);
+ }
}
/*
@@ -4441,19 +4470,17 @@ xactGetCommittedChildren(TransactionId **ptr)
* actions for which the order of execution is critical.
*/
static void
-xact_redo_commit(xl_xact_commit *xlrec, TransactionId xid, XLogRecPtr lsn)
+xact_redo_commit_internal(TransactionId xid, XLogRecPtr lsn,
+ TransactionId *sub_xids, int nsubxacts,
+ SharedInvalidationMessage *inval_msgs, int nmsgs,
+ RelFileNode *xnodes, int nrels,
+ Oid dbId, Oid tsId,
+ uint32 xinfo)
{
- TransactionId *sub_xids;
- SharedInvalidationMessage *inval_msgs;
TransactionId max_xid;
int i;
- /* subxid array follows relfilenodes */
- sub_xids = (TransactionId *) &(xlrec->xnodes[xlrec->nrels]);
- /* invalidation messages array follows subxids */
- inval_msgs = (SharedInvalidationMessage *) &(sub_xids[xlrec->nsubxacts]);
-
- max_xid = TransactionIdLatest(xid, xlrec->nsubxacts, sub_xids);
+ max_xid = TransactionIdLatest(xid, nsubxacts, sub_xids);
/*
* Make sure nextXid is beyond any XID mentioned in the record.
@@ -4476,7 +4503,7 @@ xact_redo_commit(xl_xact_commit *xlrec, TransactionId xid, XLogRecPtr lsn)
/*
* Mark the transaction committed in pg_clog.
*/
- TransactionIdCommitTree(xid, xlrec->nsubxacts, sub_xids);
+ TransactionIdCommitTree(xid, nsubxacts, sub_xids);
}
else
{
@@ -4500,41 +4527,41 @@ xact_redo_commit(xl_xact_commit *xlrec, TransactionId xid, XLogRecPtr lsn)
* bits set on changes made by transactions that haven't yet
* recovered. It's unlikely but it's good to be safe.
*/
- TransactionIdAsyncCommitTree(xid, xlrec->nsubxacts, sub_xids, lsn);
+ TransactionIdAsyncCommitTree(xid, nsubxacts, sub_xids, lsn);
/*
* We must mark clog before we update the ProcArray.
*/
- ExpireTreeKnownAssignedTransactionIds(xid, xlrec->nsubxacts, sub_xids, max_xid);
+ ExpireTreeKnownAssignedTransactionIds(xid, nsubxacts, sub_xids, max_xid);
/*
* Send any cache invalidations attached to the commit. We must
* maintain the same order of invalidation then release locks as
* occurs in CommitTransaction().
*/
- ProcessCommittedInvalidationMessages(inval_msgs, xlrec->nmsgs,
- XactCompletionRelcacheInitFileInval(xlrec),
- xlrec->dbId, xlrec->tsId);
+ ProcessCommittedInvalidationMessages(inval_msgs, nmsgs,
+ XactCompletionRelcacheInitFileInval(xinfo),
+ dbId, tsId);
/*
* Release locks, if any. We do this for both two phase and normal one
* phase transactions. In effect we are ignoring the prepare phase and
* just going straight to lock release.
*/
- StandbyReleaseLockTree(xid, xlrec->nsubxacts, sub_xids);
+ StandbyReleaseLockTree(xid, nsubxacts, sub_xids);
}
/* Make sure files supposed to be dropped are dropped */
- for (i = 0; i < xlrec->nrels; i++)
+ for (i = 0; i < nrels; i++)
{
- SMgrRelation srel = smgropen(xlrec->xnodes[i], InvalidBackendId);
+ SMgrRelation srel = smgropen(xnodes[i], InvalidBackendId);
ForkNumber fork;
for (fork = 0; fork <= MAX_FORKNUM; fork++)
{
if (smgrexists(srel, fork))
{
- XLogDropRelation(xlrec->xnodes[i], fork);
+ XLogDropRelation(xnodes[i], fork);
smgrdounlink(srel, fork, true);
}
}
@@ -4553,8 +4580,46 @@ xact_redo_commit(xl_xact_commit *xlrec, TransactionId xid, XLogRecPtr lsn)
* to reduce that problem window, for any user that requested
* ForceSyncCommit().
*/
- if (XactCompletionForceSyncCommit(xlrec))
+ if (XactCompletionForceSyncCommit(xinfo))
XLogFlush(lsn);
+
+}
+/*
+ * Utility function to call xact_redo_commit_internal after breaking down xlrec
+ */
+static void
+xact_redo_commit(xl_xact_commit *xlrec,
+ TransactionId xid, XLogRecPtr lsn)
+{
+ TransactionId *subxacts;
+ SharedInvalidationMessage *inval_msgs;
+
+ /* subxid array follows relfilenodes */
+ subxacts = (TransactionId *) &(xlrec->xnodes[xlrec->nrels]);
+ /* invalidation messages array follows subxids */
+ inval_msgs = (SharedInvalidationMessage *) &(subxacts[xlrec->nsubxacts]);
+
+ xact_redo_commit_internal(xid, lsn, subxacts, xlrec->nsubxacts,
+ inval_msgs, xlrec->nmsgs,
+ xlrec->xnodes, xlrec->nrels,
+ xlrec->dbId,
+ xlrec->tsId,
+ xlrec->xinfo);
+}
+
+/*
+ * Utility function to call xact_redo_commit_internal for compact form of message.
+ */
+static void
+xact_redo_commit_compact(xl_xact_commit_compact *xlrec,
+ TransactionId xid, XLogRecPtr lsn)
+{
+ xact_redo_commit_internal(xid, lsn, xlrec->subxacts, xlrec->nsubxacts,
+ NULL, 0, /* inval msgs */
+ NULL, 0, /* relfilenodes */
+ InvalidOid, /* dbId */
+ InvalidOid, /* tsId */
+ 0); /* xinfo */
}
/*
@@ -4655,7 +4720,13 @@ xact_redo(XLogRecPtr lsn, XLogRecord *record)
/* Backup blocks are not used in xact records */
Assert(!(record->xl_info & XLR_BKP_BLOCK_MASK));
- if (info == XLOG_XACT_COMMIT)
+ if (info == XLOG_XACT_COMMIT_COMPACT)
+ {
+ xl_xact_commit_compact *xlrec = (xl_xact_commit_compact *) XLogRecGetData(record);
+
+ xact_redo_commit_compact(xlrec, record->xl_xid, lsn);
+ }
+ else if (info == XLOG_XACT_COMMIT)
{
xl_xact_commit *xlrec = (xl_xact_commit *) XLogRecGetData(record);
@@ -4703,9 +4774,9 @@ static void
xact_desc_commit(StringInfo buf, xl_xact_commit *xlrec)
{
int i;
- TransactionId *xacts;
+ TransactionId *subxacts;
- xacts = (TransactionId *) &xlrec->xnodes[xlrec->nrels];
+ subxacts = (TransactionId *) &xlrec->xnodes[xlrec->nrels];
appendStringInfoString(buf, timestamptz_to_str(xlrec->xact_time));
@@ -4724,15 +4795,15 @@ xact_desc_commit(StringInfo buf, xl_xact_commit *xlrec)
{
appendStringInfo(buf, "; subxacts:");
for (i = 0; i < xlrec->nsubxacts; i++)
- appendStringInfo(buf, " %u", xacts[i]);
+ appendStringInfo(buf, " %u", subxacts[i]);
}
if (xlrec->nmsgs > 0)
{
SharedInvalidationMessage *msgs;
- msgs = (SharedInvalidationMessage *) &xacts[xlrec->nsubxacts];
+ msgs = (SharedInvalidationMessage *) &subxacts[xlrec->nsubxacts];
- if (XactCompletionRelcacheInitFileInval(xlrec))
+ if (XactCompletionRelcacheInitFileInval(xlrec->xinfo))
appendStringInfo(buf, "; relcache init file inval dbid %u tsid %u",
xlrec->dbId, xlrec->tsId);
@@ -4759,6 +4830,21 @@ xact_desc_commit(StringInfo buf, xl_xact_commit *xlrec)
}
static void
+xact_desc_commit_compact(StringInfo buf, xl_xact_commit_compact *xlrec)
+{
+ int i;
+
+ appendStringInfoString(buf, timestamptz_to_str(xlrec->xact_time));
+
+ if (xlrec->nsubxacts > 0)
+ {
+ appendStringInfo(buf, "; subxacts:");
+ for (i = 0; i < xlrec->nsubxacts; i++)
+ appendStringInfo(buf, " %u", xlrec->subxacts[i]);
+ }
+}
+
+static void
xact_desc_abort(StringInfo buf, xl_xact_abort *xlrec)
{
int i;
@@ -4802,7 +4888,14 @@ xact_desc(StringInfo buf, uint8 xl_info, char *rec)
{
uint8 info = xl_info & ~XLR_INFO_MASK;
- if (info == XLOG_XACT_COMMIT)
+ if (info == XLOG_XACT_COMMIT_COMPACT)
+ {
+ xl_xact_commit_compact *xlrec = (xl_xact_commit_compact *) rec;
+
+ appendStringInfo(buf, "commit: ");
+ xact_desc_commit_compact(buf, xlrec);
+ }
+ else if (info == XLOG_XACT_COMMIT)
{
xl_xact_commit *xlrec = (xl_xact_commit *) rec;
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index aa0b0291ee..a7f5373028 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -5462,7 +5462,6 @@ exitArchiveRecovery(TimeLineID endTLI, uint32 endLogId, uint32 endLogSeg)
{
char recoveryPath[MAXPGPATH];
char xlogpath[MAXPGPATH];
- XLogRecPtr InvalidXLogRecPtr = {0, 0};
/*
* We are no longer in archive recovery state.
@@ -5594,7 +5593,14 @@ recoveryStopsHere(XLogRecord *record, bool *includeThis)
if (record->xl_rmid != RM_XACT_ID && record->xl_rmid != RM_XLOG_ID)
return false;
record_info = record->xl_info & ~XLR_INFO_MASK;
- if (record->xl_rmid == RM_XACT_ID && record_info == XLOG_XACT_COMMIT)
+ if (record->xl_rmid == RM_XACT_ID && record_info == XLOG_XACT_COMMIT_COMPACT)
+ {
+ xl_xact_commit_compact *recordXactCommitData;
+
+ recordXactCommitData = (xl_xact_commit_compact *) XLogRecGetData(record);
+ recordXtime = recordXactCommitData->xact_time;
+ }
+ else if (record->xl_rmid == RM_XACT_ID && record_info == XLOG_XACT_COMMIT)
{
xl_xact_commit *recordXactCommitData;
@@ -5681,7 +5687,7 @@ recoveryStopsHere(XLogRecord *record, bool *includeThis)
recoveryStopTime = recordXtime;
recoveryStopAfter = *includeThis;
- if (record_info == XLOG_XACT_COMMIT)
+ if (record_info == XLOG_XACT_COMMIT_COMPACT || record_info == XLOG_XACT_COMMIT)
{
if (recoveryStopAfter)
ereport(LOG,
@@ -8069,8 +8075,6 @@ CreateRestartPoint(int flags)
if (XLogRecPtrIsInvalid(lastCheckPointRecPtr) ||
XLByteLE(lastCheckPoint.redo, ControlFile->checkPointCopy.redo))
{
- XLogRecPtr InvalidXLogRecPtr = {0, 0};
-
ereport(DEBUG2,
(errmsg("skipping restartpoint, already performed at %X/%X",
lastCheckPoint.redo.xlogid, lastCheckPoint.redo.xrecoff)));
@@ -8375,13 +8379,13 @@ xlog_redo(XLogRecPtr lsn, XLogRecord *record)
/*
* If we see a shutdown checkpoint while waiting for an end-of-backup
- * record, the backup was cancelled and the end-of-backup record will
+ * record, the backup was canceled and the end-of-backup record will
* never arrive.
*/
if (InArchiveRecovery &&
!XLogRecPtrIsInvalid(ControlFile->backupStartPoint))
ereport(ERROR,
- (errmsg("online backup was cancelled, recovery cannot continue")));
+ (errmsg("online backup was canceled, recovery cannot continue")));
/*
* If we see a shutdown checkpoint, we know that nothing was running
@@ -9337,7 +9341,7 @@ do_pg_stop_backup(char *labelfile, bool waitforarchive)
(errmsg("pg_stop_backup still waiting for all required WAL segments to be archived (%d seconds elapsed)",
waits),
errhint("Check that your archive_command is executing properly. "
- "pg_stop_backup can be cancelled safely, "
+ "pg_stop_backup can be canceled safely, "
"but the database backup will not be usable without all the WAL segments.")));
}
}
@@ -9819,13 +9823,13 @@ CancelBackup(void)
if (stat(BACKUP_LABEL_FILE, &stat_buf) < 0)
return;
- /* remove leftover file from previously cancelled backup if it exists */
+ /* remove leftover file from previously canceled backup if it exists */
unlink(BACKUP_LABEL_OLD);
if (rename(BACKUP_LABEL_FILE, BACKUP_LABEL_OLD) == 0)
{
ereport(LOG,
- (errmsg("online backup mode cancelled"),
+ (errmsg("online backup mode canceled"),
errdetail("\"%s\" was renamed to \"%s\".",
BACKUP_LABEL_FILE, BACKUP_LABEL_OLD)));
}
@@ -9833,7 +9837,7 @@ CancelBackup(void)
{
ereport(WARNING,
(errcode_for_file_access(),
- errmsg("online backup mode was not cancelled"),
+ errmsg("online backup mode was not canceled"),
errdetail("Could not rename \"%s\" to \"%s\": %m.",
BACKUP_LABEL_FILE, BACKUP_LABEL_OLD)));
}
diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c
index fc093ccc4b..08ae863f54 100644
--- a/src/backend/bootstrap/bootstrap.c
+++ b/src/backend/bootstrap/bootstrap.c
@@ -43,6 +43,7 @@
#include "utils/fmgroids.h"
#include "utils/memutils.h"
#include "utils/ps_status.h"
+#include "utils/rel.h"
#include "utils/relmapper.h"
#include "utils/tqual.h"
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index e606ac2b9e..a8c27006a7 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -70,7 +70,7 @@
#include "utils/fmgroids.h"
#include "utils/inval.h"
#include "utils/lsyscache.h"
-#include "utils/relcache.h"
+#include "utils/rel.h"
#include "utils/snapmgr.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
@@ -98,7 +98,7 @@ static Oid AddNewRelationType(const char *typeName,
Oid new_array_type);
static void RelationRemoveInheritance(Oid relid);
static void StoreRelCheck(Relation rel, char *ccname, Node *expr,
- bool is_local, int inhcount);
+ bool is_validated, bool is_local, int inhcount);
static void StoreConstraints(Relation rel, List *cooked_constraints);
static bool MergeWithExistingConstraint(Relation rel, char *ccname, Node *expr,
bool allow_merge, bool is_local);
@@ -1846,7 +1846,7 @@ StoreAttrDefault(Relation rel, AttrNumber attnum, Node *expr)
*/
static void
StoreRelCheck(Relation rel, char *ccname, Node *expr,
- bool is_local, int inhcount)
+ bool is_validated, bool is_local, int inhcount)
{
char *ccbin;
char *ccsrc;
@@ -1907,7 +1907,7 @@ StoreRelCheck(Relation rel, char *ccname, Node *expr,
CONSTRAINT_CHECK, /* Constraint Type */
false, /* Is Deferrable */
false, /* Is Deferred */
- true, /* Is Validated */
+ is_validated,
RelationGetRelid(rel), /* relation */
attNos, /* attrs in the constraint */
keycount, /* # attrs in the constraint */
@@ -1967,7 +1967,7 @@ StoreConstraints(Relation rel, List *cooked_constraints)
StoreAttrDefault(rel, con->attnum, con->expr);
break;
case CONSTR_CHECK:
- StoreRelCheck(rel, con->name, con->expr,
+ StoreRelCheck(rel, con->name, con->expr, !con->skip_validation,
con->is_local, con->inhcount);
numchecks++;
break;
@@ -2081,6 +2081,7 @@ AddRelationNewConstraints(Relation rel,
cooked->name = NULL;
cooked->attnum = colDef->attnum;
cooked->expr = expr;
+ cooked->skip_validation = false;
cooked->is_local = is_local;
cooked->inhcount = is_local ? 0 : 1;
cookedConstraints = lappend(cookedConstraints, cooked);
@@ -2194,7 +2195,8 @@ AddRelationNewConstraints(Relation rel,
/*
* OK, store it.
*/
- StoreRelCheck(rel, ccname, expr, is_local, is_local ? 0 : 1);
+ StoreRelCheck(rel, ccname, expr, !cdef->skip_validation, is_local,
+ is_local ? 0 : 1);
numchecks++;
@@ -2203,6 +2205,7 @@ AddRelationNewConstraints(Relation rel,
cooked->name = ccname;
cooked->attnum = 0;
cooked->expr = expr;
+ cooked->skip_validation = cdef->skip_validation;
cooked->is_local = is_local;
cooked->inhcount = is_local ? 0 : 1;
cookedConstraints = lappend(cookedConstraints, cooked);
diff --git a/src/backend/catalog/indexing.c b/src/backend/catalog/indexing.c
index 21f5cce69c..351e6f63ac 100644
--- a/src/backend/catalog/indexing.c
+++ b/src/backend/catalog/indexing.c
@@ -19,6 +19,7 @@
#include "catalog/index.h"
#include "catalog/indexing.h"
#include "executor/executor.h"
+#include "utils/rel.h"
/*
diff --git a/src/backend/catalog/information_schema.sql b/src/backend/catalog/information_schema.sql
index 81407a3a5e..966eb08b97 100644
--- a/src/backend/catalog/information_schema.sql
+++ b/src/backend/catalog/information_schema.sql
@@ -297,9 +297,9 @@ CREATE VIEW attributes AS
CAST(null AS sql_identifier) AS character_set_schema,
CAST(null AS sql_identifier) AS character_set_name,
- CAST(null AS sql_identifier) AS collation_catalog,
- CAST(null AS sql_identifier) AS collation_schema,
- CAST(null AS sql_identifier) AS collation_name,
+ CAST(CASE WHEN nco.nspname IS NOT NULL THEN current_database() END AS sql_identifier) AS collation_catalog,
+ CAST(nco.nspname AS sql_identifier) AS collation_schema,
+ CAST(co.collname AS sql_identifier) AS collation_name,
CAST(
_pg_numeric_precision(_pg_truetypid(a, t), _pg_truetypmod(a, t))
@@ -336,14 +336,13 @@ CREATE VIEW attributes AS
CAST(a.attnum AS sql_identifier) AS dtd_identifier,
CAST('NO' AS yes_or_no) AS is_derived_reference_attribute
- FROM (pg_attribute a LEFT JOIN pg_attrdef ad ON attrelid = adrelid AND attnum = adnum),
- pg_class c, pg_namespace nc,
- (pg_type t JOIN pg_namespace nt ON (t.typnamespace = nt.oid))
+ FROM (pg_attribute a LEFT JOIN pg_attrdef ad ON attrelid = adrelid AND attnum = adnum)
+ JOIN (pg_class c JOIN pg_namespace nc ON (c.relnamespace = nc.oid)) ON a.attrelid = c.oid
+ JOIN (pg_type t JOIN pg_namespace nt ON (t.typnamespace = nt.oid)) ON a.atttypid = t.oid
+ LEFT JOIN (pg_collation co JOIN pg_namespace nco ON (co.collnamespace = nco.oid))
+ ON a.attcollation = co.oid AND (nco.nspname, co.collname) <> ('pg_catalog', 'default')
- WHERE a.attrelid = c.oid
- AND a.atttypid = t.oid
- AND nc.oid = c.relnamespace
- AND a.attnum > 0 AND NOT a.attisdropped
+ WHERE a.attnum > 0 AND NOT a.attisdropped
AND c.relkind in ('c');
GRANT SELECT ON attributes TO PUBLIC;
@@ -678,9 +677,9 @@ CREATE VIEW columns AS
CAST(null AS sql_identifier) AS character_set_schema,
CAST(null AS sql_identifier) AS character_set_name,
- CAST(null AS sql_identifier) AS collation_catalog,
- CAST(null AS sql_identifier) AS collation_schema,
- CAST(null AS sql_identifier) AS collation_name,
+ CAST(CASE WHEN nco.nspname IS NOT NULL THEN current_database() END AS sql_identifier) AS collation_catalog,
+ CAST(nco.nspname AS sql_identifier) AS collation_schema,
+ CAST(co.collname AS sql_identifier) AS collation_name,
CAST(CASE WHEN t.typtype = 'd' THEN current_database() ELSE null END
AS sql_identifier) AS domain_catalog,
@@ -718,16 +717,15 @@ CREATE VIEW columns AS
AND EXISTS (SELECT 1 FROM pg_rewrite WHERE ev_class = c.oid AND ev_type = '4' AND is_instead))
THEN 'YES' ELSE 'NO' END AS yes_or_no) AS is_updatable
- FROM (pg_attribute a LEFT JOIN pg_attrdef ad ON attrelid = adrelid AND attnum = adnum),
- pg_class c, pg_namespace nc,
- (pg_type t JOIN pg_namespace nt ON (t.typnamespace = nt.oid))
- LEFT JOIN (pg_type bt JOIN pg_namespace nbt ON (bt.typnamespace = nbt.oid))
+ FROM (pg_attribute a LEFT JOIN pg_attrdef ad ON attrelid = adrelid AND attnum = adnum)
+ JOIN (pg_class c JOIN pg_namespace nc ON (c.relnamespace = nc.oid)) ON a.attrelid = c.oid
+ JOIN (pg_type t JOIN pg_namespace nt ON (t.typnamespace = nt.oid)) ON a.atttypid = t.oid
+ LEFT JOIN (pg_type bt JOIN pg_namespace nbt ON (bt.typnamespace = nbt.oid))
ON (t.typtype = 'd' AND t.typbasetype = bt.oid)
+ LEFT JOIN (pg_collation co JOIN pg_namespace nco ON (co.collnamespace = nco.oid))
+ ON a.attcollation = co.oid AND (nco.nspname, co.collname) <> ('pg_catalog', 'default')
- WHERE a.attrelid = c.oid
- AND a.atttypid = t.oid
- AND nc.oid = c.relnamespace
- AND (NOT pg_is_other_temp_schema(nc.oid))
+ WHERE (NOT pg_is_other_temp_schema(nc.oid))
AND a.attnum > 0 AND NOT a.attisdropped AND c.relkind in ('r', 'v', 'f')
@@ -914,9 +912,9 @@ CREATE VIEW domains AS
CAST(null AS sql_identifier) AS character_set_schema,
CAST(null AS sql_identifier) AS character_set_name,
- CAST(null AS sql_identifier) AS collation_catalog,
- CAST(null AS sql_identifier) AS collation_schema,
- CAST(null AS sql_identifier) AS collation_name,
+ CAST(CASE WHEN nco.nspname IS NOT NULL THEN current_database() END AS sql_identifier) AS collation_catalog,
+ CAST(nco.nspname AS sql_identifier) AS collation_schema,
+ CAST(co.collname AS sql_identifier) AS collation_name,
CAST(
_pg_numeric_precision(t.typbasetype, t.typtypmod)
@@ -954,13 +952,13 @@ CREATE VIEW domains AS
CAST(null AS cardinal_number) AS maximum_cardinality,
CAST(1 AS sql_identifier) AS dtd_identifier
- FROM pg_type t, pg_namespace nt,
- pg_type bt, pg_namespace nbt
+ FROM (pg_type t JOIN pg_namespace nt ON t.typnamespace = nt.oid)
+ JOIN (pg_type bt JOIN pg_namespace nbt ON bt.typnamespace = nbt.oid)
+ ON (t.typbasetype = bt.oid AND t.typtype = 'd')
+ LEFT JOIN (pg_collation co JOIN pg_namespace nco ON (co.collnamespace = nco.oid))
+ ON t.typcollation = co.oid AND (nco.nspname, co.collname) <> ('pg_catalog', 'default')
- WHERE t.typnamespace = nt.oid
- AND t.typbasetype = bt.oid
- AND bt.typnamespace = nbt.oid
- AND t.typtype = 'd';
+ ;
GRANT SELECT ON domains TO PUBLIC;
@@ -1215,12 +1213,7 @@ GRANT SELECT ON role_column_grants TO PUBLIC;
-- 5.42 ROLE_USAGE_GRANTS view is based on 5.71 USAGE_PRIVILEGES and is defined there instead.
-/*
- * 5.43
- * ROLE_UDT_GRANTS view
- */
-
--- feature not supported
+-- 5.43 ROLE_UDT_GRANTS view is based on 5.70 UDT_PRIVILEGES and is defined there instead.
/*
@@ -1520,7 +1513,7 @@ CREATE TABLE sql_implementation_info (
) WITHOUT OIDS;
INSERT INTO sql_implementation_info VALUES ('10003', 'CATALOG NAME', NULL, 'Y', NULL);
-INSERT INTO sql_implementation_info VALUES ('10004', 'COLLATING SEQUENCE', NULL, '', 'not supported');
+INSERT INTO sql_implementation_info VALUES ('10004', 'COLLATING SEQUENCE', NULL, (SELECT default_collate_name FROM character_sets), NULL);
INSERT INTO sql_implementation_info VALUES ('23', 'CURSOR COMMIT BEHAVIOR', 1, NULL, 'close cursors and retain prepared statements');
INSERT INTO sql_implementation_info VALUES ('2', 'DATA SOURCE NAME', NULL, '', NULL);
INSERT INTO sql_implementation_info VALUES ('17', 'DBMS NAME', NULL, (select trim(trailing ' ' from substring(version() from '^[^0-9]*'))), NULL);
@@ -2009,7 +2002,43 @@ GRANT SELECT ON triggers TO PUBLIC;
* UDT_PRIVILEGES view
*/
--- feature not supported
+CREATE VIEW udt_privileges AS
+ SELECT CAST(null AS sql_identifier) AS grantor,
+ CAST('PUBLIC' AS sql_identifier) AS grantee,
+ CAST(current_database() AS sql_identifier) AS udt_catalog,
+ CAST(n.nspname AS sql_identifier) AS udt_schema,
+ CAST(t.typname AS sql_identifier) AS udt_name,
+ CAST('TYPE USAGE' AS character_data) AS privilege_type, -- sic
+ CAST('NO' AS yes_or_no) AS is_grantable
+
+ FROM pg_authid u, pg_namespace n, pg_type t
+
+ WHERE u.oid = t.typowner
+ AND n.oid = t.typnamespace
+ AND t.typtype <> 'd'
+ AND NOT (t.typelem <> 0 AND t.typlen = -1);
+
+GRANT SELECT ON udt_privileges TO PUBLIC;
+
+
+/*
+ * 5.43
+ * ROLE_UDT_GRANTS view
+ */
+
+CREATE VIEW role_udt_grants AS
+ SELECT grantor,
+ grantee,
+ udt_catalog,
+ udt_schema,
+ udt_name,
+ privilege_type,
+ is_grantable
+ FROM udt_privileges
+ WHERE grantor IN (SELECT role_name FROM enabled_roles)
+ OR grantee IN (SELECT role_name FROM enabled_roles);
+
+GRANT SELECT ON role_udt_grants TO PUBLIC;
/*
@@ -2156,7 +2185,43 @@ GRANT SELECT ON role_usage_grants TO PUBLIC;
* USER_DEFINED_TYPES view
*/
--- feature not supported
+CREATE VIEW user_defined_types AS
+ SELECT CAST(current_database() AS sql_identifier) AS user_defined_type_catalog,
+ CAST(n.nspname AS sql_identifier) AS user_defined_type_schema,
+ CAST(c.relname AS sql_identifier) AS user_defined_type_name,
+ CAST('STRUCTURED' AS character_data) AS user_defined_type_category,
+ CAST('YES' AS yes_or_no) AS is_instantiable,
+ CAST(null AS yes_or_no) AS is_final,
+ CAST(null AS character_data) AS ordering_form,
+ CAST(null AS character_data) AS ordering_category,
+ CAST(null AS sql_identifier) AS ordering_routine_catalog,
+ CAST(null AS sql_identifier) AS ordering_routine_schema,
+ CAST(null AS sql_identifier) AS ordering_routine_name,
+ CAST(null AS character_data) AS reference_type,
+ CAST(null AS character_data) AS data_type,
+ CAST(null AS cardinal_number) AS character_maximum_length,
+ CAST(null AS cardinal_number) AS character_octet_length,
+ CAST(null AS sql_identifier) AS character_set_catalog,
+ CAST(null AS sql_identifier) AS character_set_schema,
+ CAST(null AS sql_identifier) AS character_set_name,
+ CAST(null AS sql_identifier) AS collation_catalog,
+ CAST(null AS sql_identifier) AS collation_schema,
+ CAST(null AS sql_identifier) AS collation_name,
+ CAST(null AS cardinal_number) AS numeric_precision,
+ CAST(null AS cardinal_number) AS numeric_precision_radix,
+ CAST(null AS cardinal_number) AS numeric_scale,
+ CAST(null AS cardinal_number) AS datetime_precision,
+ CAST(null AS character_data) AS interval_type,
+ CAST(null AS character_data) AS interval_precision,
+ CAST(null AS sql_identifier) AS source_dtd_identifier,
+ CAST(null AS sql_identifier) AS ref_dtd_identifier
+
+ FROM pg_namespace n, pg_class c
+
+ WHERE n.oid = c.relnamespace
+ AND c.relkind = 'c';
+
+GRANT SELECT ON user_defined_types TO PUBLIC;
/*
@@ -2375,9 +2440,9 @@ CREATE VIEW element_types AS
CAST(null AS sql_identifier) AS character_set_catalog,
CAST(null AS sql_identifier) AS character_set_schema,
CAST(null AS sql_identifier) AS character_set_name,
- CAST(null AS sql_identifier) AS collation_catalog,
- CAST(null AS sql_identifier) AS collation_schema,
- CAST(null AS sql_identifier) AS collation_name,
+ CAST(CASE WHEN nco.nspname IS NOT NULL THEN current_database() END AS sql_identifier) AS collation_catalog,
+ CAST(nco.nspname AS sql_identifier) AS collation_schema,
+ CAST(co.collname AS sql_identifier) AS collation_name,
CAST(null AS cardinal_number) AS numeric_precision,
CAST(null AS cardinal_number) AS numeric_precision_radix,
CAST(null AS cardinal_number) AS numeric_scale,
@@ -2400,19 +2465,20 @@ CREATE VIEW element_types AS
FROM pg_namespace n, pg_type at, pg_namespace nbt, pg_type bt,
(
- /* columns */
+ /* columns, attributes */
SELECT c.relnamespace, CAST(c.relname AS sql_identifier),
- 'TABLE'::text, a.attnum, a.atttypid
+ CASE WHEN c.relkind = 'c' THEN 'USER-DEFINED TYPE'::text ELSE 'TABLE'::text END,
+ a.attnum, a.atttypid, a.attcollation
FROM pg_class c, pg_attribute a
WHERE c.oid = a.attrelid
- AND c.relkind IN ('r', 'v', 'f')
+ AND c.relkind IN ('r', 'v', 'f', 'c')
AND attnum > 0 AND NOT attisdropped
UNION ALL
/* domains */
SELECT t.typnamespace, CAST(t.typname AS sql_identifier),
- 'DOMAIN'::text, 1, t.typbasetype
+ 'DOMAIN'::text, 1, t.typbasetype, t.typcollation
FROM pg_type t
WHERE t.typtype = 'd'
@@ -2420,7 +2486,7 @@ CREATE VIEW element_types AS
/* parameters */
SELECT pronamespace, CAST(proname || '_' || CAST(oid AS text) AS sql_identifier),
- 'ROUTINE'::text, (ss.x).n, (ss.x).x
+ 'ROUTINE'::text, (ss.x).n, (ss.x).x, 0
FROM (SELECT p.pronamespace, p.proname, p.oid,
_pg_expandarray(coalesce(p.proallargtypes, p.proargtypes::oid[])) AS x
FROM pg_proc p) AS ss
@@ -2429,10 +2495,12 @@ CREATE VIEW element_types AS
/* result types */
SELECT p.pronamespace, CAST(p.proname || '_' || CAST(p.oid AS text) AS sql_identifier),
- 'ROUTINE'::text, 0, p.prorettype
+ 'ROUTINE'::text, 0, p.prorettype, 0
FROM pg_proc p
- ) AS x (objschema, objname, objtype, objdtdid, objtypeid)
+ ) AS x (objschema, objname, objtype, objdtdid, objtypeid, objcollation)
+ LEFT JOIN (pg_collation co JOIN pg_namespace nco ON (co.collnamespace = nco.oid))
+ ON x.objcollation = co.oid AND (nco.nspname, co.collname) <> ('pg_catalog', 'default')
WHERE n.oid = x.objschema
AND at.oid = x.objtypeid
diff --git a/src/backend/catalog/namespace.c b/src/backend/catalog/namespace.c
index 41e92992de..ce795a61c5 100644
--- a/src/backend/catalog/namespace.c
+++ b/src/backend/catalog/namespace.c
@@ -311,19 +311,6 @@ RangeVarGetCreationNamespace(const RangeVar *newRelation)
newRelation->relname)));
}
- if (newRelation->relpersistence == RELPERSISTENCE_TEMP)
- {
- /* TEMP tables are created in our backend-local temp namespace */
- if (newRelation->schemaname)
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_TABLE_DEFINITION),
- errmsg("temporary tables cannot specify a schema name")));
- /* Initialize temp namespace if first time through */
- if (!OidIsValid(myTempNamespace))
- InitTempTableNamespace();
- return myTempNamespace;
- }
-
if (newRelation->schemaname)
{
/* check for pg_temp alias */
@@ -338,6 +325,13 @@ RangeVarGetCreationNamespace(const RangeVar *newRelation)
namespaceId = get_namespace_oid(newRelation->schemaname, false);
/* we do not check for USAGE rights here! */
}
+ else if (newRelation->relpersistence == RELPERSISTENCE_TEMP)
+ {
+ /* Initialize temp namespace if first time through */
+ if (!OidIsValid(myTempNamespace))
+ InitTempTableNamespace();
+ return myTempNamespace;
+ }
else
{
/* use the default creation namespace */
@@ -390,6 +384,43 @@ RangeVarGetAndCheckCreationNamespace(const RangeVar *newRelation)
}
/*
+ * Adjust the relpersistence for an about-to-be-created relation based on the
+ * creation namespace, and throw an error for invalid combinations.
+ */
+void
+RangeVarAdjustRelationPersistence(RangeVar *newRelation, Oid nspid)
+{
+ switch (newRelation->relpersistence)
+ {
+ case RELPERSISTENCE_TEMP:
+ if (!isTempOrToastNamespace(nspid))
+ {
+ if (isAnyTempNamespace(nspid))
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_TABLE_DEFINITION),
+ errmsg("cannot create relations in temporary schemas of other sessions")));
+ else
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_TABLE_DEFINITION),
+ errmsg("cannot create temporary relation in non-temporary schema")));
+ }
+ break;
+ case RELPERSISTENCE_PERMANENT:
+ if (isTempOrToastNamespace(nspid))
+ newRelation->relpersistence = RELPERSISTENCE_TEMP;
+ else if (isAnyTempNamespace(nspid))
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_TABLE_DEFINITION),
+ errmsg("cannot create relations in temporary schemas of other sessions")));
+ break;
+ default:
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_TABLE_DEFINITION),
+ errmsg("only temporary relations may be created in temporary schemas")));
+ }
+}
+
+/*
* RelnameGetRelid
* Try to resolve an unqualified relation name.
* Returns OID if relation found in search path, else InvalidOid.
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index bf25091582..8de5bec57a 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -72,15 +72,19 @@
#include "utils/tqual.h"
static ObjectAddress get_object_address_unqualified(ObjectType objtype,
- List *qualname);
-static Relation get_relation_by_qualified_name(ObjectType objtype,
- List *objname, LOCKMODE lockmode);
+ List *qualname, bool missing_ok);
+static ObjectAddress get_relation_by_qualified_name(ObjectType objtype,
+ List *objname, Relation *relp,
+ LOCKMODE lockmode, bool missing_ok);
static ObjectAddress get_object_address_relobject(ObjectType objtype,
- List *objname, Relation *relp);
+ List *objname, Relation *relp, bool missing_ok);
static ObjectAddress get_object_address_attribute(ObjectType objtype,
- List *objname, Relation *relp, LOCKMODE lockmode);
+ List *objname, Relation *relp,
+ LOCKMODE lockmode, bool missing_ok);
+static ObjectAddress get_object_address_type(ObjectType objtype,
+ List *objname, bool missing_ok);
static ObjectAddress get_object_address_opcf(ObjectType objtype, List *objname,
- List *objargs);
+ List *objargs, bool missing_ok);
static bool object_exists(ObjectAddress address);
@@ -106,7 +110,7 @@ static bool object_exists(ObjectAddress address);
*/
ObjectAddress
get_object_address(ObjectType objtype, List *objname, List *objargs,
- Relation *relp, LOCKMODE lockmode)
+ Relation *relp, LOCKMODE lockmode, bool missing_ok)
{
ObjectAddress address;
Relation relation = NULL;
@@ -121,21 +125,22 @@ get_object_address(ObjectType objtype, List *objname, List *objargs,
case OBJECT_TABLE:
case OBJECT_VIEW:
case OBJECT_FOREIGN_TABLE:
- relation =
- get_relation_by_qualified_name(objtype, objname, lockmode);
- address.classId = RelationRelationId;
- address.objectId = RelationGetRelid(relation);
- address.objectSubId = 0;
+ address =
+ get_relation_by_qualified_name(objtype, objname,
+ &relation, lockmode,
+ missing_ok);
break;
case OBJECT_COLUMN:
address =
- get_object_address_attribute(objtype, objname, &relation,
- lockmode);
+ get_object_address_attribute(objtype, objname,
+ &relation, lockmode,
+ missing_ok);
break;
case OBJECT_RULE:
case OBJECT_TRIGGER:
case OBJECT_CONSTRAINT:
- address = get_object_address_relobject(objtype, objname, &relation);
+ address = get_object_address_relobject(objtype, objname,
+ &relation, missing_ok);
break;
case OBJECT_DATABASE:
case OBJECT_EXTENSION:
@@ -145,23 +150,23 @@ get_object_address(ObjectType objtype, List *objname, List *objargs,
case OBJECT_LANGUAGE:
case OBJECT_FDW:
case OBJECT_FOREIGN_SERVER:
- address = get_object_address_unqualified(objtype, objname);
+ address = get_object_address_unqualified(objtype,
+ objname, missing_ok);
break;
case OBJECT_TYPE:
case OBJECT_DOMAIN:
- address.classId = TypeRelationId;
- address.objectId =
- typenameTypeId(NULL, makeTypeNameFromNameList(objname));
- address.objectSubId = 0;
+ address = get_object_address_type(objtype, objname, missing_ok);
break;
case OBJECT_AGGREGATE:
address.classId = ProcedureRelationId;
- address.objectId = LookupAggNameTypeNames(objname, objargs, false);
+ address.objectId =
+ LookupAggNameTypeNames(objname, objargs, missing_ok);
address.objectSubId = 0;
break;
case OBJECT_FUNCTION:
address.classId = ProcedureRelationId;
- address.objectId = LookupFuncNameTypeNames(objname, objargs, false);
+ address.objectId =
+ LookupFuncNameTypeNames(objname, objargs, missing_ok);
address.objectSubId = 0;
break;
case OBJECT_OPERATOR:
@@ -171,22 +176,23 @@ get_object_address(ObjectType objtype, List *objname, List *objargs,
LookupOperNameTypeNames(NULL, objname,
(TypeName *) linitial(objargs),
(TypeName *) lsecond(objargs),
- false, -1);
+ missing_ok, -1);
address.objectSubId = 0;
break;
case OBJECT_COLLATION:
address.classId = CollationRelationId;
- address.objectId = get_collation_oid(objname, false);
+ address.objectId = get_collation_oid(objname, missing_ok);
address.objectSubId = 0;
break;
case OBJECT_CONVERSION:
address.classId = ConversionRelationId;
- address.objectId = get_conversion_oid(objname, false);
+ address.objectId = get_conversion_oid(objname, missing_ok);
address.objectSubId = 0;
break;
case OBJECT_OPCLASS:
case OBJECT_OPFAMILY:
- address = get_object_address_opcf(objtype, objname, objargs);
+ address = get_object_address_opcf(objtype,
+ objname, objargs, missing_ok);
break;
case OBJECT_LARGEOBJECT:
Assert(list_length(objname) == 1);
@@ -194,10 +200,13 @@ get_object_address(ObjectType objtype, List *objname, List *objargs,
address.objectId = oidparse(linitial(objname));
address.objectSubId = 0;
if (!LargeObjectExists(address.objectId))
+ {
+ if (!missing_ok)
ereport(ERROR,
(errcode(ERRCODE_UNDEFINED_OBJECT),
errmsg("large object %u does not exist",
address.objectId)));
+ }
break;
case OBJECT_CAST:
{
@@ -208,28 +217,28 @@ get_object_address(ObjectType objtype, List *objname, List *objargs,
address.classId = CastRelationId;
address.objectId =
- get_cast_oid(sourcetypeid, targettypeid, false);
+ get_cast_oid(sourcetypeid, targettypeid, missing_ok);
address.objectSubId = 0;
}
break;
case OBJECT_TSPARSER:
address.classId = TSParserRelationId;
- address.objectId = get_ts_parser_oid(objname, false);
+ address.objectId = get_ts_parser_oid(objname, missing_ok);
address.objectSubId = 0;
break;
case OBJECT_TSDICTIONARY:
address.classId = TSDictionaryRelationId;
- address.objectId = get_ts_dict_oid(objname, false);
+ address.objectId = get_ts_dict_oid(objname, missing_ok);
address.objectSubId = 0;
break;
case OBJECT_TSTEMPLATE:
address.classId = TSTemplateRelationId;
- address.objectId = get_ts_template_oid(objname, false);
+ address.objectId = get_ts_template_oid(objname, missing_ok);
address.objectSubId = 0;
break;
case OBJECT_TSCONFIGURATION:
address.classId = TSConfigRelationId;
- address.objectId = get_ts_config_oid(objname, false);
+ address.objectId = get_ts_config_oid(objname, missing_ok);
address.objectSubId = 0;
break;
default:
@@ -241,6 +250,15 @@ get_object_address(ObjectType objtype, List *objname, List *objargs,
}
/*
+ * If we could not find the supplied object, return without locking.
+ */
+ if (!OidIsValid(address.objectId))
+ {
+ Assert(missing_ok);
+ return address;
+ }
+
+ /*
* If we're dealing with a relation or attribute, then the relation is
* already locked. If we're dealing with any other type of object, we
* need to lock it and then verify that it still exists.
@@ -267,7 +285,8 @@ get_object_address(ObjectType objtype, List *objname, List *objargs,
* unqualified name.
*/
static ObjectAddress
-get_object_address_unqualified(ObjectType objtype, List *qualname)
+get_object_address_unqualified(ObjectType objtype,
+ List *qualname, bool missing_ok)
{
const char *name;
ObjectAddress address;
@@ -323,42 +342,42 @@ get_object_address_unqualified(ObjectType objtype, List *qualname)
{
case OBJECT_DATABASE:
address.classId = DatabaseRelationId;
- address.objectId = get_database_oid(name, false);
+ address.objectId = get_database_oid(name, missing_ok);
address.objectSubId = 0;
break;
case OBJECT_EXTENSION:
address.classId = ExtensionRelationId;
- address.objectId = get_extension_oid(name, false);
+ address.objectId = get_extension_oid(name, missing_ok);
address.objectSubId = 0;
break;
case OBJECT_TABLESPACE:
address.classId = TableSpaceRelationId;
- address.objectId = get_tablespace_oid(name, false);
+ address.objectId = get_tablespace_oid(name, missing_ok);
address.objectSubId = 0;
break;
case OBJECT_ROLE:
address.classId = AuthIdRelationId;
- address.objectId = get_role_oid(name, false);
+ address.objectId = get_role_oid(name, missing_ok);
address.objectSubId = 0;
break;
case OBJECT_SCHEMA:
address.classId = NamespaceRelationId;
- address.objectId = get_namespace_oid(name, false);
+ address.objectId = get_namespace_oid(name, missing_ok);
address.objectSubId = 0;
break;
case OBJECT_LANGUAGE:
address.classId = LanguageRelationId;
- address.objectId = get_language_oid(name, false);
+ address.objectId = get_language_oid(name, missing_ok);
address.objectSubId = 0;
break;
case OBJECT_FDW:
address.classId = ForeignDataWrapperRelationId;
- address.objectId = get_foreign_data_wrapper_oid(name, false);
+ address.objectId = get_foreign_data_wrapper_oid(name, missing_ok);
address.objectSubId = 0;
break;
case OBJECT_FOREIGN_SERVER:
address.classId = ForeignServerRelationId;
- address.objectId = get_foreign_server_oid(name, false);
+ address.objectId = get_foreign_server_oid(name, missing_ok);
address.objectSubId = 0;
break;
default:
@@ -375,13 +394,23 @@ get_object_address_unqualified(ObjectType objtype, List *qualname)
/*
* Locate a relation by qualified name.
*/
-static Relation
+static ObjectAddress
get_relation_by_qualified_name(ObjectType objtype, List *objname,
- LOCKMODE lockmode)
+ Relation *relp, LOCKMODE lockmode,
+ bool missing_ok)
{
Relation relation;
+ ObjectAddress address;
+
+ address.classId = RelationRelationId;
+ address.objectId = InvalidOid;
+ address.objectSubId = 0;
+
+ relation = relation_openrv_extended(makeRangeVarFromNameList(objname),
+ lockmode, missing_ok);
+ if (!relation)
+ return address;
- relation = relation_openrv(makeRangeVarFromNameList(objname), lockmode);
switch (objtype)
{
case OBJECT_INDEX:
@@ -424,7 +453,11 @@ get_relation_by_qualified_name(ObjectType objtype, List *objname,
break;
}
- return relation;
+ /* Done */
+ address.objectId = RelationGetRelid(relation);
+ *relp = relation;
+
+ return address;
}
/*
@@ -435,7 +468,8 @@ get_relation_by_qualified_name(ObjectType objtype, List *objname,
* mode for the object itself, not the relation to which it is attached.
*/
static ObjectAddress
-get_object_address_relobject(ObjectType objtype, List *objname, Relation *relp)
+get_object_address_relobject(ObjectType objtype, List *objname,
+ Relation *relp, bool missing_ok)
{
ObjectAddress address;
Relation relation = NULL;
@@ -461,9 +495,9 @@ get_object_address_relobject(ObjectType objtype, List *objname, Relation *relp)
if (objtype != OBJECT_RULE)
elog(ERROR, "must specify relation and object name");
address.classId = RewriteRelationId;
- address.objectId = get_rewrite_oid_without_relid(depname, &reloid);
+ address.objectId =
+ get_rewrite_oid_without_relid(depname, &reloid, missing_ok);
address.objectSubId = 0;
- relation = heap_open(reloid, AccessShareLock);
}
else
{
@@ -480,17 +514,18 @@ get_object_address_relobject(ObjectType objtype, List *objname, Relation *relp)
{
case OBJECT_RULE:
address.classId = RewriteRelationId;
- address.objectId = get_rewrite_oid(reloid, depname, false);
+ address.objectId = get_rewrite_oid(reloid, depname, missing_ok);
address.objectSubId = 0;
break;
case OBJECT_TRIGGER:
address.classId = TriggerRelationId;
- address.objectId = get_trigger_oid(reloid, depname, false);
+ address.objectId = get_trigger_oid(reloid, depname, missing_ok);
address.objectSubId = 0;
break;
case OBJECT_CONSTRAINT:
address.classId = ConstraintRelationId;
- address.objectId = get_constraint_oid(reloid, depname, false);
+ address.objectId =
+ get_constraint_oid(reloid, depname, missing_ok);
address.objectSubId = 0;
break;
default:
@@ -512,13 +547,15 @@ get_object_address_relobject(ObjectType objtype, List *objname, Relation *relp)
*/
static ObjectAddress
get_object_address_attribute(ObjectType objtype, List *objname,
- Relation *relp, LOCKMODE lockmode)
+ Relation *relp, LOCKMODE lockmode,
+ bool missing_ok)
{
ObjectAddress address;
List *relname;
Oid reloid;
Relation relation;
const char *attname;
+ AttrNumber attnum;
/* Extract relation name and open relation. */
attname = strVal(lfirst(list_tail(objname)));
@@ -527,24 +564,77 @@ get_object_address_attribute(ObjectType objtype, List *objname,
reloid = RelationGetRelid(relation);
/* Look up attribute and construct return value. */
+ attnum = get_attnum(reloid, attname);
+ if (attnum == InvalidAttrNumber)
+ {
+ if (!missing_ok)
+ ereport(ERROR,
+ (errcode(ERRCODE_UNDEFINED_COLUMN),
+ errmsg("column \"%s\" of relation \"%s\" does not exist",
+ attname, NameListToString(relname))));
+
+ address.classId = RelationRelationId;
+ address.objectId = InvalidOid;
+ address.objectSubId = InvalidAttrNumber;
+ return address;
+ }
+
address.classId = RelationRelationId;
address.objectId = reloid;
- address.objectSubId = get_attnum(reloid, attname);
- if (address.objectSubId == InvalidAttrNumber)
- ereport(ERROR,
- (errcode(ERRCODE_UNDEFINED_COLUMN),
- errmsg("column \"%s\" of relation \"%s\" does not exist",
- attname, RelationGetRelationName(relation))));
+ address.objectSubId = attnum;
*relp = relation;
return address;
}
/*
+ * Find the ObjectAddress for a type or domain
+ */
+static ObjectAddress
+get_object_address_type(ObjectType objtype,
+ List *objname, bool missing_ok)
+{
+ ObjectAddress address;
+ TypeName *typename;
+ Type tup;
+ typename = makeTypeNameFromNameList(objname);
+
+ address.classId = TypeRelationId;
+ address.objectId = InvalidOid;
+ address.objectSubId = 0;
+
+ tup = LookupTypeName(NULL, typename, NULL);
+ if (!HeapTupleIsValid(tup))
+ {
+ if (!missing_ok)
+ ereport(ERROR,
+ (errcode(ERRCODE_UNDEFINED_OBJECT),
+ errmsg("type \"%s\" does not exist",
+ TypeNameToString(typename))));
+ return address;
+ }
+ address.objectId = typeTypeId(tup);
+
+ if (objtype == OBJECT_DOMAIN)
+ {
+ if (((Form_pg_type) GETSTRUCT(tup))->typtype != TYPTYPE_DOMAIN)
+ ereport(ERROR,
+ (errcode(ERRCODE_WRONG_OBJECT_TYPE),
+ errmsg("\"%s\" is not a domain",
+ TypeNameToString(typename))));
+ }
+
+ ReleaseSysCache(tup);
+
+ return address;
+}
+
+/*
* Find the ObjectAddress for an opclass or opfamily.
*/
static ObjectAddress
-get_object_address_opcf(ObjectType objtype, List *objname, List *objargs)
+get_object_address_opcf(ObjectType objtype,
+ List *objname, List *objargs, bool missing_ok)
{
Oid amoid;
ObjectAddress address;
@@ -556,12 +646,12 @@ get_object_address_opcf(ObjectType objtype, List *objname, List *objargs)
{
case OBJECT_OPCLASS:
address.classId = OperatorClassRelationId;
- address.objectId = get_opclass_oid(amoid, objname, false);
+ address.objectId = get_opclass_oid(amoid, objname, missing_ok);
address.objectSubId = 0;
break;
case OBJECT_OPFAMILY:
address.classId = OperatorFamilyRelationId;
- address.objectId = get_opfamily_oid(amoid, objname, false);
+ address.objectId = get_opfamily_oid(amoid, objname, missing_ok);
address.objectSubId = 0;
break;
default:
diff --git a/src/backend/catalog/pg_collation.c b/src/backend/catalog/pg_collation.c
index 5b92a4c0c2..28a016b972 100644
--- a/src/backend/catalog/pg_collation.c
+++ b/src/backend/catalog/pg_collation.c
@@ -26,6 +26,7 @@
#include "mb/pg_wchar.h"
#include "utils/builtins.h"
#include "utils/fmgroids.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c
index 6250b0735c..ec229810ca 100644
--- a/src/backend/catalog/pg_proc.c
+++ b/src/backend/catalog/pg_proc.c
@@ -35,6 +35,7 @@
#include "utils/acl.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
@@ -304,6 +305,7 @@ ProcedureCreate(const char *procedureName,
values[Anum_pg_proc_procost - 1] = Float4GetDatum(procost);
values[Anum_pg_proc_prorows - 1] = Float4GetDatum(prorows);
values[Anum_pg_proc_provariadic - 1] = ObjectIdGetDatum(variadicType);
+ values[Anum_pg_proc_protransform - 1] = ObjectIdGetDatum(InvalidOid);
values[Anum_pg_proc_proisagg - 1] = BoolGetDatum(isAgg);
values[Anum_pg_proc_proiswindow - 1] = BoolGetDatum(isWindowFunc);
values[Anum_pg_proc_prosecdef - 1] = BoolGetDatum(security_definer);
diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c
index b059f9d784..ce082fd2c2 100644
--- a/src/backend/catalog/toasting.c
+++ b/src/backend/catalog/toasting.c
@@ -29,6 +29,7 @@
#include "miscadmin.h"
#include "nodes/makefuncs.h"
#include "utils/builtins.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
/* Potentially set by contrib/pg_upgrade_support functions */
diff --git a/src/backend/commands/alter.c b/src/backend/commands/alter.c
index 215e21cae0..2373d52c0f 100644
--- a/src/backend/commands/alter.c
+++ b/src/backend/commands/alter.c
@@ -38,6 +38,7 @@
#include "utils/acl.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
diff --git a/src/backend/commands/collationcmds.c b/src/backend/commands/collationcmds.c
index 7f8a108374..9e6138b92a 100644
--- a/src/backend/commands/collationcmds.c
+++ b/src/backend/commands/collationcmds.c
@@ -31,6 +31,7 @@
#include "utils/builtins.h"
#include "utils/lsyscache.h"
#include "utils/pg_locale.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
static void AlterCollationOwner_internal(Relation rel, Oid collationOid,
diff --git a/src/backend/commands/comment.c b/src/backend/commands/comment.c
index 587a689496..200b6a22cc 100644
--- a/src/backend/commands/comment.c
+++ b/src/backend/commands/comment.c
@@ -25,6 +25,7 @@
#include "miscadmin.h"
#include "utils/builtins.h"
#include "utils/fmgroids.h"
+#include "utils/rel.h"
#include "utils/tqual.h"
@@ -69,7 +70,7 @@ CommentObject(CommentStmt *stmt)
* against concurrent DROP operations.
*/
address = get_object_address(stmt->objtype, stmt->objname, stmt->objargs,
- &relation, ShareUpdateExclusiveLock);
+ &relation, ShareUpdateExclusiveLock, false);
/* Require ownership of the target object. */
check_object_ownership(GetUserId(), stmt->objtype, address,
diff --git a/src/backend/commands/constraint.c b/src/backend/commands/constraint.c
index e8a19a9f03..b76cdeeb63 100644
--- a/src/backend/commands/constraint.c
+++ b/src/backend/commands/constraint.c
@@ -17,6 +17,7 @@
#include "commands/trigger.h"
#include "executor/executor.h"
#include "utils/builtins.h"
+#include "utils/rel.h"
#include "utils/tqual.h"
diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c
index 57429035e8..528a3a1f53 100644
--- a/src/backend/commands/copy.c
+++ b/src/backend/commands/copy.c
@@ -42,6 +42,7 @@
#include "utils/builtins.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
#include "utils/snapmgr.h"
diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c
index a770daf88d..fee829f960 100644
--- a/src/backend/commands/explain.c
+++ b/src/backend/commands/explain.c
@@ -32,8 +32,9 @@
#include "utils/builtins.h"
#include "utils/guc.h"
#include "utils/lsyscache.h"
-#include "utils/tuplesort.h"
+#include "utils/rel.h"
#include "utils/snapmgr.h"
+#include "utils/tuplesort.h"
#include "utils/xml.h"
diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c
index d848926ae5..a0385eb0a1 100644
--- a/src/backend/commands/extension.c
+++ b/src/backend/commands/extension.c
@@ -51,6 +51,7 @@
#include "utils/fmgroids.h"
#include "utils/guc.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#include "utils/snapmgr.h"
#include "utils/tqual.h"
@@ -626,7 +627,7 @@ read_extension_aux_control_file(const ExtensionControlFile *pcontrol,
}
/*
- * Read a SQL script file into a string, and convert to database encoding
+ * Read an SQL script file into a string, and convert to database encoding
*/
static char *
read_extension_script_file(const ExtensionControlFile *control,
@@ -2099,7 +2100,7 @@ pg_extension_config_dump(PG_FUNCTION_ARGS)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("pg_extension_config_dump() can only be called "
- "from a SQL script executed by CREATE EXTENSION")));
+ "from an SQL script executed by CREATE EXTENSION")));
/*
* Check that the table exists and is a member of the extension being
@@ -2703,7 +2704,7 @@ ExecAlterExtensionContentsStmt(AlterExtensionContentsStmt *stmt)
* against concurrent DROP and ALTER EXTENSION ADD/DROP operations.
*/
object = get_object_address(stmt->objtype, stmt->objname, stmt->objargs,
- &relation, ShareUpdateExclusiveLock);
+ &relation, ShareUpdateExclusiveLock, false);
/* Permission check: must own target object, too */
check_object_ownership(GetUserId(), stmt->objtype, object,
diff --git a/src/backend/commands/foreigncmds.c b/src/backend/commands/foreigncmds.c
index 21d52e06ba..643ba91bfe 100644
--- a/src/backend/commands/foreigncmds.c
+++ b/src/backend/commands/foreigncmds.c
@@ -165,8 +165,18 @@ transformGenericOptions(Oid catalogId,
result = optionListToArray(resultOptions);
- if (OidIsValid(fdwvalidator) && DatumGetPointer(result) != NULL)
- OidFunctionCall2(fdwvalidator, result, ObjectIdGetDatum(catalogId));
+ if (OidIsValid(fdwvalidator))
+ {
+ Datum valarg = result;
+
+ /*
+ * Pass a null options list as an empty array, so that validators
+ * don't have to be declared non-strict to handle the case.
+ */
+ if (DatumGetPointer(valarg) == NULL)
+ valarg = PointerGetDatum(construct_empty_array(TEXTOID));
+ OidFunctionCall2(fdwvalidator, valarg, ObjectIdGetDatum(catalogId));
+ }
return result;
}
diff --git a/src/backend/commands/schemacmds.c b/src/backend/commands/schemacmds.c
index 82bbf8fa50..5dd5763a7b 100644
--- a/src/backend/commands/schemacmds.c
+++ b/src/backend/commands/schemacmds.c
@@ -29,6 +29,7 @@
#include "utils/acl.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
diff --git a/src/backend/commands/seclabel.c b/src/backend/commands/seclabel.c
index 7afb7139a6..6e7e9c2976 100644
--- a/src/backend/commands/seclabel.c
+++ b/src/backend/commands/seclabel.c
@@ -23,6 +23,7 @@
#include "utils/fmgroids.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
#include "utils/tqual.h"
typedef struct
@@ -88,7 +89,7 @@ ExecSecLabelStmt(SecLabelStmt *stmt)
* guard against concurrent modifications.
*/
address = get_object_address(stmt->objtype, stmt->objname, stmt->objargs,
- &relation, ShareUpdateExclusiveLock);
+ &relation, ShareUpdateExclusiveLock, false);
/* Require ownership of the target object. */
check_object_ownership(GetUserId(), stmt->objtype, address,
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 912f45c052..3bc350a113 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -56,6 +56,7 @@
#include "nodes/nodeFuncs.h"
#include "nodes/parsenodes.h"
#include "optimizer/clauses.h"
+#include "optimizer/planner.h"
#include "parser/parse_clause.h"
#include "parser/parse_coerce.h"
#include "parser/parse_collate.h"
@@ -258,7 +259,8 @@ static void AlterIndexNamespaces(Relation classRel, Relation rel,
static void AlterSeqNamespaces(Relation classRel, Relation rel,
Oid oldNspOid, Oid newNspOid,
const char *newNspName, LOCKMODE lockmode);
-static void ATExecValidateConstraint(Relation rel, char *constrName);
+static void ATExecValidateConstraint(Relation rel, char *constrName,
+ bool recurse, bool recursing, LOCKMODE lockmode);
static int transformColumnNameList(Oid relId, List *colList,
int16 *attnums, Oid *atttypids);
static int transformFkeyGetPrimaryKey(Relation pkrel, Oid *indexOid,
@@ -269,6 +271,7 @@ static Oid transformFkeyCheckAttrs(Relation pkrel,
int numattrs, int16 *attnums,
Oid *opclasses);
static void checkFkeyPermissions(Relation rel, int16 *attnums, int natts);
+static void validateCheckConstraint(Relation rel, HeapTuple constrtup);
static void validateForeignKeyConstraint(char *conname,
Relation rel, Relation pkrel,
Oid pkindOid, Oid constraintOid);
@@ -429,6 +432,13 @@ DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId)
errmsg("constraints on foreign tables are not supported")));
/*
+ * Look up the namespace in which we are supposed to create the relation,
+ * and check we have permission to create there.
+ */
+ namespaceId = RangeVarGetAndCheckCreationNamespace(stmt->relation);
+ RangeVarAdjustRelationPersistence(stmt->relation, namespaceId);
+
+ /*
* Security check: disallow creating temp tables from security-restricted
* code. This is needed because calling code might not expect untrusted
* tables to appear in pg_temp at the front of its search path.
@@ -440,12 +450,6 @@ DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId)
errmsg("cannot create temporary table within security-restricted operation")));
/*
- * Look up the namespace in which we are supposed to create the relation,
- * and check we have permission to create there.
- */
- namespaceId = RangeVarGetAndCheckCreationNamespace(stmt->relation);
-
- /*
* Select tablespace to use. If not specified, use default tablespace
* (which may in turn default to database's default).
*/
@@ -560,6 +564,7 @@ DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId)
cooked->name = NULL;
cooked->attnum = attnum;
cooked->expr = colDef->cooked_default;
+ cooked->skip_validation = false;
cooked->is_local = true; /* not used for defaults */
cooked->inhcount = 0; /* ditto */
cookedDefaults = lappend(cookedDefaults, cooked);
@@ -1567,6 +1572,7 @@ MergeAttributes(List *schema, List *supers, char relpersistence,
cooked->name = pstrdup(name);
cooked->attnum = 0; /* not used for constraints */
cooked->expr = expr;
+ cooked->skip_validation = false;
cooked->is_local = false;
cooked->inhcount = 1;
constraints = lappend(constraints, cooked);
@@ -2572,6 +2578,31 @@ AlterTableInternal(Oid relid, List *cmds, bool recurse)
LOCKMODE
AlterTableGetLockLevel(List *cmds)
{
+ /*
+ * Late in 9.1 dev cycle a number of issues were uncovered with access
+ * to catalog relations, leading to the decision to re-enforce all DDL
+ * at AccessExclusiveLock level by default.
+ *
+ * The issues are that there is a pervasive assumption in the code that
+ * the catalogs will not be read unless an AccessExclusiveLock is held.
+ * If that rule is relaxed, we must protect against a number of potential
+ * effects - infrequent, but proven possible with test cases where
+ * multiple DDL operations occur in a stream against frequently accessed
+ * tables.
+ *
+ * 1. Catalog tables are read using SnapshotNow, which has a race bug
+ * that allows a scan to return no valid rows even when one is present
+ * in the case of a commit of a concurrent update of the catalog table.
+ * SnapshotNow also ignores transactions in progress, so takes the
+ * latest committed version without waiting for the latest changes.
+ *
+ * 2. Relcache needs to be internally consistent, so unless we lock the
+ * definition during reads we have no way to guarantee that.
+ *
+ * 3. Catcache access isn't coordinated at all so refreshes can occur at
+ * any time.
+ */
+#ifdef REDUCED_ALTER_TABLE_LOCK_LEVELS
ListCell *lcmd;
LOCKMODE lockmode = ShareUpdateExclusiveLock;
@@ -2720,6 +2751,9 @@ AlterTableGetLockLevel(List *cmds)
if (cmd_lockmode > lockmode)
lockmode = cmd_lockmode;
}
+#else
+ LOCKMODE lockmode = AccessExclusiveLock;
+#endif
return lockmode;
}
@@ -2932,7 +2966,14 @@ ATPrepCmd(List **wqueue, Relation rel, AlterTableCmd *cmd,
ATPrepAddInherit(rel);
pass = AT_PASS_MISC;
break;
- case AT_ValidateConstraint:
+ case AT_ValidateConstraint: /* VALIDATE CONSTRAINT */
+ ATSimplePermissions(rel, ATT_TABLE);
+ /* Recursion occurs during execution phase */
+ /* No command-specific prep needed except saving recurse flag */
+ if (recurse)
+ cmd->subtype = AT_ValidateConstraintRecurse;
+ pass = AT_PASS_MISC;
+ break;
case AT_EnableTrig: /* ENABLE TRIGGER variants */
case AT_EnableAlwaysTrig:
case AT_EnableReplicaTrig:
@@ -3097,8 +3138,12 @@ ATExecCmd(List **wqueue, AlteredTableInfo *tab, Relation rel,
case AT_AddIndexConstraint: /* ADD CONSTRAINT USING INDEX */
ATExecAddIndexConstraint(tab, rel, (IndexStmt *) cmd->def, lockmode);
break;
- case AT_ValidateConstraint:
- ATExecValidateConstraint(rel, cmd->name);
+ case AT_ValidateConstraint: /* VALIDATE CONSTRAINT */
+ ATExecValidateConstraint(rel, cmd->name, false, false, lockmode);
+ break;
+ case AT_ValidateConstraintRecurse: /* VALIDATE CONSTRAINT with
+ * recursion */
+ ATExecValidateConstraint(rel, cmd->name, true, false, lockmode);
break;
case AT_DropConstraint: /* DROP CONSTRAINT */
ATExecDropConstraint(rel, cmd->name, cmd->behavior,
@@ -3495,7 +3540,8 @@ ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap, LOCKMODE lockmode)
{
NewColumnValue *ex = lfirst(l);
- ex->exprstate = ExecPrepareExpr((Expr *) ex->expr, estate);
+ /* expr already planned */
+ ex->exprstate = ExecInitExpr((Expr *) ex->expr, NULL);
}
notnull_attrs = NIL;
@@ -3966,28 +4012,28 @@ find_composite_type_dependencies(Oid typeOid, Relation origRelation,
if (origTypeName)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("cannot alter type \"%s\" because column \"%s\".\"%s\" uses it",
+ errmsg("cannot alter type \"%s\" because column \"%s.%s\" uses it",
origTypeName,
RelationGetRelationName(rel),
NameStr(att->attname))));
else if (origRelation->rd_rel->relkind == RELKIND_COMPOSITE_TYPE)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("cannot alter type \"%s\" because column \"%s\".\"%s\" uses it",
+ errmsg("cannot alter type \"%s\" because column \"%s.%s\" uses it",
RelationGetRelationName(origRelation),
RelationGetRelationName(rel),
NameStr(att->attname))));
else if (origRelation->rd_rel->relkind == RELKIND_FOREIGN_TABLE)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("cannot alter foreign table \"%s\" because column \"%s\".\"%s\" uses its rowtype",
+ errmsg("cannot alter foreign table \"%s\" because column \"%s.%s\" uses its row type",
RelationGetRelationName(origRelation),
RelationGetRelationName(rel),
NameStr(att->attname))));
else
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("cannot alter table \"%s\" because column \"%s\".\"%s\" uses its rowtype",
+ errmsg("cannot alter table \"%s\" because column \"%s.%s\" uses its row type",
RelationGetRelationName(origRelation),
RelationGetRelationName(rel),
NameStr(att->attname))));
@@ -4398,7 +4444,7 @@ ATExecAddColumn(List **wqueue, AlteredTableInfo *tab, Relation rel,
newval = (NewColumnValue *) palloc0(sizeof(NewColumnValue));
newval->attnum = attribute.attnum;
- newval->expr = defval;
+ newval->expr = expression_planner(defval);
tab->newvals = lappend(tab->newvals, newval);
tab->rewrite = true;
@@ -5382,19 +5428,23 @@ ATAddCheckConstraint(List **wqueue, AlteredTableInfo *tab, Relation rel,
list_make1(copyObject(constr)),
recursing, !recursing);
- /* Add each constraint to Phase 3's queue */
+ /* Add each to-be-validated constraint to Phase 3's queue */
foreach(lcon, newcons)
{
CookedConstraint *ccon = (CookedConstraint *) lfirst(lcon);
- NewConstraint *newcon;
- newcon = (NewConstraint *) palloc0(sizeof(NewConstraint));
- newcon->name = ccon->name;
- newcon->contype = ccon->contype;
- /* ExecQual wants implicit-AND format */
- newcon->qual = (Node *) make_ands_implicit((Expr *) ccon->expr);
+ if (!ccon->skip_validation)
+ {
+ NewConstraint *newcon;
- tab->constraints = lappend(tab->constraints, newcon);
+ newcon = (NewConstraint *) palloc0(sizeof(NewConstraint));
+ newcon->name = ccon->name;
+ newcon->contype = ccon->contype;
+ /* ExecQual wants implicit-AND format */
+ newcon->qual = (Node *) make_ands_implicit((Expr *) ccon->expr);
+
+ tab->constraints = lappend(tab->constraints, newcon);
+ }
/* Save the actually assigned name if it was defaulted */
if (constr->conname == NULL)
@@ -5753,9 +5803,15 @@ ATAddForeignKeyConstraint(AlteredTableInfo *tab, Relation rel,
/*
* ALTER TABLE VALIDATE CONSTRAINT
+ *
+ * XXX The reason we handle recursion here rather than at Phase 1 is because
+ * there's no good way to skip recursing when handling foreign keys: there is
+ * no need to lock children in that case, yet we wouldn't be able to avoid
+ * doing so at that level.
*/
static void
-ATExecValidateConstraint(Relation rel, char *constrName)
+ATExecValidateConstraint(Relation rel, char *constrName, bool recurse,
+ bool recursing, LOCKMODE lockmode)
{
Relation conrel;
SysScanDesc scan;
@@ -5779,8 +5835,7 @@ ATExecValidateConstraint(Relation rel, char *constrName)
while (HeapTupleIsValid(tuple = systable_getnext(scan)))
{
con = (Form_pg_constraint) GETSTRUCT(tuple);
- if (con->contype == CONSTRAINT_FOREIGN &&
- strcmp(NameStr(con->conname), constrName) == 0)
+ if (strcmp(NameStr(con->conname), constrName) == 0)
{
found = true;
break;
@@ -5790,39 +5845,110 @@ ATExecValidateConstraint(Relation rel, char *constrName)
if (!found)
ereport(ERROR,
(errcode(ERRCODE_UNDEFINED_OBJECT),
- errmsg("foreign key constraint \"%s\" of relation \"%s\" does not exist",
+ errmsg("constraint \"%s\" of relation \"%s\" does not exist",
+ constrName, RelationGetRelationName(rel))));
+
+ if (con->contype != CONSTRAINT_FOREIGN &&
+ con->contype != CONSTRAINT_CHECK)
+ ereport(ERROR,
+ (errcode(ERRCODE_WRONG_OBJECT_TYPE),
+ errmsg("constraint \"%s\" of relation \"%s\" is not a foreign key or check constraint",
constrName, RelationGetRelationName(rel))));
if (!con->convalidated)
{
- Oid conid = HeapTupleGetOid(tuple);
- HeapTuple copyTuple = heap_copytuple(tuple);
- Form_pg_constraint copy_con = (Form_pg_constraint) GETSTRUCT(copyTuple);
- Relation refrel;
+ HeapTuple copyTuple;
+ Form_pg_constraint copy_con;
- /*
- * Triggers are already in place on both tables, so a concurrent write
- * that alters the result here is not possible. Normally we can run a
- * query here to do the validation, which would only require
- * AccessShareLock. In some cases, it is possible that we might need
- * to fire triggers to perform the check, so we take a lock at
- * RowShareLock level just in case.
- */
- refrel = heap_open(con->confrelid, RowShareLock);
+ if (con->contype == CONSTRAINT_FOREIGN)
+ {
+ Oid conid = HeapTupleGetOid(tuple);
+ Relation refrel;
+
+ /*
+ * Triggers are already in place on both tables, so a concurrent write
+ * that alters the result here is not possible. Normally we can run a
+ * query here to do the validation, which would only require
+ * AccessShareLock. In some cases, it is possible that we might need
+ * to fire triggers to perform the check, so we take a lock at
+ * RowShareLock level just in case.
+ */
+ refrel = heap_open(con->confrelid, RowShareLock);
+
+ validateForeignKeyConstraint(constrName, rel, refrel,
+ con->conindid,
+ conid);
+ heap_close(refrel, NoLock);
+
+ /*
+ * Foreign keys do not inherit, so we purposedly ignore the
+ * recursion bit here
+ */
+ }
+ else if (con->contype == CONSTRAINT_CHECK)
+ {
+ List *children = NIL;
+ ListCell *child;
+
+ /*
+ * If we're recursing, the parent has already done this, so skip
+ * it.
+ */
+ if (!recursing)
+ children = find_all_inheritors(RelationGetRelid(rel),
+ lockmode, NULL);
+
+ /*
+ * For CHECK constraints, we must ensure that we only mark the
+ * constraint as validated on the parent if it's already validated
+ * on the children.
+ *
+ * We recurse before validating on the parent, to reduce risk of
+ * deadlocks.
+ */
+ foreach(child, children)
+ {
+ Oid childoid = lfirst_oid(child);
+ Relation childrel;
- validateForeignKeyConstraint(constrName, rel, refrel,
- con->conindid,
- conid);
+ if (childoid == RelationGetRelid(rel))
+ continue;
+
+ /*
+ * If we are told not to recurse, there had better not be any
+ * child tables; else the addition would put them out of step.
+ */
+ if (!recurse)
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_TABLE_DEFINITION),
+ errmsg("constraint must be validated on child tables too")));
+
+ /* find_all_inheritors already got lock */
+ childrel = heap_open(childoid, NoLock);
+
+ ATExecValidateConstraint(childrel, constrName, false,
+ true, lockmode);
+ heap_close(childrel, NoLock);
+ }
+
+ validateCheckConstraint(rel, tuple);
+
+ /*
+ * Invalidate relcache so that others see the new validated
+ * constraint.
+ */
+ CacheInvalidateRelcache(rel);
+ }
/*
* Now update the catalog, while we have the door open.
*/
+ copyTuple = heap_copytuple(tuple);
+ copy_con = (Form_pg_constraint) GETSTRUCT(copyTuple);
copy_con->convalidated = true;
simple_heap_update(conrel, &copyTuple->t_self, copyTuple);
CatalogUpdateIndexes(conrel, copyTuple);
heap_freetuple(copyTuple);
-
- heap_close(refrel, NoLock);
}
systable_endscan(scan);
@@ -6129,6 +6255,79 @@ checkFkeyPermissions(Relation rel, int16 *attnums, int natts)
}
/*
+ * Scan the existing rows in a table to verify they meet a proposed
+ * CHECK constraint.
+ *
+ * The caller must have opened and locked the relation appropriately.
+ */
+static void
+validateCheckConstraint(Relation rel, HeapTuple constrtup)
+{
+ EState *estate;
+ Datum val;
+ char *conbin;
+ Expr *origexpr;
+ List *exprstate;
+ TupleDesc tupdesc;
+ HeapScanDesc scan;
+ HeapTuple tuple;
+ ExprContext *econtext;
+ MemoryContext oldcxt;
+ TupleTableSlot *slot;
+ Form_pg_constraint constrForm;
+ bool isnull;
+
+ constrForm = (Form_pg_constraint) GETSTRUCT(constrtup);
+
+ estate = CreateExecutorState();
+ /*
+ * XXX this tuple doesn't really come from a syscache, but this doesn't
+ * matter to SysCacheGetAttr, because it only wants to be able to fetch the
+ * tupdesc
+ */
+ val = SysCacheGetAttr(CONSTROID, constrtup, Anum_pg_constraint_conbin,
+ &isnull);
+ if (isnull)
+ elog(ERROR, "null conbin for constraint %u",
+ HeapTupleGetOid(constrtup));
+ conbin = TextDatumGetCString(val);
+ origexpr = (Expr *) stringToNode(conbin);
+ exprstate = (List *)
+ ExecPrepareExpr((Expr *) make_ands_implicit(origexpr), estate);
+
+ econtext = GetPerTupleExprContext(estate);
+ tupdesc = RelationGetDescr(rel);
+ slot = MakeSingleTupleTableSlot(tupdesc);
+ econtext->ecxt_scantuple = slot;
+
+ scan = heap_beginscan(rel, SnapshotNow, 0, NULL);
+
+ /*
+ * Switch to per-tuple memory context and reset it for each tuple
+ * produced, so we don't leak memory.
+ */
+ oldcxt = MemoryContextSwitchTo(GetPerTupleMemoryContext(estate));
+
+ while ((tuple = heap_getnext(scan, ForwardScanDirection)) != NULL)
+ {
+ ExecStoreTuple(tuple, slot, InvalidBuffer, false);
+
+ if (!ExecQual(exprstate, econtext, true))
+ ereport(ERROR,
+ (errcode(ERRCODE_CHECK_VIOLATION),
+ errmsg("check constraint \"%s\" is violated by some row",
+ NameStr(constrForm->conname))));
+
+ ResetExprContext(econtext);
+ }
+
+ MemoryContextSwitchTo(oldcxt);
+ heap_endscan(scan);
+ ExecDropSingleTupleTableSlot(slot);
+ FreeExecutorState(estate);
+}
+
+/*
* Scan the existing rows in a table to verify they meet a proposed FK
* constraint.
*
@@ -6648,7 +6847,7 @@ ATPrepAlterColumnType(List **wqueue,
* expression, else just take the old value and try to coerce it. We
* do this first so that type incompatibility can be detected before
* we waste effort, and because we need the expression to be parsed
- * against the original table rowtype.
+ * against the original table row type.
*/
if (transform)
{
@@ -6707,6 +6906,9 @@ ATPrepAlterColumnType(List **wqueue,
/* Fix collations after all else */
assign_expr_collations(pstate, transform);
+ /* Plan the expr now so we can accurately assess the need to rewrite. */
+ transform = (Node *) expression_planner((Expr *) transform);
+
/*
* Add a work queue item to make ATRewriteTable update the column
* contents.
@@ -6722,7 +6924,8 @@ ATPrepAlterColumnType(List **wqueue,
else if (transform)
ereport(ERROR,
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
- errmsg("ALTER TYPE USING is only supported on plain tables")));
+ errmsg("\"%s\" is not a table",
+ RelationGetRelationName(rel))));
if (tab->relkind == RELKIND_COMPOSITE_TYPE ||
tab->relkind == RELKIND_FOREIGN_TABLE)
@@ -7493,7 +7696,7 @@ ATExecChangeOwner(Oid relationOid, Oid newOwnerId, bool recursing, LOCKMODE lock
newOwnerId);
/*
- * Also change the ownership of the table's rowtype, if it has one
+ * Also change the ownership of the table's row type, if it has one
*/
if (tuple_class->relkind != RELKIND_INDEX)
AlterTypeOwnerInternal(tuple_class->reltype, newOwnerId,
@@ -9005,7 +9208,7 @@ AlterTableNamespace(RangeVar *relation, const char *newschema,
AlterRelationNamespaceInternal(classRel, relid, oldNspOid, nspOid, true);
- /* Fix the table's rowtype too */
+ /* Fix the table's row type too */
AlterTypeNamespaceInternal(rel->rd_rel->reltype, nspOid, false, false);
/* Fix other dependent stuff */
@@ -9089,7 +9292,7 @@ AlterIndexNamespaces(Relation classRel, Relation rel,
/*
* Note: currently, the index will not have its own dependency on the
* namespace, so we don't need to do changeDependencyFor(). There's no
- * rowtype in pg_type, either.
+ * row type in pg_type, either.
*/
AlterRelationNamespaceInternal(classRel, indexOid,
oldNspOid, newNspOid,
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
index 798d8a85a4..8072c77687 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -51,6 +51,7 @@
#include "utils/inval.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
#include "utils/snapmgr.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c
index 66c11de672..7c27f85cdc 100644
--- a/src/backend/commands/typecmds.c
+++ b/src/backend/commands/typecmds.c
@@ -63,6 +63,7 @@
#include "utils/fmgroids.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
@@ -86,6 +87,7 @@ static Oid findTypeSendFunction(List *procname, Oid typeOid);
static Oid findTypeTypmodinFunction(List *procname);
static Oid findTypeTypmodoutFunction(List *procname);
static Oid findTypeAnalyzeFunction(List *procname, Oid typeOid);
+static void validateDomainConstraint(Oid domainoid, char *ccbin);
static List *get_rels_with_domain(Oid domainOid, LOCKMODE lockmode);
static void checkDomainOwner(HeapTuple tup);
static void checkEnumOwner(HeapTuple tup);
@@ -1609,6 +1611,7 @@ DefineCompositeType(const RangeVar *typevar, List *coldeflist)
* instead of below about a "relation".
*/
typeNamespace = RangeVarGetCreationNamespace(createStmt->relation);
+ RangeVarAdjustRelationPersistence(createStmt->relation, typeNamespace);
old_type_oid =
GetSysCacheOid2(TYPENAMENSP,
CStringGetDatum(createStmt->relation->relname),
@@ -1941,14 +1944,8 @@ AlterDomainAddConstraint(List *names, Node *newConstraint)
Relation typrel;
HeapTuple tup;
Form_pg_type typTup;
- List *rels;
- ListCell *rt;
- EState *estate;
- ExprContext *econtext;
- char *ccbin;
- Expr *expr;
- ExprState *exprstate;
Constraint *constr;
+ char *ccbin;
/* Make a TypeName so we can use standard type lookup machinery */
typename = makeTypeNameFromNameList(names);
@@ -2027,10 +2024,124 @@ AlterDomainAddConstraint(List *names, Node *newConstraint)
constr, NameStr(typTup->typname));
/*
- * Test all values stored in the attributes based on the domain the
- * constraint is being added to.
+ * If requested to validate the constraint, test all values stored in the
+ * attributes based on the domain the constraint is being added to.
*/
- expr = (Expr *) stringToNode(ccbin);
+ if (!constr->skip_validation)
+ validateDomainConstraint(domainoid, ccbin);
+
+ /* Clean up */
+ heap_close(typrel, RowExclusiveLock);
+}
+
+/*
+ * AlterDomainValidateConstraint
+ *
+ * Implements the ALTER DOMAIN .. VALIDATE CONSTRAINT statement.
+ */
+void
+AlterDomainValidateConstraint(List *names, char *constrName)
+{
+ TypeName *typename;
+ Oid domainoid;
+ Relation typrel;
+ Relation conrel;
+ HeapTuple tup;
+ Form_pg_constraint con = NULL;
+ Form_pg_constraint copy_con;
+ char *conbin;
+ SysScanDesc scan;
+ Datum val;
+ bool found = false;
+ bool isnull;
+ HeapTuple tuple;
+ HeapTuple copyTuple;
+ ScanKeyData key;
+
+ /* Make a TypeName so we can use standard type lookup machinery */
+ typename = makeTypeNameFromNameList(names);
+ domainoid = typenameTypeId(NULL, typename);
+
+ /* Look up the domain in the type table */
+ typrel = heap_open(TypeRelationId, AccessShareLock);
+
+ tup = SearchSysCache1(TYPEOID, ObjectIdGetDatum(domainoid));
+ if (!HeapTupleIsValid(tup))
+ elog(ERROR, "cache lookup failed for type %u", domainoid);
+
+ /* Check it's a domain and check user has permission for ALTER DOMAIN */
+ checkDomainOwner(tup);
+
+ /*
+ * Find and check the target constraint
+ */
+ conrel = heap_open(ConstraintRelationId, RowExclusiveLock);
+ ScanKeyInit(&key,
+ Anum_pg_constraint_contypid,
+ BTEqualStrategyNumber, F_OIDEQ,
+ ObjectIdGetDatum(domainoid));
+ scan = systable_beginscan(conrel, ConstraintTypidIndexId,
+ true, SnapshotNow, 1, &key);
+
+ while (HeapTupleIsValid(tuple = systable_getnext(scan)))
+ {
+ con = (Form_pg_constraint) GETSTRUCT(tuple);
+ if (strcmp(NameStr(con->conname), constrName) == 0)
+ {
+ found = true;
+ break;
+ }
+ }
+
+ if (!found)
+ ereport(ERROR,
+ (errcode(ERRCODE_UNDEFINED_OBJECT),
+ errmsg("constraint \"%s\" of domain \"%s\" does not exist",
+ constrName, TypeNameToString(typename))));
+
+ if (con->contype != CONSTRAINT_CHECK)
+ ereport(ERROR,
+ (errcode(ERRCODE_WRONG_OBJECT_TYPE),
+ errmsg("constraint \"%s\" of domain \"%s\" is not a check constraint",
+ constrName, TypeNameToString(typename))));
+
+ val = SysCacheGetAttr(CONSTROID, tuple,
+ Anum_pg_constraint_conbin,
+ &isnull);
+ if (isnull)
+ elog(ERROR, "null conbin for constraint %u",
+ HeapTupleGetOid(tuple));
+ conbin = TextDatumGetCString(val);
+
+ validateDomainConstraint(domainoid, conbin);
+
+ /*
+ * Now update the catalog, while we have the door open.
+ */
+ copyTuple = heap_copytuple(tuple);
+ copy_con = (Form_pg_constraint) GETSTRUCT(copyTuple);
+ copy_con->convalidated = true;
+ simple_heap_update(conrel, &copyTuple->t_self, copyTuple);
+ CatalogUpdateIndexes(conrel, copyTuple);
+ heap_freetuple(copyTuple);
+
+ systable_endscan(scan);
+
+ heap_close(typrel, AccessShareLock);
+ heap_close(conrel, RowExclusiveLock);
+
+ ReleaseSysCache(tup);
+}
+
+static void
+validateDomainConstraint(Oid domainoid, char *ccbin)
+{
+ Expr *expr = (Expr *) stringToNode(ccbin);
+ List *rels;
+ ListCell *rt;
+ EState *estate;
+ ExprContext *econtext;
+ ExprState *exprstate;
/* Need an EState to run ExecEvalExpr */
estate = CreateExecutorState();
@@ -2092,11 +2203,7 @@ AlterDomainAddConstraint(List *names, Node *newConstraint)
}
FreeExecutorState(estate);
-
- /* Clean up */
- heap_close(typrel, RowExclusiveLock);
}
-
/*
* get_rels_with_domain
*
@@ -2416,7 +2523,7 @@ domainAddConstraint(Oid domainOid, Oid domainNamespace, Oid baseTypeOid,
CONSTRAINT_CHECK, /* Constraint Type */
false, /* Is Deferrable */
false, /* Is Deferred */
- true, /* Is Validated */
+ !constr->skip_validation, /* Is Validated */
InvalidOid, /* not a relation constraint */
NULL,
0,
diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c
index 5cbf3a04f8..9303967863 100644
--- a/src/backend/commands/vacuum.c
+++ b/src/backend/commands/vacuum.c
@@ -78,7 +78,7 @@ static bool vacuum_rel(Oid relid, VacuumStmt *vacstmt, bool do_toast,
* tables separately.
*
* for_wraparound is used by autovacuum to let us know when it's forcing
- * a vacuum for wraparound, which should not be auto-cancelled.
+ * a vacuum for wraparound, which should not be auto-canceled.
*
* bstrategy is normally given as NULL, but in autovacuum it can be passed
* in to use the same buffer strategy object across multiple vacuum() calls.
@@ -867,7 +867,7 @@ vacuum_rel(Oid relid, VacuumStmt *vacstmt, bool do_toast, bool for_wraparound)
* here by violating transaction semantics.)
*
* We also set the VACUUM_FOR_WRAPAROUND flag, which is passed down by
- * autovacuum; it's used to avoid cancelling a vacuum that was invoked
+ * autovacuum; it's used to avoid canceling a vacuum that was invoked
* in an emergency.
*
* Note: these flags remain set until CommitTransaction or
diff --git a/src/backend/commands/vacuumlazy.c b/src/backend/commands/vacuumlazy.c
index ccc586f12e..c5bf32e00f 100644
--- a/src/backend/commands/vacuumlazy.c
+++ b/src/backend/commands/vacuumlazy.c
@@ -513,7 +513,8 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats,
visibilitymap_pin(onerel, blkno, &vmbuffer);
LockBuffer(buf, BUFFER_LOCK_SHARE);
if (PageIsAllVisible(page))
- visibilitymap_set(onerel, blkno, PageGetLSN(page), &vmbuffer);
+ visibilitymap_set(onerel, blkno, InvalidXLogRecPtr,
+ vmbuffer);
LockBuffer(buf, BUFFER_LOCK_UNLOCK);
}
@@ -765,7 +766,8 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats,
* updating the visibility map, but since this case shouldn't
* happen anyway, don't worry about that.
*/
- visibilitymap_clear(onerel, blkno);
+ visibilitymap_pin(onerel, blkno, &vmbuffer);
+ visibilitymap_clear(onerel, blkno, vmbuffer);
}
LockBuffer(buf, BUFFER_LOCK_UNLOCK);
@@ -776,7 +778,7 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats,
visibilitymap_pin(onerel, blkno, &vmbuffer);
LockBuffer(buf, BUFFER_LOCK_SHARE);
if (PageIsAllVisible(page))
- visibilitymap_set(onerel, blkno, PageGetLSN(page), &vmbuffer);
+ visibilitymap_set(onerel, blkno, InvalidXLogRecPtr, vmbuffer);
LockBuffer(buf, BUFFER_LOCK_UNLOCK);
}
diff --git a/src/backend/commands/view.c b/src/backend/commands/view.c
index be681e3fd4..b238199658 100644
--- a/src/backend/commands/view.c
+++ b/src/backend/commands/view.c
@@ -97,10 +97,10 @@ isViewOnTempTable_walker(Node *node, void *context)
*---------------------------------------------------------------------
*/
static Oid
-DefineVirtualRelation(const RangeVar *relation, List *tlist, bool replace)
+DefineVirtualRelation(const RangeVar *relation, List *tlist, bool replace,
+ Oid namespaceId)
{
- Oid viewOid,
- namespaceId;
+ Oid viewOid;
CreateStmt *createStmt = makeNode(CreateStmt);
List *attrList;
ListCell *t;
@@ -160,7 +160,6 @@ DefineVirtualRelation(const RangeVar *relation, List *tlist, bool replace)
/*
* Check to see if we want to replace an existing view.
*/
- namespaceId = RangeVarGetCreationNamespace(relation);
viewOid = get_relname_relid(relation->relname, namespaceId);
if (OidIsValid(viewOid) && replace)
@@ -417,6 +416,7 @@ DefineView(ViewStmt *stmt, const char *queryString)
{
Query *viewParse;
Oid viewOid;
+ Oid namespaceId;
RangeVar *view;
/*
@@ -480,28 +480,31 @@ DefineView(ViewStmt *stmt, const char *queryString)
"names than columns")));
}
+ /* Unlogged views are not sensible. */
+ if (stmt->view->relpersistence == RELPERSISTENCE_UNLOGGED)
+ ereport(ERROR,
+ (errcode(ERRCODE_SYNTAX_ERROR),
+ errmsg("views cannot be unlogged because they do not have storage")));
+
/*
* If the user didn't explicitly ask for a temporary view, check whether
* we need one implicitly. We allow TEMP to be inserted automatically as
* long as the CREATE command is consistent with that --- no explicit
* schema name.
*/
- view = stmt->view;
+ view = copyObject(stmt->view); /* don't corrupt original command */
if (view->relpersistence == RELPERSISTENCE_PERMANENT
&& isViewOnTempTable(viewParse))
{
- view = copyObject(view); /* don't corrupt original command */
view->relpersistence = RELPERSISTENCE_TEMP;
ereport(NOTICE,
(errmsg("view \"%s\" will be a temporary view",
view->relname)));
}
- /* Unlogged views are not sensible. */
- if (view->relpersistence == RELPERSISTENCE_UNLOGGED)
- ereport(ERROR,
- (errcode(ERRCODE_SYNTAX_ERROR),
- errmsg("views cannot be unlogged because they do not have storage")));
+ /* Might also need to make it temporary if placed in temp schema. */
+ namespaceId = RangeVarGetCreationNamespace(view);
+ RangeVarAdjustRelationPersistence(view, namespaceId);
/*
* Create the view relation
@@ -510,7 +513,7 @@ DefineView(ViewStmt *stmt, const char *queryString)
* aborted.
*/
viewOid = DefineVirtualRelation(view, viewParse->targetList,
- stmt->replace);
+ stmt->replace, namespaceId);
/*
* The relation we have just created is not visible to any other commands
diff --git a/src/backend/executor/execAmi.c b/src/backend/executor/execAmi.c
index 01775ce449..ffdcc966ee 100644
--- a/src/backend/executor/execAmi.c
+++ b/src/backend/executor/execAmi.c
@@ -48,6 +48,7 @@
#include "executor/nodeWindowAgg.h"
#include "executor/nodeWorktablescan.h"
#include "nodes/nodeFuncs.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
diff --git a/src/backend/executor/execCurrent.c b/src/backend/executor/execCurrent.c
index 5312d9aeec..61a5f47112 100644
--- a/src/backend/executor/execCurrent.c
+++ b/src/backend/executor/execCurrent.c
@@ -18,6 +18,7 @@
#include "utils/builtins.h"
#include "utils/lsyscache.h"
#include "utils/portal.h"
+#include "utils/rel.h"
static char *fetch_cursor_param_value(ExprContext *econtext, int paramId);
diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c
index 2f8deb470c..eacd863647 100644
--- a/src/backend/executor/execMain.c
+++ b/src/backend/executor/execMain.c
@@ -2414,6 +2414,13 @@ OpenIntoRel(QueryDesc *queryDesc)
errmsg("ON COMMIT can only be used on temporary tables")));
/*
+ * Find namespace to create in, check its permissions
+ */
+ intoName = into->rel->relname;
+ namespaceId = RangeVarGetAndCheckCreationNamespace(into->rel);
+ RangeVarAdjustRelationPersistence(into->rel, namespaceId);
+
+ /*
* Security check: disallow creating temp tables from security-restricted
* code. This is needed because calling code might not expect untrusted
* tables to appear in pg_temp at the front of its search path.
@@ -2425,12 +2432,6 @@ OpenIntoRel(QueryDesc *queryDesc)
errmsg("cannot create temporary table within security-restricted operation")));
/*
- * Find namespace to create in, check its permissions
- */
- intoName = into->rel->relname;
- namespaceId = RangeVarGetAndCheckCreationNamespace(into->rel);
-
- /*
* Select tablespace to use. If not specified, use default tablespace
* (which may in turn default to database's default).
*/
diff --git a/src/backend/executor/nodeBitmapHeapscan.c b/src/backend/executor/nodeBitmapHeapscan.c
index e20ef1433e..c9b540e079 100644
--- a/src/backend/executor/nodeBitmapHeapscan.c
+++ b/src/backend/executor/nodeBitmapHeapscan.c
@@ -42,7 +42,9 @@
#include "executor/nodeBitmapHeapscan.h"
#include "pgstat.h"
#include "storage/bufmgr.h"
+#include "storage/predicate.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
#include "utils/snapmgr.h"
#include "utils/tqual.h"
@@ -349,9 +351,11 @@ bitgetpage(HeapScanDesc scan, TBMIterateResult *tbmres)
{
OffsetNumber offnum = tbmres->offsets[curslot];
ItemPointerData tid;
+ HeapTupleData heapTuple;
ItemPointerSet(&tid, page, offnum);
- if (heap_hot_search_buffer(&tid, scan->rs_rd, buffer, snapshot, NULL))
+ if (heap_hot_search_buffer(&tid, scan->rs_rd, buffer, snapshot,
+ &heapTuple, NULL, true))
scan->rs_vistuples[ntup++] = ItemPointerGetOffsetNumber(&tid);
}
}
@@ -369,14 +373,23 @@ bitgetpage(HeapScanDesc scan, TBMIterateResult *tbmres)
{
ItemId lp;
HeapTupleData loctup;
+ bool valid;
lp = PageGetItemId(dp, offnum);
if (!ItemIdIsNormal(lp))
continue;
loctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lp);
loctup.t_len = ItemIdGetLength(lp);
- if (HeapTupleSatisfiesVisibility(&loctup, snapshot, buffer))
+ loctup.t_tableOid = scan->rs_rd->rd_id;
+ ItemPointerSet(&loctup.t_self, page, offnum);
+ valid = HeapTupleSatisfiesVisibility(&loctup, snapshot, buffer);
+ if (valid)
+ {
scan->rs_vistuples[ntup++] = offnum;
+ PredicateLockTuple(scan->rs_rd, &loctup, snapshot);
+ }
+ CheckForSerializableConflictOut(valid, scan->rs_rd, &loctup,
+ buffer, snapshot);
}
}
diff --git a/src/backend/executor/nodeForeignscan.c b/src/backend/executor/nodeForeignscan.c
index d50489c7f4..841ae6931b 100644
--- a/src/backend/executor/nodeForeignscan.c
+++ b/src/backend/executor/nodeForeignscan.c
@@ -25,6 +25,7 @@
#include "executor/executor.h"
#include "executor/nodeForeignscan.h"
#include "foreign/fdwapi.h"
+#include "utils/rel.h"
static TupleTableSlot *ForeignNext(ForeignScanState *node);
static bool ForeignRecheck(ForeignScanState *node, TupleTableSlot *slot);
diff --git a/src/backend/executor/nodeIndexscan.c b/src/backend/executor/nodeIndexscan.c
index dbc1467d5b..263f3b946b 100644
--- a/src/backend/executor/nodeIndexscan.c
+++ b/src/backend/executor/nodeIndexscan.c
@@ -33,6 +33,7 @@
#include "utils/array.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
static TupleTableSlot *IndexNext(IndexScanState *node);
diff --git a/src/backend/executor/nodeLockRows.c b/src/backend/executor/nodeLockRows.c
index d71278ebd7..0c48b6bcac 100644
--- a/src/backend/executor/nodeLockRows.c
+++ b/src/backend/executor/nodeLockRows.c
@@ -25,6 +25,7 @@
#include "executor/executor.h"
#include "executor/nodeLockRows.h"
#include "storage/bufmgr.h"
+#include "utils/rel.h"
#include "utils/tqual.h"
diff --git a/src/backend/executor/nodeMergeAppend.c b/src/backend/executor/nodeMergeAppend.c
index 43059664b9..fa0ecc8176 100644
--- a/src/backend/executor/nodeMergeAppend.c
+++ b/src/backend/executor/nodeMergeAppend.c
@@ -42,6 +42,7 @@
#include "executor/execdebug.h"
#include "executor/nodeMergeAppend.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
/*
* It gets quite confusing having a heap array (indexed by integers) which
diff --git a/src/backend/executor/nodeModifyTable.c b/src/backend/executor/nodeModifyTable.c
index c0eab4bf0d..070f27c66c 100644
--- a/src/backend/executor/nodeModifyTable.c
+++ b/src/backend/executor/nodeModifyTable.c
@@ -46,6 +46,7 @@
#include "storage/bufmgr.h"
#include "utils/builtins.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
#include "utils/tqual.h"
diff --git a/src/backend/executor/nodeSeqscan.c b/src/backend/executor/nodeSeqscan.c
index f356874b44..e2cea0eecb 100644
--- a/src/backend/executor/nodeSeqscan.c
+++ b/src/backend/executor/nodeSeqscan.c
@@ -28,7 +28,7 @@
#include "access/relscan.h"
#include "executor/execdebug.h"
#include "executor/nodeSeqscan.h"
-#include "storage/predicate.h"
+#include "utils/rel.h"
static void InitScanRelation(SeqScanState *node, EState *estate);
static TupleTableSlot *SeqNext(SeqScanState *node);
@@ -106,16 +106,11 @@ SeqRecheck(SeqScanState *node, TupleTableSlot *slot)
* tuple.
* We call the ExecScan() routine and pass it the appropriate
* access method functions.
- * For serializable transactions, we first acquire a predicate
- * lock on the entire relation.
* ----------------------------------------------------------------
*/
TupleTableSlot *
ExecSeqScan(SeqScanState *node)
{
- PredicateLockRelation(node->ss_currentRelation,
- node->ss_currentScanDesc->rs_snapshot);
- node->ss_currentScanDesc->rs_relpredicatelocked = true;
return ExecScan((ScanState *) node,
(ExecScanAccessMtd) SeqNext,
(ExecScanRecheckMtd) SeqRecheck);
diff --git a/src/backend/executor/nodeTidscan.c b/src/backend/executor/nodeTidscan.c
index aae41bf60e..28244a1a3d 100644
--- a/src/backend/executor/nodeTidscan.c
+++ b/src/backend/executor/nodeTidscan.c
@@ -32,6 +32,7 @@
#include "optimizer/clauses.h"
#include "storage/bufmgr.h"
#include "utils/array.h"
+#include "utils/rel.h"
#define IsCTIDVar(node) \
diff --git a/src/backend/executor/spi.c b/src/backend/executor/spi.c
index 6e723ca092..d71ea60b31 100644
--- a/src/backend/executor/spi.c
+++ b/src/backend/executor/spi.c
@@ -28,6 +28,7 @@
#include "utils/datum.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
#include "utils/snapmgr.h"
#include "utils/syscache.h"
#include "utils/typcache.h"
diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c
index 778849e434..7799111301 100644
--- a/src/backend/libpq/auth.c
+++ b/src/backend/libpq/auth.c
@@ -315,15 +315,11 @@ ClientAuthentication(Port *port)
/*
* Get the authentication method to use for this frontend/database
- * combination. Note: a failure return indicates a problem with the hba
- * config file, not with the request. hba.c should have dropped an error
- * message into the postmaster logfile if it failed.
+ * combination. Note: we do not parse the file at this point; this has
+ * already been done elsewhere. hba.c dropped an error message
+ * into the server logfile if parsing the hba config file failed.
*/
- if (hba_getauthmethod(port) != STATUS_OK)
- ereport(FATAL,
- (errcode(ERRCODE_CONFIG_FILE_ERROR),
- errmsg("missing or erroneous pg_hba.conf file"),
- errhint("See server log for details.")));
+ hba_getauthmethod(port);
/*
* Enable immediate response to SIGTERM/SIGINT/timeout interrupts. (We
@@ -1436,7 +1432,7 @@ pg_SSPI_recvauth(Port *port)
if (!LookupAccountSid(NULL, tokenuser->User.Sid, accountname, &accountnamesize,
domainname, &domainnamesize, &accountnameuse))
ereport(ERROR,
- (errmsg_internal("could not lookup acconut sid: error code %d",
+ (errmsg_internal("could not look up account SID: error code %d",
(int) GetLastError())));
free(tokenuser);
diff --git a/src/backend/libpq/be-secure.c b/src/backend/libpq/be-secure.c
index 437a0c79b0..f84ef5d506 100644
--- a/src/backend/libpq/be-secure.c
+++ b/src/backend/libpq/be-secure.c
@@ -644,7 +644,7 @@ tmp_dh_cb(SSL *s, int is_export, int keylength)
if (r == NULL || 8 * DH_size(r) < keylength)
{
ereport(DEBUG2,
- (errmsg_internal("DH: generating parameters (%d bits)....",
+ (errmsg_internal("DH: generating parameters (%d bits)",
keylength)));
r = DH_generate_parameters(keylength, DH_GENERATOR_2, NULL, NULL);
}
diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c
index fe86dc6219..62471633c1 100644
--- a/src/backend/libpq/hba.c
+++ b/src/backend/libpq/hba.c
@@ -35,14 +35,12 @@
#include "utils/acl.h"
#include "utils/guc.h"
#include "utils/lsyscache.h"
+#include "utils/memutils.h"
#define atooid(x) ((Oid) strtoul((x), NULL, 10))
#define atoxid(x) ((TransactionId) strtoul((x), NULL, 10))
-/* This is used to separate values in multi-valued column strings */
-#define MULTI_VALUE_SEP "\001"
-
#define MAX_TOKEN 256
/* callback data for check_network_callback */
@@ -53,26 +51,48 @@ typedef struct check_network_data
bool result; /* set to true if match */
} check_network_data;
-/* pre-parsed content of HBA config file: list of HbaLine structs */
+
+#define token_is_keyword(t, k) (!t->quoted && strcmp(t->string, k) == 0)
+#define token_matches(t, k) (strcmp(t->string, k) == 0)
+
+/*
+ * A single string token lexed from the HBA config file, together with whether
+ * the token had been quoted.
+ */
+typedef struct HbaToken
+{
+ char *string;
+ bool quoted;
+} HbaToken;
+
+/*
+ * pre-parsed content of HBA config file: list of HbaLine structs.
+ * parsed_hba_context is the memory context where it lives.
+ */
static List *parsed_hba_lines = NIL;
+static MemoryContext parsed_hba_context = NULL;
/*
* These variables hold the pre-parsed contents of the ident usermap
- * configuration file. ident_lines is a list of sublists, one sublist for
- * each (non-empty, non-comment) line of the file. The sublist items are
- * palloc'd strings, one string per token on the line. Note there will always
- * be at least one token, since blank lines are not entered in the data
- * structure. ident_line_nums is an integer list containing the actual line
- * number for each line represented in ident_lines.
+ * configuration file. ident_lines is a triple-nested list of lines, fields
+ * and tokens, as returned by tokenize_file. There will be one line in
+ * ident_lines for each (non-empty, non-comment) line of the file. Note there
+ * will always be at least one field, since blank lines are not entered in the
+ * data structure. ident_line_nums is an integer list containing the actual
+ * line number for each line represented in ident_lines. ident_context is
+ * the memory context holding all this.
*/
static List *ident_lines = NIL;
static List *ident_line_nums = NIL;
+static MemoryContext ident_context = NULL;
-static void tokenize_file(const char *filename, FILE *file,
+static MemoryContext tokenize_file(const char *filename, FILE *file,
List **lines, List **line_nums);
-static char *tokenize_inc_file(const char *outer_filename,
+static List *tokenize_inc_file(List *tokens, const char *outer_filename,
const char *inc_filename);
+static bool parse_hba_auth_opt(char *name, char *val, HbaLine *hbaline,
+ int line_num);
/*
* isblank() exists in the ISO C99 spec, but it's not very portable yet,
@@ -96,6 +116,8 @@ pg_isblank(const char c)
* the first character. (We use that to prevent "@x" from being treated
* as a file inclusion request. Note that @"x" should be so treated;
* we want to allow that to support embedded spaces in file paths.)
+ * We set *terminating_comma to indicate whether the token is terminated by a
+ * comma (which is not returned.)
*
* If successful: store null-terminated token at *buf and return TRUE.
* If no more tokens on line: set *buf = '\0' and return FALSE.
@@ -104,13 +126,11 @@ pg_isblank(const char c)
* whichever comes first. If no more tokens on line, position the file to the
* beginning of the next line or EOF, whichever comes first.
*
- * Handle comments. Treat unquoted keywords that might be role, database, or
- * host names specially, by appending a newline to them. Also, when
- * a token is terminated by a comma, the comma is included in the returned
- * token.
+ * Handle comments.
*/
static bool
-next_token(FILE *fp, char *buf, int bufsz, bool *initial_quote)
+next_token(FILE *fp, char *buf, int bufsz, bool *initial_quote,
+ bool *terminating_comma)
{
int c;
char *start_buf = buf;
@@ -123,6 +143,7 @@ next_token(FILE *fp, char *buf, int bufsz, bool *initial_quote)
Assert(end_buf > start_buf);
*initial_quote = false;
+ *terminating_comma = false;
/* Move over initial whitespace and commas */
while ((c = getc(fp)) != EOF && (pg_isblank(c) || c == ','))
@@ -165,12 +186,15 @@ next_token(FILE *fp, char *buf, int bufsz, bool *initial_quote)
break;
}
- if (c != '"' || was_quote)
- *buf++ = c;
-
- /* We pass back the comma so the caller knows there is more */
+ /* we do not pass back the comma in the token */
if (c == ',' && !in_quote)
+ {
+ *terminating_comma = true;
break;
+ }
+
+ if (c != '"' || was_quote)
+ *buf++ = c;
/* Literal double-quote is two double-quotes */
if (in_quote && c == '"')
@@ -198,138 +222,85 @@ next_token(FILE *fp, char *buf, int bufsz, bool *initial_quote)
*buf = '\0';
- if (!saw_quote &&
- (strcmp(start_buf, "all") == 0 ||
- strcmp(start_buf, "samehost") == 0 ||
- strcmp(start_buf, "samenet") == 0 ||
- strcmp(start_buf, "sameuser") == 0 ||
- strcmp(start_buf, "samegroup") == 0 ||
- strcmp(start_buf, "samerole") == 0 ||
- strcmp(start_buf, "replication") == 0))
- {
- /* append newline to a magical keyword */
- *buf++ = '\n';
- *buf = '\0';
- }
-
return (saw_quote || buf > start_buf);
}
+static HbaToken *
+make_hba_token(char *token, bool quoted)
+{
+ HbaToken *hbatoken;
+ int toklen;
+
+ toklen = strlen(token);
+ hbatoken = (HbaToken *) palloc(sizeof(HbaToken) + toklen + 1);
+ hbatoken->string = (char *) hbatoken + sizeof(HbaToken);
+ hbatoken->quoted = quoted;
+ memcpy(hbatoken->string, token, toklen + 1);
+
+ return hbatoken;
+}
+
/*
- * Tokenize file and handle file inclusion and comma lists. We have
- * to break apart the commas to expand any file names then
- * reconstruct with commas.
+ * Copy a HbaToken struct into freshly palloc'd memory.
+ */
+static HbaToken *
+copy_hba_token(HbaToken *in)
+{
+ HbaToken *out = make_hba_token(in->string, in->quoted);
+
+ return out;
+}
+
+
+/*
+ * Tokenize one HBA field from a file, handling file inclusion and comma lists.
*
- * The result is a palloc'd string, or NULL if we have reached EOL.
+ * The result is a List of HbaToken structs for each individual token,
+ * or NIL if we reached EOL.
*/
-static char *
-next_token_expand(const char *filename, FILE *file)
+static List *
+next_field_expand(const char *filename, FILE *file)
{
char buf[MAX_TOKEN];
- char *comma_str = pstrdup("");
- bool got_something = false;
bool trailing_comma;
bool initial_quote;
- char *incbuf;
- int needed;
+ List *tokens = NIL;
do
{
- if (!next_token(file, buf, sizeof(buf), &initial_quote))
+ if (!next_token(file, buf, sizeof(buf), &initial_quote, &trailing_comma))
break;
- got_something = true;
-
- if (strlen(buf) > 0 && buf[strlen(buf) - 1] == ',')
- {
- trailing_comma = true;
- buf[strlen(buf) - 1] = '\0';
- }
- else
- trailing_comma = false;
-
/* Is this referencing a file? */
if (!initial_quote && buf[0] == '@' && buf[1] != '\0')
- incbuf = tokenize_inc_file(filename, buf + 1);
+ tokens = tokenize_inc_file(tokens, filename, buf + 1);
else
- incbuf = pstrdup(buf);
-
- needed = strlen(comma_str) + strlen(incbuf) + 1;
- if (trailing_comma)
- needed++;
- comma_str = repalloc(comma_str, needed);
- strcat(comma_str, incbuf);
- if (trailing_comma)
- strcat(comma_str, MULTI_VALUE_SEP);
- pfree(incbuf);
+ tokens = lappend(tokens, make_hba_token(buf, initial_quote));
} while (trailing_comma);
- if (!got_something)
- {
- pfree(comma_str);
- return NULL;
- }
-
- return comma_str;
+ return tokens;
}
-
/*
- * Free memory used by lines/tokens (i.e., structure built by tokenize_file)
+ * tokenize_inc_file
+ * Expand a file included from another file into an hba "field"
+ *
+ * Opens and tokenises a file included from another HBA config file with @,
+ * and returns all values found therein as a flat list of HbaTokens. If a
+ * @-token is found, recursively expand it. The given token list is used as
+ * initial contents of list (so foo,bar,@baz does what you expect).
*/
-static void
-free_lines(List **lines, List **line_nums)
-{
- /*
- * Either both must be non-NULL, or both must be NULL
- */
- Assert((*lines != NIL && *line_nums != NIL) ||
- (*lines == NIL && *line_nums == NIL));
-
- if (*lines)
- {
- /*
- * "lines" is a list of lists; each of those sublists consists of
- * palloc'ed tokens, so we want to free each pointed-to token in a
- * sublist, followed by the sublist itself, and finally the whole
- * list.
- */
- ListCell *line;
-
- foreach(line, *lines)
- {
- List *ln = lfirst(line);
- ListCell *token;
-
- foreach(token, ln)
- pfree(lfirst(token));
- /* free the sublist structure itself */
- list_free(ln);
- }
- /* free the list structure itself */
- list_free(*lines);
- /* clear the static variable */
- *lines = NIL;
- }
-
- if (*line_nums)
- {
- list_free(*line_nums);
- *line_nums = NIL;
- }
-}
-
-
-static char *
-tokenize_inc_file(const char *outer_filename,
+static List *
+tokenize_inc_file(List *tokens,
+ const char *outer_filename,
const char *inc_filename)
{
char *inc_fullname;
FILE *inc_file;
List *inc_lines;
List *inc_line_nums;
- ListCell *line;
- char *comma_str;
+ ListCell *inc_line;
+ MemoryContext linecxt;
if (is_absolute_path(inc_filename))
{
@@ -355,97 +326,100 @@ tokenize_inc_file(const char *outer_filename,
errmsg("could not open secondary authentication file \"@%s\" as \"%s\": %m",
inc_filename, inc_fullname)));
pfree(inc_fullname);
-
- /* return single space, it matches nothing */
- return pstrdup(" ");
+ return tokens;
}
/* There is possible recursion here if the file contains @ */
- tokenize_file(inc_fullname, inc_file, &inc_lines, &inc_line_nums);
+ linecxt = tokenize_file(inc_fullname, inc_file, &inc_lines, &inc_line_nums);
FreeFile(inc_file);
pfree(inc_fullname);
- /* Create comma-separated string from List */
- comma_str = pstrdup("");
- foreach(line, inc_lines)
+ foreach(inc_line, inc_lines)
{
- List *token_list = (List *) lfirst(line);
- ListCell *token;
+ List *inc_fields = lfirst(inc_line);
+ ListCell *inc_field;
- foreach(token, token_list)
+ foreach(inc_field, inc_fields)
{
- int oldlen = strlen(comma_str);
- int needed;
-
- needed = oldlen + strlen(lfirst(token)) + 1;
- if (oldlen > 0)
- needed++;
- comma_str = repalloc(comma_str, needed);
- if (oldlen > 0)
- strcat(comma_str, MULTI_VALUE_SEP);
- strcat(comma_str, lfirst(token));
- }
- }
+ List *inc_tokens = lfirst(inc_field);
+ ListCell *inc_token;
- free_lines(&inc_lines, &inc_line_nums);
+ foreach(inc_token, inc_tokens)
+ {
+ HbaToken *token = lfirst(inc_token);
- /* if file is empty, return single space rather than empty string */
- if (strlen(comma_str) == 0)
- {
- pfree(comma_str);
- return pstrdup(" ");
+ tokens = lappend(tokens, copy_hba_token(token));
+ }
+ }
}
- return comma_str;
+ MemoryContextDelete(linecxt);
+ return tokens;
}
-
/*
- * Tokenize the given file, storing the resulting data into two lists:
- * a list of sublists, each sublist containing the tokens in a line of
- * the file, and a list of line numbers.
+ * Tokenize the given file, storing the resulting data into two Lists: a
+ * List of lines, and a List of line numbers.
+ *
+ * The list of lines is a triple-nested List structure. Each line is a List of
+ * fields, and each field is a List of HbaTokens.
*
* filename must be the absolute path to the target file.
+ *
+ * Return value is a memory context which contains all memory allocated by
+ * this function.
*/
-static void
+static MemoryContext
tokenize_file(const char *filename, FILE *file,
List **lines, List **line_nums)
{
List *current_line = NIL;
+ List *current_field = NIL;
int line_number = 1;
- char *buf;
+ MemoryContext linecxt;
+ MemoryContext oldcxt;
+
+ linecxt = AllocSetContextCreate(TopMemoryContext,
+ "tokenize file cxt",
+ ALLOCSET_DEFAULT_MINSIZE,
+ ALLOCSET_DEFAULT_INITSIZE,
+ ALLOCSET_DEFAULT_MAXSIZE);
+ oldcxt = MemoryContextSwitchTo(linecxt);
*lines = *line_nums = NIL;
while (!feof(file) && !ferror(file))
{
- buf = next_token_expand(filename, file);
+ current_field = next_field_expand(filename, file);
- /* add token to list, unless we are at EOL or comment start */
- if (buf)
+ /* add tokens to list, unless we are at EOL or comment start */
+ if (list_length(current_field) > 0)
{
if (current_line == NIL)
{
/* make a new line List, record its line number */
- current_line = lappend(current_line, buf);
+ current_line = lappend(current_line, current_field);
*lines = lappend(*lines, current_line);
*line_nums = lappend_int(*line_nums, line_number);
}
else
{
- /* append token to current line's list */
- current_line = lappend(current_line, buf);
+ /* append tokens to current line's list */
+ current_line = lappend(current_line, current_field);
}
}
else
{
/* we are at real or logical EOL, so force a new line List */
current_line = NIL;
- /* Advance line number whenever we reach EOL */
line_number++;
}
}
+
+ MemoryContextSwitchTo(oldcxt);
+
+ return linecxt;
}
@@ -473,74 +447,63 @@ is_member(Oid userid, const char *role)
}
/*
- * Check comma-separated list for a match to role, allowing group names.
- *
- * NB: param_str is destructively modified! In current usage, this is
- * okay only because this code is run after forking off from the postmaster,
- * and so it doesn't matter that we clobber the stored hba info.
+ * Check HbaToken list for a match to role, allowing group names.
*/
static bool
-check_role(const char *role, Oid roleid, char *param_str)
+check_role(const char *role, Oid roleid, List *tokens)
{
- char *tok;
+ ListCell *cell;
+ HbaToken *tok;
- for (tok = strtok(param_str, MULTI_VALUE_SEP);
- tok != NULL;
- tok = strtok(NULL, MULTI_VALUE_SEP))
+ foreach(cell, tokens)
{
- if (tok[0] == '+')
+ tok = lfirst(cell);
+ if (!tok->quoted && tok->string[0] == '+')
{
- if (is_member(roleid, tok + 1))
+ if (is_member(roleid, tok->string + 1))
return true;
}
- else if (strcmp(tok, role) == 0 ||
- (strcmp(tok, "replication\n") == 0 &&
- strcmp(role, "replication") == 0) ||
- strcmp(tok, "all\n") == 0)
+ else if (token_matches(tok, role) ||
+ token_is_keyword(tok, "all"))
return true;
}
-
return false;
}
/*
- * Check to see if db/role combination matches param string.
- *
- * NB: param_str is destructively modified! In current usage, this is
- * okay only because this code is run after forking off from the postmaster,
- * and so it doesn't matter that we clobber the stored hba info.
+ * Check to see if db/role combination matches HbaToken list.
*/
static bool
-check_db(const char *dbname, const char *role, Oid roleid, char *param_str)
+check_db(const char *dbname, const char *role, Oid roleid, List *tokens)
{
- char *tok;
+ ListCell *cell;
+ HbaToken *tok;
- for (tok = strtok(param_str, MULTI_VALUE_SEP);
- tok != NULL;
- tok = strtok(NULL, MULTI_VALUE_SEP))
+ foreach(cell, tokens)
{
+ tok = lfirst(cell);
if (am_walsender)
{
/* walsender connections can only match replication keyword */
- if (strcmp(tok, "replication\n") == 0)
+ if (token_is_keyword(tok, "replication"))
return true;
}
- else if (strcmp(tok, "all\n") == 0)
+ else if (token_is_keyword(tok, "all"))
return true;
- else if (strcmp(tok, "sameuser\n") == 0)
+ else if (token_is_keyword(tok, "sameuser"))
{
if (strcmp(dbname, role) == 0)
return true;
}
- else if (strcmp(tok, "samegroup\n") == 0 ||
- strcmp(tok, "samerole\n") == 0)
+ else if (token_is_keyword(tok, "samegroup") ||
+ token_is_keyword(tok, "samerole"))
{
if (is_member(roleid, dbname))
return true;
}
- else if (strcmp(tok, "replication\n") == 0)
+ else if (token_is_keyword(tok, "replication"))
continue; /* never match this if not walsender */
- else if (strcmp(tok, dbname) == 0)
+ else if (token_matches(tok, dbname))
return true;
}
return false;
@@ -784,7 +747,7 @@ check_same_host_or_net(SockAddr *raddr, IPCompareMethod method)
} while (0);
#define REQUIRE_AUTH_OPTION(methodval, optname, validmethods) do {\
- if (parsedline->auth_method != methodval) \
+ if (hbaline->auth_method != methodval) \
INVALID_AUTH_OPTION(optname, validmethods); \
} while (0);
@@ -800,29 +763,83 @@ check_same_host_or_net(SockAddr *raddr, IPCompareMethod method)
} \
} while (0);
+/*
+ * IDENT_FIELD_ABSENT:
+ * Throw an error and exit the function if the given ident field ListCell is
+ * not populated.
+ *
+ * IDENT_MULTI_VALUE:
+ * Throw an error and exit the function if the given ident token List has more
+ * than one element.
+ */
+#define IDENT_FIELD_ABSENT(field) do {\
+ if (!field) { \
+ ereport(LOG, \
+ (errcode(ERRCODE_CONFIG_FILE_ERROR), \
+ errmsg("missing entry in file \"%s\" at end of line %d", \
+ IdentFileName, line_number))); \
+ *error_p = true; \
+ return; \
+ } \
+} while (0);
+
+#define IDENT_MULTI_VALUE(tokens) do {\
+ if (tokens->length > 1) { \
+ ereport(LOG, \
+ (errcode(ERRCODE_CONFIG_FILE_ERROR), \
+ errmsg("multiple values in ident field"), \
+ errcontext("line %d of configuration file \"%s\"", \
+ line_number, IdentFileName))); \
+ *error_p = true; \
+ return; \
+ } \
+} while (0);
+
/*
- * Parse one line in the hba config file and store the result in
- * a HbaLine structure.
+ * Parse one tokenised line from the hba config file and store the result in a
+ * HbaLine structure, or NULL if parsing fails.
+ *
+ * The tokenised line is a List of fields, each field being a List of
+ * HbaTokens.
+ *
+ * Note: this function leaks memory when an error occurs. Caller is expected
+ * to have set a memory context that will be reset if this function returns
+ * NULL.
*/
-static bool
-parse_hba_line(List *line, int line_num, HbaLine *parsedline)
+static HbaLine *
+parse_hba_line(List *line, int line_num)
{
- char *token;
+ char *str;
struct addrinfo *gai_result;
struct addrinfo hints;
int ret;
char *cidr_slash;
char *unsupauth;
- ListCell *line_item;
-
- line_item = list_head(line);
+ ListCell *field;
+ List *tokens;
+ ListCell *tokencell;
+ HbaToken *token;
+ HbaLine *parsedline;
+ parsedline = palloc0(sizeof(HbaLine));
parsedline->linenumber = line_num;
/* Check the record type. */
- token = lfirst(line_item);
- if (strcmp(token, "local") == 0)
+ field = list_head(line);
+ tokens = lfirst(field);
+ if (tokens->length > 1)
+ {
+ ereport(LOG,
+ (errcode(ERRCODE_CONFIG_FILE_ERROR),
+ errmsg("multiple values specified for connection type"),
+ errhint("Specify exactly one connection type per line."),
+ errcontext("line %d of configuration file \"%s\"",
+ line_num, HbaFileName)));
+ return NULL;
+ }
+ token = linitial(tokens);
+ if (strcmp(token->string, "local") == 0)
{
#ifdef HAVE_UNIX_SOCKETS
parsedline->conntype = ctLocal;
@@ -832,15 +849,15 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline)
errmsg("local connections are not supported by this build"),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
- return false;
+ return NULL;
#endif
}
- else if (strcmp(token, "host") == 0
- || strcmp(token, "hostssl") == 0
- || strcmp(token, "hostnossl") == 0)
+ else if (strcmp(token->string, "host") == 0 ||
+ strcmp(token->string, "hostssl") == 0 ||
+ strcmp(token->string, "hostnossl") == 0)
{
- if (token[4] == 's') /* "hostssl" */
+ if (token->string[4] == 's') /* "hostssl" */
{
/* SSL support must be actually active, else complain */
#ifdef USE_SSL
@@ -854,7 +871,7 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline)
errhint("Set ssl = on in postgresql.conf."),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
- return false;
+ return NULL;
}
#else
ereport(LOG,
@@ -863,11 +880,11 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline)
errhint("Compile with --with-openssl to use SSL connections."),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
- return false;
+ return NULL;
#endif
}
#ifdef USE_SSL
- else if (token[4] == 'n') /* "hostnossl" */
+ else if (token->string[4] == 'n') /* "hostnossl" */
{
parsedline->conntype = ctHostNoSSL;
}
@@ -883,63 +900,86 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline)
ereport(LOG,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
errmsg("invalid connection type \"%s\"",
- token),
+ token->string),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
- return false;
+ return NULL;
}
- /* Get the database. */
- line_item = lnext(line_item);
- if (!line_item)
+ /* Get the databases. */
+ field = lnext(field);
+ if (!field)
{
ereport(LOG,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
errmsg("end-of-line before database specification"),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
- return false;
+ return NULL;
+ }
+ parsedline->databases = NIL;
+ tokens = lfirst(field);
+ foreach(tokencell, tokens)
+ {
+ parsedline->databases = lappend(parsedline->databases,
+ copy_hba_token(lfirst(tokencell)));
}
- parsedline->database = pstrdup(lfirst(line_item));
- /* Get the role. */
- line_item = lnext(line_item);
- if (!line_item)
+ /* Get the roles. */
+ field = lnext(field);
+ if (!field)
{
ereport(LOG,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
errmsg("end-of-line before role specification"),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
- return false;
+ return NULL;
+ }
+ parsedline->roles = NIL;
+ tokens = lfirst(field);
+ foreach(tokencell, tokens)
+ {
+ parsedline->roles = lappend(parsedline->roles,
+ copy_hba_token(lfirst(tokencell)));
}
- parsedline->role = pstrdup(lfirst(line_item));
if (parsedline->conntype != ctLocal)
{
/* Read the IP address field. (with or without CIDR netmask) */
- line_item = lnext(line_item);
- if (!line_item)
+ field = lnext(field);
+ if (!field)
{
ereport(LOG,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
errmsg("end-of-line before IP address specification"),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
- return false;
+ return NULL;
}
- token = lfirst(line_item);
+ tokens = lfirst(field);
+ if (tokens->length > 1)
+ {
+ ereport(LOG,
+ (errcode(ERRCODE_CONFIG_FILE_ERROR),
+ errmsg("multiple values specified for host address"),
+ errhint("Specify one address range per line."),
+ errcontext("line %d of configuration file \"%s\"",
+ line_num, HbaFileName)));
+ return NULL;
+ }
+ token = linitial(tokens);
- if (strcmp(token, "all\n") == 0)
+ if (token_is_keyword(token, "all"))
{
parsedline->ip_cmp_method = ipCmpAll;
}
- else if (strcmp(token, "samehost\n") == 0)
+ else if (token_is_keyword(token, "samehost"))
{
/* Any IP on this host is allowed to connect */
parsedline->ip_cmp_method = ipCmpSameHost;
}
- else if (strcmp(token, "samenet\n") == 0)
+ else if (token_is_keyword(token, "samenet"))
{
/* Any IP on the host's subnets is allowed to connect */
parsedline->ip_cmp_method = ipCmpSameNet;
@@ -950,10 +990,10 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline)
parsedline->ip_cmp_method = ipCmpMask;
/* need a modifiable copy of token */
- token = pstrdup(token);
+ str = pstrdup(token->string);
/* Check if it has a CIDR suffix and if so isolate it */
- cidr_slash = strchr(token, '/');
+ cidr_slash = strchr(str, '/');
if (cidr_slash)
*cidr_slash = '\0';
@@ -967,24 +1007,23 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline)
hints.ai_addr = NULL;
hints.ai_next = NULL;
- ret = pg_getaddrinfo_all(token, NULL, &hints, &gai_result);
+ ret = pg_getaddrinfo_all(str, NULL, &hints, &gai_result);
if (ret == 0 && gai_result)
memcpy(&parsedline->addr, gai_result->ai_addr,
gai_result->ai_addrlen);
else if (ret == EAI_NONAME)
- parsedline->hostname = token;
+ parsedline->hostname = str;
else
{
ereport(LOG,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
errmsg("invalid IP address \"%s\": %s",
- token, gai_strerror(ret)),
+ str, gai_strerror(ret)),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
if (gai_result)
pg_freeaddrinfo_all(hints.ai_family, gai_result);
- pfree(token);
- return false;
+ return NULL;
}
pg_freeaddrinfo_all(hints.ai_family, gai_result);
@@ -994,60 +1033,68 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline)
{
if (parsedline->hostname)
{
- *cidr_slash = '/'; /* restore token for message */
ereport(LOG,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
errmsg("specifying both host name and CIDR mask is invalid: \"%s\"",
- token),
- errcontext("line %d of configuration file \"%s\"",
- line_num, HbaFileName)));
- pfree(token);
- return false;
+ token->string),
+ errcontext("line %d of configuration file \"%s\"",
+ line_num, HbaFileName)));
+ return NULL;
}
if (pg_sockaddr_cidr_mask(&parsedline->mask, cidr_slash + 1,
parsedline->addr.ss_family) < 0)
{
- *cidr_slash = '/'; /* restore token for message */
ereport(LOG,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
errmsg("invalid CIDR mask in address \"%s\"",
- token),
+ token->string),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
- pfree(token);
- return false;
+ return NULL;
}
- pfree(token);
+ pfree(str);
}
else if (!parsedline->hostname)
{
/* Read the mask field. */
- pfree(token);
- line_item = lnext(line_item);
- if (!line_item)
+ pfree(str);
+ field = lnext(field);
+ if (!field)
{
ereport(LOG,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
errmsg("end-of-line before netmask specification"),
+ errhint("Specify an address range in CIDR notation, or provide a separate netmask."),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
- return false;
+ return NULL;
+ }
+ tokens = lfirst(field);
+ if (tokens->length > 1)
+ {
+ ereport(LOG,
+ (errcode(ERRCODE_CONFIG_FILE_ERROR),
+ errmsg("multiple values specified for netmask"),
+ errcontext("line %d of configuration file \"%s\"",
+ line_num, HbaFileName)));
+ return NULL;
}
- token = lfirst(line_item);
+ token = linitial(tokens);
- ret = pg_getaddrinfo_all(token, NULL, &hints, &gai_result);
+ ret = pg_getaddrinfo_all(token->string, NULL,
+ &hints, &gai_result);
if (ret || !gai_result)
{
ereport(LOG,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
errmsg("invalid IP mask \"%s\": %s",
- token, gai_strerror(ret)),
+ token->string, gai_strerror(ret)),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
if (gai_result)
pg_freeaddrinfo_all(hints.ai_family, gai_result);
- return false;
+ return NULL;
}
memcpy(&parsedline->mask, gai_result->ai_addr,
@@ -1061,55 +1108,66 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline)
errmsg("IP address and mask do not match"),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
- return false;
+ return NULL;
}
}
}
} /* != ctLocal */
/* Get the authentication method */
- line_item = lnext(line_item);
- if (!line_item)
+ field = lnext(field);
+ if (!field)
{
ereport(LOG,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
errmsg("end-of-line before authentication method"),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
- return false;
+ return NULL;
+ }
+ tokens = lfirst(field);
+ if (tokens->length > 1)
+ {
+ ereport(LOG,
+ (errcode(ERRCODE_CONFIG_FILE_ERROR),
+ errmsg("multiple values specified for authentication type"),
+ errhint("Specify exactly one authentication type per line."),
+ errcontext("line %d of configuration file \"%s\"",
+ line_num, HbaFileName)));
+ return NULL;
}
- token = lfirst(line_item);
+ token = linitial(tokens);
unsupauth = NULL;
- if (strcmp(token, "trust") == 0)
+ if (strcmp(token->string, "trust") == 0)
parsedline->auth_method = uaTrust;
- else if (strcmp(token, "ident") == 0)
+ else if (strcmp(token->string, "ident") == 0)
parsedline->auth_method = uaIdent;
- else if (strcmp(token, "peer") == 0)
+ else if (strcmp(token->string, "peer") == 0)
parsedline->auth_method = uaPeer;
- else if (strcmp(token, "password") == 0)
+ else if (strcmp(token->string, "password") == 0)
parsedline->auth_method = uaPassword;
- else if (strcmp(token, "krb5") == 0)
+ else if (strcmp(token->string, "krb5") == 0)
#ifdef KRB5
parsedline->auth_method = uaKrb5;
#else
unsupauth = "krb5";
#endif
- else if (strcmp(token, "gss") == 0)
+ else if (strcmp(token->string, "gss") == 0)
#ifdef ENABLE_GSS
parsedline->auth_method = uaGSS;
#else
unsupauth = "gss";
#endif
- else if (strcmp(token, "sspi") == 0)
+ else if (strcmp(token->string, "sspi") == 0)
#ifdef ENABLE_SSPI
parsedline->auth_method = uaSSPI;
#else
unsupauth = "sspi";
#endif
- else if (strcmp(token, "reject") == 0)
+ else if (strcmp(token->string, "reject") == 0)
parsedline->auth_method = uaReject;
- else if (strcmp(token, "md5") == 0)
+ else if (strcmp(token->string, "md5") == 0)
{
if (Db_user_namespace)
{
@@ -1118,39 +1176,39 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline)
errmsg("MD5 authentication is not supported when \"db_user_namespace\" is enabled"),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
- return false;
+ return NULL;
}
parsedline->auth_method = uaMD5;
}
- else if (strcmp(token, "pam") == 0)
+ else if (strcmp(token->string, "pam") == 0)
#ifdef USE_PAM
parsedline->auth_method = uaPAM;
#else
unsupauth = "pam";
#endif
- else if (strcmp(token, "ldap") == 0)
+ else if (strcmp(token->string, "ldap") == 0)
#ifdef USE_LDAP
parsedline->auth_method = uaLDAP;
#else
unsupauth = "ldap";
#endif
- else if (strcmp(token, "cert") == 0)
+ else if (strcmp(token->string, "cert") == 0)
#ifdef USE_SSL
parsedline->auth_method = uaCert;
#else
unsupauth = "cert";
#endif
- else if (strcmp(token, "radius") == 0)
+ else if (strcmp(token->string, "radius") == 0)
parsedline->auth_method = uaRADIUS;
else
{
ereport(LOG,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
errmsg("invalid authentication method \"%s\"",
- token),
+ token->string),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
- return false;
+ return NULL;
}
if (unsupauth)
@@ -1158,10 +1216,10 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline)
ereport(LOG,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
errmsg("invalid authentication method \"%s\": not supported by this build",
- token),
+ token->string),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
- return false;
+ return NULL;
}
/*
@@ -1181,7 +1239,7 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline)
errmsg("krb5 authentication is not supported on local sockets"),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
- return false;
+ return NULL;
}
if (parsedline->conntype == ctLocal &&
@@ -1192,7 +1250,7 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline)
errmsg("gssapi authentication is not supported on local sockets"),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
- return false;
+ return NULL;
}
if (parsedline->conntype != ctLocal &&
@@ -1203,15 +1261,13 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline)
errmsg("peer authentication is only supported on local sockets"),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
- return false;
+ return NULL;
}
/*
* SSPI authentication can never be enabled on ctLocal connections,
* because it's only supported on Windows, where ctLocal isn't supported.
*/
-
-
if (parsedline->conntype != ctHostSSL &&
parsedline->auth_method == uaCert)
{
@@ -1220,231 +1276,38 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline)
errmsg("cert authentication is only supported on hostssl connections"),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
- return false;
+ return NULL;
}
/* Parse remaining arguments */
- while ((line_item = lnext(line_item)) != NULL)
+ while ((field = lnext(field)) != NULL)
{
- char *c;
-
- token = lfirst(line_item);
-
- c = strchr(token, '=');
- if (c == NULL)
- {
- /*
- * Got something that's not a name=value pair.
- */
- ereport(LOG,
- (errcode(ERRCODE_CONFIG_FILE_ERROR),
- errmsg("authentication option not in name=value format: %s", token),
- errcontext("line %d of configuration file \"%s\"",
- line_num, HbaFileName)));
- return false;
- }
- else
+ tokens = lfirst(field);
+ foreach(tokencell, tokens)
{
- *c++ = '\0'; /* token now holds "name", c holds "value" */
- if (strcmp(token, "map") == 0)
- {
- if (parsedline->auth_method != uaIdent &&
- parsedline->auth_method != uaPeer &&
- parsedline->auth_method != uaKrb5 &&
- parsedline->auth_method != uaGSS &&
- parsedline->auth_method != uaSSPI &&
- parsedline->auth_method != uaCert)
- INVALID_AUTH_OPTION("map", gettext_noop("ident, peer, krb5, gssapi, sspi and cert"));
- parsedline->usermap = pstrdup(c);
- }
- else if (strcmp(token, "clientcert") == 0)
+ char *val;
+ token = lfirst(tokencell);
+
+ str = pstrdup(token->string);
+ val = strchr(str, '=');
+ if (val == NULL)
{
/*
- * Since we require ctHostSSL, this really can never happen on
- * non-SSL-enabled builds, so don't bother checking for
- * USE_SSL.
+ * Got something that's not a name=value pair.
*/
- if (parsedline->conntype != ctHostSSL)
- {
- ereport(LOG,
- (errcode(ERRCODE_CONFIG_FILE_ERROR),
- errmsg("clientcert can only be configured for \"hostssl\" rows"),
- errcontext("line %d of configuration file \"%s\"",
- line_num, HbaFileName)));
- return false;
- }
- if (strcmp(c, "1") == 0)
- {
- if (!secure_loaded_verify_locations())
- {
- ereport(LOG,
- (errcode(ERRCODE_CONFIG_FILE_ERROR),
- errmsg("client certificates can only be checked if a root certificate store is available"),
- errhint("Make sure the root.crt file is present and readable."),
- errcontext("line %d of configuration file \"%s\"",
- line_num, HbaFileName)));
- return false;
- }
- parsedline->clientcert = true;
- }
- else
- {
- if (parsedline->auth_method == uaCert)
- {
- ereport(LOG,
- (errcode(ERRCODE_CONFIG_FILE_ERROR),
- errmsg("clientcert can not be set to 0 when using \"cert\" authentication"),
- errcontext("line %d of configuration file \"%s\"",
- line_num, HbaFileName)));
- return false;
- }
- parsedline->clientcert = false;
- }
- }
- else if (strcmp(token, "pamservice") == 0)
- {
- REQUIRE_AUTH_OPTION(uaPAM, "pamservice", "pam");
- parsedline->pamservice = pstrdup(c);
- }
- else if (strcmp(token, "ldaptls") == 0)
- {
- REQUIRE_AUTH_OPTION(uaLDAP, "ldaptls", "ldap");
- if (strcmp(c, "1") == 0)
- parsedline->ldaptls = true;
- else
- parsedline->ldaptls = false;
- }
- else if (strcmp(token, "ldapserver") == 0)
- {
- REQUIRE_AUTH_OPTION(uaLDAP, "ldapserver", "ldap");
- parsedline->ldapserver = pstrdup(c);
- }
- else if (strcmp(token, "ldapport") == 0)
- {
- REQUIRE_AUTH_OPTION(uaLDAP, "ldapport", "ldap");
- parsedline->ldapport = atoi(c);
- if (parsedline->ldapport == 0)
- {
- ereport(LOG,
- (errcode(ERRCODE_CONFIG_FILE_ERROR),
- errmsg("invalid LDAP port number: \"%s\"", c),
- errcontext("line %d of configuration file \"%s\"",
- line_num, HbaFileName)));
- return false;
- }
- }
- else if (strcmp(token, "ldapbinddn") == 0)
- {
- REQUIRE_AUTH_OPTION(uaLDAP, "ldapbinddn", "ldap");
- parsedline->ldapbinddn = pstrdup(c);
- }
- else if (strcmp(token, "ldapbindpasswd") == 0)
- {
- REQUIRE_AUTH_OPTION(uaLDAP, "ldapbindpasswd", "ldap");
- parsedline->ldapbindpasswd = pstrdup(c);
- }
- else if (strcmp(token, "ldapsearchattribute") == 0)
- {
- REQUIRE_AUTH_OPTION(uaLDAP, "ldapsearchattribute", "ldap");
- parsedline->ldapsearchattribute = pstrdup(c);
- }
- else if (strcmp(token, "ldapbasedn") == 0)
- {
- REQUIRE_AUTH_OPTION(uaLDAP, "ldapbasedn", "ldap");
- parsedline->ldapbasedn = pstrdup(c);
- }
- else if (strcmp(token, "ldapprefix") == 0)
- {
- REQUIRE_AUTH_OPTION(uaLDAP, "ldapprefix", "ldap");
- parsedline->ldapprefix = pstrdup(c);
- }
- else if (strcmp(token, "ldapsuffix") == 0)
- {
- REQUIRE_AUTH_OPTION(uaLDAP, "ldapsuffix", "ldap");
- parsedline->ldapsuffix = pstrdup(c);
- }
- else if (strcmp(token, "krb_server_hostname") == 0)
- {
- REQUIRE_AUTH_OPTION(uaKrb5, "krb_server_hostname", "krb5");
- parsedline->krb_server_hostname = pstrdup(c);
- }
- else if (strcmp(token, "krb_realm") == 0)
- {
- if (parsedline->auth_method != uaKrb5 &&
- parsedline->auth_method != uaGSS &&
- parsedline->auth_method != uaSSPI)
- INVALID_AUTH_OPTION("krb_realm", gettext_noop("krb5, gssapi and sspi"));
- parsedline->krb_realm = pstrdup(c);
- }
- else if (strcmp(token, "include_realm") == 0)
- {
- if (parsedline->auth_method != uaKrb5 &&
- parsedline->auth_method != uaGSS &&
- parsedline->auth_method != uaSSPI)
- INVALID_AUTH_OPTION("include_realm", gettext_noop("krb5, gssapi and sspi"));
- if (strcmp(c, "1") == 0)
- parsedline->include_realm = true;
- else
- parsedline->include_realm = false;
- }
- else if (strcmp(token, "radiusserver") == 0)
- {
- REQUIRE_AUTH_OPTION(uaRADIUS, "radiusserver", "radius");
-
- MemSet(&hints, 0, sizeof(hints));
- hints.ai_socktype = SOCK_DGRAM;
- hints.ai_family = AF_UNSPEC;
-
- ret = pg_getaddrinfo_all(c, NULL, &hints, &gai_result);
- if (ret || !gai_result)
- {
- ereport(LOG,
- (errcode(ERRCODE_CONFIG_FILE_ERROR),
- errmsg("could not translate RADIUS server name \"%s\" to address: %s",
- c, gai_strerror(ret)),
- errcontext("line %d of configuration file \"%s\"",
- line_num, HbaFileName)));
- if (gai_result)
- pg_freeaddrinfo_all(hints.ai_family, gai_result);
- return false;
- }
- pg_freeaddrinfo_all(hints.ai_family, gai_result);
- parsedline->radiusserver = pstrdup(c);
- }
- else if (strcmp(token, "radiusport") == 0)
- {
- REQUIRE_AUTH_OPTION(uaRADIUS, "radiusport", "radius");
- parsedline->radiusport = atoi(c);
- if (parsedline->radiusport == 0)
- {
- ereport(LOG,
- (errcode(ERRCODE_CONFIG_FILE_ERROR),
- errmsg("invalid RADIUS port number: \"%s\"", c),
- errcontext("line %d of configuration file \"%s\"",
- line_num, HbaFileName)));
- return false;
- }
- }
- else if (strcmp(token, "radiussecret") == 0)
- {
- REQUIRE_AUTH_OPTION(uaRADIUS, "radiussecret", "radius");
- parsedline->radiussecret = pstrdup(c);
- }
- else if (strcmp(token, "radiusidentifier") == 0)
- {
- REQUIRE_AUTH_OPTION(uaRADIUS, "radiusidentifier", "radius");
- parsedline->radiusidentifier = pstrdup(c);
- }
- else
- {
ereport(LOG,
(errcode(ERRCODE_CONFIG_FILE_ERROR),
- errmsg("unrecognized authentication option name: \"%s\"",
- token),
+ errmsg("authentication option not in name=value format: %s", token->string),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
- return false;
+ return NULL;
}
+
+ *val++ = '\0'; /* str now holds "name", val holds "value" */
+ if (!parse_hba_auth_opt(str, val, parsedline, line_num))
+ /* parse_hba_auth_opt already logged the error message */
+ return NULL;
+ pfree(str);
}
}
@@ -1474,7 +1337,7 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline)
errmsg("cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, or ldapsearchattribute together with ldapprefix"),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
- return false;
+ return NULL;
}
}
else if (!parsedline->ldapbasedn)
@@ -1484,7 +1347,7 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline)
errmsg("authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix\", or \"ldapsuffix\" to be set"),
errcontext("line %d of configuration file \"%s\"",
line_num, HbaFileName)));
- return false;
+ return NULL;
}
}
@@ -1502,15 +1365,228 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline)
parsedline->clientcert = true;
}
- return true;
+ return parsedline;
}
-
/*
- * Scan the (pre-parsed) hba file line by line, looking for a match
- * to the port's connection request.
+ * Parse one name-value pair as an authentication option into the given
+ * HbaLine. Return true if we successfully parse the option, false if we
+ * encounter an error.
*/
static bool
+parse_hba_auth_opt(char *name, char *val, HbaLine *hbaline, int line_num)
+{
+ if (strcmp(name, "map") == 0)
+ {
+ if (hbaline->auth_method != uaIdent &&
+ hbaline->auth_method != uaPeer &&
+ hbaline->auth_method != uaKrb5 &&
+ hbaline->auth_method != uaGSS &&
+ hbaline->auth_method != uaSSPI &&
+ hbaline->auth_method != uaCert)
+ INVALID_AUTH_OPTION("map", gettext_noop("ident, peer, krb5, gssapi, sspi and cert"));
+ hbaline->usermap = pstrdup(val);
+ }
+ else if (strcmp(name, "clientcert") == 0)
+ {
+ /*
+ * Since we require ctHostSSL, this really can never happen
+ * on non-SSL-enabled builds, so don't bother checking for
+ * USE_SSL.
+ */
+ if (hbaline->conntype != ctHostSSL)
+ {
+ ereport(LOG,
+ (errcode(ERRCODE_CONFIG_FILE_ERROR),
+ errmsg("clientcert can only be configured for \"hostssl\" rows"),
+ errcontext("line %d of configuration file \"%s\"",
+ line_num, HbaFileName)));
+ return false;
+ }
+ if (strcmp(val, "1") == 0)
+ {
+ if (!secure_loaded_verify_locations())
+ {
+ ereport(LOG,
+ (errcode(ERRCODE_CONFIG_FILE_ERROR),
+ errmsg("client certificates can only be checked if a root certificate store is available"),
+ errhint("Make sure the root.crt file is present and readable."),
+ errcontext("line %d of configuration file \"%s\"",
+ line_num, HbaFileName)));
+ return false;
+ }
+ hbaline->clientcert = true;
+ }
+ else
+ {
+ if (hbaline->auth_method == uaCert)
+ {
+ ereport(LOG,
+ (errcode(ERRCODE_CONFIG_FILE_ERROR),
+ errmsg("clientcert can not be set to 0 when using \"cert\" authentication"),
+ errcontext("line %d of configuration file \"%s\"",
+ line_num, HbaFileName)));
+ return false;
+ }
+ hbaline->clientcert = false;
+ }
+ }
+ else if (strcmp(name, "pamservice") == 0)
+ {
+ REQUIRE_AUTH_OPTION(uaPAM, "pamservice", "pam");
+ hbaline->pamservice = pstrdup(val);
+ }
+ else if (strcmp(name, "ldaptls") == 0)
+ {
+ REQUIRE_AUTH_OPTION(uaLDAP, "ldaptls", "ldap");
+ if (strcmp(val, "1") == 0)
+ hbaline->ldaptls = true;
+ else
+ hbaline->ldaptls = false;
+ }
+ else if (strcmp(name, "ldapserver") == 0)
+ {
+ REQUIRE_AUTH_OPTION(uaLDAP, "ldapserver", "ldap");
+ hbaline->ldapserver = pstrdup(val);
+ }
+ else if (strcmp(name, "ldapport") == 0)
+ {
+ REQUIRE_AUTH_OPTION(uaLDAP, "ldapport", "ldap");
+ hbaline->ldapport = atoi(val);
+ if (hbaline->ldapport == 0)
+ {
+ ereport(LOG,
+ (errcode(ERRCODE_CONFIG_FILE_ERROR),
+ errmsg("invalid LDAP port number: \"%s\"", val),
+ errcontext("line %d of configuration file \"%s\"",
+ line_num, HbaFileName)));
+ return false;
+ }
+ }
+ else if (strcmp(name, "ldapbinddn") == 0)
+ {
+ REQUIRE_AUTH_OPTION(uaLDAP, "ldapbinddn", "ldap");
+ hbaline->ldapbinddn = pstrdup(val);
+ }
+ else if (strcmp(name, "ldapbindpasswd") == 0)
+ {
+ REQUIRE_AUTH_OPTION(uaLDAP, "ldapbindpasswd", "ldap");
+ hbaline->ldapbindpasswd = pstrdup(val);
+ }
+ else if (strcmp(name, "ldapsearchattribute") == 0)
+ {
+ REQUIRE_AUTH_OPTION(uaLDAP, "ldapsearchattribute", "ldap");
+ hbaline->ldapsearchattribute = pstrdup(val);
+ }
+ else if (strcmp(name, "ldapbasedn") == 0)
+ {
+ REQUIRE_AUTH_OPTION(uaLDAP, "ldapbasedn", "ldap");
+ hbaline->ldapbasedn = pstrdup(val);
+ }
+ else if (strcmp(name, "ldapprefix") == 0)
+ {
+ REQUIRE_AUTH_OPTION(uaLDAP, "ldapprefix", "ldap");
+ hbaline->ldapprefix = pstrdup(val);
+ }
+ else if (strcmp(name, "ldapsuffix") == 0)
+ {
+ REQUIRE_AUTH_OPTION(uaLDAP, "ldapsuffix", "ldap");
+ hbaline->ldapsuffix = pstrdup(val);
+ }
+ else if (strcmp(name, "krb_server_hostname") == 0)
+ {
+ REQUIRE_AUTH_OPTION(uaKrb5, "krb_server_hostname", "krb5");
+ hbaline->krb_server_hostname = pstrdup(val);
+ }
+ else if (strcmp(name, "krb_realm") == 0)
+ {
+ if (hbaline->auth_method != uaKrb5 &&
+ hbaline->auth_method != uaGSS &&
+ hbaline->auth_method != uaSSPI)
+ INVALID_AUTH_OPTION("krb_realm", gettext_noop("krb5, gssapi and sspi"));
+ hbaline->krb_realm = pstrdup(val);
+ }
+ else if (strcmp(name, "include_realm") == 0)
+ {
+ if (hbaline->auth_method != uaKrb5 &&
+ hbaline->auth_method != uaGSS &&
+ hbaline->auth_method != uaSSPI)
+ INVALID_AUTH_OPTION("include_realm", gettext_noop("krb5, gssapi and sspi"));
+ if (strcmp(val, "1") == 0)
+ hbaline->include_realm = true;
+ else
+ hbaline->include_realm = false;
+ }
+ else if (strcmp(name, "radiusserver") == 0)
+ {
+ struct addrinfo *gai_result;
+ struct addrinfo hints;
+ int ret;
+
+ REQUIRE_AUTH_OPTION(uaRADIUS, "radiusserver", "radius");
+
+ MemSet(&hints, 0, sizeof(hints));
+ hints.ai_socktype = SOCK_DGRAM;
+ hints.ai_family = AF_UNSPEC;
+
+ ret = pg_getaddrinfo_all(val, NULL, &hints, &gai_result);
+ if (ret || !gai_result)
+ {
+ ereport(LOG,
+ (errcode(ERRCODE_CONFIG_FILE_ERROR),
+ errmsg("could not translate RADIUS server name \"%s\" to address: %s",
+ val, gai_strerror(ret)),
+ errcontext("line %d of configuration file \"%s\"",
+ line_num, HbaFileName)));
+ if (gai_result)
+ pg_freeaddrinfo_all(hints.ai_family, gai_result);
+ return false;
+ }
+ pg_freeaddrinfo_all(hints.ai_family, gai_result);
+ hbaline->radiusserver = pstrdup(val);
+ }
+ else if (strcmp(name, "radiusport") == 0)
+ {
+ REQUIRE_AUTH_OPTION(uaRADIUS, "radiusport", "radius");
+ hbaline->radiusport = atoi(val);
+ if (hbaline->radiusport == 0)
+ {
+ ereport(LOG,
+ (errcode(ERRCODE_CONFIG_FILE_ERROR),
+ errmsg("invalid RADIUS port number: \"%s\"", val),
+ errcontext("line %d of configuration file \"%s\"",
+ line_num, HbaFileName)));
+ return false;
+ }
+ }
+ else if (strcmp(name, "radiussecret") == 0)
+ {
+ REQUIRE_AUTH_OPTION(uaRADIUS, "radiussecret", "radius");
+ hbaline->radiussecret = pstrdup(val);
+ }
+ else if (strcmp(name, "radiusidentifier") == 0)
+ {
+ REQUIRE_AUTH_OPTION(uaRADIUS, "radiusidentifier", "radius");
+ hbaline->radiusidentifier = pstrdup(val);
+ }
+ else
+ {
+ ereport(LOG,
+ (errcode(ERRCODE_CONFIG_FILE_ERROR),
+ errmsg("unrecognized authentication option name: \"%s\"",
+ name),
+ errcontext("line %d of configuration file \"%s\"",
+ line_num, HbaFileName)));
+ return false;
+ }
+ return true;
+}
+
+/*
+ * Scan the pre-parsed hba file, looking for a match to the port's connection
+ * request.
+ */
+static void
check_hba(hbaPort *port)
{
Oid roleid;
@@ -1589,72 +1665,21 @@ check_hba(hbaPort *port)
/* Check database and role */
if (!check_db(port->database_name, port->user_name, roleid,
- hba->database))
+ hba->databases))
continue;
- if (!check_role(port->user_name, roleid, hba->role))
+ if (!check_role(port->user_name, roleid, hba->roles))
continue;
/* Found a record that matched! */
port->hba = hba;
- return true;
+ return;
}
/* If no matching entry was found, then implicitly reject. */
hba = palloc0(sizeof(HbaLine));
hba->auth_method = uaImplicitReject;
port->hba = hba;
- return true;
-
- /*
- * XXX: Return false only happens if we have a parsing error, which we can
- * no longer have (parsing now in postmaster). Consider changing API.
- */
-}
-
-/*
- * Free an HbaLine structure
- */
-static void
-free_hba_record(HbaLine *record)
-{
- if (record->database)
- pfree(record->database);
- if (record->role)
- pfree(record->role);
- if (record->usermap)
- pfree(record->usermap);
- if (record->pamservice)
- pfree(record->pamservice);
- if (record->ldapserver)
- pfree(record->ldapserver);
- if (record->ldapprefix)
- pfree(record->ldapprefix);
- if (record->ldapsuffix)
- pfree(record->ldapsuffix);
- if (record->krb_server_hostname)
- pfree(record->krb_server_hostname);
- if (record->krb_realm)
- pfree(record->krb_realm);
- pfree(record);
-}
-
-/*
- * Free all records on the parsed HBA list
- */
-static void
-clean_hba_list(List *lines)
-{
- ListCell *line;
-
- foreach(line, lines)
- {
- HbaLine *parsed = (HbaLine *) lfirst(line);
-
- if (parsed)
- free_hba_record(parsed);
- }
- list_free(lines);
}
/*
@@ -1674,6 +1699,9 @@ load_hba(void)
*line_num;
List *new_parsed_lines = NIL;
bool ok = true;
+ MemoryContext linecxt;
+ MemoryContext oldcxt;
+ MemoryContext hbacxt;
file = AllocateFile(HbaFileName, "r");
if (file == NULL)
@@ -1691,20 +1719,29 @@ load_hba(void)
return false;
}
- tokenize_file(HbaFileName, file, &hba_lines, &hba_line_nums);
+ linecxt = tokenize_file(HbaFileName, file, &hba_lines, &hba_line_nums);
FreeFile(file);
/* Now parse all the lines */
+ hbacxt = AllocSetContextCreate(TopMemoryContext,
+ "hba parser context",
+ ALLOCSET_DEFAULT_MINSIZE,
+ ALLOCSET_DEFAULT_MINSIZE,
+ ALLOCSET_DEFAULT_MAXSIZE);
+ oldcxt = MemoryContextSwitchTo(hbacxt);
forboth(line, hba_lines, line_num, hba_line_nums)
{
HbaLine *newline;
- newline = palloc0(sizeof(HbaLine));
-
- if (!parse_hba_line(lfirst(line), lfirst_int(line_num), newline))
+ if ((newline = parse_hba_line(lfirst(line), lfirst_int(line_num))) == NULL)
{
- /* Parse error in the file, so indicate there's a problem */
- free_hba_record(newline);
+ /*
+ * Parse error in the file, so indicate there's a problem. NB: a
+ * problem in a line will free the memory for all previous lines as
+ * well!
+ */
+ MemoryContextReset(hbacxt);
+ new_parsed_lines = NIL;
ok = false;
/*
@@ -1718,18 +1755,21 @@ load_hba(void)
new_parsed_lines = lappend(new_parsed_lines, newline);
}
- /* Free the temporary lists */
- free_lines(&hba_lines, &hba_line_nums);
+ /* Free tokenizer memory */
+ MemoryContextDelete(linecxt);
+ MemoryContextSwitchTo(oldcxt);
if (!ok)
{
/* Parsing failed at one or more rows, so bail out */
- clean_hba_list(new_parsed_lines);
+ MemoryContextDelete(hbacxt);
return false;
}
/* Loaded new file successfully, replace the one we use */
- clean_hba_list(parsed_hba_lines);
+ if (parsed_hba_context != NULL)
+ MemoryContextDelete(parsed_hba_context);
+ parsed_hba_context = hbacxt;
parsed_hba_lines = new_parsed_lines;
return true;
@@ -1746,8 +1786,9 @@ parse_ident_usermap(List *line, int line_number, const char *usermap_name,
const char *pg_role, const char *ident_user,
bool case_insensitive, bool *found_p, bool *error_p)
{
- ListCell *line_item;
- char *token;
+ ListCell *field;
+ List *tokens;
+ HbaToken *token;
char *file_map;
char *file_pgrole;
char *file_ident_user;
@@ -1756,25 +1797,29 @@ parse_ident_usermap(List *line, int line_number, const char *usermap_name,
*error_p = false;
Assert(line != NIL);
- line_item = list_head(line);
+ field = list_head(line);
/* Get the map token (must exist) */
- token = lfirst(line_item);
- file_map = token;
+ tokens = lfirst(field);
+ IDENT_MULTI_VALUE(tokens);
+ token = linitial(tokens);
+ file_map = token->string;
/* Get the ident user token */
- line_item = lnext(line_item);
- if (!line_item)
- goto ident_syntax;
- token = lfirst(line_item);
- file_ident_user = token;
+ field = lnext(field);
+ IDENT_FIELD_ABSENT(field);
+ tokens = lfirst(field);
+ IDENT_MULTI_VALUE(tokens);
+ token = linitial(tokens);
+ file_ident_user = token->string;
/* Get the PG rolename token */
- line_item = lnext(line_item);
- if (!line_item)
- goto ident_syntax;
- token = lfirst(line_item);
- file_pgrole = token;
+ field = lnext(field);
+ IDENT_FIELD_ABSENT(field);
+ tokens = lfirst(field);
+ IDENT_MULTI_VALUE(tokens);
+ token = linitial(tokens);
+ file_pgrole = token->string;
if (strcmp(file_map, usermap_name) != 0)
/* Line does not match the map name we're looking for, so just abort */
@@ -1913,15 +1958,7 @@ parse_ident_usermap(List *line, int line_number, const char *usermap_name,
*found_p = true;
}
}
-
return;
-
-ident_syntax:
- ereport(LOG,
- (errcode(ERRCODE_CONFIG_FILE_ERROR),
- errmsg("missing entry in file \"%s\" at end of line %d",
- IdentFileName, line_number)));
- *error_p = true;
}
@@ -1989,15 +2026,21 @@ check_usermap(const char *usermap_name,
/*
- * Read the ident config file and create a List of Lists of tokens in the file.
+ * Read the ident config file and populate ident_lines and ident_line_nums.
+ *
+ * Like parsed_hba_lines, ident_lines is a triple-nested List of lines, fields
+ * and tokens.
*/
void
load_ident(void)
{
FILE *file;
- if (ident_lines || ident_line_nums)
- free_lines(&ident_lines, &ident_line_nums);
+ if (ident_context != NULL)
+ {
+ MemoryContextDelete(ident_context);
+ ident_context = NULL;
+ }
file = AllocateFile(IdentFileName, "r");
if (file == NULL)
@@ -2010,7 +2053,8 @@ load_ident(void)
}
else
{
- tokenize_file(IdentFileName, file, &ident_lines, &ident_line_nums);
+ ident_context = tokenize_file(IdentFileName, file, &ident_lines,
+ &ident_line_nums);
FreeFile(file);
}
}
@@ -2022,15 +2066,11 @@ load_ident(void)
* "database" from frontend "raddr", user "user". Return the method and
* an optional argument (stored in fields of *port), and STATUS_OK.
*
- * Note that STATUS_ERROR indicates a problem with the hba config file.
- * If the file is OK but does not contain any entry matching the request,
- * we return STATUS_OK and method = uaImplicitReject.
+ * If the file does not contain any entry matching the request, we return
+ * method = uaImplicitReject.
*/
-int
+void
hba_getauthmethod(hbaPort *port)
{
- if (check_hba(port))
- return STATUS_OK;
- else
- return STATUS_ERROR;
+ check_hba(port);
}
diff --git a/src/backend/nls.mk b/src/backend/nls.mk
index 18945692cd..297d1cb190 100644
--- a/src/backend/nls.mk
+++ b/src/backend/nls.mk
@@ -1,11 +1,15 @@
# src/backend/nls.mk
-CATALOG_NAME := postgres
-AVAIL_LANGUAGES := de es fr ja pt_BR tr zh_CN zh_TW
-GETTEXT_FILES := + gettext-files
-GETTEXT_TRIGGERS:= _ errmsg errmsg_plural:1,2 errdetail errdetail_log \
- errdetail_plural:1,2 errhint errcontext \
+CATALOG_NAME = postgres
+AVAIL_LANGUAGES = de es fr ja pt_BR tr zh_CN zh_TW
+GETTEXT_FILES = + gettext-files
+GETTEXT_TRIGGERS = $(BACKEND_COMMON_GETTEXT_TRIGGERS) \
GUC_check_errmsg GUC_check_errdetail GUC_check_errhint \
write_stderr yyerror parser_yyerror
+GETTEXT_FLAGS = $(BACKEND_COMMON_GETTEXT_FLAGS) \
+ GUC_check_errmsg:1:c-format \
+ GUC_check_errdetail:1:c-format \
+ GUC_check_errhint:1:c-format \
+ write_stderr:1:c-format
gettext-files: distprep
find $(srcdir)/ $(srcdir)/../port/ -name '*.c' -print >$@
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c
index 9aafc8adcc..b31e3869d3 100644
--- a/src/backend/optimizer/plan/planner.c
+++ b/src/backend/optimizer/plan/planner.c
@@ -41,6 +41,7 @@
#include "parser/parse_oper.h"
#include "parser/parsetree.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
diff --git a/src/backend/optimizer/util/clauses.c b/src/backend/optimizer/util/clauses.c
index 2914c39818..be0935db1d 100644
--- a/src/backend/optimizer/util/clauses.c
+++ b/src/backend/optimizer/util/clauses.c
@@ -106,9 +106,9 @@ static List *simplify_and_arguments(List *args,
eval_const_expressions_context *context,
bool *haveNull, bool *forceFalse);
static Node *simplify_boolean_equality(Oid opno, List *args);
-static Expr *simplify_function(Oid funcid,
- Oid result_type, int32 result_typmod,
- Oid result_collid, Oid input_collid, List **args,
+static Expr *simplify_function(Expr *oldexpr, Oid funcid,
+ Oid result_type, int32 result_typmod, Oid result_collid,
+ Oid input_collid, List **args,
bool has_named_args,
bool allow_inline,
eval_const_expressions_context *context);
@@ -2223,7 +2223,8 @@ eval_const_expressions_mutator(Node *node,
* FuncExpr, but not when the node is recognizably a length coercion;
* we want to preserve the typmod in the eventual Const if so.
*/
- simple = simplify_function(expr->funcid,
+ simple = simplify_function((Expr *) expr,
+ expr->funcid,
expr->funcresulttype, exprTypmod(node),
expr->funccollid,
expr->inputcollid,
@@ -2275,7 +2276,8 @@ eval_const_expressions_mutator(Node *node,
* Code for op/func reduction is pretty bulky, so split it out as a
* separate function.
*/
- simple = simplify_function(expr->opfuncid,
+ simple = simplify_function((Expr *) expr,
+ expr->opfuncid,
expr->opresulttype, -1,
expr->opcollid,
expr->inputcollid,
@@ -2372,7 +2374,8 @@ eval_const_expressions_mutator(Node *node,
* Code for op/func reduction is pretty bulky, so split it out as
* a separate function.
*/
- simple = simplify_function(expr->opfuncid,
+ simple = simplify_function((Expr *) expr,
+ expr->opfuncid,
expr->opresulttype, -1,
expr->opcollid,
expr->inputcollid,
@@ -2561,7 +2564,8 @@ eval_const_expressions_mutator(Node *node,
getTypeOutputInfo(exprType((Node *) arg), &outfunc, &outtypisvarlena);
getTypeInputInfo(expr->resulttype, &infunc, &intypioparam);
- simple = simplify_function(outfunc,
+ simple = simplify_function(NULL,
+ outfunc,
CSTRINGOID, -1,
InvalidOid,
InvalidOid,
@@ -2581,7 +2585,8 @@ eval_const_expressions_mutator(Node *node,
Int32GetDatum(-1),
false, true));
- simple = simplify_function(infunc,
+ simple = simplify_function(NULL,
+ infunc,
expr->resulttype, -1,
expr->resultcollid,
InvalidOid,
@@ -3417,11 +3422,15 @@ simplify_boolean_equality(Oid opno, List *args)
* Subroutine for eval_const_expressions: try to simplify a function call
* (which might originally have been an operator; we don't care)
*
- * Inputs are the function OID, actual result type OID (which is needed for
- * polymorphic functions), result typmod, result collation,
- * the input collation to use for the function,
- * the pre-simplified argument list, and some flags;
- * also the context data for eval_const_expressions.
+ * Inputs are the original expression (can be NULL), function OID, actual
+ * result type OID (which is needed for polymorphic functions), result typmod,
+ * result collation, the input collation to use for the function, the
+ * pre-simplified argument list, and some flags; also the context data for
+ * eval_const_expressions. In common cases, several of the arguments could be
+ * derived from the original expression. Sending them separately avoids
+ * duplicating NodeTag-specific knowledge, and it's necessary for CoerceViaIO.
+ * A NULL original expression disables use of transform functions while
+ * retaining all other behaviors.
*
* Returns a simplified expression if successful, or NULL if cannot
* simplify the function call.
@@ -3433,22 +3442,24 @@ simplify_boolean_equality(Oid opno, List *args)
* pass-by-reference, and it may get modified even if simplification fails.
*/
static Expr *
-simplify_function(Oid funcid, Oid result_type, int32 result_typmod,
- Oid result_collid, Oid input_collid, List **args,
+simplify_function(Expr *oldexpr, Oid funcid,
+ Oid result_type, int32 result_typmod, Oid result_collid,
+ Oid input_collid, List **args,
bool has_named_args,
bool allow_inline,
eval_const_expressions_context *context)
{
HeapTuple func_tuple;
Expr *newexpr;
+ Oid transform;
/*
- * We have two strategies for simplification: either execute the function
- * to deliver a constant result, or expand in-line the body of the
- * function definition (which only works for simple SQL-language
- * functions, but that is a common case). In either case we need access
- * to the function's pg_proc tuple, so fetch it just once to use in both
- * attempts.
+ * We have three strategies for simplification: execute the function to
+ * deliver a constant result, use a transform function to generate a
+ * substitute node tree, or expand in-line the body of the function
+ * definition (which only works for simple SQL-language functions, but
+ * that is a common case). Each needs access to the function's pg_proc
+ * tuple, so fetch it just once.
*/
func_tuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(funcid));
if (!HeapTupleIsValid(func_tuple))
@@ -3468,6 +3479,40 @@ simplify_function(Oid funcid, Oid result_type, int32 result_typmod,
result_collid, input_collid, *args,
func_tuple, context);
+ /*
+ * Some functions calls can be simplified at plan time based on properties
+ * specific to the function. For example, "varchar(s::varchar(4), 8,
+ * true)" simplifies to "s::varchar(4)", and "int4mul(n, 1)" could
+ * simplify to "n". To define such function-specific optimizations, write
+ * a "transform function" and store its OID in the pg_proc.protransform of
+ * the primary function. Give each transform function the signature
+ * "protransform(internal) RETURNS internal". The argument, internally an
+ * Expr *, is the node representing a call to the primary function. If
+ * the transform function's study of that node proves that a simplified
+ * Expr substitutes for all possible concrete calls represented thereby,
+ * return that simplified Expr. Otherwise, return the NULL pointer.
+ *
+ * Currently, the specific Expr nodetag can be FuncExpr, OpExpr or
+ * DistinctExpr. This list may change in the future. The function should
+ * check the nodetag and return the NULL pointer for unexpected inputs.
+ *
+ * We make no guarantee that PostgreSQL will never call the primary
+ * function in cases that the transform function would simplify. Ensure
+ * rigorous equivalence between the simplified expression and an actual
+ * call to the primary function.
+ *
+ * Currently, this facility is undocumented and not exposed to users at
+ * the SQL level. Core length coercion casts use it to avoid calls
+ * guaranteed to return their input unchanged. This in turn allows ALTER
+ * TABLE ALTER TYPE to avoid rewriting tables for some typmod changes. In
+ * the future, this facility may find other applications, like simplifying
+ * x*0, x*1, and x+0.
+ */
+ transform = ((Form_pg_proc) GETSTRUCT(func_tuple))->protransform;
+ if (!newexpr && OidIsValid(transform) && oldexpr)
+ newexpr = (Expr *) DatumGetPointer(OidFunctionCall1(transform,
+ PointerGetDatum(oldexpr)));
+
if (!newexpr && allow_inline)
newexpr = inline_function(funcid, result_type, result_collid,
input_collid, *args,
diff --git a/src/backend/optimizer/util/plancat.c b/src/backend/optimizer/util/plancat.c
index b28681630b..0ec17505a7 100644
--- a/src/backend/optimizer/util/plancat.c
+++ b/src/backend/optimizer/util/plancat.c
@@ -552,7 +552,7 @@ get_relation_data_width(Oid relid, int32 *attr_widths)
/*
* get_relation_constraints
*
- * Retrieve the CHECK constraint expressions of the given relation.
+ * Retrieve the validated CHECK constraint expressions of the given relation.
*
* Returns a List (possibly empty) of constraint expressions. Each one
* has been canonicalized, and its Vars are changed to have the varno
@@ -591,6 +591,13 @@ get_relation_constraints(PlannerInfo *root,
{
Node *cexpr;
+ /*
+ * If this constraint hasn't been fully validated yet, we must
+ * ignore it here.
+ */
+ if (!constr->check[i].ccvalid)
+ continue;
+
cexpr = stringToNode(constr->check[i].ccbin);
/*
@@ -663,7 +670,7 @@ get_relation_constraints(PlannerInfo *root,
*
* Detect whether the relation need not be scanned because it has either
* self-inconsistent restrictions, or restrictions inconsistent with the
- * relation's CHECK constraints.
+ * relation's validated CHECK constraints.
*
* Note: this examines only rel->relid, rel->reloptkind, and
* rel->baserestrictinfo; therefore it can be called before filling in
diff --git a/src/backend/optimizer/util/predtest.c b/src/backend/optimizer/util/predtest.c
index a7e83729b1..beabafb5a8 100644
--- a/src/backend/optimizer/util/predtest.c
+++ b/src/backend/optimizer/util/predtest.c
@@ -15,6 +15,7 @@
*/
#include "postgres.h"
+#include "catalog/pg_am.h"
#include "catalog/pg_amop.h"
#include "catalog/pg_proc.h"
#include "catalog/pg_type.h"
@@ -1249,6 +1250,7 @@ list_member_strip(List *list, Expr *datum)
* and in addition we use (6) to represent <>. <> is not a btree-indexable
* operator, but we assume here that if an equality operator of a btree
* opfamily has a negator operator, the negator behaves as <> for the opfamily.
+ * (This convention is also known to get_op_btree_interpretation().)
*
* The interpretation of:
*
@@ -1285,7 +1287,7 @@ list_member_strip(List *list, Expr *datum)
#define BTEQ BTEqualStrategyNumber
#define BTGE BTGreaterEqualStrategyNumber
#define BTGT BTGreaterStrategyNumber
-#define BTNE 6
+#define BTNE ROWCOMPARE_NE
static const StrategyNumber BT_implic_table[6][6] = {
/*
@@ -1556,18 +1558,12 @@ get_btree_test_op(Oid pred_op, Oid clause_op, bool refute_it)
OprProofCacheKey key;
OprProofCacheEntry *cache_entry;
bool cfound;
- bool pred_op_negated;
- Oid pred_op_negator,
- clause_op_negator,
- test_op = InvalidOid;
- Oid opfamily_id;
+ Oid test_op = InvalidOid;
bool found = false;
- StrategyNumber pred_strategy,
- clause_strategy,
- test_strategy;
- Oid clause_righttype;
- CatCList *catlist;
- int i;
+ List *pred_op_infos,
+ *clause_op_infos;
+ ListCell *lcp,
+ *lcc;
/*
* Find or make a cache entry for this pair of operators.
@@ -1628,135 +1624,71 @@ get_btree_test_op(Oid pred_op, Oid clause_op, bool refute_it)
* corresponding test operator. This should work for any logically
* consistent opfamilies.
*/
- catlist = SearchSysCacheList1(AMOPOPID, ObjectIdGetDatum(pred_op));
+ clause_op_infos = get_op_btree_interpretation(clause_op);
+ if (clause_op_infos)
+ pred_op_infos = get_op_btree_interpretation(pred_op);
+ else /* no point in looking */
+ pred_op_infos = NIL;
- /*
- * If we couldn't find any opfamily containing the pred_op, perhaps it is
- * a <> operator. See if it has a negator that is in an opfamily.
- */
- pred_op_negated = false;
- if (catlist->n_members == 0)
+ foreach(lcp, pred_op_infos)
{
- pred_op_negator = get_negator(pred_op);
- if (OidIsValid(pred_op_negator))
- {
- pred_op_negated = true;
- ReleaseSysCacheList(catlist);
- catlist = SearchSysCacheList1(AMOPOPID,
- ObjectIdGetDatum(pred_op_negator));
- }
- }
+ OpBtreeInterpretation *pred_op_info = lfirst(lcp);
+ Oid opfamily_id = pred_op_info->opfamily_id;
- /* Also may need the clause_op's negator */
- clause_op_negator = get_negator(clause_op);
+ foreach(lcc, clause_op_infos)
+ {
+ OpBtreeInterpretation *clause_op_info = lfirst(lcc);
+ StrategyNumber pred_strategy,
+ clause_strategy,
+ test_strategy;
- /* Now search the opfamilies */
- for (i = 0; i < catlist->n_members; i++)
- {
- HeapTuple pred_tuple = &catlist->members[i]->tuple;
- Form_pg_amop pred_form = (Form_pg_amop) GETSTRUCT(pred_tuple);
- HeapTuple clause_tuple;
+ /* Must find them in same opfamily */
+ if (opfamily_id != clause_op_info->opfamily_id)
+ continue;
+ /* Lefttypes should match */
+ Assert(clause_op_info->oplefttype == pred_op_info->oplefttype);
- /* Must be btree */
- if (pred_form->amopmethod != BTREE_AM_OID)
- continue;
+ pred_strategy = pred_op_info->strategy;
+ clause_strategy = clause_op_info->strategy;
- /* Get the predicate operator's btree strategy number */
- opfamily_id = pred_form->amopfamily;
- pred_strategy = (StrategyNumber) pred_form->amopstrategy;
- Assert(pred_strategy >= 1 && pred_strategy <= 5);
+ /*
+ * Look up the "test" strategy number in the implication table
+ */
+ if (refute_it)
+ test_strategy = BT_refute_table[clause_strategy - 1][pred_strategy - 1];
+ else
+ test_strategy = BT_implic_table[clause_strategy - 1][pred_strategy - 1];
- if (pred_op_negated)
- {
- /* Only consider negators that are = */
- if (pred_strategy != BTEqualStrategyNumber)
+ if (test_strategy == 0)
+ {
+ /* Can't determine implication using this interpretation */
continue;
- pred_strategy = BTNE;
- }
+ }
- /*
- * From the same opfamily, find a strategy number for the clause_op,
- * if possible
- */
- clause_tuple = SearchSysCache3(AMOPOPID,
- ObjectIdGetDatum(clause_op),
- CharGetDatum(AMOP_SEARCH),
- ObjectIdGetDatum(opfamily_id));
- if (HeapTupleIsValid(clause_tuple))
- {
- Form_pg_amop clause_form = (Form_pg_amop) GETSTRUCT(clause_tuple);
-
- /* Get the restriction clause operator's strategy/datatype */
- clause_strategy = (StrategyNumber) clause_form->amopstrategy;
- Assert(clause_strategy >= 1 && clause_strategy <= 5);
- Assert(clause_form->amoplefttype == pred_form->amoplefttype);
- clause_righttype = clause_form->amoprighttype;
- ReleaseSysCache(clause_tuple);
- }
- else if (OidIsValid(clause_op_negator))
- {
- clause_tuple = SearchSysCache3(AMOPOPID,
- ObjectIdGetDatum(clause_op_negator),
- CharGetDatum(AMOP_SEARCH),
- ObjectIdGetDatum(opfamily_id));
- if (HeapTupleIsValid(clause_tuple))
+ /*
+ * See if opfamily has an operator for the test strategy and the
+ * datatypes.
+ */
+ if (test_strategy == BTNE)
{
- Form_pg_amop clause_form = (Form_pg_amop) GETSTRUCT(clause_tuple);
-
- /* Get the restriction clause operator's strategy/datatype */
- clause_strategy = (StrategyNumber) clause_form->amopstrategy;
- Assert(clause_strategy >= 1 && clause_strategy <= 5);
- Assert(clause_form->amoplefttype == pred_form->amoplefttype);
- clause_righttype = clause_form->amoprighttype;
- ReleaseSysCache(clause_tuple);
-
- /* Only consider negators that are = */
- if (clause_strategy != BTEqualStrategyNumber)
- continue;
- clause_strategy = BTNE;
+ test_op = get_opfamily_member(opfamily_id,
+ pred_op_info->oprighttype,
+ clause_op_info->oprighttype,
+ BTEqualStrategyNumber);
+ if (OidIsValid(test_op))
+ test_op = get_negator(test_op);
}
else
- continue;
- }
- else
- continue;
-
- /*
- * Look up the "test" strategy number in the implication table
- */
- if (refute_it)
- test_strategy = BT_refute_table[clause_strategy - 1][pred_strategy - 1];
- else
- test_strategy = BT_implic_table[clause_strategy - 1][pred_strategy - 1];
+ {
+ test_op = get_opfamily_member(opfamily_id,
+ pred_op_info->oprighttype,
+ clause_op_info->oprighttype,
+ test_strategy);
+ }
- if (test_strategy == 0)
- {
- /* Can't determine implication using this interpretation */
- continue;
- }
+ if (!OidIsValid(test_op))
+ continue;
- /*
- * See if opfamily has an operator for the test strategy and the
- * datatypes.
- */
- if (test_strategy == BTNE)
- {
- test_op = get_opfamily_member(opfamily_id,
- pred_form->amoprighttype,
- clause_righttype,
- BTEqualStrategyNumber);
- if (OidIsValid(test_op))
- test_op = get_negator(test_op);
- }
- else
- {
- test_op = get_opfamily_member(opfamily_id,
- pred_form->amoprighttype,
- clause_righttype,
- test_strategy);
- }
- if (OidIsValid(test_op))
- {
/*
* Last check: test_op must be immutable.
*
@@ -1772,9 +1704,13 @@ get_btree_test_op(Oid pred_op, Oid clause_op, bool refute_it)
break;
}
}
+
+ if (found)
+ break;
}
- ReleaseSysCacheList(catlist);
+ list_free_deep(pred_op_infos);
+ list_free_deep(clause_op_infos);
if (!found)
{
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 62cff8a7de..72260320c3 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -2759,8 +2759,9 @@ ConstraintElem:
n->raw_expr = $3;
n->cooked_expr = NULL;
processCASbits($5, @5, "CHECK",
- NULL, NULL, NULL,
+ NULL, NULL, &n->skip_validation,
yyscanner);
+ n->initially_valid = !n->skip_validation;
$$ = (Node *)n;
}
| UNIQUE '(' columnList ')' opt_definition OptConsTableSpace
@@ -7559,6 +7560,15 @@ AlterDomainStmt:
n->behavior = $7;
$$ = (Node *)n;
}
+ /* ALTER DOMAIN <domain> VALIDATE CONSTRAINT <name> */
+ | ALTER DOMAIN_P any_name VALIDATE CONSTRAINT name
+ {
+ AlterDomainStmt *n = makeNode(AlterDomainStmt);
+ n->subtype = 'V';
+ n->typeName = $3;
+ n->name = $6;
+ $$ = (Node *)n;
+ }
;
opt_as: AS {}
diff --git a/src/backend/parser/parse_clause.c b/src/backend/parser/parse_clause.c
index c5fe6b6a3f..a8549e0c2a 100644
--- a/src/backend/parser/parse_clause.c
+++ b/src/backend/parser/parse_clause.c
@@ -2278,3 +2278,25 @@ transformFrameOffset(ParseState *pstate, int frameOptions, Node *clause)
return node;
}
+
+/*
+ * relabel_to_typmod
+ * Add a RelabelType node that changes just the typmod, and remove all
+ * now-superfluous RelabelType nodes beneath it.
+ */
+Node *
+relabel_to_typmod(Node *expr, int32 typmod)
+{
+ Oid type = exprType(expr);
+ Oid coll = exprCollation(expr);
+
+ /*
+ * Strip any existing RelabelType, then add one. This is to preserve the
+ * invariant of no redundant RelabelTypes.
+ */
+ while (IsA(expr, RelabelType))
+ expr = (Node *) ((RelabelType *) expr)->arg;
+
+ return (Node *) makeRelabelType((Expr *) expr, type, typmod, coll,
+ COERCE_DONTCARE);
+}
diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c
index 08f0439e7e..65d03adc49 100644
--- a/src/backend/parser/parse_expr.c
+++ b/src/backend/parser/parse_expr.c
@@ -2170,8 +2170,7 @@ make_row_comparison_op(ParseState *pstate, List *opname,
List *opfamilies;
ListCell *l,
*r;
- List **opfamily_lists;
- List **opstrat_lists;
+ List **opinfo_lists;
Bitmapset *strats;
int nopers;
int i;
@@ -2241,8 +2240,7 @@ make_row_comparison_op(ParseState *pstate, List *opname,
* containing the operators, and see which interpretations (strategy
* numbers) exist for each operator.
*/
- opfamily_lists = (List **) palloc(nopers * sizeof(List *));
- opstrat_lists = (List **) palloc(nopers * sizeof(List *));
+ opinfo_lists = (List **) palloc(nopers * sizeof(List *));
strats = NULL;
i = 0;
foreach(l, opexprs)
@@ -2251,17 +2249,18 @@ make_row_comparison_op(ParseState *pstate, List *opname,
Bitmapset *this_strats;
ListCell *j;
- get_op_btree_interpretation(opno,
- &opfamily_lists[i], &opstrat_lists[i]);
+ opinfo_lists[i] = get_op_btree_interpretation(opno);
/*
- * convert strategy number list to a Bitmapset to make the
+ * convert strategy numbers into a Bitmapset to make the
* intersection calculation easy.
*/
this_strats = NULL;
- foreach(j, opstrat_lists[i])
+ foreach(j, opinfo_lists[i])
{
- this_strats = bms_add_member(this_strats, lfirst_int(j));
+ OpBtreeInterpretation *opinfo = lfirst(j);
+
+ this_strats = bms_add_member(this_strats, opinfo->strategy);
}
if (i == 0)
strats = this_strats;
@@ -2309,14 +2308,15 @@ make_row_comparison_op(ParseState *pstate, List *opname,
for (i = 0; i < nopers; i++)
{
Oid opfamily = InvalidOid;
+ ListCell *j;
- forboth(l, opfamily_lists[i], r, opstrat_lists[i])
+ foreach(j, opinfo_lists[i])
{
- int opstrat = lfirst_int(r);
+ OpBtreeInterpretation *opinfo = lfirst(j);
- if (opstrat == rctype)
+ if (opinfo->strategy == rctype)
{
- opfamily = lfirst_oid(l);
+ opfamily = opinfo->opfamily_id;
break;
}
}
diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c
index 5359e691dd..f2ccf0d745 100644
--- a/src/backend/parser/parse_relation.c
+++ b/src/backend/parser/parse_relation.c
@@ -29,6 +29,7 @@
#include "parser/parse_type.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
@@ -826,7 +827,7 @@ parserOpenTable(ParseState *pstate, const RangeVar *relation, int lockmode)
ParseCallbackState pcbstate;
setup_parser_errposition_callback(&pcbstate, pstate, relation->location);
- rel = try_heap_openrv(relation, lockmode);
+ rel = heap_openrv_extended(relation, lockmode, true);
if (rel == NULL)
{
if (relation->schemaname)
diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c
index e6f9e36bbc..9d4e580e47 100644
--- a/src/backend/parser/parse_target.c
+++ b/src/backend/parser/parse_target.c
@@ -29,6 +29,7 @@
#include "parser/parse_type.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#include "utils/typcache.h"
diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c
index 51899c6b5b..1be2ac68a5 100644
--- a/src/backend/parser/parse_utilcmd.c
+++ b/src/backend/parser/parse_utilcmd.c
@@ -59,7 +59,7 @@
#include "utils/acl.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
-#include "utils/relcache.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/typcache.h"
@@ -162,6 +162,7 @@ transformCreateStmt(CreateStmt *stmt, const char *queryString)
* possible.
*/
namespaceid = RangeVarGetAndCheckCreationNamespace(stmt->relation);
+ RangeVarAdjustRelationPersistence(stmt->relation, namespaceid);
/*
* If the relation already exists and the user specified "IF NOT EXISTS",
@@ -307,7 +308,14 @@ transformColumnDefinition(CreateStmtContext *cxt, ColumnDef *column)
{
char *typname = strVal(linitial(column->typeName->names));
- if (strcmp(typname, "serial") == 0 ||
+ if (strcmp(typname, "smallserial") == 0 ||
+ strcmp(typname, "serial2") == 0)
+ {
+ is_serial = true;
+ column->typeName->names = NIL;
+ column->typeName->typeOid = INT2OID;
+ }
+ else if (strcmp(typname, "serial") == 0 ||
strcmp(typname, "serial4") == 0)
{
is_serial = true;
@@ -367,7 +375,10 @@ transformColumnDefinition(CreateStmtContext *cxt, ColumnDef *column)
if (cxt->rel)
snamespaceid = RelationGetNamespace(cxt->rel);
else
+ {
snamespaceid = RangeVarGetCreationNamespace(cxt->relation);
+ RangeVarAdjustRelationPersistence(cxt->relation, snamespaceid);
+ }
snamespace = get_namespace_name(snamespaceid);
sname = ChooseRelationName(cxt->relation->relname,
column->colname,
@@ -1481,21 +1492,21 @@ transformIndexConstraint(Constraint *constraint, CreateStmtContext *cxt)
ereport(ERROR,
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
errmsg("\"%s\" is not a unique index", index_name),
- errdetail("Cannot create a PRIMARY KEY or UNIQUE constraint using such an index."),
+ errdetail("Cannot create a primary key or unique constraint using such an index."),
parser_errposition(cxt->pstate, constraint->location)));
if (RelationGetIndexExpressions(index_rel) != NIL)
ereport(ERROR,
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
errmsg("index \"%s\" contains expressions", index_name),
- errdetail("Cannot create a PRIMARY KEY or UNIQUE constraint using such an index."),
+ errdetail("Cannot create a primary key or unique constraint using such an index."),
parser_errposition(cxt->pstate, constraint->location)));
if (RelationGetIndexPredicate(index_rel) != NIL)
ereport(ERROR,
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
errmsg("\"%s\" is a partial index", index_name),
- errdetail("Cannot create a PRIMARY KEY or UNIQUE constraint using such an index."),
+ errdetail("Cannot create a primary key or unique constraint using such an index."),
parser_errposition(cxt->pstate, constraint->location)));
/*
@@ -1520,7 +1531,7 @@ transformIndexConstraint(Constraint *constraint, CreateStmtContext *cxt)
if (index_rel->rd_rel->relam != get_am_oid(DEFAULT_INDEX_TYPE, false))
ereport(ERROR,
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
- errmsg("index \"%s\" is not a b-tree", index_name),
+ errmsg("index \"%s\" is not a btree", index_name),
parser_errposition(cxt->pstate, constraint->location)));
/* Must get indclass the hard way */
@@ -1565,7 +1576,7 @@ transformIndexConstraint(Constraint *constraint, CreateStmtContext *cxt)
ereport(ERROR,
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
errmsg("index \"%s\" does not have default sorting behavior", index_name),
- errdetail("Cannot create a PRIMARY KEY or UNIQUE constraint using such an index."),
+ errdetail("Cannot create a primary key or unique constraint using such an index."),
parser_errposition(cxt->pstate, constraint->location)));
constraint->keys = lappend(constraint->keys, makeString(attname));
@@ -2411,8 +2422,8 @@ transformAlterTableStmt(AlterTableStmt *stmt, const char *queryString)
* and detect inconsistent/misplaced constraint attributes.
*
* NOTE: currently, attributes are only supported for FOREIGN KEY, UNIQUE,
- * and PRIMARY KEY constraints, but someday they ought to be supported
- * for other constraint types.
+ * EXCLUSION, and PRIMARY KEY constraints, but someday they ought to be
+ * supported for other constraint types.
*/
static void
transformConstraintAttrs(CreateStmtContext *cxt, List *constraintList)
diff --git a/src/backend/port/pipe.c b/src/backend/port/pipe.c
index b86a53ad34..b249e95910 100644
--- a/src/backend/port/pipe.c
+++ b/src/backend/port/pipe.c
@@ -29,7 +29,7 @@ pgpipe(int handles[2])
if ((s = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
{
- ereport(LOG, (errmsg_internal("pgpipe failed to create socket: %ui", WSAGetLastError())));
+ ereport(LOG, (errmsg_internal("pgpipe could not create socket: %ui", WSAGetLastError())));
return -1;
}
@@ -39,38 +39,38 @@ pgpipe(int handles[2])
serv_addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
if (bind(s, (SOCKADDR *) &serv_addr, len) == SOCKET_ERROR)
{
- ereport(LOG, (errmsg_internal("pgpipe failed to bind: %ui", WSAGetLastError())));
+ ereport(LOG, (errmsg_internal("pgpipe could not bind: %ui", WSAGetLastError())));
closesocket(s);
return -1;
}
if (listen(s, 1) == SOCKET_ERROR)
{
- ereport(LOG, (errmsg_internal("pgpipe failed to listen: %ui", WSAGetLastError())));
+ ereport(LOG, (errmsg_internal("pgpipe could not listen: %ui", WSAGetLastError())));
closesocket(s);
return -1;
}
if (getsockname(s, (SOCKADDR *) &serv_addr, &len) == SOCKET_ERROR)
{
- ereport(LOG, (errmsg_internal("pgpipe failed to getsockname: %ui", WSAGetLastError())));
+ ereport(LOG, (errmsg_internal("pgpipe could not getsockname: %ui", WSAGetLastError())));
closesocket(s);
return -1;
}
if ((handles[1] = socket(PF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
{
- ereport(LOG, (errmsg_internal("pgpipe failed to create socket 2: %ui", WSAGetLastError())));
+ ereport(LOG, (errmsg_internal("pgpipe could not create socket 2: %ui", WSAGetLastError())));
closesocket(s);
return -1;
}
if (connect(handles[1], (SOCKADDR *) &serv_addr, len) == SOCKET_ERROR)
{
- ereport(LOG, (errmsg_internal("pgpipe failed to connect socket: %ui", WSAGetLastError())));
+ ereport(LOG, (errmsg_internal("pgpipe could not connect socket: %ui", WSAGetLastError())));
closesocket(s);
return -1;
}
if ((handles[0] = accept(s, (SOCKADDR *) &serv_addr, &len)) == INVALID_SOCKET)
{
- ereport(LOG, (errmsg_internal("pgpipe failed to accept socket: %ui", WSAGetLastError())));
+ ereport(LOG, (errmsg_internal("pgpipe could not accept socket: %ui", WSAGetLastError())));
closesocket(handles[1]);
handles[1] = INVALID_SOCKET;
closesocket(s);
diff --git a/src/backend/port/win32/crashdump.c b/src/backend/port/win32/crashdump.c
index 119dd076ca..b905206a29 100644
--- a/src/backend/port/win32/crashdump.c
+++ b/src/backend/port/win32/crashdump.c
@@ -105,7 +105,7 @@ crashDumpHandler(struct _EXCEPTION_POINTERS * pExceptionInfo)
hDll = LoadLibrary("dbghelp.dll");
if (hDll == NULL)
{
- write_stderr("could not load dbghelp.dll, cannot write crashdump\n");
+ write_stderr("could not load dbghelp.dll, cannot write crash dump\n");
return EXCEPTION_CONTINUE_SEARCH;
}
@@ -113,7 +113,7 @@ crashDumpHandler(struct _EXCEPTION_POINTERS * pExceptionInfo)
if (pDump == NULL)
{
- write_stderr("could not load required functions in dbghelp.dll, cannot write crashdump\n");
+ write_stderr("could not load required functions in dbghelp.dll, cannot write crash dump\n");
return EXCEPTION_CONTINUE_SEARCH;
}
@@ -144,16 +144,16 @@ crashDumpHandler(struct _EXCEPTION_POINTERS * pExceptionInfo)
NULL);
if (dumpFile == INVALID_HANDLE_VALUE)
{
- write_stderr("could not open crash dump file %s for writing: error code %u\n",
+ write_stderr("could not open crash dump file \"%s\" for writing: error code %u\n",
dumpPath, (unsigned int) GetLastError());
return EXCEPTION_CONTINUE_SEARCH;
}
if ((*pDump) (selfProcHandle, selfPid, dumpFile, dumpType, &ExInfo,
NULL, NULL))
- write_stderr("wrote crash dump to %s\n", dumpPath);
+ write_stderr("wrote crash dump to file \"%s\"\n", dumpPath);
else
- write_stderr("could not write crash dump to %s: error code %08x\n",
+ write_stderr("could not write crash dump to file \"%s\": error code %08x\n",
dumpPath, (unsigned int) GetLastError());
CloseHandle(dumpFile);
diff --git a/src/backend/port/win32/signal.c b/src/backend/port/win32/signal.c
index 92082a20b7..d2dfd01223 100644
--- a/src/backend/port/win32/signal.c
+++ b/src/backend/port/win32/signal.c
@@ -83,18 +83,18 @@ pgwin32_signal_initialize(void)
pgwin32_signal_event = CreateEvent(NULL, TRUE, FALSE, NULL);
if (pgwin32_signal_event == NULL)
ereport(FATAL,
- (errmsg_internal("failed to create signal event: %d", (int) GetLastError())));
+ (errmsg_internal("could not create signal event: %d", (int) GetLastError())));
/* Create thread for handling signals */
signal_thread_handle = CreateThread(NULL, 0, pg_signal_thread, NULL, 0, NULL);
if (signal_thread_handle == NULL)
ereport(FATAL,
- (errmsg_internal("failed to create signal handler thread")));
+ (errmsg_internal("could not create signal handler thread")));
/* Create console control handle to pick up Ctrl-C etc */
if (!SetConsoleCtrlHandler(pg_console_handler, TRUE))
ereport(FATAL,
- (errmsg_internal("failed to set console control handler")));
+ (errmsg_internal("could not set console control handler")));
}
/*
diff --git a/src/backend/port/win32/socket.c b/src/backend/port/win32/socket.c
index c918da981b..b730f8eeda 100644
--- a/src/backend/port/win32/socket.c
+++ b/src/backend/port/win32/socket.c
@@ -99,7 +99,7 @@ TranslateSocketError(void)
break;
default:
ereport(NOTICE,
- (errmsg_internal("Unknown win32 socket error code: %i", WSAGetLastError())));
+ (errmsg_internal("unrecognized win32 socket error code: %i", WSAGetLastError())));
errno = EINVAL;
}
}
@@ -143,11 +143,11 @@ pgwin32_waitforsinglesocket(SOCKET s, int what, int timeout)
if (waitevent == INVALID_HANDLE_VALUE)
ereport(ERROR,
- (errmsg_internal("Failed to create socket waiting event: %i", (int) GetLastError())));
+ (errmsg_internal("could not create socket waiting event: %i", (int) GetLastError())));
}
else if (!ResetEvent(waitevent))
ereport(ERROR,
- (errmsg_internal("Failed to reset socket waiting event: %i", (int) GetLastError())));
+ (errmsg_internal("could not reset socket waiting event: %i", (int) GetLastError())));
/*
* make sure we don't multiplex this kernel event object with a different
@@ -221,7 +221,7 @@ pgwin32_waitforsinglesocket(SOCKET s, int what, int timeout)
if (r == WAIT_TIMEOUT)
return 0;
ereport(ERROR,
- (errmsg_internal("Bad return from WaitForMultipleObjects: %i (%i)", r, (int) GetLastError())));
+ (errmsg_internal("unrecognized return value from WaitForMultipleObjects: %i (%i)", r, (int) GetLastError())));
return 0;
}
@@ -364,7 +364,7 @@ pgwin32_recv(SOCKET s, char *buf, int len, int f)
return b;
}
ereport(NOTICE,
- (errmsg_internal("Failed to read from ready socket (after retries)")));
+ (errmsg_internal("could not read from ready socket (after retries)")));
errno = EWOULDBLOCK;
return -1;
}
@@ -645,7 +645,7 @@ pgwin32_socket_strerror(int err)
handleDLL = LoadLibraryEx("netmsg.dll", NULL, DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_AS_DATAFILE);
if (handleDLL == NULL)
ereport(FATAL,
- (errmsg_internal("Failed to load netmsg.dll: %i", (int) GetLastError())));
+ (errmsg_internal("could not load netmsg.dll: %i", (int) GetLastError())));
}
ZeroMemory(&wserrbuf, sizeof(wserrbuf));
@@ -658,7 +658,7 @@ pgwin32_socket_strerror(int err)
NULL) == 0)
{
/* Failed to get id */
- sprintf(wserrbuf, "Unknown winsock error %i", err);
+ sprintf(wserrbuf, "unrecognized winsock error %i", err);
}
return wserrbuf;
}
diff --git a/src/backend/port/win32/timer.c b/src/backend/port/win32/timer.c
index e118d96a4b..97224df386 100644
--- a/src/backend/port/win32/timer.c
+++ b/src/backend/port/win32/timer.c
@@ -97,7 +97,7 @@ setitimer(int which, const struct itimerval * value, struct itimerval * ovalue)
timerCommArea.event = CreateEvent(NULL, TRUE, FALSE, NULL);
if (timerCommArea.event == NULL)
ereport(FATAL,
- (errmsg_internal("failed to create timer event: %d",
+ (errmsg_internal("could not create timer event: %d",
(int) GetLastError())));
MemSet(&timerCommArea.value, 0, sizeof(struct itimerval));
@@ -107,7 +107,7 @@ setitimer(int which, const struct itimerval * value, struct itimerval * ovalue)
timerThreadHandle = CreateThread(NULL, 0, pg_timer_thread, NULL, 0, NULL);
if (timerThreadHandle == INVALID_HANDLE_VALUE)
ereport(FATAL,
- (errmsg_internal("failed to create timer thread: %d",
+ (errmsg_internal("could not create timer thread: %d",
(int) GetLastError())));
}
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c
index fcc912f8e3..483a82951b 100644
--- a/src/backend/postmaster/autovacuum.c
+++ b/src/backend/postmaster/autovacuum.c
@@ -93,6 +93,7 @@
#include "utils/lsyscache.h"
#include "utils/memutils.h"
#include "utils/ps_status.h"
+#include "utils/rel.h"
#include "utils/snapmgr.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
@@ -714,7 +715,7 @@ AutoVacLauncherMain(int argc, char *argv[])
worker->wi_links.next = (SHM_QUEUE *) AutoVacuumShmem->av_freeWorkers;
AutoVacuumShmem->av_freeWorkers = worker;
AutoVacuumShmem->av_startingWorker = NULL;
- elog(WARNING, "worker took too long to start; cancelled");
+ elog(WARNING, "worker took too long to start; canceled");
}
}
else
@@ -1461,7 +1462,7 @@ AutoVacWorkerMain(int argc, char *argv[])
pqsignal(SIGHUP, SIG_IGN);
/*
- * SIGINT is used to signal cancelling the current table's vacuum; SIGTERM
+ * SIGINT is used to signal canceling the current table's vacuum; SIGTERM
* means abort and exit cleanly, and SIGQUIT means abandon ship.
*/
pqsignal(SIGINT, StatementCancelHandler);
diff --git a/src/backend/postmaster/bgwriter.c b/src/backend/postmaster/bgwriter.c
index 1f4ac93d8d..5643ec821a 100644
--- a/src/backend/postmaster/bgwriter.c
+++ b/src/backend/postmaster/bgwriter.c
@@ -1182,7 +1182,7 @@ CompactBgwriterRequestQueue()
* intervening FORGET_RELATION_FSYNC or FORGET_DATABASE_FSYNC request, so
* we do it this way. It would be possible to be even smarter if we made
* the code below understand the specific semantics of such requests (it
- * could blow away preceding entries that would end up being cancelled
+ * could blow away preceding entries that would end up being canceled
* anyhow), but it's not clear that the extra complexity would buy us
* anything.
*/
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 6572292a40..bd0039e262 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -58,8 +58,7 @@
* Error Reporting:
* Use write_stderr() only for reporting "interactive" errors
* (essentially, bogus arguments on the command line). Once the
- * postmaster is launched, use ereport(). In particular, don't use
- * write_stderr() for anything that occurs after pmdaemonize.
+ * postmaster is launched, use ereport().
*
*-------------------------------------------------------------------------
*/
@@ -192,7 +191,6 @@ static int SendStop = false;
/* still more option variables */
bool EnableSSL = false;
-bool SilentMode = false; /* silent_mode */
int PreAuthDelay = 0;
int AuthenticationTimeout = 60;
@@ -326,7 +324,6 @@ static DNSServiceRef bonjour_sdref = NULL;
*/
static void getInstallationPaths(const char *argv0);
static void checkDataDir(void);
-static void pmdaemonize(void);
static Port *ConnCreate(int serverFd);
static void ConnFree(Port *port);
static void reset_shared(int port);
@@ -766,7 +763,7 @@ PostmasterMain(int argc, char *argv[])
char **p;
ereport(DEBUG3,
- (errmsg_internal("%s: PostmasterMain: initial environ dump:",
+ (errmsg_internal("%s: PostmasterMain: initial environment dump:",
progname)));
ereport(DEBUG3,
(errmsg_internal("-----------------------------------------")));
@@ -778,15 +775,6 @@ PostmasterMain(int argc, char *argv[])
}
/*
- * Fork away from controlling terminal, if silent_mode specified.
- *
- * Must do this before we grab any interlock files, else the interlocks
- * will show the wrong PID.
- */
- if (SilentMode)
- pmdaemonize();
-
- /*
* Create lockfile for data directory.
*
* We want to do this before we try to grab the input sockets, because the
@@ -1270,105 +1258,6 @@ checkDataDir(void)
FreeFile(fp);
}
-
-/*
- * Fork away from the controlling terminal (silent_mode option)
- *
- * Since this requires disconnecting from stdin/stdout/stderr (in case they're
- * linked to the terminal), we re-point stdin to /dev/null and stdout/stderr
- * to "postmaster.log" in the data directory, where we're already chdir'd.
- */
-static void
-pmdaemonize(void)
-{
-#ifndef WIN32
- const char *pmlogname = "postmaster.log";
- int dvnull;
- int pmlog;
- pid_t pid;
- int res;
-
- /*
- * Make sure we can open the files we're going to redirect to. If this
- * fails, we want to complain before disconnecting. Mention the full path
- * of the logfile in the error message, even though we address it by
- * relative path.
- */
- dvnull = open(DEVNULL, O_RDONLY, 0);
- if (dvnull < 0)
- {
- write_stderr("%s: could not open file \"%s\": %s\n",
- progname, DEVNULL, strerror(errno));
- ExitPostmaster(1);
- }
- pmlog = open(pmlogname, O_CREAT | O_WRONLY | O_APPEND, S_IRUSR | S_IWUSR);
- if (pmlog < 0)
- {
- write_stderr("%s: could not open log file \"%s/%s\": %s\n",
- progname, DataDir, pmlogname, strerror(errno));
- ExitPostmaster(1);
- }
-
- /*
- * Okay to fork.
- */
- pid = fork_process();
- if (pid == (pid_t) -1)
- {
- write_stderr("%s: could not fork background process: %s\n",
- progname, strerror(errno));
- ExitPostmaster(1);
- }
- else if (pid)
- { /* parent */
- /* Parent should just exit, without doing any atexit cleanup */
- _exit(0);
- }
-
- MyProcPid = PostmasterPid = getpid(); /* reset PID vars to child */
-
- MyStartTime = time(NULL);
-
- /*
- * Some systems use setsid() to dissociate from the TTY's process group,
- * while on others it depends on stdin/stdout/stderr. Do both if
- * possible.
- */
-#ifdef HAVE_SETSID
- if (setsid() < 0)
- {
- write_stderr("%s: could not dissociate from controlling TTY: %s\n",
- progname, strerror(errno));
- ExitPostmaster(1);
- }
-#endif
-
- /*
- * Reassociate stdin/stdout/stderr. fork_process() cleared any pending
- * output, so this should be safe. The only plausible error is EINTR,
- * which just means we should retry.
- */
- do
- {
- res = dup2(dvnull, 0);
- } while (res < 0 && errno == EINTR);
- close(dvnull);
- do
- {
- res = dup2(pmlog, 1);
- } while (res < 0 && errno == EINTR);
- do
- {
- res = dup2(pmlog, 2);
- } while (res < 0 && errno == EINTR);
- close(pmlog);
-#else /* WIN32 */
- /* not supported */
- elog(FATAL, "silent_mode is not supported under Windows");
-#endif /* WIN32 */
-}
-
-
/*
* Main idle loop of postmaster
*/
diff --git a/src/backend/replication/Makefile b/src/backend/replication/Makefile
index 3fe490e580..9d9ec87c9a 100644
--- a/src/backend/replication/Makefile
+++ b/src/backend/replication/Makefile
@@ -12,6 +12,8 @@ subdir = src/backend/replication
top_builddir = ../../..
include $(top_builddir)/src/Makefile.global
+override CPPFLAGS := -I$(srcdir) $(CPPFLAGS)
+
OBJS = walsender.o walreceiverfuncs.o walreceiver.o basebackup.o \
repl_gram.o syncrep.o
diff --git a/src/backend/replication/syncrep.c b/src/backend/replication/syncrep.c
index 08a40866f0..2b52d1616b 100644
--- a/src/backend/replication/syncrep.c
+++ b/src/backend/replication/syncrep.c
@@ -202,7 +202,7 @@ SyncRepWaitForLSN(XLogRecPtr XactCommitLSN)
* is not true: it's already committed locally. The former is no good
* either: the client has requested synchronous replication, and is
* entitled to assume that an acknowledged commit is also replicated,
- * which may not be true. So in this case we issue a WARNING (which
+ * which might not be true. So in this case we issue a WARNING (which
* some clients may be able to interpret) and shut off further output.
* We do NOT reset ProcDiePending, so that the process will die after
* the commit is cleaned up.
@@ -212,7 +212,7 @@ SyncRepWaitForLSN(XLogRecPtr XactCommitLSN)
ereport(WARNING,
(errcode(ERRCODE_ADMIN_SHUTDOWN),
errmsg("canceling the wait for synchronous replication and terminating connection due to administrator command"),
- errdetail("The transaction has already committed locally, but may not have been replicated to the standby.")));
+ errdetail("The transaction has already committed locally, but might not have been replicated to the standby.")));
whereToSendOutput = DestNone;
SyncRepCancelWait();
break;
@@ -229,7 +229,7 @@ SyncRepWaitForLSN(XLogRecPtr XactCommitLSN)
QueryCancelPending = false;
ereport(WARNING,
(errmsg("canceling wait for synchronous replication due to user request"),
- errdetail("The transaction has already committed locally, but may not have been replicated to the standby.")));
+ errdetail("The transaction has already committed locally, but might not have been replicated to the standby.")));
SyncRepCancelWait();
break;
}
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c
index 6ef20a5bb5..84b5037bb3 100644
--- a/src/backend/rewrite/rewriteHandler.c
+++ b/src/backend/rewrite/rewriteHandler.c
@@ -16,6 +16,7 @@
#include "access/heapam.h"
#include "access/sysattr.h"
#include "catalog/pg_type.h"
+#include "commands/trigger.h"
#include "nodes/makefuncs.h"
#include "nodes/nodeFuncs.h"
#include "parser/analyze.h"
@@ -26,7 +27,7 @@
#include "rewrite/rewriteManip.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
-#include "commands/trigger.h"
+#include "utils/rel.h"
/* We use a list of these to detect recursion in RewriteQuery */
diff --git a/src/backend/rewrite/rewriteSupport.c b/src/backend/rewrite/rewriteSupport.c
index 7770d032b1..4d6f508e0b 100644
--- a/src/backend/rewrite/rewriteSupport.c
+++ b/src/backend/rewrite/rewriteSupport.c
@@ -132,7 +132,8 @@ get_rewrite_oid(Oid relid, const char *rulename, bool missing_ok)
* were unique across the entire database.
*/
Oid
-get_rewrite_oid_without_relid(const char *rulename, Oid *reloid)
+get_rewrite_oid_without_relid(const char *rulename,
+ Oid *reloid, bool missing_ok)
{
Relation RewriteRelation;
HeapScanDesc scanDesc;
@@ -151,20 +152,26 @@ get_rewrite_oid_without_relid(const char *rulename, Oid *reloid)
htup = heap_getnext(scanDesc, ForwardScanDirection);
if (!HeapTupleIsValid(htup))
- ereport(ERROR,
- (errcode(ERRCODE_UNDEFINED_OBJECT),
- errmsg("rule \"%s\" does not exist", rulename)));
-
- ruleoid = HeapTupleGetOid(htup);
- if (reloid != NULL)
- *reloid = ((Form_pg_rewrite) GETSTRUCT(htup))->ev_class;
-
- if (HeapTupleIsValid(htup = heap_getnext(scanDesc, ForwardScanDirection)))
- ereport(ERROR,
- (errcode(ERRCODE_DUPLICATE_OBJECT),
- errmsg("there are multiple rules named \"%s\"", rulename),
- errhint("Specify a relation name as well as a rule name.")));
-
+ {
+ if (!missing_ok)
+ ereport(ERROR,
+ (errcode(ERRCODE_UNDEFINED_OBJECT),
+ errmsg("rule \"%s\" does not exist", rulename)));
+ ruleoid = InvalidOid;
+ }
+ else
+ {
+ ruleoid = HeapTupleGetOid(htup);
+ if (reloid != NULL)
+ *reloid = ((Form_pg_rewrite) GETSTRUCT(htup))->ev_class;
+
+ htup = heap_getnext(scanDesc, ForwardScanDirection);
+ if (HeapTupleIsValid(htup))
+ ereport(ERROR,
+ (errcode(ERRCODE_DUPLICATE_OBJECT),
+ errmsg("there are multiple rules named \"%s\"", rulename),
+ errhint("Specify a relation name as well as a rule name.")));
+ }
heap_endscan(scanDesc);
heap_close(RewriteRelation, AccessShareLock);
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index 5eb6186343..5420dbe61a 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -2465,7 +2465,7 @@ LockBufferForCleanup(Buffer buffer)
/*
* Check called from RecoveryConflictInterrupt handler when Startup
- * process requests cancelation of all pin holders that are blocking it.
+ * process requests cancellation of all pin holders that are blocking it.
*/
bool
HoldingBufferPinThatDelaysRecovery(void)
diff --git a/src/backend/storage/lmgr/README-SSI b/src/backend/storage/lmgr/README-SSI
index 003da16667..a9dc01f237 100644
--- a/src/backend/storage/lmgr/README-SSI
+++ b/src/backend/storage/lmgr/README-SSI
@@ -3,11 +3,11 @@ src/backend/storage/lmgr/README-SSI
Serializable Snapshot Isolation (SSI) and Predicate Locking
===========================================================
-This is currently sitting in the lmgr directory because about 90% of
-the code is an implementation of predicate locking, which is required
-for SSI, rather than being directly related to SSI itself. When
-another use for predicate locking justifies the effort to tease these
-two things apart, this README file should probably be split.
+This code is in the lmgr directory because about 90% of it is an
+implementation of predicate locking, which is required for SSI,
+rather than being directly related to SSI itself. When another use
+for predicate locking justifies the effort to tease these two things
+apart, this README file should probably be split.
Credits
@@ -151,11 +151,11 @@ transactions.
SSI Algorithm
-------------
-Serializable transaction in PostgreSQL are implemented using
+As of 9.1, serializable transactions in PostgreSQL are implemented using
Serializable Snapshot Isolation (SSI), based on the work of Cahill
et al. Fundamentally, this allows snapshot isolation to run as it
-has, while monitoring for conditions which could create a serialization
-anomaly.
+previously did, while monitoring for conditions which could create a
+serialization anomaly.
SSI is based on the observation [2] that each snapshot isolation
anomaly corresponds to a cycle that contains a "dangerous structure"
@@ -168,8 +168,10 @@ SSI works by watching for this dangerous structure, and rolling
back a transaction when needed to prevent any anomaly. This means it
only needs to track rw-conflicts between concurrent transactions, not
wr- and ww-dependencies. It also means there is a risk of false
-positives, because not every dangerous structure corresponds to an
-actual serialization failure.
+positives, because not every dangerous structure is embedded in an
+actual cycle. The number of false positives is low in practice, so
+this represents an acceptable tradeoff for keeping the detection
+overhead low.
The PostgreSQL implementation uses two additional optimizations:
@@ -182,11 +184,12 @@ The PostgreSQL implementation uses two additional optimizations:
one. Proof:
- Because there is a cycle, there must be some transaction T0 that
- precedes Tin in the serial order. (T0 might be the same as Tout).
+ precedes Tin in the cycle. (T0 might be the same as Tout.)
- - The dependency between T0 and Tin can't be a rw-conflict,
+ - The edge between T0 and Tin can't be a rw-conflict or ww-dependency,
because Tin was read-only, so it must be a wr-dependency.
- Those can only occur if T0 committed before Tin started.
+ Those can only occur if T0 committed before Tin took its snapshot,
+ else Tin would have ignored T0's output.
- Because Tout must commit before any other transaction in the
cycle, it must commit before T0 commits -- and thus before Tin
@@ -236,9 +239,9 @@ serialization anomalies will fail with SQLSTATE 40001, which has a
standard meaning of "serialization failure".
* This SSI implementation makes an effort to choose the
-transaction to be cancelled such that an immediate retry of the
+transaction to be canceled such that an immediate retry of the
transaction will not fail due to conflicts with exactly the same
-transactions. Pursuant to this goal, no transaction is cancelled
+transactions. Pursuant to this goal, no transaction is canceled
until one of the other transactions in the set of conflicts which
could generate an anomaly has successfully committed. This is
conceptually similar to how write conflicts are handled. To fully
@@ -258,8 +261,8 @@ full serializable transactions under either strategy. Practical
implementations of predicate locking generally involve acquiring
locks against data as it is accessed, using multiple granularities
(tuple, page, table, etc.) with escalation as needed to keep the lock
-count to a number which can be tracked within RAM structures, and
-this was used in PostgreSQL. Coarse granularities can cause some
+count to a number which can be tracked within RAM structures. This
+approach was used in PostgreSQL. Coarse granularities can cause some
false positive indications of conflict. The number of false positives
can be influenced by plan choice.
@@ -276,7 +279,7 @@ Hellerstein, Stonebraker and Hamilton paper [3], along with the
locking papers referenced from that and the Cahill papers.
Because the SIREAD locks don't block, traditional locking techniques
-were be modified. Intent locking (locking higher level objects
+have to be modified. Intent locking (locking higher level objects
before locking lower level objects) doesn't work with non-blocking
"locks" (which are, in some respects, more like flags than locks).
@@ -284,10 +287,10 @@ A configurable amount of shared memory is reserved at postmaster
start-up to track predicate locks. This size cannot be changed
without a restart.
- * To prevent resource exhaustion, multiple fine-grained locks may
+To prevent resource exhaustion, multiple fine-grained locks may
be promoted to a single coarser-grained lock as needed.
- * An attempt to acquire an SIREAD lock on a tuple when the same
+An attempt to acquire an SIREAD lock on a tuple when the same
transaction already holds an SIREAD lock on the page or the relation
will be ignored. Likewise, an attempt to lock a page when the
relation is locked will be ignored, and the acquisition of a coarser
@@ -306,8 +309,8 @@ Predicate locks will be acquired for the heap based on the following:
will be locked, whether or not it meets selection criteria; except
that there is no need to acquire an SIREAD lock on a tuple when the
transaction already holds a write lock on any tuple representing the
-row, since a rw-dependency would also create a ww-dependency which
-has more aggressive enforcement and will thus prevent any anomaly.
+row, since a rw-conflict would also create a ww-dependency which
+has more aggressive enforcement and thus will prevent any anomaly.
* Modifying a heap tuple creates a rw-conflict with any transaction
that holds a SIREAD lock on that tuple, or on the page or relation
@@ -341,13 +344,13 @@ need not generate a conflict, although an update which "moves" a row
into the scan must generate a conflict. While correctness allows
false positives, they should be minimized for performance reasons.
-Several optimizations are possible, though not all implemented yet:
+Several optimizations are possible, though not all are implemented yet:
* An index scan which is just finding the right position for an
-index insertion or deletion needs not acquire a predicate lock.
+index insertion or deletion need not acquire a predicate lock.
* An index scan which is comparing for equality on the entire key
-for a unique index needs not acquire a predicate lock as long as a key
+for a unique index need not acquire a predicate lock as long as a key
is found corresponding to a visible tuple which has not been modified
by another transaction -- there are no "between or around" gaps to
cover.
@@ -362,6 +365,9 @@ x = 1 AND x = 2), then no predicate lock is needed.
Other index AM implementation considerations:
+ * For an index AM that doesn't have support for predicate locking,
+we just acquire a predicate lock on the whole index for any search.
+
* B-tree index searches acquire predicate locks only on the
index *leaf* pages needed to lock the appropriate index range. If,
however, a search discovers that no root page has yet been created, a
@@ -395,8 +401,8 @@ tracking SIREAD locks.
any length of time; lock information is written to the tuples
involved in the transactions.
* In PostgreSQL, existing lock structures have pointers to
-memory which is related to a connection. SIREAD locks need to persist
-past the end of the originating transaction and even the connection
+memory which is related to a session. SIREAD locks need to persist
+past the end of the originating transaction and even the session
which ran it.
* PostgreSQL needs to be able to tolerate a large number of
transactions executing while one long-running transaction stays open
@@ -411,7 +417,8 @@ isolation level distinct from snapshot isolation.
in the papers.
5. PostgreSQL doesn't assign a transaction number to a database
-transaction until and unless necessary.
+transaction until and unless necessary (normally, when the transaction
+attempts to modify data).
6. PostgreSQL has pluggable data types with user-definable
operators, as well as pluggable index types, not all of which are
@@ -453,42 +460,46 @@ versions of the row, based on the following proof that any additional
serialization failures we would get from that would be false
positives:
- o If transaction T1 reads a row (thus acquiring a predicate
-lock on it) and a second transaction T2 updates that row, must a
-third transaction T3 which updates the new version of the row have a
-rw-conflict in from T1 to prevent anomalies? In other words, does it
-matter whether this edge T1 -> T3 is there?
+ o If transaction T1 reads a row version (thus acquiring a
+predicate lock on it) and a second transaction T2 updates that row
+version (thus creating a rw-conflict graph edge from T1 to T2), must a
+third transaction T3 which re-updates the new version of the row also
+have a rw-conflict in from T1 to prevent anomalies? In other words,
+does it matter whether we recognize the edge T1 -> T3?
o If T1 has a conflict in, it certainly doesn't. Adding the
edge T1 -> T3 would create a dangerous structure, but we already had
-one from the edge T1 -> T2, so we would have aborted something
-anyway.
+one from the edge T1 -> T2, so we would have aborted something anyway.
+(T2 has already committed, else T3 could not have updated its output;
+but we would have aborted either T1 or T1's predecessor(s). Hence
+no cycle involving T1 and T3 can survive.)
o Now let's consider the case where T1 doesn't have a
-conflict in. If that's the case, for this edge T1 -> T3 to make a
-difference, T3 must have a rw-conflict out that induces a cycle in
-the dependency graph, i.e. a conflict out to some transaction
-preceding T1 in the serial order. (A conflict out to T1 would work
-too, but that would mean T1 has a conflict in and we would have
-rolled back.)
+rw-conflict in. If that's the case, for this edge T1 -> T3 to make a
+difference, T3 must have a rw-conflict out that induces a cycle in the
+dependency graph, i.e. a conflict out to some transaction preceding T1
+in the graph. (A conflict out to T1 itself would be problematic too,
+but that would mean T1 has a conflict in, the case we already
+eliminated.)
o So now we're trying to figure out if there can be an
rw-conflict edge T3 -> T0, where T0 is some transaction that precedes
-T1. For T0 to precede T1, there has to be has to be some edge, or
-sequence of edges, from T0 to T1. At least the last edge has to be a
-wr-dependency or ww-dependency rather than a rw-conflict, because T1
-doesn't have a rw-conflict in. And that gives us enough information
-about the order of transactions to see that T3 can't have a
-rw-dependency to T0:
+T1. For T0 to precede T1, there has to be some edge, or sequence of
+edges, from T0 to T1. At least the last edge has to be a wr-dependency
+or ww-dependency rather than a rw-conflict, because T1 doesn't have a
+rw-conflict in. And that gives us enough information about the order
+of transactions to see that T3 can't have a rw-conflict to T0:
- T0 committed before T1 started (the wr/ww-dependency implies this)
- T1 started before T2 committed (the T1->T2 rw-conflict implies this)
- - T2 committed before T3 started (otherwise, T3 would be aborted
+ - T2 committed before T3 started (otherwise, T3 would get aborted
because of an update conflict)
o That means T0 committed before T3 started, and therefore
there can't be a rw-conflict from T3 to T0.
- o In both cases, we didn't need the T1 -> T3 edge.
+ o So in all cases, we don't need the T1 -> T3 edge to
+recognize cycles. Therefore it's not necessary for T1's SIREAD lock
+on the original tuple version to cover later versions as well.
* Predicate locking in PostgreSQL starts at the tuple level
when possible. Multiple fine-grained locks are promoted to a single
@@ -520,10 +531,12 @@ NULL to indicate no conflict and a self-reference to indicate
multiple conflicts or conflicts with committed transactions, we use a
list of rw-conflicts. With the more complete information, false
positives are reduced and we have sufficient data for more aggressive
-clean-up and other optimizations.
+clean-up and other optimizations:
+
o We can avoid ever rolling back a transaction until and
unless there is a pivot where a transaction on the conflict *out*
side of the pivot committed before either of the other transactions.
+
o We can avoid ever rolling back a transaction when the
transaction on the conflict *in* side of the pivot is explicitly or
implicitly READ ONLY unless the transaction on the conflict *out*
@@ -531,6 +544,7 @@ side of the pivot committed before the READ ONLY transaction acquired
its snapshot. (An implicit READ ONLY transaction is one which
committed without writing, even though it was not explicitly declared
to be READ ONLY.)
+
o We can more aggressively clean up conflicts, predicate
locks, and SSI transaction information.
@@ -543,7 +557,7 @@ overlapping transaction dependencies.
until the conditions are right for it to start in the "opt out" state
described above. We add a DEFERRABLE state to transactions, which is
specified and maintained in a way similar to READ ONLY. It is
-ignored for transactions which are not SERIALIZABLE and READ ONLY.
+ignored for transactions that are not SERIALIZABLE and READ ONLY.
* When a transaction must be rolled back, we pick among the
active transactions such that an immediate retry will not fail again
@@ -553,7 +567,7 @@ on conflicts with the same transactions.
information about older committed transactions to put an upper bound
on RAM used. Beyond that limit, information spills to disk.
Performance can degrade in a pessimal situation, but it should be
-tolerable, and transactions won't need to be cancelled or blocked
+tolerable, and transactions won't need to be canceled or blocked
from starting.
@@ -593,8 +607,8 @@ might never be touched, or should we keep adding returned items to
the end of the available list?
-Footnotes
----------
+References
+----------
[1] http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt
Search for serial execution to find the relevant section.
diff --git a/src/backend/storage/lmgr/deadlock.c b/src/backend/storage/lmgr/deadlock.c
index 980042b6af..837f0296c6 100644
--- a/src/backend/storage/lmgr/deadlock.c
+++ b/src/backend/storage/lmgr/deadlock.c
@@ -535,7 +535,7 @@ FindLockCycleRecurse(PGPROC *checkProc,
* Note we read vacuumFlags without any locking. This is
* OK only for checking the PROC_IS_AUTOVACUUM flag,
* because that flag is set at process start and never
- * reset; there is logic elsewhere to avoid cancelling an
+ * reset; there is logic elsewhere to avoid canceling an
* autovacuum that is working for preventing Xid
* wraparound problems (which needs to read a different
* vacuumFlag bit), but we don't do that here to avoid
diff --git a/src/backend/storage/lmgr/predicate.c b/src/backend/storage/lmgr/predicate.c
index 3678878f03..1707a74664 100644
--- a/src/backend/storage/lmgr/predicate.c
+++ b/src/backend/storage/lmgr/predicate.c
@@ -246,6 +246,7 @@
#define SxactIsCommitted(sxact) (((sxact)->flags & SXACT_FLAG_COMMITTED) != 0)
#define SxactIsPrepared(sxact) (((sxact)->flags & SXACT_FLAG_PREPARED) != 0)
+#define SxactIsRolledBack(sxact) (((sxact)->flags & SXACT_FLAG_ROLLED_BACK) != 0)
#define SxactIsDoomed(sxact) (((sxact)->flags & SXACT_FLAG_DOOMED) != 0)
#define SxactIsReadOnly(sxact) (((sxact)->flags & SXACT_FLAG_READ_ONLY) != 0)
#define SxactHasSummaryConflictIn(sxact) (((sxact)->flags & SXACT_FLAG_SUMMARY_CONFLICT_IN) != 0)
@@ -419,11 +420,11 @@ static void CreatePredicateLock(const PREDICATELOCKTARGETTAG *targettag,
uint32 targettaghash,
SERIALIZABLEXACT *sxact);
static void DeleteLockTarget(PREDICATELOCKTARGET *target, uint32 targettaghash);
-static bool TransferPredicateLocksToNewTarget(const PREDICATELOCKTARGETTAG oldtargettag,
- const PREDICATELOCKTARGETTAG newtargettag,
+static bool TransferPredicateLocksToNewTarget(PREDICATELOCKTARGETTAG oldtargettag,
+ PREDICATELOCKTARGETTAG newtargettag,
bool removeOld);
static void PredicateLockAcquire(const PREDICATELOCKTARGETTAG *targettag);
-static void DropAllPredicateLocksFromTable(const Relation relation,
+static void DropAllPredicateLocksFromTable(Relation relation,
bool transfer);
static void SetNewSxactGlobalXmin(void);
static void ClearOldPredicateLocks(void);
@@ -881,7 +882,7 @@ OldSerXidAdd(TransactionId xid, SerCommitSeqNo minConflictCommitSeqNo)
oldSerXidControl->warningIssued = true;
ereport(WARNING,
(errmsg("memory for serializable conflict tracking is nearly exhausted"),
- errhint("There may be an idle transaction or a forgotten prepared transaction causing this.")));
+ errhint("There might be an idle transaction or a forgotten prepared transaction causing this.")));
}
}
@@ -1698,7 +1699,7 @@ RegisterSerializableTransactionInt(Snapshot snapshot)
* Also store it for easy reference in MySerializableXact.
*/
void
-RegisterPredicateLockingXid(const TransactionId xid)
+RegisterPredicateLockingXid(TransactionId xid)
{
SERIALIZABLEXIDTAG sxidtag;
SERIALIZABLEXID *sxid;
@@ -1747,7 +1748,7 @@ RegisterPredicateLockingXid(const TransactionId xid)
* One use is to support proper behavior during GiST index vacuum.
*/
bool
-PageIsPredicateLocked(const Relation relation, const BlockNumber blkno)
+PageIsPredicateLocked(Relation relation, BlockNumber blkno)
{
PREDICATELOCKTARGETTAG targettag;
uint32 targettaghash;
@@ -2309,7 +2310,7 @@ PredicateLockAcquire(const PREDICATELOCKTARGETTAG *targettag)
* Clear any finer-grained predicate locks this session has on the relation.
*/
void
-PredicateLockRelation(const Relation relation, const Snapshot snapshot)
+PredicateLockRelation(Relation relation, Snapshot snapshot)
{
PREDICATELOCKTARGETTAG tag;
@@ -2332,8 +2333,7 @@ PredicateLockRelation(const Relation relation, const Snapshot snapshot)
* Clear any finer-grained predicate locks this session has on the relation.
*/
void
-PredicateLockPage(const Relation relation, const BlockNumber blkno,
- const Snapshot snapshot)
+PredicateLockPage(Relation relation, BlockNumber blkno, Snapshot snapshot)
{
PREDICATELOCKTARGETTAG tag;
@@ -2355,8 +2355,7 @@ PredicateLockPage(const Relation relation, const BlockNumber blkno,
* Skip if this is a temporary table.
*/
void
-PredicateLockTuple(const Relation relation, const HeapTuple tuple,
- const Snapshot snapshot)
+PredicateLockTuple(Relation relation, HeapTuple tuple, Snapshot snapshot)
{
PREDICATELOCKTARGETTAG tag;
ItemPointer tid;
@@ -2494,8 +2493,8 @@ DeleteLockTarget(PREDICATELOCKTARGET *target, uint32 targettaghash)
* Caller must hold SerializablePredicateLockListLock.
*/
static bool
-TransferPredicateLocksToNewTarget(const PREDICATELOCKTARGETTAG oldtargettag,
- const PREDICATELOCKTARGETTAG newtargettag,
+TransferPredicateLocksToNewTarget(PREDICATELOCKTARGETTAG oldtargettag,
+ PREDICATELOCKTARGETTAG newtargettag,
bool removeOld)
{
uint32 oldtargettaghash;
@@ -2614,14 +2613,13 @@ TransferPredicateLocksToNewTarget(const PREDICATELOCKTARGETTAG oldtargettag,
Assert(found);
}
-
newpredlock = (PREDICATELOCK *)
- hash_search_with_hash_value
- (PredicateLockHash,
- &newpredlocktag,
- PredicateLockHashCodeFromTargetHashCode(&newpredlocktag,
- newtargettaghash),
- HASH_ENTER_NULL, &found);
+ hash_search_with_hash_value(PredicateLockHash,
+ &newpredlocktag,
+ PredicateLockHashCodeFromTargetHashCode(&newpredlocktag,
+ newtargettaghash),
+ HASH_ENTER_NULL,
+ &found);
if (!newpredlock)
{
/* Out of shared memory. Undo what we've done so far. */
@@ -2711,7 +2709,7 @@ exit:
* transaction which executed DROP TABLE, the false condition will be useful.
*/
static void
-DropAllPredicateLocksFromTable(const Relation relation, bool transfer)
+DropAllPredicateLocksFromTable(Relation relation, bool transfer)
{
HASH_SEQ_STATUS seqstat;
PREDICATELOCKTARGET *oldtarget;
@@ -2857,12 +2855,12 @@ DropAllPredicateLocksFromTable(const Relation relation, bool transfer)
newpredlocktag.myTarget = heaptarget;
newpredlocktag.myXact = oldXact;
newpredlock = (PREDICATELOCK *)
- hash_search_with_hash_value
- (PredicateLockHash,
- &newpredlocktag,
- PredicateLockHashCodeFromTargetHashCode(&newpredlocktag,
- heaptargettaghash),
- HASH_ENTER, &found);
+ hash_search_with_hash_value(PredicateLockHash,
+ &newpredlocktag,
+ PredicateLockHashCodeFromTargetHashCode(&newpredlocktag,
+ heaptargettaghash),
+ HASH_ENTER,
+ &found);
if (!found)
{
SHMQueueInsertBefore(&(heaptarget->predicateLocks),
@@ -2907,7 +2905,7 @@ DropAllPredicateLocksFromTable(const Relation relation, bool transfer)
* relation to a single relation lock on the heap.
*/
void
-TransferPredicateLocksToHeapRelation(const Relation relation)
+TransferPredicateLocksToHeapRelation(Relation relation)
{
DropAllPredicateLocksFromTable(relation, true);
}
@@ -2928,8 +2926,8 @@ TransferPredicateLocksToHeapRelation(const Relation relation)
* which hold the locks getting in and noticing.
*/
void
-PredicateLockPageSplit(const Relation relation, const BlockNumber oldblkno,
- const BlockNumber newblkno)
+PredicateLockPageSplit(Relation relation, BlockNumber oldblkno,
+ BlockNumber newblkno)
{
PREDICATELOCKTARGETTAG oldtargettag;
PREDICATELOCKTARGETTAG newtargettag;
@@ -3013,8 +3011,8 @@ PredicateLockPageSplit(const Relation relation, const BlockNumber oldblkno,
* occurs in the context of another transaction isolation level.
*/
void
-PredicateLockPageCombine(const Relation relation, const BlockNumber oldblkno,
- const BlockNumber newblkno)
+PredicateLockPageCombine(Relation relation, BlockNumber oldblkno,
+ BlockNumber newblkno)
{
/*
* Page combines differ from page splits in that we ought to be able to
@@ -3046,7 +3044,7 @@ SetNewSxactGlobalXmin(void)
for (sxact = FirstPredXact(); sxact != NULL; sxact = NextPredXact(sxact))
{
- if (!SxactIsDoomed(sxact)
+ if (!SxactIsRolledBack(sxact)
&& !SxactIsCommitted(sxact)
&& sxact != OldCommittedSxact)
{
@@ -3085,7 +3083,7 @@ SetNewSxactGlobalXmin(void)
* holding locks.
*/
void
-ReleasePredicateLocks(const bool isCommit)
+ReleasePredicateLocks(bool isCommit)
{
bool needToClear;
RWConflict conflict,
@@ -3113,6 +3111,7 @@ ReleasePredicateLocks(const bool isCommit)
Assert(!isCommit || SxactIsPrepared(MySerializableXact));
Assert(!isCommit || !SxactIsDoomed(MySerializableXact));
Assert(!SxactIsCommitted(MySerializableXact));
+ Assert(!SxactIsRolledBack(MySerializableXact));
/* may not be serializable during COMMIT/ROLLBACK PREPARED */
if (MySerializableXact->pid != 0)
@@ -3151,7 +3150,22 @@ ReleasePredicateLocks(const bool isCommit)
MySerializableXact->flags |= SXACT_FLAG_READ_ONLY;
}
else
+ {
+ /*
+ * The DOOMED flag indicates that we intend to roll back this
+ * transaction and so it should not cause serialization failures for
+ * other transactions that conflict with it. Note that this flag might
+ * already be set, if another backend marked this transaction for
+ * abort.
+ *
+ * The ROLLED_BACK flag further indicates that ReleasePredicateLocks
+ * has been called, and so the SerializableXact is eligible for
+ * cleanup. This means it should not be considered when calculating
+ * SxactGlobalXmin.
+ */
MySerializableXact->flags |= SXACT_FLAG_DOOMED;
+ MySerializableXact->flags |= SXACT_FLAG_ROLLED_BACK;
+ }
if (!topLevelIsDeclaredReadOnly)
{
@@ -3527,7 +3541,7 @@ ReleaseOneSerializableXact(SERIALIZABLEXACT *sxact, bool partial,
nextConflict;
Assert(sxact != NULL);
- Assert(SxactIsDoomed(sxact) || SxactIsCommitted(sxact));
+ Assert(SxactIsRolledBack(sxact) || SxactIsCommitted(sxact));
Assert(LWLockHeldByMe(SerializableFinishedListLock));
/*
@@ -3719,9 +3733,9 @@ XidIsConcurrent(TransactionId xid)
* currently no known reason to call this function from an index AM.
*/
void
-CheckForSerializableConflictOut(const bool visible, const Relation relation,
- const HeapTuple tuple, const Buffer buffer,
- const Snapshot snapshot)
+CheckForSerializableConflictOut(bool visible, Relation relation,
+ HeapTuple tuple, Buffer buffer,
+ Snapshot snapshot)
{
TransactionId xid;
SERIALIZABLEXIDTAG sxidtag;
@@ -3738,7 +3752,7 @@ CheckForSerializableConflictOut(const bool visible, const Relation relation,
ereport(ERROR,
(errcode(ERRCODE_T_R_SERIALIZATION_FAILURE),
errmsg("could not serialize access due to read/write dependencies among transactions"),
- errdetail("Cancelled on identification as a pivot, during conflict out checking."),
+ errdetail("Canceled on identification as a pivot, during conflict out checking."),
errhint("The transaction might succeed if retried.")));
}
@@ -3827,7 +3841,7 @@ CheckForSerializableConflictOut(const bool visible, const Relation relation,
ereport(ERROR,
(errcode(ERRCODE_T_R_SERIALIZATION_FAILURE),
errmsg("could not serialize access due to read/write dependencies among transactions"),
- errdetail("Cancelled on conflict out to old pivot %u.", xid),
+ errdetail("Canceled on conflict out to old pivot %u.", xid),
errhint("The transaction might succeed if retried.")));
if (SxactHasSummaryConflictIn(MySerializableXact)
@@ -3835,7 +3849,7 @@ CheckForSerializableConflictOut(const bool visible, const Relation relation,
ereport(ERROR,
(errcode(ERRCODE_T_R_SERIALIZATION_FAILURE),
errmsg("could not serialize access due to read/write dependencies among transactions"),
- errdetail("Cancelled on identification as a pivot, with conflict out to old committed transaction %u.", xid),
+ errdetail("Canceled on identification as a pivot, with conflict out to old committed transaction %u.", xid),
errhint("The transaction might succeed if retried.")));
MySerializableXact->flags |= SXACT_FLAG_SUMMARY_CONFLICT_OUT;
@@ -3858,7 +3872,7 @@ CheckForSerializableConflictOut(const bool visible, const Relation relation,
* We have a conflict out to a transaction which has a conflict out to a
* summarized transaction. That summarized transaction must have
* committed first, and we can't tell when it committed in relation to our
- * snapshot acquisition, so something needs to be cancelled.
+ * snapshot acquisition, so something needs to be canceled.
*/
if (SxactHasSummaryConflictOut(sxact))
{
@@ -3874,7 +3888,7 @@ CheckForSerializableConflictOut(const bool visible, const Relation relation,
ereport(ERROR,
(errcode(ERRCODE_T_R_SERIALIZATION_FAILURE),
errmsg("could not serialize access due to read/write dependencies among transactions"),
- errdetail("Cancelled on conflict out to old pivot."),
+ errdetail("Canceled on conflict out to old pivot."),
errhint("The transaction might succeed if retried.")));
}
}
@@ -4100,8 +4114,8 @@ CheckTargetForConflictsIn(PREDICATELOCKTARGETTAG *targettag)
* tuple itself.
*/
void
-CheckForSerializableConflictIn(const Relation relation, const HeapTuple tuple,
- const Buffer buffer)
+CheckForSerializableConflictIn(Relation relation, HeapTuple tuple,
+ Buffer buffer)
{
PREDICATELOCKTARGETTAG targettag;
@@ -4113,7 +4127,7 @@ CheckForSerializableConflictIn(const Relation relation, const HeapTuple tuple,
ereport(ERROR,
(errcode(ERRCODE_T_R_SERIALIZATION_FAILURE),
errmsg("could not serialize access due to read/write dependencies among transactions"),
- errdetail("Cancelled on identification as a pivot, during conflict in checking."),
+ errdetail("Canceled on identification as a pivot, during conflict in checking."),
errhint("The transaction might succeed if retried.")));
/*
@@ -4185,7 +4199,7 @@ CheckForSerializableConflictIn(const Relation relation, const HeapTuple tuple,
* lead to some false positives, but it doesn't seem worth the trouble.)
*/
void
-CheckTableForSerializableConflictIn(const Relation relation)
+CheckTableForSerializableConflictIn(Relation relation)
{
HASH_SEQ_STATUS seqstat;
PREDICATELOCKTARGET *target;
@@ -4445,7 +4459,7 @@ OnConflict_CheckForSerializationFailure(const SERIALIZABLEXACT *reader,
ereport(ERROR,
(errcode(ERRCODE_T_R_SERIALIZATION_FAILURE),
errmsg("could not serialize access due to read/write dependencies among transactions"),
- errdetail("Cancelled on identification as a pivot, during write."),
+ errdetail("Canceled on identification as a pivot, during write."),
errhint("The transaction might succeed if retried.")));
}
else if (SxactIsPrepared(writer))
@@ -4457,7 +4471,7 @@ OnConflict_CheckForSerializationFailure(const SERIALIZABLEXACT *reader,
ereport(ERROR,
(errcode(ERRCODE_T_R_SERIALIZATION_FAILURE),
errmsg("could not serialize access due to read/write dependencies among transactions"),
- errdetail("Cancelled on conflict out to pivot %u, during read.", writer->topXid),
+ errdetail("Canceled on conflict out to pivot %u, during read.", writer->topXid),
errhint("The transaction might succeed if retried.")));
}
writer->flags |= SXACT_FLAG_DOOMED;
@@ -4478,7 +4492,7 @@ OnConflict_CheckForSerializationFailure(const SERIALIZABLEXACT *reader,
* marked for death, because rolling back another transaction might mean
* that we flail without ever making progress. This transaction is
* committing writes, so letting it commit ensures progress. If we
- * cancelled the far conflict, it might immediately fail again on retry.
+ * canceled the far conflict, it might immediately fail again on retry.
*/
void
PreCommit_CheckForSerializationFailure(void)
@@ -4499,7 +4513,7 @@ PreCommit_CheckForSerializationFailure(void)
ereport(ERROR,
(errcode(ERRCODE_T_R_SERIALIZATION_FAILURE),
errmsg("could not serialize access due to read/write dependencies among transactions"),
- errdetail("Cancelled on identification as a pivot, during commit attempt."),
+ errdetail("Canceled on identification as a pivot, during commit attempt."),
errhint("The transaction might succeed if retried.")));
}
@@ -4525,6 +4539,21 @@ PreCommit_CheckForSerializationFailure(void)
&& !SxactIsReadOnly(farConflict->sxactOut)
&& !SxactIsDoomed(farConflict->sxactOut)))
{
+ /*
+ * Normally, we kill the pivot transaction to make sure we
+ * make progress if the failing transaction is retried.
+ * However, we can't kill it if it's already prepared, so
+ * in that case we commit suicide instead.
+ */
+ if (SxactIsPrepared(nearConflict->sxactOut))
+ {
+ LWLockRelease(SerializableXactHashLock);
+ ereport(ERROR,
+ (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE),
+ errmsg("could not serialize access due to read/write dependencies among transactions"),
+ errdetail("Canceled on commit attempt with conflict in from prepared pivot."),
+ errhint("The transaction might succeed if retried.")));
+ }
nearConflict->sxactOut->flags |= SXACT_FLAG_DOOMED;
break;
}
diff --git a/src/backend/storage/lmgr/proc.c b/src/backend/storage/lmgr/proc.c
index dd3e47c6b4..97fb6444ca 100644
--- a/src/backend/storage/lmgr/proc.c
+++ b/src/backend/storage/lmgr/proc.c
@@ -1324,7 +1324,7 @@ CheckDeadLock(void)
* the lock.
*
* If blocked by autovacuum, this wakeup will enable ProcSleep to send
- * the cancelling signal to the autovacuum worker.
+ * the canceling signal to the autovacuum worker.
*/
PGSemaphoreUnlock(&MyProc->sem);
}
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index a07661f02a..80d07f8f2d 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -179,7 +179,7 @@ static int UseNewLine = 1; /* Use newlines query delimiters (the default) */
static int UseNewLine = 0; /* Use EOF as query delimiters */
#endif /* TCOP_DONTUSENEWLINE */
-/* whether or not, and why, we were cancelled by conflict with recovery */
+/* whether or not, and why, we were canceled by conflict with recovery */
static bool RecoveryConflictPending = false;
static bool RecoveryConflictRetryable = true;
static ProcSignalReason RecoveryConflictReason;
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index 0559998c71..224e1f3761 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -820,6 +820,10 @@ standard_ProcessUtility(Node *parsetree,
stmt->name,
stmt->behavior);
break;
+ case 'V': /* VALIDATE CONSTRAINT */
+ AlterDomainValidateConstraint(stmt->typeName,
+ stmt->name);
+ break;
default: /* oops */
elog(ERROR, "unrecognized alter domain type: %d",
(int) stmt->subtype);
diff --git a/src/backend/utils/adt/ri_triggers.c b/src/backend/utils/adt/ri_triggers.c
index fa7b8e6e81..4b85b9b402 100644
--- a/src/backend/utils/adt/ri_triggers.c
+++ b/src/backend/utils/adt/ri_triggers.c
@@ -48,6 +48,7 @@
#include "utils/guc.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
#include "utils/snapmgr.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
index 00920f9eda..49dc9c88d5 100644
--- a/src/backend/utils/adt/ruleutils.c
+++ b/src/backend/utils/adt/ruleutils.c
@@ -52,8 +52,9 @@
#include "utils/builtins.h"
#include "utils/fmgroids.h"
#include "utils/lsyscache.h"
-#include "utils/tqual.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
+#include "utils/tqual.h"
#include "utils/typcache.h"
#include "utils/xml.h"
diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c
index 00ba19ec6c..10b73fb9fb 100644
--- a/src/backend/utils/adt/selfuncs.c
+++ b/src/backend/utils/adt/selfuncs.c
@@ -120,6 +120,7 @@
#include "utils/lsyscache.h"
#include "utils/nabstime.h"
#include "utils/pg_locale.h"
+#include "utils/rel.h"
#include "utils/selfuncs.h"
#include "utils/spccache.h"
#include "utils/syscache.h"
diff --git a/src/backend/utils/adt/trigfuncs.c b/src/backend/utils/adt/trigfuncs.c
index 86f81bb5be..474878de7d 100644
--- a/src/backend/utils/adt/trigfuncs.c
+++ b/src/backend/utils/adt/trigfuncs.c
@@ -16,6 +16,7 @@
#include "access/htup.h"
#include "commands/trigger.h"
#include "utils/builtins.h"
+#include "utils/rel.h"
/*
diff --git a/src/backend/utils/adt/tsvector_op.c b/src/backend/utils/adt/tsvector_op.c
index 66674917f0..181bfee9e3 100644
--- a/src/backend/utils/adt/tsvector_op.c
+++ b/src/backend/utils/adt/tsvector_op.c
@@ -25,6 +25,7 @@
#include "tsearch/ts_utils.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
typedef struct
diff --git a/src/backend/utils/adt/varchar.c b/src/backend/utils/adt/varchar.c
index 1c0ef921a7..efa483d638 100644
--- a/src/backend/utils/adt/varchar.c
+++ b/src/backend/utils/adt/varchar.c
@@ -18,6 +18,8 @@
#include "access/hash.h"
#include "access/tuptoaster.h"
#include "libpq/pqformat.h"
+#include "nodes/nodeFuncs.h"
+#include "parser/parse_clause.h"
#include "utils/array.h"
#include "utils/builtins.h"
#include "mb/pg_wchar.h"
@@ -549,6 +551,38 @@ varcharsend(PG_FUNCTION_ARGS)
/*
+ * Flatten calls to our length coercion function that leave the new maximum
+ * length >= the previous maximum length. We ignore the isExplicit argument,
+ * which only affects truncation.
+ */
+Datum
+varchar_transform(PG_FUNCTION_ARGS)
+{
+ FuncExpr *expr = (FuncExpr *) PG_GETARG_POINTER(0);
+ Node *typmod;
+ Node *ret = NULL;
+
+ if (!IsA(expr, FuncExpr))
+ PG_RETURN_POINTER(ret);
+
+ Assert(list_length(expr->args) == 3);
+ typmod = lsecond(expr->args);
+
+ if (IsA(typmod, Const))
+ {
+ Node *source = linitial(expr->args);
+ int32 new_typmod = DatumGetInt32(((Const *) typmod)->constvalue);
+ int32 old_max = exprTypmod(source) - VARHDRSZ;
+ int32 new_max = new_typmod - VARHDRSZ;
+
+ if (new_max < 0 || (old_max >= 0 && old_max <= new_max))
+ ret = relabel_to_typmod(source, new_typmod);
+ }
+
+ PG_RETURN_POINTER(ret);
+}
+
+/*
* Converts a VARCHAR type to the specified size.
*
* maxlen is the typmod, ie, declared length plus VARHDRSZ bytes.
diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c
index 9acbc2d4e5..d1113ed5d3 100644
--- a/src/backend/utils/adt/varlena.c
+++ b/src/backend/utils/adt/varlena.c
@@ -3937,7 +3937,7 @@ text_format_string_conversion(StringInfo buf, char conversion,
else if (conversion == 'I')
ereport(ERROR,
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
- errmsg("NULL cannot be escaped as an SQL identifier")));
+ errmsg("null values cannot be formatted as an SQL identifier")));
return;
}
diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c
index 702b9e3e9f..de1eb2af36 100644
--- a/src/backend/utils/adt/xml.c
+++ b/src/backend/utils/adt/xml.c
@@ -74,6 +74,7 @@
#include "utils/datetime.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/xml.h"
diff --git a/src/backend/utils/cache/lsyscache.c b/src/backend/utils/cache/lsyscache.c
index 28d18b0d32..326f1eee92 100644
--- a/src/backend/utils/cache/lsyscache.c
+++ b/src/backend/utils/cache/lsyscache.c
@@ -35,6 +35,7 @@
#include "utils/datum.h"
#include "utils/fmgroids.h"
#include "utils/lsyscache.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/typcache.h"
@@ -622,52 +623,30 @@ get_op_hash_functions(Oid opno,
/*
* get_op_btree_interpretation
* Given an operator's OID, find out which btree opfamilies it belongs to,
- * and what strategy number it has within each one. The results are
- * returned as an OID list and a parallel integer list.
+ * and what properties it has within each one. The results are returned
+ * as a palloc'd list of OpBtreeInterpretation structs.
*
* In addition to the normal btree operators, we consider a <> operator to be
* a "member" of an opfamily if its negator is an equality operator of the
* opfamily. ROWCOMPARE_NE is returned as the strategy number for this case.
*/
-void
-get_op_btree_interpretation(Oid opno, List **opfamilies, List **opstrats)
+List *
+get_op_btree_interpretation(Oid opno)
{
+ List *result = NIL;
+ OpBtreeInterpretation *thisresult;
CatCList *catlist;
- bool op_negated;
int i;
- *opfamilies = NIL;
- *opstrats = NIL;
-
/*
* Find all the pg_amop entries containing the operator.
*/
catlist = SearchSysCacheList1(AMOPOPID, ObjectIdGetDatum(opno));
- /*
- * If we can't find any opfamily containing the op, perhaps it is a <>
- * operator. See if it has a negator that is in an opfamily.
- */
- op_negated = false;
- if (catlist->n_members == 0)
- {
- Oid op_negator = get_negator(opno);
-
- if (OidIsValid(op_negator))
- {
- op_negated = true;
- ReleaseSysCacheList(catlist);
- catlist = SearchSysCacheList1(AMOPOPID,
- ObjectIdGetDatum(op_negator));
- }
- }
-
- /* Now search the opfamilies */
for (i = 0; i < catlist->n_members; i++)
{
HeapTuple op_tuple = &catlist->members[i]->tuple;
Form_pg_amop op_form = (Form_pg_amop) GETSTRUCT(op_tuple);
- Oid opfamily_id;
StrategyNumber op_strategy;
/* must be btree */
@@ -675,23 +654,66 @@ get_op_btree_interpretation(Oid opno, List **opfamilies, List **opstrats)
continue;
/* Get the operator's btree strategy number */
- opfamily_id = op_form->amopfamily;
op_strategy = (StrategyNumber) op_form->amopstrategy;
Assert(op_strategy >= 1 && op_strategy <= 5);
- if (op_negated)
+ thisresult = (OpBtreeInterpretation *)
+ palloc(sizeof(OpBtreeInterpretation));
+ thisresult->opfamily_id = op_form->amopfamily;
+ thisresult->strategy = op_strategy;
+ thisresult->oplefttype = op_form->amoplefttype;
+ thisresult->oprighttype = op_form->amoprighttype;
+ result = lappend(result, thisresult);
+ }
+
+ ReleaseSysCacheList(catlist);
+
+ /*
+ * If we didn't find any btree opfamily containing the operator, perhaps
+ * it is a <> operator. See if it has a negator that is in an opfamily.
+ */
+ if (result == NIL)
+ {
+ Oid op_negator = get_negator(opno);
+
+ if (OidIsValid(op_negator))
{
- /* Only consider negators that are = */
- if (op_strategy != BTEqualStrategyNumber)
- continue;
- op_strategy = ROWCOMPARE_NE;
- }
+ catlist = SearchSysCacheList1(AMOPOPID,
+ ObjectIdGetDatum(op_negator));
- *opfamilies = lappend_oid(*opfamilies, opfamily_id);
- *opstrats = lappend_int(*opstrats, op_strategy);
+ for (i = 0; i < catlist->n_members; i++)
+ {
+ HeapTuple op_tuple = &catlist->members[i]->tuple;
+ Form_pg_amop op_form = (Form_pg_amop) GETSTRUCT(op_tuple);
+ StrategyNumber op_strategy;
+
+ /* must be btree */
+ if (op_form->amopmethod != BTREE_AM_OID)
+ continue;
+
+ /* Get the operator's btree strategy number */
+ op_strategy = (StrategyNumber) op_form->amopstrategy;
+ Assert(op_strategy >= 1 && op_strategy <= 5);
+
+ /* Only consider negators that are = */
+ if (op_strategy != BTEqualStrategyNumber)
+ continue;
+
+ /* OK, report it with "strategy" ROWCOMPARE_NE */
+ thisresult = (OpBtreeInterpretation *)
+ palloc(sizeof(OpBtreeInterpretation));
+ thisresult->opfamily_id = op_form->amopfamily;
+ thisresult->strategy = ROWCOMPARE_NE;
+ thisresult->oplefttype = op_form->amoplefttype;
+ thisresult->oprighttype = op_form->amoprighttype;
+ result = lappend(result, thisresult);
+ }
+
+ ReleaseSysCacheList(catlist);
+ }
}
- ReleaseSysCacheList(catlist);
+ return result;
}
/*
diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c
index d7e94ffc12..0b9d77a61d 100644
--- a/src/backend/utils/cache/relcache.c
+++ b/src/backend/utils/cache/relcache.c
@@ -1897,7 +1897,7 @@ RelationClearRelation(Relation relation, bool rebuild)
* on next access. Meanwhile it's not any less valid than it was
* before, so any code that might expect to continue accessing it
* isn't hurt by the rebuild failure. (Consider for example a
- * subtransaction that ALTERs a table and then gets cancelled partway
+ * subtransaction that ALTERs a table and then gets canceled partway
* through the cache entry rebuild. The outer transaction should
* still see the not-modified cache entry as valid.) The worst
* consequence of an error is leaking the necessarily-unreferenced new
@@ -3251,6 +3251,7 @@ CheckConstraintFetch(Relation relation)
elog(ERROR, "unexpected constraint record found for rel %s",
RelationGetRelationName(relation));
+ check[found].ccvalid = conform->convalidated;
check[found].ccname = MemoryContextStrdup(CacheMemoryContext,
NameStr(conform->conname));
diff --git a/src/backend/utils/fmgr/funcapi.c b/src/backend/utils/fmgr/funcapi.c
index aa249fabfe..02ee92b715 100644
--- a/src/backend/utils/fmgr/funcapi.c
+++ b/src/backend/utils/fmgr/funcapi.c
@@ -24,6 +24,7 @@
#include "utils/builtins.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/typcache.h"
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 92391eda2f..7b7d26089d 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -825,16 +825,6 @@ static struct config_bool ConfigureNamesBool[] =
NULL, NULL, NULL
},
{
- {"silent_mode", PGC_POSTMASTER, LOGGING_WHERE,
- gettext_noop("Runs the server silently."),
- gettext_noop("If this parameter is set, the server will automatically run in the "
- "background and any controlling terminals are dissociated.")
- },
- &SilentMode,
- false,
- NULL, NULL, NULL
- },
- {
{"log_checkpoints", PGC_SIGHUP, LOGGING_WHAT,
gettext_noop("Logs each checkpoint."),
NULL
@@ -887,7 +877,7 @@ static struct config_bool ConfigureNamesBool[] =
},
{
{"restart_after_crash", PGC_SIGHUP, ERROR_HANDLING_OPTIONS,
- gettext_noop("Reinitialize after backend crash."),
+ gettext_noop("Reinitialize server after backend crash."),
NULL
},
&restart_after_crash,
@@ -1378,7 +1368,7 @@ static struct config_bool ConfigureNamesBool[] =
{
{"hot_standby_feedback", PGC_SIGHUP, WAL_STANDBY_SERVERS,
- gettext_noop("Allows feedback from a hot standby primary that will avoid query conflicts."),
+ gettext_noop("Allows feedback from a hot standby to the primary that will avoid query conflicts."),
NULL
},
&hot_standby_feedback,
@@ -1532,8 +1522,8 @@ static struct config_int ConfigureNamesInt[] =
},
{
- /* This is PGC_SIGHUP so all backends have the same value. */
- {"deadlock_timeout", PGC_SIGHUP, LOCK_MANAGEMENT,
+ /* This is PGC_SUSET to prevent hiding from log_lock_waits. */
+ {"deadlock_timeout", PGC_SUSET, LOCK_MANAGEMENT,
gettext_noop("Sets the time to wait on a lock before checking for deadlock."),
NULL,
GUC_UNIT_MS
@@ -1567,7 +1557,7 @@ static struct config_int ConfigureNamesInt[] =
{
{"wal_receiver_status_interval", PGC_SIGHUP, WAL_STANDBY_SERVERS,
- gettext_noop("Sets the maximum interval between WAL receiver status reports to the master."),
+ gettext_noop("Sets the maximum interval between WAL receiver status reports to the primary."),
NULL,
GUC_UNIT_S
},
@@ -2965,7 +2955,7 @@ static struct config_string ConfigureNamesString[] =
{
{"synchronous_standby_names", PGC_SIGHUP, WAL_REPLICATION,
- gettext_noop("List of potential standby names to synchronise with."),
+ gettext_noop("List of names of potential synchronous standbys."),
NULL,
GUC_LIST_INPUT
},
@@ -8234,7 +8224,7 @@ check_temp_buffers(int *newval, void **extra, GucSource source)
*/
if (NLocBuffer && NLocBuffer != *newval)
{
- GUC_check_errdetail("\"temp_buffers\" cannot be changed after any temp tables have been accessed in the session.");
+ GUC_check_errdetail("\"temp_buffers\" cannot be changed after any temporary tables have been accessed in the session.");
return false;
}
return true;
diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample
index 655dad42c7..229d0e86a9 100644
--- a/src/backend/utils/misc/postgresql.conf.sample
+++ b/src/backend/utils/misc/postgresql.conf.sample
@@ -300,11 +300,6 @@
#syslog_facility = 'LOCAL0'
#syslog_ident = 'postgres'
-#silent_mode = off # Run server silently.
- # DO NOT USE without syslog or
- # logging_collector
- # (change requires restart)
-
# - When to Log -
diff --git a/src/bin/Makefile b/src/bin/Makefile
index 3809412a2d..c333a489f1 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -15,8 +15,12 @@ include $(top_builddir)/src/Makefile.global
SUBDIRS = initdb pg_ctl pg_dump \
psql scripts pg_config pg_controldata pg_resetxlog pg_basebackup
+
ifeq ($(PORTNAME), win32)
-SUBDIRS+=pgevent
+SUBDIRS += pgevent
+else
+ALWAYS_SUBDIRS += pgevent
endif
$(recurse)
+$(recurse_always)
diff --git a/src/bin/initdb/nls.mk b/src/bin/initdb/nls.mk
index 0dc5107aa4..3fdf52655a 100644
--- a/src/bin/initdb/nls.mk
+++ b/src/bin/initdb/nls.mk
@@ -1,5 +1,5 @@
# src/bin/initdb/nls.mk
-CATALOG_NAME := initdb
-AVAIL_LANGUAGES := cs de es fr it ja ko pt_BR ro ru sv ta tr zh_CN zh_TW
-GETTEXT_FILES := initdb.c ../../port/dirmod.c ../../port/exec.c
-GETTEXT_TRIGGERS:= _ simple_prompt
+CATALOG_NAME = initdb
+AVAIL_LANGUAGES = cs de es fr it ja ko pt_BR ro ru sv ta tr zh_CN zh_TW
+GETTEXT_FILES = initdb.c ../../port/dirmod.c ../../port/exec.c
+GETTEXT_TRIGGERS = simple_prompt
diff --git a/src/bin/pg_basebackup/nls.mk b/src/bin/pg_basebackup/nls.mk
index 8a479d72cd..0c594f93f5 100644
--- a/src/bin/pg_basebackup/nls.mk
+++ b/src/bin/pg_basebackup/nls.mk
@@ -1,5 +1,4 @@
# src/bin/pg_basebackup/nls.mk
-CATALOG_NAME := pg_basebackup
-AVAIL_LANGUAGES := de es
-GETTEXT_FILES := pg_basebackup.c
-GETTEXT_TRIGGERS:= _
+CATALOG_NAME = pg_basebackup
+AVAIL_LANGUAGES = de es
+GETTEXT_FILES = pg_basebackup.c
diff --git a/src/bin/pg_config/nls.mk b/src/bin/pg_config/nls.mk
index 609c57f93e..5e5c9a1f40 100644
--- a/src/bin/pg_config/nls.mk
+++ b/src/bin/pg_config/nls.mk
@@ -1,5 +1,4 @@
# src/bin/pg_config/nls.mk
-CATALOG_NAME := pg_config
-AVAIL_LANGUAGES := de es fr it ja ko nb pt_BR ro ru sv ta tr zh_CN zh_TW
-GETTEXT_FILES := pg_config.c ../../port/exec.c
-GETTEXT_TRIGGERS:= _
+CATALOG_NAME = pg_config
+AVAIL_LANGUAGES = de es fr it ja ko nb pt_BR ro ru sv ta tr zh_CN zh_TW
+GETTEXT_FILES = pg_config.c ../../port/exec.c
diff --git a/src/bin/pg_controldata/nls.mk b/src/bin/pg_controldata/nls.mk
index 7edaaff7f3..f2f8b3d0e6 100644
--- a/src/bin/pg_controldata/nls.mk
+++ b/src/bin/pg_controldata/nls.mk
@@ -1,5 +1,4 @@
# src/bin/pg_controldata/nls.mk
-CATALOG_NAME := pg_controldata
-AVAIL_LANGUAGES := de es fr it ja ko pt_BR ro ru sv ta tr zh_CN zh_TW
-GETTEXT_FILES := pg_controldata.c
-GETTEXT_TRIGGERS:= _
+CATALOG_NAME = pg_controldata
+AVAIL_LANGUAGES = de es fr it ja ko pt_BR ro ru sv ta tr zh_CN zh_TW
+GETTEXT_FILES = pg_controldata.c
diff --git a/src/bin/pg_ctl/Makefile b/src/bin/pg_ctl/Makefile
index 00fc682795..6c1b266123 100644
--- a/src/bin/pg_ctl/Makefile
+++ b/src/bin/pg_ctl/Makefile
@@ -16,7 +16,7 @@ subdir = src/bin/pg_ctl
top_builddir = ../../..
include $(top_builddir)/src/Makefile.global
-override CPPFLAGS := -DDEF_PGPORT=$(DEF_PGPORT) -I$(libpq_srcdir) $(CPPFLAGS)
+override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS)
OBJS= pg_ctl.o $(WIN32RES)
@@ -36,7 +36,3 @@ uninstall:
clean distclean maintainer-clean:
rm -f pg_ctl$(X) $(OBJS)
-
-
-# ensure that changes in DEF_PGPORT propagate into object file
-pg_ctl.o: pg_ctl.c $(top_builddir)/src/Makefile.global
diff --git a/src/bin/pg_ctl/nls.mk b/src/bin/pg_ctl/nls.mk
index 29f8a59c60..198615c585 100644
--- a/src/bin/pg_ctl/nls.mk
+++ b/src/bin/pg_ctl/nls.mk
@@ -1,5 +1,4 @@
# src/bin/pg_ctl/nls.mk
-CATALOG_NAME := pg_ctl
-AVAIL_LANGUAGES := de es fr it ja ko pt_BR ru sv ta tr zh_CN zh_TW
-GETTEXT_FILES := pg_ctl.c ../../port/exec.c
-GETTEXT_TRIGGERS:= _ simple_prompt
+CATALOG_NAME = pg_ctl
+AVAIL_LANGUAGES = de es fr it ja ko pt_BR ru sv ta tr zh_CN zh_TW
+GETTEXT_FILES = pg_ctl.c ../../port/exec.c
diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c
index a3933abaa6..2c78c087bb 100644
--- a/src/bin/pg_ctl/pg_ctl.c
+++ b/src/bin/pg_ctl/pg_ctl.c
@@ -1570,7 +1570,7 @@ CreateRestrictedProcess(char *cmd, PROCESS_INFORMATION *processInfo, bool as_ser
* NT4 doesn't have CreateRestrictedToken, so just call ordinary
* CreateProcess
*/
- write_stderr("WARNING: cannot create restricted tokens on this platform\n");
+ write_stderr(_("%s: WARNING: cannot create restricted tokens on this platform\n"), progname);
if (Advapi32Handle != NULL)
FreeLibrary(Advapi32Handle);
return CreateProcess(NULL, cmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, processInfo);
@@ -1579,7 +1579,7 @@ CreateRestrictedProcess(char *cmd, PROCESS_INFORMATION *processInfo, bool as_ser
/* Open the current token to use as a base for the restricted one */
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &origToken))
{
- write_stderr("Failed to open process token: %lu\n", GetLastError());
+ write_stderr(_("%s: could not open process token: %lu\n"), progname, GetLastError());
return 0;
}
@@ -1592,7 +1592,7 @@ CreateRestrictedProcess(char *cmd, PROCESS_INFORMATION *processInfo, bool as_ser
SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_POWER_USERS, 0, 0, 0, 0, 0,
0, &dropSids[1].Sid))
{
- write_stderr("Failed to allocate SIDs: %lu\n", GetLastError());
+ write_stderr(_("%s: could not allocate SIDs: %lu\n"), progname, GetLastError());
return 0;
}
@@ -1611,7 +1611,7 @@ CreateRestrictedProcess(char *cmd, PROCESS_INFORMATION *processInfo, bool as_ser
if (!b)
{
- write_stderr("Failed to create restricted token: %lu\n", GetLastError());
+ write_stderr(_("%s: could not create restricted token: %lu\n"), progname, GetLastError());
return 0;
}
@@ -1649,7 +1649,7 @@ CreateRestrictedProcess(char *cmd, PROCESS_INFORMATION *processInfo, bool as_ser
* Log error if we can't get version, or if we're on WinXP/2003 or
* newer
*/
- write_stderr("WARNING: could not locate all job object functions in system API\n");
+ write_stderr(_("%s: WARNING: could not locate all job object functions in system API\n"), progname);
}
else
{
diff --git a/src/bin/pg_dump/nls.mk b/src/bin/pg_dump/nls.mk
index 1049c6340e..a4824af1b8 100644
--- a/src/bin/pg_dump/nls.mk
+++ b/src/bin/pg_dump/nls.mk
@@ -1,9 +1,14 @@
# src/bin/pg_dump/nls.mk
-CATALOG_NAME := pg_dump
-AVAIL_LANGUAGES := de es fr it ja ko pt_BR sv tr zh_CN zh_TW
-GETTEXT_FILES := pg_dump.c common.c pg_backup_archiver.c pg_backup_custom.c \
+CATALOG_NAME = pg_dump
+AVAIL_LANGUAGES = de es fr it ja ko pt_BR sv tr zh_CN zh_TW
+GETTEXT_FILES = pg_dump.c common.c pg_backup_archiver.c pg_backup_custom.c \
pg_backup_db.c pg_backup_files.c pg_backup_null.c \
pg_backup_tar.c pg_restore.c pg_dumpall.c \
../../port/exec.c
-GETTEXT_TRIGGERS:= write_msg:2 die_horribly:3 exit_horribly:3 simple_prompt \
- ExecuteSqlCommand:3 ahlog:3 _
+GETTEXT_TRIGGERS = write_msg:2 die_horribly:3 exit_horribly:3 simple_prompt \
+ ExecuteSqlCommand:3 ahlog:3
+GETTEXT_FLAGS = \
+ write_msg:2:c-format \
+ die_horribly:3:c-format \
+ exit_horribly:3:c-format \
+ ahlog:3:c-format
diff --git a/src/bin/pg_resetxlog/nls.mk b/src/bin/pg_resetxlog/nls.mk
index e4c44e1855..8a645fc165 100644
--- a/src/bin/pg_resetxlog/nls.mk
+++ b/src/bin/pg_resetxlog/nls.mk
@@ -1,5 +1,4 @@
# src/bin/pg_resetxlog/nls.mk
-CATALOG_NAME := pg_resetxlog
-AVAIL_LANGUAGES := de es fr it ja ko pt_BR ro ru sv ta tr zh_CN zh_TW
-GETTEXT_FILES := pg_resetxlog.c
-GETTEXT_TRIGGERS:= _
+CATALOG_NAME = pg_resetxlog
+AVAIL_LANGUAGES = de es fr it ja ko pt_BR ro ru sv ta tr zh_CN zh_TW
+GETTEXT_FILES = pg_resetxlog.c
diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c
index 378330b96a..16ff9e91e5 100644
--- a/src/bin/psql/command.c
+++ b/src/bin/psql/command.c
@@ -784,8 +784,9 @@ exec_command(const char *cmd,
}
- /* \i is include file */
- else if (strcmp(cmd, "i") == 0 || strcmp(cmd, "include") == 0)
+ /* \i and \ir include files */
+ else if (strcmp(cmd, "i") == 0 || strcmp(cmd, "include") == 0
+ || strcmp(cmd, "ir") == 0 || strcmp(cmd, "include_relative") == 0)
{
char *fname = psql_scan_slash_option(scan_state,
OT_NORMAL, NULL, true);
@@ -797,8 +798,12 @@ exec_command(const char *cmd,
}
else
{
+ bool include_relative;
+
+ include_relative = (strcmp(cmd, "ir") == 0
+ || strcmp(cmd, "include_relative") == 0);
expand_tilde(&fname);
- success = (process_file(fname, false) == EXIT_SUCCESS);
+ success = (process_file(fname, false, include_relative) == EXIT_SUCCESS);
free(fname);
}
}
@@ -1969,15 +1974,19 @@ do_edit(const char *filename_arg, PQExpBuffer query_buf,
* process_file
*
* Read commands from filename and then them to the main processing loop
- * Handler for \i, but can be used for other things as well. Returns
+ * Handler for \i and \ir, but can be used for other things as well. Returns
* MainLoop() error code.
+ *
+ * If use_relative_path is true and filename is not an absolute path, then open
+ * the file from where the currently processed file (if any) is located.
*/
int
-process_file(char *filename, bool single_txn)
+process_file(char *filename, bool single_txn, bool use_relative_path)
{
FILE *fd;
int result;
char *oldfilename;
+ char relpath[MAXPGPATH];
PGresult *res;
if (!filename)
@@ -1986,6 +1995,24 @@ process_file(char *filename, bool single_txn)
if (strcmp(filename, "-") != 0)
{
canonicalize_path(filename);
+
+ /*
+ * If we were asked to resolve the pathname relative to the location
+ * of the currently executing script, and there is one, and this is
+ * a relative pathname, then prepend all but the last pathname
+ * component of the current script to this pathname.
+ */
+ if (use_relative_path && pset.inputfile && !is_absolute_path(filename)
+ && !has_drive_prefix(filename))
+ {
+ snprintf(relpath, MAXPGPATH, "%s", pset.inputfile);
+ get_parent_directory(relpath);
+ join_path_components(relpath, relpath, filename);
+ canonicalize_path(relpath);
+
+ filename = relpath;
+ }
+
fd = fopen(filename, PG_BINARY_R);
}
else
diff --git a/src/bin/psql/command.h b/src/bin/psql/command.h
index 852d645cfd..9d0c31c103 100644
--- a/src/bin/psql/command.h
+++ b/src/bin/psql/command.h
@@ -27,7 +27,7 @@ typedef enum _backslashResult
extern backslashResult HandleSlashCmds(PsqlScanState scan_state,
PQExpBuffer query_buf);
-extern int process_file(char *filename, bool single_txn);
+extern int process_file(char *filename, bool single_txn, bool use_relative_path);
extern bool do_pset(const char *param,
const char *value,
diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c
index b57da05345..256c1c2c2a 100644
--- a/src/bin/psql/common.c
+++ b/src/bin/psql/common.c
@@ -194,7 +194,7 @@ NoticeProcessor(void *arg, const char *message)
* so. We use write() to report to stderr because it's better to use simple
* facilities in a signal handler.
*
- * On win32, the signal cancelling happens on a separate thread, because
+ * On win32, the signal canceling happens on a separate thread, because
* that's how SetConsoleCtrlHandler works. The PQcancel function is safe
* for this (unlike PQrequestCancel). However, a CRITICAL_SECTION is required
* to protect the PGcancel structure against being changed while the signal
diff --git a/src/bin/psql/copy.c b/src/bin/psql/copy.c
index 5e69d29b6c..ebe5ee9ea5 100644
--- a/src/bin/psql/copy.c
+++ b/src/bin/psql/copy.c
@@ -586,7 +586,8 @@ handleCopyIn(PGconn *conn, FILE *copystream, bool isbinary)
}
}
- pset.lineno++;
+ if (copystream == pset.cur_cmd_source)
+ pset.lineno++;
}
}
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index b2c54b5f92..682cf8a40f 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -1159,7 +1159,7 @@ describeOneTableDetails(const char *schemaname,
"c.relpersistence\n"
"FROM pg_catalog.pg_class c\n "
"LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)\n"
- "WHERE c.oid = '%s'\n",
+ "WHERE c.oid = '%s';",
(verbose ?
"pg_catalog.array_to_string(c.reloptions || "
"array(select 'toast.' || x from pg_catalog.unnest(tc.reloptions) x), ', ')\n"
@@ -1175,7 +1175,7 @@ describeOneTableDetails(const char *schemaname,
"CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END\n"
"FROM pg_catalog.pg_class c\n "
"LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)\n"
- "WHERE c.oid = '%s'\n",
+ "WHERE c.oid = '%s';",
(verbose ?
"pg_catalog.array_to_string(c.reloptions || "
"array(select 'toast.' || x from pg_catalog.unnest(tc.reloptions) x), ', ')\n"
@@ -1190,7 +1190,7 @@ describeOneTableDetails(const char *schemaname,
"%s, c.reltablespace\n"
"FROM pg_catalog.pg_class c\n "
"LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)\n"
- "WHERE c.oid = '%s'\n",
+ "WHERE c.oid = '%s';",
(verbose ?
"pg_catalog.array_to_string(c.reloptions || "
"array(select 'toast.' || x from pg_catalog.unnest(tc.reloptions) x), ', ')\n"
@@ -1203,7 +1203,7 @@ describeOneTableDetails(const char *schemaname,
"SELECT relchecks, relkind, relhasindex, relhasrules, "
"reltriggers <> 0, relhasoids, "
"%s, reltablespace\n"
- "FROM pg_catalog.pg_class WHERE oid = '%s'",
+ "FROM pg_catalog.pg_class WHERE oid = '%s';",
(verbose ?
"pg_catalog.array_to_string(reloptions, E', ')" : "''"),
oid);
@@ -1214,7 +1214,7 @@ describeOneTableDetails(const char *schemaname,
"SELECT relchecks, relkind, relhasindex, relhasrules, "
"reltriggers <> 0, relhasoids, "
"'', reltablespace\n"
- "FROM pg_catalog.pg_class WHERE oid = '%s'",
+ "FROM pg_catalog.pg_class WHERE oid = '%s';",
oid);
}
else
@@ -1223,7 +1223,7 @@ describeOneTableDetails(const char *schemaname,
"SELECT relchecks, relkind, relhasindex, relhasrules, "
"reltriggers <> 0, relhasoids, "
"'', ''\n"
- "FROM pg_catalog.pg_class WHERE oid = '%s'",
+ "FROM pg_catalog.pg_class WHERE oid = '%s';",
oid);
}
@@ -1265,7 +1265,7 @@ describeOneTableDetails(const char *schemaname,
{
printfPQExpBuffer(&buf, "SELECT * FROM %s", fmtId(schemaname));
/* must be separate because fmtId isn't reentrant */
- appendPQExpBuffer(&buf, ".%s", fmtId(relationname));
+ appendPQExpBuffer(&buf, ".%s;", fmtId(relationname));
res = PSQLexec(buf.data, false);
if (!res)
@@ -1299,7 +1299,7 @@ describeOneTableDetails(const char *schemaname,
appendPQExpBuffer(&buf, ",\n a.attstorage, pg_catalog.col_description(a.attrelid, a.attnum)");
appendPQExpBuffer(&buf, "\nFROM pg_catalog.pg_attribute a");
appendPQExpBuffer(&buf, "\nWHERE a.attrelid = '%s' AND a.attnum > 0 AND NOT a.attisdropped", oid);
- appendPQExpBuffer(&buf, "\nORDER BY a.attnum");
+ appendPQExpBuffer(&buf, "\nORDER BY a.attnum;");
res = PSQLexec(buf.data, false);
if (!res)
@@ -1394,7 +1394,7 @@ describeOneTableDetails(const char *schemaname,
PGresult *result;
printfPQExpBuffer(&buf,
- "SELECT pg_catalog.pg_get_viewdef('%s'::pg_catalog.oid, true)",
+ "SELECT pg_catalog.pg_get_viewdef('%s'::pg_catalog.oid, true);",
oid);
result = PSQLexec(buf.data, false);
if (!result)
@@ -1509,7 +1509,7 @@ describeOneTableDetails(const char *schemaname,
"pg_catalog.pg_get_expr(i.indpred, i.indrelid, true)\n"
"FROM pg_catalog.pg_index i, pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_am a\n"
"WHERE i.indexrelid = c.oid AND c.oid = '%s' AND c.relam = a.oid\n"
- "AND i.indrelid = c2.oid",
+ "AND i.indrelid = c2.oid;",
oid);
result = PSQLexec(buf.data, false);
@@ -1580,7 +1580,7 @@ describeOneTableDetails(const char *schemaname,
printfPQExpBuffer(&buf,
"SELECT r.rulename, trim(trailing ';' from pg_catalog.pg_get_ruledef(r.oid, true))\n"
"FROM pg_catalog.pg_rewrite r\n"
- "WHERE r.ev_class = '%s' AND r.rulename != '_RETURN' ORDER BY 1",
+ "WHERE r.ev_class = '%s' AND r.rulename != '_RETURN' ORDER BY 1;",
oid);
result = PSQLexec(buf.data, false);
if (!result)
@@ -1637,7 +1637,7 @@ describeOneTableDetails(const char *schemaname,
" LEFT JOIN pg_catalog.pg_constraint con ON (conrelid = i.indrelid AND conindid = i.indexrelid AND contype IN ('p','u','x'))\n");
appendPQExpBuffer(&buf,
"WHERE c.oid = '%s' AND c.oid = i.indrelid AND i.indexrelid = c2.oid\n"
- "ORDER BY i.indisprimary DESC, i.indisunique DESC, c2.relname",
+ "ORDER BY i.indisprimary DESC, i.indisunique DESC, c2.relname;",
oid);
result = PSQLexec(buf.data, false);
if (!result)
@@ -1717,7 +1717,7 @@ describeOneTableDetails(const char *schemaname,
"SELECT r.conname, "
"pg_catalog.pg_get_constraintdef(r.oid, true)\n"
"FROM pg_catalog.pg_constraint r\n"
- "WHERE r.conrelid = '%s' AND r.contype = 'c'\nORDER BY 1",
+ "WHERE r.conrelid = '%s' AND r.contype = 'c'\nORDER BY 1;",
oid);
result = PSQLexec(buf.data, false);
if (!result)
@@ -1748,7 +1748,7 @@ describeOneTableDetails(const char *schemaname,
"SELECT conname,\n"
" pg_catalog.pg_get_constraintdef(r.oid, true) as condef\n"
"FROM pg_catalog.pg_constraint r\n"
- "WHERE r.conrelid = '%s' AND r.contype = 'f' ORDER BY 1",
+ "WHERE r.conrelid = '%s' AND r.contype = 'f' ORDER BY 1;",
oid);
result = PSQLexec(buf.data, false);
if (!result)
@@ -1779,7 +1779,7 @@ describeOneTableDetails(const char *schemaname,
"SELECT conname, conrelid::pg_catalog.regclass,\n"
" pg_catalog.pg_get_constraintdef(c.oid, true) as condef\n"
"FROM pg_catalog.pg_constraint c\n"
- "WHERE c.confrelid = '%s' AND c.contype = 'f' ORDER BY 1",
+ "WHERE c.confrelid = '%s' AND c.contype = 'f' ORDER BY 1;",
oid);
result = PSQLexec(buf.data, false);
if (!result)
@@ -1812,7 +1812,7 @@ describeOneTableDetails(const char *schemaname,
"SELECT r.rulename, trim(trailing ';' from pg_catalog.pg_get_ruledef(r.oid, true)), "
"ev_enabled\n"
"FROM pg_catalog.pg_rewrite r\n"
- "WHERE r.ev_class = '%s' ORDER BY 1",
+ "WHERE r.ev_class = '%s' ORDER BY 1;",
oid);
}
else
@@ -1821,7 +1821,7 @@ describeOneTableDetails(const char *schemaname,
"SELECT r.rulename, trim(trailing ';' from pg_catalog.pg_get_ruledef(r.oid, true)), "
"'O'::char AS ev_enabled\n"
"FROM pg_catalog.pg_rewrite r\n"
- "WHERE r.ev_class = '%s' ORDER BY 1",
+ "WHERE r.ev_class = '%s' ORDER BY 1;",
oid);
}
result = PSQLexec(buf.data, false);
@@ -1927,7 +1927,7 @@ describeOneTableDetails(const char *schemaname,
" (SELECT 1 FROM pg_catalog.pg_depend d "
" JOIN pg_catalog.pg_constraint c ON (d.refclassid = c.tableoid AND d.refobjid = c.oid) "
" WHERE d.classid = t.tableoid AND d.objid = t.oid AND d.deptype = 'i' AND c.contype = 'f'))");
- appendPQExpBuffer(&buf, "\nORDER BY 1");
+ appendPQExpBuffer(&buf, "\nORDER BY 1;");
result = PSQLexec(buf.data, false);
if (!result)
@@ -2035,7 +2035,7 @@ describeOneTableDetails(const char *schemaname,
"SELECT s.srvname\n"
"FROM pg_catalog.pg_foreign_table f,\n"
" pg_catalog.pg_foreign_server s\n"
- "WHERE f.ftrelid = %s AND s.oid = f.ftserver",
+ "WHERE f.ftrelid = %s AND s.oid = f.ftserver;",
oid);
result = PSQLexec(buf.data, false);
if (!result)
@@ -2053,7 +2053,7 @@ describeOneTableDetails(const char *schemaname,
}
/* print inherited tables */
- printfPQExpBuffer(&buf, "SELECT c.oid::pg_catalog.regclass FROM pg_catalog.pg_class c, pg_catalog.pg_inherits i WHERE c.oid=i.inhparent AND i.inhrelid = '%s' ORDER BY inhseqno", oid);
+ printfPQExpBuffer(&buf, "SELECT c.oid::pg_catalog.regclass FROM pg_catalog.pg_class c, pg_catalog.pg_inherits i WHERE c.oid=i.inhparent AND i.inhrelid = '%s' ORDER BY inhseqno;", oid);
result = PSQLexec(buf.data, false);
if (!result)
@@ -2215,7 +2215,7 @@ add_tablespace_footer(printTableContent *const cont, char relkind,
initPQExpBuffer(&buf);
printfPQExpBuffer(&buf,
"SELECT spcname FROM pg_catalog.pg_tablespace\n"
- "WHERE oid = '%u'", tablespace);
+ "WHERE oid = '%u';", tablespace);
result = PSQLexec(buf.data, false);
if (!result)
return;
@@ -2424,7 +2424,7 @@ listDbRoleSettings(const char *pattern, const char *pattern2)
NULL, "pg_roles.rolname", NULL, NULL);
processSQLNamePattern(pset.db, &buf, pattern2, havewhere, false,
NULL, "pg_database.datname", NULL, NULL);
- appendPQExpBufferStr(&buf, "ORDER BY role, database");
+ appendPQExpBufferStr(&buf, "ORDER BY role, database;");
}
else
{
@@ -3170,7 +3170,7 @@ describeOneTSParser(const char *oid, const char *nspname, const char *prsname)
" p.prslextype::pg_catalog.regproc, \n"
" pg_catalog.obj_description(p.prslextype, 'pg_proc') \n"
" FROM pg_catalog.pg_ts_parser p \n"
- " WHERE p.oid = '%s' \n",
+ " WHERE p.oid = '%s';",
gettext_noop("Start parse"),
gettext_noop("Method"),
gettext_noop("Function"),
@@ -3531,7 +3531,7 @@ describeOneTSConfig(const char *oid, const char *nspname, const char *cfgname,
"FROM pg_catalog.pg_ts_config AS c, pg_catalog.pg_ts_config_map AS m \n"
"WHERE c.oid = '%s' AND m.mapcfg = c.oid \n"
"GROUP BY m.mapcfg, m.maptokentype, c.cfgparser \n"
- "ORDER BY 1",
+ "ORDER BY 1;",
gettext_noop("Token"),
gettext_noop("Dictionaries"),
oid);
diff --git a/src/bin/psql/help.c b/src/bin/psql/help.c
index ac5edca65d..e56ab61ac6 100644
--- a/src/bin/psql/help.c
+++ b/src/bin/psql/help.c
@@ -158,7 +158,7 @@ slashUsage(unsigned short int pager)
{
FILE *output;
- output = PageOutput(92, pager);
+ output = PageOutput(93, pager);
/* if you add/remove a line here, change the row count above */
@@ -184,6 +184,7 @@ slashUsage(unsigned short int pager)
fprintf(output, _(" \\copy ... perform SQL COPY with data stream to the client host\n"));
fprintf(output, _(" \\echo [STRING] write string to standard output\n"));
fprintf(output, _(" \\i FILE execute commands from file\n"));
+ fprintf(output, _(" \\ir FILE as \\i, but relative to location of current script\n"));
fprintf(output, _(" \\o [FILE] send all query results to file or |pipe\n"));
fprintf(output, _(" \\qecho [STRING] write string to query output stream (see \\o)\n"));
fprintf(output, "\n");
diff --git a/src/bin/psql/nls.mk b/src/bin/psql/nls.mk
index d47c3b2ec7..8d744348f0 100644
--- a/src/bin/psql/nls.mk
+++ b/src/bin/psql/nls.mk
@@ -1,7 +1,8 @@
# src/bin/psql/nls.mk
-CATALOG_NAME := psql
-AVAIL_LANGUAGES := cs de es fr ja pt_BR sv tr zh_CN zh_TW
-GETTEXT_FILES := command.c common.c copy.c help.c input.c large_obj.c \
+CATALOG_NAME = psql
+AVAIL_LANGUAGES = cs de es fr ja pt_BR sv tr zh_CN zh_TW
+GETTEXT_FILES = command.c common.c copy.c help.c input.c large_obj.c \
mainloop.c print.c startup.c describe.c sql_help.h sql_help.c \
../../port/exec.c
-GETTEXT_TRIGGERS:= _ N_ psql_error simple_prompt
+GETTEXT_TRIGGERS = N_ psql_error simple_prompt
+GETTEXT_FLAGS = psql_error:1:c-format
diff --git a/src/bin/psql/settings.h b/src/bin/psql/settings.h
index 7228f9d0ee..3aebf53299 100644
--- a/src/bin/psql/settings.h
+++ b/src/bin/psql/settings.h
@@ -81,7 +81,7 @@ typedef struct _psqlSettings
bool cur_cmd_interactive;
int sversion; /* backend server version */
const char *progname; /* in case you renamed psql */
- char *inputfile; /* for error reporting */
+ char *inputfile; /* file being currently processed, if any */
char *dirname; /* current directory for \s display */
uint64 lineno; /* also for error reporting */
diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c
index 7b8078c21e..3c17eece7b 100644
--- a/src/bin/psql/startup.c
+++ b/src/bin/psql/startup.c
@@ -256,7 +256,7 @@ main(int argc, char *argv[])
if (!options.no_psqlrc)
process_psqlrc(argv[0]);
- successResult = process_file(options.action_string, options.single_txn);
+ successResult = process_file(options.action_string, options.single_txn, false);
}
/*
@@ -604,9 +604,9 @@ process_psqlrc_file(char *filename)
sprintf(psqlrc, "%s-%s", filename, PG_VERSION);
if (access(psqlrc, R_OK) == 0)
- (void) process_file(psqlrc, false);
+ (void) process_file(psqlrc, false, false);
else if (access(filename, R_OK) == 0)
- (void) process_file(filename, false);
+ (void) process_file(filename, false, false);
free(psqlrc);
}
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
index 32f418306c..4f7df367e5 100644
--- a/src/bin/psql/tab-complete.c
+++ b/src/bin/psql/tab-complete.c
@@ -735,7 +735,7 @@ psql_completion(char *text, int start, int end)
"\\dF", "\\dFd", "\\dFp", "\\dFt", "\\dg", "\\di", "\\dl", "\\dL",
"\\dn", "\\do", "\\dp", "\\drds", "\\ds", "\\dS", "\\dt", "\\dT", "\\dv", "\\du",
"\\e", "\\echo", "\\ef", "\\encoding",
- "\\f", "\\g", "\\h", "\\help", "\\H", "\\i", "\\l",
+ "\\f", "\\g", "\\h", "\\help", "\\H", "\\i", "\\ir", "\\l",
"\\lo_import", "\\lo_export", "\\lo_list", "\\lo_unlink",
"\\o", "\\p", "\\password", "\\prompt", "\\pset", "\\q", "\\qecho", "\\r",
"\\set", "\\sf", "\\t", "\\T",
@@ -2874,6 +2874,7 @@ psql_completion(char *text, int start, int end)
strcmp(prev_wd, "\\e") == 0 || strcmp(prev_wd, "\\edit") == 0 ||
strcmp(prev_wd, "\\g") == 0 ||
strcmp(prev_wd, "\\i") == 0 || strcmp(prev_wd, "\\include") == 0 ||
+ strcmp(prev_wd, "\\ir") == 0 || strcmp(prev_wd, "\\include_relative") == 0 ||
strcmp(prev_wd, "\\o") == 0 || strcmp(prev_wd, "\\out") == 0 ||
strcmp(prev_wd, "\\s") == 0 ||
strcmp(prev_wd, "\\w") == 0 || strcmp(prev_wd, "\\write") == 0
diff --git a/src/bin/scripts/common.c b/src/bin/scripts/common.c
index c882123dd1..e85adfaf11 100644
--- a/src/bin/scripts/common.c
+++ b/src/bin/scripts/common.c
@@ -378,7 +378,7 @@ ResetCancelConn(void)
#ifndef WIN32
/*
- * Handle interrupt signals by cancelling the current command,
+ * Handle interrupt signals by canceling the current command,
* if it's being executed through executeMaintenanceCommand(),
* and thus has a cancelConn set.
*/
diff --git a/src/bin/scripts/nls.mk b/src/bin/scripts/nls.mk
index 2ae7bfa27e..ebea045a78 100644
--- a/src/bin/scripts/nls.mk
+++ b/src/bin/scripts/nls.mk
@@ -1,8 +1,8 @@
# src/bin/scripts/nls.mk
-CATALOG_NAME := pgscripts
-AVAIL_LANGUAGES := cs de es fr it ja ko pt_BR ro sv ta tr zh_CN zh_TW
-GETTEXT_FILES := createdb.c createlang.c createuser.c \
+CATALOG_NAME = pgscripts
+AVAIL_LANGUAGES = cs de es fr it ja ko pt_BR ro sv ta tr zh_CN zh_TW
+GETTEXT_FILES = createdb.c createlang.c createuser.c \
dropdb.c droplang.c dropuser.c \
clusterdb.c vacuumdb.c reindexdb.c \
common.c
-GETTEXT_TRIGGERS:= _ simple_prompt yesno_prompt
+GETTEXT_TRIGGERS = simple_prompt yesno_prompt
diff --git a/src/include/access/heapam.h b/src/include/access/heapam.h
index 4dbc393709..56036a8370 100644
--- a/src/include/access/heapam.h
+++ b/src/include/access/heapam.h
@@ -50,12 +50,14 @@ typedef enum
extern Relation relation_open(Oid relationId, LOCKMODE lockmode);
extern Relation try_relation_open(Oid relationId, LOCKMODE lockmode);
extern Relation relation_openrv(const RangeVar *relation, LOCKMODE lockmode);
-extern Relation try_relation_openrv(const RangeVar *relation, LOCKMODE lockmode);
+extern Relation relation_openrv_extended(const RangeVar *relation,
+ LOCKMODE lockmode, bool missing_ok);
extern void relation_close(Relation relation, LOCKMODE lockmode);
extern Relation heap_open(Oid relationId, LOCKMODE lockmode);
extern Relation heap_openrv(const RangeVar *relation, LOCKMODE lockmode);
-extern Relation try_heap_openrv(const RangeVar *relation, LOCKMODE lockmode);
+extern Relation heap_openrv_extended(const RangeVar *relation,
+ LOCKMODE lockmode, bool missing_ok);
#define heap_close(r,l) relation_close(r,l)
@@ -83,7 +85,8 @@ extern bool heap_fetch(Relation relation, Snapshot snapshot,
HeapTuple tuple, Buffer *userbuf, bool keep_buf,
Relation stats_relation);
extern bool heap_hot_search_buffer(ItemPointer tid, Relation relation,
- Buffer buffer, Snapshot snapshot, bool *all_dead);
+ Buffer buffer, Snapshot snapshot, HeapTuple heapTuple,
+ bool *all_dead, bool first_call);
extern bool heap_hot_search(ItemPointer tid, Relation relation,
Snapshot snapshot, bool *all_dead);
@@ -136,6 +139,8 @@ extern XLogRecPtr log_heap_clean(Relation reln, Buffer buffer,
extern XLogRecPtr log_heap_freeze(Relation reln, Buffer buffer,
TransactionId cutoff_xid,
OffsetNumber *offsets, int offcnt);
+extern XLogRecPtr log_heap_visible(RelFileNode rnode, BlockNumber block,
+ Buffer vm_buffer);
extern XLogRecPtr log_newpage(RelFileNode *rnode, ForkNumber forkNum,
BlockNumber blk, Page page);
diff --git a/src/include/access/hio.h b/src/include/access/hio.h
index 6b661a3e87..6eac97e46c 100644
--- a/src/include/access/hio.h
+++ b/src/include/access/hio.h
@@ -38,6 +38,7 @@ extern void RelationPutHeapTuple(Relation relation, Buffer buffer,
HeapTuple tuple);
extern Buffer RelationGetBufferForTuple(Relation relation, Size len,
Buffer otherBuffer, int options,
- struct BulkInsertStateData * bistate);
+ struct BulkInsertStateData * bistate,
+ Buffer *vmbuffer, Buffer *vmbuffer_other);
#endif /* HIO_H */
diff --git a/src/include/access/htup.h b/src/include/access/htup.h
index c147707169..ba5d9b28ef 100644
--- a/src/include/access/htup.h
+++ b/src/include/access/htup.h
@@ -606,6 +606,7 @@ typedef HeapTupleData *HeapTuple;
#define XLOG_HEAP2_CLEAN 0x10
/* 0x20 is free, was XLOG_HEAP2_CLEAN_MOVE */
#define XLOG_HEAP2_CLEANUP_INFO 0x30
+#define XLOG_HEAP2_VISIBLE 0x40
/*
* All what we need to find changed tuple
@@ -750,6 +751,15 @@ typedef struct xl_heap_freeze
#define SizeOfHeapFreeze (offsetof(xl_heap_freeze, cutoff_xid) + sizeof(TransactionId))
+/* This is what we need to know about setting a visibility map bit */
+typedef struct xl_heap_visible
+{
+ RelFileNode node;
+ BlockNumber block;
+} xl_heap_visible;
+
+#define SizeOfHeapVisible (offsetof(xl_heap_visible, block) + sizeof(BlockNumber))
+
extern void HeapTupleHeaderAdvanceLatestRemovedXid(HeapTupleHeader tuple,
TransactionId *latestRemovedXid);
diff --git a/src/include/access/relscan.h b/src/include/access/relscan.h
index 7663033723..57d08b9656 100644
--- a/src/include/access/relscan.h
+++ b/src/include/access/relscan.h
@@ -35,7 +35,6 @@ typedef struct HeapScanDescData
BlockNumber rs_startblock; /* block # to start at */
BufferAccessStrategy rs_strategy; /* access strategy for reads */
bool rs_syncscan; /* report location to syncscan logic? */
- bool rs_relpredicatelocked; /* predicate lock on relation exists */
/* scan current state */
bool rs_inited; /* false = scan not init'd yet */
@@ -84,9 +83,7 @@ typedef struct IndexScanDescData
bool xs_recheck; /* T means scan keys must be rechecked */
/* state data for traversing HOT chains in index_getnext */
- bool xs_hot_dead; /* T if all members of HOT chain are dead */
- OffsetNumber xs_next_hot; /* next member of HOT chain, if any */
- TransactionId xs_prev_xmax; /* previous HOT chain member's XMAX, if any */
+ bool xs_continue_hot; /* T if must keep walking HOT chain */
} IndexScanDescData;
/* Struct for heap-or-index scans of system tables */
diff --git a/src/include/access/transam.h b/src/include/access/transam.h
index c5e6ab0ca4..c038fd9a52 100644
--- a/src/include/access/transam.h
+++ b/src/include/access/transam.h
@@ -135,6 +135,9 @@ extern bool TransactionStartedDuringRecovery(void);
/* in transam/varsup.c */
extern PGDLLIMPORT VariableCache ShmemVariableCache;
+/* in transam/transam.c */
+extern const XLogRecPtr InvalidXLogRecPtr;
+
/*
* prototypes for functions in transam/transam.c
diff --git a/src/include/access/tupdesc.h b/src/include/access/tupdesc.h
index 99448efe12..8b99cb849d 100644
--- a/src/include/access/tupdesc.h
+++ b/src/include/access/tupdesc.h
@@ -29,6 +29,7 @@ typedef struct constrCheck
{
char *ccname;
char *ccbin; /* nodeToString representation of expr */
+ bool ccvalid;
} ConstrCheck;
/* This structure contains constraints of a tuple */
diff --git a/src/include/access/visibilitymap.h b/src/include/access/visibilitymap.h
index 689060bc15..7d62c12640 100644
--- a/src/include/access/visibilitymap.h
+++ b/src/include/access/visibilitymap.h
@@ -19,11 +19,13 @@
#include "storage/buf.h"
#include "utils/relcache.h"
-extern void visibilitymap_clear(Relation rel, BlockNumber heapBlk);
+extern void visibilitymap_clear(Relation rel, BlockNumber heapBlk,
+ Buffer vmbuf);
extern void visibilitymap_pin(Relation rel, BlockNumber heapBlk,
Buffer *vmbuf);
+extern bool visibilitymap_pin_ok(BlockNumber heapBlk, Buffer vmbuf);
extern void visibilitymap_set(Relation rel, BlockNumber heapBlk,
- XLogRecPtr recptr, Buffer *vmbuf);
+ XLogRecPtr recptr, Buffer vmbuf);
extern bool visibilitymap_test(Relation rel, BlockNumber heapBlk, Buffer *vmbuf);
extern void visibilitymap_truncate(Relation rel, BlockNumber heapblk);
diff --git a/src/include/access/xact.h b/src/include/access/xact.h
index cb440d41f1..c585752b00 100644
--- a/src/include/access/xact.h
+++ b/src/include/access/xact.h
@@ -106,6 +106,7 @@ typedef void (*SubXactCallback) (SubXactEvent event, SubTransactionId mySubid,
#define XLOG_XACT_COMMIT_PREPARED 0x30
#define XLOG_XACT_ABORT_PREPARED 0x40
#define XLOG_XACT_ASSIGNMENT 0x50
+#define XLOG_XACT_COMMIT_COMPACT 0x60
typedef struct xl_xact_assignment
{
@@ -116,6 +117,16 @@ typedef struct xl_xact_assignment
#define MinSizeOfXactAssignment offsetof(xl_xact_assignment, xsub)
+typedef struct xl_xact_commit_compact
+{
+ TimestampTz xact_time; /* time of commit */
+ int nsubxacts; /* number of subtransaction XIDs */
+ /* ARRAY OF COMMITTED SUBTRANSACTION XIDs FOLLOWS */
+ TransactionId subxacts[1]; /* VARIABLE LENGTH ARRAY */
+} xl_xact_commit_compact;
+
+#define MinSizeOfXactCommitCompact offsetof(xl_xact_commit_compact, subxacts)
+
typedef struct xl_xact_commit
{
TimestampTz xact_time; /* time of commit */
@@ -145,8 +156,8 @@ typedef struct xl_xact_commit
#define XACT_COMPLETION_FORCE_SYNC_COMMIT 0x02
/* Access macros for above flags */
-#define XactCompletionRelcacheInitFileInval(xlrec) ((xlrec)->xinfo & XACT_COMPLETION_UPDATE_RELCACHE_FILE)
-#define XactCompletionForceSyncCommit(xlrec) ((xlrec)->xinfo & XACT_COMPLETION_FORCE_SYNC_COMMIT)
+#define XactCompletionRelcacheInitFileInval(xinfo) (xinfo & XACT_COMPLETION_UPDATE_RELCACHE_FILE)
+#define XactCompletionForceSyncCommit(xinfo) (xinfo & XACT_COMPLETION_FORCE_SYNC_COMMIT)
typedef struct xl_xact_abort
{
diff --git a/src/include/access/xlog_internal.h b/src/include/access/xlog_internal.h
index 7e39630c1b..4eaa243948 100644
--- a/src/include/access/xlog_internal.h
+++ b/src/include/access/xlog_internal.h
@@ -71,7 +71,7 @@ typedef struct XLogContRecord
/*
* Each page of XLOG file has a header like this:
*/
-#define XLOG_PAGE_MAGIC 0xD066 /* can be used as WAL version indicator */
+#define XLOG_PAGE_MAGIC 0xD068 /* can be used as WAL version indicator */
typedef struct XLogPageHeaderData
{
diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h
index 0200a81dbf..34e30aa1d4 100644
--- a/src/include/catalog/catversion.h
+++ b/src/include/catalog/catversion.h
@@ -53,6 +53,6 @@
*/
/* yyyymmddN */
-#define CATALOG_VERSION_NO 201105231
+#define CATALOG_VERSION_NO 201107031
#endif
diff --git a/src/include/catalog/heap.h b/src/include/catalog/heap.h
index c95e91303b..0b7b190dd1 100644
--- a/src/include/catalog/heap.h
+++ b/src/include/catalog/heap.h
@@ -30,6 +30,7 @@ typedef struct CookedConstraint
char *name; /* name, or NULL if none */
AttrNumber attnum; /* which attr (only for DEFAULT) */
Node *expr; /* transformed default or check expr */
+ bool skip_validation; /* skip validation? (only for CHECK) */
bool is_local; /* constraint has local (non-inherited) def */
int inhcount; /* number of times constraint is inherited */
} CookedConstraint;
diff --git a/src/include/catalog/namespace.h b/src/include/catalog/namespace.h
index 53600969ad..7e1e194794 100644
--- a/src/include/catalog/namespace.h
+++ b/src/include/catalog/namespace.h
@@ -50,6 +50,7 @@ typedef struct OverrideSearchPath
extern Oid RangeVarGetRelid(const RangeVar *relation, bool failOK);
extern Oid RangeVarGetCreationNamespace(const RangeVar *newRelation);
extern Oid RangeVarGetAndCheckCreationNamespace(const RangeVar *newRelation);
+extern void RangeVarAdjustRelationPersistence(RangeVar *newRelation, Oid nspid);
extern Oid RelnameGetRelid(const char *relname);
extern bool RelationIsVisible(Oid relid);
diff --git a/src/include/catalog/objectaddress.h b/src/include/catalog/objectaddress.h
index 109a8a3ef5..2da6309054 100644
--- a/src/include/catalog/objectaddress.h
+++ b/src/include/catalog/objectaddress.h
@@ -15,7 +15,7 @@
#include "nodes/parsenodes.h"
#include "storage/lock.h"
-#include "utils/rel.h"
+#include "utils/relcache.h"
/*
* An ObjectAddress represents a database object of any type.
@@ -28,7 +28,8 @@ typedef struct ObjectAddress
} ObjectAddress;
extern ObjectAddress get_object_address(ObjectType objtype, List *objname,
- List *objargs, Relation *relp, LOCKMODE lockmode);
+ List *objargs, Relation *relp,
+ LOCKMODE lockmode, bool missing_ok);
extern void check_object_ownership(Oid roleid,
ObjectType objtype, ObjectAddress address,
diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h
index ffcce3c87c..002ae6b59c 100644
--- a/src/include/catalog/pg_class.h
+++ b/src/include/catalog/pg_class.h
@@ -134,7 +134,7 @@ DATA(insert OID = 1247 ( pg_type PGNSP 71 0 PGUID 0 0 0 0 0 0 0 f f p r 29 0 t
DESCR("");
DATA(insert OID = 1249 ( pg_attribute PGNSP 75 0 PGUID 0 0 0 0 0 0 0 f f p r 20 0 f f f f f 3 _null_ _null_ ));
DESCR("");
-DATA(insert OID = 1255 ( pg_proc PGNSP 81 0 PGUID 0 0 0 0 0 0 0 f f p r 25 0 t f f f f 3 _null_ _null_ ));
+DATA(insert OID = 1255 ( pg_proc PGNSP 81 0 PGUID 0 0 0 0 0 0 0 f f p r 26 0 t f f f f 3 _null_ _null_ ));
DESCR("");
DATA(insert OID = 1259 ( pg_class PGNSP 83 0 PGUID 0 0 0 0 0 0 0 f f p r 26 0 t f f f f 3 _null_ _null_ ));
DESCR("");
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index 3c183ce7b5..16dc70f6fa 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -42,6 +42,7 @@ CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO
float4 procost; /* estimated execution cost */
float4 prorows; /* estimated # of rows out (if proretset) */
Oid provariadic; /* element type of variadic array, or 0 */
+ regproc protransform; /* transforms calls to it during planning */
bool proisagg; /* is it an aggregate? */
bool proiswindow; /* is it a window function? */
bool prosecdef; /* security definer */
@@ -76,7 +77,7 @@ typedef FormData_pg_proc *Form_pg_proc;
* compiler constants for pg_proc
* ----------------
*/
-#define Natts_pg_proc 25
+#define Natts_pg_proc 26
#define Anum_pg_proc_proname 1
#define Anum_pg_proc_pronamespace 2
#define Anum_pg_proc_proowner 3
@@ -84,24 +85,25 @@ typedef FormData_pg_proc *Form_pg_proc;
#define Anum_pg_proc_procost 5
#define Anum_pg_proc_prorows 6
#define Anum_pg_proc_provariadic 7
-#define Anum_pg_proc_proisagg 8
-#define Anum_pg_proc_proiswindow 9
-#define Anum_pg_proc_prosecdef 10
-#define Anum_pg_proc_proisstrict 11
-#define Anum_pg_proc_proretset 12
-#define Anum_pg_proc_provolatile 13
-#define Anum_pg_proc_pronargs 14
-#define Anum_pg_proc_pronargdefaults 15
-#define Anum_pg_proc_prorettype 16
-#define Anum_pg_proc_proargtypes 17
-#define Anum_pg_proc_proallargtypes 18
-#define Anum_pg_proc_proargmodes 19
-#define Anum_pg_proc_proargnames 20
-#define Anum_pg_proc_proargdefaults 21
-#define Anum_pg_proc_prosrc 22
-#define Anum_pg_proc_probin 23
-#define Anum_pg_proc_proconfig 24
-#define Anum_pg_proc_proacl 25
+#define Anum_pg_proc_protransform 8
+#define Anum_pg_proc_proisagg 9
+#define Anum_pg_proc_proiswindow 10
+#define Anum_pg_proc_prosecdef 11
+#define Anum_pg_proc_proisstrict 12
+#define Anum_pg_proc_proretset 13
+#define Anum_pg_proc_provolatile 14
+#define Anum_pg_proc_pronargs 15
+#define Anum_pg_proc_pronargdefaults 16
+#define Anum_pg_proc_prorettype 17
+#define Anum_pg_proc_proargtypes 18
+#define Anum_pg_proc_proallargtypes 19
+#define Anum_pg_proc_proargmodes 20
+#define Anum_pg_proc_proargnames 21
+#define Anum_pg_proc_proargdefaults 22
+#define Anum_pg_proc_prosrc 23
+#define Anum_pg_proc_probin 24
+#define Anum_pg_proc_proconfig 25
+#define Anum_pg_proc_proacl 26
/* ----------------
* initial contents of pg_proc
@@ -131,4198 +133,4200 @@ typedef FormData_pg_proc *Form_pg_proc;
/* OIDS 1 - 99 */
-DATA(insert OID = 1242 ( boolin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 16 "2275" _null_ _null_ _null_ _null_ boolin _null_ _null_ _null_ ));
+DATA(insert OID = 1242 ( boolin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 16 "2275" _null_ _null_ _null_ _null_ boolin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 1243 ( boolout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "16" _null_ _null_ _null_ _null_ boolout _null_ _null_ _null_ ));
+DATA(insert OID = 1243 ( boolout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "16" _null_ _null_ _null_ _null_ boolout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 1244 ( byteain PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "2275" _null_ _null_ _null_ _null_ byteain _null_ _null_ _null_ ));
+DATA(insert OID = 1244 ( byteain PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "2275" _null_ _null_ _null_ _null_ byteain _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 31 ( byteaout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "17" _null_ _null_ _null_ _null_ byteaout _null_ _null_ _null_ ));
+DATA(insert OID = 31 ( byteaout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "17" _null_ _null_ _null_ _null_ byteaout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 1245 ( charin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 18 "2275" _null_ _null_ _null_ _null_ charin _null_ _null_ _null_ ));
+DATA(insert OID = 1245 ( charin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 18 "2275" _null_ _null_ _null_ _null_ charin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 33 ( charout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "18" _null_ _null_ _null_ _null_ charout _null_ _null_ _null_ ));
+DATA(insert OID = 33 ( charout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "18" _null_ _null_ _null_ _null_ charout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 34 ( namein PGNSP PGUID 12 1 0 0 f f f t f i 1 0 19 "2275" _null_ _null_ _null_ _null_ namein _null_ _null_ _null_ ));
+DATA(insert OID = 34 ( namein PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 19 "2275" _null_ _null_ _null_ _null_ namein _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 35 ( nameout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "19" _null_ _null_ _null_ _null_ nameout _null_ _null_ _null_ ));
+DATA(insert OID = 35 ( nameout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "19" _null_ _null_ _null_ _null_ nameout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 38 ( int2in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 21 "2275" _null_ _null_ _null_ _null_ int2in _null_ _null_ _null_ ));
+DATA(insert OID = 38 ( int2in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 21 "2275" _null_ _null_ _null_ _null_ int2in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 39 ( int2out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "21" _null_ _null_ _null_ _null_ int2out _null_ _null_ _null_ ));
+DATA(insert OID = 39 ( int2out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "21" _null_ _null_ _null_ _null_ int2out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 40 ( int2vectorin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 22 "2275" _null_ _null_ _null_ _null_ int2vectorin _null_ _null_ _null_ ));
+DATA(insert OID = 40 ( int2vectorin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 22 "2275" _null_ _null_ _null_ _null_ int2vectorin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 41 ( int2vectorout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "22" _null_ _null_ _null_ _null_ int2vectorout _null_ _null_ _null_ ));
+DATA(insert OID = 41 ( int2vectorout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "22" _null_ _null_ _null_ _null_ int2vectorout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 42 ( int4in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "2275" _null_ _null_ _null_ _null_ int4in _null_ _null_ _null_ ));
+DATA(insert OID = 42 ( int4in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "2275" _null_ _null_ _null_ _null_ int4in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 43 ( int4out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "23" _null_ _null_ _null_ _null_ int4out _null_ _null_ _null_ ));
+DATA(insert OID = 43 ( int4out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "23" _null_ _null_ _null_ _null_ int4out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 44 ( regprocin PGNSP PGUID 12 1 0 0 f f f t f s 1 0 24 "2275" _null_ _null_ _null_ _null_ regprocin _null_ _null_ _null_ ));
+DATA(insert OID = 44 ( regprocin PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 24 "2275" _null_ _null_ _null_ _null_ regprocin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 45 ( regprocout PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "24" _null_ _null_ _null_ _null_ regprocout _null_ _null_ _null_ ));
+DATA(insert OID = 45 ( regprocout PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "24" _null_ _null_ _null_ _null_ regprocout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 46 ( textin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "2275" _null_ _null_ _null_ _null_ textin _null_ _null_ _null_ ));
+DATA(insert OID = 46 ( textin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "2275" _null_ _null_ _null_ _null_ textin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 47 ( textout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "25" _null_ _null_ _null_ _null_ textout _null_ _null_ _null_ ));
+DATA(insert OID = 47 ( textout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "25" _null_ _null_ _null_ _null_ textout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 48 ( tidin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 27 "2275" _null_ _null_ _null_ _null_ tidin _null_ _null_ _null_ ));
+DATA(insert OID = 48 ( tidin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 27 "2275" _null_ _null_ _null_ _null_ tidin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 49 ( tidout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "27" _null_ _null_ _null_ _null_ tidout _null_ _null_ _null_ ));
+DATA(insert OID = 49 ( tidout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "27" _null_ _null_ _null_ _null_ tidout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 50 ( xidin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 28 "2275" _null_ _null_ _null_ _null_ xidin _null_ _null_ _null_ ));
+DATA(insert OID = 50 ( xidin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 28 "2275" _null_ _null_ _null_ _null_ xidin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 51 ( xidout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "28" _null_ _null_ _null_ _null_ xidout _null_ _null_ _null_ ));
+DATA(insert OID = 51 ( xidout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "28" _null_ _null_ _null_ _null_ xidout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 52 ( cidin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 29 "2275" _null_ _null_ _null_ _null_ cidin _null_ _null_ _null_ ));
+DATA(insert OID = 52 ( cidin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 29 "2275" _null_ _null_ _null_ _null_ cidin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 53 ( cidout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "29" _null_ _null_ _null_ _null_ cidout _null_ _null_ _null_ ));
+DATA(insert OID = 53 ( cidout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "29" _null_ _null_ _null_ _null_ cidout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 54 ( oidvectorin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 30 "2275" _null_ _null_ _null_ _null_ oidvectorin _null_ _null_ _null_ ));
+DATA(insert OID = 54 ( oidvectorin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 30 "2275" _null_ _null_ _null_ _null_ oidvectorin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 55 ( oidvectorout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "30" _null_ _null_ _null_ _null_ oidvectorout _null_ _null_ _null_ ));
+DATA(insert OID = 55 ( oidvectorout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "30" _null_ _null_ _null_ _null_ oidvectorout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 56 ( boollt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "16 16" _null_ _null_ _null_ _null_ boollt _null_ _null_ _null_ ));
-DATA(insert OID = 57 ( boolgt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "16 16" _null_ _null_ _null_ _null_ boolgt _null_ _null_ _null_ ));
-DATA(insert OID = 60 ( booleq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "16 16" _null_ _null_ _null_ _null_ booleq _null_ _null_ _null_ ));
-DATA(insert OID = 61 ( chareq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "18 18" _null_ _null_ _null_ _null_ chareq _null_ _null_ _null_ ));
-DATA(insert OID = 62 ( nameeq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "19 19" _null_ _null_ _null_ _null_ nameeq _null_ _null_ _null_ ));
-DATA(insert OID = 63 ( int2eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "21 21" _null_ _null_ _null_ _null_ int2eq _null_ _null_ _null_ ));
-DATA(insert OID = 64 ( int2lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "21 21" _null_ _null_ _null_ _null_ int2lt _null_ _null_ _null_ ));
-DATA(insert OID = 65 ( int4eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "23 23" _null_ _null_ _null_ _null_ int4eq _null_ _null_ _null_ ));
-DATA(insert OID = 66 ( int4lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "23 23" _null_ _null_ _null_ _null_ int4lt _null_ _null_ _null_ ));
-DATA(insert OID = 67 ( texteq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ texteq _null_ _null_ _null_ ));
-DATA(insert OID = 68 ( xideq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "28 28" _null_ _null_ _null_ _null_ xideq _null_ _null_ _null_ ));
-DATA(insert OID = 69 ( cideq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "29 29" _null_ _null_ _null_ _null_ cideq _null_ _null_ _null_ ));
-DATA(insert OID = 70 ( charne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "18 18" _null_ _null_ _null_ _null_ charne _null_ _null_ _null_ ));
-DATA(insert OID = 1246 ( charlt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "18 18" _null_ _null_ _null_ _null_ charlt _null_ _null_ _null_ ));
-DATA(insert OID = 72 ( charle PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "18 18" _null_ _null_ _null_ _null_ charle _null_ _null_ _null_ ));
-DATA(insert OID = 73 ( chargt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "18 18" _null_ _null_ _null_ _null_ chargt _null_ _null_ _null_ ));
-DATA(insert OID = 74 ( charge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "18 18" _null_ _null_ _null_ _null_ charge _null_ _null_ _null_ ));
-DATA(insert OID = 77 ( int4 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "18" _null_ _null_ _null_ _null_ chartoi4 _null_ _null_ _null_ ));
+DATA(insert OID = 56 ( boollt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "16 16" _null_ _null_ _null_ _null_ boollt _null_ _null_ _null_ ));
+DATA(insert OID = 57 ( boolgt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "16 16" _null_ _null_ _null_ _null_ boolgt _null_ _null_ _null_ ));
+DATA(insert OID = 60 ( booleq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "16 16" _null_ _null_ _null_ _null_ booleq _null_ _null_ _null_ ));
+DATA(insert OID = 61 ( chareq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "18 18" _null_ _null_ _null_ _null_ chareq _null_ _null_ _null_ ));
+DATA(insert OID = 62 ( nameeq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "19 19" _null_ _null_ _null_ _null_ nameeq _null_ _null_ _null_ ));
+DATA(insert OID = 63 ( int2eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "21 21" _null_ _null_ _null_ _null_ int2eq _null_ _null_ _null_ ));
+DATA(insert OID = 64 ( int2lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "21 21" _null_ _null_ _null_ _null_ int2lt _null_ _null_ _null_ ));
+DATA(insert OID = 65 ( int4eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "23 23" _null_ _null_ _null_ _null_ int4eq _null_ _null_ _null_ ));
+DATA(insert OID = 66 ( int4lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "23 23" _null_ _null_ _null_ _null_ int4lt _null_ _null_ _null_ ));
+DATA(insert OID = 67 ( texteq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ texteq _null_ _null_ _null_ ));
+DATA(insert OID = 68 ( xideq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "28 28" _null_ _null_ _null_ _null_ xideq _null_ _null_ _null_ ));
+DATA(insert OID = 69 ( cideq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "29 29" _null_ _null_ _null_ _null_ cideq _null_ _null_ _null_ ));
+DATA(insert OID = 70 ( charne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "18 18" _null_ _null_ _null_ _null_ charne _null_ _null_ _null_ ));
+DATA(insert OID = 1246 ( charlt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "18 18" _null_ _null_ _null_ _null_ charlt _null_ _null_ _null_ ));
+DATA(insert OID = 72 ( charle PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "18 18" _null_ _null_ _null_ _null_ charle _null_ _null_ _null_ ));
+DATA(insert OID = 73 ( chargt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "18 18" _null_ _null_ _null_ _null_ chargt _null_ _null_ _null_ ));
+DATA(insert OID = 74 ( charge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "18 18" _null_ _null_ _null_ _null_ charge _null_ _null_ _null_ ));
+DATA(insert OID = 77 ( int4 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "18" _null_ _null_ _null_ _null_ chartoi4 _null_ _null_ _null_ ));
DESCR("convert char to int4");
-DATA(insert OID = 78 ( char PGNSP PGUID 12 1 0 0 f f f t f i 1 0 18 "23" _null_ _null_ _null_ _null_ i4tochar _null_ _null_ _null_ ));
+DATA(insert OID = 78 ( char PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 18 "23" _null_ _null_ _null_ _null_ i4tochar _null_ _null_ _null_ ));
DESCR("convert int4 to char");
-DATA(insert OID = 79 ( nameregexeq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "19 25" _null_ _null_ _null_ _null_ nameregexeq _null_ _null_ _null_ ));
-DATA(insert OID = 1252 ( nameregexne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "19 25" _null_ _null_ _null_ _null_ nameregexne _null_ _null_ _null_ ));
-DATA(insert OID = 1254 ( textregexeq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ textregexeq _null_ _null_ _null_ ));
-DATA(insert OID = 1256 ( textregexne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ textregexne _null_ _null_ _null_ ));
-DATA(insert OID = 1257 ( textlen PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "25" _null_ _null_ _null_ _null_ textlen _null_ _null_ _null_ ));
+DATA(insert OID = 79 ( nameregexeq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "19 25" _null_ _null_ _null_ _null_ nameregexeq _null_ _null_ _null_ ));
+DATA(insert OID = 1252 ( nameregexne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "19 25" _null_ _null_ _null_ _null_ nameregexne _null_ _null_ _null_ ));
+DATA(insert OID = 1254 ( textregexeq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ textregexeq _null_ _null_ _null_ ));
+DATA(insert OID = 1256 ( textregexne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ textregexne _null_ _null_ _null_ ));
+DATA(insert OID = 1257 ( textlen PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "25" _null_ _null_ _null_ _null_ textlen _null_ _null_ _null_ ));
DESCR("length");
-DATA(insert OID = 1258 ( textcat PGNSP PGUID 12 1 0 0 f f f t f i 2 0 25 "25 25" _null_ _null_ _null_ _null_ textcat _null_ _null_ _null_ ));
+DATA(insert OID = 1258 ( textcat PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 25 "25 25" _null_ _null_ _null_ _null_ textcat _null_ _null_ _null_ ));
-DATA(insert OID = 84 ( boolne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "16 16" _null_ _null_ _null_ _null_ boolne _null_ _null_ _null_ ));
-DATA(insert OID = 89 ( version PGNSP PGUID 12 1 0 0 f f f t f s 0 0 25 "" _null_ _null_ _null_ _null_ pgsql_version _null_ _null_ _null_ ));
+DATA(insert OID = 84 ( boolne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "16 16" _null_ _null_ _null_ _null_ boolne _null_ _null_ _null_ ));
+DATA(insert OID = 89 ( version PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 25 "" _null_ _null_ _null_ _null_ pgsql_version _null_ _null_ _null_ ));
DESCR("PostgreSQL version string");
/* OIDS 100 - 199 */
-DATA(insert OID = 101 ( eqsel PGNSP PGUID 12 1 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ eqsel _null_ _null_ _null_ ));
+DATA(insert OID = 101 ( eqsel PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ eqsel _null_ _null_ _null_ ));
DESCR("restriction selectivity of = and related operators");
-DATA(insert OID = 102 ( neqsel PGNSP PGUID 12 1 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ neqsel _null_ _null_ _null_ ));
+DATA(insert OID = 102 ( neqsel PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ neqsel _null_ _null_ _null_ ));
DESCR("restriction selectivity of <> and related operators");
-DATA(insert OID = 103 ( scalarltsel PGNSP PGUID 12 1 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ scalarltsel _null_ _null_ _null_ ));
+DATA(insert OID = 103 ( scalarltsel PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ scalarltsel _null_ _null_ _null_ ));
DESCR("restriction selectivity of < and related operators on scalar datatypes");
-DATA(insert OID = 104 ( scalargtsel PGNSP PGUID 12 1 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ scalargtsel _null_ _null_ _null_ ));
+DATA(insert OID = 104 ( scalargtsel PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ scalargtsel _null_ _null_ _null_ ));
DESCR("restriction selectivity of > and related operators on scalar datatypes");
-DATA(insert OID = 105 ( eqjoinsel PGNSP PGUID 12 1 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ eqjoinsel _null_ _null_ _null_ ));
+DATA(insert OID = 105 ( eqjoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ eqjoinsel _null_ _null_ _null_ ));
DESCR("join selectivity of = and related operators");
-DATA(insert OID = 106 ( neqjoinsel PGNSP PGUID 12 1 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ neqjoinsel _null_ _null_ _null_ ));
+DATA(insert OID = 106 ( neqjoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ neqjoinsel _null_ _null_ _null_ ));
DESCR("join selectivity of <> and related operators");
-DATA(insert OID = 107 ( scalarltjoinsel PGNSP PGUID 12 1 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ scalarltjoinsel _null_ _null_ _null_ ));
+DATA(insert OID = 107 ( scalarltjoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ scalarltjoinsel _null_ _null_ _null_ ));
DESCR("join selectivity of < and related operators on scalar datatypes");
-DATA(insert OID = 108 ( scalargtjoinsel PGNSP PGUID 12 1 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ scalargtjoinsel _null_ _null_ _null_ ));
+DATA(insert OID = 108 ( scalargtjoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ scalargtjoinsel _null_ _null_ _null_ ));
DESCR("join selectivity of > and related operators on scalar datatypes");
-DATA(insert OID = 109 ( unknownin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 705 "2275" _null_ _null_ _null_ _null_ unknownin _null_ _null_ _null_ ));
+DATA(insert OID = 109 ( unknownin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 705 "2275" _null_ _null_ _null_ _null_ unknownin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 110 ( unknownout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "705" _null_ _null_ _null_ _null_ unknownout _null_ _null_ _null_ ));
+DATA(insert OID = 110 ( unknownout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "705" _null_ _null_ _null_ _null_ unknownout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 111 ( numeric_fac PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "20" _null_ _null_ _null_ _null_ numeric_fac _null_ _null_ _null_ ));
+DATA(insert OID = 111 ( numeric_fac PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "20" _null_ _null_ _null_ _null_ numeric_fac _null_ _null_ _null_ ));
-DATA(insert OID = 115 ( box_above_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_above_eq _null_ _null_ _null_ ));
-DATA(insert OID = 116 ( box_below_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_below_eq _null_ _null_ _null_ ));
+DATA(insert OID = 115 ( box_above_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_above_eq _null_ _null_ _null_ ));
+DATA(insert OID = 116 ( box_below_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_below_eq _null_ _null_ _null_ ));
-DATA(insert OID = 117 ( point_in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 600 "2275" _null_ _null_ _null_ _null_ point_in _null_ _null_ _null_ ));
+DATA(insert OID = 117 ( point_in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 600 "2275" _null_ _null_ _null_ _null_ point_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 118 ( point_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "600" _null_ _null_ _null_ _null_ point_out _null_ _null_ _null_ ));
+DATA(insert OID = 118 ( point_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "600" _null_ _null_ _null_ _null_ point_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 119 ( lseg_in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 601 "2275" _null_ _null_ _null_ _null_ lseg_in _null_ _null_ _null_ ));
+DATA(insert OID = 119 ( lseg_in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 601 "2275" _null_ _null_ _null_ _null_ lseg_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 120 ( lseg_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "601" _null_ _null_ _null_ _null_ lseg_out _null_ _null_ _null_ ));
+DATA(insert OID = 120 ( lseg_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "601" _null_ _null_ _null_ _null_ lseg_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 121 ( path_in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 602 "2275" _null_ _null_ _null_ _null_ path_in _null_ _null_ _null_ ));
+DATA(insert OID = 121 ( path_in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 602 "2275" _null_ _null_ _null_ _null_ path_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 122 ( path_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "602" _null_ _null_ _null_ _null_ path_out _null_ _null_ _null_ ));
+DATA(insert OID = 122 ( path_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "602" _null_ _null_ _null_ _null_ path_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 123 ( box_in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 603 "2275" _null_ _null_ _null_ _null_ box_in _null_ _null_ _null_ ));
+DATA(insert OID = 123 ( box_in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 603 "2275" _null_ _null_ _null_ _null_ box_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 124 ( box_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "603" _null_ _null_ _null_ _null_ box_out _null_ _null_ _null_ ));
+DATA(insert OID = 124 ( box_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "603" _null_ _null_ _null_ _null_ box_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 125 ( box_overlap PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_overlap _null_ _null_ _null_ ));
-DATA(insert OID = 126 ( box_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_ge _null_ _null_ _null_ ));
-DATA(insert OID = 127 ( box_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_gt _null_ _null_ _null_ ));
-DATA(insert OID = 128 ( box_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_eq _null_ _null_ _null_ ));
-DATA(insert OID = 129 ( box_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_lt _null_ _null_ _null_ ));
-DATA(insert OID = 130 ( box_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_le _null_ _null_ _null_ ));
-DATA(insert OID = 131 ( point_above PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "600 600" _null_ _null_ _null_ _null_ point_above _null_ _null_ _null_ ));
-DATA(insert OID = 132 ( point_left PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "600 600" _null_ _null_ _null_ _null_ point_left _null_ _null_ _null_ ));
-DATA(insert OID = 133 ( point_right PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "600 600" _null_ _null_ _null_ _null_ point_right _null_ _null_ _null_ ));
-DATA(insert OID = 134 ( point_below PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "600 600" _null_ _null_ _null_ _null_ point_below _null_ _null_ _null_ ));
-DATA(insert OID = 135 ( point_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "600 600" _null_ _null_ _null_ _null_ point_eq _null_ _null_ _null_ ));
-DATA(insert OID = 136 ( on_pb PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "600 603" _null_ _null_ _null_ _null_ on_pb _null_ _null_ _null_ ));
-DATA(insert OID = 137 ( on_ppath PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "600 602" _null_ _null_ _null_ _null_ on_ppath _null_ _null_ _null_ ));
-DATA(insert OID = 138 ( box_center PGNSP PGUID 12 1 0 0 f f f t f i 1 0 600 "603" _null_ _null_ _null_ _null_ box_center _null_ _null_ _null_ ));
-DATA(insert OID = 139 ( areasel PGNSP PGUID 12 1 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ areasel _null_ _null_ _null_ ));
+DATA(insert OID = 125 ( box_overlap PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_overlap _null_ _null_ _null_ ));
+DATA(insert OID = 126 ( box_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_ge _null_ _null_ _null_ ));
+DATA(insert OID = 127 ( box_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_gt _null_ _null_ _null_ ));
+DATA(insert OID = 128 ( box_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_eq _null_ _null_ _null_ ));
+DATA(insert OID = 129 ( box_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_lt _null_ _null_ _null_ ));
+DATA(insert OID = 130 ( box_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_le _null_ _null_ _null_ ));
+DATA(insert OID = 131 ( point_above PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "600 600" _null_ _null_ _null_ _null_ point_above _null_ _null_ _null_ ));
+DATA(insert OID = 132 ( point_left PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "600 600" _null_ _null_ _null_ _null_ point_left _null_ _null_ _null_ ));
+DATA(insert OID = 133 ( point_right PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "600 600" _null_ _null_ _null_ _null_ point_right _null_ _null_ _null_ ));
+DATA(insert OID = 134 ( point_below PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "600 600" _null_ _null_ _null_ _null_ point_below _null_ _null_ _null_ ));
+DATA(insert OID = 135 ( point_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "600 600" _null_ _null_ _null_ _null_ point_eq _null_ _null_ _null_ ));
+DATA(insert OID = 136 ( on_pb PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "600 603" _null_ _null_ _null_ _null_ on_pb _null_ _null_ _null_ ));
+DATA(insert OID = 137 ( on_ppath PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "600 602" _null_ _null_ _null_ _null_ on_ppath _null_ _null_ _null_ ));
+DATA(insert OID = 138 ( box_center PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 600 "603" _null_ _null_ _null_ _null_ box_center _null_ _null_ _null_ ));
+DATA(insert OID = 139 ( areasel PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ areasel _null_ _null_ _null_ ));
DESCR("restriction selectivity for area-comparison operators");
-DATA(insert OID = 140 ( areajoinsel PGNSP PGUID 12 1 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ areajoinsel _null_ _null_ _null_ ));
+DATA(insert OID = 140 ( areajoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ areajoinsel _null_ _null_ _null_ ));
DESCR("join selectivity for area-comparison operators");
-DATA(insert OID = 141 ( int4mul PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4mul _null_ _null_ _null_ ));
-DATA(insert OID = 144 ( int4ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "23 23" _null_ _null_ _null_ _null_ int4ne _null_ _null_ _null_ ));
-DATA(insert OID = 145 ( int2ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "21 21" _null_ _null_ _null_ _null_ int2ne _null_ _null_ _null_ ));
-DATA(insert OID = 146 ( int2gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "21 21" _null_ _null_ _null_ _null_ int2gt _null_ _null_ _null_ ));
-DATA(insert OID = 147 ( int4gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "23 23" _null_ _null_ _null_ _null_ int4gt _null_ _null_ _null_ ));
-DATA(insert OID = 148 ( int2le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "21 21" _null_ _null_ _null_ _null_ int2le _null_ _null_ _null_ ));
-DATA(insert OID = 149 ( int4le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "23 23" _null_ _null_ _null_ _null_ int4le _null_ _null_ _null_ ));
-DATA(insert OID = 150 ( int4ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "23 23" _null_ _null_ _null_ _null_ int4ge _null_ _null_ _null_ ));
-DATA(insert OID = 151 ( int2ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "21 21" _null_ _null_ _null_ _null_ int2ge _null_ _null_ _null_ ));
-DATA(insert OID = 152 ( int2mul PGNSP PGUID 12 1 0 0 f f f t f i 2 0 21 "21 21" _null_ _null_ _null_ _null_ int2mul _null_ _null_ _null_ ));
-DATA(insert OID = 153 ( int2div PGNSP PGUID 12 1 0 0 f f f t f i 2 0 21 "21 21" _null_ _null_ _null_ _null_ int2div _null_ _null_ _null_ ));
-DATA(insert OID = 154 ( int4div PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4div _null_ _null_ _null_ ));
-DATA(insert OID = 155 ( int2mod PGNSP PGUID 12 1 0 0 f f f t f i 2 0 21 "21 21" _null_ _null_ _null_ _null_ int2mod _null_ _null_ _null_ ));
-DATA(insert OID = 156 ( int4mod PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4mod _null_ _null_ _null_ ));
-DATA(insert OID = 157 ( textne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ textne _null_ _null_ _null_ ));
-DATA(insert OID = 158 ( int24eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "21 23" _null_ _null_ _null_ _null_ int24eq _null_ _null_ _null_ ));
-DATA(insert OID = 159 ( int42eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "23 21" _null_ _null_ _null_ _null_ int42eq _null_ _null_ _null_ ));
-DATA(insert OID = 160 ( int24lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "21 23" _null_ _null_ _null_ _null_ int24lt _null_ _null_ _null_ ));
-DATA(insert OID = 161 ( int42lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "23 21" _null_ _null_ _null_ _null_ int42lt _null_ _null_ _null_ ));
-DATA(insert OID = 162 ( int24gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "21 23" _null_ _null_ _null_ _null_ int24gt _null_ _null_ _null_ ));
-DATA(insert OID = 163 ( int42gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "23 21" _null_ _null_ _null_ _null_ int42gt _null_ _null_ _null_ ));
-DATA(insert OID = 164 ( int24ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "21 23" _null_ _null_ _null_ _null_ int24ne _null_ _null_ _null_ ));
-DATA(insert OID = 165 ( int42ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "23 21" _null_ _null_ _null_ _null_ int42ne _null_ _null_ _null_ ));
-DATA(insert OID = 166 ( int24le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "21 23" _null_ _null_ _null_ _null_ int24le _null_ _null_ _null_ ));
-DATA(insert OID = 167 ( int42le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "23 21" _null_ _null_ _null_ _null_ int42le _null_ _null_ _null_ ));
-DATA(insert OID = 168 ( int24ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "21 23" _null_ _null_ _null_ _null_ int24ge _null_ _null_ _null_ ));
-DATA(insert OID = 169 ( int42ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "23 21" _null_ _null_ _null_ _null_ int42ge _null_ _null_ _null_ ));
-DATA(insert OID = 170 ( int24mul PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "21 23" _null_ _null_ _null_ _null_ int24mul _null_ _null_ _null_ ));
-DATA(insert OID = 171 ( int42mul PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "23 21" _null_ _null_ _null_ _null_ int42mul _null_ _null_ _null_ ));
-DATA(insert OID = 172 ( int24div PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "21 23" _null_ _null_ _null_ _null_ int24div _null_ _null_ _null_ ));
-DATA(insert OID = 173 ( int42div PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "23 21" _null_ _null_ _null_ _null_ int42div _null_ _null_ _null_ ));
-DATA(insert OID = 176 ( int2pl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 21 "21 21" _null_ _null_ _null_ _null_ int2pl _null_ _null_ _null_ ));
-DATA(insert OID = 177 ( int4pl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4pl _null_ _null_ _null_ ));
-DATA(insert OID = 178 ( int24pl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "21 23" _null_ _null_ _null_ _null_ int24pl _null_ _null_ _null_ ));
-DATA(insert OID = 179 ( int42pl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "23 21" _null_ _null_ _null_ _null_ int42pl _null_ _null_ _null_ ));
-DATA(insert OID = 180 ( int2mi PGNSP PGUID 12 1 0 0 f f f t f i 2 0 21 "21 21" _null_ _null_ _null_ _null_ int2mi _null_ _null_ _null_ ));
-DATA(insert OID = 181 ( int4mi PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4mi _null_ _null_ _null_ ));
-DATA(insert OID = 182 ( int24mi PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "21 23" _null_ _null_ _null_ _null_ int24mi _null_ _null_ _null_ ));
-DATA(insert OID = 183 ( int42mi PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "23 21" _null_ _null_ _null_ _null_ int42mi _null_ _null_ _null_ ));
-DATA(insert OID = 184 ( oideq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "26 26" _null_ _null_ _null_ _null_ oideq _null_ _null_ _null_ ));
-DATA(insert OID = 185 ( oidne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "26 26" _null_ _null_ _null_ _null_ oidne _null_ _null_ _null_ ));
-DATA(insert OID = 186 ( box_same PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_same _null_ _null_ _null_ ));
-DATA(insert OID = 187 ( box_contain PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_contain _null_ _null_ _null_ ));
-DATA(insert OID = 188 ( box_left PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_left _null_ _null_ _null_ ));
-DATA(insert OID = 189 ( box_overleft PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_overleft _null_ _null_ _null_ ));
-DATA(insert OID = 190 ( box_overright PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_overright _null_ _null_ _null_ ));
-DATA(insert OID = 191 ( box_right PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_right _null_ _null_ _null_ ));
-DATA(insert OID = 192 ( box_contained PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_contained _null_ _null_ _null_ ));
-DATA(insert OID = 193 ( box_contain_pt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "603 600" _null_ _null_ _null_ _null_ box_contain_pt _null_ _null_ _null_ ));
-
-DATA(insert OID = 195 ( pg_node_tree_in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 194 "2275" _null_ _null_ _null_ _null_ pg_node_tree_in _null_ _null_ _null_ ));
-DESCR("I/O");
-DATA(insert OID = 196 ( pg_node_tree_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "194" _null_ _null_ _null_ _null_ pg_node_tree_out _null_ _null_ _null_ ));
-DESCR("I/O");
-DATA(insert OID = 197 ( pg_node_tree_recv PGNSP PGUID 12 1 0 0 f f f t f s 1 0 194 "2281" _null_ _null_ _null_ _null_ pg_node_tree_recv _null_ _null_ _null_ ));
-DESCR("I/O");
-DATA(insert OID = 198 ( pg_node_tree_send PGNSP PGUID 12 1 0 0 f f f t f s 1 0 17 "194" _null_ _null_ _null_ _null_ pg_node_tree_send _null_ _null_ _null_ ));
+DATA(insert OID = 141 ( int4mul PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4mul _null_ _null_ _null_ ));
+DATA(insert OID = 144 ( int4ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "23 23" _null_ _null_ _null_ _null_ int4ne _null_ _null_ _null_ ));
+DATA(insert OID = 145 ( int2ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "21 21" _null_ _null_ _null_ _null_ int2ne _null_ _null_ _null_ ));
+DATA(insert OID = 146 ( int2gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "21 21" _null_ _null_ _null_ _null_ int2gt _null_ _null_ _null_ ));
+DATA(insert OID = 147 ( int4gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "23 23" _null_ _null_ _null_ _null_ int4gt _null_ _null_ _null_ ));
+DATA(insert OID = 148 ( int2le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "21 21" _null_ _null_ _null_ _null_ int2le _null_ _null_ _null_ ));
+DATA(insert OID = 149 ( int4le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "23 23" _null_ _null_ _null_ _null_ int4le _null_ _null_ _null_ ));
+DATA(insert OID = 150 ( int4ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "23 23" _null_ _null_ _null_ _null_ int4ge _null_ _null_ _null_ ));
+DATA(insert OID = 151 ( int2ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "21 21" _null_ _null_ _null_ _null_ int2ge _null_ _null_ _null_ ));
+DATA(insert OID = 152 ( int2mul PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 21 "21 21" _null_ _null_ _null_ _null_ int2mul _null_ _null_ _null_ ));
+DATA(insert OID = 153 ( int2div PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 21 "21 21" _null_ _null_ _null_ _null_ int2div _null_ _null_ _null_ ));
+DATA(insert OID = 154 ( int4div PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4div _null_ _null_ _null_ ));
+DATA(insert OID = 155 ( int2mod PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 21 "21 21" _null_ _null_ _null_ _null_ int2mod _null_ _null_ _null_ ));
+DATA(insert OID = 156 ( int4mod PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4mod _null_ _null_ _null_ ));
+DATA(insert OID = 157 ( textne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ textne _null_ _null_ _null_ ));
+DATA(insert OID = 158 ( int24eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "21 23" _null_ _null_ _null_ _null_ int24eq _null_ _null_ _null_ ));
+DATA(insert OID = 159 ( int42eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "23 21" _null_ _null_ _null_ _null_ int42eq _null_ _null_ _null_ ));
+DATA(insert OID = 160 ( int24lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "21 23" _null_ _null_ _null_ _null_ int24lt _null_ _null_ _null_ ));
+DATA(insert OID = 161 ( int42lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "23 21" _null_ _null_ _null_ _null_ int42lt _null_ _null_ _null_ ));
+DATA(insert OID = 162 ( int24gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "21 23" _null_ _null_ _null_ _null_ int24gt _null_ _null_ _null_ ));
+DATA(insert OID = 163 ( int42gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "23 21" _null_ _null_ _null_ _null_ int42gt _null_ _null_ _null_ ));
+DATA(insert OID = 164 ( int24ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "21 23" _null_ _null_ _null_ _null_ int24ne _null_ _null_ _null_ ));
+DATA(insert OID = 165 ( int42ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "23 21" _null_ _null_ _null_ _null_ int42ne _null_ _null_ _null_ ));
+DATA(insert OID = 166 ( int24le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "21 23" _null_ _null_ _null_ _null_ int24le _null_ _null_ _null_ ));
+DATA(insert OID = 167 ( int42le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "23 21" _null_ _null_ _null_ _null_ int42le _null_ _null_ _null_ ));
+DATA(insert OID = 168 ( int24ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "21 23" _null_ _null_ _null_ _null_ int24ge _null_ _null_ _null_ ));
+DATA(insert OID = 169 ( int42ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "23 21" _null_ _null_ _null_ _null_ int42ge _null_ _null_ _null_ ));
+DATA(insert OID = 170 ( int24mul PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "21 23" _null_ _null_ _null_ _null_ int24mul _null_ _null_ _null_ ));
+DATA(insert OID = 171 ( int42mul PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "23 21" _null_ _null_ _null_ _null_ int42mul _null_ _null_ _null_ ));
+DATA(insert OID = 172 ( int24div PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "21 23" _null_ _null_ _null_ _null_ int24div _null_ _null_ _null_ ));
+DATA(insert OID = 173 ( int42div PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "23 21" _null_ _null_ _null_ _null_ int42div _null_ _null_ _null_ ));
+DATA(insert OID = 176 ( int2pl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 21 "21 21" _null_ _null_ _null_ _null_ int2pl _null_ _null_ _null_ ));
+DATA(insert OID = 177 ( int4pl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4pl _null_ _null_ _null_ ));
+DATA(insert OID = 178 ( int24pl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "21 23" _null_ _null_ _null_ _null_ int24pl _null_ _null_ _null_ ));
+DATA(insert OID = 179 ( int42pl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "23 21" _null_ _null_ _null_ _null_ int42pl _null_ _null_ _null_ ));
+DATA(insert OID = 180 ( int2mi PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 21 "21 21" _null_ _null_ _null_ _null_ int2mi _null_ _null_ _null_ ));
+DATA(insert OID = 181 ( int4mi PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4mi _null_ _null_ _null_ ));
+DATA(insert OID = 182 ( int24mi PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "21 23" _null_ _null_ _null_ _null_ int24mi _null_ _null_ _null_ ));
+DATA(insert OID = 183 ( int42mi PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "23 21" _null_ _null_ _null_ _null_ int42mi _null_ _null_ _null_ ));
+DATA(insert OID = 184 ( oideq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "26 26" _null_ _null_ _null_ _null_ oideq _null_ _null_ _null_ ));
+DATA(insert OID = 185 ( oidne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "26 26" _null_ _null_ _null_ _null_ oidne _null_ _null_ _null_ ));
+DATA(insert OID = 186 ( box_same PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_same _null_ _null_ _null_ ));
+DATA(insert OID = 187 ( box_contain PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_contain _null_ _null_ _null_ ));
+DATA(insert OID = 188 ( box_left PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_left _null_ _null_ _null_ ));
+DATA(insert OID = 189 ( box_overleft PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_overleft _null_ _null_ _null_ ));
+DATA(insert OID = 190 ( box_overright PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_overright _null_ _null_ _null_ ));
+DATA(insert OID = 191 ( box_right PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_right _null_ _null_ _null_ ));
+DATA(insert OID = 192 ( box_contained PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_contained _null_ _null_ _null_ ));
+DATA(insert OID = 193 ( box_contain_pt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "603 600" _null_ _null_ _null_ _null_ box_contain_pt _null_ _null_ _null_ ));
+
+DATA(insert OID = 195 ( pg_node_tree_in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 194 "2275" _null_ _null_ _null_ _null_ pg_node_tree_in _null_ _null_ _null_ ));
+DESCR("I/O");
+DATA(insert OID = 196 ( pg_node_tree_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "194" _null_ _null_ _null_ _null_ pg_node_tree_out _null_ _null_ _null_ ));
+DESCR("I/O");
+DATA(insert OID = 197 ( pg_node_tree_recv PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 194 "2281" _null_ _null_ _null_ _null_ pg_node_tree_recv _null_ _null_ _null_ ));
+DESCR("I/O");
+DATA(insert OID = 198 ( pg_node_tree_send PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 17 "194" _null_ _null_ _null_ _null_ pg_node_tree_send _null_ _null_ _null_ ));
DESCR("I/O");
/* OIDS 200 - 299 */
-DATA(insert OID = 200 ( float4in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 700 "2275" _null_ _null_ _null_ _null_ float4in _null_ _null_ _null_ ));
+DATA(insert OID = 200 ( float4in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 700 "2275" _null_ _null_ _null_ _null_ float4in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 201 ( float4out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "700" _null_ _null_ _null_ _null_ float4out _null_ _null_ _null_ ));
+DATA(insert OID = 201 ( float4out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "700" _null_ _null_ _null_ _null_ float4out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 202 ( float4mul PGNSP PGUID 12 1 0 0 f f f t f i 2 0 700 "700 700" _null_ _null_ _null_ _null_ float4mul _null_ _null_ _null_ ));
-DATA(insert OID = 203 ( float4div PGNSP PGUID 12 1 0 0 f f f t f i 2 0 700 "700 700" _null_ _null_ _null_ _null_ float4div _null_ _null_ _null_ ));
-DATA(insert OID = 204 ( float4pl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 700 "700 700" _null_ _null_ _null_ _null_ float4pl _null_ _null_ _null_ ));
-DATA(insert OID = 205 ( float4mi PGNSP PGUID 12 1 0 0 f f f t f i 2 0 700 "700 700" _null_ _null_ _null_ _null_ float4mi _null_ _null_ _null_ ));
-DATA(insert OID = 206 ( float4um PGNSP PGUID 12 1 0 0 f f f t f i 1 0 700 "700" _null_ _null_ _null_ _null_ float4um _null_ _null_ _null_ ));
-DATA(insert OID = 207 ( float4abs PGNSP PGUID 12 1 0 0 f f f t f i 1 0 700 "700" _null_ _null_ _null_ _null_ float4abs _null_ _null_ _null_ ));
-DATA(insert OID = 208 ( float4_accum PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1022 "1022 700" _null_ _null_ _null_ _null_ float4_accum _null_ _null_ _null_ ));
+DATA(insert OID = 202 ( float4mul PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 700 "700 700" _null_ _null_ _null_ _null_ float4mul _null_ _null_ _null_ ));
+DATA(insert OID = 203 ( float4div PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 700 "700 700" _null_ _null_ _null_ _null_ float4div _null_ _null_ _null_ ));
+DATA(insert OID = 204 ( float4pl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 700 "700 700" _null_ _null_ _null_ _null_ float4pl _null_ _null_ _null_ ));
+DATA(insert OID = 205 ( float4mi PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 700 "700 700" _null_ _null_ _null_ _null_ float4mi _null_ _null_ _null_ ));
+DATA(insert OID = 206 ( float4um PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 700 "700" _null_ _null_ _null_ _null_ float4um _null_ _null_ _null_ ));
+DATA(insert OID = 207 ( float4abs PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 700 "700" _null_ _null_ _null_ _null_ float4abs _null_ _null_ _null_ ));
+DATA(insert OID = 208 ( float4_accum PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1022 "1022 700" _null_ _null_ _null_ _null_ float4_accum _null_ _null_ _null_ ));
DESCR("aggregate transition function");
-DATA(insert OID = 209 ( float4larger PGNSP PGUID 12 1 0 0 f f f t f i 2 0 700 "700 700" _null_ _null_ _null_ _null_ float4larger _null_ _null_ _null_ ));
+DATA(insert OID = 209 ( float4larger PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 700 "700 700" _null_ _null_ _null_ _null_ float4larger _null_ _null_ _null_ ));
DESCR("larger of two");
-DATA(insert OID = 211 ( float4smaller PGNSP PGUID 12 1 0 0 f f f t f i 2 0 700 "700 700" _null_ _null_ _null_ _null_ float4smaller _null_ _null_ _null_ ));
+DATA(insert OID = 211 ( float4smaller PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 700 "700 700" _null_ _null_ _null_ _null_ float4smaller _null_ _null_ _null_ ));
DESCR("smaller of two");
-DATA(insert OID = 212 ( int4um PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "23" _null_ _null_ _null_ _null_ int4um _null_ _null_ _null_ ));
-DATA(insert OID = 213 ( int2um PGNSP PGUID 12 1 0 0 f f f t f i 1 0 21 "21" _null_ _null_ _null_ _null_ int2um _null_ _null_ _null_ ));
+DATA(insert OID = 212 ( int4um PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "23" _null_ _null_ _null_ _null_ int4um _null_ _null_ _null_ ));
+DATA(insert OID = 213 ( int2um PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 21 "21" _null_ _null_ _null_ _null_ int2um _null_ _null_ _null_ ));
-DATA(insert OID = 214 ( float8in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "2275" _null_ _null_ _null_ _null_ float8in _null_ _null_ _null_ ));
+DATA(insert OID = 214 ( float8in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "2275" _null_ _null_ _null_ _null_ float8in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 215 ( float8out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "701" _null_ _null_ _null_ _null_ float8out _null_ _null_ _null_ ));
+DATA(insert OID = 215 ( float8out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "701" _null_ _null_ _null_ _null_ float8out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 216 ( float8mul PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ float8mul _null_ _null_ _null_ ));
-DATA(insert OID = 217 ( float8div PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ float8div _null_ _null_ _null_ ));
-DATA(insert OID = 218 ( float8pl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ float8pl _null_ _null_ _null_ ));
-DATA(insert OID = 219 ( float8mi PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ float8mi _null_ _null_ _null_ ));
-DATA(insert OID = 220 ( float8um PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ float8um _null_ _null_ _null_ ));
-DATA(insert OID = 221 ( float8abs PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ float8abs _null_ _null_ _null_ ));
-DATA(insert OID = 222 ( float8_accum PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1022 "1022 701" _null_ _null_ _null_ _null_ float8_accum _null_ _null_ _null_ ));
+DATA(insert OID = 216 ( float8mul PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ float8mul _null_ _null_ _null_ ));
+DATA(insert OID = 217 ( float8div PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ float8div _null_ _null_ _null_ ));
+DATA(insert OID = 218 ( float8pl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ float8pl _null_ _null_ _null_ ));
+DATA(insert OID = 219 ( float8mi PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ float8mi _null_ _null_ _null_ ));
+DATA(insert OID = 220 ( float8um PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ float8um _null_ _null_ _null_ ));
+DATA(insert OID = 221 ( float8abs PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ float8abs _null_ _null_ _null_ ));
+DATA(insert OID = 222 ( float8_accum PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1022 "1022 701" _null_ _null_ _null_ _null_ float8_accum _null_ _null_ _null_ ));
DESCR("aggregate transition function");
-DATA(insert OID = 223 ( float8larger PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ float8larger _null_ _null_ _null_ ));
+DATA(insert OID = 223 ( float8larger PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ float8larger _null_ _null_ _null_ ));
DESCR("larger of two");
-DATA(insert OID = 224 ( float8smaller PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ float8smaller _null_ _null_ _null_ ));
+DATA(insert OID = 224 ( float8smaller PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ float8smaller _null_ _null_ _null_ ));
DESCR("smaller of two");
-DATA(insert OID = 225 ( lseg_center PGNSP PGUID 12 1 0 0 f f f t f i 1 0 600 "601" _null_ _null_ _null_ _null_ lseg_center _null_ _null_ _null_ ));
-DATA(insert OID = 226 ( path_center PGNSP PGUID 12 1 0 0 f f f t f i 1 0 600 "602" _null_ _null_ _null_ _null_ path_center _null_ _null_ _null_ ));
-DATA(insert OID = 227 ( poly_center PGNSP PGUID 12 1 0 0 f f f t f i 1 0 600 "604" _null_ _null_ _null_ _null_ poly_center _null_ _null_ _null_ ));
+DATA(insert OID = 225 ( lseg_center PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 600 "601" _null_ _null_ _null_ _null_ lseg_center _null_ _null_ _null_ ));
+DATA(insert OID = 226 ( path_center PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 600 "602" _null_ _null_ _null_ _null_ path_center _null_ _null_ _null_ ));
+DATA(insert OID = 227 ( poly_center PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 600 "604" _null_ _null_ _null_ _null_ poly_center _null_ _null_ _null_ ));
-DATA(insert OID = 228 ( dround PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dround _null_ _null_ _null_ ));
+DATA(insert OID = 228 ( dround PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dround _null_ _null_ _null_ ));
DESCR("round to nearest integer");
-DATA(insert OID = 229 ( dtrunc PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dtrunc _null_ _null_ _null_ ));
+DATA(insert OID = 229 ( dtrunc PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dtrunc _null_ _null_ _null_ ));
DESCR("truncate to integer");
-DATA(insert OID = 2308 ( ceil PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dceil _null_ _null_ _null_ ));
+DATA(insert OID = 2308 ( ceil PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dceil _null_ _null_ _null_ ));
DESCR("smallest integer >= value");
-DATA(insert OID = 2320 ( ceiling PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dceil _null_ _null_ _null_ ));
+DATA(insert OID = 2320 ( ceiling PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dceil _null_ _null_ _null_ ));
DESCR("smallest integer >= value");
-DATA(insert OID = 2309 ( floor PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dfloor _null_ _null_ _null_ ));
+DATA(insert OID = 2309 ( floor PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dfloor _null_ _null_ _null_ ));
DESCR("largest integer <= value");
-DATA(insert OID = 2310 ( sign PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dsign _null_ _null_ _null_ ));
+DATA(insert OID = 2310 ( sign PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dsign _null_ _null_ _null_ ));
DESCR("sign of value");
-DATA(insert OID = 230 ( dsqrt PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dsqrt _null_ _null_ _null_ ));
-DATA(insert OID = 231 ( dcbrt PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dcbrt _null_ _null_ _null_ ));
-DATA(insert OID = 232 ( dpow PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ dpow _null_ _null_ _null_ ));
-DATA(insert OID = 233 ( dexp PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dexp _null_ _null_ _null_ ));
+DATA(insert OID = 230 ( dsqrt PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dsqrt _null_ _null_ _null_ ));
+DATA(insert OID = 231 ( dcbrt PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dcbrt _null_ _null_ _null_ ));
+DATA(insert OID = 232 ( dpow PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ dpow _null_ _null_ _null_ ));
+DATA(insert OID = 233 ( dexp PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dexp _null_ _null_ _null_ ));
DESCR("natural exponential (e^x)");
-DATA(insert OID = 234 ( dlog1 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dlog1 _null_ _null_ _null_ ));
+DATA(insert OID = 234 ( dlog1 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dlog1 _null_ _null_ _null_ ));
DESCR("natural logarithm");
-DATA(insert OID = 235 ( float8 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "21" _null_ _null_ _null_ _null_ i2tod _null_ _null_ _null_ ));
+DATA(insert OID = 235 ( float8 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "21" _null_ _null_ _null_ _null_ i2tod _null_ _null_ _null_ ));
DESCR("convert int2 to float8");
-DATA(insert OID = 236 ( float4 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 700 "21" _null_ _null_ _null_ _null_ i2tof _null_ _null_ _null_ ));
+DATA(insert OID = 236 ( float4 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 700 "21" _null_ _null_ _null_ _null_ i2tof _null_ _null_ _null_ ));
DESCR("convert int2 to float4");
-DATA(insert OID = 237 ( int2 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 21 "701" _null_ _null_ _null_ _null_ dtoi2 _null_ _null_ _null_ ));
+DATA(insert OID = 237 ( int2 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 21 "701" _null_ _null_ _null_ _null_ dtoi2 _null_ _null_ _null_ ));
DESCR("convert float8 to int2");
-DATA(insert OID = 238 ( int2 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 21 "700" _null_ _null_ _null_ _null_ ftoi2 _null_ _null_ _null_ ));
+DATA(insert OID = 238 ( int2 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 21 "700" _null_ _null_ _null_ _null_ ftoi2 _null_ _null_ _null_ ));
DESCR("convert float4 to int2");
-DATA(insert OID = 239 ( line_distance PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "628 628" _null_ _null_ _null_ _null_ line_distance _null_ _null_ _null_ ));
+DATA(insert OID = 239 ( line_distance PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "628 628" _null_ _null_ _null_ _null_ line_distance _null_ _null_ _null_ ));
-DATA(insert OID = 240 ( abstimein PGNSP PGUID 12 1 0 0 f f f t f s 1 0 702 "2275" _null_ _null_ _null_ _null_ abstimein _null_ _null_ _null_ ));
+DATA(insert OID = 240 ( abstimein PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 702 "2275" _null_ _null_ _null_ _null_ abstimein _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 241 ( abstimeout PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "702" _null_ _null_ _null_ _null_ abstimeout _null_ _null_ _null_ ));
+DATA(insert OID = 241 ( abstimeout PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "702" _null_ _null_ _null_ _null_ abstimeout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 242 ( reltimein PGNSP PGUID 12 1 0 0 f f f t f s 1 0 703 "2275" _null_ _null_ _null_ _null_ reltimein _null_ _null_ _null_ ));
+DATA(insert OID = 242 ( reltimein PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 703 "2275" _null_ _null_ _null_ _null_ reltimein _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 243 ( reltimeout PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "703" _null_ _null_ _null_ _null_ reltimeout _null_ _null_ _null_ ));
+DATA(insert OID = 243 ( reltimeout PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "703" _null_ _null_ _null_ _null_ reltimeout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 244 ( timepl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 702 "702 703" _null_ _null_ _null_ _null_ timepl _null_ _null_ _null_ ));
-DATA(insert OID = 245 ( timemi PGNSP PGUID 12 1 0 0 f f f t f i 2 0 702 "702 703" _null_ _null_ _null_ _null_ timemi _null_ _null_ _null_ ));
-DATA(insert OID = 246 ( tintervalin PGNSP PGUID 12 1 0 0 f f f t f s 1 0 704 "2275" _null_ _null_ _null_ _null_ tintervalin _null_ _null_ _null_ ));
+DATA(insert OID = 244 ( timepl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 702 "702 703" _null_ _null_ _null_ _null_ timepl _null_ _null_ _null_ ));
+DATA(insert OID = 245 ( timemi PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 702 "702 703" _null_ _null_ _null_ _null_ timemi _null_ _null_ _null_ ));
+DATA(insert OID = 246 ( tintervalin PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 704 "2275" _null_ _null_ _null_ _null_ tintervalin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 247 ( tintervalout PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "704" _null_ _null_ _null_ _null_ tintervalout _null_ _null_ _null_ ));
+DATA(insert OID = 247 ( tintervalout PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "704" _null_ _null_ _null_ _null_ tintervalout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 248 ( intinterval PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "702 704" _null_ _null_ _null_ _null_ intinterval _null_ _null_ _null_ ));
-DATA(insert OID = 249 ( tintervalrel PGNSP PGUID 12 1 0 0 f f f t f i 1 0 703 "704" _null_ _null_ _null_ _null_ tintervalrel _null_ _null_ _null_ ));
+DATA(insert OID = 248 ( intinterval PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "702 704" _null_ _null_ _null_ _null_ intinterval _null_ _null_ _null_ ));
+DATA(insert OID = 249 ( tintervalrel PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 703 "704" _null_ _null_ _null_ _null_ tintervalrel _null_ _null_ _null_ ));
DESCR("tinterval to reltime");
-DATA(insert OID = 250 ( timenow PGNSP PGUID 12 1 0 0 f f f t f s 0 0 702 "" _null_ _null_ _null_ _null_ timenow _null_ _null_ _null_ ));
+DATA(insert OID = 250 ( timenow PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 702 "" _null_ _null_ _null_ _null_ timenow _null_ _null_ _null_ ));
DESCR("current date and time (abstime)");
-DATA(insert OID = 251 ( abstimeeq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "702 702" _null_ _null_ _null_ _null_ abstimeeq _null_ _null_ _null_ ));
-DATA(insert OID = 252 ( abstimene PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "702 702" _null_ _null_ _null_ _null_ abstimene _null_ _null_ _null_ ));
-DATA(insert OID = 253 ( abstimelt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "702 702" _null_ _null_ _null_ _null_ abstimelt _null_ _null_ _null_ ));
-DATA(insert OID = 254 ( abstimegt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "702 702" _null_ _null_ _null_ _null_ abstimegt _null_ _null_ _null_ ));
-DATA(insert OID = 255 ( abstimele PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "702 702" _null_ _null_ _null_ _null_ abstimele _null_ _null_ _null_ ));
-DATA(insert OID = 256 ( abstimege PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "702 702" _null_ _null_ _null_ _null_ abstimege _null_ _null_ _null_ ));
-DATA(insert OID = 257 ( reltimeeq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "703 703" _null_ _null_ _null_ _null_ reltimeeq _null_ _null_ _null_ ));
-DATA(insert OID = 258 ( reltimene PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "703 703" _null_ _null_ _null_ _null_ reltimene _null_ _null_ _null_ ));
-DATA(insert OID = 259 ( reltimelt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "703 703" _null_ _null_ _null_ _null_ reltimelt _null_ _null_ _null_ ));
-DATA(insert OID = 260 ( reltimegt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "703 703" _null_ _null_ _null_ _null_ reltimegt _null_ _null_ _null_ ));
-DATA(insert OID = 261 ( reltimele PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "703 703" _null_ _null_ _null_ _null_ reltimele _null_ _null_ _null_ ));
-DATA(insert OID = 262 ( reltimege PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "703 703" _null_ _null_ _null_ _null_ reltimege _null_ _null_ _null_ ));
-DATA(insert OID = 263 ( tintervalsame PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "704 704" _null_ _null_ _null_ _null_ tintervalsame _null_ _null_ _null_ ));
-DATA(insert OID = 264 ( tintervalct PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "704 704" _null_ _null_ _null_ _null_ tintervalct _null_ _null_ _null_ ));
-DATA(insert OID = 265 ( tintervalov PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "704 704" _null_ _null_ _null_ _null_ tintervalov _null_ _null_ _null_ ));
-DATA(insert OID = 266 ( tintervalleneq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "704 703" _null_ _null_ _null_ _null_ tintervalleneq _null_ _null_ _null_ ));
-DATA(insert OID = 267 ( tintervallenne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "704 703" _null_ _null_ _null_ _null_ tintervallenne _null_ _null_ _null_ ));
-DATA(insert OID = 268 ( tintervallenlt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "704 703" _null_ _null_ _null_ _null_ tintervallenlt _null_ _null_ _null_ ));
-DATA(insert OID = 269 ( tintervallengt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "704 703" _null_ _null_ _null_ _null_ tintervallengt _null_ _null_ _null_ ));
-DATA(insert OID = 270 ( tintervallenle PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "704 703" _null_ _null_ _null_ _null_ tintervallenle _null_ _null_ _null_ ));
-DATA(insert OID = 271 ( tintervallenge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "704 703" _null_ _null_ _null_ _null_ tintervallenge _null_ _null_ _null_ ));
-DATA(insert OID = 272 ( tintervalstart PGNSP PGUID 12 1 0 0 f f f t f i 1 0 702 "704" _null_ _null_ _null_ _null_ tintervalstart _null_ _null_ _null_ ));
-DATA(insert OID = 273 ( tintervalend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 702 "704" _null_ _null_ _null_ _null_ tintervalend _null_ _null_ _null_ ));
+DATA(insert OID = 251 ( abstimeeq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "702 702" _null_ _null_ _null_ _null_ abstimeeq _null_ _null_ _null_ ));
+DATA(insert OID = 252 ( abstimene PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "702 702" _null_ _null_ _null_ _null_ abstimene _null_ _null_ _null_ ));
+DATA(insert OID = 253 ( abstimelt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "702 702" _null_ _null_ _null_ _null_ abstimelt _null_ _null_ _null_ ));
+DATA(insert OID = 254 ( abstimegt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "702 702" _null_ _null_ _null_ _null_ abstimegt _null_ _null_ _null_ ));
+DATA(insert OID = 255 ( abstimele PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "702 702" _null_ _null_ _null_ _null_ abstimele _null_ _null_ _null_ ));
+DATA(insert OID = 256 ( abstimege PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "702 702" _null_ _null_ _null_ _null_ abstimege _null_ _null_ _null_ ));
+DATA(insert OID = 257 ( reltimeeq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "703 703" _null_ _null_ _null_ _null_ reltimeeq _null_ _null_ _null_ ));
+DATA(insert OID = 258 ( reltimene PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "703 703" _null_ _null_ _null_ _null_ reltimene _null_ _null_ _null_ ));
+DATA(insert OID = 259 ( reltimelt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "703 703" _null_ _null_ _null_ _null_ reltimelt _null_ _null_ _null_ ));
+DATA(insert OID = 260 ( reltimegt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "703 703" _null_ _null_ _null_ _null_ reltimegt _null_ _null_ _null_ ));
+DATA(insert OID = 261 ( reltimele PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "703 703" _null_ _null_ _null_ _null_ reltimele _null_ _null_ _null_ ));
+DATA(insert OID = 262 ( reltimege PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "703 703" _null_ _null_ _null_ _null_ reltimege _null_ _null_ _null_ ));
+DATA(insert OID = 263 ( tintervalsame PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "704 704" _null_ _null_ _null_ _null_ tintervalsame _null_ _null_ _null_ ));
+DATA(insert OID = 264 ( tintervalct PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "704 704" _null_ _null_ _null_ _null_ tintervalct _null_ _null_ _null_ ));
+DATA(insert OID = 265 ( tintervalov PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "704 704" _null_ _null_ _null_ _null_ tintervalov _null_ _null_ _null_ ));
+DATA(insert OID = 266 ( tintervalleneq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "704 703" _null_ _null_ _null_ _null_ tintervalleneq _null_ _null_ _null_ ));
+DATA(insert OID = 267 ( tintervallenne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "704 703" _null_ _null_ _null_ _null_ tintervallenne _null_ _null_ _null_ ));
+DATA(insert OID = 268 ( tintervallenlt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "704 703" _null_ _null_ _null_ _null_ tintervallenlt _null_ _null_ _null_ ));
+DATA(insert OID = 269 ( tintervallengt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "704 703" _null_ _null_ _null_ _null_ tintervallengt _null_ _null_ _null_ ));
+DATA(insert OID = 270 ( tintervallenle PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "704 703" _null_ _null_ _null_ _null_ tintervallenle _null_ _null_ _null_ ));
+DATA(insert OID = 271 ( tintervallenge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "704 703" _null_ _null_ _null_ _null_ tintervallenge _null_ _null_ _null_ ));
+DATA(insert OID = 272 ( tintervalstart PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 702 "704" _null_ _null_ _null_ _null_ tintervalstart _null_ _null_ _null_ ));
+DATA(insert OID = 273 ( tintervalend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 702 "704" _null_ _null_ _null_ _null_ tintervalend _null_ _null_ _null_ ));
DESCR("end of interval");
-DATA(insert OID = 274 ( timeofday PGNSP PGUID 12 1 0 0 f f f t f v 0 0 25 "" _null_ _null_ _null_ _null_ timeofday _null_ _null_ _null_ ));
+DATA(insert OID = 274 ( timeofday PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 25 "" _null_ _null_ _null_ _null_ timeofday _null_ _null_ _null_ ));
DESCR("current date and time - increments during transactions");
-DATA(insert OID = 275 ( isfinite PGNSP PGUID 12 1 0 0 f f f t f i 1 0 16 "702" _null_ _null_ _null_ _null_ abstime_finite _null_ _null_ _null_ ));
+DATA(insert OID = 275 ( isfinite PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 16 "702" _null_ _null_ _null_ _null_ abstime_finite _null_ _null_ _null_ ));
DESCR("finite abstime?");
-DATA(insert OID = 277 ( inter_sl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "601 628" _null_ _null_ _null_ _null_ inter_sl _null_ _null_ _null_ ));
-DATA(insert OID = 278 ( inter_lb PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "628 603" _null_ _null_ _null_ _null_ inter_lb _null_ _null_ _null_ ));
-
-DATA(insert OID = 279 ( float48mul PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "700 701" _null_ _null_ _null_ _null_ float48mul _null_ _null_ _null_ ));
-DATA(insert OID = 280 ( float48div PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "700 701" _null_ _null_ _null_ _null_ float48div _null_ _null_ _null_ ));
-DATA(insert OID = 281 ( float48pl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "700 701" _null_ _null_ _null_ _null_ float48pl _null_ _null_ _null_ ));
-DATA(insert OID = 282 ( float48mi PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "700 701" _null_ _null_ _null_ _null_ float48mi _null_ _null_ _null_ ));
-DATA(insert OID = 283 ( float84mul PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "701 700" _null_ _null_ _null_ _null_ float84mul _null_ _null_ _null_ ));
-DATA(insert OID = 284 ( float84div PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "701 700" _null_ _null_ _null_ _null_ float84div _null_ _null_ _null_ ));
-DATA(insert OID = 285 ( float84pl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "701 700" _null_ _null_ _null_ _null_ float84pl _null_ _null_ _null_ ));
-DATA(insert OID = 286 ( float84mi PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "701 700" _null_ _null_ _null_ _null_ float84mi _null_ _null_ _null_ ));
-
-DATA(insert OID = 287 ( float4eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "700 700" _null_ _null_ _null_ _null_ float4eq _null_ _null_ _null_ ));
-DATA(insert OID = 288 ( float4ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "700 700" _null_ _null_ _null_ _null_ float4ne _null_ _null_ _null_ ));
-DATA(insert OID = 289 ( float4lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "700 700" _null_ _null_ _null_ _null_ float4lt _null_ _null_ _null_ ));
-DATA(insert OID = 290 ( float4le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "700 700" _null_ _null_ _null_ _null_ float4le _null_ _null_ _null_ ));
-DATA(insert OID = 291 ( float4gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "700 700" _null_ _null_ _null_ _null_ float4gt _null_ _null_ _null_ ));
-DATA(insert OID = 292 ( float4ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "700 700" _null_ _null_ _null_ _null_ float4ge _null_ _null_ _null_ ));
-
-DATA(insert OID = 293 ( float8eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "701 701" _null_ _null_ _null_ _null_ float8eq _null_ _null_ _null_ ));
-DATA(insert OID = 294 ( float8ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "701 701" _null_ _null_ _null_ _null_ float8ne _null_ _null_ _null_ ));
-DATA(insert OID = 295 ( float8lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "701 701" _null_ _null_ _null_ _null_ float8lt _null_ _null_ _null_ ));
-DATA(insert OID = 296 ( float8le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "701 701" _null_ _null_ _null_ _null_ float8le _null_ _null_ _null_ ));
-DATA(insert OID = 297 ( float8gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "701 701" _null_ _null_ _null_ _null_ float8gt _null_ _null_ _null_ ));
-DATA(insert OID = 298 ( float8ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "701 701" _null_ _null_ _null_ _null_ float8ge _null_ _null_ _null_ ));
-
-DATA(insert OID = 299 ( float48eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "700 701" _null_ _null_ _null_ _null_ float48eq _null_ _null_ _null_ ));
+DATA(insert OID = 277 ( inter_sl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "601 628" _null_ _null_ _null_ _null_ inter_sl _null_ _null_ _null_ ));
+DATA(insert OID = 278 ( inter_lb PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "628 603" _null_ _null_ _null_ _null_ inter_lb _null_ _null_ _null_ ));
+
+DATA(insert OID = 279 ( float48mul PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "700 701" _null_ _null_ _null_ _null_ float48mul _null_ _null_ _null_ ));
+DATA(insert OID = 280 ( float48div PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "700 701" _null_ _null_ _null_ _null_ float48div _null_ _null_ _null_ ));
+DATA(insert OID = 281 ( float48pl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "700 701" _null_ _null_ _null_ _null_ float48pl _null_ _null_ _null_ ));
+DATA(insert OID = 282 ( float48mi PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "700 701" _null_ _null_ _null_ _null_ float48mi _null_ _null_ _null_ ));
+DATA(insert OID = 283 ( float84mul PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "701 700" _null_ _null_ _null_ _null_ float84mul _null_ _null_ _null_ ));
+DATA(insert OID = 284 ( float84div PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "701 700" _null_ _null_ _null_ _null_ float84div _null_ _null_ _null_ ));
+DATA(insert OID = 285 ( float84pl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "701 700" _null_ _null_ _null_ _null_ float84pl _null_ _null_ _null_ ));
+DATA(insert OID = 286 ( float84mi PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "701 700" _null_ _null_ _null_ _null_ float84mi _null_ _null_ _null_ ));
+
+DATA(insert OID = 287 ( float4eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "700 700" _null_ _null_ _null_ _null_ float4eq _null_ _null_ _null_ ));
+DATA(insert OID = 288 ( float4ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "700 700" _null_ _null_ _null_ _null_ float4ne _null_ _null_ _null_ ));
+DATA(insert OID = 289 ( float4lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "700 700" _null_ _null_ _null_ _null_ float4lt _null_ _null_ _null_ ));
+DATA(insert OID = 290 ( float4le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "700 700" _null_ _null_ _null_ _null_ float4le _null_ _null_ _null_ ));
+DATA(insert OID = 291 ( float4gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "700 700" _null_ _null_ _null_ _null_ float4gt _null_ _null_ _null_ ));
+DATA(insert OID = 292 ( float4ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "700 700" _null_ _null_ _null_ _null_ float4ge _null_ _null_ _null_ ));
+
+DATA(insert OID = 293 ( float8eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "701 701" _null_ _null_ _null_ _null_ float8eq _null_ _null_ _null_ ));
+DATA(insert OID = 294 ( float8ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "701 701" _null_ _null_ _null_ _null_ float8ne _null_ _null_ _null_ ));
+DATA(insert OID = 295 ( float8lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "701 701" _null_ _null_ _null_ _null_ float8lt _null_ _null_ _null_ ));
+DATA(insert OID = 296 ( float8le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "701 701" _null_ _null_ _null_ _null_ float8le _null_ _null_ _null_ ));
+DATA(insert OID = 297 ( float8gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "701 701" _null_ _null_ _null_ _null_ float8gt _null_ _null_ _null_ ));
+DATA(insert OID = 298 ( float8ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "701 701" _null_ _null_ _null_ _null_ float8ge _null_ _null_ _null_ ));
+
+DATA(insert OID = 299 ( float48eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "700 701" _null_ _null_ _null_ _null_ float48eq _null_ _null_ _null_ ));
/* OIDS 300 - 399 */
-DATA(insert OID = 300 ( float48ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "700 701" _null_ _null_ _null_ _null_ float48ne _null_ _null_ _null_ ));
-DATA(insert OID = 301 ( float48lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "700 701" _null_ _null_ _null_ _null_ float48lt _null_ _null_ _null_ ));
-DATA(insert OID = 302 ( float48le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "700 701" _null_ _null_ _null_ _null_ float48le _null_ _null_ _null_ ));
-DATA(insert OID = 303 ( float48gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "700 701" _null_ _null_ _null_ _null_ float48gt _null_ _null_ _null_ ));
-DATA(insert OID = 304 ( float48ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "700 701" _null_ _null_ _null_ _null_ float48ge _null_ _null_ _null_ ));
-DATA(insert OID = 305 ( float84eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "701 700" _null_ _null_ _null_ _null_ float84eq _null_ _null_ _null_ ));
-DATA(insert OID = 306 ( float84ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "701 700" _null_ _null_ _null_ _null_ float84ne _null_ _null_ _null_ ));
-DATA(insert OID = 307 ( float84lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "701 700" _null_ _null_ _null_ _null_ float84lt _null_ _null_ _null_ ));
-DATA(insert OID = 308 ( float84le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "701 700" _null_ _null_ _null_ _null_ float84le _null_ _null_ _null_ ));
-DATA(insert OID = 309 ( float84gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "701 700" _null_ _null_ _null_ _null_ float84gt _null_ _null_ _null_ ));
-DATA(insert OID = 310 ( float84ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "701 700" _null_ _null_ _null_ _null_ float84ge _null_ _null_ _null_ ));
-DATA(insert OID = 320 ( width_bucket PGNSP PGUID 12 1 0 0 f f f t f i 4 0 23 "701 701 701 23" _null_ _null_ _null_ _null_ width_bucket_float8 _null_ _null_ _null_ ));
+DATA(insert OID = 300 ( float48ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "700 701" _null_ _null_ _null_ _null_ float48ne _null_ _null_ _null_ ));
+DATA(insert OID = 301 ( float48lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "700 701" _null_ _null_ _null_ _null_ float48lt _null_ _null_ _null_ ));
+DATA(insert OID = 302 ( float48le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "700 701" _null_ _null_ _null_ _null_ float48le _null_ _null_ _null_ ));
+DATA(insert OID = 303 ( float48gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "700 701" _null_ _null_ _null_ _null_ float48gt _null_ _null_ _null_ ));
+DATA(insert OID = 304 ( float48ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "700 701" _null_ _null_ _null_ _null_ float48ge _null_ _null_ _null_ ));
+DATA(insert OID = 305 ( float84eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "701 700" _null_ _null_ _null_ _null_ float84eq _null_ _null_ _null_ ));
+DATA(insert OID = 306 ( float84ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "701 700" _null_ _null_ _null_ _null_ float84ne _null_ _null_ _null_ ));
+DATA(insert OID = 307 ( float84lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "701 700" _null_ _null_ _null_ _null_ float84lt _null_ _null_ _null_ ));
+DATA(insert OID = 308 ( float84le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "701 700" _null_ _null_ _null_ _null_ float84le _null_ _null_ _null_ ));
+DATA(insert OID = 309 ( float84gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "701 700" _null_ _null_ _null_ _null_ float84gt _null_ _null_ _null_ ));
+DATA(insert OID = 310 ( float84ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "701 700" _null_ _null_ _null_ _null_ float84ge _null_ _null_ _null_ ));
+DATA(insert OID = 320 ( width_bucket PGNSP PGUID 12 1 0 0 0 f f f t f i 4 0 23 "701 701 701 23" _null_ _null_ _null_ _null_ width_bucket_float8 _null_ _null_ _null_ ));
DESCR("bucket number of operand in equidepth histogram");
-DATA(insert OID = 311 ( float8 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "700" _null_ _null_ _null_ _null_ ftod _null_ _null_ _null_ ));
+DATA(insert OID = 311 ( float8 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "700" _null_ _null_ _null_ _null_ ftod _null_ _null_ _null_ ));
DESCR("convert float4 to float8");
-DATA(insert OID = 312 ( float4 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 700 "701" _null_ _null_ _null_ _null_ dtof _null_ _null_ _null_ ));
+DATA(insert OID = 312 ( float4 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 700 "701" _null_ _null_ _null_ _null_ dtof _null_ _null_ _null_ ));
DESCR("convert float8 to float4");
-DATA(insert OID = 313 ( int4 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "21" _null_ _null_ _null_ _null_ i2toi4 _null_ _null_ _null_ ));
+DATA(insert OID = 313 ( int4 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "21" _null_ _null_ _null_ _null_ i2toi4 _null_ _null_ _null_ ));
DESCR("convert int2 to int4");
-DATA(insert OID = 314 ( int2 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 21 "23" _null_ _null_ _null_ _null_ i4toi2 _null_ _null_ _null_ ));
+DATA(insert OID = 314 ( int2 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 21 "23" _null_ _null_ _null_ _null_ i4toi2 _null_ _null_ _null_ ));
DESCR("convert int4 to int2");
-DATA(insert OID = 315 ( int2vectoreq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "22 22" _null_ _null_ _null_ _null_ int2vectoreq _null_ _null_ _null_ ));
-DATA(insert OID = 316 ( float8 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "23" _null_ _null_ _null_ _null_ i4tod _null_ _null_ _null_ ));
+DATA(insert OID = 315 ( int2vectoreq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "22 22" _null_ _null_ _null_ _null_ int2vectoreq _null_ _null_ _null_ ));
+DATA(insert OID = 316 ( float8 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "23" _null_ _null_ _null_ _null_ i4tod _null_ _null_ _null_ ));
DESCR("convert int4 to float8");
-DATA(insert OID = 317 ( int4 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "701" _null_ _null_ _null_ _null_ dtoi4 _null_ _null_ _null_ ));
+DATA(insert OID = 317 ( int4 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "701" _null_ _null_ _null_ _null_ dtoi4 _null_ _null_ _null_ ));
DESCR("convert float8 to int4");
-DATA(insert OID = 318 ( float4 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 700 "23" _null_ _null_ _null_ _null_ i4tof _null_ _null_ _null_ ));
+DATA(insert OID = 318 ( float4 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 700 "23" _null_ _null_ _null_ _null_ i4tof _null_ _null_ _null_ ));
DESCR("convert int4 to float4");
-DATA(insert OID = 319 ( int4 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "700" _null_ _null_ _null_ _null_ ftoi4 _null_ _null_ _null_ ));
+DATA(insert OID = 319 ( int4 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "700" _null_ _null_ _null_ _null_ ftoi4 _null_ _null_ _null_ ));
DESCR("convert float4 to int4");
-DATA(insert OID = 330 ( btgettuple PGNSP PGUID 12 1 0 0 f f f t f v 2 0 16 "2281 2281" _null_ _null_ _null_ _null_ btgettuple _null_ _null_ _null_ ));
+DATA(insert OID = 330 ( btgettuple PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 16 "2281 2281" _null_ _null_ _null_ _null_ btgettuple _null_ _null_ _null_ ));
DESCR("btree(internal)");
-DATA(insert OID = 636 ( btgetbitmap PGNSP PGUID 12 1 0 0 f f f t f v 2 0 20 "2281 2281" _null_ _null_ _null_ _null_ btgetbitmap _null_ _null_ _null_ ));
+DATA(insert OID = 636 ( btgetbitmap PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 20 "2281 2281" _null_ _null_ _null_ _null_ btgetbitmap _null_ _null_ _null_ ));
DESCR("btree(internal)");
-DATA(insert OID = 331 ( btinsert PGNSP PGUID 12 1 0 0 f f f t f v 6 0 16 "2281 2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ btinsert _null_ _null_ _null_ ));
+DATA(insert OID = 331 ( btinsert PGNSP PGUID 12 1 0 0 0 f f f t f v 6 0 16 "2281 2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ btinsert _null_ _null_ _null_ ));
DESCR("btree(internal)");
-DATA(insert OID = 333 ( btbeginscan PGNSP PGUID 12 1 0 0 f f f t f v 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ btbeginscan _null_ _null_ _null_ ));
+DATA(insert OID = 333 ( btbeginscan PGNSP PGUID 12 1 0 0 0 f f f t f v 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ btbeginscan _null_ _null_ _null_ ));
DESCR("btree(internal)");
-DATA(insert OID = 334 ( btrescan PGNSP PGUID 12 1 0 0 f f f t f v 5 0 2278 "2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ btrescan _null_ _null_ _null_ ));
+DATA(insert OID = 334 ( btrescan PGNSP PGUID 12 1 0 0 0 f f f t f v 5 0 2278 "2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ btrescan _null_ _null_ _null_ ));
DESCR("btree(internal)");
-DATA(insert OID = 335 ( btendscan PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ btendscan _null_ _null_ _null_ ));
+DATA(insert OID = 335 ( btendscan PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ btendscan _null_ _null_ _null_ ));
DESCR("btree(internal)");
-DATA(insert OID = 336 ( btmarkpos PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ btmarkpos _null_ _null_ _null_ ));
+DATA(insert OID = 336 ( btmarkpos PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ btmarkpos _null_ _null_ _null_ ));
DESCR("btree(internal)");
-DATA(insert OID = 337 ( btrestrpos PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ btrestrpos _null_ _null_ _null_ ));
+DATA(insert OID = 337 ( btrestrpos PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ btrestrpos _null_ _null_ _null_ ));
DESCR("btree(internal)");
-DATA(insert OID = 338 ( btbuild PGNSP PGUID 12 1 0 0 f f f t f v 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ btbuild _null_ _null_ _null_ ));
+DATA(insert OID = 338 ( btbuild PGNSP PGUID 12 1 0 0 0 f f f t f v 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ btbuild _null_ _null_ _null_ ));
DESCR("btree(internal)");
-DATA(insert OID = 328 ( btbuildempty PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ btbuildempty _null_ _null_ _null_ ));
+DATA(insert OID = 328 ( btbuildempty PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ btbuildempty _null_ _null_ _null_ ));
DESCR("btree(internal)");
-DATA(insert OID = 332 ( btbulkdelete PGNSP PGUID 12 1 0 0 f f f t f v 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ btbulkdelete _null_ _null_ _null_ ));
+DATA(insert OID = 332 ( btbulkdelete PGNSP PGUID 12 1 0 0 0 f f f t f v 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ btbulkdelete _null_ _null_ _null_ ));
DESCR("btree(internal)");
-DATA(insert OID = 972 ( btvacuumcleanup PGNSP PGUID 12 1 0 0 f f f t f v 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ btvacuumcleanup _null_ _null_ _null_ ));
+DATA(insert OID = 972 ( btvacuumcleanup PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ btvacuumcleanup _null_ _null_ _null_ ));
DESCR("btree(internal)");
-DATA(insert OID = 1268 ( btcostestimate PGNSP PGUID 12 1 0 0 f f f t f v 9 0 2278 "2281 2281 2281 2281 2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ btcostestimate _null_ _null_ _null_ ));
+DATA(insert OID = 1268 ( btcostestimate PGNSP PGUID 12 1 0 0 0 f f f t f v 9 0 2278 "2281 2281 2281 2281 2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ btcostestimate _null_ _null_ _null_ ));
DESCR("btree(internal)");
-DATA(insert OID = 2785 ( btoptions PGNSP PGUID 12 1 0 0 f f f t f s 2 0 17 "1009 16" _null_ _null_ _null_ _null_ btoptions _null_ _null_ _null_ ));
+DATA(insert OID = 2785 ( btoptions PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 17 "1009 16" _null_ _null_ _null_ _null_ btoptions _null_ _null_ _null_ ));
DESCR("btree(internal)");
-DATA(insert OID = 339 ( poly_same PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_same _null_ _null_ _null_ ));
-DATA(insert OID = 340 ( poly_contain PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_contain _null_ _null_ _null_ ));
-DATA(insert OID = 341 ( poly_left PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_left _null_ _null_ _null_ ));
-DATA(insert OID = 342 ( poly_overleft PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_overleft _null_ _null_ _null_ ));
-DATA(insert OID = 343 ( poly_overright PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_overright _null_ _null_ _null_ ));
-DATA(insert OID = 344 ( poly_right PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_right _null_ _null_ _null_ ));
-DATA(insert OID = 345 ( poly_contained PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_contained _null_ _null_ _null_ ));
-DATA(insert OID = 346 ( poly_overlap PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_overlap _null_ _null_ _null_ ));
-DATA(insert OID = 347 ( poly_in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 604 "2275" _null_ _null_ _null_ _null_ poly_in _null_ _null_ _null_ ));
+DATA(insert OID = 339 ( poly_same PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_same _null_ _null_ _null_ ));
+DATA(insert OID = 340 ( poly_contain PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_contain _null_ _null_ _null_ ));
+DATA(insert OID = 341 ( poly_left PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_left _null_ _null_ _null_ ));
+DATA(insert OID = 342 ( poly_overleft PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_overleft _null_ _null_ _null_ ));
+DATA(insert OID = 343 ( poly_overright PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_overright _null_ _null_ _null_ ));
+DATA(insert OID = 344 ( poly_right PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_right _null_ _null_ _null_ ));
+DATA(insert OID = 345 ( poly_contained PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_contained _null_ _null_ _null_ ));
+DATA(insert OID = 346 ( poly_overlap PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_overlap _null_ _null_ _null_ ));
+DATA(insert OID = 347 ( poly_in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 604 "2275" _null_ _null_ _null_ _null_ poly_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 348 ( poly_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "604" _null_ _null_ _null_ _null_ poly_out _null_ _null_ _null_ ));
+DATA(insert OID = 348 ( poly_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "604" _null_ _null_ _null_ _null_ poly_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 350 ( btint2cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "21 21" _null_ _null_ _null_ _null_ btint2cmp _null_ _null_ _null_ ));
+DATA(insert OID = 350 ( btint2cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "21 21" _null_ _null_ _null_ _null_ btint2cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 351 ( btint4cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ btint4cmp _null_ _null_ _null_ ));
+DATA(insert OID = 351 ( btint4cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ btint4cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 842 ( btint8cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "20 20" _null_ _null_ _null_ _null_ btint8cmp _null_ _null_ _null_ ));
+DATA(insert OID = 842 ( btint8cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "20 20" _null_ _null_ _null_ _null_ btint8cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 354 ( btfloat4cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "700 700" _null_ _null_ _null_ _null_ btfloat4cmp _null_ _null_ _null_ ));
+DATA(insert OID = 354 ( btfloat4cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "700 700" _null_ _null_ _null_ _null_ btfloat4cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 355 ( btfloat8cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "701 701" _null_ _null_ _null_ _null_ btfloat8cmp _null_ _null_ _null_ ));
+DATA(insert OID = 355 ( btfloat8cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "701 701" _null_ _null_ _null_ _null_ btfloat8cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 356 ( btoidcmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "26 26" _null_ _null_ _null_ _null_ btoidcmp _null_ _null_ _null_ ));
+DATA(insert OID = 356 ( btoidcmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "26 26" _null_ _null_ _null_ _null_ btoidcmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 404 ( btoidvectorcmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "30 30" _null_ _null_ _null_ _null_ btoidvectorcmp _null_ _null_ _null_ ));
+DATA(insert OID = 404 ( btoidvectorcmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "30 30" _null_ _null_ _null_ _null_ btoidvectorcmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 357 ( btabstimecmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "702 702" _null_ _null_ _null_ _null_ btabstimecmp _null_ _null_ _null_ ));
+DATA(insert OID = 357 ( btabstimecmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "702 702" _null_ _null_ _null_ _null_ btabstimecmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 358 ( btcharcmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "18 18" _null_ _null_ _null_ _null_ btcharcmp _null_ _null_ _null_ ));
+DATA(insert OID = 358 ( btcharcmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "18 18" _null_ _null_ _null_ _null_ btcharcmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 359 ( btnamecmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "19 19" _null_ _null_ _null_ _null_ btnamecmp _null_ _null_ _null_ ));
+DATA(insert OID = 359 ( btnamecmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "19 19" _null_ _null_ _null_ _null_ btnamecmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 360 ( bttextcmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "25 25" _null_ _null_ _null_ _null_ bttextcmp _null_ _null_ _null_ ));
+DATA(insert OID = 360 ( bttextcmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "25 25" _null_ _null_ _null_ _null_ bttextcmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 377 ( cash_cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "790 790" _null_ _null_ _null_ _null_ cash_cmp _null_ _null_ _null_ ));
+DATA(insert OID = 377 ( cash_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "790 790" _null_ _null_ _null_ _null_ cash_cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 380 ( btreltimecmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "703 703" _null_ _null_ _null_ _null_ btreltimecmp _null_ _null_ _null_ ));
+DATA(insert OID = 380 ( btreltimecmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "703 703" _null_ _null_ _null_ _null_ btreltimecmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 381 ( bttintervalcmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "704 704" _null_ _null_ _null_ _null_ bttintervalcmp _null_ _null_ _null_ ));
+DATA(insert OID = 381 ( bttintervalcmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "704 704" _null_ _null_ _null_ _null_ bttintervalcmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 382 ( btarraycmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "2277 2277" _null_ _null_ _null_ _null_ btarraycmp _null_ _null_ _null_ ));
+DATA(insert OID = 382 ( btarraycmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "2277 2277" _null_ _null_ _null_ _null_ btarraycmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 361 ( lseg_distance PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "601 601" _null_ _null_ _null_ _null_ lseg_distance _null_ _null_ _null_ ));
-DATA(insert OID = 362 ( lseg_interpt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 600 "601 601" _null_ _null_ _null_ _null_ lseg_interpt _null_ _null_ _null_ ));
-DATA(insert OID = 363 ( dist_ps PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "600 601" _null_ _null_ _null_ _null_ dist_ps _null_ _null_ _null_ ));
-DATA(insert OID = 364 ( dist_pb PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "600 603" _null_ _null_ _null_ _null_ dist_pb _null_ _null_ _null_ ));
-DATA(insert OID = 365 ( dist_sb PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "601 603" _null_ _null_ _null_ _null_ dist_sb _null_ _null_ _null_ ));
-DATA(insert OID = 366 ( close_ps PGNSP PGUID 12 1 0 0 f f f t f i 2 0 600 "600 601" _null_ _null_ _null_ _null_ close_ps _null_ _null_ _null_ ));
-DATA(insert OID = 367 ( close_pb PGNSP PGUID 12 1 0 0 f f f t f i 2 0 600 "600 603" _null_ _null_ _null_ _null_ close_pb _null_ _null_ _null_ ));
-DATA(insert OID = 368 ( close_sb PGNSP PGUID 12 1 0 0 f f f t f i 2 0 600 "601 603" _null_ _null_ _null_ _null_ close_sb _null_ _null_ _null_ ));
-DATA(insert OID = 369 ( on_ps PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "600 601" _null_ _null_ _null_ _null_ on_ps _null_ _null_ _null_ ));
-DATA(insert OID = 370 ( path_distance PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "602 602" _null_ _null_ _null_ _null_ path_distance _null_ _null_ _null_ ));
-DATA(insert OID = 371 ( dist_ppath PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "600 602" _null_ _null_ _null_ _null_ dist_ppath _null_ _null_ _null_ ));
-DATA(insert OID = 372 ( on_sb PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "601 603" _null_ _null_ _null_ _null_ on_sb _null_ _null_ _null_ ));
-DATA(insert OID = 373 ( inter_sb PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "601 603" _null_ _null_ _null_ _null_ inter_sb _null_ _null_ _null_ ));
+DATA(insert OID = 361 ( lseg_distance PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "601 601" _null_ _null_ _null_ _null_ lseg_distance _null_ _null_ _null_ ));
+DATA(insert OID = 362 ( lseg_interpt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 600 "601 601" _null_ _null_ _null_ _null_ lseg_interpt _null_ _null_ _null_ ));
+DATA(insert OID = 363 ( dist_ps PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "600 601" _null_ _null_ _null_ _null_ dist_ps _null_ _null_ _null_ ));
+DATA(insert OID = 364 ( dist_pb PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "600 603" _null_ _null_ _null_ _null_ dist_pb _null_ _null_ _null_ ));
+DATA(insert OID = 365 ( dist_sb PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "601 603" _null_ _null_ _null_ _null_ dist_sb _null_ _null_ _null_ ));
+DATA(insert OID = 366 ( close_ps PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 600 "600 601" _null_ _null_ _null_ _null_ close_ps _null_ _null_ _null_ ));
+DATA(insert OID = 367 ( close_pb PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 600 "600 603" _null_ _null_ _null_ _null_ close_pb _null_ _null_ _null_ ));
+DATA(insert OID = 368 ( close_sb PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 600 "601 603" _null_ _null_ _null_ _null_ close_sb _null_ _null_ _null_ ));
+DATA(insert OID = 369 ( on_ps PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "600 601" _null_ _null_ _null_ _null_ on_ps _null_ _null_ _null_ ));
+DATA(insert OID = 370 ( path_distance PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "602 602" _null_ _null_ _null_ _null_ path_distance _null_ _null_ _null_ ));
+DATA(insert OID = 371 ( dist_ppath PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "600 602" _null_ _null_ _null_ _null_ dist_ppath _null_ _null_ _null_ ));
+DATA(insert OID = 372 ( on_sb PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "601 603" _null_ _null_ _null_ _null_ on_sb _null_ _null_ _null_ ));
+DATA(insert OID = 373 ( inter_sb PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "601 603" _null_ _null_ _null_ _null_ inter_sb _null_ _null_ _null_ ));
/* OIDS 400 - 499 */
-DATA(insert OID = 401 ( text PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "1042" _null_ _null_ _null_ _null_ rtrim1 _null_ _null_ _null_ ));
+DATA(insert OID = 401 ( text PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "1042" _null_ _null_ _null_ _null_ rtrim1 _null_ _null_ _null_ ));
DESCR("convert char(n) to text");
-DATA(insert OID = 406 ( text PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "19" _null_ _null_ _null_ _null_ name_text _null_ _null_ _null_ ));
+DATA(insert OID = 406 ( text PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "19" _null_ _null_ _null_ _null_ name_text _null_ _null_ _null_ ));
DESCR("convert name to text");
-DATA(insert OID = 407 ( name PGNSP PGUID 12 1 0 0 f f f t f i 1 0 19 "25" _null_ _null_ _null_ _null_ text_name _null_ _null_ _null_ ));
+DATA(insert OID = 407 ( name PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 19 "25" _null_ _null_ _null_ _null_ text_name _null_ _null_ _null_ ));
DESCR("convert text to name");
-DATA(insert OID = 408 ( bpchar PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1042 "19" _null_ _null_ _null_ _null_ name_bpchar _null_ _null_ _null_ ));
+DATA(insert OID = 408 ( bpchar PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1042 "19" _null_ _null_ _null_ _null_ name_bpchar _null_ _null_ _null_ ));
DESCR("convert name to char(n)");
-DATA(insert OID = 409 ( name PGNSP PGUID 12 1 0 0 f f f t f i 1 0 19 "1042" _null_ _null_ _null_ _null_ bpchar_name _null_ _null_ _null_ ));
+DATA(insert OID = 409 ( name PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 19 "1042" _null_ _null_ _null_ _null_ bpchar_name _null_ _null_ _null_ ));
DESCR("convert char(n) to name");
-DATA(insert OID = 440 ( hashgettuple PGNSP PGUID 12 1 0 0 f f f t f v 2 0 16 "2281 2281" _null_ _null_ _null_ _null_ hashgettuple _null_ _null_ _null_ ));
+DATA(insert OID = 440 ( hashgettuple PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 16 "2281 2281" _null_ _null_ _null_ _null_ hashgettuple _null_ _null_ _null_ ));
DESCR("hash(internal)");
-DATA(insert OID = 637 ( hashgetbitmap PGNSP PGUID 12 1 0 0 f f f t f v 2 0 20 "2281 2281" _null_ _null_ _null_ _null_ hashgetbitmap _null_ _null_ _null_ ));
+DATA(insert OID = 637 ( hashgetbitmap PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 20 "2281 2281" _null_ _null_ _null_ _null_ hashgetbitmap _null_ _null_ _null_ ));
DESCR("hash(internal)");
-DATA(insert OID = 441 ( hashinsert PGNSP PGUID 12 1 0 0 f f f t f v 6 0 16 "2281 2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ hashinsert _null_ _null_ _null_ ));
+DATA(insert OID = 441 ( hashinsert PGNSP PGUID 12 1 0 0 0 f f f t f v 6 0 16 "2281 2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ hashinsert _null_ _null_ _null_ ));
DESCR("hash(internal)");
-DATA(insert OID = 443 ( hashbeginscan PGNSP PGUID 12 1 0 0 f f f t f v 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ hashbeginscan _null_ _null_ _null_ ));
+DATA(insert OID = 443 ( hashbeginscan PGNSP PGUID 12 1 0 0 0 f f f t f v 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ hashbeginscan _null_ _null_ _null_ ));
DESCR("hash(internal)");
-DATA(insert OID = 444 ( hashrescan PGNSP PGUID 12 1 0 0 f f f t f v 5 0 2278 "2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ hashrescan _null_ _null_ _null_ ));
+DATA(insert OID = 444 ( hashrescan PGNSP PGUID 12 1 0 0 0 f f f t f v 5 0 2278 "2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ hashrescan _null_ _null_ _null_ ));
DESCR("hash(internal)");
-DATA(insert OID = 445 ( hashendscan PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ hashendscan _null_ _null_ _null_ ));
+DATA(insert OID = 445 ( hashendscan PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ hashendscan _null_ _null_ _null_ ));
DESCR("hash(internal)");
-DATA(insert OID = 446 ( hashmarkpos PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ hashmarkpos _null_ _null_ _null_ ));
+DATA(insert OID = 446 ( hashmarkpos PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ hashmarkpos _null_ _null_ _null_ ));
DESCR("hash(internal)");
-DATA(insert OID = 447 ( hashrestrpos PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ hashrestrpos _null_ _null_ _null_ ));
+DATA(insert OID = 447 ( hashrestrpos PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ hashrestrpos _null_ _null_ _null_ ));
DESCR("hash(internal)");
-DATA(insert OID = 448 ( hashbuild PGNSP PGUID 12 1 0 0 f f f t f v 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ hashbuild _null_ _null_ _null_ ));
+DATA(insert OID = 448 ( hashbuild PGNSP PGUID 12 1 0 0 0 f f f t f v 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ hashbuild _null_ _null_ _null_ ));
DESCR("hash(internal)");
-DATA(insert OID = 327 ( hashbuildempty PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ hashbuildempty _null_ _null_ _null_ ));
+DATA(insert OID = 327 ( hashbuildempty PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ hashbuildempty _null_ _null_ _null_ ));
DESCR("hash(internal)");
-DATA(insert OID = 442 ( hashbulkdelete PGNSP PGUID 12 1 0 0 f f f t f v 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ hashbulkdelete _null_ _null_ _null_ ));
+DATA(insert OID = 442 ( hashbulkdelete PGNSP PGUID 12 1 0 0 0 f f f t f v 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ hashbulkdelete _null_ _null_ _null_ ));
DESCR("hash(internal)");
-DATA(insert OID = 425 ( hashvacuumcleanup PGNSP PGUID 12 1 0 0 f f f t f v 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ hashvacuumcleanup _null_ _null_ _null_ ));
+DATA(insert OID = 425 ( hashvacuumcleanup PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ hashvacuumcleanup _null_ _null_ _null_ ));
DESCR("hash(internal)");
-DATA(insert OID = 438 ( hashcostestimate PGNSP PGUID 12 1 0 0 f f f t f v 9 0 2278 "2281 2281 2281 2281 2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ hashcostestimate _null_ _null_ _null_ ));
+DATA(insert OID = 438 ( hashcostestimate PGNSP PGUID 12 1 0 0 0 f f f t f v 9 0 2278 "2281 2281 2281 2281 2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ hashcostestimate _null_ _null_ _null_ ));
DESCR("hash(internal)");
-DATA(insert OID = 2786 ( hashoptions PGNSP PGUID 12 1 0 0 f f f t f s 2 0 17 "1009 16" _null_ _null_ _null_ _null_ hashoptions _null_ _null_ _null_ ));
+DATA(insert OID = 2786 ( hashoptions PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 17 "1009 16" _null_ _null_ _null_ _null_ hashoptions _null_ _null_ _null_ ));
DESCR("hash(internal)");
-DATA(insert OID = 449 ( hashint2 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "21" _null_ _null_ _null_ _null_ hashint2 _null_ _null_ _null_ ));
+DATA(insert OID = 449 ( hashint2 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "21" _null_ _null_ _null_ _null_ hashint2 _null_ _null_ _null_ ));
DESCR("hash");
-DATA(insert OID = 450 ( hashint4 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "23" _null_ _null_ _null_ _null_ hashint4 _null_ _null_ _null_ ));
+DATA(insert OID = 450 ( hashint4 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "23" _null_ _null_ _null_ _null_ hashint4 _null_ _null_ _null_ ));
DESCR("hash");
-DATA(insert OID = 949 ( hashint8 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "20" _null_ _null_ _null_ _null_ hashint8 _null_ _null_ _null_ ));
+DATA(insert OID = 949 ( hashint8 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "20" _null_ _null_ _null_ _null_ hashint8 _null_ _null_ _null_ ));
DESCR("hash");
-DATA(insert OID = 451 ( hashfloat4 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "700" _null_ _null_ _null_ _null_ hashfloat4 _null_ _null_ _null_ ));
+DATA(insert OID = 451 ( hashfloat4 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "700" _null_ _null_ _null_ _null_ hashfloat4 _null_ _null_ _null_ ));
DESCR("hash");
-DATA(insert OID = 452 ( hashfloat8 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "701" _null_ _null_ _null_ _null_ hashfloat8 _null_ _null_ _null_ ));
+DATA(insert OID = 452 ( hashfloat8 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "701" _null_ _null_ _null_ _null_ hashfloat8 _null_ _null_ _null_ ));
DESCR("hash");
-DATA(insert OID = 453 ( hashoid PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "26" _null_ _null_ _null_ _null_ hashoid _null_ _null_ _null_ ));
+DATA(insert OID = 453 ( hashoid PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "26" _null_ _null_ _null_ _null_ hashoid _null_ _null_ _null_ ));
DESCR("hash");
-DATA(insert OID = 454 ( hashchar PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "18" _null_ _null_ _null_ _null_ hashchar _null_ _null_ _null_ ));
+DATA(insert OID = 454 ( hashchar PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "18" _null_ _null_ _null_ _null_ hashchar _null_ _null_ _null_ ));
DESCR("hash");
-DATA(insert OID = 455 ( hashname PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "19" _null_ _null_ _null_ _null_ hashname _null_ _null_ _null_ ));
+DATA(insert OID = 455 ( hashname PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "19" _null_ _null_ _null_ _null_ hashname _null_ _null_ _null_ ));
DESCR("hash");
-DATA(insert OID = 400 ( hashtext PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "25" _null_ _null_ _null_ _null_ hashtext _null_ _null_ _null_ ));
+DATA(insert OID = 400 ( hashtext PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "25" _null_ _null_ _null_ _null_ hashtext _null_ _null_ _null_ ));
DESCR("hash");
-DATA(insert OID = 456 ( hashvarlena PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "2281" _null_ _null_ _null_ _null_ hashvarlena _null_ _null_ _null_ ));
+DATA(insert OID = 456 ( hashvarlena PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "2281" _null_ _null_ _null_ _null_ hashvarlena _null_ _null_ _null_ ));
DESCR("hash");
-DATA(insert OID = 457 ( hashoidvector PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "30" _null_ _null_ _null_ _null_ hashoidvector _null_ _null_ _null_ ));
+DATA(insert OID = 457 ( hashoidvector PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "30" _null_ _null_ _null_ _null_ hashoidvector _null_ _null_ _null_ ));
DESCR("hash");
-DATA(insert OID = 329 ( hash_aclitem PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1033" _null_ _null_ _null_ _null_ hash_aclitem _null_ _null_ _null_ ));
+DATA(insert OID = 329 ( hash_aclitem PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1033" _null_ _null_ _null_ _null_ hash_aclitem _null_ _null_ _null_ ));
DESCR("hash");
-DATA(insert OID = 398 ( hashint2vector PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "22" _null_ _null_ _null_ _null_ hashint2vector _null_ _null_ _null_ ));
+DATA(insert OID = 398 ( hashint2vector PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "22" _null_ _null_ _null_ _null_ hashint2vector _null_ _null_ _null_ ));
DESCR("hash");
-DATA(insert OID = 399 ( hashmacaddr PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "829" _null_ _null_ _null_ _null_ hashmacaddr _null_ _null_ _null_ ));
+DATA(insert OID = 399 ( hashmacaddr PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "829" _null_ _null_ _null_ _null_ hashmacaddr _null_ _null_ _null_ ));
DESCR("hash");
-DATA(insert OID = 422 ( hashinet PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "869" _null_ _null_ _null_ _null_ hashinet _null_ _null_ _null_ ));
+DATA(insert OID = 422 ( hashinet PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "869" _null_ _null_ _null_ _null_ hashinet _null_ _null_ _null_ ));
DESCR("hash");
-DATA(insert OID = 432 ( hash_numeric PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1700" _null_ _null_ _null_ _null_ hash_numeric _null_ _null_ _null_ ));
+DATA(insert OID = 432 ( hash_numeric PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1700" _null_ _null_ _null_ _null_ hash_numeric _null_ _null_ _null_ ));
DESCR("hash");
-DATA(insert OID = 458 ( text_larger PGNSP PGUID 12 1 0 0 f f f t f i 2 0 25 "25 25" _null_ _null_ _null_ _null_ text_larger _null_ _null_ _null_ ));
+DATA(insert OID = 458 ( text_larger PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 25 "25 25" _null_ _null_ _null_ _null_ text_larger _null_ _null_ _null_ ));
DESCR("larger of two");
-DATA(insert OID = 459 ( text_smaller PGNSP PGUID 12 1 0 0 f f f t f i 2 0 25 "25 25" _null_ _null_ _null_ _null_ text_smaller _null_ _null_ _null_ ));
+DATA(insert OID = 459 ( text_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 25 "25 25" _null_ _null_ _null_ _null_ text_smaller _null_ _null_ _null_ ));
DESCR("smaller of two");
-DATA(insert OID = 460 ( int8in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 20 "2275" _null_ _null_ _null_ _null_ int8in _null_ _null_ _null_ ));
-DESCR("I/O");
-DATA(insert OID = 461 ( int8out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "20" _null_ _null_ _null_ _null_ int8out _null_ _null_ _null_ ));
-DESCR("I/O");
-DATA(insert OID = 462 ( int8um PGNSP PGUID 12 1 0 0 f f f t f i 1 0 20 "20" _null_ _null_ _null_ _null_ int8um _null_ _null_ _null_ ));
-DATA(insert OID = 463 ( int8pl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "20 20" _null_ _null_ _null_ _null_ int8pl _null_ _null_ _null_ ));
-DATA(insert OID = 464 ( int8mi PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "20 20" _null_ _null_ _null_ _null_ int8mi _null_ _null_ _null_ ));
-DATA(insert OID = 465 ( int8mul PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "20 20" _null_ _null_ _null_ _null_ int8mul _null_ _null_ _null_ ));
-DATA(insert OID = 466 ( int8div PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "20 20" _null_ _null_ _null_ _null_ int8div _null_ _null_ _null_ ));
-DATA(insert OID = 467 ( int8eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "20 20" _null_ _null_ _null_ _null_ int8eq _null_ _null_ _null_ ));
-DATA(insert OID = 468 ( int8ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "20 20" _null_ _null_ _null_ _null_ int8ne _null_ _null_ _null_ ));
-DATA(insert OID = 469 ( int8lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "20 20" _null_ _null_ _null_ _null_ int8lt _null_ _null_ _null_ ));
-DATA(insert OID = 470 ( int8gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "20 20" _null_ _null_ _null_ _null_ int8gt _null_ _null_ _null_ ));
-DATA(insert OID = 471 ( int8le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "20 20" _null_ _null_ _null_ _null_ int8le _null_ _null_ _null_ ));
-DATA(insert OID = 472 ( int8ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "20 20" _null_ _null_ _null_ _null_ int8ge _null_ _null_ _null_ ));
-
-DATA(insert OID = 474 ( int84eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "20 23" _null_ _null_ _null_ _null_ int84eq _null_ _null_ _null_ ));
-DATA(insert OID = 475 ( int84ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "20 23" _null_ _null_ _null_ _null_ int84ne _null_ _null_ _null_ ));
-DATA(insert OID = 476 ( int84lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "20 23" _null_ _null_ _null_ _null_ int84lt _null_ _null_ _null_ ));
-DATA(insert OID = 477 ( int84gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "20 23" _null_ _null_ _null_ _null_ int84gt _null_ _null_ _null_ ));
-DATA(insert OID = 478 ( int84le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "20 23" _null_ _null_ _null_ _null_ int84le _null_ _null_ _null_ ));
-DATA(insert OID = 479 ( int84ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "20 23" _null_ _null_ _null_ _null_ int84ge _null_ _null_ _null_ ));
-
-DATA(insert OID = 480 ( int4 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "20" _null_ _null_ _null_ _null_ int84 _null_ _null_ _null_ ));
+DATA(insert OID = 460 ( int8in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 20 "2275" _null_ _null_ _null_ _null_ int8in _null_ _null_ _null_ ));
+DESCR("I/O");
+DATA(insert OID = 461 ( int8out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "20" _null_ _null_ _null_ _null_ int8out _null_ _null_ _null_ ));
+DESCR("I/O");
+DATA(insert OID = 462 ( int8um PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 20 "20" _null_ _null_ _null_ _null_ int8um _null_ _null_ _null_ ));
+DATA(insert OID = 463 ( int8pl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "20 20" _null_ _null_ _null_ _null_ int8pl _null_ _null_ _null_ ));
+DATA(insert OID = 464 ( int8mi PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "20 20" _null_ _null_ _null_ _null_ int8mi _null_ _null_ _null_ ));
+DATA(insert OID = 465 ( int8mul PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "20 20" _null_ _null_ _null_ _null_ int8mul _null_ _null_ _null_ ));
+DATA(insert OID = 466 ( int8div PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "20 20" _null_ _null_ _null_ _null_ int8div _null_ _null_ _null_ ));
+DATA(insert OID = 467 ( int8eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "20 20" _null_ _null_ _null_ _null_ int8eq _null_ _null_ _null_ ));
+DATA(insert OID = 468 ( int8ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "20 20" _null_ _null_ _null_ _null_ int8ne _null_ _null_ _null_ ));
+DATA(insert OID = 469 ( int8lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "20 20" _null_ _null_ _null_ _null_ int8lt _null_ _null_ _null_ ));
+DATA(insert OID = 470 ( int8gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "20 20" _null_ _null_ _null_ _null_ int8gt _null_ _null_ _null_ ));
+DATA(insert OID = 471 ( int8le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "20 20" _null_ _null_ _null_ _null_ int8le _null_ _null_ _null_ ));
+DATA(insert OID = 472 ( int8ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "20 20" _null_ _null_ _null_ _null_ int8ge _null_ _null_ _null_ ));
+
+DATA(insert OID = 474 ( int84eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "20 23" _null_ _null_ _null_ _null_ int84eq _null_ _null_ _null_ ));
+DATA(insert OID = 475 ( int84ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "20 23" _null_ _null_ _null_ _null_ int84ne _null_ _null_ _null_ ));
+DATA(insert OID = 476 ( int84lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "20 23" _null_ _null_ _null_ _null_ int84lt _null_ _null_ _null_ ));
+DATA(insert OID = 477 ( int84gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "20 23" _null_ _null_ _null_ _null_ int84gt _null_ _null_ _null_ ));
+DATA(insert OID = 478 ( int84le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "20 23" _null_ _null_ _null_ _null_ int84le _null_ _null_ _null_ ));
+DATA(insert OID = 479 ( int84ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "20 23" _null_ _null_ _null_ _null_ int84ge _null_ _null_ _null_ ));
+
+DATA(insert OID = 480 ( int4 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "20" _null_ _null_ _null_ _null_ int84 _null_ _null_ _null_ ));
DESCR("convert int8 to int4");
-DATA(insert OID = 481 ( int8 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 20 "23" _null_ _null_ _null_ _null_ int48 _null_ _null_ _null_ ));
+DATA(insert OID = 481 ( int8 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 20 "23" _null_ _null_ _null_ _null_ int48 _null_ _null_ _null_ ));
DESCR("convert int4 to int8");
-DATA(insert OID = 482 ( float8 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "20" _null_ _null_ _null_ _null_ i8tod _null_ _null_ _null_ ));
+DATA(insert OID = 482 ( float8 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "20" _null_ _null_ _null_ _null_ i8tod _null_ _null_ _null_ ));
DESCR("convert int8 to float8");
-DATA(insert OID = 483 ( int8 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 20 "701" _null_ _null_ _null_ _null_ dtoi8 _null_ _null_ _null_ ));
+DATA(insert OID = 483 ( int8 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 20 "701" _null_ _null_ _null_ _null_ dtoi8 _null_ _null_ _null_ ));
DESCR("convert float8 to int8");
/* OIDS 500 - 599 */
/* OIDS 600 - 699 */
-DATA(insert OID = 626 ( hash_array PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "2277" _null_ _null_ _null_ _null_ hash_array _null_ _null_ _null_ ));
+DATA(insert OID = 626 ( hash_array PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "2277" _null_ _null_ _null_ _null_ hash_array _null_ _null_ _null_ ));
DESCR("hash");
-DATA(insert OID = 652 ( float4 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 700 "20" _null_ _null_ _null_ _null_ i8tof _null_ _null_ _null_ ));
+DATA(insert OID = 652 ( float4 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 700 "20" _null_ _null_ _null_ _null_ i8tof _null_ _null_ _null_ ));
DESCR("convert int8 to float4");
-DATA(insert OID = 653 ( int8 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 20 "700" _null_ _null_ _null_ _null_ ftoi8 _null_ _null_ _null_ ));
+DATA(insert OID = 653 ( int8 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 20 "700" _null_ _null_ _null_ _null_ ftoi8 _null_ _null_ _null_ ));
DESCR("convert float4 to int8");
-DATA(insert OID = 714 ( int2 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 21 "20" _null_ _null_ _null_ _null_ int82 _null_ _null_ _null_ ));
+DATA(insert OID = 714 ( int2 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 21 "20" _null_ _null_ _null_ _null_ int82 _null_ _null_ _null_ ));
DESCR("convert int8 to int2");
-DATA(insert OID = 754 ( int8 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 20 "21" _null_ _null_ _null_ _null_ int28 _null_ _null_ _null_ ));
+DATA(insert OID = 754 ( int8 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 20 "21" _null_ _null_ _null_ _null_ int28 _null_ _null_ _null_ ));
DESCR("convert int2 to int8");
-DATA(insert OID = 655 ( namelt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "19 19" _null_ _null_ _null_ _null_ namelt _null_ _null_ _null_ ));
-DATA(insert OID = 656 ( namele PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "19 19" _null_ _null_ _null_ _null_ namele _null_ _null_ _null_ ));
-DATA(insert OID = 657 ( namegt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "19 19" _null_ _null_ _null_ _null_ namegt _null_ _null_ _null_ ));
-DATA(insert OID = 658 ( namege PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "19 19" _null_ _null_ _null_ _null_ namege _null_ _null_ _null_ ));
-DATA(insert OID = 659 ( namene PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "19 19" _null_ _null_ _null_ _null_ namene _null_ _null_ _null_ ));
+DATA(insert OID = 655 ( namelt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "19 19" _null_ _null_ _null_ _null_ namelt _null_ _null_ _null_ ));
+DATA(insert OID = 656 ( namele PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "19 19" _null_ _null_ _null_ _null_ namele _null_ _null_ _null_ ));
+DATA(insert OID = 657 ( namegt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "19 19" _null_ _null_ _null_ _null_ namegt _null_ _null_ _null_ ));
+DATA(insert OID = 658 ( namege PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "19 19" _null_ _null_ _null_ _null_ namege _null_ _null_ _null_ ));
+DATA(insert OID = 659 ( namene PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "19 19" _null_ _null_ _null_ _null_ namene _null_ _null_ _null_ ));
-DATA(insert OID = 668 ( bpchar PGNSP PGUID 12 1 0 0 f f f t f i 3 0 1042 "1042 23 16" _null_ _null_ _null_ _null_ bpchar _null_ _null_ _null_ ));
+DATA(insert OID = 668 ( bpchar PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 1042 "1042 23 16" _null_ _null_ _null_ _null_ bpchar _null_ _null_ _null_ ));
DESCR("adjust char() to typmod length");
-DATA(insert OID = 669 ( varchar PGNSP PGUID 12 1 0 0 f f f t f i 3 0 1043 "1043 23 16" _null_ _null_ _null_ _null_ varchar _null_ _null_ _null_ ));
+DATA(insert OID = 3097 ( varchar_transform PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ varchar_transform _null_ _null_ _null_ ));
+DESCR("transform a varchar length coercion");
+DATA(insert OID = 669 ( varchar PGNSP PGUID 12 1 0 0 3097 f f f t f i 3 0 1043 "1043 23 16" _null_ _null_ _null_ _null_ varchar _null_ _null_ _null_ ));
DESCR("adjust varchar() to typmod length");
-DATA(insert OID = 676 ( mktinterval PGNSP PGUID 12 1 0 0 f f f t f i 2 0 704 "702 702" _null_ _null_ _null_ _null_ mktinterval _null_ _null_ _null_ ));
+DATA(insert OID = 676 ( mktinterval PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 704 "702 702" _null_ _null_ _null_ _null_ mktinterval _null_ _null_ _null_ ));
-DATA(insert OID = 619 ( oidvectorne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "30 30" _null_ _null_ _null_ _null_ oidvectorne _null_ _null_ _null_ ));
-DATA(insert OID = 677 ( oidvectorlt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "30 30" _null_ _null_ _null_ _null_ oidvectorlt _null_ _null_ _null_ ));
-DATA(insert OID = 678 ( oidvectorle PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "30 30" _null_ _null_ _null_ _null_ oidvectorle _null_ _null_ _null_ ));
-DATA(insert OID = 679 ( oidvectoreq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "30 30" _null_ _null_ _null_ _null_ oidvectoreq _null_ _null_ _null_ ));
-DATA(insert OID = 680 ( oidvectorge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "30 30" _null_ _null_ _null_ _null_ oidvectorge _null_ _null_ _null_ ));
-DATA(insert OID = 681 ( oidvectorgt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "30 30" _null_ _null_ _null_ _null_ oidvectorgt _null_ _null_ _null_ ));
+DATA(insert OID = 619 ( oidvectorne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "30 30" _null_ _null_ _null_ _null_ oidvectorne _null_ _null_ _null_ ));
+DATA(insert OID = 677 ( oidvectorlt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "30 30" _null_ _null_ _null_ _null_ oidvectorlt _null_ _null_ _null_ ));
+DATA(insert OID = 678 ( oidvectorle PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "30 30" _null_ _null_ _null_ _null_ oidvectorle _null_ _null_ _null_ ));
+DATA(insert OID = 679 ( oidvectoreq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "30 30" _null_ _null_ _null_ _null_ oidvectoreq _null_ _null_ _null_ ));
+DATA(insert OID = 680 ( oidvectorge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "30 30" _null_ _null_ _null_ _null_ oidvectorge _null_ _null_ _null_ ));
+DATA(insert OID = 681 ( oidvectorgt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "30 30" _null_ _null_ _null_ _null_ oidvectorgt _null_ _null_ _null_ ));
/* OIDS 700 - 799 */
-DATA(insert OID = 710 ( getpgusername PGNSP PGUID 12 1 0 0 f f f t f s 0 0 19 "" _null_ _null_ _null_ _null_ current_user _null_ _null_ _null_ ));
+DATA(insert OID = 710 ( getpgusername PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 19 "" _null_ _null_ _null_ _null_ current_user _null_ _null_ _null_ ));
DESCR("deprecated, use current_user instead");
-DATA(insert OID = 716 ( oidlt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "26 26" _null_ _null_ _null_ _null_ oidlt _null_ _null_ _null_ ));
-DATA(insert OID = 717 ( oidle PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "26 26" _null_ _null_ _null_ _null_ oidle _null_ _null_ _null_ ));
+DATA(insert OID = 716 ( oidlt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "26 26" _null_ _null_ _null_ _null_ oidlt _null_ _null_ _null_ ));
+DATA(insert OID = 717 ( oidle PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "26 26" _null_ _null_ _null_ _null_ oidle _null_ _null_ _null_ ));
-DATA(insert OID = 720 ( octet_length PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "17" _null_ _null_ _null_ _null_ byteaoctetlen _null_ _null_ _null_ ));
+DATA(insert OID = 720 ( octet_length PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "17" _null_ _null_ _null_ _null_ byteaoctetlen _null_ _null_ _null_ ));
DESCR("octet length");
-DATA(insert OID = 721 ( get_byte PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "17 23" _null_ _null_ _null_ _null_ byteaGetByte _null_ _null_ _null_ ));
+DATA(insert OID = 721 ( get_byte PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "17 23" _null_ _null_ _null_ _null_ byteaGetByte _null_ _null_ _null_ ));
DESCR("get byte");
-DATA(insert OID = 722 ( set_byte PGNSP PGUID 12 1 0 0 f f f t f i 3 0 17 "17 23 23" _null_ _null_ _null_ _null_ byteaSetByte _null_ _null_ _null_ ));
+DATA(insert OID = 722 ( set_byte PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 17 "17 23 23" _null_ _null_ _null_ _null_ byteaSetByte _null_ _null_ _null_ ));
DESCR("set byte");
-DATA(insert OID = 723 ( get_bit PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "17 23" _null_ _null_ _null_ _null_ byteaGetBit _null_ _null_ _null_ ));
+DATA(insert OID = 723 ( get_bit PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "17 23" _null_ _null_ _null_ _null_ byteaGetBit _null_ _null_ _null_ ));
DESCR("get bit");
-DATA(insert OID = 724 ( set_bit PGNSP PGUID 12 1 0 0 f f f t f i 3 0 17 "17 23 23" _null_ _null_ _null_ _null_ byteaSetBit _null_ _null_ _null_ ));
+DATA(insert OID = 724 ( set_bit PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 17 "17 23 23" _null_ _null_ _null_ _null_ byteaSetBit _null_ _null_ _null_ ));
DESCR("set bit");
-DATA(insert OID = 749 ( overlay PGNSP PGUID 12 1 0 0 f f f t f i 4 0 17 "17 17 23 23" _null_ _null_ _null_ _null_ byteaoverlay _null_ _null_ _null_ ));
+DATA(insert OID = 749 ( overlay PGNSP PGUID 12 1 0 0 0 f f f t f i 4 0 17 "17 17 23 23" _null_ _null_ _null_ _null_ byteaoverlay _null_ _null_ _null_ ));
DESCR("substitute portion of string");
-DATA(insert OID = 752 ( overlay PGNSP PGUID 12 1 0 0 f f f t f i 3 0 17 "17 17 23" _null_ _null_ _null_ _null_ byteaoverlay_no_len _null_ _null_ _null_ ));
+DATA(insert OID = 752 ( overlay PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 17 "17 17 23" _null_ _null_ _null_ _null_ byteaoverlay_no_len _null_ _null_ _null_ ));
DESCR("substitute portion of string");
-DATA(insert OID = 725 ( dist_pl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "600 628" _null_ _null_ _null_ _null_ dist_pl _null_ _null_ _null_ ));
-DATA(insert OID = 726 ( dist_lb PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "628 603" _null_ _null_ _null_ _null_ dist_lb _null_ _null_ _null_ ));
-DATA(insert OID = 727 ( dist_sl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "601 628" _null_ _null_ _null_ _null_ dist_sl _null_ _null_ _null_ ));
-DATA(insert OID = 728 ( dist_cpoly PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "718 604" _null_ _null_ _null_ _null_ dist_cpoly _null_ _null_ _null_ ));
-DATA(insert OID = 729 ( poly_distance PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "604 604" _null_ _null_ _null_ _null_ poly_distance _null_ _null_ _null_ ));
+DATA(insert OID = 725 ( dist_pl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "600 628" _null_ _null_ _null_ _null_ dist_pl _null_ _null_ _null_ ));
+DATA(insert OID = 726 ( dist_lb PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "628 603" _null_ _null_ _null_ _null_ dist_lb _null_ _null_ _null_ ));
+DATA(insert OID = 727 ( dist_sl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "601 628" _null_ _null_ _null_ _null_ dist_sl _null_ _null_ _null_ ));
+DATA(insert OID = 728 ( dist_cpoly PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "718 604" _null_ _null_ _null_ _null_ dist_cpoly _null_ _null_ _null_ ));
+DATA(insert OID = 729 ( poly_distance PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "604 604" _null_ _null_ _null_ _null_ poly_distance _null_ _null_ _null_ ));
-DATA(insert OID = 740 ( text_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ text_lt _null_ _null_ _null_ ));
-DATA(insert OID = 741 ( text_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ text_le _null_ _null_ _null_ ));
-DATA(insert OID = 742 ( text_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ text_gt _null_ _null_ _null_ ));
-DATA(insert OID = 743 ( text_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ text_ge _null_ _null_ _null_ ));
+DATA(insert OID = 740 ( text_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ text_lt _null_ _null_ _null_ ));
+DATA(insert OID = 741 ( text_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ text_le _null_ _null_ _null_ ));
+DATA(insert OID = 742 ( text_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ text_gt _null_ _null_ _null_ ));
+DATA(insert OID = 743 ( text_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ text_ge _null_ _null_ _null_ ));
-DATA(insert OID = 745 ( current_user PGNSP PGUID 12 1 0 0 f f f t f s 0 0 19 "" _null_ _null_ _null_ _null_ current_user _null_ _null_ _null_ ));
+DATA(insert OID = 745 ( current_user PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 19 "" _null_ _null_ _null_ _null_ current_user _null_ _null_ _null_ ));
DESCR("current user name");
-DATA(insert OID = 746 ( session_user PGNSP PGUID 12 1 0 0 f f f t f s 0 0 19 "" _null_ _null_ _null_ _null_ session_user _null_ _null_ _null_ ));
+DATA(insert OID = 746 ( session_user PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 19 "" _null_ _null_ _null_ _null_ session_user _null_ _null_ _null_ ));
DESCR("session user name");
-DATA(insert OID = 744 ( array_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ array_eq _null_ _null_ _null_ ));
-DATA(insert OID = 390 ( array_ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ array_ne _null_ _null_ _null_ ));
-DATA(insert OID = 391 ( array_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ array_lt _null_ _null_ _null_ ));
-DATA(insert OID = 392 ( array_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ array_gt _null_ _null_ _null_ ));
-DATA(insert OID = 393 ( array_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ array_le _null_ _null_ _null_ ));
-DATA(insert OID = 396 ( array_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ array_ge _null_ _null_ _null_ ));
-DATA(insert OID = 747 ( array_dims PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "2277" _null_ _null_ _null_ _null_ array_dims _null_ _null_ _null_ ));
+DATA(insert OID = 744 ( array_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ array_eq _null_ _null_ _null_ ));
+DATA(insert OID = 390 ( array_ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ array_ne _null_ _null_ _null_ ));
+DATA(insert OID = 391 ( array_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ array_lt _null_ _null_ _null_ ));
+DATA(insert OID = 392 ( array_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ array_gt _null_ _null_ _null_ ));
+DATA(insert OID = 393 ( array_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ array_le _null_ _null_ _null_ ));
+DATA(insert OID = 396 ( array_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ array_ge _null_ _null_ _null_ ));
+DATA(insert OID = 747 ( array_dims PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "2277" _null_ _null_ _null_ _null_ array_dims _null_ _null_ _null_ ));
DESCR("array dimensions");
-DATA(insert OID = 748 ( array_ndims PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "2277" _null_ _null_ _null_ _null_ array_ndims _null_ _null_ _null_ ));
+DATA(insert OID = 748 ( array_ndims PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "2277" _null_ _null_ _null_ _null_ array_ndims _null_ _null_ _null_ ));
DESCR("number of array dimensions");
-DATA(insert OID = 750 ( array_in PGNSP PGUID 12 1 0 0 f f f t f s 3 0 2277 "2275 26 23" _null_ _null_ _null_ _null_ array_in _null_ _null_ _null_ ));
+DATA(insert OID = 750 ( array_in PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 2277 "2275 26 23" _null_ _null_ _null_ _null_ array_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 751 ( array_out PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "2277" _null_ _null_ _null_ _null_ array_out _null_ _null_ _null_ ));
+DATA(insert OID = 751 ( array_out PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "2277" _null_ _null_ _null_ _null_ array_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2091 ( array_lower PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "2277 23" _null_ _null_ _null_ _null_ array_lower _null_ _null_ _null_ ));
+DATA(insert OID = 2091 ( array_lower PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "2277 23" _null_ _null_ _null_ _null_ array_lower _null_ _null_ _null_ ));
DESCR("array lower dimension");
-DATA(insert OID = 2092 ( array_upper PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "2277 23" _null_ _null_ _null_ _null_ array_upper _null_ _null_ _null_ ));
+DATA(insert OID = 2092 ( array_upper PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "2277 23" _null_ _null_ _null_ _null_ array_upper _null_ _null_ _null_ ));
DESCR("array upper dimension");
-DATA(insert OID = 2176 ( array_length PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "2277 23" _null_ _null_ _null_ _null_ array_length _null_ _null_ _null_ ));
+DATA(insert OID = 2176 ( array_length PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "2277 23" _null_ _null_ _null_ _null_ array_length _null_ _null_ _null_ ));
DESCR("array length");
-DATA(insert OID = 378 ( array_append PGNSP PGUID 12 1 0 0 f f f f f i 2 0 2277 "2277 2283" _null_ _null_ _null_ _null_ array_push _null_ _null_ _null_ ));
+DATA(insert OID = 378 ( array_append PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 2277 "2277 2283" _null_ _null_ _null_ _null_ array_push _null_ _null_ _null_ ));
DESCR("append element onto end of array");
-DATA(insert OID = 379 ( array_prepend PGNSP PGUID 12 1 0 0 f f f f f i 2 0 2277 "2283 2277" _null_ _null_ _null_ _null_ array_push _null_ _null_ _null_ ));
+DATA(insert OID = 379 ( array_prepend PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 2277 "2283 2277" _null_ _null_ _null_ _null_ array_push _null_ _null_ _null_ ));
DESCR("prepend element onto front of array");
-DATA(insert OID = 383 ( array_cat PGNSP PGUID 12 1 0 0 f f f f f i 2 0 2277 "2277 2277" _null_ _null_ _null_ _null_ array_cat _null_ _null_ _null_ ));
-DATA(insert OID = 394 ( string_to_array PGNSP PGUID 12 1 0 0 f f f f f i 2 0 1009 "25 25" _null_ _null_ _null_ _null_ text_to_array _null_ _null_ _null_ ));
+DATA(insert OID = 383 ( array_cat PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 2277 "2277 2277" _null_ _null_ _null_ _null_ array_cat _null_ _null_ _null_ ));
+DATA(insert OID = 394 ( string_to_array PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 1009 "25 25" _null_ _null_ _null_ _null_ text_to_array _null_ _null_ _null_ ));
DESCR("split delimited text into text[]");
-DATA(insert OID = 395 ( array_to_string PGNSP PGUID 12 1 0 0 f f f t f s 2 0 25 "2277 25" _null_ _null_ _null_ _null_ array_to_text _null_ _null_ _null_ ));
+DATA(insert OID = 395 ( array_to_string PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 25 "2277 25" _null_ _null_ _null_ _null_ array_to_text _null_ _null_ _null_ ));
DESCR("concatenate array elements, using delimiter, into text");
-DATA(insert OID = 376 ( string_to_array PGNSP PGUID 12 1 0 0 f f f f f i 3 0 1009 "25 25 25" _null_ _null_ _null_ _null_ text_to_array_null _null_ _null_ _null_ ));
+DATA(insert OID = 376 ( string_to_array PGNSP PGUID 12 1 0 0 0 f f f f f i 3 0 1009 "25 25 25" _null_ _null_ _null_ _null_ text_to_array_null _null_ _null_ _null_ ));
DESCR("split delimited text into text[], with null string");
-DATA(insert OID = 384 ( array_to_string PGNSP PGUID 12 1 0 0 f f f f f s 3 0 25 "2277 25 25" _null_ _null_ _null_ _null_ array_to_text_null _null_ _null_ _null_ ));
+DATA(insert OID = 384 ( array_to_string PGNSP PGUID 12 1 0 0 0 f f f f f s 3 0 25 "2277 25 25" _null_ _null_ _null_ _null_ array_to_text_null _null_ _null_ _null_ ));
DESCR("concatenate array elements, using delimiter and null string, into text");
-DATA(insert OID = 515 ( array_larger PGNSP PGUID 12 1 0 0 f f f t f i 2 0 2277 "2277 2277" _null_ _null_ _null_ _null_ array_larger _null_ _null_ _null_ ));
+DATA(insert OID = 515 ( array_larger PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 2277 "2277 2277" _null_ _null_ _null_ _null_ array_larger _null_ _null_ _null_ ));
DESCR("larger of two");
-DATA(insert OID = 516 ( array_smaller PGNSP PGUID 12 1 0 0 f f f t f i 2 0 2277 "2277 2277" _null_ _null_ _null_ _null_ array_smaller _null_ _null_ _null_ ));
+DATA(insert OID = 516 ( array_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 2277 "2277 2277" _null_ _null_ _null_ _null_ array_smaller _null_ _null_ _null_ ));
DESCR("smaller of two");
-DATA(insert OID = 1191 ( generate_subscripts PGNSP PGUID 12 1 1000 0 f f f t t i 3 0 23 "2277 23 16" _null_ _null_ _null_ _null_ generate_subscripts _null_ _null_ _null_ ));
+DATA(insert OID = 1191 ( generate_subscripts PGNSP PGUID 12 1 1000 0 0 f f f t t i 3 0 23 "2277 23 16" _null_ _null_ _null_ _null_ generate_subscripts _null_ _null_ _null_ ));
DESCR("array subscripts generator");
-DATA(insert OID = 1192 ( generate_subscripts PGNSP PGUID 12 1 1000 0 f f f t t i 2 0 23 "2277 23" _null_ _null_ _null_ _null_ generate_subscripts_nodir _null_ _null_ _null_ ));
+DATA(insert OID = 1192 ( generate_subscripts PGNSP PGUID 12 1 1000 0 0 f f f t t i 2 0 23 "2277 23" _null_ _null_ _null_ _null_ generate_subscripts_nodir _null_ _null_ _null_ ));
DESCR("array subscripts generator");
-DATA(insert OID = 1193 ( array_fill PGNSP PGUID 12 1 0 0 f f f f f i 2 0 2277 "2283 1007" _null_ _null_ _null_ _null_ array_fill _null_ _null_ _null_ ));
+DATA(insert OID = 1193 ( array_fill PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 2277 "2283 1007" _null_ _null_ _null_ _null_ array_fill _null_ _null_ _null_ ));
DESCR("array constructor with value");
-DATA(insert OID = 1286 ( array_fill PGNSP PGUID 12 1 0 0 f f f f f i 3 0 2277 "2283 1007 1007" _null_ _null_ _null_ _null_ array_fill_with_lower_bounds _null_ _null_ _null_ ));
+DATA(insert OID = 1286 ( array_fill PGNSP PGUID 12 1 0 0 0 f f f f f i 3 0 2277 "2283 1007 1007" _null_ _null_ _null_ _null_ array_fill_with_lower_bounds _null_ _null_ _null_ ));
DESCR("array constructor with value");
-DATA(insert OID = 2331 ( unnest PGNSP PGUID 12 1 100 0 f f f t t i 1 0 2283 "2277" _null_ _null_ _null_ _null_ array_unnest _null_ _null_ _null_ ));
+DATA(insert OID = 2331 ( unnest PGNSP PGUID 12 1 100 0 0 f f f t t i 1 0 2283 "2277" _null_ _null_ _null_ _null_ array_unnest _null_ _null_ _null_ ));
DESCR("expand array to set of rows");
-DATA(insert OID = 2333 ( array_agg_transfn PGNSP PGUID 12 1 0 0 f f f f f i 2 0 2281 "2281 2283" _null_ _null_ _null_ _null_ array_agg_transfn _null_ _null_ _null_ ));
+DATA(insert OID = 2333 ( array_agg_transfn PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 2281 "2281 2283" _null_ _null_ _null_ _null_ array_agg_transfn _null_ _null_ _null_ ));
DESCR("aggregate transition function");
-DATA(insert OID = 2334 ( array_agg_finalfn PGNSP PGUID 12 1 0 0 f f f f f i 1 0 2277 "2281" _null_ _null_ _null_ _null_ array_agg_finalfn _null_ _null_ _null_ ));
+DATA(insert OID = 2334 ( array_agg_finalfn PGNSP PGUID 12 1 0 0 0 f f f f f i 1 0 2277 "2281" _null_ _null_ _null_ _null_ array_agg_finalfn _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 2335 ( array_agg PGNSP PGUID 12 1 0 0 t f f f f i 1 0 2277 "2283" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2335 ( array_agg PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 2277 "2283" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("concatenate aggregate input into an array");
-DATA(insert OID = 760 ( smgrin PGNSP PGUID 12 1 0 0 f f f t f s 1 0 210 "2275" _null_ _null_ _null_ _null_ smgrin _null_ _null_ _null_ ));
+DATA(insert OID = 760 ( smgrin PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 210 "2275" _null_ _null_ _null_ _null_ smgrin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 761 ( smgrout PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "210" _null_ _null_ _null_ _null_ smgrout _null_ _null_ _null_ ));
+DATA(insert OID = 761 ( smgrout PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "210" _null_ _null_ _null_ _null_ smgrout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 762 ( smgreq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "210 210" _null_ _null_ _null_ _null_ smgreq _null_ _null_ _null_ ));
+DATA(insert OID = 762 ( smgreq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "210 210" _null_ _null_ _null_ _null_ smgreq _null_ _null_ _null_ ));
DESCR("storage manager");
-DATA(insert OID = 763 ( smgrne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "210 210" _null_ _null_ _null_ _null_ smgrne _null_ _null_ _null_ ));
+DATA(insert OID = 763 ( smgrne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "210 210" _null_ _null_ _null_ _null_ smgrne _null_ _null_ _null_ ));
DESCR("storage manager");
-DATA(insert OID = 764 ( lo_import PGNSP PGUID 12 1 0 0 f f f t f v 1 0 26 "25" _null_ _null_ _null_ _null_ lo_import _null_ _null_ _null_ ));
+DATA(insert OID = 764 ( lo_import PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 26 "25" _null_ _null_ _null_ _null_ lo_import _null_ _null_ _null_ ));
DESCR("large object import");
-DATA(insert OID = 767 ( lo_import PGNSP PGUID 12 1 0 0 f f f t f v 2 0 26 "25 26" _null_ _null_ _null_ _null_ lo_import_with_oid _null_ _null_ _null_ ));
+DATA(insert OID = 767 ( lo_import PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 26 "25 26" _null_ _null_ _null_ _null_ lo_import_with_oid _null_ _null_ _null_ ));
DESCR("large object import");
-DATA(insert OID = 765 ( lo_export PGNSP PGUID 12 1 0 0 f f f t f v 2 0 23 "26 25" _null_ _null_ _null_ _null_ lo_export _null_ _null_ _null_ ));
+DATA(insert OID = 765 ( lo_export PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 23 "26 25" _null_ _null_ _null_ _null_ lo_export _null_ _null_ _null_ ));
DESCR("large object export");
-DATA(insert OID = 766 ( int4inc PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "23" _null_ _null_ _null_ _null_ int4inc _null_ _null_ _null_ ));
+DATA(insert OID = 766 ( int4inc PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "23" _null_ _null_ _null_ _null_ int4inc _null_ _null_ _null_ ));
DESCR("increment");
-DATA(insert OID = 768 ( int4larger PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4larger _null_ _null_ _null_ ));
+DATA(insert OID = 768 ( int4larger PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4larger _null_ _null_ _null_ ));
DESCR("larger of two");
-DATA(insert OID = 769 ( int4smaller PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4smaller _null_ _null_ _null_ ));
+DATA(insert OID = 769 ( int4smaller PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4smaller _null_ _null_ _null_ ));
DESCR("smaller of two");
-DATA(insert OID = 770 ( int2larger PGNSP PGUID 12 1 0 0 f f f t f i 2 0 21 "21 21" _null_ _null_ _null_ _null_ int2larger _null_ _null_ _null_ ));
+DATA(insert OID = 770 ( int2larger PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 21 "21 21" _null_ _null_ _null_ _null_ int2larger _null_ _null_ _null_ ));
DESCR("larger of two");
-DATA(insert OID = 771 ( int2smaller PGNSP PGUID 12 1 0 0 f f f t f i 2 0 21 "21 21" _null_ _null_ _null_ _null_ int2smaller _null_ _null_ _null_ ));
+DATA(insert OID = 771 ( int2smaller PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 21 "21 21" _null_ _null_ _null_ _null_ int2smaller _null_ _null_ _null_ ));
DESCR("smaller of two");
-DATA(insert OID = 774 ( gistgettuple PGNSP PGUID 12 1 0 0 f f f t f v 2 0 16 "2281 2281" _null_ _null_ _null_ _null_ gistgettuple _null_ _null_ _null_ ));
+DATA(insert OID = 774 ( gistgettuple PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 16 "2281 2281" _null_ _null_ _null_ _null_ gistgettuple _null_ _null_ _null_ ));
DESCR("gist(internal)");
-DATA(insert OID = 638 ( gistgetbitmap PGNSP PGUID 12 1 0 0 f f f t f v 2 0 20 "2281 2281" _null_ _null_ _null_ _null_ gistgetbitmap _null_ _null_ _null_ ));
+DATA(insert OID = 638 ( gistgetbitmap PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 20 "2281 2281" _null_ _null_ _null_ _null_ gistgetbitmap _null_ _null_ _null_ ));
DESCR("gist(internal)");
-DATA(insert OID = 775 ( gistinsert PGNSP PGUID 12 1 0 0 f f f t f v 6 0 16 "2281 2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ gistinsert _null_ _null_ _null_ ));
+DATA(insert OID = 775 ( gistinsert PGNSP PGUID 12 1 0 0 0 f f f t f v 6 0 16 "2281 2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ gistinsert _null_ _null_ _null_ ));
DESCR("gist(internal)");
-DATA(insert OID = 777 ( gistbeginscan PGNSP PGUID 12 1 0 0 f f f t f v 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ gistbeginscan _null_ _null_ _null_ ));
+DATA(insert OID = 777 ( gistbeginscan PGNSP PGUID 12 1 0 0 0 f f f t f v 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ gistbeginscan _null_ _null_ _null_ ));
DESCR("gist(internal)");
-DATA(insert OID = 778 ( gistrescan PGNSP PGUID 12 1 0 0 f f f t f v 5 0 2278 "2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ gistrescan _null_ _null_ _null_ ));
+DATA(insert OID = 778 ( gistrescan PGNSP PGUID 12 1 0 0 0 f f f t f v 5 0 2278 "2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ gistrescan _null_ _null_ _null_ ));
DESCR("gist(internal)");
-DATA(insert OID = 779 ( gistendscan PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ gistendscan _null_ _null_ _null_ ));
+DATA(insert OID = 779 ( gistendscan PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ gistendscan _null_ _null_ _null_ ));
DESCR("gist(internal)");
-DATA(insert OID = 780 ( gistmarkpos PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ gistmarkpos _null_ _null_ _null_ ));
+DATA(insert OID = 780 ( gistmarkpos PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ gistmarkpos _null_ _null_ _null_ ));
DESCR("gist(internal)");
-DATA(insert OID = 781 ( gistrestrpos PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ gistrestrpos _null_ _null_ _null_ ));
+DATA(insert OID = 781 ( gistrestrpos PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ gistrestrpos _null_ _null_ _null_ ));
DESCR("gist(internal)");
-DATA(insert OID = 782 ( gistbuild PGNSP PGUID 12 1 0 0 f f f t f v 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ gistbuild _null_ _null_ _null_ ));
+DATA(insert OID = 782 ( gistbuild PGNSP PGUID 12 1 0 0 0 f f f t f v 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ gistbuild _null_ _null_ _null_ ));
DESCR("gist(internal)");
-DATA(insert OID = 326 ( gistbuildempty PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ gistbuildempty _null_ _null_ _null_ ));
+DATA(insert OID = 326 ( gistbuildempty PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ gistbuildempty _null_ _null_ _null_ ));
DESCR("gist(internal)");
-DATA(insert OID = 776 ( gistbulkdelete PGNSP PGUID 12 1 0 0 f f f t f v 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ gistbulkdelete _null_ _null_ _null_ ));
+DATA(insert OID = 776 ( gistbulkdelete PGNSP PGUID 12 1 0 0 0 f f f t f v 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ gistbulkdelete _null_ _null_ _null_ ));
DESCR("gist(internal)");
-DATA(insert OID = 2561 ( gistvacuumcleanup PGNSP PGUID 12 1 0 0 f f f t f v 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ gistvacuumcleanup _null_ _null_ _null_ ));
+DATA(insert OID = 2561 ( gistvacuumcleanup PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ gistvacuumcleanup _null_ _null_ _null_ ));
DESCR("gist(internal)");
-DATA(insert OID = 772 ( gistcostestimate PGNSP PGUID 12 1 0 0 f f f t f v 9 0 2278 "2281 2281 2281 2281 2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ gistcostestimate _null_ _null_ _null_ ));
+DATA(insert OID = 772 ( gistcostestimate PGNSP PGUID 12 1 0 0 0 f f f t f v 9 0 2278 "2281 2281 2281 2281 2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ gistcostestimate _null_ _null_ _null_ ));
DESCR("gist(internal)");
-DATA(insert OID = 2787 ( gistoptions PGNSP PGUID 12 1 0 0 f f f t f s 2 0 17 "1009 16" _null_ _null_ _null_ _null_ gistoptions _null_ _null_ _null_ ));
+DATA(insert OID = 2787 ( gistoptions PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 17 "1009 16" _null_ _null_ _null_ _null_ gistoptions _null_ _null_ _null_ ));
DESCR("gist(internal)");
-DATA(insert OID = 784 ( tintervaleq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "704 704" _null_ _null_ _null_ _null_ tintervaleq _null_ _null_ _null_ ));
-DATA(insert OID = 785 ( tintervalne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "704 704" _null_ _null_ _null_ _null_ tintervalne _null_ _null_ _null_ ));
-DATA(insert OID = 786 ( tintervallt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "704 704" _null_ _null_ _null_ _null_ tintervallt _null_ _null_ _null_ ));
-DATA(insert OID = 787 ( tintervalgt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "704 704" _null_ _null_ _null_ _null_ tintervalgt _null_ _null_ _null_ ));
-DATA(insert OID = 788 ( tintervalle PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "704 704" _null_ _null_ _null_ _null_ tintervalle _null_ _null_ _null_ ));
-DATA(insert OID = 789 ( tintervalge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "704 704" _null_ _null_ _null_ _null_ tintervalge _null_ _null_ _null_ ));
+DATA(insert OID = 784 ( tintervaleq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "704 704" _null_ _null_ _null_ _null_ tintervaleq _null_ _null_ _null_ ));
+DATA(insert OID = 785 ( tintervalne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "704 704" _null_ _null_ _null_ _null_ tintervalne _null_ _null_ _null_ ));
+DATA(insert OID = 786 ( tintervallt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "704 704" _null_ _null_ _null_ _null_ tintervallt _null_ _null_ _null_ ));
+DATA(insert OID = 787 ( tintervalgt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "704 704" _null_ _null_ _null_ _null_ tintervalgt _null_ _null_ _null_ ));
+DATA(insert OID = 788 ( tintervalle PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "704 704" _null_ _null_ _null_ _null_ tintervalle _null_ _null_ _null_ ));
+DATA(insert OID = 789 ( tintervalge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "704 704" _null_ _null_ _null_ _null_ tintervalge _null_ _null_ _null_ ));
/* OIDS 800 - 899 */
-DATA(insert OID = 846 ( cash_mul_flt4 PGNSP PGUID 12 1 0 0 f f f t f i 2 0 790 "790 700" _null_ _null_ _null_ _null_ cash_mul_flt4 _null_ _null_ _null_ ));
-DATA(insert OID = 847 ( cash_div_flt4 PGNSP PGUID 12 1 0 0 f f f t f i 2 0 790 "790 700" _null_ _null_ _null_ _null_ cash_div_flt4 _null_ _null_ _null_ ));
-DATA(insert OID = 848 ( flt4_mul_cash PGNSP PGUID 12 1 0 0 f f f t f i 2 0 790 "700 790" _null_ _null_ _null_ _null_ flt4_mul_cash _null_ _null_ _null_ ));
+DATA(insert OID = 846 ( cash_mul_flt4 PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 790 "790 700" _null_ _null_ _null_ _null_ cash_mul_flt4 _null_ _null_ _null_ ));
+DATA(insert OID = 847 ( cash_div_flt4 PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 790 "790 700" _null_ _null_ _null_ _null_ cash_div_flt4 _null_ _null_ _null_ ));
+DATA(insert OID = 848 ( flt4_mul_cash PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 790 "700 790" _null_ _null_ _null_ _null_ flt4_mul_cash _null_ _null_ _null_ ));
-DATA(insert OID = 849 ( position PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "25 25" _null_ _null_ _null_ _null_ textpos _null_ _null_ _null_ ));
+DATA(insert OID = 849 ( position PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "25 25" _null_ _null_ _null_ _null_ textpos _null_ _null_ _null_ ));
DESCR("position of substring");
-DATA(insert OID = 850 ( textlike PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ textlike _null_ _null_ _null_ ));
-DATA(insert OID = 851 ( textnlike PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ textnlike _null_ _null_ _null_ ));
+DATA(insert OID = 850 ( textlike PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ textlike _null_ _null_ _null_ ));
+DATA(insert OID = 851 ( textnlike PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ textnlike _null_ _null_ _null_ ));
-DATA(insert OID = 852 ( int48eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "23 20" _null_ _null_ _null_ _null_ int48eq _null_ _null_ _null_ ));
-DATA(insert OID = 853 ( int48ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "23 20" _null_ _null_ _null_ _null_ int48ne _null_ _null_ _null_ ));
-DATA(insert OID = 854 ( int48lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "23 20" _null_ _null_ _null_ _null_ int48lt _null_ _null_ _null_ ));
-DATA(insert OID = 855 ( int48gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "23 20" _null_ _null_ _null_ _null_ int48gt _null_ _null_ _null_ ));
-DATA(insert OID = 856 ( int48le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "23 20" _null_ _null_ _null_ _null_ int48le _null_ _null_ _null_ ));
-DATA(insert OID = 857 ( int48ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "23 20" _null_ _null_ _null_ _null_ int48ge _null_ _null_ _null_ ));
+DATA(insert OID = 852 ( int48eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "23 20" _null_ _null_ _null_ _null_ int48eq _null_ _null_ _null_ ));
+DATA(insert OID = 853 ( int48ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "23 20" _null_ _null_ _null_ _null_ int48ne _null_ _null_ _null_ ));
+DATA(insert OID = 854 ( int48lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "23 20" _null_ _null_ _null_ _null_ int48lt _null_ _null_ _null_ ));
+DATA(insert OID = 855 ( int48gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "23 20" _null_ _null_ _null_ _null_ int48gt _null_ _null_ _null_ ));
+DATA(insert OID = 856 ( int48le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "23 20" _null_ _null_ _null_ _null_ int48le _null_ _null_ _null_ ));
+DATA(insert OID = 857 ( int48ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "23 20" _null_ _null_ _null_ _null_ int48ge _null_ _null_ _null_ ));
-DATA(insert OID = 858 ( namelike PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "19 25" _null_ _null_ _null_ _null_ namelike _null_ _null_ _null_ ));
-DATA(insert OID = 859 ( namenlike PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "19 25" _null_ _null_ _null_ _null_ namenlike _null_ _null_ _null_ ));
+DATA(insert OID = 858 ( namelike PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "19 25" _null_ _null_ _null_ _null_ namelike _null_ _null_ _null_ ));
+DATA(insert OID = 859 ( namenlike PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "19 25" _null_ _null_ _null_ _null_ namenlike _null_ _null_ _null_ ));
-DATA(insert OID = 860 ( bpchar PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1042 "18" _null_ _null_ _null_ _null_ char_bpchar _null_ _null_ _null_ ));
+DATA(insert OID = 860 ( bpchar PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1042 "18" _null_ _null_ _null_ _null_ char_bpchar _null_ _null_ _null_ ));
DESCR("convert char to char(n)");
-DATA(insert OID = 861 ( current_database PGNSP PGUID 12 1 0 0 f f f t f s 0 0 19 "" _null_ _null_ _null_ _null_ current_database _null_ _null_ _null_ ));
+DATA(insert OID = 861 ( current_database PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 19 "" _null_ _null_ _null_ _null_ current_database _null_ _null_ _null_ ));
DESCR("name of the current database");
-DATA(insert OID = 817 ( current_query PGNSP PGUID 12 1 0 0 f f f f f v 0 0 25 "" _null_ _null_ _null_ _null_ current_query _null_ _null_ _null_ ));
+DATA(insert OID = 817 ( current_query PGNSP PGUID 12 1 0 0 0 f f f f f v 0 0 25 "" _null_ _null_ _null_ _null_ current_query _null_ _null_ _null_ ));
DESCR("get the currently executing query");
-DATA(insert OID = 862 ( int4_mul_cash PGNSP PGUID 12 1 0 0 f f f t f i 2 0 790 "23 790" _null_ _null_ _null_ _null_ int4_mul_cash _null_ _null_ _null_ ));
-DATA(insert OID = 863 ( int2_mul_cash PGNSP PGUID 12 1 0 0 f f f t f i 2 0 790 "21 790" _null_ _null_ _null_ _null_ int2_mul_cash _null_ _null_ _null_ ));
-DATA(insert OID = 864 ( cash_mul_int4 PGNSP PGUID 12 1 0 0 f f f t f i 2 0 790 "790 23" _null_ _null_ _null_ _null_ cash_mul_int4 _null_ _null_ _null_ ));
-DATA(insert OID = 865 ( cash_div_int4 PGNSP PGUID 12 1 0 0 f f f t f i 2 0 790 "790 23" _null_ _null_ _null_ _null_ cash_div_int4 _null_ _null_ _null_ ));
-DATA(insert OID = 866 ( cash_mul_int2 PGNSP PGUID 12 1 0 0 f f f t f i 2 0 790 "790 21" _null_ _null_ _null_ _null_ cash_mul_int2 _null_ _null_ _null_ ));
-DATA(insert OID = 867 ( cash_div_int2 PGNSP PGUID 12 1 0 0 f f f t f i 2 0 790 "790 21" _null_ _null_ _null_ _null_ cash_div_int2 _null_ _null_ _null_ ));
-
-DATA(insert OID = 886 ( cash_in PGNSP PGUID 12 1 0 0 f f f t f s 1 0 790 "2275" _null_ _null_ _null_ _null_ cash_in _null_ _null_ _null_ ));
-DESCR("I/O");
-DATA(insert OID = 887 ( cash_out PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "790" _null_ _null_ _null_ _null_ cash_out _null_ _null_ _null_ ));
-DESCR("I/O");
-DATA(insert OID = 888 ( cash_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "790 790" _null_ _null_ _null_ _null_ cash_eq _null_ _null_ _null_ ));
-DATA(insert OID = 889 ( cash_ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "790 790" _null_ _null_ _null_ _null_ cash_ne _null_ _null_ _null_ ));
-DATA(insert OID = 890 ( cash_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "790 790" _null_ _null_ _null_ _null_ cash_lt _null_ _null_ _null_ ));
-DATA(insert OID = 891 ( cash_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "790 790" _null_ _null_ _null_ _null_ cash_le _null_ _null_ _null_ ));
-DATA(insert OID = 892 ( cash_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "790 790" _null_ _null_ _null_ _null_ cash_gt _null_ _null_ _null_ ));
-DATA(insert OID = 893 ( cash_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "790 790" _null_ _null_ _null_ _null_ cash_ge _null_ _null_ _null_ ));
-DATA(insert OID = 894 ( cash_pl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 790 "790 790" _null_ _null_ _null_ _null_ cash_pl _null_ _null_ _null_ ));
-DATA(insert OID = 895 ( cash_mi PGNSP PGUID 12 1 0 0 f f f t f i 2 0 790 "790 790" _null_ _null_ _null_ _null_ cash_mi _null_ _null_ _null_ ));
-DATA(insert OID = 896 ( cash_mul_flt8 PGNSP PGUID 12 1 0 0 f f f t f i 2 0 790 "790 701" _null_ _null_ _null_ _null_ cash_mul_flt8 _null_ _null_ _null_ ));
-DATA(insert OID = 897 ( cash_div_flt8 PGNSP PGUID 12 1 0 0 f f f t f i 2 0 790 "790 701" _null_ _null_ _null_ _null_ cash_div_flt8 _null_ _null_ _null_ ));
-DATA(insert OID = 898 ( cashlarger PGNSP PGUID 12 1 0 0 f f f t f i 2 0 790 "790 790" _null_ _null_ _null_ _null_ cashlarger _null_ _null_ _null_ ));
+DATA(insert OID = 862 ( int4_mul_cash PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 790 "23 790" _null_ _null_ _null_ _null_ int4_mul_cash _null_ _null_ _null_ ));
+DATA(insert OID = 863 ( int2_mul_cash PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 790 "21 790" _null_ _null_ _null_ _null_ int2_mul_cash _null_ _null_ _null_ ));
+DATA(insert OID = 864 ( cash_mul_int4 PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 790 "790 23" _null_ _null_ _null_ _null_ cash_mul_int4 _null_ _null_ _null_ ));
+DATA(insert OID = 865 ( cash_div_int4 PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 790 "790 23" _null_ _null_ _null_ _null_ cash_div_int4 _null_ _null_ _null_ ));
+DATA(insert OID = 866 ( cash_mul_int2 PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 790 "790 21" _null_ _null_ _null_ _null_ cash_mul_int2 _null_ _null_ _null_ ));
+DATA(insert OID = 867 ( cash_div_int2 PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 790 "790 21" _null_ _null_ _null_ _null_ cash_div_int2 _null_ _null_ _null_ ));
+
+DATA(insert OID = 886 ( cash_in PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 790 "2275" _null_ _null_ _null_ _null_ cash_in _null_ _null_ _null_ ));
+DESCR("I/O");
+DATA(insert OID = 887 ( cash_out PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "790" _null_ _null_ _null_ _null_ cash_out _null_ _null_ _null_ ));
+DESCR("I/O");
+DATA(insert OID = 888 ( cash_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "790 790" _null_ _null_ _null_ _null_ cash_eq _null_ _null_ _null_ ));
+DATA(insert OID = 889 ( cash_ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "790 790" _null_ _null_ _null_ _null_ cash_ne _null_ _null_ _null_ ));
+DATA(insert OID = 890 ( cash_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "790 790" _null_ _null_ _null_ _null_ cash_lt _null_ _null_ _null_ ));
+DATA(insert OID = 891 ( cash_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "790 790" _null_ _null_ _null_ _null_ cash_le _null_ _null_ _null_ ));
+DATA(insert OID = 892 ( cash_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "790 790" _null_ _null_ _null_ _null_ cash_gt _null_ _null_ _null_ ));
+DATA(insert OID = 893 ( cash_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "790 790" _null_ _null_ _null_ _null_ cash_ge _null_ _null_ _null_ ));
+DATA(insert OID = 894 ( cash_pl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 790 "790 790" _null_ _null_ _null_ _null_ cash_pl _null_ _null_ _null_ ));
+DATA(insert OID = 895 ( cash_mi PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 790 "790 790" _null_ _null_ _null_ _null_ cash_mi _null_ _null_ _null_ ));
+DATA(insert OID = 896 ( cash_mul_flt8 PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 790 "790 701" _null_ _null_ _null_ _null_ cash_mul_flt8 _null_ _null_ _null_ ));
+DATA(insert OID = 897 ( cash_div_flt8 PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 790 "790 701" _null_ _null_ _null_ _null_ cash_div_flt8 _null_ _null_ _null_ ));
+DATA(insert OID = 898 ( cashlarger PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 790 "790 790" _null_ _null_ _null_ _null_ cashlarger _null_ _null_ _null_ ));
DESCR("larger of two");
-DATA(insert OID = 899 ( cashsmaller PGNSP PGUID 12 1 0 0 f f f t f i 2 0 790 "790 790" _null_ _null_ _null_ _null_ cashsmaller _null_ _null_ _null_ ));
+DATA(insert OID = 899 ( cashsmaller PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 790 "790 790" _null_ _null_ _null_ _null_ cashsmaller _null_ _null_ _null_ ));
DESCR("smaller of two");
-DATA(insert OID = 919 ( flt8_mul_cash PGNSP PGUID 12 1 0 0 f f f t f i 2 0 790 "701 790" _null_ _null_ _null_ _null_ flt8_mul_cash _null_ _null_ _null_ ));
-DATA(insert OID = 935 ( cash_words PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "790" _null_ _null_ _null_ _null_ cash_words _null_ _null_ _null_ ));
+DATA(insert OID = 919 ( flt8_mul_cash PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 790 "701 790" _null_ _null_ _null_ _null_ flt8_mul_cash _null_ _null_ _null_ ));
+DATA(insert OID = 935 ( cash_words PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "790" _null_ _null_ _null_ _null_ cash_words _null_ _null_ _null_ ));
DESCR("output money amount as words");
-DATA(insert OID = 3822 ( cash_div_cash PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "790 790" _null_ _null_ _null_ _null_ cash_div_cash _null_ _null_ _null_ ));
-DATA(insert OID = 3823 ( numeric PGNSP PGUID 12 1 0 0 f f f t f s 1 0 1700 "790" _null_ _null_ _null_ _null_ cash_numeric _null_ _null_ _null_ ));
+DATA(insert OID = 3822 ( cash_div_cash PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "790 790" _null_ _null_ _null_ _null_ cash_div_cash _null_ _null_ _null_ ));
+DATA(insert OID = 3823 ( numeric PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 1700 "790" _null_ _null_ _null_ _null_ cash_numeric _null_ _null_ _null_ ));
DESCR("convert money to numeric");
-DATA(insert OID = 3824 ( money PGNSP PGUID 12 1 0 0 f f f t f s 1 0 790 "1700" _null_ _null_ _null_ _null_ numeric_cash _null_ _null_ _null_ ));
+DATA(insert OID = 3824 ( money PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 790 "1700" _null_ _null_ _null_ _null_ numeric_cash _null_ _null_ _null_ ));
DESCR("convert numeric to money");
-DATA(insert OID = 3811 ( money PGNSP PGUID 12 1 0 0 f f f t f s 1 0 790 "23" _null_ _null_ _null_ _null_ int4_cash _null_ _null_ _null_ ));
+DATA(insert OID = 3811 ( money PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 790 "23" _null_ _null_ _null_ _null_ int4_cash _null_ _null_ _null_ ));
DESCR("convert int4 to money");
-DATA(insert OID = 3812 ( money PGNSP PGUID 12 1 0 0 f f f t f s 1 0 790 "20" _null_ _null_ _null_ _null_ int8_cash _null_ _null_ _null_ ));
+DATA(insert OID = 3812 ( money PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 790 "20" _null_ _null_ _null_ _null_ int8_cash _null_ _null_ _null_ ));
DESCR("convert int8 to money");
/* OIDS 900 - 999 */
-DATA(insert OID = 940 ( mod PGNSP PGUID 12 1 0 0 f f f t f i 2 0 21 "21 21" _null_ _null_ _null_ _null_ int2mod _null_ _null_ _null_ ));
+DATA(insert OID = 940 ( mod PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 21 "21 21" _null_ _null_ _null_ _null_ int2mod _null_ _null_ _null_ ));
DESCR("modulus");
-DATA(insert OID = 941 ( mod PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4mod _null_ _null_ _null_ ));
+DATA(insert OID = 941 ( mod PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4mod _null_ _null_ _null_ ));
DESCR("modulus");
-DATA(insert OID = 945 ( int8mod PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "20 20" _null_ _null_ _null_ _null_ int8mod _null_ _null_ _null_ ));
-DATA(insert OID = 947 ( mod PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "20 20" _null_ _null_ _null_ _null_ int8mod _null_ _null_ _null_ ));
+DATA(insert OID = 945 ( int8mod PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "20 20" _null_ _null_ _null_ _null_ int8mod _null_ _null_ _null_ ));
+DATA(insert OID = 947 ( mod PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "20 20" _null_ _null_ _null_ _null_ int8mod _null_ _null_ _null_ ));
DESCR("modulus");
-DATA(insert OID = 944 ( char PGNSP PGUID 12 1 0 0 f f f t f i 1 0 18 "25" _null_ _null_ _null_ _null_ text_char _null_ _null_ _null_ ));
+DATA(insert OID = 944 ( char PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 18 "25" _null_ _null_ _null_ _null_ text_char _null_ _null_ _null_ ));
DESCR("convert text to char");
-DATA(insert OID = 946 ( text PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "18" _null_ _null_ _null_ _null_ char_text _null_ _null_ _null_ ));
+DATA(insert OID = 946 ( text PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "18" _null_ _null_ _null_ _null_ char_text _null_ _null_ _null_ ));
DESCR("convert char to text");
-DATA(insert OID = 952 ( lo_open PGNSP PGUID 12 1 0 0 f f f t f v 2 0 23 "26 23" _null_ _null_ _null_ _null_ lo_open _null_ _null_ _null_ ));
+DATA(insert OID = 952 ( lo_open PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 23 "26 23" _null_ _null_ _null_ _null_ lo_open _null_ _null_ _null_ ));
DESCR("large object open");
-DATA(insert OID = 953 ( lo_close PGNSP PGUID 12 1 0 0 f f f t f v 1 0 23 "23" _null_ _null_ _null_ _null_ lo_close _null_ _null_ _null_ ));
+DATA(insert OID = 953 ( lo_close PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 23 "23" _null_ _null_ _null_ _null_ lo_close _null_ _null_ _null_ ));
DESCR("large object close");
-DATA(insert OID = 954 ( loread PGNSP PGUID 12 1 0 0 f f f t f v 2 0 17 "23 23" _null_ _null_ _null_ _null_ loread _null_ _null_ _null_ ));
+DATA(insert OID = 954 ( loread PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 17 "23 23" _null_ _null_ _null_ _null_ loread _null_ _null_ _null_ ));
DESCR("large object read");
-DATA(insert OID = 955 ( lowrite PGNSP PGUID 12 1 0 0 f f f t f v 2 0 23 "23 17" _null_ _null_ _null_ _null_ lowrite _null_ _null_ _null_ ));
+DATA(insert OID = 955 ( lowrite PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 23 "23 17" _null_ _null_ _null_ _null_ lowrite _null_ _null_ _null_ ));
DESCR("large object write");
-DATA(insert OID = 956 ( lo_lseek PGNSP PGUID 12 1 0 0 f f f t f v 3 0 23 "23 23 23" _null_ _null_ _null_ _null_ lo_lseek _null_ _null_ _null_ ));
+DATA(insert OID = 956 ( lo_lseek PGNSP PGUID 12 1 0 0 0 f f f t f v 3 0 23 "23 23 23" _null_ _null_ _null_ _null_ lo_lseek _null_ _null_ _null_ ));
DESCR("large object seek");
-DATA(insert OID = 957 ( lo_creat PGNSP PGUID 12 1 0 0 f f f t f v 1 0 26 "23" _null_ _null_ _null_ _null_ lo_creat _null_ _null_ _null_ ));
+DATA(insert OID = 957 ( lo_creat PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 26 "23" _null_ _null_ _null_ _null_ lo_creat _null_ _null_ _null_ ));
DESCR("large object create");
-DATA(insert OID = 715 ( lo_create PGNSP PGUID 12 1 0 0 f f f t f v 1 0 26 "26" _null_ _null_ _null_ _null_ lo_create _null_ _null_ _null_ ));
+DATA(insert OID = 715 ( lo_create PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 26 "26" _null_ _null_ _null_ _null_ lo_create _null_ _null_ _null_ ));
DESCR("large object create");
-DATA(insert OID = 958 ( lo_tell PGNSP PGUID 12 1 0 0 f f f t f v 1 0 23 "23" _null_ _null_ _null_ _null_ lo_tell _null_ _null_ _null_ ));
+DATA(insert OID = 958 ( lo_tell PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 23 "23" _null_ _null_ _null_ _null_ lo_tell _null_ _null_ _null_ ));
DESCR("large object position");
-DATA(insert OID = 1004 ( lo_truncate PGNSP PGUID 12 1 0 0 f f f t f v 2 0 23 "23 23" _null_ _null_ _null_ _null_ lo_truncate _null_ _null_ _null_ ));
+DATA(insert OID = 1004 ( lo_truncate PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 23 "23 23" _null_ _null_ _null_ _null_ lo_truncate _null_ _null_ _null_ ));
DESCR("truncate large object");
-DATA(insert OID = 959 ( on_pl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "600 628" _null_ _null_ _null_ _null_ on_pl _null_ _null_ _null_ ));
-DATA(insert OID = 960 ( on_sl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "601 628" _null_ _null_ _null_ _null_ on_sl _null_ _null_ _null_ ));
-DATA(insert OID = 961 ( close_pl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 600 "600 628" _null_ _null_ _null_ _null_ close_pl _null_ _null_ _null_ ));
-DATA(insert OID = 962 ( close_sl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 600 "601 628" _null_ _null_ _null_ _null_ close_sl _null_ _null_ _null_ ));
-DATA(insert OID = 963 ( close_lb PGNSP PGUID 12 1 0 0 f f f t f i 2 0 600 "628 603" _null_ _null_ _null_ _null_ close_lb _null_ _null_ _null_ ));
+DATA(insert OID = 959 ( on_pl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "600 628" _null_ _null_ _null_ _null_ on_pl _null_ _null_ _null_ ));
+DATA(insert OID = 960 ( on_sl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "601 628" _null_ _null_ _null_ _null_ on_sl _null_ _null_ _null_ ));
+DATA(insert OID = 961 ( close_pl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 600 "600 628" _null_ _null_ _null_ _null_ close_pl _null_ _null_ _null_ ));
+DATA(insert OID = 962 ( close_sl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 600 "601 628" _null_ _null_ _null_ _null_ close_sl _null_ _null_ _null_ ));
+DATA(insert OID = 963 ( close_lb PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 600 "628 603" _null_ _null_ _null_ _null_ close_lb _null_ _null_ _null_ ));
-DATA(insert OID = 964 ( lo_unlink PGNSP PGUID 12 1 0 0 f f f t f v 1 0 23 "26" _null_ _null_ _null_ _null_ lo_unlink _null_ _null_ _null_ ));
+DATA(insert OID = 964 ( lo_unlink PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 23 "26" _null_ _null_ _null_ _null_ lo_unlink _null_ _null_ _null_ ));
DESCR("large object unlink (delete)");
-DATA(insert OID = 973 ( path_inter PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "602 602" _null_ _null_ _null_ _null_ path_inter _null_ _null_ _null_ ));
-DATA(insert OID = 975 ( area PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "603" _null_ _null_ _null_ _null_ box_area _null_ _null_ _null_ ));
+DATA(insert OID = 973 ( path_inter PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "602 602" _null_ _null_ _null_ _null_ path_inter _null_ _null_ _null_ ));
+DATA(insert OID = 975 ( area PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "603" _null_ _null_ _null_ _null_ box_area _null_ _null_ _null_ ));
DESCR("box area");
-DATA(insert OID = 976 ( width PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "603" _null_ _null_ _null_ _null_ box_width _null_ _null_ _null_ ));
+DATA(insert OID = 976 ( width PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "603" _null_ _null_ _null_ _null_ box_width _null_ _null_ _null_ ));
DESCR("box width");
-DATA(insert OID = 977 ( height PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "603" _null_ _null_ _null_ _null_ box_height _null_ _null_ _null_ ));
+DATA(insert OID = 977 ( height PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "603" _null_ _null_ _null_ _null_ box_height _null_ _null_ _null_ ));
DESCR("box height");
-DATA(insert OID = 978 ( box_distance PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "603 603" _null_ _null_ _null_ _null_ box_distance _null_ _null_ _null_ ));
-DATA(insert OID = 979 ( area PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "602" _null_ _null_ _null_ _null_ path_area _null_ _null_ _null_ ));
+DATA(insert OID = 978 ( box_distance PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "603 603" _null_ _null_ _null_ _null_ box_distance _null_ _null_ _null_ ));
+DATA(insert OID = 979 ( area PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "602" _null_ _null_ _null_ _null_ path_area _null_ _null_ _null_ ));
DESCR("area of a closed path");
-DATA(insert OID = 980 ( box_intersect PGNSP PGUID 12 1 0 0 f f f t f i 2 0 603 "603 603" _null_ _null_ _null_ _null_ box_intersect _null_ _null_ _null_ ));
-DATA(insert OID = 981 ( diagonal PGNSP PGUID 12 1 0 0 f f f t f i 1 0 601 "603" _null_ _null_ _null_ _null_ box_diagonal _null_ _null_ _null_ ));
+DATA(insert OID = 980 ( box_intersect PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 603 "603 603" _null_ _null_ _null_ _null_ box_intersect _null_ _null_ _null_ ));
+DATA(insert OID = 981 ( diagonal PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 601 "603" _null_ _null_ _null_ _null_ box_diagonal _null_ _null_ _null_ ));
DESCR("box diagonal");
-DATA(insert OID = 982 ( path_n_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "602 602" _null_ _null_ _null_ _null_ path_n_lt _null_ _null_ _null_ ));
-DATA(insert OID = 983 ( path_n_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "602 602" _null_ _null_ _null_ _null_ path_n_gt _null_ _null_ _null_ ));
-DATA(insert OID = 984 ( path_n_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "602 602" _null_ _null_ _null_ _null_ path_n_eq _null_ _null_ _null_ ));
-DATA(insert OID = 985 ( path_n_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "602 602" _null_ _null_ _null_ _null_ path_n_le _null_ _null_ _null_ ));
-DATA(insert OID = 986 ( path_n_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "602 602" _null_ _null_ _null_ _null_ path_n_ge _null_ _null_ _null_ ));
-DATA(insert OID = 987 ( path_length PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "602" _null_ _null_ _null_ _null_ path_length _null_ _null_ _null_ ));
-DATA(insert OID = 988 ( point_ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "600 600" _null_ _null_ _null_ _null_ point_ne _null_ _null_ _null_ ));
-DATA(insert OID = 989 ( point_vert PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "600 600" _null_ _null_ _null_ _null_ point_vert _null_ _null_ _null_ ));
-DATA(insert OID = 990 ( point_horiz PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "600 600" _null_ _null_ _null_ _null_ point_horiz _null_ _null_ _null_ ));
-DATA(insert OID = 991 ( point_distance PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "600 600" _null_ _null_ _null_ _null_ point_distance _null_ _null_ _null_ ));
-DATA(insert OID = 992 ( slope PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "600 600" _null_ _null_ _null_ _null_ point_slope _null_ _null_ _null_ ));
+DATA(insert OID = 982 ( path_n_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "602 602" _null_ _null_ _null_ _null_ path_n_lt _null_ _null_ _null_ ));
+DATA(insert OID = 983 ( path_n_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "602 602" _null_ _null_ _null_ _null_ path_n_gt _null_ _null_ _null_ ));
+DATA(insert OID = 984 ( path_n_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "602 602" _null_ _null_ _null_ _null_ path_n_eq _null_ _null_ _null_ ));
+DATA(insert OID = 985 ( path_n_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "602 602" _null_ _null_ _null_ _null_ path_n_le _null_ _null_ _null_ ));
+DATA(insert OID = 986 ( path_n_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "602 602" _null_ _null_ _null_ _null_ path_n_ge _null_ _null_ _null_ ));
+DATA(insert OID = 987 ( path_length PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "602" _null_ _null_ _null_ _null_ path_length _null_ _null_ _null_ ));
+DATA(insert OID = 988 ( point_ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "600 600" _null_ _null_ _null_ _null_ point_ne _null_ _null_ _null_ ));
+DATA(insert OID = 989 ( point_vert PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "600 600" _null_ _null_ _null_ _null_ point_vert _null_ _null_ _null_ ));
+DATA(insert OID = 990 ( point_horiz PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "600 600" _null_ _null_ _null_ _null_ point_horiz _null_ _null_ _null_ ));
+DATA(insert OID = 991 ( point_distance PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "600 600" _null_ _null_ _null_ _null_ point_distance _null_ _null_ _null_ ));
+DATA(insert OID = 992 ( slope PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "600 600" _null_ _null_ _null_ _null_ point_slope _null_ _null_ _null_ ));
DESCR("slope between points");
-DATA(insert OID = 993 ( lseg PGNSP PGUID 12 1 0 0 f f f t f i 2 0 601 "600 600" _null_ _null_ _null_ _null_ lseg_construct _null_ _null_ _null_ ));
+DATA(insert OID = 993 ( lseg PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 601 "600 600" _null_ _null_ _null_ _null_ lseg_construct _null_ _null_ _null_ ));
DESCR("convert points to line segment");
-DATA(insert OID = 994 ( lseg_intersect PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "601 601" _null_ _null_ _null_ _null_ lseg_intersect _null_ _null_ _null_ ));
-DATA(insert OID = 995 ( lseg_parallel PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "601 601" _null_ _null_ _null_ _null_ lseg_parallel _null_ _null_ _null_ ));
-DATA(insert OID = 996 ( lseg_perp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "601 601" _null_ _null_ _null_ _null_ lseg_perp _null_ _null_ _null_ ));
-DATA(insert OID = 997 ( lseg_vertical PGNSP PGUID 12 1 0 0 f f f t f i 1 0 16 "601" _null_ _null_ _null_ _null_ lseg_vertical _null_ _null_ _null_ ));
-DATA(insert OID = 998 ( lseg_horizontal PGNSP PGUID 12 1 0 0 f f f t f i 1 0 16 "601" _null_ _null_ _null_ _null_ lseg_horizontal _null_ _null_ _null_ ));
-DATA(insert OID = 999 ( lseg_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "601 601" _null_ _null_ _null_ _null_ lseg_eq _null_ _null_ _null_ ));
+DATA(insert OID = 994 ( lseg_intersect PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "601 601" _null_ _null_ _null_ _null_ lseg_intersect _null_ _null_ _null_ ));
+DATA(insert OID = 995 ( lseg_parallel PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "601 601" _null_ _null_ _null_ _null_ lseg_parallel _null_ _null_ _null_ ));
+DATA(insert OID = 996 ( lseg_perp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "601 601" _null_ _null_ _null_ _null_ lseg_perp _null_ _null_ _null_ ));
+DATA(insert OID = 997 ( lseg_vertical PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 16 "601" _null_ _null_ _null_ _null_ lseg_vertical _null_ _null_ _null_ ));
+DATA(insert OID = 998 ( lseg_horizontal PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 16 "601" _null_ _null_ _null_ _null_ lseg_horizontal _null_ _null_ _null_ ));
+DATA(insert OID = 999 ( lseg_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "601 601" _null_ _null_ _null_ _null_ lseg_eq _null_ _null_ _null_ ));
/* OIDS 1000 - 1999 */
-DATA(insert OID = 1026 ( timezone PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1114 "1186 1184" _null_ _null_ _null_ _null_ timestamptz_izone _null_ _null_ _null_ ));
+DATA(insert OID = 1026 ( timezone PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1114 "1186 1184" _null_ _null_ _null_ _null_ timestamptz_izone _null_ _null_ _null_ ));
DESCR("adjust timestamp to new time zone");
-DATA(insert OID = 1031 ( aclitemin PGNSP PGUID 12 1 0 0 f f f t f s 1 0 1033 "2275" _null_ _null_ _null_ _null_ aclitemin _null_ _null_ _null_ ));
+DATA(insert OID = 1031 ( aclitemin PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 1033 "2275" _null_ _null_ _null_ _null_ aclitemin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 1032 ( aclitemout PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "1033" _null_ _null_ _null_ _null_ aclitemout _null_ _null_ _null_ ));
+DATA(insert OID = 1032 ( aclitemout PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "1033" _null_ _null_ _null_ _null_ aclitemout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 1035 ( aclinsert PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1034 "1034 1033" _null_ _null_ _null_ _null_ aclinsert _null_ _null_ _null_ ));
+DATA(insert OID = 1035 ( aclinsert PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1034 "1034 1033" _null_ _null_ _null_ _null_ aclinsert _null_ _null_ _null_ ));
DESCR("add/update ACL item");
-DATA(insert OID = 1036 ( aclremove PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1034 "1034 1033" _null_ _null_ _null_ _null_ aclremove _null_ _null_ _null_ ));
+DATA(insert OID = 1036 ( aclremove PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1034 "1034 1033" _null_ _null_ _null_ _null_ aclremove _null_ _null_ _null_ ));
DESCR("remove ACL item");
-DATA(insert OID = 1037 ( aclcontains PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1034 1033" _null_ _null_ _null_ _null_ aclcontains _null_ _null_ _null_ ));
+DATA(insert OID = 1037 ( aclcontains PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1034 1033" _null_ _null_ _null_ _null_ aclcontains _null_ _null_ _null_ ));
DESCR("contains");
-DATA(insert OID = 1062 ( aclitemeq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1033 1033" _null_ _null_ _null_ _null_ aclitem_eq _null_ _null_ _null_ ));
-DATA(insert OID = 1365 ( makeaclitem PGNSP PGUID 12 1 0 0 f f f t f i 4 0 1033 "26 26 25 16" _null_ _null_ _null_ _null_ makeaclitem _null_ _null_ _null_ ));
+DATA(insert OID = 1062 ( aclitemeq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1033 1033" _null_ _null_ _null_ _null_ aclitem_eq _null_ _null_ _null_ ));
+DATA(insert OID = 1365 ( makeaclitem PGNSP PGUID 12 1 0 0 0 f f f t f i 4 0 1033 "26 26 25 16" _null_ _null_ _null_ _null_ makeaclitem _null_ _null_ _null_ ));
DESCR("make ACL item");
-DATA(insert OID = 1689 ( aclexplode PGNSP PGUID 12 1 10 0 f f f t t s 1 0 2249 "1034" "{1034,26,26,25,16}" "{i,o,o,o,o}" "{acl,grantor,grantee,privilege_type,is_grantable}" _null_ aclexplode _null_ _null_ _null_ ));
+DATA(insert OID = 1689 ( aclexplode PGNSP PGUID 12 1 10 0 0 f f f t t s 1 0 2249 "1034" "{1034,26,26,25,16}" "{i,o,o,o,o}" "{acl,grantor,grantee,privilege_type,is_grantable}" _null_ aclexplode _null_ _null_ _null_ ));
DESCR("convert ACL item array to table, for use by information schema");
-DATA(insert OID = 1044 ( bpcharin PGNSP PGUID 12 1 0 0 f f f t f i 3 0 1042 "2275 26 23" _null_ _null_ _null_ _null_ bpcharin _null_ _null_ _null_ ));
+DATA(insert OID = 1044 ( bpcharin PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 1042 "2275 26 23" _null_ _null_ _null_ _null_ bpcharin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 1045 ( bpcharout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "1042" _null_ _null_ _null_ _null_ bpcharout _null_ _null_ _null_ ));
+DATA(insert OID = 1045 ( bpcharout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "1042" _null_ _null_ _null_ _null_ bpcharout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2913 ( bpchartypmodin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1263" _null_ _null_ _null_ _null_ bpchartypmodin _null_ _null_ _null_ ));
+DATA(insert OID = 2913 ( bpchartypmodin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1263" _null_ _null_ _null_ _null_ bpchartypmodin _null_ _null_ _null_ ));
DESCR("I/O typmod");
-DATA(insert OID = 2914 ( bpchartypmodout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "23" _null_ _null_ _null_ _null_ bpchartypmodout _null_ _null_ _null_ ));
+DATA(insert OID = 2914 ( bpchartypmodout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "23" _null_ _null_ _null_ _null_ bpchartypmodout _null_ _null_ _null_ ));
DESCR("I/O typmod");
-DATA(insert OID = 1046 ( varcharin PGNSP PGUID 12 1 0 0 f f f t f i 3 0 1043 "2275 26 23" _null_ _null_ _null_ _null_ varcharin _null_ _null_ _null_ ));
+DATA(insert OID = 1046 ( varcharin PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 1043 "2275 26 23" _null_ _null_ _null_ _null_ varcharin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 1047 ( varcharout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "1043" _null_ _null_ _null_ _null_ varcharout _null_ _null_ _null_ ));
+DATA(insert OID = 1047 ( varcharout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "1043" _null_ _null_ _null_ _null_ varcharout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2915 ( varchartypmodin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1263" _null_ _null_ _null_ _null_ varchartypmodin _null_ _null_ _null_ ));
+DATA(insert OID = 2915 ( varchartypmodin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1263" _null_ _null_ _null_ _null_ varchartypmodin _null_ _null_ _null_ ));
DESCR("I/O typmod");
-DATA(insert OID = 2916 ( varchartypmodout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "23" _null_ _null_ _null_ _null_ varchartypmodout _null_ _null_ _null_ ));
+DATA(insert OID = 2916 ( varchartypmodout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "23" _null_ _null_ _null_ _null_ varchartypmodout _null_ _null_ _null_ ));
DESCR("I/O typmod");
-DATA(insert OID = 1048 ( bpchareq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ bpchareq _null_ _null_ _null_ ));
-DATA(insert OID = 1049 ( bpcharlt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ bpcharlt _null_ _null_ _null_ ));
-DATA(insert OID = 1050 ( bpcharle PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ bpcharle _null_ _null_ _null_ ));
-DATA(insert OID = 1051 ( bpchargt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ bpchargt _null_ _null_ _null_ ));
-DATA(insert OID = 1052 ( bpcharge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ bpcharge _null_ _null_ _null_ ));
-DATA(insert OID = 1053 ( bpcharne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ bpcharne _null_ _null_ _null_ ));
-DATA(insert OID = 1063 ( bpchar_larger PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1042 "1042 1042" _null_ _null_ _null_ _null_ bpchar_larger _null_ _null_ _null_ ));
+DATA(insert OID = 1048 ( bpchareq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ bpchareq _null_ _null_ _null_ ));
+DATA(insert OID = 1049 ( bpcharlt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ bpcharlt _null_ _null_ _null_ ));
+DATA(insert OID = 1050 ( bpcharle PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ bpcharle _null_ _null_ _null_ ));
+DATA(insert OID = 1051 ( bpchargt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ bpchargt _null_ _null_ _null_ ));
+DATA(insert OID = 1052 ( bpcharge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ bpcharge _null_ _null_ _null_ ));
+DATA(insert OID = 1053 ( bpcharne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ bpcharne _null_ _null_ _null_ ));
+DATA(insert OID = 1063 ( bpchar_larger PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1042 "1042 1042" _null_ _null_ _null_ _null_ bpchar_larger _null_ _null_ _null_ ));
DESCR("larger of two");
-DATA(insert OID = 1064 ( bpchar_smaller PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1042 "1042 1042" _null_ _null_ _null_ _null_ bpchar_smaller _null_ _null_ _null_ ));
+DATA(insert OID = 1064 ( bpchar_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1042 "1042 1042" _null_ _null_ _null_ _null_ bpchar_smaller _null_ _null_ _null_ ));
DESCR("smaller of two");
-DATA(insert OID = 1078 ( bpcharcmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "1042 1042" _null_ _null_ _null_ _null_ bpcharcmp _null_ _null_ _null_ ));
+DATA(insert OID = 1078 ( bpcharcmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "1042 1042" _null_ _null_ _null_ _null_ bpcharcmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 1080 ( hashbpchar PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1042" _null_ _null_ _null_ _null_ hashbpchar _null_ _null_ _null_ ));
+DATA(insert OID = 1080 ( hashbpchar PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1042" _null_ _null_ _null_ _null_ hashbpchar _null_ _null_ _null_ ));
DESCR("hash");
-DATA(insert OID = 1081 ( format_type PGNSP PGUID 12 1 0 0 f f f f f s 2 0 25 "26 23" _null_ _null_ _null_ _null_ format_type _null_ _null_ _null_ ));
+DATA(insert OID = 1081 ( format_type PGNSP PGUID 12 1 0 0 0 f f f f f s 2 0 25 "26 23" _null_ _null_ _null_ _null_ format_type _null_ _null_ _null_ ));
DESCR("format a type oid and atttypmod to canonical SQL");
-DATA(insert OID = 1084 ( date_in PGNSP PGUID 12 1 0 0 f f f t f s 1 0 1082 "2275" _null_ _null_ _null_ _null_ date_in _null_ _null_ _null_ ));
+DATA(insert OID = 1084 ( date_in PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 1082 "2275" _null_ _null_ _null_ _null_ date_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 1085 ( date_out PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "1082" _null_ _null_ _null_ _null_ date_out _null_ _null_ _null_ ));
+DATA(insert OID = 1085 ( date_out PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "1082" _null_ _null_ _null_ _null_ date_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 1086 ( date_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ date_eq _null_ _null_ _null_ ));
-DATA(insert OID = 1087 ( date_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ date_lt _null_ _null_ _null_ ));
-DATA(insert OID = 1088 ( date_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ date_le _null_ _null_ _null_ ));
-DATA(insert OID = 1089 ( date_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ date_gt _null_ _null_ _null_ ));
-DATA(insert OID = 1090 ( date_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ date_ge _null_ _null_ _null_ ));
-DATA(insert OID = 1091 ( date_ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ date_ne _null_ _null_ _null_ ));
-DATA(insert OID = 1092 ( date_cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "1082 1082" _null_ _null_ _null_ _null_ date_cmp _null_ _null_ _null_ ));
+DATA(insert OID = 1086 ( date_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ date_eq _null_ _null_ _null_ ));
+DATA(insert OID = 1087 ( date_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ date_lt _null_ _null_ _null_ ));
+DATA(insert OID = 1088 ( date_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ date_le _null_ _null_ _null_ ));
+DATA(insert OID = 1089 ( date_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ date_gt _null_ _null_ _null_ ));
+DATA(insert OID = 1090 ( date_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ date_ge _null_ _null_ _null_ ));
+DATA(insert OID = 1091 ( date_ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ date_ne _null_ _null_ _null_ ));
+DATA(insert OID = 1092 ( date_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "1082 1082" _null_ _null_ _null_ _null_ date_cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
/* OIDS 1100 - 1199 */
-DATA(insert OID = 1102 ( time_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ time_lt _null_ _null_ _null_ ));
-DATA(insert OID = 1103 ( time_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ time_le _null_ _null_ _null_ ));
-DATA(insert OID = 1104 ( time_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ time_gt _null_ _null_ _null_ ));
-DATA(insert OID = 1105 ( time_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ time_ge _null_ _null_ _null_ ));
-DATA(insert OID = 1106 ( time_ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ time_ne _null_ _null_ _null_ ));
-DATA(insert OID = 1107 ( time_cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "1083 1083" _null_ _null_ _null_ _null_ time_cmp _null_ _null_ _null_ ));
+DATA(insert OID = 1102 ( time_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ time_lt _null_ _null_ _null_ ));
+DATA(insert OID = 1103 ( time_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ time_le _null_ _null_ _null_ ));
+DATA(insert OID = 1104 ( time_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ time_gt _null_ _null_ _null_ ));
+DATA(insert OID = 1105 ( time_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ time_ge _null_ _null_ _null_ ));
+DATA(insert OID = 1106 ( time_ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ time_ne _null_ _null_ _null_ ));
+DATA(insert OID = 1107 ( time_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "1083 1083" _null_ _null_ _null_ _null_ time_cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 1138 ( date_larger PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1082 "1082 1082" _null_ _null_ _null_ _null_ date_larger _null_ _null_ _null_ ));
+DATA(insert OID = 1138 ( date_larger PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1082 "1082 1082" _null_ _null_ _null_ _null_ date_larger _null_ _null_ _null_ ));
DESCR("larger of two");
-DATA(insert OID = 1139 ( date_smaller PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1082 "1082 1082" _null_ _null_ _null_ _null_ date_smaller _null_ _null_ _null_ ));
+DATA(insert OID = 1139 ( date_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1082 "1082 1082" _null_ _null_ _null_ _null_ date_smaller _null_ _null_ _null_ ));
DESCR("smaller of two");
-DATA(insert OID = 1140 ( date_mi PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "1082 1082" _null_ _null_ _null_ _null_ date_mi _null_ _null_ _null_ ));
-DATA(insert OID = 1141 ( date_pli PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1082 "1082 23" _null_ _null_ _null_ _null_ date_pli _null_ _null_ _null_ ));
-DATA(insert OID = 1142 ( date_mii PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1082 "1082 23" _null_ _null_ _null_ _null_ date_mii _null_ _null_ _null_ ));
-DATA(insert OID = 1143 ( time_in PGNSP PGUID 12 1 0 0 f f f t f s 3 0 1083 "2275 26 23" _null_ _null_ _null_ _null_ time_in _null_ _null_ _null_ ));
+DATA(insert OID = 1140 ( date_mi PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "1082 1082" _null_ _null_ _null_ _null_ date_mi _null_ _null_ _null_ ));
+DATA(insert OID = 1141 ( date_pli PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1082 "1082 23" _null_ _null_ _null_ _null_ date_pli _null_ _null_ _null_ ));
+DATA(insert OID = 1142 ( date_mii PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1082 "1082 23" _null_ _null_ _null_ _null_ date_mii _null_ _null_ _null_ ));
+DATA(insert OID = 1143 ( time_in PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 1083 "2275 26 23" _null_ _null_ _null_ _null_ time_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 1144 ( time_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "1083" _null_ _null_ _null_ _null_ time_out _null_ _null_ _null_ ));
+DATA(insert OID = 1144 ( time_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "1083" _null_ _null_ _null_ _null_ time_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2909 ( timetypmodin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1263" _null_ _null_ _null_ _null_ timetypmodin _null_ _null_ _null_ ));
+DATA(insert OID = 2909 ( timetypmodin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1263" _null_ _null_ _null_ _null_ timetypmodin _null_ _null_ _null_ ));
DESCR("I/O typmod");
-DATA(insert OID = 2910 ( timetypmodout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "23" _null_ _null_ _null_ _null_ timetypmodout _null_ _null_ _null_ ));
+DATA(insert OID = 2910 ( timetypmodout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "23" _null_ _null_ _null_ _null_ timetypmodout _null_ _null_ _null_ ));
DESCR("I/O typmod");
-DATA(insert OID = 1145 ( time_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ time_eq _null_ _null_ _null_ ));
+DATA(insert OID = 1145 ( time_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ time_eq _null_ _null_ _null_ ));
-DATA(insert OID = 1146 ( circle_add_pt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 718 "718 600" _null_ _null_ _null_ _null_ circle_add_pt _null_ _null_ _null_ ));
-DATA(insert OID = 1147 ( circle_sub_pt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 718 "718 600" _null_ _null_ _null_ _null_ circle_sub_pt _null_ _null_ _null_ ));
-DATA(insert OID = 1148 ( circle_mul_pt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 718 "718 600" _null_ _null_ _null_ _null_ circle_mul_pt _null_ _null_ _null_ ));
-DATA(insert OID = 1149 ( circle_div_pt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 718 "718 600" _null_ _null_ _null_ _null_ circle_div_pt _null_ _null_ _null_ ));
+DATA(insert OID = 1146 ( circle_add_pt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 718 "718 600" _null_ _null_ _null_ _null_ circle_add_pt _null_ _null_ _null_ ));
+DATA(insert OID = 1147 ( circle_sub_pt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 718 "718 600" _null_ _null_ _null_ _null_ circle_sub_pt _null_ _null_ _null_ ));
+DATA(insert OID = 1148 ( circle_mul_pt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 718 "718 600" _null_ _null_ _null_ _null_ circle_mul_pt _null_ _null_ _null_ ));
+DATA(insert OID = 1149 ( circle_div_pt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 718 "718 600" _null_ _null_ _null_ _null_ circle_div_pt _null_ _null_ _null_ ));
-DATA(insert OID = 1150 ( timestamptz_in PGNSP PGUID 12 1 0 0 f f f t f s 3 0 1184 "2275 26 23" _null_ _null_ _null_ _null_ timestamptz_in _null_ _null_ _null_ ));
+DATA(insert OID = 1150 ( timestamptz_in PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 1184 "2275 26 23" _null_ _null_ _null_ _null_ timestamptz_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 1151 ( timestamptz_out PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "1184" _null_ _null_ _null_ _null_ timestamptz_out _null_ _null_ _null_ ));
+DATA(insert OID = 1151 ( timestamptz_out PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "1184" _null_ _null_ _null_ _null_ timestamptz_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2907 ( timestamptztypmodin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1263" _null_ _null_ _null_ _null_ timestamptztypmodin _null_ _null_ _null_ ));
+DATA(insert OID = 2907 ( timestamptztypmodin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1263" _null_ _null_ _null_ _null_ timestamptztypmodin _null_ _null_ _null_ ));
DESCR("I/O typmod");
-DATA(insert OID = 2908 ( timestamptztypmodout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "23" _null_ _null_ _null_ _null_ timestamptztypmodout _null_ _null_ _null_ ));
+DATA(insert OID = 2908 ( timestamptztypmodout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "23" _null_ _null_ _null_ _null_ timestamptztypmodout _null_ _null_ _null_ ));
DESCR("I/O typmod");
-DATA(insert OID = 1152 ( timestamptz_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ timestamp_eq _null_ _null_ _null_ ));
-DATA(insert OID = 1153 ( timestamptz_ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ timestamp_ne _null_ _null_ _null_ ));
-DATA(insert OID = 1154 ( timestamptz_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ timestamp_lt _null_ _null_ _null_ ));
-DATA(insert OID = 1155 ( timestamptz_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ timestamp_le _null_ _null_ _null_ ));
-DATA(insert OID = 1156 ( timestamptz_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ timestamp_ge _null_ _null_ _null_ ));
-DATA(insert OID = 1157 ( timestamptz_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ timestamp_gt _null_ _null_ _null_ ));
-DATA(insert OID = 1158 ( to_timestamp PGNSP PGUID 14 1 0 0 f f f t f i 1 0 1184 "701" _null_ _null_ _null_ _null_ "select (''epoch''::pg_catalog.timestamptz + $1 * ''1 second''::pg_catalog.interval)" _null_ _null_ _null_ ));
+DATA(insert OID = 1152 ( timestamptz_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ timestamp_eq _null_ _null_ _null_ ));
+DATA(insert OID = 1153 ( timestamptz_ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ timestamp_ne _null_ _null_ _null_ ));
+DATA(insert OID = 1154 ( timestamptz_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ timestamp_lt _null_ _null_ _null_ ));
+DATA(insert OID = 1155 ( timestamptz_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ timestamp_le _null_ _null_ _null_ ));
+DATA(insert OID = 1156 ( timestamptz_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ timestamp_ge _null_ _null_ _null_ ));
+DATA(insert OID = 1157 ( timestamptz_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ timestamp_gt _null_ _null_ _null_ ));
+DATA(insert OID = 1158 ( to_timestamp PGNSP PGUID 14 1 0 0 0 f f f t f i 1 0 1184 "701" _null_ _null_ _null_ _null_ "select (''epoch''::pg_catalog.timestamptz + $1 * ''1 second''::pg_catalog.interval)" _null_ _null_ _null_ ));
DESCR("convert UNIX epoch to timestamptz");
-DATA(insert OID = 1159 ( timezone PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1114 "25 1184" _null_ _null_ _null_ _null_ timestamptz_zone _null_ _null_ _null_ ));
+DATA(insert OID = 1159 ( timezone PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1114 "25 1184" _null_ _null_ _null_ _null_ timestamptz_zone _null_ _null_ _null_ ));
DESCR("adjust timestamp to new time zone");
-DATA(insert OID = 1160 ( interval_in PGNSP PGUID 12 1 0 0 f f f t f s 3 0 1186 "2275 26 23" _null_ _null_ _null_ _null_ interval_in _null_ _null_ _null_ ));
+DATA(insert OID = 1160 ( interval_in PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 1186 "2275 26 23" _null_ _null_ _null_ _null_ interval_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 1161 ( interval_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "1186" _null_ _null_ _null_ _null_ interval_out _null_ _null_ _null_ ));
+DATA(insert OID = 1161 ( interval_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "1186" _null_ _null_ _null_ _null_ interval_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2903 ( intervaltypmodin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1263" _null_ _null_ _null_ _null_ intervaltypmodin _null_ _null_ _null_ ));
+DATA(insert OID = 2903 ( intervaltypmodin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1263" _null_ _null_ _null_ _null_ intervaltypmodin _null_ _null_ _null_ ));
DESCR("I/O typmod");
-DATA(insert OID = 2904 ( intervaltypmodout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "23" _null_ _null_ _null_ _null_ intervaltypmodout _null_ _null_ _null_ ));
+DATA(insert OID = 2904 ( intervaltypmodout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "23" _null_ _null_ _null_ _null_ intervaltypmodout _null_ _null_ _null_ ));
DESCR("I/O typmod");
-DATA(insert OID = 1162 ( interval_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ interval_eq _null_ _null_ _null_ ));
-DATA(insert OID = 1163 ( interval_ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ interval_ne _null_ _null_ _null_ ));
-DATA(insert OID = 1164 ( interval_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ interval_lt _null_ _null_ _null_ ));
-DATA(insert OID = 1165 ( interval_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ interval_le _null_ _null_ _null_ ));
-DATA(insert OID = 1166 ( interval_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ interval_ge _null_ _null_ _null_ ));
-DATA(insert OID = 1167 ( interval_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ interval_gt _null_ _null_ _null_ ));
-DATA(insert OID = 1168 ( interval_um PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1186 "1186" _null_ _null_ _null_ _null_ interval_um _null_ _null_ _null_ ));
-DATA(insert OID = 1169 ( interval_pl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1186 "1186 1186" _null_ _null_ _null_ _null_ interval_pl _null_ _null_ _null_ ));
-DATA(insert OID = 1170 ( interval_mi PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1186 "1186 1186" _null_ _null_ _null_ _null_ interval_mi _null_ _null_ _null_ ));
-DATA(insert OID = 1171 ( date_part PGNSP PGUID 12 1 0 0 f f f t f s 2 0 701 "25 1184" _null_ _null_ _null_ _null_ timestamptz_part _null_ _null_ _null_ ));
+DATA(insert OID = 1162 ( interval_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ interval_eq _null_ _null_ _null_ ));
+DATA(insert OID = 1163 ( interval_ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ interval_ne _null_ _null_ _null_ ));
+DATA(insert OID = 1164 ( interval_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ interval_lt _null_ _null_ _null_ ));
+DATA(insert OID = 1165 ( interval_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ interval_le _null_ _null_ _null_ ));
+DATA(insert OID = 1166 ( interval_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ interval_ge _null_ _null_ _null_ ));
+DATA(insert OID = 1167 ( interval_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ interval_gt _null_ _null_ _null_ ));
+DATA(insert OID = 1168 ( interval_um PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1186 "1186" _null_ _null_ _null_ _null_ interval_um _null_ _null_ _null_ ));
+DATA(insert OID = 1169 ( interval_pl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1186 "1186 1186" _null_ _null_ _null_ _null_ interval_pl _null_ _null_ _null_ ));
+DATA(insert OID = 1170 ( interval_mi PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1186 "1186 1186" _null_ _null_ _null_ _null_ interval_mi _null_ _null_ _null_ ));
+DATA(insert OID = 1171 ( date_part PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 701 "25 1184" _null_ _null_ _null_ _null_ timestamptz_part _null_ _null_ _null_ ));
DESCR("extract field from timestamp with time zone");
-DATA(insert OID = 1172 ( date_part PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "25 1186" _null_ _null_ _null_ _null_ interval_part _null_ _null_ _null_ ));
+DATA(insert OID = 1172 ( date_part PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "25 1186" _null_ _null_ _null_ _null_ interval_part _null_ _null_ _null_ ));
DESCR("extract field from interval");
-DATA(insert OID = 1173 ( timestamptz PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1184 "702" _null_ _null_ _null_ _null_ abstime_timestamptz _null_ _null_ _null_ ));
+DATA(insert OID = 1173 ( timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1184 "702" _null_ _null_ _null_ _null_ abstime_timestamptz _null_ _null_ _null_ ));
DESCR("convert abstime to timestamp with time zone");
-DATA(insert OID = 1174 ( timestamptz PGNSP PGUID 12 1 0 0 f f f t f s 1 0 1184 "1082" _null_ _null_ _null_ _null_ date_timestamptz _null_ _null_ _null_ ));
+DATA(insert OID = 1174 ( timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 1184 "1082" _null_ _null_ _null_ _null_ date_timestamptz _null_ _null_ _null_ ));
DESCR("convert date to timestamp with time zone");
-DATA(insert OID = 2711 ( justify_interval PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1186 "1186" _null_ _null_ _null_ _null_ interval_justify_interval _null_ _null_ _null_ ));
+DATA(insert OID = 2711 ( justify_interval PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1186 "1186" _null_ _null_ _null_ _null_ interval_justify_interval _null_ _null_ _null_ ));
DESCR("promote groups of 24 hours to numbers of days and promote groups of 30 days to numbers of months");
-DATA(insert OID = 1175 ( justify_hours PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1186 "1186" _null_ _null_ _null_ _null_ interval_justify_hours _null_ _null_ _null_ ));
+DATA(insert OID = 1175 ( justify_hours PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1186 "1186" _null_ _null_ _null_ _null_ interval_justify_hours _null_ _null_ _null_ ));
DESCR("promote groups of 24 hours to numbers of days");
-DATA(insert OID = 1295 ( justify_days PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1186 "1186" _null_ _null_ _null_ _null_ interval_justify_days _null_ _null_ _null_ ));
+DATA(insert OID = 1295 ( justify_days PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1186 "1186" _null_ _null_ _null_ _null_ interval_justify_days _null_ _null_ _null_ ));
DESCR("promote groups of 30 days to numbers of months");
-DATA(insert OID = 1176 ( timestamptz PGNSP PGUID 14 1 0 0 f f f t f s 2 0 1184 "1082 1083" _null_ _null_ _null_ _null_ "select cast(($1 + $2) as timestamp with time zone)" _null_ _null_ _null_ ));
+DATA(insert OID = 1176 ( timestamptz PGNSP PGUID 14 1 0 0 0 f f f t f s 2 0 1184 "1082 1083" _null_ _null_ _null_ _null_ "select cast(($1 + $2) as timestamp with time zone)" _null_ _null_ _null_ ));
DESCR("convert date and time to timestamp with time zone");
-DATA(insert OID = 1177 ( interval PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1186 "703" _null_ _null_ _null_ _null_ reltime_interval _null_ _null_ _null_ ));
+DATA(insert OID = 1177 ( interval PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1186 "703" _null_ _null_ _null_ _null_ reltime_interval _null_ _null_ _null_ ));
DESCR("convert reltime to interval");
-DATA(insert OID = 1178 ( date PGNSP PGUID 12 1 0 0 f f f t f s 1 0 1082 "1184" _null_ _null_ _null_ _null_ timestamptz_date _null_ _null_ _null_ ));
+DATA(insert OID = 1178 ( date PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 1082 "1184" _null_ _null_ _null_ _null_ timestamptz_date _null_ _null_ _null_ ));
DESCR("convert timestamp with time zone to date");
-DATA(insert OID = 1179 ( date PGNSP PGUID 12 1 0 0 f f f t f s 1 0 1082 "702" _null_ _null_ _null_ _null_ abstime_date _null_ _null_ _null_ ));
+DATA(insert OID = 1179 ( date PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 1082 "702" _null_ _null_ _null_ _null_ abstime_date _null_ _null_ _null_ ));
DESCR("convert abstime to date");
-DATA(insert OID = 1180 ( abstime PGNSP PGUID 12 1 0 0 f f f t f i 1 0 702 "1184" _null_ _null_ _null_ _null_ timestamptz_abstime _null_ _null_ _null_ ));
+DATA(insert OID = 1180 ( abstime PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 702 "1184" _null_ _null_ _null_ _null_ timestamptz_abstime _null_ _null_ _null_ ));
DESCR("convert timestamp with time zone to abstime");
-DATA(insert OID = 1181 ( age PGNSP PGUID 12 1 0 0 f f f t f s 1 0 23 "28" _null_ _null_ _null_ _null_ xid_age _null_ _null_ _null_ ));
+DATA(insert OID = 1181 ( age PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 23 "28" _null_ _null_ _null_ _null_ xid_age _null_ _null_ _null_ ));
DESCR("age of a transaction ID, in transactions before current transaction");
-DATA(insert OID = 1188 ( timestamptz_mi PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1186 "1184 1184" _null_ _null_ _null_ _null_ timestamp_mi _null_ _null_ _null_ ));
-DATA(insert OID = 1189 ( timestamptz_pl_interval PGNSP PGUID 12 1 0 0 f f f t f s 2 0 1184 "1184 1186" _null_ _null_ _null_ _null_ timestamptz_pl_interval _null_ _null_ _null_ ));
-DATA(insert OID = 1190 ( timestamptz_mi_interval PGNSP PGUID 12 1 0 0 f f f t f s 2 0 1184 "1184 1186" _null_ _null_ _null_ _null_ timestamptz_mi_interval _null_ _null_ _null_ ));
-DATA(insert OID = 1194 ( reltime PGNSP PGUID 12 1 0 0 f f f t f i 1 0 703 "1186" _null_ _null_ _null_ _null_ interval_reltime _null_ _null_ _null_ ));
+DATA(insert OID = 1188 ( timestamptz_mi PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1186 "1184 1184" _null_ _null_ _null_ _null_ timestamp_mi _null_ _null_ _null_ ));
+DATA(insert OID = 1189 ( timestamptz_pl_interval PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 1184 "1184 1186" _null_ _null_ _null_ _null_ timestamptz_pl_interval _null_ _null_ _null_ ));
+DATA(insert OID = 1190 ( timestamptz_mi_interval PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 1184 "1184 1186" _null_ _null_ _null_ _null_ timestamptz_mi_interval _null_ _null_ _null_ ));
+DATA(insert OID = 1194 ( reltime PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 703 "1186" _null_ _null_ _null_ _null_ interval_reltime _null_ _null_ _null_ ));
DESCR("convert interval to reltime");
-DATA(insert OID = 1195 ( timestamptz_smaller PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1184 "1184 1184" _null_ _null_ _null_ _null_ timestamp_smaller _null_ _null_ _null_ ));
+DATA(insert OID = 1195 ( timestamptz_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1184 "1184 1184" _null_ _null_ _null_ _null_ timestamp_smaller _null_ _null_ _null_ ));
DESCR("smaller of two");
-DATA(insert OID = 1196 ( timestamptz_larger PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1184 "1184 1184" _null_ _null_ _null_ _null_ timestamp_larger _null_ _null_ _null_ ));
+DATA(insert OID = 1196 ( timestamptz_larger PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1184 "1184 1184" _null_ _null_ _null_ _null_ timestamp_larger _null_ _null_ _null_ ));
DESCR("larger of two");
-DATA(insert OID = 1197 ( interval_smaller PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1186 "1186 1186" _null_ _null_ _null_ _null_ interval_smaller _null_ _null_ _null_ ));
+DATA(insert OID = 1197 ( interval_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1186 "1186 1186" _null_ _null_ _null_ _null_ interval_smaller _null_ _null_ _null_ ));
DESCR("smaller of two");
-DATA(insert OID = 1198 ( interval_larger PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1186 "1186 1186" _null_ _null_ _null_ _null_ interval_larger _null_ _null_ _null_ ));
+DATA(insert OID = 1198 ( interval_larger PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1186 "1186 1186" _null_ _null_ _null_ _null_ interval_larger _null_ _null_ _null_ ));
DESCR("larger of two");
-DATA(insert OID = 1199 ( age PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1186 "1184 1184" _null_ _null_ _null_ _null_ timestamptz_age _null_ _null_ _null_ ));
+DATA(insert OID = 1199 ( age PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1186 "1184 1184" _null_ _null_ _null_ _null_ timestamptz_age _null_ _null_ _null_ ));
DESCR("date difference preserving months and years");
/* OIDS 1200 - 1299 */
-DATA(insert OID = 1200 ( interval PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1186 "1186 23" _null_ _null_ _null_ _null_ interval_scale _null_ _null_ _null_ ));
+DATA(insert OID = 1200 ( interval PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1186 "1186 23" _null_ _null_ _null_ _null_ interval_scale _null_ _null_ _null_ ));
DESCR("adjust interval precision");
-DATA(insert OID = 1215 ( obj_description PGNSP PGUID 14 100 0 0 f f f t f s 2 0 25 "26 19" _null_ _null_ _null_ _null_ "select description from pg_catalog.pg_description where objoid = $1 and classoid = (select oid from pg_catalog.pg_class where relname = $2 and relnamespace = PGNSP) and objsubid = 0" _null_ _null_ _null_ ));
+DATA(insert OID = 1215 ( obj_description PGNSP PGUID 14 100 0 0 0 f f f t f s 2 0 25 "26 19" _null_ _null_ _null_ _null_ "select description from pg_catalog.pg_description where objoid = $1 and classoid = (select oid from pg_catalog.pg_class where relname = $2 and relnamespace = PGNSP) and objsubid = 0" _null_ _null_ _null_ ));
DESCR("get description for object id and catalog name");
-DATA(insert OID = 1216 ( col_description PGNSP PGUID 14 100 0 0 f f f t f s 2 0 25 "26 23" _null_ _null_ _null_ _null_ "select description from pg_catalog.pg_description where objoid = $1 and classoid = ''pg_catalog.pg_class''::pg_catalog.regclass and objsubid = $2" _null_ _null_ _null_ ));
+DATA(insert OID = 1216 ( col_description PGNSP PGUID 14 100 0 0 0 f f f t f s 2 0 25 "26 23" _null_ _null_ _null_ _null_ "select description from pg_catalog.pg_description where objoid = $1 and classoid = ''pg_catalog.pg_class''::pg_catalog.regclass and objsubid = $2" _null_ _null_ _null_ ));
DESCR("get description for table column");
-DATA(insert OID = 1993 ( shobj_description PGNSP PGUID 14 100 0 0 f f f t f s 2 0 25 "26 19" _null_ _null_ _null_ _null_ "select description from pg_catalog.pg_shdescription where objoid = $1 and classoid = (select oid from pg_catalog.pg_class where relname = $2 and relnamespace = PGNSP)" _null_ _null_ _null_ ));
+DATA(insert OID = 1993 ( shobj_description PGNSP PGUID 14 100 0 0 0 f f f t f s 2 0 25 "26 19" _null_ _null_ _null_ _null_ "select description from pg_catalog.pg_shdescription where objoid = $1 and classoid = (select oid from pg_catalog.pg_class where relname = $2 and relnamespace = PGNSP)" _null_ _null_ _null_ ));
DESCR("get description for object id and shared catalog name");
-DATA(insert OID = 1217 ( date_trunc PGNSP PGUID 12 1 0 0 f f f t f s 2 0 1184 "25 1184" _null_ _null_ _null_ _null_ timestamptz_trunc _null_ _null_ _null_ ));
+DATA(insert OID = 1217 ( date_trunc PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 1184 "25 1184" _null_ _null_ _null_ _null_ timestamptz_trunc _null_ _null_ _null_ ));
DESCR("truncate timestamp with time zone to specified units");
-DATA(insert OID = 1218 ( date_trunc PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1186 "25 1186" _null_ _null_ _null_ _null_ interval_trunc _null_ _null_ _null_ ));
+DATA(insert OID = 1218 ( date_trunc PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1186 "25 1186" _null_ _null_ _null_ _null_ interval_trunc _null_ _null_ _null_ ));
DESCR("truncate interval to specified units");
-DATA(insert OID = 1219 ( int8inc PGNSP PGUID 12 1 0 0 f f f t f i 1 0 20 "20" _null_ _null_ _null_ _null_ int8inc _null_ _null_ _null_ ));
+DATA(insert OID = 1219 ( int8inc PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 20 "20" _null_ _null_ _null_ _null_ int8inc _null_ _null_ _null_ ));
DESCR("increment");
-DATA(insert OID = 2804 ( int8inc_any PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "20 2276" _null_ _null_ _null_ _null_ int8inc_any _null_ _null_ _null_ ));
+DATA(insert OID = 2804 ( int8inc_any PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "20 2276" _null_ _null_ _null_ _null_ int8inc_any _null_ _null_ _null_ ));
DESCR("increment, ignores second argument");
-DATA(insert OID = 1230 ( int8abs PGNSP PGUID 12 1 0 0 f f f t f i 1 0 20 "20" _null_ _null_ _null_ _null_ int8abs _null_ _null_ _null_ ));
+DATA(insert OID = 1230 ( int8abs PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 20 "20" _null_ _null_ _null_ _null_ int8abs _null_ _null_ _null_ ));
-DATA(insert OID = 1236 ( int8larger PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "20 20" _null_ _null_ _null_ _null_ int8larger _null_ _null_ _null_ ));
+DATA(insert OID = 1236 ( int8larger PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "20 20" _null_ _null_ _null_ _null_ int8larger _null_ _null_ _null_ ));
DESCR("larger of two");
-DATA(insert OID = 1237 ( int8smaller PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "20 20" _null_ _null_ _null_ _null_ int8smaller _null_ _null_ _null_ ));
+DATA(insert OID = 1237 ( int8smaller PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "20 20" _null_ _null_ _null_ _null_ int8smaller _null_ _null_ _null_ ));
DESCR("smaller of two");
-DATA(insert OID = 1238 ( texticregexeq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ texticregexeq _null_ _null_ _null_ ));
-DATA(insert OID = 1239 ( texticregexne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ texticregexne _null_ _null_ _null_ ));
-DATA(insert OID = 1240 ( nameicregexeq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "19 25" _null_ _null_ _null_ _null_ nameicregexeq _null_ _null_ _null_ ));
-DATA(insert OID = 1241 ( nameicregexne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "19 25" _null_ _null_ _null_ _null_ nameicregexne _null_ _null_ _null_ ));
+DATA(insert OID = 1238 ( texticregexeq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ texticregexeq _null_ _null_ _null_ ));
+DATA(insert OID = 1239 ( texticregexne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ texticregexne _null_ _null_ _null_ ));
+DATA(insert OID = 1240 ( nameicregexeq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "19 25" _null_ _null_ _null_ _null_ nameicregexeq _null_ _null_ _null_ ));
+DATA(insert OID = 1241 ( nameicregexne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "19 25" _null_ _null_ _null_ _null_ nameicregexne _null_ _null_ _null_ ));
-DATA(insert OID = 1251 ( int4abs PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "23" _null_ _null_ _null_ _null_ int4abs _null_ _null_ _null_ ));
-DATA(insert OID = 1253 ( int2abs PGNSP PGUID 12 1 0 0 f f f t f i 1 0 21 "21" _null_ _null_ _null_ _null_ int2abs _null_ _null_ _null_ ));
+DATA(insert OID = 1251 ( int4abs PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "23" _null_ _null_ _null_ _null_ int4abs _null_ _null_ _null_ ));
+DATA(insert OID = 1253 ( int2abs PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 21 "21" _null_ _null_ _null_ _null_ int2abs _null_ _null_ _null_ ));
-DATA(insert OID = 1271 ( overlaps PGNSP PGUID 12 1 0 0 f f f f f i 4 0 16 "1266 1266 1266 1266" _null_ _null_ _null_ _null_ overlaps_timetz _null_ _null_ _null_ ));
+DATA(insert OID = 1271 ( overlaps PGNSP PGUID 12 1 0 0 0 f f f f f i 4 0 16 "1266 1266 1266 1266" _null_ _null_ _null_ _null_ overlaps_timetz _null_ _null_ _null_ ));
DESCR("intervals overlap?");
-DATA(insert OID = 1272 ( datetime_pl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1114 "1082 1083" _null_ _null_ _null_ _null_ datetime_timestamp _null_ _null_ _null_ ));
-DATA(insert OID = 1273 ( date_part PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "25 1266" _null_ _null_ _null_ _null_ timetz_part _null_ _null_ _null_ ));
+DATA(insert OID = 1272 ( datetime_pl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1114 "1082 1083" _null_ _null_ _null_ _null_ datetime_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 1273 ( date_part PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "25 1266" _null_ _null_ _null_ _null_ timetz_part _null_ _null_ _null_ ));
DESCR("extract field from time with time zone");
-DATA(insert OID = 1274 ( int84pl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "20 23" _null_ _null_ _null_ _null_ int84pl _null_ _null_ _null_ ));
-DATA(insert OID = 1275 ( int84mi PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "20 23" _null_ _null_ _null_ _null_ int84mi _null_ _null_ _null_ ));
-DATA(insert OID = 1276 ( int84mul PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "20 23" _null_ _null_ _null_ _null_ int84mul _null_ _null_ _null_ ));
-DATA(insert OID = 1277 ( int84div PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "20 23" _null_ _null_ _null_ _null_ int84div _null_ _null_ _null_ ));
-DATA(insert OID = 1278 ( int48pl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "23 20" _null_ _null_ _null_ _null_ int48pl _null_ _null_ _null_ ));
-DATA(insert OID = 1279 ( int48mi PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "23 20" _null_ _null_ _null_ _null_ int48mi _null_ _null_ _null_ ));
-DATA(insert OID = 1280 ( int48mul PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "23 20" _null_ _null_ _null_ _null_ int48mul _null_ _null_ _null_ ));
-DATA(insert OID = 1281 ( int48div PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "23 20" _null_ _null_ _null_ _null_ int48div _null_ _null_ _null_ ));
-
-DATA(insert OID = 837 ( int82pl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "20 21" _null_ _null_ _null_ _null_ int82pl _null_ _null_ _null_ ));
-DATA(insert OID = 838 ( int82mi PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "20 21" _null_ _null_ _null_ _null_ int82mi _null_ _null_ _null_ ));
-DATA(insert OID = 839 ( int82mul PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "20 21" _null_ _null_ _null_ _null_ int82mul _null_ _null_ _null_ ));
-DATA(insert OID = 840 ( int82div PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "20 21" _null_ _null_ _null_ _null_ int82div _null_ _null_ _null_ ));
-DATA(insert OID = 841 ( int28pl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "21 20" _null_ _null_ _null_ _null_ int28pl _null_ _null_ _null_ ));
-DATA(insert OID = 942 ( int28mi PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "21 20" _null_ _null_ _null_ _null_ int28mi _null_ _null_ _null_ ));
-DATA(insert OID = 943 ( int28mul PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "21 20" _null_ _null_ _null_ _null_ int28mul _null_ _null_ _null_ ));
-DATA(insert OID = 948 ( int28div PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "21 20" _null_ _null_ _null_ _null_ int28div _null_ _null_ _null_ ));
-
-DATA(insert OID = 1287 ( oid PGNSP PGUID 12 1 0 0 f f f t f i 1 0 26 "20" _null_ _null_ _null_ _null_ i8tooid _null_ _null_ _null_ ));
+DATA(insert OID = 1274 ( int84pl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "20 23" _null_ _null_ _null_ _null_ int84pl _null_ _null_ _null_ ));
+DATA(insert OID = 1275 ( int84mi PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "20 23" _null_ _null_ _null_ _null_ int84mi _null_ _null_ _null_ ));
+DATA(insert OID = 1276 ( int84mul PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "20 23" _null_ _null_ _null_ _null_ int84mul _null_ _null_ _null_ ));
+DATA(insert OID = 1277 ( int84div PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "20 23" _null_ _null_ _null_ _null_ int84div _null_ _null_ _null_ ));
+DATA(insert OID = 1278 ( int48pl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "23 20" _null_ _null_ _null_ _null_ int48pl _null_ _null_ _null_ ));
+DATA(insert OID = 1279 ( int48mi PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "23 20" _null_ _null_ _null_ _null_ int48mi _null_ _null_ _null_ ));
+DATA(insert OID = 1280 ( int48mul PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "23 20" _null_ _null_ _null_ _null_ int48mul _null_ _null_ _null_ ));
+DATA(insert OID = 1281 ( int48div PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "23 20" _null_ _null_ _null_ _null_ int48div _null_ _null_ _null_ ));
+
+DATA(insert OID = 837 ( int82pl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "20 21" _null_ _null_ _null_ _null_ int82pl _null_ _null_ _null_ ));
+DATA(insert OID = 838 ( int82mi PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "20 21" _null_ _null_ _null_ _null_ int82mi _null_ _null_ _null_ ));
+DATA(insert OID = 839 ( int82mul PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "20 21" _null_ _null_ _null_ _null_ int82mul _null_ _null_ _null_ ));
+DATA(insert OID = 840 ( int82div PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "20 21" _null_ _null_ _null_ _null_ int82div _null_ _null_ _null_ ));
+DATA(insert OID = 841 ( int28pl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "21 20" _null_ _null_ _null_ _null_ int28pl _null_ _null_ _null_ ));
+DATA(insert OID = 942 ( int28mi PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "21 20" _null_ _null_ _null_ _null_ int28mi _null_ _null_ _null_ ));
+DATA(insert OID = 943 ( int28mul PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "21 20" _null_ _null_ _null_ _null_ int28mul _null_ _null_ _null_ ));
+DATA(insert OID = 948 ( int28div PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "21 20" _null_ _null_ _null_ _null_ int28div _null_ _null_ _null_ ));
+
+DATA(insert OID = 1287 ( oid PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 26 "20" _null_ _null_ _null_ _null_ i8tooid _null_ _null_ _null_ ));
DESCR("convert int8 to oid");
-DATA(insert OID = 1288 ( int8 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 20 "26" _null_ _null_ _null_ _null_ oidtoi8 _null_ _null_ _null_ ));
+DATA(insert OID = 1288 ( int8 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 20 "26" _null_ _null_ _null_ _null_ oidtoi8 _null_ _null_ _null_ ));
DESCR("convert oid to int8");
-DATA(insert OID = 1291 ( suppress_redundant_updates_trigger PGNSP PGUID 12 1 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ suppress_redundant_updates_trigger _null_ _null_ _null_ ));
+DATA(insert OID = 1291 ( suppress_redundant_updates_trigger PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ suppress_redundant_updates_trigger _null_ _null_ _null_ ));
DESCR("trigger to suppress updates when new and old records match");
-DATA(insert OID = 1292 ( tideq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "27 27" _null_ _null_ _null_ _null_ tideq _null_ _null_ _null_ ));
-DATA(insert OID = 1293 ( currtid PGNSP PGUID 12 1 0 0 f f f t f v 2 0 27 "26 27" _null_ _null_ _null_ _null_ currtid_byreloid _null_ _null_ _null_ ));
+DATA(insert OID = 1292 ( tideq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "27 27" _null_ _null_ _null_ _null_ tideq _null_ _null_ _null_ ));
+DATA(insert OID = 1293 ( currtid PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 27 "26 27" _null_ _null_ _null_ _null_ currtid_byreloid _null_ _null_ _null_ ));
DESCR("latest tid of a tuple");
-DATA(insert OID = 1294 ( currtid2 PGNSP PGUID 12 1 0 0 f f f t f v 2 0 27 "25 27" _null_ _null_ _null_ _null_ currtid_byrelname _null_ _null_ _null_ ));
+DATA(insert OID = 1294 ( currtid2 PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 27 "25 27" _null_ _null_ _null_ _null_ currtid_byrelname _null_ _null_ _null_ ));
DESCR("latest tid of a tuple");
-DATA(insert OID = 1265 ( tidne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "27 27" _null_ _null_ _null_ _null_ tidne _null_ _null_ _null_ ));
-DATA(insert OID = 2790 ( tidgt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "27 27" _null_ _null_ _null_ _null_ tidgt _null_ _null_ _null_ ));
-DATA(insert OID = 2791 ( tidlt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "27 27" _null_ _null_ _null_ _null_ tidlt _null_ _null_ _null_ ));
-DATA(insert OID = 2792 ( tidge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "27 27" _null_ _null_ _null_ _null_ tidge _null_ _null_ _null_ ));
-DATA(insert OID = 2793 ( tidle PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "27 27" _null_ _null_ _null_ _null_ tidle _null_ _null_ _null_ ));
-DATA(insert OID = 2794 ( bttidcmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "27 27" _null_ _null_ _null_ _null_ bttidcmp _null_ _null_ _null_ ));
+DATA(insert OID = 1265 ( tidne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "27 27" _null_ _null_ _null_ _null_ tidne _null_ _null_ _null_ ));
+DATA(insert OID = 2790 ( tidgt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "27 27" _null_ _null_ _null_ _null_ tidgt _null_ _null_ _null_ ));
+DATA(insert OID = 2791 ( tidlt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "27 27" _null_ _null_ _null_ _null_ tidlt _null_ _null_ _null_ ));
+DATA(insert OID = 2792 ( tidge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "27 27" _null_ _null_ _null_ _null_ tidge _null_ _null_ _null_ ));
+DATA(insert OID = 2793 ( tidle PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "27 27" _null_ _null_ _null_ _null_ tidle _null_ _null_ _null_ ));
+DATA(insert OID = 2794 ( bttidcmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "27 27" _null_ _null_ _null_ _null_ bttidcmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 2795 ( tidlarger PGNSP PGUID 12 1 0 0 f f f t f i 2 0 27 "27 27" _null_ _null_ _null_ _null_ tidlarger _null_ _null_ _null_ ));
+DATA(insert OID = 2795 ( tidlarger PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 27 "27 27" _null_ _null_ _null_ _null_ tidlarger _null_ _null_ _null_ ));
DESCR("larger of two");
-DATA(insert OID = 2796 ( tidsmaller PGNSP PGUID 12 1 0 0 f f f t f i 2 0 27 "27 27" _null_ _null_ _null_ _null_ tidsmaller _null_ _null_ _null_ ));
+DATA(insert OID = 2796 ( tidsmaller PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 27 "27 27" _null_ _null_ _null_ _null_ tidsmaller _null_ _null_ _null_ ));
DESCR("smaller of two");
-DATA(insert OID = 1296 ( timedate_pl PGNSP PGUID 14 1 0 0 f f f t f i 2 0 1114 "1083 1082" _null_ _null_ _null_ _null_ "select ($2 + $1)" _null_ _null_ _null_ ));
-DATA(insert OID = 1297 ( datetimetz_pl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1184 "1082 1266" _null_ _null_ _null_ _null_ datetimetz_timestamptz _null_ _null_ _null_ ));
-DATA(insert OID = 1298 ( timetzdate_pl PGNSP PGUID 14 1 0 0 f f f t f i 2 0 1184 "1266 1082" _null_ _null_ _null_ _null_ "select ($2 + $1)" _null_ _null_ _null_ ));
-DATA(insert OID = 1299 ( now PGNSP PGUID 12 1 0 0 f f f t f s 0 0 1184 "" _null_ _null_ _null_ _null_ now _null_ _null_ _null_ ));
+DATA(insert OID = 1296 ( timedate_pl PGNSP PGUID 14 1 0 0 0 f f f t f i 2 0 1114 "1083 1082" _null_ _null_ _null_ _null_ "select ($2 + $1)" _null_ _null_ _null_ ));
+DATA(insert OID = 1297 ( datetimetz_pl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1184 "1082 1266" _null_ _null_ _null_ _null_ datetimetz_timestamptz _null_ _null_ _null_ ));
+DATA(insert OID = 1298 ( timetzdate_pl PGNSP PGUID 14 1 0 0 0 f f f t f i 2 0 1184 "1266 1082" _null_ _null_ _null_ _null_ "select ($2 + $1)" _null_ _null_ _null_ ));
+DATA(insert OID = 1299 ( now PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 1184 "" _null_ _null_ _null_ _null_ now _null_ _null_ _null_ ));
DESCR("current transaction time");
-DATA(insert OID = 2647 ( transaction_timestamp PGNSP PGUID 12 1 0 0 f f f t f s 0 0 1184 "" _null_ _null_ _null_ _null_ now _null_ _null_ _null_ ));
+DATA(insert OID = 2647 ( transaction_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 1184 "" _null_ _null_ _null_ _null_ now _null_ _null_ _null_ ));
DESCR("current transaction time");
-DATA(insert OID = 2648 ( statement_timestamp PGNSP PGUID 12 1 0 0 f f f t f s 0 0 1184 "" _null_ _null_ _null_ _null_ statement_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 2648 ( statement_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 1184 "" _null_ _null_ _null_ _null_ statement_timestamp _null_ _null_ _null_ ));
DESCR("current statement time");
-DATA(insert OID = 2649 ( clock_timestamp PGNSP PGUID 12 1 0 0 f f f t f v 0 0 1184 "" _null_ _null_ _null_ _null_ clock_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 2649 ( clock_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 1184 "" _null_ _null_ _null_ _null_ clock_timestamp _null_ _null_ _null_ ));
DESCR("current clock time");
/* OIDS 1300 - 1399 */
-DATA(insert OID = 1300 ( positionsel PGNSP PGUID 12 1 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ positionsel _null_ _null_ _null_ ));
+DATA(insert OID = 1300 ( positionsel PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ positionsel _null_ _null_ _null_ ));
DESCR("restriction selectivity for position-comparison operators");
-DATA(insert OID = 1301 ( positionjoinsel PGNSP PGUID 12 1 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ positionjoinsel _null_ _null_ _null_ ));
+DATA(insert OID = 1301 ( positionjoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ positionjoinsel _null_ _null_ _null_ ));
DESCR("join selectivity for position-comparison operators");
-DATA(insert OID = 1302 ( contsel PGNSP PGUID 12 1 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ contsel _null_ _null_ _null_ ));
+DATA(insert OID = 1302 ( contsel PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ contsel _null_ _null_ _null_ ));
DESCR("restriction selectivity for containment comparison operators");
-DATA(insert OID = 1303 ( contjoinsel PGNSP PGUID 12 1 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ contjoinsel _null_ _null_ _null_ ));
+DATA(insert OID = 1303 ( contjoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ contjoinsel _null_ _null_ _null_ ));
DESCR("join selectivity for containment comparison operators");
-DATA(insert OID = 1304 ( overlaps PGNSP PGUID 12 1 0 0 f f f f f i 4 0 16 "1184 1184 1184 1184" _null_ _null_ _null_ _null_ overlaps_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 1304 ( overlaps PGNSP PGUID 12 1 0 0 0 f f f f f i 4 0 16 "1184 1184 1184 1184" _null_ _null_ _null_ _null_ overlaps_timestamp _null_ _null_ _null_ ));
DESCR("intervals overlap?");
-DATA(insert OID = 1305 ( overlaps PGNSP PGUID 14 1 0 0 f f f f f s 4 0 16 "1184 1186 1184 1186" _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ ));
+DATA(insert OID = 1305 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f s 4 0 16 "1184 1186 1184 1186" _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ ));
DESCR("intervals overlap?");
-DATA(insert OID = 1306 ( overlaps PGNSP PGUID 14 1 0 0 f f f f f s 4 0 16 "1184 1184 1184 1186" _null_ _null_ _null_ _null_ "select ($1, $2) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ ));
+DATA(insert OID = 1306 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f s 4 0 16 "1184 1184 1184 1186" _null_ _null_ _null_ _null_ "select ($1, $2) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ ));
DESCR("intervals overlap?");
-DATA(insert OID = 1307 ( overlaps PGNSP PGUID 14 1 0 0 f f f f f s 4 0 16 "1184 1186 1184 1184" _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, $4)" _null_ _null_ _null_ ));
+DATA(insert OID = 1307 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f s 4 0 16 "1184 1186 1184 1184" _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, $4)" _null_ _null_ _null_ ));
DESCR("intervals overlap?");
-DATA(insert OID = 1308 ( overlaps PGNSP PGUID 12 1 0 0 f f f f f i 4 0 16 "1083 1083 1083 1083" _null_ _null_ _null_ _null_ overlaps_time _null_ _null_ _null_ ));
+DATA(insert OID = 1308 ( overlaps PGNSP PGUID 12 1 0 0 0 f f f f f i 4 0 16 "1083 1083 1083 1083" _null_ _null_ _null_ _null_ overlaps_time _null_ _null_ _null_ ));
DESCR("intervals overlap?");
-DATA(insert OID = 1309 ( overlaps PGNSP PGUID 14 1 0 0 f f f f f i 4 0 16 "1083 1186 1083 1186" _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ ));
+DATA(insert OID = 1309 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f i 4 0 16 "1083 1186 1083 1186" _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ ));
DESCR("intervals overlap?");
-DATA(insert OID = 1310 ( overlaps PGNSP PGUID 14 1 0 0 f f f f f i 4 0 16 "1083 1083 1083 1186" _null_ _null_ _null_ _null_ "select ($1, $2) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ ));
+DATA(insert OID = 1310 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f i 4 0 16 "1083 1083 1083 1186" _null_ _null_ _null_ _null_ "select ($1, $2) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ ));
DESCR("intervals overlap?");
-DATA(insert OID = 1311 ( overlaps PGNSP PGUID 14 1 0 0 f f f f f i 4 0 16 "1083 1186 1083 1083" _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, $4)" _null_ _null_ _null_ ));
+DATA(insert OID = 1311 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f i 4 0 16 "1083 1186 1083 1083" _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, $4)" _null_ _null_ _null_ ));
DESCR("intervals overlap?");
-DATA(insert OID = 1312 ( timestamp_in PGNSP PGUID 12 1 0 0 f f f t f s 3 0 1114 "2275 26 23" _null_ _null_ _null_ _null_ timestamp_in _null_ _null_ _null_ ));
+DATA(insert OID = 1312 ( timestamp_in PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 1114 "2275 26 23" _null_ _null_ _null_ _null_ timestamp_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 1313 ( timestamp_out PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "1114" _null_ _null_ _null_ _null_ timestamp_out _null_ _null_ _null_ ));
+DATA(insert OID = 1313 ( timestamp_out PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "1114" _null_ _null_ _null_ _null_ timestamp_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2905 ( timestamptypmodin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1263" _null_ _null_ _null_ _null_ timestamptypmodin _null_ _null_ _null_ ));
+DATA(insert OID = 2905 ( timestamptypmodin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1263" _null_ _null_ _null_ _null_ timestamptypmodin _null_ _null_ _null_ ));
DESCR("I/O typmod");
-DATA(insert OID = 2906 ( timestamptypmodout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "23" _null_ _null_ _null_ _null_ timestamptypmodout _null_ _null_ _null_ ));
+DATA(insert OID = 2906 ( timestamptypmodout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "23" _null_ _null_ _null_ _null_ timestamptypmodout _null_ _null_ _null_ ));
DESCR("I/O typmod");
-DATA(insert OID = 1314 ( timestamptz_cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "1184 1184" _null_ _null_ _null_ _null_ timestamp_cmp _null_ _null_ _null_ ));
+DATA(insert OID = 1314 ( timestamptz_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "1184 1184" _null_ _null_ _null_ _null_ timestamp_cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 1315 ( interval_cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "1186 1186" _null_ _null_ _null_ _null_ interval_cmp _null_ _null_ _null_ ));
+DATA(insert OID = 1315 ( interval_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "1186 1186" _null_ _null_ _null_ _null_ interval_cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 1316 ( time PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1083 "1114" _null_ _null_ _null_ _null_ timestamp_time _null_ _null_ _null_ ));
+DATA(insert OID = 1316 ( time PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1083 "1114" _null_ _null_ _null_ _null_ timestamp_time _null_ _null_ _null_ ));
DESCR("convert timestamp to time");
-DATA(insert OID = 1317 ( length PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "25" _null_ _null_ _null_ _null_ textlen _null_ _null_ _null_ ));
+DATA(insert OID = 1317 ( length PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "25" _null_ _null_ _null_ _null_ textlen _null_ _null_ _null_ ));
DESCR("length");
-DATA(insert OID = 1318 ( length PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1042" _null_ _null_ _null_ _null_ bpcharlen _null_ _null_ _null_ ));
+DATA(insert OID = 1318 ( length PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1042" _null_ _null_ _null_ _null_ bpcharlen _null_ _null_ _null_ ));
DESCR("character length");
-DATA(insert OID = 1319 ( xideqint4 PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "28 23" _null_ _null_ _null_ _null_ xideq _null_ _null_ _null_ ));
+DATA(insert OID = 1319 ( xideqint4 PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "28 23" _null_ _null_ _null_ _null_ xideq _null_ _null_ _null_ ));
-DATA(insert OID = 1326 ( interval_div PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1186 "1186 701" _null_ _null_ _null_ _null_ interval_div _null_ _null_ _null_ ));
+DATA(insert OID = 1326 ( interval_div PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1186 "1186 701" _null_ _null_ _null_ _null_ interval_div _null_ _null_ _null_ ));
-DATA(insert OID = 1339 ( dlog10 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dlog10 _null_ _null_ _null_ ));
+DATA(insert OID = 1339 ( dlog10 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dlog10 _null_ _null_ _null_ ));
DESCR("base 10 logarithm");
-DATA(insert OID = 1340 ( log PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dlog10 _null_ _null_ _null_ ));
+DATA(insert OID = 1340 ( log PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dlog10 _null_ _null_ _null_ ));
DESCR("base 10 logarithm");
-DATA(insert OID = 1341 ( ln PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dlog1 _null_ _null_ _null_ ));
+DATA(insert OID = 1341 ( ln PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dlog1 _null_ _null_ _null_ ));
DESCR("natural logarithm");
-DATA(insert OID = 1342 ( round PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dround _null_ _null_ _null_ ));
+DATA(insert OID = 1342 ( round PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dround _null_ _null_ _null_ ));
DESCR("round to nearest integer");
-DATA(insert OID = 1343 ( trunc PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dtrunc _null_ _null_ _null_ ));
+DATA(insert OID = 1343 ( trunc PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dtrunc _null_ _null_ _null_ ));
DESCR("truncate to integer");
-DATA(insert OID = 1344 ( sqrt PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dsqrt _null_ _null_ _null_ ));
+DATA(insert OID = 1344 ( sqrt PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dsqrt _null_ _null_ _null_ ));
DESCR("square root");
-DATA(insert OID = 1345 ( cbrt PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dcbrt _null_ _null_ _null_ ));
+DATA(insert OID = 1345 ( cbrt PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dcbrt _null_ _null_ _null_ ));
DESCR("cube root");
-DATA(insert OID = 1346 ( pow PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ dpow _null_ _null_ _null_ ));
+DATA(insert OID = 1346 ( pow PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ dpow _null_ _null_ _null_ ));
DESCR("exponentiation");
-DATA(insert OID = 1368 ( power PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ dpow _null_ _null_ _null_ ));
+DATA(insert OID = 1368 ( power PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ dpow _null_ _null_ _null_ ));
DESCR("exponentiation");
-DATA(insert OID = 1347 ( exp PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dexp _null_ _null_ _null_ ));
+DATA(insert OID = 1347 ( exp PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dexp _null_ _null_ _null_ ));
DESCR("natural exponential (e^x)");
/*
* This form of obj_description is now deprecated, since it will fail if
* OIDs are not unique across system catalogs. Use the other form instead.
*/
-DATA(insert OID = 1348 ( obj_description PGNSP PGUID 14 100 0 0 f f f t f s 1 0 25 "26" _null_ _null_ _null_ _null_ "select description from pg_catalog.pg_description where objoid = $1 and objsubid = 0" _null_ _null_ _null_ ));
+DATA(insert OID = 1348 ( obj_description PGNSP PGUID 14 100 0 0 0 f f f t f s 1 0 25 "26" _null_ _null_ _null_ _null_ "select description from pg_catalog.pg_description where objoid = $1 and objsubid = 0" _null_ _null_ _null_ ));
DESCR("deprecated, use two-argument form instead");
-DATA(insert OID = 1349 ( oidvectortypes PGNSP PGUID 12 1 0 0 f f f t f s 1 0 25 "30" _null_ _null_ _null_ _null_ oidvectortypes _null_ _null_ _null_ ));
+DATA(insert OID = 1349 ( oidvectortypes PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 25 "30" _null_ _null_ _null_ _null_ oidvectortypes _null_ _null_ _null_ ));
DESCR("print type names of oidvector field");
-DATA(insert OID = 1350 ( timetz_in PGNSP PGUID 12 1 0 0 f f f t f s 3 0 1266 "2275 26 23" _null_ _null_ _null_ _null_ timetz_in _null_ _null_ _null_ ));
+DATA(insert OID = 1350 ( timetz_in PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 1266 "2275 26 23" _null_ _null_ _null_ _null_ timetz_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 1351 ( timetz_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "1266" _null_ _null_ _null_ _null_ timetz_out _null_ _null_ _null_ ));
+DATA(insert OID = 1351 ( timetz_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "1266" _null_ _null_ _null_ _null_ timetz_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2911 ( timetztypmodin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1263" _null_ _null_ _null_ _null_ timetztypmodin _null_ _null_ _null_ ));
+DATA(insert OID = 2911 ( timetztypmodin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1263" _null_ _null_ _null_ _null_ timetztypmodin _null_ _null_ _null_ ));
DESCR("I/O typmod");
-DATA(insert OID = 2912 ( timetztypmodout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "23" _null_ _null_ _null_ _null_ timetztypmodout _null_ _null_ _null_ ));
+DATA(insert OID = 2912 ( timetztypmodout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "23" _null_ _null_ _null_ _null_ timetztypmodout _null_ _null_ _null_ ));
DESCR("I/O typmod");
-DATA(insert OID = 1352 ( timetz_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ timetz_eq _null_ _null_ _null_ ));
-DATA(insert OID = 1353 ( timetz_ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ timetz_ne _null_ _null_ _null_ ));
-DATA(insert OID = 1354 ( timetz_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ timetz_lt _null_ _null_ _null_ ));
-DATA(insert OID = 1355 ( timetz_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ timetz_le _null_ _null_ _null_ ));
-DATA(insert OID = 1356 ( timetz_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ timetz_ge _null_ _null_ _null_ ));
-DATA(insert OID = 1357 ( timetz_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ timetz_gt _null_ _null_ _null_ ));
-DATA(insert OID = 1358 ( timetz_cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "1266 1266" _null_ _null_ _null_ _null_ timetz_cmp _null_ _null_ _null_ ));
+DATA(insert OID = 1352 ( timetz_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ timetz_eq _null_ _null_ _null_ ));
+DATA(insert OID = 1353 ( timetz_ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ timetz_ne _null_ _null_ _null_ ));
+DATA(insert OID = 1354 ( timetz_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ timetz_lt _null_ _null_ _null_ ));
+DATA(insert OID = 1355 ( timetz_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ timetz_le _null_ _null_ _null_ ));
+DATA(insert OID = 1356 ( timetz_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ timetz_ge _null_ _null_ _null_ ));
+DATA(insert OID = 1357 ( timetz_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ timetz_gt _null_ _null_ _null_ ));
+DATA(insert OID = 1358 ( timetz_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "1266 1266" _null_ _null_ _null_ _null_ timetz_cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 1359 ( timestamptz PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1184 "1082 1266" _null_ _null_ _null_ _null_ datetimetz_timestamptz _null_ _null_ _null_ ));
+DATA(insert OID = 1359 ( timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1184 "1082 1266" _null_ _null_ _null_ _null_ datetimetz_timestamptz _null_ _null_ _null_ ));
DESCR("convert date and time with time zone to timestamp with time zone");
-DATA(insert OID = 1364 ( time PGNSP PGUID 14 1 0 0 f f f t f s 1 0 1083 "702" _null_ _null_ _null_ _null_ "select cast(cast($1 as timestamp without time zone) as pg_catalog.time)" _null_ _null_ _null_ ));
+DATA(insert OID = 1364 ( time PGNSP PGUID 14 1 0 0 0 f f f t f s 1 0 1083 "702" _null_ _null_ _null_ _null_ "select cast(cast($1 as timestamp without time zone) as pg_catalog.time)" _null_ _null_ _null_ ));
DESCR("convert abstime to time");
-DATA(insert OID = 1367 ( character_length PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1042" _null_ _null_ _null_ _null_ bpcharlen _null_ _null_ _null_ ));
+DATA(insert OID = 1367 ( character_length PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1042" _null_ _null_ _null_ _null_ bpcharlen _null_ _null_ _null_ ));
DESCR("character length");
-DATA(insert OID = 1369 ( character_length PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "25" _null_ _null_ _null_ _null_ textlen _null_ _null_ _null_ ));
+DATA(insert OID = 1369 ( character_length PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "25" _null_ _null_ _null_ _null_ textlen _null_ _null_ _null_ ));
DESCR("character length");
-DATA(insert OID = 1370 ( interval PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1186 "1083" _null_ _null_ _null_ _null_ time_interval _null_ _null_ _null_ ));
+DATA(insert OID = 1370 ( interval PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1186 "1083" _null_ _null_ _null_ _null_ time_interval _null_ _null_ _null_ ));
DESCR("convert time to interval");
-DATA(insert OID = 1372 ( char_length PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1042" _null_ _null_ _null_ _null_ bpcharlen _null_ _null_ _null_ ));
+DATA(insert OID = 1372 ( char_length PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1042" _null_ _null_ _null_ _null_ bpcharlen _null_ _null_ _null_ ));
DESCR("character length");
-DATA(insert OID = 1374 ( octet_length PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "25" _null_ _null_ _null_ _null_ textoctetlen _null_ _null_ _null_ ));
+DATA(insert OID = 1374 ( octet_length PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "25" _null_ _null_ _null_ _null_ textoctetlen _null_ _null_ _null_ ));
DESCR("octet length");
-DATA(insert OID = 1375 ( octet_length PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1042" _null_ _null_ _null_ _null_ bpcharoctetlen _null_ _null_ _null_ ));
+DATA(insert OID = 1375 ( octet_length PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1042" _null_ _null_ _null_ _null_ bpcharoctetlen _null_ _null_ _null_ ));
DESCR("octet length");
-DATA(insert OID = 1377 ( time_larger PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1083 "1083 1083" _null_ _null_ _null_ _null_ time_larger _null_ _null_ _null_ ));
+DATA(insert OID = 1377 ( time_larger PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1083 "1083 1083" _null_ _null_ _null_ _null_ time_larger _null_ _null_ _null_ ));
DESCR("larger of two");
-DATA(insert OID = 1378 ( time_smaller PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1083 "1083 1083" _null_ _null_ _null_ _null_ time_smaller _null_ _null_ _null_ ));
+DATA(insert OID = 1378 ( time_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1083 "1083 1083" _null_ _null_ _null_ _null_ time_smaller _null_ _null_ _null_ ));
DESCR("smaller of two");
-DATA(insert OID = 1379 ( timetz_larger PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1266 "1266 1266" _null_ _null_ _null_ _null_ timetz_larger _null_ _null_ _null_ ));
+DATA(insert OID = 1379 ( timetz_larger PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1266 "1266 1266" _null_ _null_ _null_ _null_ timetz_larger _null_ _null_ _null_ ));
DESCR("larger of two");
-DATA(insert OID = 1380 ( timetz_smaller PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1266 "1266 1266" _null_ _null_ _null_ _null_ timetz_smaller _null_ _null_ _null_ ));
+DATA(insert OID = 1380 ( timetz_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1266 "1266 1266" _null_ _null_ _null_ _null_ timetz_smaller _null_ _null_ _null_ ));
DESCR("smaller of two");
-DATA(insert OID = 1381 ( char_length PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "25" _null_ _null_ _null_ _null_ textlen _null_ _null_ _null_ ));
+DATA(insert OID = 1381 ( char_length PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "25" _null_ _null_ _null_ _null_ textlen _null_ _null_ _null_ ));
DESCR("character length");
-DATA(insert OID = 1382 ( date_part PGNSP PGUID 14 1 0 0 f f f t f s 2 0 701 "25 702" _null_ _null_ _null_ _null_ "select pg_catalog.date_part($1, cast($2 as timestamp with time zone))" _null_ _null_ _null_ ));
+DATA(insert OID = 1382 ( date_part PGNSP PGUID 14 1 0 0 0 f f f t f s 2 0 701 "25 702" _null_ _null_ _null_ _null_ "select pg_catalog.date_part($1, cast($2 as timestamp with time zone))" _null_ _null_ _null_ ));
DESCR("extract field from abstime");
-DATA(insert OID = 1383 ( date_part PGNSP PGUID 14 1 0 0 f f f t f s 2 0 701 "25 703" _null_ _null_ _null_ _null_ "select pg_catalog.date_part($1, cast($2 as pg_catalog.interval))" _null_ _null_ _null_ ));
+DATA(insert OID = 1383 ( date_part PGNSP PGUID 14 1 0 0 0 f f f t f s 2 0 701 "25 703" _null_ _null_ _null_ _null_ "select pg_catalog.date_part($1, cast($2 as pg_catalog.interval))" _null_ _null_ _null_ ));
DESCR("extract field from reltime");
-DATA(insert OID = 1384 ( date_part PGNSP PGUID 14 1 0 0 f f f t f i 2 0 701 "25 1082" _null_ _null_ _null_ _null_ "select pg_catalog.date_part($1, cast($2 as timestamp without time zone))" _null_ _null_ _null_ ));
+DATA(insert OID = 1384 ( date_part PGNSP PGUID 14 1 0 0 0 f f f t f i 2 0 701 "25 1082" _null_ _null_ _null_ _null_ "select pg_catalog.date_part($1, cast($2 as timestamp without time zone))" _null_ _null_ _null_ ));
DESCR("extract field from date");
-DATA(insert OID = 1385 ( date_part PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "25 1083" _null_ _null_ _null_ _null_ time_part _null_ _null_ _null_ ));
+DATA(insert OID = 1385 ( date_part PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "25 1083" _null_ _null_ _null_ _null_ time_part _null_ _null_ _null_ ));
DESCR("extract field from time");
-DATA(insert OID = 1386 ( age PGNSP PGUID 14 1 0 0 f f f t f s 1 0 1186 "1184" _null_ _null_ _null_ _null_ "select pg_catalog.age(cast(current_date as timestamp with time zone), $1)" _null_ _null_ _null_ ));
+DATA(insert OID = 1386 ( age PGNSP PGUID 14 1 0 0 0 f f f t f s 1 0 1186 "1184" _null_ _null_ _null_ _null_ "select pg_catalog.age(cast(current_date as timestamp with time zone), $1)" _null_ _null_ _null_ ));
DESCR("date difference from today preserving months and years");
-DATA(insert OID = 1388 ( timetz PGNSP PGUID 12 1 0 0 f f f t f s 1 0 1266 "1184" _null_ _null_ _null_ _null_ timestamptz_timetz _null_ _null_ _null_ ));
+DATA(insert OID = 1388 ( timetz PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 1266 "1184" _null_ _null_ _null_ _null_ timestamptz_timetz _null_ _null_ _null_ ));
DESCR("convert timestamp with time zone to time with time zone");
-DATA(insert OID = 1373 ( isfinite PGNSP PGUID 12 1 0 0 f f f t f i 1 0 16 "1082" _null_ _null_ _null_ _null_ date_finite _null_ _null_ _null_ ));
+DATA(insert OID = 1373 ( isfinite PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 16 "1082" _null_ _null_ _null_ _null_ date_finite _null_ _null_ _null_ ));
DESCR("finite date?");
-DATA(insert OID = 1389 ( isfinite PGNSP PGUID 12 1 0 0 f f f t f i 1 0 16 "1184" _null_ _null_ _null_ _null_ timestamp_finite _null_ _null_ _null_ ));
+DATA(insert OID = 1389 ( isfinite PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 16 "1184" _null_ _null_ _null_ _null_ timestamp_finite _null_ _null_ _null_ ));
DESCR("finite timestamp?");
-DATA(insert OID = 1390 ( isfinite PGNSP PGUID 12 1 0 0 f f f t f i 1 0 16 "1186" _null_ _null_ _null_ _null_ interval_finite _null_ _null_ _null_ ));
+DATA(insert OID = 1390 ( isfinite PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 16 "1186" _null_ _null_ _null_ _null_ interval_finite _null_ _null_ _null_ ));
DESCR("finite interval?");
-DATA(insert OID = 1376 ( factorial PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "20" _null_ _null_ _null_ _null_ numeric_fac _null_ _null_ _null_ ));
+DATA(insert OID = 1376 ( factorial PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "20" _null_ _null_ _null_ _null_ numeric_fac _null_ _null_ _null_ ));
DESCR("factorial");
-DATA(insert OID = 1394 ( abs PGNSP PGUID 12 1 0 0 f f f t f i 1 0 700 "700" _null_ _null_ _null_ _null_ float4abs _null_ _null_ _null_ ));
+DATA(insert OID = 1394 ( abs PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 700 "700" _null_ _null_ _null_ _null_ float4abs _null_ _null_ _null_ ));
DESCR("absolute value");
-DATA(insert OID = 1395 ( abs PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ float8abs _null_ _null_ _null_ ));
+DATA(insert OID = 1395 ( abs PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ float8abs _null_ _null_ _null_ ));
DESCR("absolute value");
-DATA(insert OID = 1396 ( abs PGNSP PGUID 12 1 0 0 f f f t f i 1 0 20 "20" _null_ _null_ _null_ _null_ int8abs _null_ _null_ _null_ ));
+DATA(insert OID = 1396 ( abs PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 20 "20" _null_ _null_ _null_ _null_ int8abs _null_ _null_ _null_ ));
DESCR("absolute value");
-DATA(insert OID = 1397 ( abs PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "23" _null_ _null_ _null_ _null_ int4abs _null_ _null_ _null_ ));
+DATA(insert OID = 1397 ( abs PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "23" _null_ _null_ _null_ _null_ int4abs _null_ _null_ _null_ ));
DESCR("absolute value");
-DATA(insert OID = 1398 ( abs PGNSP PGUID 12 1 0 0 f f f t f i 1 0 21 "21" _null_ _null_ _null_ _null_ int2abs _null_ _null_ _null_ ));
+DATA(insert OID = 1398 ( abs PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 21 "21" _null_ _null_ _null_ _null_ int2abs _null_ _null_ _null_ ));
DESCR("absolute value");
/* OIDS 1400 - 1499 */
-DATA(insert OID = 1400 ( name PGNSP PGUID 12 1 0 0 f f f t f i 1 0 19 "1043" _null_ _null_ _null_ _null_ text_name _null_ _null_ _null_ ));
+DATA(insert OID = 1400 ( name PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 19 "1043" _null_ _null_ _null_ _null_ text_name _null_ _null_ _null_ ));
DESCR("convert varchar to name");
-DATA(insert OID = 1401 ( varchar PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1043 "19" _null_ _null_ _null_ _null_ name_text _null_ _null_ _null_ ));
+DATA(insert OID = 1401 ( varchar PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1043 "19" _null_ _null_ _null_ _null_ name_text _null_ _null_ _null_ ));
DESCR("convert name to varchar");
-DATA(insert OID = 1402 ( current_schema PGNSP PGUID 12 1 0 0 f f f t f s 0 0 19 "" _null_ _null_ _null_ _null_ current_schema _null_ _null_ _null_ ));
+DATA(insert OID = 1402 ( current_schema PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 19 "" _null_ _null_ _null_ _null_ current_schema _null_ _null_ _null_ ));
DESCR("current schema name");
-DATA(insert OID = 1403 ( current_schemas PGNSP PGUID 12 1 0 0 f f f t f s 1 0 1003 "16" _null_ _null_ _null_ _null_ current_schemas _null_ _null_ _null_ ));
+DATA(insert OID = 1403 ( current_schemas PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 1003 "16" _null_ _null_ _null_ _null_ current_schemas _null_ _null_ _null_ ));
DESCR("current schema search list");
-DATA(insert OID = 1404 ( overlay PGNSP PGUID 12 1 0 0 f f f t f i 4 0 25 "25 25 23 23" _null_ _null_ _null_ _null_ textoverlay _null_ _null_ _null_ ));
+DATA(insert OID = 1404 ( overlay PGNSP PGUID 12 1 0 0 0 f f f t f i 4 0 25 "25 25 23 23" _null_ _null_ _null_ _null_ textoverlay _null_ _null_ _null_ ));
DESCR("substitute portion of string");
-DATA(insert OID = 1405 ( overlay PGNSP PGUID 12 1 0 0 f f f t f i 3 0 25 "25 25 23" _null_ _null_ _null_ _null_ textoverlay_no_len _null_ _null_ _null_ ));
+DATA(insert OID = 1405 ( overlay PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 25 "25 25 23" _null_ _null_ _null_ _null_ textoverlay_no_len _null_ _null_ _null_ ));
DESCR("substitute portion of string");
-DATA(insert OID = 1406 ( isvertical PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "600 600" _null_ _null_ _null_ _null_ point_vert _null_ _null_ _null_ ));
+DATA(insert OID = 1406 ( isvertical PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "600 600" _null_ _null_ _null_ _null_ point_vert _null_ _null_ _null_ ));
DESCR("vertically aligned");
-DATA(insert OID = 1407 ( ishorizontal PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "600 600" _null_ _null_ _null_ _null_ point_horiz _null_ _null_ _null_ ));
+DATA(insert OID = 1407 ( ishorizontal PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "600 600" _null_ _null_ _null_ _null_ point_horiz _null_ _null_ _null_ ));
DESCR("horizontally aligned");
-DATA(insert OID = 1408 ( isparallel PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "601 601" _null_ _null_ _null_ _null_ lseg_parallel _null_ _null_ _null_ ));
+DATA(insert OID = 1408 ( isparallel PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "601 601" _null_ _null_ _null_ _null_ lseg_parallel _null_ _null_ _null_ ));
DESCR("parallel");
-DATA(insert OID = 1409 ( isperp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "601 601" _null_ _null_ _null_ _null_ lseg_perp _null_ _null_ _null_ ));
+DATA(insert OID = 1409 ( isperp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "601 601" _null_ _null_ _null_ _null_ lseg_perp _null_ _null_ _null_ ));
DESCR("perpendicular");
-DATA(insert OID = 1410 ( isvertical PGNSP PGUID 12 1 0 0 f f f t f i 1 0 16 "601" _null_ _null_ _null_ _null_ lseg_vertical _null_ _null_ _null_ ));
+DATA(insert OID = 1410 ( isvertical PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 16 "601" _null_ _null_ _null_ _null_ lseg_vertical _null_ _null_ _null_ ));
DESCR("vertical");
-DATA(insert OID = 1411 ( ishorizontal PGNSP PGUID 12 1 0 0 f f f t f i 1 0 16 "601" _null_ _null_ _null_ _null_ lseg_horizontal _null_ _null_ _null_ ));
+DATA(insert OID = 1411 ( ishorizontal PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 16 "601" _null_ _null_ _null_ _null_ lseg_horizontal _null_ _null_ _null_ ));
DESCR("horizontal");
-DATA(insert OID = 1412 ( isparallel PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "628 628" _null_ _null_ _null_ _null_ line_parallel _null_ _null_ _null_ ));
+DATA(insert OID = 1412 ( isparallel PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "628 628" _null_ _null_ _null_ _null_ line_parallel _null_ _null_ _null_ ));
DESCR("parallel");
-DATA(insert OID = 1413 ( isperp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "628 628" _null_ _null_ _null_ _null_ line_perp _null_ _null_ _null_ ));
+DATA(insert OID = 1413 ( isperp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "628 628" _null_ _null_ _null_ _null_ line_perp _null_ _null_ _null_ ));
DESCR("perpendicular");
-DATA(insert OID = 1414 ( isvertical PGNSP PGUID 12 1 0 0 f f f t f i 1 0 16 "628" _null_ _null_ _null_ _null_ line_vertical _null_ _null_ _null_ ));
+DATA(insert OID = 1414 ( isvertical PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 16 "628" _null_ _null_ _null_ _null_ line_vertical _null_ _null_ _null_ ));
DESCR("vertical");
-DATA(insert OID = 1415 ( ishorizontal PGNSP PGUID 12 1 0 0 f f f t f i 1 0 16 "628" _null_ _null_ _null_ _null_ line_horizontal _null_ _null_ _null_ ));
+DATA(insert OID = 1415 ( ishorizontal PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 16 "628" _null_ _null_ _null_ _null_ line_horizontal _null_ _null_ _null_ ));
DESCR("horizontal");
-DATA(insert OID = 1416 ( point PGNSP PGUID 12 1 0 0 f f f t f i 1 0 600 "718" _null_ _null_ _null_ _null_ circle_center _null_ _null_ _null_ ));
+DATA(insert OID = 1416 ( point PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 600 "718" _null_ _null_ _null_ _null_ circle_center _null_ _null_ _null_ ));
DESCR("center of");
-DATA(insert OID = 1419 ( time PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1083 "1186" _null_ _null_ _null_ _null_ interval_time _null_ _null_ _null_ ));
+DATA(insert OID = 1419 ( time PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1083 "1186" _null_ _null_ _null_ _null_ interval_time _null_ _null_ _null_ ));
DESCR("convert interval to time");
-DATA(insert OID = 1421 ( box PGNSP PGUID 12 1 0 0 f f f t f i 2 0 603 "600 600" _null_ _null_ _null_ _null_ points_box _null_ _null_ _null_ ));
+DATA(insert OID = 1421 ( box PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 603 "600 600" _null_ _null_ _null_ _null_ points_box _null_ _null_ _null_ ));
DESCR("convert points to box");
-DATA(insert OID = 1422 ( box_add PGNSP PGUID 12 1 0 0 f f f t f i 2 0 603 "603 600" _null_ _null_ _null_ _null_ box_add _null_ _null_ _null_ ));
-DATA(insert OID = 1423 ( box_sub PGNSP PGUID 12 1 0 0 f f f t f i 2 0 603 "603 600" _null_ _null_ _null_ _null_ box_sub _null_ _null_ _null_ ));
-DATA(insert OID = 1424 ( box_mul PGNSP PGUID 12 1 0 0 f f f t f i 2 0 603 "603 600" _null_ _null_ _null_ _null_ box_mul _null_ _null_ _null_ ));
-DATA(insert OID = 1425 ( box_div PGNSP PGUID 12 1 0 0 f f f t f i 2 0 603 "603 600" _null_ _null_ _null_ _null_ box_div _null_ _null_ _null_ ));
-DATA(insert OID = 1426 ( path_contain_pt PGNSP PGUID 14 1 0 0 f f f t f i 2 0 16 "602 600" _null_ _null_ _null_ _null_ "select pg_catalog.on_ppath($2, $1)" _null_ _null_ _null_ ));
-DATA(insert OID = 1428 ( poly_contain_pt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "604 600" _null_ _null_ _null_ _null_ poly_contain_pt _null_ _null_ _null_ ));
-DATA(insert OID = 1429 ( pt_contained_poly PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "600 604" _null_ _null_ _null_ _null_ pt_contained_poly _null_ _null_ _null_ ));
-
-DATA(insert OID = 1430 ( isclosed PGNSP PGUID 12 1 0 0 f f f t f i 1 0 16 "602" _null_ _null_ _null_ _null_ path_isclosed _null_ _null_ _null_ ));
+DATA(insert OID = 1422 ( box_add PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 603 "603 600" _null_ _null_ _null_ _null_ box_add _null_ _null_ _null_ ));
+DATA(insert OID = 1423 ( box_sub PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 603 "603 600" _null_ _null_ _null_ _null_ box_sub _null_ _null_ _null_ ));
+DATA(insert OID = 1424 ( box_mul PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 603 "603 600" _null_ _null_ _null_ _null_ box_mul _null_ _null_ _null_ ));
+DATA(insert OID = 1425 ( box_div PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 603 "603 600" _null_ _null_ _null_ _null_ box_div _null_ _null_ _null_ ));
+DATA(insert OID = 1426 ( path_contain_pt PGNSP PGUID 14 1 0 0 0 f f f t f i 2 0 16 "602 600" _null_ _null_ _null_ _null_ "select pg_catalog.on_ppath($2, $1)" _null_ _null_ _null_ ));
+DATA(insert OID = 1428 ( poly_contain_pt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "604 600" _null_ _null_ _null_ _null_ poly_contain_pt _null_ _null_ _null_ ));
+DATA(insert OID = 1429 ( pt_contained_poly PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "600 604" _null_ _null_ _null_ _null_ pt_contained_poly _null_ _null_ _null_ ));
+
+DATA(insert OID = 1430 ( isclosed PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 16 "602" _null_ _null_ _null_ _null_ path_isclosed _null_ _null_ _null_ ));
DESCR("path closed?");
-DATA(insert OID = 1431 ( isopen PGNSP PGUID 12 1 0 0 f f f t f i 1 0 16 "602" _null_ _null_ _null_ _null_ path_isopen _null_ _null_ _null_ ));
+DATA(insert OID = 1431 ( isopen PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 16 "602" _null_ _null_ _null_ _null_ path_isopen _null_ _null_ _null_ ));
DESCR("path open?");
-DATA(insert OID = 1432 ( path_npoints PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "602" _null_ _null_ _null_ _null_ path_npoints _null_ _null_ _null_ ));
+DATA(insert OID = 1432 ( path_npoints PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "602" _null_ _null_ _null_ _null_ path_npoints _null_ _null_ _null_ ));
/* pclose and popen might better be named close and open, but that crashes initdb.
* - thomas 97/04/20
*/
-DATA(insert OID = 1433 ( pclose PGNSP PGUID 12 1 0 0 f f f t f i 1 0 602 "602" _null_ _null_ _null_ _null_ path_close _null_ _null_ _null_ ));
+DATA(insert OID = 1433 ( pclose PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 602 "602" _null_ _null_ _null_ _null_ path_close _null_ _null_ _null_ ));
DESCR("close path");
-DATA(insert OID = 1434 ( popen PGNSP PGUID 12 1 0 0 f f f t f i 1 0 602 "602" _null_ _null_ _null_ _null_ path_open _null_ _null_ _null_ ));
+DATA(insert OID = 1434 ( popen PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 602 "602" _null_ _null_ _null_ _null_ path_open _null_ _null_ _null_ ));
DESCR("open path");
-DATA(insert OID = 1435 ( path_add PGNSP PGUID 12 1 0 0 f f f t f i 2 0 602 "602 602" _null_ _null_ _null_ _null_ path_add _null_ _null_ _null_ ));
-DATA(insert OID = 1436 ( path_add_pt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 602 "602 600" _null_ _null_ _null_ _null_ path_add_pt _null_ _null_ _null_ ));
-DATA(insert OID = 1437 ( path_sub_pt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 602 "602 600" _null_ _null_ _null_ _null_ path_sub_pt _null_ _null_ _null_ ));
-DATA(insert OID = 1438 ( path_mul_pt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 602 "602 600" _null_ _null_ _null_ _null_ path_mul_pt _null_ _null_ _null_ ));
-DATA(insert OID = 1439 ( path_div_pt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 602 "602 600" _null_ _null_ _null_ _null_ path_div_pt _null_ _null_ _null_ ));
+DATA(insert OID = 1435 ( path_add PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 602 "602 602" _null_ _null_ _null_ _null_ path_add _null_ _null_ _null_ ));
+DATA(insert OID = 1436 ( path_add_pt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 602 "602 600" _null_ _null_ _null_ _null_ path_add_pt _null_ _null_ _null_ ));
+DATA(insert OID = 1437 ( path_sub_pt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 602 "602 600" _null_ _null_ _null_ _null_ path_sub_pt _null_ _null_ _null_ ));
+DATA(insert OID = 1438 ( path_mul_pt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 602 "602 600" _null_ _null_ _null_ _null_ path_mul_pt _null_ _null_ _null_ ));
+DATA(insert OID = 1439 ( path_div_pt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 602 "602 600" _null_ _null_ _null_ _null_ path_div_pt _null_ _null_ _null_ ));
-DATA(insert OID = 1440 ( point PGNSP PGUID 12 1 0 0 f f f t f i 2 0 600 "701 701" _null_ _null_ _null_ _null_ construct_point _null_ _null_ _null_ ));
+DATA(insert OID = 1440 ( point PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 600 "701 701" _null_ _null_ _null_ _null_ construct_point _null_ _null_ _null_ ));
DESCR("convert x, y to point");
-DATA(insert OID = 1441 ( point_add PGNSP PGUID 12 1 0 0 f f f t f i 2 0 600 "600 600" _null_ _null_ _null_ _null_ point_add _null_ _null_ _null_ ));
-DATA(insert OID = 1442 ( point_sub PGNSP PGUID 12 1 0 0 f f f t f i 2 0 600 "600 600" _null_ _null_ _null_ _null_ point_sub _null_ _null_ _null_ ));
-DATA(insert OID = 1443 ( point_mul PGNSP PGUID 12 1 0 0 f f f t f i 2 0 600 "600 600" _null_ _null_ _null_ _null_ point_mul _null_ _null_ _null_ ));
-DATA(insert OID = 1444 ( point_div PGNSP PGUID 12 1 0 0 f f f t f i 2 0 600 "600 600" _null_ _null_ _null_ _null_ point_div _null_ _null_ _null_ ));
+DATA(insert OID = 1441 ( point_add PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 600 "600 600" _null_ _null_ _null_ _null_ point_add _null_ _null_ _null_ ));
+DATA(insert OID = 1442 ( point_sub PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 600 "600 600" _null_ _null_ _null_ _null_ point_sub _null_ _null_ _null_ ));
+DATA(insert OID = 1443 ( point_mul PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 600 "600 600" _null_ _null_ _null_ _null_ point_mul _null_ _null_ _null_ ));
+DATA(insert OID = 1444 ( point_div PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 600 "600 600" _null_ _null_ _null_ _null_ point_div _null_ _null_ _null_ ));
-DATA(insert OID = 1445 ( poly_npoints PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "604" _null_ _null_ _null_ _null_ poly_npoints _null_ _null_ _null_ ));
-DATA(insert OID = 1446 ( box PGNSP PGUID 12 1 0 0 f f f t f i 1 0 603 "604" _null_ _null_ _null_ _null_ poly_box _null_ _null_ _null_ ));
+DATA(insert OID = 1445 ( poly_npoints PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "604" _null_ _null_ _null_ _null_ poly_npoints _null_ _null_ _null_ ));
+DATA(insert OID = 1446 ( box PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 603 "604" _null_ _null_ _null_ _null_ poly_box _null_ _null_ _null_ ));
DESCR("convert polygon to bounding box");
-DATA(insert OID = 1447 ( path PGNSP PGUID 12 1 0 0 f f f t f i 1 0 602 "604" _null_ _null_ _null_ _null_ poly_path _null_ _null_ _null_ ));
+DATA(insert OID = 1447 ( path PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 602 "604" _null_ _null_ _null_ _null_ poly_path _null_ _null_ _null_ ));
DESCR("convert polygon to path");
-DATA(insert OID = 1448 ( polygon PGNSP PGUID 12 1 0 0 f f f t f i 1 0 604 "603" _null_ _null_ _null_ _null_ box_poly _null_ _null_ _null_ ));
+DATA(insert OID = 1448 ( polygon PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 604 "603" _null_ _null_ _null_ _null_ box_poly _null_ _null_ _null_ ));
DESCR("convert box to polygon");
-DATA(insert OID = 1449 ( polygon PGNSP PGUID 12 1 0 0 f f f t f i 1 0 604 "602" _null_ _null_ _null_ _null_ path_poly _null_ _null_ _null_ ));
+DATA(insert OID = 1449 ( polygon PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 604 "602" _null_ _null_ _null_ _null_ path_poly _null_ _null_ _null_ ));
DESCR("convert path to polygon");
-DATA(insert OID = 1450 ( circle_in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 718 "2275" _null_ _null_ _null_ _null_ circle_in _null_ _null_ _null_ ));
-DESCR("I/O");
-DATA(insert OID = 1451 ( circle_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "718" _null_ _null_ _null_ _null_ circle_out _null_ _null_ _null_ ));
-DESCR("I/O");
-DATA(insert OID = 1452 ( circle_same PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_same _null_ _null_ _null_ ));
-DATA(insert OID = 1453 ( circle_contain PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_contain _null_ _null_ _null_ ));
-DATA(insert OID = 1454 ( circle_left PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_left _null_ _null_ _null_ ));
-DATA(insert OID = 1455 ( circle_overleft PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_overleft _null_ _null_ _null_ ));
-DATA(insert OID = 1456 ( circle_overright PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_overright _null_ _null_ _null_ ));
-DATA(insert OID = 1457 ( circle_right PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_right _null_ _null_ _null_ ));
-DATA(insert OID = 1458 ( circle_contained PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_contained _null_ _null_ _null_ ));
-DATA(insert OID = 1459 ( circle_overlap PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_overlap _null_ _null_ _null_ ));
-DATA(insert OID = 1460 ( circle_below PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_below _null_ _null_ _null_ ));
-DATA(insert OID = 1461 ( circle_above PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_above _null_ _null_ _null_ ));
-DATA(insert OID = 1462 ( circle_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_eq _null_ _null_ _null_ ));
-DATA(insert OID = 1463 ( circle_ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_ne _null_ _null_ _null_ ));
-DATA(insert OID = 1464 ( circle_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_lt _null_ _null_ _null_ ));
-DATA(insert OID = 1465 ( circle_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_gt _null_ _null_ _null_ ));
-DATA(insert OID = 1466 ( circle_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_le _null_ _null_ _null_ ));
-DATA(insert OID = 1467 ( circle_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_ge _null_ _null_ _null_ ));
-DATA(insert OID = 1468 ( area PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "718" _null_ _null_ _null_ _null_ circle_area _null_ _null_ _null_ ));
+DATA(insert OID = 1450 ( circle_in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 718 "2275" _null_ _null_ _null_ _null_ circle_in _null_ _null_ _null_ ));
+DESCR("I/O");
+DATA(insert OID = 1451 ( circle_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "718" _null_ _null_ _null_ _null_ circle_out _null_ _null_ _null_ ));
+DESCR("I/O");
+DATA(insert OID = 1452 ( circle_same PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_same _null_ _null_ _null_ ));
+DATA(insert OID = 1453 ( circle_contain PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_contain _null_ _null_ _null_ ));
+DATA(insert OID = 1454 ( circle_left PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_left _null_ _null_ _null_ ));
+DATA(insert OID = 1455 ( circle_overleft PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_overleft _null_ _null_ _null_ ));
+DATA(insert OID = 1456 ( circle_overright PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_overright _null_ _null_ _null_ ));
+DATA(insert OID = 1457 ( circle_right PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_right _null_ _null_ _null_ ));
+DATA(insert OID = 1458 ( circle_contained PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_contained _null_ _null_ _null_ ));
+DATA(insert OID = 1459 ( circle_overlap PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_overlap _null_ _null_ _null_ ));
+DATA(insert OID = 1460 ( circle_below PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_below _null_ _null_ _null_ ));
+DATA(insert OID = 1461 ( circle_above PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_above _null_ _null_ _null_ ));
+DATA(insert OID = 1462 ( circle_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_eq _null_ _null_ _null_ ));
+DATA(insert OID = 1463 ( circle_ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_ne _null_ _null_ _null_ ));
+DATA(insert OID = 1464 ( circle_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_lt _null_ _null_ _null_ ));
+DATA(insert OID = 1465 ( circle_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_gt _null_ _null_ _null_ ));
+DATA(insert OID = 1466 ( circle_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_le _null_ _null_ _null_ ));
+DATA(insert OID = 1467 ( circle_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_ge _null_ _null_ _null_ ));
+DATA(insert OID = 1468 ( area PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "718" _null_ _null_ _null_ _null_ circle_area _null_ _null_ _null_ ));
DESCR("area of circle");
-DATA(insert OID = 1469 ( diameter PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "718" _null_ _null_ _null_ _null_ circle_diameter _null_ _null_ _null_ ));
+DATA(insert OID = 1469 ( diameter PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "718" _null_ _null_ _null_ _null_ circle_diameter _null_ _null_ _null_ ));
DESCR("diameter of circle");
-DATA(insert OID = 1470 ( radius PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "718" _null_ _null_ _null_ _null_ circle_radius _null_ _null_ _null_ ));
+DATA(insert OID = 1470 ( radius PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "718" _null_ _null_ _null_ _null_ circle_radius _null_ _null_ _null_ ));
DESCR("radius of circle");
-DATA(insert OID = 1471 ( circle_distance PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "718 718" _null_ _null_ _null_ _null_ circle_distance _null_ _null_ _null_ ));
-DATA(insert OID = 1472 ( circle_center PGNSP PGUID 12 1 0 0 f f f t f i 1 0 600 "718" _null_ _null_ _null_ _null_ circle_center _null_ _null_ _null_ ));
-DATA(insert OID = 1473 ( circle PGNSP PGUID 12 1 0 0 f f f t f i 2 0 718 "600 701" _null_ _null_ _null_ _null_ cr_circle _null_ _null_ _null_ ));
+DATA(insert OID = 1471 ( circle_distance PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "718 718" _null_ _null_ _null_ _null_ circle_distance _null_ _null_ _null_ ));
+DATA(insert OID = 1472 ( circle_center PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 600 "718" _null_ _null_ _null_ _null_ circle_center _null_ _null_ _null_ ));
+DATA(insert OID = 1473 ( circle PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 718 "600 701" _null_ _null_ _null_ _null_ cr_circle _null_ _null_ _null_ ));
DESCR("convert point and radius to circle");
-DATA(insert OID = 1474 ( circle PGNSP PGUID 12 1 0 0 f f f t f i 1 0 718 "604" _null_ _null_ _null_ _null_ poly_circle _null_ _null_ _null_ ));
+DATA(insert OID = 1474 ( circle PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 718 "604" _null_ _null_ _null_ _null_ poly_circle _null_ _null_ _null_ ));
DESCR("convert polygon to circle");
-DATA(insert OID = 1475 ( polygon PGNSP PGUID 12 1 0 0 f f f t f i 2 0 604 "23 718" _null_ _null_ _null_ _null_ circle_poly _null_ _null_ _null_ ));
+DATA(insert OID = 1475 ( polygon PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 604 "23 718" _null_ _null_ _null_ _null_ circle_poly _null_ _null_ _null_ ));
DESCR("convert vertex count and circle to polygon");
-DATA(insert OID = 1476 ( dist_pc PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "600 718" _null_ _null_ _null_ _null_ dist_pc _null_ _null_ _null_ ));
-DATA(insert OID = 1477 ( circle_contain_pt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "718 600" _null_ _null_ _null_ _null_ circle_contain_pt _null_ _null_ _null_ ));
-DATA(insert OID = 1478 ( pt_contained_circle PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "600 718" _null_ _null_ _null_ _null_ pt_contained_circle _null_ _null_ _null_ ));
-DATA(insert OID = 1479 ( circle PGNSP PGUID 12 1 0 0 f f f t f i 1 0 718 "603" _null_ _null_ _null_ _null_ box_circle _null_ _null_ _null_ ));
+DATA(insert OID = 1476 ( dist_pc PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "600 718" _null_ _null_ _null_ _null_ dist_pc _null_ _null_ _null_ ));
+DATA(insert OID = 1477 ( circle_contain_pt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "718 600" _null_ _null_ _null_ _null_ circle_contain_pt _null_ _null_ _null_ ));
+DATA(insert OID = 1478 ( pt_contained_circle PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "600 718" _null_ _null_ _null_ _null_ pt_contained_circle _null_ _null_ _null_ ));
+DATA(insert OID = 1479 ( circle PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 718 "603" _null_ _null_ _null_ _null_ box_circle _null_ _null_ _null_ ));
DESCR("convert box to circle");
-DATA(insert OID = 1480 ( box PGNSP PGUID 12 1 0 0 f f f t f i 1 0 603 "718" _null_ _null_ _null_ _null_ circle_box _null_ _null_ _null_ ));
+DATA(insert OID = 1480 ( box PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 603 "718" _null_ _null_ _null_ _null_ circle_box _null_ _null_ _null_ ));
DESCR("convert circle to box");
-DATA(insert OID = 1481 ( tinterval PGNSP PGUID 12 1 0 0 f f f t f i 2 0 704 "702 702" _null_ _null_ _null_ _null_ mktinterval _null_ _null_ _null_ ));
+DATA(insert OID = 1481 ( tinterval PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 704 "702 702" _null_ _null_ _null_ _null_ mktinterval _null_ _null_ _null_ ));
DESCR("convert to tinterval");
-DATA(insert OID = 1482 ( lseg_ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "601 601" _null_ _null_ _null_ _null_ lseg_ne _null_ _null_ _null_ ));
-DATA(insert OID = 1483 ( lseg_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "601 601" _null_ _null_ _null_ _null_ lseg_lt _null_ _null_ _null_ ));
-DATA(insert OID = 1484 ( lseg_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "601 601" _null_ _null_ _null_ _null_ lseg_le _null_ _null_ _null_ ));
-DATA(insert OID = 1485 ( lseg_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "601 601" _null_ _null_ _null_ _null_ lseg_gt _null_ _null_ _null_ ));
-DATA(insert OID = 1486 ( lseg_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "601 601" _null_ _null_ _null_ _null_ lseg_ge _null_ _null_ _null_ ));
-DATA(insert OID = 1487 ( lseg_length PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "601" _null_ _null_ _null_ _null_ lseg_length _null_ _null_ _null_ ));
-DATA(insert OID = 1488 ( close_ls PGNSP PGUID 12 1 0 0 f f f t f i 2 0 600 "628 601" _null_ _null_ _null_ _null_ close_ls _null_ _null_ _null_ ));
-DATA(insert OID = 1489 ( close_lseg PGNSP PGUID 12 1 0 0 f f f t f i 2 0 600 "601 601" _null_ _null_ _null_ _null_ close_lseg _null_ _null_ _null_ ));
+DATA(insert OID = 1482 ( lseg_ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "601 601" _null_ _null_ _null_ _null_ lseg_ne _null_ _null_ _null_ ));
+DATA(insert OID = 1483 ( lseg_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "601 601" _null_ _null_ _null_ _null_ lseg_lt _null_ _null_ _null_ ));
+DATA(insert OID = 1484 ( lseg_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "601 601" _null_ _null_ _null_ _null_ lseg_le _null_ _null_ _null_ ));
+DATA(insert OID = 1485 ( lseg_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "601 601" _null_ _null_ _null_ _null_ lseg_gt _null_ _null_ _null_ ));
+DATA(insert OID = 1486 ( lseg_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "601 601" _null_ _null_ _null_ _null_ lseg_ge _null_ _null_ _null_ ));
+DATA(insert OID = 1487 ( lseg_length PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "601" _null_ _null_ _null_ _null_ lseg_length _null_ _null_ _null_ ));
+DATA(insert OID = 1488 ( close_ls PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 600 "628 601" _null_ _null_ _null_ _null_ close_ls _null_ _null_ _null_ ));
+DATA(insert OID = 1489 ( close_lseg PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 600 "601 601" _null_ _null_ _null_ _null_ close_lseg _null_ _null_ _null_ ));
-DATA(insert OID = 1490 ( line_in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 628 "2275" _null_ _null_ _null_ _null_ line_in _null_ _null_ _null_ ));
+DATA(insert OID = 1490 ( line_in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 628 "2275" _null_ _null_ _null_ _null_ line_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 1491 ( line_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "628" _null_ _null_ _null_ _null_ line_out _null_ _null_ _null_ ));
+DATA(insert OID = 1491 ( line_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "628" _null_ _null_ _null_ _null_ line_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 1492 ( line_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "628 628" _null_ _null_ _null_ _null_ line_eq _null_ _null_ _null_ ));
-DATA(insert OID = 1493 ( line PGNSP PGUID 12 1 0 0 f f f t f i 2 0 628 "600 600" _null_ _null_ _null_ _null_ line_construct_pp _null_ _null_ _null_ ));
+DATA(insert OID = 1492 ( line_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "628 628" _null_ _null_ _null_ _null_ line_eq _null_ _null_ _null_ ));
+DATA(insert OID = 1493 ( line PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 628 "600 600" _null_ _null_ _null_ _null_ line_construct_pp _null_ _null_ _null_ ));
DESCR("construct line from points");
-DATA(insert OID = 1494 ( line_interpt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 600 "628 628" _null_ _null_ _null_ _null_ line_interpt _null_ _null_ _null_ ));
-DATA(insert OID = 1495 ( line_intersect PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "628 628" _null_ _null_ _null_ _null_ line_intersect _null_ _null_ _null_ ));
-DATA(insert OID = 1496 ( line_parallel PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "628 628" _null_ _null_ _null_ _null_ line_parallel _null_ _null_ _null_ ));
-DATA(insert OID = 1497 ( line_perp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "628 628" _null_ _null_ _null_ _null_ line_perp _null_ _null_ _null_ ));
-DATA(insert OID = 1498 ( line_vertical PGNSP PGUID 12 1 0 0 f f f t f i 1 0 16 "628" _null_ _null_ _null_ _null_ line_vertical _null_ _null_ _null_ ));
-DATA(insert OID = 1499 ( line_horizontal PGNSP PGUID 12 1 0 0 f f f t f i 1 0 16 "628" _null_ _null_ _null_ _null_ line_horizontal _null_ _null_ _null_ ));
+DATA(insert OID = 1494 ( line_interpt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 600 "628 628" _null_ _null_ _null_ _null_ line_interpt _null_ _null_ _null_ ));
+DATA(insert OID = 1495 ( line_intersect PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "628 628" _null_ _null_ _null_ _null_ line_intersect _null_ _null_ _null_ ));
+DATA(insert OID = 1496 ( line_parallel PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "628 628" _null_ _null_ _null_ _null_ line_parallel _null_ _null_ _null_ ));
+DATA(insert OID = 1497 ( line_perp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "628 628" _null_ _null_ _null_ _null_ line_perp _null_ _null_ _null_ ));
+DATA(insert OID = 1498 ( line_vertical PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 16 "628" _null_ _null_ _null_ _null_ line_vertical _null_ _null_ _null_ ));
+DATA(insert OID = 1499 ( line_horizontal PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 16 "628" _null_ _null_ _null_ _null_ line_horizontal _null_ _null_ _null_ ));
/* OIDS 1500 - 1599 */
-DATA(insert OID = 1530 ( length PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "601" _null_ _null_ _null_ _null_ lseg_length _null_ _null_ _null_ ));
+DATA(insert OID = 1530 ( length PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "601" _null_ _null_ _null_ _null_ lseg_length _null_ _null_ _null_ ));
DESCR("distance between endpoints");
-DATA(insert OID = 1531 ( length PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "602" _null_ _null_ _null_ _null_ path_length _null_ _null_ _null_ ));
+DATA(insert OID = 1531 ( length PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "602" _null_ _null_ _null_ _null_ path_length _null_ _null_ _null_ ));
DESCR("sum of path segments");
-DATA(insert OID = 1532 ( point PGNSP PGUID 12 1 0 0 f f f t f i 1 0 600 "601" _null_ _null_ _null_ _null_ lseg_center _null_ _null_ _null_ ));
+DATA(insert OID = 1532 ( point PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 600 "601" _null_ _null_ _null_ _null_ lseg_center _null_ _null_ _null_ ));
DESCR("center of");
-DATA(insert OID = 1533 ( point PGNSP PGUID 12 1 0 0 f f f t f i 1 0 600 "602" _null_ _null_ _null_ _null_ path_center _null_ _null_ _null_ ));
+DATA(insert OID = 1533 ( point PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 600 "602" _null_ _null_ _null_ _null_ path_center _null_ _null_ _null_ ));
DESCR("center of");
-DATA(insert OID = 1534 ( point PGNSP PGUID 12 1 0 0 f f f t f i 1 0 600 "603" _null_ _null_ _null_ _null_ box_center _null_ _null_ _null_ ));
+DATA(insert OID = 1534 ( point PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 600 "603" _null_ _null_ _null_ _null_ box_center _null_ _null_ _null_ ));
DESCR("center of");
-DATA(insert OID = 1540 ( point PGNSP PGUID 12 1 0 0 f f f t f i 1 0 600 "604" _null_ _null_ _null_ _null_ poly_center _null_ _null_ _null_ ));
+DATA(insert OID = 1540 ( point PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 600 "604" _null_ _null_ _null_ _null_ poly_center _null_ _null_ _null_ ));
DESCR("center of");
-DATA(insert OID = 1541 ( lseg PGNSP PGUID 12 1 0 0 f f f t f i 1 0 601 "603" _null_ _null_ _null_ _null_ box_diagonal _null_ _null_ _null_ ));
+DATA(insert OID = 1541 ( lseg PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 601 "603" _null_ _null_ _null_ _null_ box_diagonal _null_ _null_ _null_ ));
DESCR("diagonal of");
-DATA(insert OID = 1542 ( center PGNSP PGUID 12 1 0 0 f f f t f i 1 0 600 "603" _null_ _null_ _null_ _null_ box_center _null_ _null_ _null_ ));
+DATA(insert OID = 1542 ( center PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 600 "603" _null_ _null_ _null_ _null_ box_center _null_ _null_ _null_ ));
DESCR("center of");
-DATA(insert OID = 1543 ( center PGNSP PGUID 12 1 0 0 f f f t f i 1 0 600 "718" _null_ _null_ _null_ _null_ circle_center _null_ _null_ _null_ ));
+DATA(insert OID = 1543 ( center PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 600 "718" _null_ _null_ _null_ _null_ circle_center _null_ _null_ _null_ ));
DESCR("center of");
-DATA(insert OID = 1544 ( polygon PGNSP PGUID 14 1 0 0 f f f t f i 1 0 604 "718" _null_ _null_ _null_ _null_ "select pg_catalog.polygon(12, $1)" _null_ _null_ _null_ ));
+DATA(insert OID = 1544 ( polygon PGNSP PGUID 14 1 0 0 0 f f f t f i 1 0 604 "718" _null_ _null_ _null_ _null_ "select pg_catalog.polygon(12, $1)" _null_ _null_ _null_ ));
DESCR("convert circle to 12-vertex polygon");
-DATA(insert OID = 1545 ( npoints PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "602" _null_ _null_ _null_ _null_ path_npoints _null_ _null_ _null_ ));
+DATA(insert OID = 1545 ( npoints PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "602" _null_ _null_ _null_ _null_ path_npoints _null_ _null_ _null_ ));
DESCR("number of points");
-DATA(insert OID = 1556 ( npoints PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "604" _null_ _null_ _null_ _null_ poly_npoints _null_ _null_ _null_ ));
+DATA(insert OID = 1556 ( npoints PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "604" _null_ _null_ _null_ _null_ poly_npoints _null_ _null_ _null_ ));
DESCR("number of points");
-DATA(insert OID = 1564 ( bit_in PGNSP PGUID 12 1 0 0 f f f t f i 3 0 1560 "2275 26 23" _null_ _null_ _null_ _null_ bit_in _null_ _null_ _null_ ));
+DATA(insert OID = 1564 ( bit_in PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 1560 "2275 26 23" _null_ _null_ _null_ _null_ bit_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 1565 ( bit_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "1560" _null_ _null_ _null_ _null_ bit_out _null_ _null_ _null_ ));
+DATA(insert OID = 1565 ( bit_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "1560" _null_ _null_ _null_ _null_ bit_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2919 ( bittypmodin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1263" _null_ _null_ _null_ _null_ bittypmodin _null_ _null_ _null_ ));
+DATA(insert OID = 2919 ( bittypmodin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1263" _null_ _null_ _null_ _null_ bittypmodin _null_ _null_ _null_ ));
DESCR("I/O typmod");
-DATA(insert OID = 2920 ( bittypmodout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "23" _null_ _null_ _null_ _null_ bittypmodout _null_ _null_ _null_ ));
+DATA(insert OID = 2920 ( bittypmodout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "23" _null_ _null_ _null_ _null_ bittypmodout _null_ _null_ _null_ ));
DESCR("I/O typmod");
-DATA(insert OID = 1569 ( like PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ textlike _null_ _null_ _null_ ));
+DATA(insert OID = 1569 ( like PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ textlike _null_ _null_ _null_ ));
DESCR("matches LIKE expression");
-DATA(insert OID = 1570 ( notlike PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ textnlike _null_ _null_ _null_ ));
+DATA(insert OID = 1570 ( notlike PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ textnlike _null_ _null_ _null_ ));
DESCR("does not match LIKE expression");
-DATA(insert OID = 1571 ( like PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "19 25" _null_ _null_ _null_ _null_ namelike _null_ _null_ _null_ ));
+DATA(insert OID = 1571 ( like PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "19 25" _null_ _null_ _null_ _null_ namelike _null_ _null_ _null_ ));
DESCR("matches LIKE expression");
-DATA(insert OID = 1572 ( notlike PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "19 25" _null_ _null_ _null_ _null_ namenlike _null_ _null_ _null_ ));
+DATA(insert OID = 1572 ( notlike PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "19 25" _null_ _null_ _null_ _null_ namenlike _null_ _null_ _null_ ));
DESCR("does not match LIKE expression");
/* SEQUENCE functions */
-DATA(insert OID = 1574 ( nextval PGNSP PGUID 12 1 0 0 f f f t f v 1 0 20 "2205" _null_ _null_ _null_ _null_ nextval_oid _null_ _null_ _null_ ));
+DATA(insert OID = 1574 ( nextval PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 20 "2205" _null_ _null_ _null_ _null_ nextval_oid _null_ _null_ _null_ ));
DESCR("sequence next value");
-DATA(insert OID = 1575 ( currval PGNSP PGUID 12 1 0 0 f f f t f v 1 0 20 "2205" _null_ _null_ _null_ _null_ currval_oid _null_ _null_ _null_ ));
+DATA(insert OID = 1575 ( currval PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 20 "2205" _null_ _null_ _null_ _null_ currval_oid _null_ _null_ _null_ ));
DESCR("sequence current value");
-DATA(insert OID = 1576 ( setval PGNSP PGUID 12 1 0 0 f f f t f v 2 0 20 "2205 20" _null_ _null_ _null_ _null_ setval_oid _null_ _null_ _null_ ));
+DATA(insert OID = 1576 ( setval PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 20 "2205 20" _null_ _null_ _null_ _null_ setval_oid _null_ _null_ _null_ ));
DESCR("set sequence value");
-DATA(insert OID = 1765 ( setval PGNSP PGUID 12 1 0 0 f f f t f v 3 0 20 "2205 20 16" _null_ _null_ _null_ _null_ setval3_oid _null_ _null_ _null_ ));
+DATA(insert OID = 1765 ( setval PGNSP PGUID 12 1 0 0 0 f f f t f v 3 0 20 "2205 20 16" _null_ _null_ _null_ _null_ setval3_oid _null_ _null_ _null_ ));
DESCR("set sequence value and is_called status");
-DATA(insert OID = 3078 ( pg_sequence_parameters PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2249 "26" "{23,20,20,20,20,16}" "{i,o,o,o,o,o}" "{sequence_oid,start_value,minimum_value,maximum_value,increment,cycle_option}" _null_ pg_sequence_parameters _null_ _null_ _null_));
+DATA(insert OID = 3078 ( pg_sequence_parameters PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2249 "26" "{23,20,20,20,20,16}" "{i,o,o,o,o,o}" "{sequence_oid,start_value,minimum_value,maximum_value,increment,cycle_option}" _null_ pg_sequence_parameters _null_ _null_ _null_));
DESCR("sequence parameters, for use by information schema");
-DATA(insert OID = 1579 ( varbit_in PGNSP PGUID 12 1 0 0 f f f t f i 3 0 1562 "2275 26 23" _null_ _null_ _null_ _null_ varbit_in _null_ _null_ _null_ ));
+DATA(insert OID = 1579 ( varbit_in PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 1562 "2275 26 23" _null_ _null_ _null_ _null_ varbit_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 1580 ( varbit_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "1562" _null_ _null_ _null_ _null_ varbit_out _null_ _null_ _null_ ));
+DATA(insert OID = 1580 ( varbit_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "1562" _null_ _null_ _null_ _null_ varbit_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2902 ( varbittypmodin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1263" _null_ _null_ _null_ _null_ varbittypmodin _null_ _null_ _null_ ));
+DATA(insert OID = 2902 ( varbittypmodin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1263" _null_ _null_ _null_ _null_ varbittypmodin _null_ _null_ _null_ ));
DESCR("I/O typmod");
-DATA(insert OID = 2921 ( varbittypmodout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "23" _null_ _null_ _null_ _null_ varbittypmodout _null_ _null_ _null_ ));
+DATA(insert OID = 2921 ( varbittypmodout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "23" _null_ _null_ _null_ _null_ varbittypmodout _null_ _null_ _null_ ));
DESCR("I/O typmod");
-DATA(insert OID = 1581 ( biteq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ biteq _null_ _null_ _null_ ));
-DATA(insert OID = 1582 ( bitne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ bitne _null_ _null_ _null_ ));
-DATA(insert OID = 1592 ( bitge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ bitge _null_ _null_ _null_ ));
-DATA(insert OID = 1593 ( bitgt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ bitgt _null_ _null_ _null_ ));
-DATA(insert OID = 1594 ( bitle PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ bitle _null_ _null_ _null_ ));
-DATA(insert OID = 1595 ( bitlt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ bitlt _null_ _null_ _null_ ));
-DATA(insert OID = 1596 ( bitcmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "1560 1560" _null_ _null_ _null_ _null_ bitcmp _null_ _null_ _null_ ));
+DATA(insert OID = 1581 ( biteq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ biteq _null_ _null_ _null_ ));
+DATA(insert OID = 1582 ( bitne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ bitne _null_ _null_ _null_ ));
+DATA(insert OID = 1592 ( bitge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ bitge _null_ _null_ _null_ ));
+DATA(insert OID = 1593 ( bitgt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ bitgt _null_ _null_ _null_ ));
+DATA(insert OID = 1594 ( bitle PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ bitle _null_ _null_ _null_ ));
+DATA(insert OID = 1595 ( bitlt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ bitlt _null_ _null_ _null_ ));
+DATA(insert OID = 1596 ( bitcmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "1560 1560" _null_ _null_ _null_ _null_ bitcmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 1598 ( random PGNSP PGUID 12 1 0 0 f f f t f v 0 0 701 "" _null_ _null_ _null_ _null_ drandom _null_ _null_ _null_ ));
+DATA(insert OID = 1598 ( random PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 701 "" _null_ _null_ _null_ _null_ drandom _null_ _null_ _null_ ));
DESCR("random value");
-DATA(insert OID = 1599 ( setseed PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2278 "701" _null_ _null_ _null_ _null_ setseed _null_ _null_ _null_ ));
+DATA(insert OID = 1599 ( setseed PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "701" _null_ _null_ _null_ _null_ setseed _null_ _null_ _null_ ));
DESCR("set random seed");
/* OIDS 1600 - 1699 */
-DATA(insert OID = 1600 ( asin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dasin _null_ _null_ _null_ ));
+DATA(insert OID = 1600 ( asin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dasin _null_ _null_ _null_ ));
DESCR("arcsine");
-DATA(insert OID = 1601 ( acos PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dacos _null_ _null_ _null_ ));
+DATA(insert OID = 1601 ( acos PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dacos _null_ _null_ _null_ ));
DESCR("arccosine");
-DATA(insert OID = 1602 ( atan PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ datan _null_ _null_ _null_ ));
+DATA(insert OID = 1602 ( atan PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ datan _null_ _null_ _null_ ));
DESCR("arctangent");
-DATA(insert OID = 1603 ( atan2 PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ datan2 _null_ _null_ _null_ ));
+DATA(insert OID = 1603 ( atan2 PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ datan2 _null_ _null_ _null_ ));
DESCR("arctangent, two arguments");
-DATA(insert OID = 1604 ( sin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dsin _null_ _null_ _null_ ));
+DATA(insert OID = 1604 ( sin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dsin _null_ _null_ _null_ ));
DESCR("sine");
-DATA(insert OID = 1605 ( cos PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dcos _null_ _null_ _null_ ));
+DATA(insert OID = 1605 ( cos PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dcos _null_ _null_ _null_ ));
DESCR("cosine");
-DATA(insert OID = 1606 ( tan PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dtan _null_ _null_ _null_ ));
+DATA(insert OID = 1606 ( tan PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dtan _null_ _null_ _null_ ));
DESCR("tangent");
-DATA(insert OID = 1607 ( cot PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dcot _null_ _null_ _null_ ));
+DATA(insert OID = 1607 ( cot PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ dcot _null_ _null_ _null_ ));
DESCR("cotangent");
-DATA(insert OID = 1608 ( degrees PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ degrees _null_ _null_ _null_ ));
+DATA(insert OID = 1608 ( degrees PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ degrees _null_ _null_ _null_ ));
DESCR("radians to degrees");
-DATA(insert OID = 1609 ( radians PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ radians _null_ _null_ _null_ ));
+DATA(insert OID = 1609 ( radians PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ radians _null_ _null_ _null_ ));
DESCR("degrees to radians");
-DATA(insert OID = 1610 ( pi PGNSP PGUID 12 1 0 0 f f f t f i 0 0 701 "" _null_ _null_ _null_ _null_ dpi _null_ _null_ _null_ ));
+DATA(insert OID = 1610 ( pi PGNSP PGUID 12 1 0 0 0 f f f t f i 0 0 701 "" _null_ _null_ _null_ _null_ dpi _null_ _null_ _null_ ));
DESCR("PI");
-DATA(insert OID = 1618 ( interval_mul PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1186 "1186 701" _null_ _null_ _null_ _null_ interval_mul _null_ _null_ _null_ ));
+DATA(insert OID = 1618 ( interval_mul PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1186 "1186 701" _null_ _null_ _null_ _null_ interval_mul _null_ _null_ _null_ ));
-DATA(insert OID = 1620 ( ascii PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "25" _null_ _null_ _null_ _null_ ascii _null_ _null_ _null_ ));
+DATA(insert OID = 1620 ( ascii PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "25" _null_ _null_ _null_ _null_ ascii _null_ _null_ _null_ ));
DESCR("convert first char to int4");
-DATA(insert OID = 1621 ( chr PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "23" _null_ _null_ _null_ _null_ chr _null_ _null_ _null_ ));
+DATA(insert OID = 1621 ( chr PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "23" _null_ _null_ _null_ _null_ chr _null_ _null_ _null_ ));
DESCR("convert int4 to char");
-DATA(insert OID = 1622 ( repeat PGNSP PGUID 12 1 0 0 f f f t f i 2 0 25 "25 23" _null_ _null_ _null_ _null_ repeat _null_ _null_ _null_ ));
+DATA(insert OID = 1622 ( repeat PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 25 "25 23" _null_ _null_ _null_ _null_ repeat _null_ _null_ _null_ ));
DESCR("replicate string n times");
-DATA(insert OID = 1623 ( similar_escape PGNSP PGUID 12 1 0 0 f f f f f i 2 0 25 "25 25" _null_ _null_ _null_ _null_ similar_escape _null_ _null_ _null_ ));
+DATA(insert OID = 1623 ( similar_escape PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 25 "25 25" _null_ _null_ _null_ _null_ similar_escape _null_ _null_ _null_ ));
DESCR("convert SQL99 regexp pattern to POSIX style");
-DATA(insert OID = 1624 ( mul_d_interval PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1186 "701 1186" _null_ _null_ _null_ _null_ mul_d_interval _null_ _null_ _null_ ));
+DATA(insert OID = 1624 ( mul_d_interval PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1186 "701 1186" _null_ _null_ _null_ _null_ mul_d_interval _null_ _null_ _null_ ));
-DATA(insert OID = 1631 ( bpcharlike PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1042 25" _null_ _null_ _null_ _null_ textlike _null_ _null_ _null_ ));
-DATA(insert OID = 1632 ( bpcharnlike PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1042 25" _null_ _null_ _null_ _null_ textnlike _null_ _null_ _null_ ));
+DATA(insert OID = 1631 ( bpcharlike PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1042 25" _null_ _null_ _null_ _null_ textlike _null_ _null_ _null_ ));
+DATA(insert OID = 1632 ( bpcharnlike PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1042 25" _null_ _null_ _null_ _null_ textnlike _null_ _null_ _null_ ));
-DATA(insert OID = 1633 ( texticlike PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ texticlike _null_ _null_ _null_ ));
-DATA(insert OID = 1634 ( texticnlike PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ texticnlike _null_ _null_ _null_ ));
-DATA(insert OID = 1635 ( nameiclike PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "19 25" _null_ _null_ _null_ _null_ nameiclike _null_ _null_ _null_ ));
-DATA(insert OID = 1636 ( nameicnlike PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "19 25" _null_ _null_ _null_ _null_ nameicnlike _null_ _null_ _null_ ));
-DATA(insert OID = 1637 ( like_escape PGNSP PGUID 12 1 0 0 f f f t f i 2 0 25 "25 25" _null_ _null_ _null_ _null_ like_escape _null_ _null_ _null_ ));
+DATA(insert OID = 1633 ( texticlike PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ texticlike _null_ _null_ _null_ ));
+DATA(insert OID = 1634 ( texticnlike PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ texticnlike _null_ _null_ _null_ ));
+DATA(insert OID = 1635 ( nameiclike PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "19 25" _null_ _null_ _null_ _null_ nameiclike _null_ _null_ _null_ ));
+DATA(insert OID = 1636 ( nameicnlike PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "19 25" _null_ _null_ _null_ _null_ nameicnlike _null_ _null_ _null_ ));
+DATA(insert OID = 1637 ( like_escape PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 25 "25 25" _null_ _null_ _null_ _null_ like_escape _null_ _null_ _null_ ));
DESCR("convert LIKE pattern to use backslash escapes");
-DATA(insert OID = 1656 ( bpcharicregexeq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1042 25" _null_ _null_ _null_ _null_ texticregexeq _null_ _null_ _null_ ));
-DATA(insert OID = 1657 ( bpcharicregexne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1042 25" _null_ _null_ _null_ _null_ texticregexne _null_ _null_ _null_ ));
-DATA(insert OID = 1658 ( bpcharregexeq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1042 25" _null_ _null_ _null_ _null_ textregexeq _null_ _null_ _null_ ));
-DATA(insert OID = 1659 ( bpcharregexne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1042 25" _null_ _null_ _null_ _null_ textregexne _null_ _null_ _null_ ));
-DATA(insert OID = 1660 ( bpchariclike PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1042 25" _null_ _null_ _null_ _null_ texticlike _null_ _null_ _null_ ));
-DATA(insert OID = 1661 ( bpcharicnlike PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1042 25" _null_ _null_ _null_ _null_ texticnlike _null_ _null_ _null_ ));
+DATA(insert OID = 1656 ( bpcharicregexeq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1042 25" _null_ _null_ _null_ _null_ texticregexeq _null_ _null_ _null_ ));
+DATA(insert OID = 1657 ( bpcharicregexne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1042 25" _null_ _null_ _null_ _null_ texticregexne _null_ _null_ _null_ ));
+DATA(insert OID = 1658 ( bpcharregexeq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1042 25" _null_ _null_ _null_ _null_ textregexeq _null_ _null_ _null_ ));
+DATA(insert OID = 1659 ( bpcharregexne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1042 25" _null_ _null_ _null_ _null_ textregexne _null_ _null_ _null_ ));
+DATA(insert OID = 1660 ( bpchariclike PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1042 25" _null_ _null_ _null_ _null_ texticlike _null_ _null_ _null_ ));
+DATA(insert OID = 1661 ( bpcharicnlike PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1042 25" _null_ _null_ _null_ _null_ texticnlike _null_ _null_ _null_ ));
/* Oracle Compatibility Related Functions - By Edmund Mergl <[email protected]> */
-DATA(insert OID = 868 ( strpos PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "25 25" _null_ _null_ _null_ _null_ textpos _null_ _null_ _null_ ));
+DATA(insert OID = 868 ( strpos PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "25 25" _null_ _null_ _null_ _null_ textpos _null_ _null_ _null_ ));
DESCR("position of substring");
-DATA(insert OID = 870 ( lower PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ lower _null_ _null_ _null_ ));
+DATA(insert OID = 870 ( lower PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ lower _null_ _null_ _null_ ));
DESCR("lowercase");
-DATA(insert OID = 871 ( upper PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ upper _null_ _null_ _null_ ));
+DATA(insert OID = 871 ( upper PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ upper _null_ _null_ _null_ ));
DESCR("uppercase");
-DATA(insert OID = 872 ( initcap PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ initcap _null_ _null_ _null_ ));
+DATA(insert OID = 872 ( initcap PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ initcap _null_ _null_ _null_ ));
DESCR("capitalize each word");
-DATA(insert OID = 873 ( lpad PGNSP PGUID 12 1 0 0 f f f t f i 3 0 25 "25 23 25" _null_ _null_ _null_ _null_ lpad _null_ _null_ _null_ ));
+DATA(insert OID = 873 ( lpad PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 25 "25 23 25" _null_ _null_ _null_ _null_ lpad _null_ _null_ _null_ ));
DESCR("left-pad string to length");
-DATA(insert OID = 874 ( rpad PGNSP PGUID 12 1 0 0 f f f t f i 3 0 25 "25 23 25" _null_ _null_ _null_ _null_ rpad _null_ _null_ _null_ ));
+DATA(insert OID = 874 ( rpad PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 25 "25 23 25" _null_ _null_ _null_ _null_ rpad _null_ _null_ _null_ ));
DESCR("right-pad string to length");
-DATA(insert OID = 875 ( ltrim PGNSP PGUID 12 1 0 0 f f f t f i 2 0 25 "25 25" _null_ _null_ _null_ _null_ ltrim _null_ _null_ _null_ ));
+DATA(insert OID = 875 ( ltrim PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 25 "25 25" _null_ _null_ _null_ _null_ ltrim _null_ _null_ _null_ ));
DESCR("trim selected characters from left end of string");
-DATA(insert OID = 876 ( rtrim PGNSP PGUID 12 1 0 0 f f f t f i 2 0 25 "25 25" _null_ _null_ _null_ _null_ rtrim _null_ _null_ _null_ ));
+DATA(insert OID = 876 ( rtrim PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 25 "25 25" _null_ _null_ _null_ _null_ rtrim _null_ _null_ _null_ ));
DESCR("trim selected characters from right end of string");
-DATA(insert OID = 877 ( substr PGNSP PGUID 12 1 0 0 f f f t f i 3 0 25 "25 23 23" _null_ _null_ _null_ _null_ text_substr _null_ _null_ _null_ ));
+DATA(insert OID = 877 ( substr PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 25 "25 23 23" _null_ _null_ _null_ _null_ text_substr _null_ _null_ _null_ ));
DESCR("extract portion of string");
-DATA(insert OID = 878 ( translate PGNSP PGUID 12 1 0 0 f f f t f i 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ translate _null_ _null_ _null_ ));
+DATA(insert OID = 878 ( translate PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ translate _null_ _null_ _null_ ));
DESCR("map a set of characters appearing in string");
-DATA(insert OID = 879 ( lpad PGNSP PGUID 14 1 0 0 f f f t f i 2 0 25 "25 23" _null_ _null_ _null_ _null_ "select pg_catalog.lpad($1, $2, '' '')" _null_ _null_ _null_ ));
+DATA(insert OID = 879 ( lpad PGNSP PGUID 14 1 0 0 0 f f f t f i 2 0 25 "25 23" _null_ _null_ _null_ _null_ "select pg_catalog.lpad($1, $2, '' '')" _null_ _null_ _null_ ));
DESCR("left-pad string to length");
-DATA(insert OID = 880 ( rpad PGNSP PGUID 14 1 0 0 f f f t f i 2 0 25 "25 23" _null_ _null_ _null_ _null_ "select pg_catalog.rpad($1, $2, '' '')" _null_ _null_ _null_ ));
+DATA(insert OID = 880 ( rpad PGNSP PGUID 14 1 0 0 0 f f f t f i 2 0 25 "25 23" _null_ _null_ _null_ _null_ "select pg_catalog.rpad($1, $2, '' '')" _null_ _null_ _null_ ));
DESCR("right-pad string to length");
-DATA(insert OID = 881 ( ltrim PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ ltrim1 _null_ _null_ _null_ ));
+DATA(insert OID = 881 ( ltrim PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ ltrim1 _null_ _null_ _null_ ));
DESCR("trim spaces from left end of string");
-DATA(insert OID = 882 ( rtrim PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ rtrim1 _null_ _null_ _null_ ));
+DATA(insert OID = 882 ( rtrim PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ rtrim1 _null_ _null_ _null_ ));
DESCR("trim spaces from right end of string");
-DATA(insert OID = 883 ( substr PGNSP PGUID 12 1 0 0 f f f t f i 2 0 25 "25 23" _null_ _null_ _null_ _null_ text_substr_no_len _null_ _null_ _null_ ));
+DATA(insert OID = 883 ( substr PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 25 "25 23" _null_ _null_ _null_ _null_ text_substr_no_len _null_ _null_ _null_ ));
DESCR("extract portion of string");
-DATA(insert OID = 884 ( btrim PGNSP PGUID 12 1 0 0 f f f t f i 2 0 25 "25 25" _null_ _null_ _null_ _null_ btrim _null_ _null_ _null_ ));
+DATA(insert OID = 884 ( btrim PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 25 "25 25" _null_ _null_ _null_ _null_ btrim _null_ _null_ _null_ ));
DESCR("trim selected characters from both ends of string");
-DATA(insert OID = 885 ( btrim PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ btrim1 _null_ _null_ _null_ ));
+DATA(insert OID = 885 ( btrim PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ btrim1 _null_ _null_ _null_ ));
DESCR("trim spaces from both ends of string");
-DATA(insert OID = 936 ( substring PGNSP PGUID 12 1 0 0 f f f t f i 3 0 25 "25 23 23" _null_ _null_ _null_ _null_ text_substr _null_ _null_ _null_ ));
+DATA(insert OID = 936 ( substring PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 25 "25 23 23" _null_ _null_ _null_ _null_ text_substr _null_ _null_ _null_ ));
DESCR("extract portion of string");
-DATA(insert OID = 937 ( substring PGNSP PGUID 12 1 0 0 f f f t f i 2 0 25 "25 23" _null_ _null_ _null_ _null_ text_substr_no_len _null_ _null_ _null_ ));
+DATA(insert OID = 937 ( substring PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 25 "25 23" _null_ _null_ _null_ _null_ text_substr_no_len _null_ _null_ _null_ ));
DESCR("extract portion of string");
-DATA(insert OID = 2087 ( replace PGNSP PGUID 12 1 0 0 f f f t f i 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ replace_text _null_ _null_ _null_ ));
+DATA(insert OID = 2087 ( replace PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ replace_text _null_ _null_ _null_ ));
DESCR("replace all occurrences in string of old_substr with new_substr");
-DATA(insert OID = 2284 ( regexp_replace PGNSP PGUID 12 1 0 0 f f f t f i 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ textregexreplace_noopt _null_ _null_ _null_ ));
+DATA(insert OID = 2284 ( regexp_replace PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ textregexreplace_noopt _null_ _null_ _null_ ));
DESCR("replace text using regexp");
-DATA(insert OID = 2285 ( regexp_replace PGNSP PGUID 12 1 0 0 f f f t f i 4 0 25 "25 25 25 25" _null_ _null_ _null_ _null_ textregexreplace _null_ _null_ _null_ ));
+DATA(insert OID = 2285 ( regexp_replace PGNSP PGUID 12 1 0 0 0 f f f t f i 4 0 25 "25 25 25 25" _null_ _null_ _null_ _null_ textregexreplace _null_ _null_ _null_ ));
DESCR("replace text using regexp");
-DATA(insert OID = 2763 ( regexp_matches PGNSP PGUID 12 1 1 0 f f f t t i 2 0 1009 "25 25" _null_ _null_ _null_ _null_ regexp_matches_no_flags _null_ _null_ _null_ ));
+DATA(insert OID = 2763 ( regexp_matches PGNSP PGUID 12 1 1 0 0 f f f t t i 2 0 1009 "25 25" _null_ _null_ _null_ _null_ regexp_matches_no_flags _null_ _null_ _null_ ));
DESCR("find all match groups for regexp");
-DATA(insert OID = 2764 ( regexp_matches PGNSP PGUID 12 1 10 0 f f f t t i 3 0 1009 "25 25 25" _null_ _null_ _null_ _null_ regexp_matches _null_ _null_ _null_ ));
+DATA(insert OID = 2764 ( regexp_matches PGNSP PGUID 12 1 10 0 0 f f f t t i 3 0 1009 "25 25 25" _null_ _null_ _null_ _null_ regexp_matches _null_ _null_ _null_ ));
DESCR("find all match groups for regexp");
-DATA(insert OID = 2088 ( split_part PGNSP PGUID 12 1 0 0 f f f t f i 3 0 25 "25 25 23" _null_ _null_ _null_ _null_ split_text _null_ _null_ _null_ ));
+DATA(insert OID = 2088 ( split_part PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 25 "25 25 23" _null_ _null_ _null_ _null_ split_text _null_ _null_ _null_ ));
DESCR("split string by field_sep and return field_num");
-DATA(insert OID = 2765 ( regexp_split_to_table PGNSP PGUID 12 1 1000 0 f f f t t i 2 0 25 "25 25" _null_ _null_ _null_ _null_ regexp_split_to_table_no_flags _null_ _null_ _null_ ));
+DATA(insert OID = 2765 ( regexp_split_to_table PGNSP PGUID 12 1 1000 0 0 f f f t t i 2 0 25 "25 25" _null_ _null_ _null_ _null_ regexp_split_to_table_no_flags _null_ _null_ _null_ ));
DESCR("split string by pattern");
-DATA(insert OID = 2766 ( regexp_split_to_table PGNSP PGUID 12 1 1000 0 f f f t t i 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ regexp_split_to_table _null_ _null_ _null_ ));
+DATA(insert OID = 2766 ( regexp_split_to_table PGNSP PGUID 12 1 1000 0 0 f f f t t i 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ regexp_split_to_table _null_ _null_ _null_ ));
DESCR("split string by pattern");
-DATA(insert OID = 2767 ( regexp_split_to_array PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1009 "25 25" _null_ _null_ _null_ _null_ regexp_split_to_array_no_flags _null_ _null_ _null_ ));
+DATA(insert OID = 2767 ( regexp_split_to_array PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1009 "25 25" _null_ _null_ _null_ _null_ regexp_split_to_array_no_flags _null_ _null_ _null_ ));
DESCR("split string by pattern");
-DATA(insert OID = 2768 ( regexp_split_to_array PGNSP PGUID 12 1 0 0 f f f t f i 3 0 1009 "25 25 25" _null_ _null_ _null_ _null_ regexp_split_to_array _null_ _null_ _null_ ));
+DATA(insert OID = 2768 ( regexp_split_to_array PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 1009 "25 25 25" _null_ _null_ _null_ _null_ regexp_split_to_array _null_ _null_ _null_ ));
DESCR("split string by pattern");
-DATA(insert OID = 2089 ( to_hex PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "23" _null_ _null_ _null_ _null_ to_hex32 _null_ _null_ _null_ ));
+DATA(insert OID = 2089 ( to_hex PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "23" _null_ _null_ _null_ _null_ to_hex32 _null_ _null_ _null_ ));
DESCR("convert int4 number to hex");
-DATA(insert OID = 2090 ( to_hex PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "20" _null_ _null_ _null_ _null_ to_hex64 _null_ _null_ _null_ ));
+DATA(insert OID = 2090 ( to_hex PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "20" _null_ _null_ _null_ _null_ to_hex64 _null_ _null_ _null_ ));
DESCR("convert int8 number to hex");
/* for character set encoding support */
/* return database encoding name */
-DATA(insert OID = 1039 ( getdatabaseencoding PGNSP PGUID 12 1 0 0 f f f t f s 0 0 19 "" _null_ _null_ _null_ _null_ getdatabaseencoding _null_ _null_ _null_ ));
+DATA(insert OID = 1039 ( getdatabaseencoding PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 19 "" _null_ _null_ _null_ _null_ getdatabaseencoding _null_ _null_ _null_ ));
DESCR("encoding name of current database");
/* return client encoding name i.e. session encoding */
-DATA(insert OID = 810 ( pg_client_encoding PGNSP PGUID 12 1 0 0 f f f t f s 0 0 19 "" _null_ _null_ _null_ _null_ pg_client_encoding _null_ _null_ _null_ ));
+DATA(insert OID = 810 ( pg_client_encoding PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 19 "" _null_ _null_ _null_ _null_ pg_client_encoding _null_ _null_ _null_ ));
DESCR("encoding name of current database");
-DATA(insert OID = 1713 ( length PGNSP PGUID 12 1 0 0 f f f t f s 2 0 23 "17 19" _null_ _null_ _null_ _null_ length_in_encoding _null_ _null_ _null_ ));
+DATA(insert OID = 1713 ( length PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 23 "17 19" _null_ _null_ _null_ _null_ length_in_encoding _null_ _null_ _null_ ));
DESCR("length of string in specified encoding");
-DATA(insert OID = 1714 ( convert_from PGNSP PGUID 12 1 0 0 f f f t f s 2 0 25 "17 19" _null_ _null_ _null_ _null_ pg_convert_from _null_ _null_ _null_ ));
+DATA(insert OID = 1714 ( convert_from PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 25 "17 19" _null_ _null_ _null_ _null_ pg_convert_from _null_ _null_ _null_ ));
DESCR("convert string with specified source encoding name");
-DATA(insert OID = 1717 ( convert_to PGNSP PGUID 12 1 0 0 f f f t f s 2 0 17 "25 19" _null_ _null_ _null_ _null_ pg_convert_to _null_ _null_ _null_ ));
+DATA(insert OID = 1717 ( convert_to PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 17 "25 19" _null_ _null_ _null_ _null_ pg_convert_to _null_ _null_ _null_ ));
DESCR("convert string with specified destination encoding name");
-DATA(insert OID = 1813 ( convert PGNSP PGUID 12 1 0 0 f f f t f s 3 0 17 "17 19 19" _null_ _null_ _null_ _null_ pg_convert _null_ _null_ _null_ ));
+DATA(insert OID = 1813 ( convert PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 17 "17 19 19" _null_ _null_ _null_ _null_ pg_convert _null_ _null_ _null_ ));
DESCR("convert string with specified encoding names");
-DATA(insert OID = 1264 ( pg_char_to_encoding PGNSP PGUID 12 1 0 0 f f f t f s 1 0 23 "19" _null_ _null_ _null_ _null_ PG_char_to_encoding _null_ _null_ _null_ ));
+DATA(insert OID = 1264 ( pg_char_to_encoding PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 23 "19" _null_ _null_ _null_ _null_ PG_char_to_encoding _null_ _null_ _null_ ));
DESCR("convert encoding name to encoding id");
-DATA(insert OID = 1597 ( pg_encoding_to_char PGNSP PGUID 12 1 0 0 f f f t f s 1 0 19 "23" _null_ _null_ _null_ _null_ PG_encoding_to_char _null_ _null_ _null_ ));
+DATA(insert OID = 1597 ( pg_encoding_to_char PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 19 "23" _null_ _null_ _null_ _null_ PG_encoding_to_char _null_ _null_ _null_ ));
DESCR("convert encoding id to encoding name");
-DATA(insert OID = 2319 ( pg_encoding_max_length PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "23" _null_ _null_ _null_ _null_ pg_encoding_max_length_sql _null_ _null_ _null_ ));
+DATA(insert OID = 2319 ( pg_encoding_max_length PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "23" _null_ _null_ _null_ _null_ pg_encoding_max_length_sql _null_ _null_ _null_ ));
DESCR("maximum octet length of a character in given encoding");
-DATA(insert OID = 1638 ( oidgt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "26 26" _null_ _null_ _null_ _null_ oidgt _null_ _null_ _null_ ));
-DATA(insert OID = 1639 ( oidge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "26 26" _null_ _null_ _null_ _null_ oidge _null_ _null_ _null_ ));
+DATA(insert OID = 1638 ( oidgt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "26 26" _null_ _null_ _null_ _null_ oidgt _null_ _null_ _null_ ));
+DATA(insert OID = 1639 ( oidge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "26 26" _null_ _null_ _null_ _null_ oidge _null_ _null_ _null_ ));
/* System-view support functions */
-DATA(insert OID = 1573 ( pg_get_ruledef PGNSP PGUID 12 1 0 0 f f f t f s 1 0 25 "26" _null_ _null_ _null_ _null_ pg_get_ruledef _null_ _null_ _null_ ));
+DATA(insert OID = 1573 ( pg_get_ruledef PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 25 "26" _null_ _null_ _null_ _null_ pg_get_ruledef _null_ _null_ _null_ ));
DESCR("source text of a rule");
-DATA(insert OID = 1640 ( pg_get_viewdef PGNSP PGUID 12 1 0 0 f f f t f s 1 0 25 "25" _null_ _null_ _null_ _null_ pg_get_viewdef_name _null_ _null_ _null_ ));
+DATA(insert OID = 1640 ( pg_get_viewdef PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 25 "25" _null_ _null_ _null_ _null_ pg_get_viewdef_name _null_ _null_ _null_ ));
DESCR("select statement of a view");
-DATA(insert OID = 1641 ( pg_get_viewdef PGNSP PGUID 12 1 0 0 f f f t f s 1 0 25 "26" _null_ _null_ _null_ _null_ pg_get_viewdef _null_ _null_ _null_ ));
+DATA(insert OID = 1641 ( pg_get_viewdef PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 25 "26" _null_ _null_ _null_ _null_ pg_get_viewdef _null_ _null_ _null_ ));
DESCR("select statement of a view");
-DATA(insert OID = 1642 ( pg_get_userbyid PGNSP PGUID 12 1 0 0 f f f t f s 1 0 19 "26" _null_ _null_ _null_ _null_ pg_get_userbyid _null_ _null_ _null_ ));
+DATA(insert OID = 1642 ( pg_get_userbyid PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 19 "26" _null_ _null_ _null_ _null_ pg_get_userbyid _null_ _null_ _null_ ));
DESCR("role name by OID (with fallback)");
-DATA(insert OID = 1643 ( pg_get_indexdef PGNSP PGUID 12 1 0 0 f f f t f s 1 0 25 "26" _null_ _null_ _null_ _null_ pg_get_indexdef _null_ _null_ _null_ ));
+DATA(insert OID = 1643 ( pg_get_indexdef PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 25 "26" _null_ _null_ _null_ _null_ pg_get_indexdef _null_ _null_ _null_ ));
DESCR("index description");
-DATA(insert OID = 1662 ( pg_get_triggerdef PGNSP PGUID 12 1 0 0 f f f t f s 1 0 25 "26" _null_ _null_ _null_ _null_ pg_get_triggerdef _null_ _null_ _null_ ));
+DATA(insert OID = 1662 ( pg_get_triggerdef PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 25 "26" _null_ _null_ _null_ _null_ pg_get_triggerdef _null_ _null_ _null_ ));
DESCR("trigger description");
-DATA(insert OID = 1387 ( pg_get_constraintdef PGNSP PGUID 12 1 0 0 f f f t f s 1 0 25 "26" _null_ _null_ _null_ _null_ pg_get_constraintdef _null_ _null_ _null_ ));
+DATA(insert OID = 1387 ( pg_get_constraintdef PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 25 "26" _null_ _null_ _null_ _null_ pg_get_constraintdef _null_ _null_ _null_ ));
DESCR("constraint description");
-DATA(insert OID = 1716 ( pg_get_expr PGNSP PGUID 12 1 0 0 f f f t f s 2 0 25 "194 26" _null_ _null_ _null_ _null_ pg_get_expr _null_ _null_ _null_ ));
+DATA(insert OID = 1716 ( pg_get_expr PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 25 "194 26" _null_ _null_ _null_ _null_ pg_get_expr _null_ _null_ _null_ ));
DESCR("deparse an encoded expression");
-DATA(insert OID = 1665 ( pg_get_serial_sequence PGNSP PGUID 12 1 0 0 f f f t f s 2 0 25 "25 25" _null_ _null_ _null_ _null_ pg_get_serial_sequence _null_ _null_ _null_ ));
+DATA(insert OID = 1665 ( pg_get_serial_sequence PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 25 "25 25" _null_ _null_ _null_ _null_ pg_get_serial_sequence _null_ _null_ _null_ ));
DESCR("name of sequence for a serial column");
-DATA(insert OID = 2098 ( pg_get_functiondef PGNSP PGUID 12 1 0 0 f f f t f s 1 0 25 "26" _null_ _null_ _null_ _null_ pg_get_functiondef _null_ _null_ _null_ ));
+DATA(insert OID = 2098 ( pg_get_functiondef PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 25 "26" _null_ _null_ _null_ _null_ pg_get_functiondef _null_ _null_ _null_ ));
DESCR("definition of a function");
-DATA(insert OID = 2162 ( pg_get_function_arguments PGNSP PGUID 12 1 0 0 f f f t f s 1 0 25 "26" _null_ _null_ _null_ _null_ pg_get_function_arguments _null_ _null_ _null_ ));
+DATA(insert OID = 2162 ( pg_get_function_arguments PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 25 "26" _null_ _null_ _null_ _null_ pg_get_function_arguments _null_ _null_ _null_ ));
DESCR("argument list of a function");
-DATA(insert OID = 2232 ( pg_get_function_identity_arguments PGNSP PGUID 12 1 0 0 f f f t f s 1 0 25 "26" _null_ _null_ _null_ _null_ pg_get_function_identity_arguments _null_ _null_ _null_ ));
+DATA(insert OID = 2232 ( pg_get_function_identity_arguments PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 25 "26" _null_ _null_ _null_ _null_ pg_get_function_identity_arguments _null_ _null_ _null_ ));
DESCR("identity argument list of a function");
-DATA(insert OID = 2165 ( pg_get_function_result PGNSP PGUID 12 1 0 0 f f f t f s 1 0 25 "26" _null_ _null_ _null_ _null_ pg_get_function_result _null_ _null_ _null_ ));
+DATA(insert OID = 2165 ( pg_get_function_result PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 25 "26" _null_ _null_ _null_ _null_ pg_get_function_result _null_ _null_ _null_ ));
DESCR("result type of a function");
-DATA(insert OID = 1686 ( pg_get_keywords PGNSP PGUID 12 10 400 0 f f f t t s 0 0 2249 "" "{25,18,25}" "{o,o,o}" "{word,catcode,catdesc}" _null_ pg_get_keywords _null_ _null_ _null_ ));
+DATA(insert OID = 1686 ( pg_get_keywords PGNSP PGUID 12 10 400 0 0 f f f t t s 0 0 2249 "" "{25,18,25}" "{o,o,o}" "{word,catcode,catdesc}" _null_ pg_get_keywords _null_ _null_ _null_ ));
DESCR("list of SQL keywords");
-DATA(insert OID = 2289 ( pg_options_to_table PGNSP PGUID 12 1 3 0 f f f t t s 1 0 2249 "1009" "{1009,25,25}" "{i,o,o}" "{options_array,option_name,option_value}" _null_ pg_options_to_table _null_ _null_ _null_ ));
+DATA(insert OID = 2289 ( pg_options_to_table PGNSP PGUID 12 1 3 0 0 f f f t t s 1 0 2249 "1009" "{1009,25,25}" "{i,o,o}" "{options_array,option_name,option_value}" _null_ pg_options_to_table _null_ _null_ _null_ ));
DESCR("convert generic options array to name/value table");
-DATA(insert OID = 1619 ( pg_typeof PGNSP PGUID 12 1 0 0 f f f f f s 1 0 2206 "2276" _null_ _null_ _null_ _null_ pg_typeof _null_ _null_ _null_ ));
+DATA(insert OID = 1619 ( pg_typeof PGNSP PGUID 12 1 0 0 0 f f f f f s 1 0 2206 "2276" _null_ _null_ _null_ _null_ pg_typeof _null_ _null_ _null_ ));
DESCR("type of the argument");
/* Deferrable unique constraint trigger */
-DATA(insert OID = 1250 ( unique_key_recheck PGNSP PGUID 12 1 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ unique_key_recheck _null_ _null_ _null_ ));
+DATA(insert OID = 1250 ( unique_key_recheck PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ unique_key_recheck _null_ _null_ _null_ ));
DESCR("deferred UNIQUE constraint check");
/* Generic referential integrity constraint triggers */
-DATA(insert OID = 1644 ( RI_FKey_check_ins PGNSP PGUID 12 1 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_check_ins _null_ _null_ _null_ ));
+DATA(insert OID = 1644 ( RI_FKey_check_ins PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_check_ins _null_ _null_ _null_ ));
DESCR("referential integrity FOREIGN KEY ... REFERENCES");
-DATA(insert OID = 1645 ( RI_FKey_check_upd PGNSP PGUID 12 1 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_check_upd _null_ _null_ _null_ ));
+DATA(insert OID = 1645 ( RI_FKey_check_upd PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_check_upd _null_ _null_ _null_ ));
DESCR("referential integrity FOREIGN KEY ... REFERENCES");
-DATA(insert OID = 1646 ( RI_FKey_cascade_del PGNSP PGUID 12 1 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_cascade_del _null_ _null_ _null_ ));
+DATA(insert OID = 1646 ( RI_FKey_cascade_del PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_cascade_del _null_ _null_ _null_ ));
DESCR("referential integrity ON DELETE CASCADE");
-DATA(insert OID = 1647 ( RI_FKey_cascade_upd PGNSP PGUID 12 1 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_cascade_upd _null_ _null_ _null_ ));
+DATA(insert OID = 1647 ( RI_FKey_cascade_upd PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_cascade_upd _null_ _null_ _null_ ));
DESCR("referential integrity ON UPDATE CASCADE");
-DATA(insert OID = 1648 ( RI_FKey_restrict_del PGNSP PGUID 12 1 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_restrict_del _null_ _null_ _null_ ));
+DATA(insert OID = 1648 ( RI_FKey_restrict_del PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_restrict_del _null_ _null_ _null_ ));
DESCR("referential integrity ON DELETE RESTRICT");
-DATA(insert OID = 1649 ( RI_FKey_restrict_upd PGNSP PGUID 12 1 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_restrict_upd _null_ _null_ _null_ ));
+DATA(insert OID = 1649 ( RI_FKey_restrict_upd PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_restrict_upd _null_ _null_ _null_ ));
DESCR("referential integrity ON UPDATE RESTRICT");
-DATA(insert OID = 1650 ( RI_FKey_setnull_del PGNSP PGUID 12 1 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_setnull_del _null_ _null_ _null_ ));
+DATA(insert OID = 1650 ( RI_FKey_setnull_del PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_setnull_del _null_ _null_ _null_ ));
DESCR("referential integrity ON DELETE SET NULL");
-DATA(insert OID = 1651 ( RI_FKey_setnull_upd PGNSP PGUID 12 1 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_setnull_upd _null_ _null_ _null_ ));
+DATA(insert OID = 1651 ( RI_FKey_setnull_upd PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_setnull_upd _null_ _null_ _null_ ));
DESCR("referential integrity ON UPDATE SET NULL");
-DATA(insert OID = 1652 ( RI_FKey_setdefault_del PGNSP PGUID 12 1 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_setdefault_del _null_ _null_ _null_ ));
+DATA(insert OID = 1652 ( RI_FKey_setdefault_del PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_setdefault_del _null_ _null_ _null_ ));
DESCR("referential integrity ON DELETE SET DEFAULT");
-DATA(insert OID = 1653 ( RI_FKey_setdefault_upd PGNSP PGUID 12 1 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_setdefault_upd _null_ _null_ _null_ ));
+DATA(insert OID = 1653 ( RI_FKey_setdefault_upd PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_setdefault_upd _null_ _null_ _null_ ));
DESCR("referential integrity ON UPDATE SET DEFAULT");
-DATA(insert OID = 1654 ( RI_FKey_noaction_del PGNSP PGUID 12 1 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_noaction_del _null_ _null_ _null_ ));
+DATA(insert OID = 1654 ( RI_FKey_noaction_del PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_noaction_del _null_ _null_ _null_ ));
DESCR("referential integrity ON DELETE NO ACTION");
-DATA(insert OID = 1655 ( RI_FKey_noaction_upd PGNSP PGUID 12 1 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_noaction_upd _null_ _null_ _null_ ));
+DATA(insert OID = 1655 ( RI_FKey_noaction_upd PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 2279 "" _null_ _null_ _null_ _null_ RI_FKey_noaction_upd _null_ _null_ _null_ ));
DESCR("referential integrity ON UPDATE NO ACTION");
-DATA(insert OID = 1666 ( varbiteq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ biteq _null_ _null_ _null_ ));
-DATA(insert OID = 1667 ( varbitne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ bitne _null_ _null_ _null_ ));
-DATA(insert OID = 1668 ( varbitge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ bitge _null_ _null_ _null_ ));
-DATA(insert OID = 1669 ( varbitgt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ bitgt _null_ _null_ _null_ ));
-DATA(insert OID = 1670 ( varbitle PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ bitle _null_ _null_ _null_ ));
-DATA(insert OID = 1671 ( varbitlt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ bitlt _null_ _null_ _null_ ));
-DATA(insert OID = 1672 ( varbitcmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "1562 1562" _null_ _null_ _null_ _null_ bitcmp _null_ _null_ _null_ ));
+DATA(insert OID = 1666 ( varbiteq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ biteq _null_ _null_ _null_ ));
+DATA(insert OID = 1667 ( varbitne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ bitne _null_ _null_ _null_ ));
+DATA(insert OID = 1668 ( varbitge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ bitge _null_ _null_ _null_ ));
+DATA(insert OID = 1669 ( varbitgt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ bitgt _null_ _null_ _null_ ));
+DATA(insert OID = 1670 ( varbitle PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ bitle _null_ _null_ _null_ ));
+DATA(insert OID = 1671 ( varbitlt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ bitlt _null_ _null_ _null_ ));
+DATA(insert OID = 1672 ( varbitcmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "1562 1562" _null_ _null_ _null_ _null_ bitcmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 1673 ( bitand PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1560 "1560 1560" _null_ _null_ _null_ _null_ bit_and _null_ _null_ _null_ ));
-DATA(insert OID = 1674 ( bitor PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1560 "1560 1560" _null_ _null_ _null_ _null_ bit_or _null_ _null_ _null_ ));
-DATA(insert OID = 1675 ( bitxor PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1560 "1560 1560" _null_ _null_ _null_ _null_ bitxor _null_ _null_ _null_ ));
-DATA(insert OID = 1676 ( bitnot PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1560 "1560" _null_ _null_ _null_ _null_ bitnot _null_ _null_ _null_ ));
-DATA(insert OID = 1677 ( bitshiftleft PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1560 "1560 23" _null_ _null_ _null_ _null_ bitshiftleft _null_ _null_ _null_ ));
-DATA(insert OID = 1678 ( bitshiftright PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1560 "1560 23" _null_ _null_ _null_ _null_ bitshiftright _null_ _null_ _null_ ));
-DATA(insert OID = 1679 ( bitcat PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1562 "1562 1562" _null_ _null_ _null_ _null_ bitcat _null_ _null_ _null_ ));
-DATA(insert OID = 1680 ( substring PGNSP PGUID 12 1 0 0 f f f t f i 3 0 1560 "1560 23 23" _null_ _null_ _null_ _null_ bitsubstr _null_ _null_ _null_ ));
+DATA(insert OID = 1673 ( bitand PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1560 "1560 1560" _null_ _null_ _null_ _null_ bit_and _null_ _null_ _null_ ));
+DATA(insert OID = 1674 ( bitor PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1560 "1560 1560" _null_ _null_ _null_ _null_ bit_or _null_ _null_ _null_ ));
+DATA(insert OID = 1675 ( bitxor PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1560 "1560 1560" _null_ _null_ _null_ _null_ bitxor _null_ _null_ _null_ ));
+DATA(insert OID = 1676 ( bitnot PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1560 "1560" _null_ _null_ _null_ _null_ bitnot _null_ _null_ _null_ ));
+DATA(insert OID = 1677 ( bitshiftleft PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1560 "1560 23" _null_ _null_ _null_ _null_ bitshiftleft _null_ _null_ _null_ ));
+DATA(insert OID = 1678 ( bitshiftright PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1560 "1560 23" _null_ _null_ _null_ _null_ bitshiftright _null_ _null_ _null_ ));
+DATA(insert OID = 1679 ( bitcat PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1562 "1562 1562" _null_ _null_ _null_ _null_ bitcat _null_ _null_ _null_ ));
+DATA(insert OID = 1680 ( substring PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 1560 "1560 23 23" _null_ _null_ _null_ _null_ bitsubstr _null_ _null_ _null_ ));
DESCR("extract portion of bitstring");
-DATA(insert OID = 1681 ( length PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1560" _null_ _null_ _null_ _null_ bitlength _null_ _null_ _null_ ));
+DATA(insert OID = 1681 ( length PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1560" _null_ _null_ _null_ _null_ bitlength _null_ _null_ _null_ ));
DESCR("bitstring length");
-DATA(insert OID = 1682 ( octet_length PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1560" _null_ _null_ _null_ _null_ bitoctetlength _null_ _null_ _null_ ));
+DATA(insert OID = 1682 ( octet_length PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1560" _null_ _null_ _null_ _null_ bitoctetlength _null_ _null_ _null_ ));
DESCR("octet length");
-DATA(insert OID = 1683 ( bit PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1560 "23 23" _null_ _null_ _null_ _null_ bitfromint4 _null_ _null_ _null_ ));
+DATA(insert OID = 1683 ( bit PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1560 "23 23" _null_ _null_ _null_ _null_ bitfromint4 _null_ _null_ _null_ ));
DESCR("convert int4 to bitstring");
-DATA(insert OID = 1684 ( int4 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1560" _null_ _null_ _null_ _null_ bittoint4 _null_ _null_ _null_ ));
+DATA(insert OID = 1684 ( int4 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1560" _null_ _null_ _null_ _null_ bittoint4 _null_ _null_ _null_ ));
DESCR("convert bitstring to int4");
-DATA(insert OID = 1685 ( bit PGNSP PGUID 12 1 0 0 f f f t f i 3 0 1560 "1560 23 16" _null_ _null_ _null_ _null_ bit _null_ _null_ _null_ ));
+DATA(insert OID = 1685 ( bit PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 1560 "1560 23 16" _null_ _null_ _null_ _null_ bit _null_ _null_ _null_ ));
DESCR("adjust bit() to typmod length");
-DATA(insert OID = 1687 ( varbit PGNSP PGUID 12 1 0 0 f f f t f i 3 0 1562 "1562 23 16" _null_ _null_ _null_ _null_ varbit _null_ _null_ _null_ ));
+DATA(insert OID = 1687 ( varbit PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 1562 "1562 23 16" _null_ _null_ _null_ _null_ varbit _null_ _null_ _null_ ));
DESCR("adjust varbit() to typmod length");
-DATA(insert OID = 1698 ( position PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "1560 1560" _null_ _null_ _null_ _null_ bitposition _null_ _null_ _null_ ));
+DATA(insert OID = 1698 ( position PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "1560 1560" _null_ _null_ _null_ _null_ bitposition _null_ _null_ _null_ ));
DESCR("position of sub-bitstring");
-DATA(insert OID = 1699 ( substring PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1560 "1560 23" _null_ _null_ _null_ _null_ bitsubstr_no_len _null_ _null_ _null_ ));
+DATA(insert OID = 1699 ( substring PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1560 "1560 23" _null_ _null_ _null_ _null_ bitsubstr_no_len _null_ _null_ _null_ ));
DESCR("extract portion of bitstring");
-DATA(insert OID = 3030 ( overlay PGNSP PGUID 12 1 0 0 f f f t f i 4 0 1560 "1560 1560 23 23" _null_ _null_ _null_ _null_ bitoverlay _null_ _null_ _null_ ));
+DATA(insert OID = 3030 ( overlay PGNSP PGUID 12 1 0 0 0 f f f t f i 4 0 1560 "1560 1560 23 23" _null_ _null_ _null_ _null_ bitoverlay _null_ _null_ _null_ ));
DESCR("substitute portion of bitstring");
-DATA(insert OID = 3031 ( overlay PGNSP PGUID 12 1 0 0 f f f t f i 3 0 1560 "1560 1560 23" _null_ _null_ _null_ _null_ bitoverlay_no_len _null_ _null_ _null_ ));
+DATA(insert OID = 3031 ( overlay PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 1560 "1560 1560 23" _null_ _null_ _null_ _null_ bitoverlay_no_len _null_ _null_ _null_ ));
DESCR("substitute portion of bitstring");
-DATA(insert OID = 3032 ( get_bit PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "1560 23" _null_ _null_ _null_ _null_ bitgetbit _null_ _null_ _null_ ));
+DATA(insert OID = 3032 ( get_bit PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "1560 23" _null_ _null_ _null_ _null_ bitgetbit _null_ _null_ _null_ ));
DESCR("get bit");
-DATA(insert OID = 3033 ( set_bit PGNSP PGUID 12 1 0 0 f f f t f i 3 0 1560 "1560 23 23" _null_ _null_ _null_ _null_ bitsetbit _null_ _null_ _null_ ));
+DATA(insert OID = 3033 ( set_bit PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 1560 "1560 23 23" _null_ _null_ _null_ _null_ bitsetbit _null_ _null_ _null_ ));
DESCR("set bit");
/* for mac type support */
-DATA(insert OID = 436 ( macaddr_in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 829 "2275" _null_ _null_ _null_ _null_ macaddr_in _null_ _null_ _null_ ));
+DATA(insert OID = 436 ( macaddr_in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 829 "2275" _null_ _null_ _null_ _null_ macaddr_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 437 ( macaddr_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "829" _null_ _null_ _null_ _null_ macaddr_out _null_ _null_ _null_ ));
+DATA(insert OID = 437 ( macaddr_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "829" _null_ _null_ _null_ _null_ macaddr_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 753 ( trunc PGNSP PGUID 12 1 0 0 f f f t f i 1 0 829 "829" _null_ _null_ _null_ _null_ macaddr_trunc _null_ _null_ _null_ ));
+DATA(insert OID = 753 ( trunc PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 829 "829" _null_ _null_ _null_ _null_ macaddr_trunc _null_ _null_ _null_ ));
DESCR("MAC manufacturer fields");
-DATA(insert OID = 830 ( macaddr_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "829 829" _null_ _null_ _null_ _null_ macaddr_eq _null_ _null_ _null_ ));
-DATA(insert OID = 831 ( macaddr_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "829 829" _null_ _null_ _null_ _null_ macaddr_lt _null_ _null_ _null_ ));
-DATA(insert OID = 832 ( macaddr_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "829 829" _null_ _null_ _null_ _null_ macaddr_le _null_ _null_ _null_ ));
-DATA(insert OID = 833 ( macaddr_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "829 829" _null_ _null_ _null_ _null_ macaddr_gt _null_ _null_ _null_ ));
-DATA(insert OID = 834 ( macaddr_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "829 829" _null_ _null_ _null_ _null_ macaddr_ge _null_ _null_ _null_ ));
-DATA(insert OID = 835 ( macaddr_ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "829 829" _null_ _null_ _null_ _null_ macaddr_ne _null_ _null_ _null_ ));
-DATA(insert OID = 836 ( macaddr_cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "829 829" _null_ _null_ _null_ _null_ macaddr_cmp _null_ _null_ _null_ ));
+DATA(insert OID = 830 ( macaddr_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "829 829" _null_ _null_ _null_ _null_ macaddr_eq _null_ _null_ _null_ ));
+DATA(insert OID = 831 ( macaddr_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "829 829" _null_ _null_ _null_ _null_ macaddr_lt _null_ _null_ _null_ ));
+DATA(insert OID = 832 ( macaddr_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "829 829" _null_ _null_ _null_ _null_ macaddr_le _null_ _null_ _null_ ));
+DATA(insert OID = 833 ( macaddr_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "829 829" _null_ _null_ _null_ _null_ macaddr_gt _null_ _null_ _null_ ));
+DATA(insert OID = 834 ( macaddr_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "829 829" _null_ _null_ _null_ _null_ macaddr_ge _null_ _null_ _null_ ));
+DATA(insert OID = 835 ( macaddr_ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "829 829" _null_ _null_ _null_ _null_ macaddr_ne _null_ _null_ _null_ ));
+DATA(insert OID = 836 ( macaddr_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "829 829" _null_ _null_ _null_ _null_ macaddr_cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
/* for inet type support */
-DATA(insert OID = 910 ( inet_in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 869 "2275" _null_ _null_ _null_ _null_ inet_in _null_ _null_ _null_ ));
+DATA(insert OID = 910 ( inet_in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 869 "2275" _null_ _null_ _null_ _null_ inet_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 911 ( inet_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "869" _null_ _null_ _null_ _null_ inet_out _null_ _null_ _null_ ));
+DATA(insert OID = 911 ( inet_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "869" _null_ _null_ _null_ _null_ inet_out _null_ _null_ _null_ ));
DESCR("I/O");
/* for cidr type support */
-DATA(insert OID = 1267 ( cidr_in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 650 "2275" _null_ _null_ _null_ _null_ cidr_in _null_ _null_ _null_ ));
+DATA(insert OID = 1267 ( cidr_in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 650 "2275" _null_ _null_ _null_ _null_ cidr_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 1427 ( cidr_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "650" _null_ _null_ _null_ _null_ cidr_out _null_ _null_ _null_ ));
+DATA(insert OID = 1427 ( cidr_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "650" _null_ _null_ _null_ _null_ cidr_out _null_ _null_ _null_ ));
DESCR("I/O");
/* these are used for both inet and cidr */
-DATA(insert OID = 920 ( network_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_eq _null_ _null_ _null_ ));
-DATA(insert OID = 921 ( network_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_lt _null_ _null_ _null_ ));
-DATA(insert OID = 922 ( network_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_le _null_ _null_ _null_ ));
-DATA(insert OID = 923 ( network_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_gt _null_ _null_ _null_ ));
-DATA(insert OID = 924 ( network_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_ge _null_ _null_ _null_ ));
-DATA(insert OID = 925 ( network_ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_ne _null_ _null_ _null_ ));
-DATA(insert OID = 926 ( network_cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "869 869" _null_ _null_ _null_ _null_ network_cmp _null_ _null_ _null_ ));
+DATA(insert OID = 920 ( network_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_eq _null_ _null_ _null_ ));
+DATA(insert OID = 921 ( network_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_lt _null_ _null_ _null_ ));
+DATA(insert OID = 922 ( network_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_le _null_ _null_ _null_ ));
+DATA(insert OID = 923 ( network_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_gt _null_ _null_ _null_ ));
+DATA(insert OID = 924 ( network_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_ge _null_ _null_ _null_ ));
+DATA(insert OID = 925 ( network_ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_ne _null_ _null_ _null_ ));
+DATA(insert OID = 926 ( network_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "869 869" _null_ _null_ _null_ _null_ network_cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 927 ( network_sub PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_sub _null_ _null_ _null_ ));
-DATA(insert OID = 928 ( network_subeq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_subeq _null_ _null_ _null_ ));
-DATA(insert OID = 929 ( network_sup PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_sup _null_ _null_ _null_ ));
-DATA(insert OID = 930 ( network_supeq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_supeq _null_ _null_ _null_ ));
+DATA(insert OID = 927 ( network_sub PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_sub _null_ _null_ _null_ ));
+DATA(insert OID = 928 ( network_subeq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_subeq _null_ _null_ _null_ ));
+DATA(insert OID = 929 ( network_sup PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_sup _null_ _null_ _null_ ));
+DATA(insert OID = 930 ( network_supeq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "869 869" _null_ _null_ _null_ _null_ network_supeq _null_ _null_ _null_ ));
/* inet/cidr functions */
-DATA(insert OID = 598 ( abbrev PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "869" _null_ _null_ _null_ _null_ inet_abbrev _null_ _null_ _null_ ));
+DATA(insert OID = 598 ( abbrev PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "869" _null_ _null_ _null_ _null_ inet_abbrev _null_ _null_ _null_ ));
DESCR("abbreviated display of inet value");
-DATA(insert OID = 599 ( abbrev PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "650" _null_ _null_ _null_ _null_ cidr_abbrev _null_ _null_ _null_ ));
+DATA(insert OID = 599 ( abbrev PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "650" _null_ _null_ _null_ _null_ cidr_abbrev _null_ _null_ _null_ ));
DESCR("abbreviated display of cidr value");
-DATA(insert OID = 605 ( set_masklen PGNSP PGUID 12 1 0 0 f f f t f i 2 0 869 "869 23" _null_ _null_ _null_ _null_ inet_set_masklen _null_ _null_ _null_ ));
+DATA(insert OID = 605 ( set_masklen PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 869 "869 23" _null_ _null_ _null_ _null_ inet_set_masklen _null_ _null_ _null_ ));
DESCR("change netmask of inet");
-DATA(insert OID = 635 ( set_masklen PGNSP PGUID 12 1 0 0 f f f t f i 2 0 650 "650 23" _null_ _null_ _null_ _null_ cidr_set_masklen _null_ _null_ _null_ ));
+DATA(insert OID = 635 ( set_masklen PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 650 "650 23" _null_ _null_ _null_ _null_ cidr_set_masklen _null_ _null_ _null_ ));
DESCR("change netmask of cidr");
-DATA(insert OID = 711 ( family PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "869" _null_ _null_ _null_ _null_ network_family _null_ _null_ _null_ ));
+DATA(insert OID = 711 ( family PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "869" _null_ _null_ _null_ _null_ network_family _null_ _null_ _null_ ));
DESCR("address family (4 for IPv4, 6 for IPv6)");
-DATA(insert OID = 683 ( network PGNSP PGUID 12 1 0 0 f f f t f i 1 0 650 "869" _null_ _null_ _null_ _null_ network_network _null_ _null_ _null_ ));
+DATA(insert OID = 683 ( network PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 650 "869" _null_ _null_ _null_ _null_ network_network _null_ _null_ _null_ ));
DESCR("network part of address");
-DATA(insert OID = 696 ( netmask PGNSP PGUID 12 1 0 0 f f f t f i 1 0 869 "869" _null_ _null_ _null_ _null_ network_netmask _null_ _null_ _null_ ));
+DATA(insert OID = 696 ( netmask PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 869 "869" _null_ _null_ _null_ _null_ network_netmask _null_ _null_ _null_ ));
DESCR("netmask of address");
-DATA(insert OID = 697 ( masklen PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "869" _null_ _null_ _null_ _null_ network_masklen _null_ _null_ _null_ ));
+DATA(insert OID = 697 ( masklen PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "869" _null_ _null_ _null_ _null_ network_masklen _null_ _null_ _null_ ));
DESCR("netmask length");
-DATA(insert OID = 698 ( broadcast PGNSP PGUID 12 1 0 0 f f f t f i 1 0 869 "869" _null_ _null_ _null_ _null_ network_broadcast _null_ _null_ _null_ ));
+DATA(insert OID = 698 ( broadcast PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 869 "869" _null_ _null_ _null_ _null_ network_broadcast _null_ _null_ _null_ ));
DESCR("broadcast address of network");
-DATA(insert OID = 699 ( host PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "869" _null_ _null_ _null_ _null_ network_host _null_ _null_ _null_ ));
+DATA(insert OID = 699 ( host PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "869" _null_ _null_ _null_ _null_ network_host _null_ _null_ _null_ ));
DESCR("show address octets only");
-DATA(insert OID = 730 ( text PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "869" _null_ _null_ _null_ _null_ network_show _null_ _null_ _null_ ));
+DATA(insert OID = 730 ( text PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "869" _null_ _null_ _null_ _null_ network_show _null_ _null_ _null_ ));
DESCR("show all parts of inet/cidr value");
-DATA(insert OID = 1362 ( hostmask PGNSP PGUID 12 1 0 0 f f f t f i 1 0 869 "869" _null_ _null_ _null_ _null_ network_hostmask _null_ _null_ _null_ ));
+DATA(insert OID = 1362 ( hostmask PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 869 "869" _null_ _null_ _null_ _null_ network_hostmask _null_ _null_ _null_ ));
DESCR("hostmask of address");
-DATA(insert OID = 1715 ( cidr PGNSP PGUID 12 1 0 0 f f f t f i 1 0 650 "869" _null_ _null_ _null_ _null_ inet_to_cidr _null_ _null_ _null_ ));
+DATA(insert OID = 1715 ( cidr PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 650 "869" _null_ _null_ _null_ _null_ inet_to_cidr _null_ _null_ _null_ ));
DESCR("convert inet to cidr");
-DATA(insert OID = 2196 ( inet_client_addr PGNSP PGUID 12 1 0 0 f f f f f s 0 0 869 "" _null_ _null_ _null_ _null_ inet_client_addr _null_ _null_ _null_ ));
+DATA(insert OID = 2196 ( inet_client_addr PGNSP PGUID 12 1 0 0 0 f f f f f s 0 0 869 "" _null_ _null_ _null_ _null_ inet_client_addr _null_ _null_ _null_ ));
DESCR("inet address of the client");
-DATA(insert OID = 2197 ( inet_client_port PGNSP PGUID 12 1 0 0 f f f f f s 0 0 23 "" _null_ _null_ _null_ _null_ inet_client_port _null_ _null_ _null_ ));
+DATA(insert OID = 2197 ( inet_client_port PGNSP PGUID 12 1 0 0 0 f f f f f s 0 0 23 "" _null_ _null_ _null_ _null_ inet_client_port _null_ _null_ _null_ ));
DESCR("client's port number for this connection");
-DATA(insert OID = 2198 ( inet_server_addr PGNSP PGUID 12 1 0 0 f f f f f s 0 0 869 "" _null_ _null_ _null_ _null_ inet_server_addr _null_ _null_ _null_ ));
+DATA(insert OID = 2198 ( inet_server_addr PGNSP PGUID 12 1 0 0 0 f f f f f s 0 0 869 "" _null_ _null_ _null_ _null_ inet_server_addr _null_ _null_ _null_ ));
DESCR("inet address of the server");
-DATA(insert OID = 2199 ( inet_server_port PGNSP PGUID 12 1 0 0 f f f f f s 0 0 23 "" _null_ _null_ _null_ _null_ inet_server_port _null_ _null_ _null_ ));
+DATA(insert OID = 2199 ( inet_server_port PGNSP PGUID 12 1 0 0 0 f f f f f s 0 0 23 "" _null_ _null_ _null_ _null_ inet_server_port _null_ _null_ _null_ ));
DESCR("server's port number for this connection");
-DATA(insert OID = 2627 ( inetnot PGNSP PGUID 12 1 0 0 f f f t f i 1 0 869 "869" _null_ _null_ _null_ _null_ inetnot _null_ _null_ _null_ ));
-DATA(insert OID = 2628 ( inetand PGNSP PGUID 12 1 0 0 f f f t f i 2 0 869 "869 869" _null_ _null_ _null_ _null_ inetand _null_ _null_ _null_ ));
-DATA(insert OID = 2629 ( inetor PGNSP PGUID 12 1 0 0 f f f t f i 2 0 869 "869 869" _null_ _null_ _null_ _null_ inetor _null_ _null_ _null_ ));
-DATA(insert OID = 2630 ( inetpl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 869 "869 20" _null_ _null_ _null_ _null_ inetpl _null_ _null_ _null_ ));
-DATA(insert OID = 2631 ( int8pl_inet PGNSP PGUID 14 1 0 0 f f f t f i 2 0 869 "20 869" _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ ));
-DATA(insert OID = 2632 ( inetmi_int8 PGNSP PGUID 12 1 0 0 f f f t f i 2 0 869 "869 20" _null_ _null_ _null_ _null_ inetmi_int8 _null_ _null_ _null_ ));
-DATA(insert OID = 2633 ( inetmi PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "869 869" _null_ _null_ _null_ _null_ inetmi _null_ _null_ _null_ ));
+DATA(insert OID = 2627 ( inetnot PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 869 "869" _null_ _null_ _null_ _null_ inetnot _null_ _null_ _null_ ));
+DATA(insert OID = 2628 ( inetand PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 869 "869 869" _null_ _null_ _null_ _null_ inetand _null_ _null_ _null_ ));
+DATA(insert OID = 2629 ( inetor PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 869 "869 869" _null_ _null_ _null_ _null_ inetor _null_ _null_ _null_ ));
+DATA(insert OID = 2630 ( inetpl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 869 "869 20" _null_ _null_ _null_ _null_ inetpl _null_ _null_ _null_ ));
+DATA(insert OID = 2631 ( int8pl_inet PGNSP PGUID 14 1 0 0 0 f f f t f i 2 0 869 "20 869" _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ ));
+DATA(insert OID = 2632 ( inetmi_int8 PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 869 "869 20" _null_ _null_ _null_ _null_ inetmi_int8 _null_ _null_ _null_ ));
+DATA(insert OID = 2633 ( inetmi PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "869 869" _null_ _null_ _null_ _null_ inetmi _null_ _null_ _null_ ));
-DATA(insert OID = 1690 ( time_mi_time PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1186 "1083 1083" _null_ _null_ _null_ _null_ time_mi_time _null_ _null_ _null_ ));
+DATA(insert OID = 1690 ( time_mi_time PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1186 "1083 1083" _null_ _null_ _null_ _null_ time_mi_time _null_ _null_ _null_ ));
-DATA(insert OID = 1691 ( boolle PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "16 16" _null_ _null_ _null_ _null_ boolle _null_ _null_ _null_ ));
-DATA(insert OID = 1692 ( boolge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "16 16" _null_ _null_ _null_ _null_ boolge _null_ _null_ _null_ ));
-DATA(insert OID = 1693 ( btboolcmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "16 16" _null_ _null_ _null_ _null_ btboolcmp _null_ _null_ _null_ ));
+DATA(insert OID = 1691 ( boolle PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "16 16" _null_ _null_ _null_ _null_ boolle _null_ _null_ _null_ ));
+DATA(insert OID = 1692 ( boolge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "16 16" _null_ _null_ _null_ _null_ boolge _null_ _null_ _null_ ));
+DATA(insert OID = 1693 ( btboolcmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "16 16" _null_ _null_ _null_ _null_ btboolcmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 1688 ( time_hash PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1083" _null_ _null_ _null_ _null_ time_hash _null_ _null_ _null_ ));
+DATA(insert OID = 1688 ( time_hash PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1083" _null_ _null_ _null_ _null_ time_hash _null_ _null_ _null_ ));
DESCR("hash");
-DATA(insert OID = 1696 ( timetz_hash PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1266" _null_ _null_ _null_ _null_ timetz_hash _null_ _null_ _null_ ));
+DATA(insert OID = 1696 ( timetz_hash PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1266" _null_ _null_ _null_ _null_ timetz_hash _null_ _null_ _null_ ));
DESCR("hash");
-DATA(insert OID = 1697 ( interval_hash PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1186" _null_ _null_ _null_ _null_ interval_hash _null_ _null_ _null_ ));
+DATA(insert OID = 1697 ( interval_hash PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1186" _null_ _null_ _null_ _null_ interval_hash _null_ _null_ _null_ ));
DESCR("hash");
/* OID's 1700 - 1799 NUMERIC data type */
-DATA(insert OID = 1701 ( numeric_in PGNSP PGUID 12 1 0 0 f f f t f i 3 0 1700 "2275 26 23" _null_ _null_ _null_ _null_ numeric_in _null_ _null_ _null_ ));
+DATA(insert OID = 1701 ( numeric_in PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 1700 "2275 26 23" _null_ _null_ _null_ _null_ numeric_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 1702 ( numeric_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "1700" _null_ _null_ _null_ _null_ numeric_out _null_ _null_ _null_ ));
+DATA(insert OID = 1702 ( numeric_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "1700" _null_ _null_ _null_ _null_ numeric_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2917 ( numerictypmodin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1263" _null_ _null_ _null_ _null_ numerictypmodin _null_ _null_ _null_ ));
+DATA(insert OID = 2917 ( numerictypmodin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1263" _null_ _null_ _null_ _null_ numerictypmodin _null_ _null_ _null_ ));
DESCR("I/O typmod");
-DATA(insert OID = 2918 ( numerictypmodout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "23" _null_ _null_ _null_ _null_ numerictypmodout _null_ _null_ _null_ ));
+DATA(insert OID = 2918 ( numerictypmodout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "23" _null_ _null_ _null_ _null_ numerictypmodout _null_ _null_ _null_ ));
DESCR("I/O typmod");
-DATA(insert OID = 1703 ( numeric PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1700 "1700 23" _null_ _null_ _null_ _null_ numeric _null_ _null_ _null_ ));
+DATA(insert OID = 1703 ( numeric PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1700 "1700 23" _null_ _null_ _null_ _null_ numeric _null_ _null_ _null_ ));
DESCR("adjust numeric to typmod precision/scale");
-DATA(insert OID = 1704 ( numeric_abs PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_abs _null_ _null_ _null_ ));
-DATA(insert OID = 1705 ( abs PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_abs _null_ _null_ _null_ ));
+DATA(insert OID = 1704 ( numeric_abs PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_abs _null_ _null_ _null_ ));
+DATA(insert OID = 1705 ( abs PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_abs _null_ _null_ _null_ ));
DESCR("absolute value");
-DATA(insert OID = 1706 ( sign PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_sign _null_ _null_ _null_ ));
+DATA(insert OID = 1706 ( sign PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_sign _null_ _null_ _null_ ));
DESCR("sign of value");
-DATA(insert OID = 1707 ( round PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1700 "1700 23" _null_ _null_ _null_ _null_ numeric_round _null_ _null_ _null_ ));
+DATA(insert OID = 1707 ( round PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1700 "1700 23" _null_ _null_ _null_ _null_ numeric_round _null_ _null_ _null_ ));
DESCR("value rounded to 'scale'");
-DATA(insert OID = 1708 ( round PGNSP PGUID 14 1 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ "select pg_catalog.round($1,0)" _null_ _null_ _null_ ));
+DATA(insert OID = 1708 ( round PGNSP PGUID 14 1 0 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ "select pg_catalog.round($1,0)" _null_ _null_ _null_ ));
DESCR("value rounded to 'scale' of zero");
-DATA(insert OID = 1709 ( trunc PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1700 "1700 23" _null_ _null_ _null_ _null_ numeric_trunc _null_ _null_ _null_ ));
+DATA(insert OID = 1709 ( trunc PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1700 "1700 23" _null_ _null_ _null_ _null_ numeric_trunc _null_ _null_ _null_ ));
DESCR("value truncated to 'scale'");
-DATA(insert OID = 1710 ( trunc PGNSP PGUID 14 1 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ "select pg_catalog.trunc($1,0)" _null_ _null_ _null_ ));
+DATA(insert OID = 1710 ( trunc PGNSP PGUID 14 1 0 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ "select pg_catalog.trunc($1,0)" _null_ _null_ _null_ ));
DESCR("value truncated to 'scale' of zero");
-DATA(insert OID = 1711 ( ceil PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_ceil _null_ _null_ _null_ ));
+DATA(insert OID = 1711 ( ceil PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_ceil _null_ _null_ _null_ ));
DESCR("smallest integer >= value");
-DATA(insert OID = 2167 ( ceiling PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_ceil _null_ _null_ _null_ ));
+DATA(insert OID = 2167 ( ceiling PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_ceil _null_ _null_ _null_ ));
DESCR("smallest integer >= value");
-DATA(insert OID = 1712 ( floor PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_floor _null_ _null_ _null_ ));
+DATA(insert OID = 1712 ( floor PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_floor _null_ _null_ _null_ ));
DESCR("largest integer <= value");
-DATA(insert OID = 1718 ( numeric_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ numeric_eq _null_ _null_ _null_ ));
-DATA(insert OID = 1719 ( numeric_ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ numeric_ne _null_ _null_ _null_ ));
-DATA(insert OID = 1720 ( numeric_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ numeric_gt _null_ _null_ _null_ ));
-DATA(insert OID = 1721 ( numeric_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ numeric_ge _null_ _null_ _null_ ));
-DATA(insert OID = 1722 ( numeric_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ numeric_lt _null_ _null_ _null_ ));
-DATA(insert OID = 1723 ( numeric_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ numeric_le _null_ _null_ _null_ ));
-DATA(insert OID = 1724 ( numeric_add PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_add _null_ _null_ _null_ ));
-DATA(insert OID = 1725 ( numeric_sub PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_sub _null_ _null_ _null_ ));
-DATA(insert OID = 1726 ( numeric_mul PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_mul _null_ _null_ _null_ ));
-DATA(insert OID = 1727 ( numeric_div PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_div _null_ _null_ _null_ ));
-DATA(insert OID = 1728 ( mod PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_mod _null_ _null_ _null_ ));
+DATA(insert OID = 1718 ( numeric_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ numeric_eq _null_ _null_ _null_ ));
+DATA(insert OID = 1719 ( numeric_ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ numeric_ne _null_ _null_ _null_ ));
+DATA(insert OID = 1720 ( numeric_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ numeric_gt _null_ _null_ _null_ ));
+DATA(insert OID = 1721 ( numeric_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ numeric_ge _null_ _null_ _null_ ));
+DATA(insert OID = 1722 ( numeric_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ numeric_lt _null_ _null_ _null_ ));
+DATA(insert OID = 1723 ( numeric_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ numeric_le _null_ _null_ _null_ ));
+DATA(insert OID = 1724 ( numeric_add PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_add _null_ _null_ _null_ ));
+DATA(insert OID = 1725 ( numeric_sub PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_sub _null_ _null_ _null_ ));
+DATA(insert OID = 1726 ( numeric_mul PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_mul _null_ _null_ _null_ ));
+DATA(insert OID = 1727 ( numeric_div PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_div _null_ _null_ _null_ ));
+DATA(insert OID = 1728 ( mod PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_mod _null_ _null_ _null_ ));
DESCR("modulus");
-DATA(insert OID = 1729 ( numeric_mod PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_mod _null_ _null_ _null_ ));
-DATA(insert OID = 1730 ( sqrt PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_sqrt _null_ _null_ _null_ ));
+DATA(insert OID = 1729 ( numeric_mod PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_mod _null_ _null_ _null_ ));
+DATA(insert OID = 1730 ( sqrt PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_sqrt _null_ _null_ _null_ ));
DESCR("square root");
-DATA(insert OID = 1731 ( numeric_sqrt PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_sqrt _null_ _null_ _null_ ));
+DATA(insert OID = 1731 ( numeric_sqrt PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_sqrt _null_ _null_ _null_ ));
DESCR("square root");
-DATA(insert OID = 1732 ( exp PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_exp _null_ _null_ _null_ ));
+DATA(insert OID = 1732 ( exp PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_exp _null_ _null_ _null_ ));
DESCR("natural exponential (e^x)");
-DATA(insert OID = 1733 ( numeric_exp PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_exp _null_ _null_ _null_ ));
+DATA(insert OID = 1733 ( numeric_exp PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_exp _null_ _null_ _null_ ));
DESCR("natural exponential (e^x)");
-DATA(insert OID = 1734 ( ln PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_ln _null_ _null_ _null_ ));
+DATA(insert OID = 1734 ( ln PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_ln _null_ _null_ _null_ ));
DESCR("natural logarithm");
-DATA(insert OID = 1735 ( numeric_ln PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_ln _null_ _null_ _null_ ));
+DATA(insert OID = 1735 ( numeric_ln PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_ln _null_ _null_ _null_ ));
DESCR("natural logarithm");
-DATA(insert OID = 1736 ( log PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_log _null_ _null_ _null_ ));
+DATA(insert OID = 1736 ( log PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_log _null_ _null_ _null_ ));
DESCR("logarithm base m of n");
-DATA(insert OID = 1737 ( numeric_log PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_log _null_ _null_ _null_ ));
+DATA(insert OID = 1737 ( numeric_log PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_log _null_ _null_ _null_ ));
DESCR("logarithm base m of n");
-DATA(insert OID = 1738 ( pow PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_power _null_ _null_ _null_ ));
+DATA(insert OID = 1738 ( pow PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_power _null_ _null_ _null_ ));
DESCR("exponentiation");
-DATA(insert OID = 2169 ( power PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_power _null_ _null_ _null_ ));
+DATA(insert OID = 2169 ( power PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_power _null_ _null_ _null_ ));
DESCR("exponentiation");
-DATA(insert OID = 1739 ( numeric_power PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_power _null_ _null_ _null_ ));
-DATA(insert OID = 1740 ( numeric PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "23" _null_ _null_ _null_ _null_ int4_numeric _null_ _null_ _null_ ));
+DATA(insert OID = 1739 ( numeric_power PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_power _null_ _null_ _null_ ));
+DATA(insert OID = 1740 ( numeric PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "23" _null_ _null_ _null_ _null_ int4_numeric _null_ _null_ _null_ ));
DESCR("convert int4 to numeric");
-DATA(insert OID = 1741 ( log PGNSP PGUID 14 1 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ "select pg_catalog.log(10, $1)" _null_ _null_ _null_ ));
+DATA(insert OID = 1741 ( log PGNSP PGUID 14 1 0 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ "select pg_catalog.log(10, $1)" _null_ _null_ _null_ ));
DESCR("base 10 logarithm");
-DATA(insert OID = 1742 ( numeric PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "700" _null_ _null_ _null_ _null_ float4_numeric _null_ _null_ _null_ ));
+DATA(insert OID = 1742 ( numeric PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "700" _null_ _null_ _null_ _null_ float4_numeric _null_ _null_ _null_ ));
DESCR("convert float4 to numeric");
-DATA(insert OID = 1743 ( numeric PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "701" _null_ _null_ _null_ _null_ float8_numeric _null_ _null_ _null_ ));
+DATA(insert OID = 1743 ( numeric PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "701" _null_ _null_ _null_ _null_ float8_numeric _null_ _null_ _null_ ));
DESCR("convert float8 to numeric");
-DATA(insert OID = 1744 ( int4 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1700" _null_ _null_ _null_ _null_ numeric_int4 _null_ _null_ _null_ ));
+DATA(insert OID = 1744 ( int4 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1700" _null_ _null_ _null_ _null_ numeric_int4 _null_ _null_ _null_ ));
DESCR("convert numeric to int4");
-DATA(insert OID = 1745 ( float4 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 700 "1700" _null_ _null_ _null_ _null_ numeric_float4 _null_ _null_ _null_ ));
+DATA(insert OID = 1745 ( float4 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 700 "1700" _null_ _null_ _null_ _null_ numeric_float4 _null_ _null_ _null_ ));
DESCR("convert numeric to float4");
-DATA(insert OID = 1746 ( float8 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "1700" _null_ _null_ _null_ _null_ numeric_float8 _null_ _null_ _null_ ));
+DATA(insert OID = 1746 ( float8 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "1700" _null_ _null_ _null_ _null_ numeric_float8 _null_ _null_ _null_ ));
DESCR("convert numeric to float8");
-DATA(insert OID = 1973 ( div PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_div_trunc _null_ _null_ _null_ ));
+DATA(insert OID = 1973 ( div PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_div_trunc _null_ _null_ _null_ ));
DESCR("trunc(x/y)");
-DATA(insert OID = 1980 ( numeric_div_trunc PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_div_trunc _null_ _null_ _null_ ));
+DATA(insert OID = 1980 ( numeric_div_trunc PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_div_trunc _null_ _null_ _null_ ));
DESCR("trunc(x/y)");
-DATA(insert OID = 2170 ( width_bucket PGNSP PGUID 12 1 0 0 f f f t f i 4 0 23 "1700 1700 1700 23" _null_ _null_ _null_ _null_ width_bucket_numeric _null_ _null_ _null_ ));
+DATA(insert OID = 2170 ( width_bucket PGNSP PGUID 12 1 0 0 0 f f f t f i 4 0 23 "1700 1700 1700 23" _null_ _null_ _null_ _null_ width_bucket_numeric _null_ _null_ _null_ ));
DESCR("bucket number of operand in equidepth histogram");
-DATA(insert OID = 1747 ( time_pl_interval PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1083 "1083 1186" _null_ _null_ _null_ _null_ time_pl_interval _null_ _null_ _null_ ));
-DATA(insert OID = 1748 ( time_mi_interval PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1083 "1083 1186" _null_ _null_ _null_ _null_ time_mi_interval _null_ _null_ _null_ ));
-DATA(insert OID = 1749 ( timetz_pl_interval PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1266 "1266 1186" _null_ _null_ _null_ _null_ timetz_pl_interval _null_ _null_ _null_ ));
-DATA(insert OID = 1750 ( timetz_mi_interval PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1266 "1266 1186" _null_ _null_ _null_ _null_ timetz_mi_interval _null_ _null_ _null_ ));
+DATA(insert OID = 1747 ( time_pl_interval PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1083 "1083 1186" _null_ _null_ _null_ _null_ time_pl_interval _null_ _null_ _null_ ));
+DATA(insert OID = 1748 ( time_mi_interval PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1083 "1083 1186" _null_ _null_ _null_ _null_ time_mi_interval _null_ _null_ _null_ ));
+DATA(insert OID = 1749 ( timetz_pl_interval PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1266 "1266 1186" _null_ _null_ _null_ _null_ timetz_pl_interval _null_ _null_ _null_ ));
+DATA(insert OID = 1750 ( timetz_mi_interval PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1266 "1266 1186" _null_ _null_ _null_ _null_ timetz_mi_interval _null_ _null_ _null_ ));
-DATA(insert OID = 1764 ( numeric_inc PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_inc _null_ _null_ _null_ ));
+DATA(insert OID = 1764 ( numeric_inc PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_inc _null_ _null_ _null_ ));
DESCR("increment by one");
-DATA(insert OID = 1766 ( numeric_smaller PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_smaller _null_ _null_ _null_ ));
+DATA(insert OID = 1766 ( numeric_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_smaller _null_ _null_ _null_ ));
DESCR("smaller of two");
-DATA(insert OID = 1767 ( numeric_larger PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_larger _null_ _null_ _null_ ));
+DATA(insert OID = 1767 ( numeric_larger PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ numeric_larger _null_ _null_ _null_ ));
DESCR("larger of two");
-DATA(insert OID = 1769 ( numeric_cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "1700 1700" _null_ _null_ _null_ _null_ numeric_cmp _null_ _null_ _null_ ));
+DATA(insert OID = 1769 ( numeric_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "1700 1700" _null_ _null_ _null_ _null_ numeric_cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 1771 ( numeric_uminus PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_uminus _null_ _null_ _null_ ));
-DATA(insert OID = 1779 ( int8 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 20 "1700" _null_ _null_ _null_ _null_ numeric_int8 _null_ _null_ _null_ ));
+DATA(insert OID = 1771 ( numeric_uminus PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_uminus _null_ _null_ _null_ ));
+DATA(insert OID = 1779 ( int8 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 20 "1700" _null_ _null_ _null_ _null_ numeric_int8 _null_ _null_ _null_ ));
DESCR("convert numeric to int8");
-DATA(insert OID = 1781 ( numeric PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "20" _null_ _null_ _null_ _null_ int8_numeric _null_ _null_ _null_ ));
+DATA(insert OID = 1781 ( numeric PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "20" _null_ _null_ _null_ _null_ int8_numeric _null_ _null_ _null_ ));
DESCR("convert int8 to numeric");
-DATA(insert OID = 1782 ( numeric PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "21" _null_ _null_ _null_ _null_ int2_numeric _null_ _null_ _null_ ));
+DATA(insert OID = 1782 ( numeric PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "21" _null_ _null_ _null_ _null_ int2_numeric _null_ _null_ _null_ ));
DESCR("convert int2 to numeric");
-DATA(insert OID = 1783 ( int2 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 21 "1700" _null_ _null_ _null_ _null_ numeric_int2 _null_ _null_ _null_ ));
+DATA(insert OID = 1783 ( int2 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 21 "1700" _null_ _null_ _null_ _null_ numeric_int2 _null_ _null_ _null_ ));
DESCR("convert numeric to int2");
/* formatting */
-DATA(insert OID = 1770 ( to_char PGNSP PGUID 12 1 0 0 f f f t f s 2 0 25 "1184 25" _null_ _null_ _null_ _null_ timestamptz_to_char _null_ _null_ _null_ ));
+DATA(insert OID = 1770 ( to_char PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 25 "1184 25" _null_ _null_ _null_ _null_ timestamptz_to_char _null_ _null_ _null_ ));
DESCR("format timestamp with time zone to text");
-DATA(insert OID = 1772 ( to_char PGNSP PGUID 12 1 0 0 f f f t f s 2 0 25 "1700 25" _null_ _null_ _null_ _null_ numeric_to_char _null_ _null_ _null_ ));
+DATA(insert OID = 1772 ( to_char PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 25 "1700 25" _null_ _null_ _null_ _null_ numeric_to_char _null_ _null_ _null_ ));
DESCR("format numeric to text");
-DATA(insert OID = 1773 ( to_char PGNSP PGUID 12 1 0 0 f f f t f s 2 0 25 "23 25" _null_ _null_ _null_ _null_ int4_to_char _null_ _null_ _null_ ));
+DATA(insert OID = 1773 ( to_char PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 25 "23 25" _null_ _null_ _null_ _null_ int4_to_char _null_ _null_ _null_ ));
DESCR("format int4 to text");
-DATA(insert OID = 1774 ( to_char PGNSP PGUID 12 1 0 0 f f f t f s 2 0 25 "20 25" _null_ _null_ _null_ _null_ int8_to_char _null_ _null_ _null_ ));
+DATA(insert OID = 1774 ( to_char PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 25 "20 25" _null_ _null_ _null_ _null_ int8_to_char _null_ _null_ _null_ ));
DESCR("format int8 to text");
-DATA(insert OID = 1775 ( to_char PGNSP PGUID 12 1 0 0 f f f t f s 2 0 25 "700 25" _null_ _null_ _null_ _null_ float4_to_char _null_ _null_ _null_ ));
+DATA(insert OID = 1775 ( to_char PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 25 "700 25" _null_ _null_ _null_ _null_ float4_to_char _null_ _null_ _null_ ));
DESCR("format float4 to text");
-DATA(insert OID = 1776 ( to_char PGNSP PGUID 12 1 0 0 f f f t f s 2 0 25 "701 25" _null_ _null_ _null_ _null_ float8_to_char _null_ _null_ _null_ ));
+DATA(insert OID = 1776 ( to_char PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 25 "701 25" _null_ _null_ _null_ _null_ float8_to_char _null_ _null_ _null_ ));
DESCR("format float8 to text");
-DATA(insert OID = 1777 ( to_number PGNSP PGUID 12 1 0 0 f f f t f s 2 0 1700 "25 25" _null_ _null_ _null_ _null_ numeric_to_number _null_ _null_ _null_ ));
+DATA(insert OID = 1777 ( to_number PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 1700 "25 25" _null_ _null_ _null_ _null_ numeric_to_number _null_ _null_ _null_ ));
DESCR("convert text to numeric");
-DATA(insert OID = 1778 ( to_timestamp PGNSP PGUID 12 1 0 0 f f f t f s 2 0 1184 "25 25" _null_ _null_ _null_ _null_ to_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 1778 ( to_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 1184 "25 25" _null_ _null_ _null_ _null_ to_timestamp _null_ _null_ _null_ ));
DESCR("convert text to timestamp with time zone");
-DATA(insert OID = 1780 ( to_date PGNSP PGUID 12 1 0 0 f f f t f s 2 0 1082 "25 25" _null_ _null_ _null_ _null_ to_date _null_ _null_ _null_ ));
+DATA(insert OID = 1780 ( to_date PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 1082 "25 25" _null_ _null_ _null_ _null_ to_date _null_ _null_ _null_ ));
DESCR("convert text to date");
-DATA(insert OID = 1768 ( to_char PGNSP PGUID 12 1 0 0 f f f t f s 2 0 25 "1186 25" _null_ _null_ _null_ _null_ interval_to_char _null_ _null_ _null_ ));
+DATA(insert OID = 1768 ( to_char PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 25 "1186 25" _null_ _null_ _null_ _null_ interval_to_char _null_ _null_ _null_ ));
DESCR("format interval to text");
-DATA(insert OID = 1282 ( quote_ident PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ quote_ident _null_ _null_ _null_ ));
+DATA(insert OID = 1282 ( quote_ident PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ quote_ident _null_ _null_ _null_ ));
DESCR("quote an identifier for usage in a querystring");
-DATA(insert OID = 1283 ( quote_literal PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ quote_literal _null_ _null_ _null_ ));
+DATA(insert OID = 1283 ( quote_literal PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ quote_literal _null_ _null_ _null_ ));
DESCR("quote a literal for usage in a querystring");
-DATA(insert OID = 1285 ( quote_literal PGNSP PGUID 14 1 0 0 f f f t f v 1 0 25 "2283" _null_ _null_ _null_ _null_ "select pg_catalog.quote_literal($1::pg_catalog.text)" _null_ _null_ _null_ ));
+DATA(insert OID = 1285 ( quote_literal PGNSP PGUID 14 1 0 0 0 f f f t f v 1 0 25 "2283" _null_ _null_ _null_ _null_ "select pg_catalog.quote_literal($1::pg_catalog.text)" _null_ _null_ _null_ ));
DESCR("quote a data value for usage in a querystring");
-DATA(insert OID = 1289 ( quote_nullable PGNSP PGUID 12 1 0 0 f f f f f i 1 0 25 "25" _null_ _null_ _null_ _null_ quote_nullable _null_ _null_ _null_ ));
+DATA(insert OID = 1289 ( quote_nullable PGNSP PGUID 12 1 0 0 0 f f f f f i 1 0 25 "25" _null_ _null_ _null_ _null_ quote_nullable _null_ _null_ _null_ ));
DESCR("quote a possibly-null literal for usage in a querystring");
-DATA(insert OID = 1290 ( quote_nullable PGNSP PGUID 14 1 0 0 f f f f f v 1 0 25 "2283" _null_ _null_ _null_ _null_ "select pg_catalog.quote_nullable($1::pg_catalog.text)" _null_ _null_ _null_ ));
+DATA(insert OID = 1290 ( quote_nullable PGNSP PGUID 14 1 0 0 0 f f f f f v 1 0 25 "2283" _null_ _null_ _null_ _null_ "select pg_catalog.quote_nullable($1::pg_catalog.text)" _null_ _null_ _null_ ));
DESCR("quote a possibly-null data value for usage in a querystring");
-DATA(insert OID = 1798 ( oidin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 26 "2275" _null_ _null_ _null_ _null_ oidin _null_ _null_ _null_ ));
+DATA(insert OID = 1798 ( oidin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 26 "2275" _null_ _null_ _null_ _null_ oidin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 1799 ( oidout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "26" _null_ _null_ _null_ _null_ oidout _null_ _null_ _null_ ));
+DATA(insert OID = 1799 ( oidout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "26" _null_ _null_ _null_ _null_ oidout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3058 ( concat PGNSP PGUID 12 1 0 2276 f f f f f s 1 0 25 "2276" "{2276}" "{v}" _null_ _null_ text_concat _null_ _null_ _null_ ));
+DATA(insert OID = 3058 ( concat PGNSP PGUID 12 1 0 2276 0 f f f f f s 1 0 25 "2276" "{2276}" "{v}" _null_ _null_ text_concat _null_ _null_ _null_ ));
DESCR("concatenate values");
-DATA(insert OID = 3059 ( concat_ws PGNSP PGUID 12 1 0 2276 f f f f f s 2 0 25 "25 2276" "{25,2276}" "{i,v}" _null_ _null_ text_concat_ws _null_ _null_ _null_ ));
+DATA(insert OID = 3059 ( concat_ws PGNSP PGUID 12 1 0 2276 0 f f f f f s 2 0 25 "25 2276" "{25,2276}" "{i,v}" _null_ _null_ text_concat_ws _null_ _null_ _null_ ));
DESCR("concatenate values with separators");
-DATA(insert OID = 3060 ( left PGNSP PGUID 12 1 0 0 f f f t f i 2 0 25 "25 23" _null_ _null_ _null_ _null_ text_left _null_ _null_ _null_ ));
+DATA(insert OID = 3060 ( left PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 25 "25 23" _null_ _null_ _null_ _null_ text_left _null_ _null_ _null_ ));
DESCR("extract the first n characters");
-DATA(insert OID = 3061 ( right PGNSP PGUID 12 1 0 0 f f f t f i 2 0 25 "25 23" _null_ _null_ _null_ _null_ text_right _null_ _null_ _null_ ));
+DATA(insert OID = 3061 ( right PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 25 "25 23" _null_ _null_ _null_ _null_ text_right _null_ _null_ _null_ ));
DESCR("extract the last n characters");
-DATA(insert OID = 3062 ( reverse PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ text_reverse _null_ _null_ _null_ ));
+DATA(insert OID = 3062 ( reverse PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ text_reverse _null_ _null_ _null_ ));
DESCR("reverse text");
-DATA(insert OID = 3539 ( format PGNSP PGUID 12 1 0 2276 f f f f f s 2 0 25 "25 2276" "{25,2276}" "{i,v}" _null_ _null_ text_format _null_ _null_ _null_ ));
+DATA(insert OID = 3539 ( format PGNSP PGUID 12 1 0 2276 0 f f f f f s 2 0 25 "25 2276" "{25,2276}" "{i,v}" _null_ _null_ text_format _null_ _null_ _null_ ));
DESCR("format text message");
-DATA(insert OID = 3540 ( format PGNSP PGUID 12 1 0 0 f f f f f s 1 0 25 "25" _null_ _null_ _null_ _null_ text_format_nv _null_ _null_ _null_ ));
+DATA(insert OID = 3540 ( format PGNSP PGUID 12 1 0 0 0 f f f f f s 1 0 25 "25" _null_ _null_ _null_ _null_ text_format_nv _null_ _null_ _null_ ));
DESCR("format text message");
-DATA(insert OID = 1810 ( bit_length PGNSP PGUID 14 1 0 0 f f f t f i 1 0 23 "17" _null_ _null_ _null_ _null_ "select pg_catalog.octet_length($1) * 8" _null_ _null_ _null_ ));
+DATA(insert OID = 1810 ( bit_length PGNSP PGUID 14 1 0 0 0 f f f t f i 1 0 23 "17" _null_ _null_ _null_ _null_ "select pg_catalog.octet_length($1) * 8" _null_ _null_ _null_ ));
DESCR("length in bits");
-DATA(insert OID = 1811 ( bit_length PGNSP PGUID 14 1 0 0 f f f t f i 1 0 23 "25" _null_ _null_ _null_ _null_ "select pg_catalog.octet_length($1) * 8" _null_ _null_ _null_ ));
+DATA(insert OID = 1811 ( bit_length PGNSP PGUID 14 1 0 0 0 f f f t f i 1 0 23 "25" _null_ _null_ _null_ _null_ "select pg_catalog.octet_length($1) * 8" _null_ _null_ _null_ ));
DESCR("length in bits");
-DATA(insert OID = 1812 ( bit_length PGNSP PGUID 14 1 0 0 f f f t f i 1 0 23 "1560" _null_ _null_ _null_ _null_ "select pg_catalog.length($1)" _null_ _null_ _null_ ));
+DATA(insert OID = 1812 ( bit_length PGNSP PGUID 14 1 0 0 0 f f f t f i 1 0 23 "1560" _null_ _null_ _null_ _null_ "select pg_catalog.length($1)" _null_ _null_ _null_ ));
DESCR("length in bits");
/* Selectivity estimators for LIKE and related operators */
-DATA(insert OID = 1814 ( iclikesel PGNSP PGUID 12 1 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ iclikesel _null_ _null_ _null_ ));
+DATA(insert OID = 1814 ( iclikesel PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ iclikesel _null_ _null_ _null_ ));
DESCR("restriction selectivity of ILIKE");
-DATA(insert OID = 1815 ( icnlikesel PGNSP PGUID 12 1 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ icnlikesel _null_ _null_ _null_ ));
+DATA(insert OID = 1815 ( icnlikesel PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ icnlikesel _null_ _null_ _null_ ));
DESCR("restriction selectivity of NOT ILIKE");
-DATA(insert OID = 1816 ( iclikejoinsel PGNSP PGUID 12 1 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ iclikejoinsel _null_ _null_ _null_ ));
+DATA(insert OID = 1816 ( iclikejoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ iclikejoinsel _null_ _null_ _null_ ));
DESCR("join selectivity of ILIKE");
-DATA(insert OID = 1817 ( icnlikejoinsel PGNSP PGUID 12 1 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ icnlikejoinsel _null_ _null_ _null_ ));
+DATA(insert OID = 1817 ( icnlikejoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ icnlikejoinsel _null_ _null_ _null_ ));
DESCR("join selectivity of NOT ILIKE");
-DATA(insert OID = 1818 ( regexeqsel PGNSP PGUID 12 1 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ regexeqsel _null_ _null_ _null_ ));
+DATA(insert OID = 1818 ( regexeqsel PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ regexeqsel _null_ _null_ _null_ ));
DESCR("restriction selectivity of regex match");
-DATA(insert OID = 1819 ( likesel PGNSP PGUID 12 1 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ likesel _null_ _null_ _null_ ));
+DATA(insert OID = 1819 ( likesel PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ likesel _null_ _null_ _null_ ));
DESCR("restriction selectivity of LIKE");
-DATA(insert OID = 1820 ( icregexeqsel PGNSP PGUID 12 1 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ icregexeqsel _null_ _null_ _null_ ));
+DATA(insert OID = 1820 ( icregexeqsel PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ icregexeqsel _null_ _null_ _null_ ));
DESCR("restriction selectivity of case-insensitive regex match");
-DATA(insert OID = 1821 ( regexnesel PGNSP PGUID 12 1 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ regexnesel _null_ _null_ _null_ ));
+DATA(insert OID = 1821 ( regexnesel PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ regexnesel _null_ _null_ _null_ ));
DESCR("restriction selectivity of regex non-match");
-DATA(insert OID = 1822 ( nlikesel PGNSP PGUID 12 1 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ nlikesel _null_ _null_ _null_ ));
+DATA(insert OID = 1822 ( nlikesel PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ nlikesel _null_ _null_ _null_ ));
DESCR("restriction selectivity of NOT LIKE");
-DATA(insert OID = 1823 ( icregexnesel PGNSP PGUID 12 1 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ icregexnesel _null_ _null_ _null_ ));
+DATA(insert OID = 1823 ( icregexnesel PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ icregexnesel _null_ _null_ _null_ ));
DESCR("restriction selectivity of case-insensitive regex non-match");
-DATA(insert OID = 1824 ( regexeqjoinsel PGNSP PGUID 12 1 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ regexeqjoinsel _null_ _null_ _null_ ));
+DATA(insert OID = 1824 ( regexeqjoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ regexeqjoinsel _null_ _null_ _null_ ));
DESCR("join selectivity of regex match");
-DATA(insert OID = 1825 ( likejoinsel PGNSP PGUID 12 1 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ likejoinsel _null_ _null_ _null_ ));
+DATA(insert OID = 1825 ( likejoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ likejoinsel _null_ _null_ _null_ ));
DESCR("join selectivity of LIKE");
-DATA(insert OID = 1826 ( icregexeqjoinsel PGNSP PGUID 12 1 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ icregexeqjoinsel _null_ _null_ _null_ ));
+DATA(insert OID = 1826 ( icregexeqjoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ icregexeqjoinsel _null_ _null_ _null_ ));
DESCR("join selectivity of case-insensitive regex match");
-DATA(insert OID = 1827 ( regexnejoinsel PGNSP PGUID 12 1 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ regexnejoinsel _null_ _null_ _null_ ));
+DATA(insert OID = 1827 ( regexnejoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ regexnejoinsel _null_ _null_ _null_ ));
DESCR("join selectivity of regex non-match");
-DATA(insert OID = 1828 ( nlikejoinsel PGNSP PGUID 12 1 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ nlikejoinsel _null_ _null_ _null_ ));
+DATA(insert OID = 1828 ( nlikejoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ nlikejoinsel _null_ _null_ _null_ ));
DESCR("join selectivity of NOT LIKE");
-DATA(insert OID = 1829 ( icregexnejoinsel PGNSP PGUID 12 1 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ icregexnejoinsel _null_ _null_ _null_ ));
+DATA(insert OID = 1829 ( icregexnejoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ icregexnejoinsel _null_ _null_ _null_ ));
DESCR("join selectivity of case-insensitive regex non-match");
/* Aggregate-related functions */
-DATA(insert OID = 1830 ( float8_avg PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_avg _null_ _null_ _null_ ));
+DATA(insert OID = 1830 ( float8_avg PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_avg _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 2512 ( float8_var_pop PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_var_pop _null_ _null_ _null_ ));
+DATA(insert OID = 2512 ( float8_var_pop PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_var_pop _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 1831 ( float8_var_samp PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_var_samp _null_ _null_ _null_ ));
+DATA(insert OID = 1831 ( float8_var_samp PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_var_samp _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 2513 ( float8_stddev_pop PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_stddev_pop _null_ _null_ _null_ ));
+DATA(insert OID = 2513 ( float8_stddev_pop PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_stddev_pop _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 1832 ( float8_stddev_samp PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_stddev_samp _null_ _null_ _null_ ));
+DATA(insert OID = 1832 ( float8_stddev_samp PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_stddev_samp _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 1833 ( numeric_accum PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1231 "1231 1700" _null_ _null_ _null_ _null_ numeric_accum _null_ _null_ _null_ ));
+DATA(insert OID = 1833 ( numeric_accum PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1231 "1231 1700" _null_ _null_ _null_ _null_ numeric_accum _null_ _null_ _null_ ));
DESCR("aggregate transition function");
-DATA(insert OID = 2858 ( numeric_avg_accum PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1231 "1231 1700" _null_ _null_ _null_ _null_ numeric_avg_accum _null_ _null_ _null_ ));
+DATA(insert OID = 2858 ( numeric_avg_accum PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1231 "1231 1700" _null_ _null_ _null_ _null_ numeric_avg_accum _null_ _null_ _null_ ));
DESCR("aggregate transition function");
-DATA(insert OID = 1834 ( int2_accum PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1231 "1231 21" _null_ _null_ _null_ _null_ int2_accum _null_ _null_ _null_ ));
+DATA(insert OID = 1834 ( int2_accum PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1231 "1231 21" _null_ _null_ _null_ _null_ int2_accum _null_ _null_ _null_ ));
DESCR("aggregate transition function");
-DATA(insert OID = 1835 ( int4_accum PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1231 "1231 23" _null_ _null_ _null_ _null_ int4_accum _null_ _null_ _null_ ));
+DATA(insert OID = 1835 ( int4_accum PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1231 "1231 23" _null_ _null_ _null_ _null_ int4_accum _null_ _null_ _null_ ));
DESCR("aggregate transition function");
-DATA(insert OID = 1836 ( int8_accum PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1231 "1231 20" _null_ _null_ _null_ _null_ int8_accum _null_ _null_ _null_ ));
+DATA(insert OID = 1836 ( int8_accum PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1231 "1231 20" _null_ _null_ _null_ _null_ int8_accum _null_ _null_ _null_ ));
DESCR("aggregate transition function");
-DATA(insert OID = 2746 ( int8_avg_accum PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1231 "1231 20" _null_ _null_ _null_ _null_ int8_avg_accum _null_ _null_ _null_ ));
+DATA(insert OID = 2746 ( int8_avg_accum PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1231 "1231 20" _null_ _null_ _null_ _null_ int8_avg_accum _null_ _null_ _null_ ));
DESCR("aggregate transition function");
-DATA(insert OID = 1837 ( numeric_avg PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "1231" _null_ _null_ _null_ _null_ numeric_avg _null_ _null_ _null_ ));
+DATA(insert OID = 1837 ( numeric_avg PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "1231" _null_ _null_ _null_ _null_ numeric_avg _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 2514 ( numeric_var_pop PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "1231" _null_ _null_ _null_ _null_ numeric_var_pop _null_ _null_ _null_ ));
+DATA(insert OID = 2514 ( numeric_var_pop PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "1231" _null_ _null_ _null_ _null_ numeric_var_pop _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 1838 ( numeric_var_samp PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "1231" _null_ _null_ _null_ _null_ numeric_var_samp _null_ _null_ _null_ ));
+DATA(insert OID = 1838 ( numeric_var_samp PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "1231" _null_ _null_ _null_ _null_ numeric_var_samp _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 2596 ( numeric_stddev_pop PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "1231" _null_ _null_ _null_ _null_ numeric_stddev_pop _null_ _null_ _null_ ));
+DATA(insert OID = 2596 ( numeric_stddev_pop PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "1231" _null_ _null_ _null_ _null_ numeric_stddev_pop _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 1839 ( numeric_stddev_samp PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "1231" _null_ _null_ _null_ _null_ numeric_stddev_samp _null_ _null_ _null_ ));
+DATA(insert OID = 1839 ( numeric_stddev_samp PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "1231" _null_ _null_ _null_ _null_ numeric_stddev_samp _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 1840 ( int2_sum PGNSP PGUID 12 1 0 0 f f f f f i 2 0 20 "20 21" _null_ _null_ _null_ _null_ int2_sum _null_ _null_ _null_ ));
+DATA(insert OID = 1840 ( int2_sum PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 20 "20 21" _null_ _null_ _null_ _null_ int2_sum _null_ _null_ _null_ ));
DESCR("aggregate transition function");
-DATA(insert OID = 1841 ( int4_sum PGNSP PGUID 12 1 0 0 f f f f f i 2 0 20 "20 23" _null_ _null_ _null_ _null_ int4_sum _null_ _null_ _null_ ));
+DATA(insert OID = 1841 ( int4_sum PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 20 "20 23" _null_ _null_ _null_ _null_ int4_sum _null_ _null_ _null_ ));
DESCR("aggregate transition function");
-DATA(insert OID = 1842 ( int8_sum PGNSP PGUID 12 1 0 0 f f f f f i 2 0 1700 "1700 20" _null_ _null_ _null_ _null_ int8_sum _null_ _null_ _null_ ));
+DATA(insert OID = 1842 ( int8_sum PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 1700 "1700 20" _null_ _null_ _null_ _null_ int8_sum _null_ _null_ _null_ ));
DESCR("aggregate transition function");
-DATA(insert OID = 1843 ( interval_accum PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1187 "1187 1186" _null_ _null_ _null_ _null_ interval_accum _null_ _null_ _null_ ));
+DATA(insert OID = 1843 ( interval_accum PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1187 "1187 1186" _null_ _null_ _null_ _null_ interval_accum _null_ _null_ _null_ ));
DESCR("aggregate transition function");
-DATA(insert OID = 1844 ( interval_avg PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1186 "1187" _null_ _null_ _null_ _null_ interval_avg _null_ _null_ _null_ ));
+DATA(insert OID = 1844 ( interval_avg PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1186 "1187" _null_ _null_ _null_ _null_ interval_avg _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 1962 ( int2_avg_accum PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1016 "1016 21" _null_ _null_ _null_ _null_ int2_avg_accum _null_ _null_ _null_ ));
+DATA(insert OID = 1962 ( int2_avg_accum PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1016 "1016 21" _null_ _null_ _null_ _null_ int2_avg_accum _null_ _null_ _null_ ));
DESCR("aggregate transition function");
-DATA(insert OID = 1963 ( int4_avg_accum PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1016 "1016 23" _null_ _null_ _null_ _null_ int4_avg_accum _null_ _null_ _null_ ));
+DATA(insert OID = 1963 ( int4_avg_accum PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1016 "1016 23" _null_ _null_ _null_ _null_ int4_avg_accum _null_ _null_ _null_ ));
DESCR("aggregate transition function");
-DATA(insert OID = 1964 ( int8_avg PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "1016" _null_ _null_ _null_ _null_ int8_avg _null_ _null_ _null_ ));
+DATA(insert OID = 1964 ( int8_avg PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "1016" _null_ _null_ _null_ _null_ int8_avg _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 2805 ( int8inc_float8_float8 PGNSP PGUID 12 1 0 0 f f f t f i 3 0 20 "20 701 701" _null_ _null_ _null_ _null_ int8inc_float8_float8 _null_ _null_ _null_ ));
+DATA(insert OID = 2805 ( int8inc_float8_float8 PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 20 "20 701 701" _null_ _null_ _null_ _null_ int8inc_float8_float8 _null_ _null_ _null_ ));
DESCR("aggregate transition function");
-DATA(insert OID = 2806 ( float8_regr_accum PGNSP PGUID 12 1 0 0 f f f t f i 3 0 1022 "1022 701 701" _null_ _null_ _null_ _null_ float8_regr_accum _null_ _null_ _null_ ));
+DATA(insert OID = 2806 ( float8_regr_accum PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 1022 "1022 701 701" _null_ _null_ _null_ _null_ float8_regr_accum _null_ _null_ _null_ ));
DESCR("aggregate transition function");
-DATA(insert OID = 2807 ( float8_regr_sxx PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_regr_sxx _null_ _null_ _null_ ));
+DATA(insert OID = 2807 ( float8_regr_sxx PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_regr_sxx _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 2808 ( float8_regr_syy PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_regr_syy _null_ _null_ _null_ ));
+DATA(insert OID = 2808 ( float8_regr_syy PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_regr_syy _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 2809 ( float8_regr_sxy PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_regr_sxy _null_ _null_ _null_ ));
+DATA(insert OID = 2809 ( float8_regr_sxy PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_regr_sxy _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 2810 ( float8_regr_avgx PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_regr_avgx _null_ _null_ _null_ ));
+DATA(insert OID = 2810 ( float8_regr_avgx PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_regr_avgx _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 2811 ( float8_regr_avgy PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_regr_avgy _null_ _null_ _null_ ));
+DATA(insert OID = 2811 ( float8_regr_avgy PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_regr_avgy _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 2812 ( float8_regr_r2 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_regr_r2 _null_ _null_ _null_ ));
+DATA(insert OID = 2812 ( float8_regr_r2 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_regr_r2 _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 2813 ( float8_regr_slope PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_regr_slope _null_ _null_ _null_ ));
+DATA(insert OID = 2813 ( float8_regr_slope PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_regr_slope _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 2814 ( float8_regr_intercept PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_regr_intercept _null_ _null_ _null_ ));
+DATA(insert OID = 2814 ( float8_regr_intercept PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_regr_intercept _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 2815 ( float8_covar_pop PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_covar_pop _null_ _null_ _null_ ));
+DATA(insert OID = 2815 ( float8_covar_pop PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_covar_pop _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 2816 ( float8_covar_samp PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_covar_samp _null_ _null_ _null_ ));
+DATA(insert OID = 2816 ( float8_covar_samp PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_covar_samp _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 2817 ( float8_corr PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_corr _null_ _null_ _null_ ));
+DATA(insert OID = 2817 ( float8_corr PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "1022" _null_ _null_ _null_ _null_ float8_corr _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 3535 ( string_agg_transfn PGNSP PGUID 12 1 0 0 f f f f f i 3 0 2281 "2281 25 25" _null_ _null_ _null_ _null_ string_agg_transfn _null_ _null_ _null_ ));
+DATA(insert OID = 3535 ( string_agg_transfn PGNSP PGUID 12 1 0 0 0 f f f f f i 3 0 2281 "2281 25 25" _null_ _null_ _null_ _null_ string_agg_transfn _null_ _null_ _null_ ));
DESCR("aggregate transition function");
-DATA(insert OID = 3536 ( string_agg_finalfn PGNSP PGUID 12 1 0 0 f f f f f i 1 0 25 "2281" _null_ _null_ _null_ _null_ string_agg_finalfn _null_ _null_ _null_ ));
+DATA(insert OID = 3536 ( string_agg_finalfn PGNSP PGUID 12 1 0 0 0 f f f f f i 1 0 25 "2281" _null_ _null_ _null_ _null_ string_agg_finalfn _null_ _null_ _null_ ));
DESCR("aggregate final function");
-DATA(insert OID = 3538 ( string_agg PGNSP PGUID 12 1 0 0 t f f f f i 2 0 25 "25 25" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 3538 ( string_agg PGNSP PGUID 12 1 0 0 0 t f f f f i 2 0 25 "25 25" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("concatenate aggregate input into a string");
/* To ASCII conversion */
-DATA(insert OID = 1845 ( to_ascii PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ to_ascii_default _null_ _null_ _null_ ));
+DATA(insert OID = 1845 ( to_ascii PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ to_ascii_default _null_ _null_ _null_ ));
DESCR("encode text from DB encoding to ASCII text");
-DATA(insert OID = 1846 ( to_ascii PGNSP PGUID 12 1 0 0 f f f t f i 2 0 25 "25 23" _null_ _null_ _null_ _null_ to_ascii_enc _null_ _null_ _null_ ));
+DATA(insert OID = 1846 ( to_ascii PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 25 "25 23" _null_ _null_ _null_ _null_ to_ascii_enc _null_ _null_ _null_ ));
DESCR("encode text from encoding to ASCII text");
-DATA(insert OID = 1847 ( to_ascii PGNSP PGUID 12 1 0 0 f f f t f i 2 0 25 "25 19" _null_ _null_ _null_ _null_ to_ascii_encname _null_ _null_ _null_ ));
+DATA(insert OID = 1847 ( to_ascii PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 25 "25 19" _null_ _null_ _null_ _null_ to_ascii_encname _null_ _null_ _null_ ));
DESCR("encode text from encoding to ASCII text");
-DATA(insert OID = 1848 ( interval_pl_time PGNSP PGUID 14 1 0 0 f f f t f i 2 0 1083 "1186 1083" _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ ));
-
-DATA(insert OID = 1850 ( int28eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "21 20" _null_ _null_ _null_ _null_ int28eq _null_ _null_ _null_ ));
-DATA(insert OID = 1851 ( int28ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "21 20" _null_ _null_ _null_ _null_ int28ne _null_ _null_ _null_ ));
-DATA(insert OID = 1852 ( int28lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "21 20" _null_ _null_ _null_ _null_ int28lt _null_ _null_ _null_ ));
-DATA(insert OID = 1853 ( int28gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "21 20" _null_ _null_ _null_ _null_ int28gt _null_ _null_ _null_ ));
-DATA(insert OID = 1854 ( int28le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "21 20" _null_ _null_ _null_ _null_ int28le _null_ _null_ _null_ ));
-DATA(insert OID = 1855 ( int28ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "21 20" _null_ _null_ _null_ _null_ int28ge _null_ _null_ _null_ ));
-
-DATA(insert OID = 1856 ( int82eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "20 21" _null_ _null_ _null_ _null_ int82eq _null_ _null_ _null_ ));
-DATA(insert OID = 1857 ( int82ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "20 21" _null_ _null_ _null_ _null_ int82ne _null_ _null_ _null_ ));
-DATA(insert OID = 1858 ( int82lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "20 21" _null_ _null_ _null_ _null_ int82lt _null_ _null_ _null_ ));
-DATA(insert OID = 1859 ( int82gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "20 21" _null_ _null_ _null_ _null_ int82gt _null_ _null_ _null_ ));
-DATA(insert OID = 1860 ( int82le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "20 21" _null_ _null_ _null_ _null_ int82le _null_ _null_ _null_ ));
-DATA(insert OID = 1861 ( int82ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "20 21" _null_ _null_ _null_ _null_ int82ge _null_ _null_ _null_ ));
-
-DATA(insert OID = 1892 ( int2and PGNSP PGUID 12 1 0 0 f f f t f i 2 0 21 "21 21" _null_ _null_ _null_ _null_ int2and _null_ _null_ _null_ ));
-DATA(insert OID = 1893 ( int2or PGNSP PGUID 12 1 0 0 f f f t f i 2 0 21 "21 21" _null_ _null_ _null_ _null_ int2or _null_ _null_ _null_ ));
-DATA(insert OID = 1894 ( int2xor PGNSP PGUID 12 1 0 0 f f f t f i 2 0 21 "21 21" _null_ _null_ _null_ _null_ int2xor _null_ _null_ _null_ ));
-DATA(insert OID = 1895 ( int2not PGNSP PGUID 12 1 0 0 f f f t f i 1 0 21 "21" _null_ _null_ _null_ _null_ int2not _null_ _null_ _null_ ));
-DATA(insert OID = 1896 ( int2shl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 21 "21 23" _null_ _null_ _null_ _null_ int2shl _null_ _null_ _null_ ));
-DATA(insert OID = 1897 ( int2shr PGNSP PGUID 12 1 0 0 f f f t f i 2 0 21 "21 23" _null_ _null_ _null_ _null_ int2shr _null_ _null_ _null_ ));
-
-DATA(insert OID = 1898 ( int4and PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4and _null_ _null_ _null_ ));
-DATA(insert OID = 1899 ( int4or PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4or _null_ _null_ _null_ ));
-DATA(insert OID = 1900 ( int4xor PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4xor _null_ _null_ _null_ ));
-DATA(insert OID = 1901 ( int4not PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "23" _null_ _null_ _null_ _null_ int4not _null_ _null_ _null_ ));
-DATA(insert OID = 1902 ( int4shl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4shl _null_ _null_ _null_ ));
-DATA(insert OID = 1903 ( int4shr PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4shr _null_ _null_ _null_ ));
-
-DATA(insert OID = 1904 ( int8and PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "20 20" _null_ _null_ _null_ _null_ int8and _null_ _null_ _null_ ));
-DATA(insert OID = 1905 ( int8or PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "20 20" _null_ _null_ _null_ _null_ int8or _null_ _null_ _null_ ));
-DATA(insert OID = 1906 ( int8xor PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "20 20" _null_ _null_ _null_ _null_ int8xor _null_ _null_ _null_ ));
-DATA(insert OID = 1907 ( int8not PGNSP PGUID 12 1 0 0 f f f t f i 1 0 20 "20" _null_ _null_ _null_ _null_ int8not _null_ _null_ _null_ ));
-DATA(insert OID = 1908 ( int8shl PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "20 23" _null_ _null_ _null_ _null_ int8shl _null_ _null_ _null_ ));
-DATA(insert OID = 1909 ( int8shr PGNSP PGUID 12 1 0 0 f f f t f i 2 0 20 "20 23" _null_ _null_ _null_ _null_ int8shr _null_ _null_ _null_ ));
-
-DATA(insert OID = 1910 ( int8up PGNSP PGUID 12 1 0 0 f f f t f i 1 0 20 "20" _null_ _null_ _null_ _null_ int8up _null_ _null_ _null_ ));
-DATA(insert OID = 1911 ( int2up PGNSP PGUID 12 1 0 0 f f f t f i 1 0 21 "21" _null_ _null_ _null_ _null_ int2up _null_ _null_ _null_ ));
-DATA(insert OID = 1912 ( int4up PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "23" _null_ _null_ _null_ _null_ int4up _null_ _null_ _null_ ));
-DATA(insert OID = 1913 ( float4up PGNSP PGUID 12 1 0 0 f f f t f i 1 0 700 "700" _null_ _null_ _null_ _null_ float4up _null_ _null_ _null_ ));
-DATA(insert OID = 1914 ( float8up PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ float8up _null_ _null_ _null_ ));
-DATA(insert OID = 1915 ( numeric_uplus PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_uplus _null_ _null_ _null_ ));
-
-DATA(insert OID = 1922 ( has_table_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ has_table_privilege_name_name _null_ _null_ _null_ ));
+DATA(insert OID = 1848 ( interval_pl_time PGNSP PGUID 14 1 0 0 0 f f f t f i 2 0 1083 "1186 1083" _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ ));
+
+DATA(insert OID = 1850 ( int28eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "21 20" _null_ _null_ _null_ _null_ int28eq _null_ _null_ _null_ ));
+DATA(insert OID = 1851 ( int28ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "21 20" _null_ _null_ _null_ _null_ int28ne _null_ _null_ _null_ ));
+DATA(insert OID = 1852 ( int28lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "21 20" _null_ _null_ _null_ _null_ int28lt _null_ _null_ _null_ ));
+DATA(insert OID = 1853 ( int28gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "21 20" _null_ _null_ _null_ _null_ int28gt _null_ _null_ _null_ ));
+DATA(insert OID = 1854 ( int28le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "21 20" _null_ _null_ _null_ _null_ int28le _null_ _null_ _null_ ));
+DATA(insert OID = 1855 ( int28ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "21 20" _null_ _null_ _null_ _null_ int28ge _null_ _null_ _null_ ));
+
+DATA(insert OID = 1856 ( int82eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "20 21" _null_ _null_ _null_ _null_ int82eq _null_ _null_ _null_ ));
+DATA(insert OID = 1857 ( int82ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "20 21" _null_ _null_ _null_ _null_ int82ne _null_ _null_ _null_ ));
+DATA(insert OID = 1858 ( int82lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "20 21" _null_ _null_ _null_ _null_ int82lt _null_ _null_ _null_ ));
+DATA(insert OID = 1859 ( int82gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "20 21" _null_ _null_ _null_ _null_ int82gt _null_ _null_ _null_ ));
+DATA(insert OID = 1860 ( int82le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "20 21" _null_ _null_ _null_ _null_ int82le _null_ _null_ _null_ ));
+DATA(insert OID = 1861 ( int82ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "20 21" _null_ _null_ _null_ _null_ int82ge _null_ _null_ _null_ ));
+
+DATA(insert OID = 1892 ( int2and PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 21 "21 21" _null_ _null_ _null_ _null_ int2and _null_ _null_ _null_ ));
+DATA(insert OID = 1893 ( int2or PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 21 "21 21" _null_ _null_ _null_ _null_ int2or _null_ _null_ _null_ ));
+DATA(insert OID = 1894 ( int2xor PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 21 "21 21" _null_ _null_ _null_ _null_ int2xor _null_ _null_ _null_ ));
+DATA(insert OID = 1895 ( int2not PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 21 "21" _null_ _null_ _null_ _null_ int2not _null_ _null_ _null_ ));
+DATA(insert OID = 1896 ( int2shl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 21 "21 23" _null_ _null_ _null_ _null_ int2shl _null_ _null_ _null_ ));
+DATA(insert OID = 1897 ( int2shr PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 21 "21 23" _null_ _null_ _null_ _null_ int2shr _null_ _null_ _null_ ));
+
+DATA(insert OID = 1898 ( int4and PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4and _null_ _null_ _null_ ));
+DATA(insert OID = 1899 ( int4or PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4or _null_ _null_ _null_ ));
+DATA(insert OID = 1900 ( int4xor PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4xor _null_ _null_ _null_ ));
+DATA(insert OID = 1901 ( int4not PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "23" _null_ _null_ _null_ _null_ int4not _null_ _null_ _null_ ));
+DATA(insert OID = 1902 ( int4shl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4shl _null_ _null_ _null_ ));
+DATA(insert OID = 1903 ( int4shr PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "23 23" _null_ _null_ _null_ _null_ int4shr _null_ _null_ _null_ ));
+
+DATA(insert OID = 1904 ( int8and PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "20 20" _null_ _null_ _null_ _null_ int8and _null_ _null_ _null_ ));
+DATA(insert OID = 1905 ( int8or PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "20 20" _null_ _null_ _null_ _null_ int8or _null_ _null_ _null_ ));
+DATA(insert OID = 1906 ( int8xor PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "20 20" _null_ _null_ _null_ _null_ int8xor _null_ _null_ _null_ ));
+DATA(insert OID = 1907 ( int8not PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 20 "20" _null_ _null_ _null_ _null_ int8not _null_ _null_ _null_ ));
+DATA(insert OID = 1908 ( int8shl PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "20 23" _null_ _null_ _null_ _null_ int8shl _null_ _null_ _null_ ));
+DATA(insert OID = 1909 ( int8shr PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 20 "20 23" _null_ _null_ _null_ _null_ int8shr _null_ _null_ _null_ ));
+
+DATA(insert OID = 1910 ( int8up PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 20 "20" _null_ _null_ _null_ _null_ int8up _null_ _null_ _null_ ));
+DATA(insert OID = 1911 ( int2up PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 21 "21" _null_ _null_ _null_ _null_ int2up _null_ _null_ _null_ ));
+DATA(insert OID = 1912 ( int4up PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "23" _null_ _null_ _null_ _null_ int4up _null_ _null_ _null_ ));
+DATA(insert OID = 1913 ( float4up PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 700 "700" _null_ _null_ _null_ _null_ float4up _null_ _null_ _null_ ));
+DATA(insert OID = 1914 ( float8up PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "701" _null_ _null_ _null_ _null_ float8up _null_ _null_ _null_ ));
+DATA(insert OID = 1915 ( numeric_uplus PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ numeric_uplus _null_ _null_ _null_ ));
+
+DATA(insert OID = 1922 ( has_table_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ has_table_privilege_name_name _null_ _null_ _null_ ));
DESCR("user privilege on relation by username, rel name");
-DATA(insert OID = 1923 ( has_table_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ has_table_privilege_name_id _null_ _null_ _null_ ));
+DATA(insert OID = 1923 ( has_table_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ has_table_privilege_name_id _null_ _null_ _null_ ));
DESCR("user privilege on relation by username, rel oid");
-DATA(insert OID = 1924 ( has_table_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ has_table_privilege_id_name _null_ _null_ _null_ ));
+DATA(insert OID = 1924 ( has_table_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ has_table_privilege_id_name _null_ _null_ _null_ ));
DESCR("user privilege on relation by user oid, rel name");
-DATA(insert OID = 1925 ( has_table_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ has_table_privilege_id_id _null_ _null_ _null_ ));
+DATA(insert OID = 1925 ( has_table_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ has_table_privilege_id_id _null_ _null_ _null_ ));
DESCR("user privilege on relation by user oid, rel oid");
-DATA(insert OID = 1926 ( has_table_privilege PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ has_table_privilege_name _null_ _null_ _null_ ));
+DATA(insert OID = 1926 ( has_table_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ has_table_privilege_name _null_ _null_ _null_ ));
DESCR("current user privilege on relation by rel name");
-DATA(insert OID = 1927 ( has_table_privilege PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "26 25" _null_ _null_ _null_ _null_ has_table_privilege_id _null_ _null_ _null_ ));
+DATA(insert OID = 1927 ( has_table_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "26 25" _null_ _null_ _null_ _null_ has_table_privilege_id _null_ _null_ _null_ ));
DESCR("current user privilege on relation by rel oid");
-DATA(insert OID = 2181 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ has_sequence_privilege_name_name _null_ _null_ _null_ ));
+DATA(insert OID = 2181 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ has_sequence_privilege_name_name _null_ _null_ _null_ ));
DESCR("user privilege on sequence by username, seq name");
-DATA(insert OID = 2182 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ has_sequence_privilege_name_id _null_ _null_ _null_ ));
+DATA(insert OID = 2182 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ has_sequence_privilege_name_id _null_ _null_ _null_ ));
DESCR("user privilege on sequence by username, seq oid");
-DATA(insert OID = 2183 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ has_sequence_privilege_id_name _null_ _null_ _null_ ));
+DATA(insert OID = 2183 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ has_sequence_privilege_id_name _null_ _null_ _null_ ));
DESCR("user privilege on sequence by user oid, seq name");
-DATA(insert OID = 2184 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ has_sequence_privilege_id_id _null_ _null_ _null_ ));
+DATA(insert OID = 2184 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ has_sequence_privilege_id_id _null_ _null_ _null_ ));
DESCR("user privilege on sequence by user oid, seq oid");
-DATA(insert OID = 2185 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ has_sequence_privilege_name _null_ _null_ _null_ ));
+DATA(insert OID = 2185 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ has_sequence_privilege_name _null_ _null_ _null_ ));
DESCR("current user privilege on sequence by seq name");
-DATA(insert OID = 2186 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "26 25" _null_ _null_ _null_ _null_ has_sequence_privilege_id _null_ _null_ _null_ ));
+DATA(insert OID = 2186 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "26 25" _null_ _null_ _null_ _null_ has_sequence_privilege_id _null_ _null_ _null_ ));
DESCR("current user privilege on sequence by seq oid");
-DATA(insert OID = 3012 ( has_column_privilege PGNSP PGUID 12 1 0 0 f f f t f s 4 0 16 "19 25 25 25" _null_ _null_ _null_ _null_ has_column_privilege_name_name_name _null_ _null_ _null_ ));
+DATA(insert OID = 3012 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 16 "19 25 25 25" _null_ _null_ _null_ _null_ has_column_privilege_name_name_name _null_ _null_ _null_ ));
DESCR("user privilege on column by username, rel name, col name");
-DATA(insert OID = 3013 ( has_column_privilege PGNSP PGUID 12 1 0 0 f f f t f s 4 0 16 "19 25 21 25" _null_ _null_ _null_ _null_ has_column_privilege_name_name_attnum _null_ _null_ _null_ ));
+DATA(insert OID = 3013 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 16 "19 25 21 25" _null_ _null_ _null_ _null_ has_column_privilege_name_name_attnum _null_ _null_ _null_ ));
DESCR("user privilege on column by username, rel name, col attnum");
-DATA(insert OID = 3014 ( has_column_privilege PGNSP PGUID 12 1 0 0 f f f t f s 4 0 16 "19 26 25 25" _null_ _null_ _null_ _null_ has_column_privilege_name_id_name _null_ _null_ _null_ ));
+DATA(insert OID = 3014 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 16 "19 26 25 25" _null_ _null_ _null_ _null_ has_column_privilege_name_id_name _null_ _null_ _null_ ));
DESCR("user privilege on column by username, rel oid, col name");
-DATA(insert OID = 3015 ( has_column_privilege PGNSP PGUID 12 1 0 0 f f f t f s 4 0 16 "19 26 21 25" _null_ _null_ _null_ _null_ has_column_privilege_name_id_attnum _null_ _null_ _null_ ));
+DATA(insert OID = 3015 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 16 "19 26 21 25" _null_ _null_ _null_ _null_ has_column_privilege_name_id_attnum _null_ _null_ _null_ ));
DESCR("user privilege on column by username, rel oid, col attnum");
-DATA(insert OID = 3016 ( has_column_privilege PGNSP PGUID 12 1 0 0 f f f t f s 4 0 16 "26 25 25 25" _null_ _null_ _null_ _null_ has_column_privilege_id_name_name _null_ _null_ _null_ ));
+DATA(insert OID = 3016 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 16 "26 25 25 25" _null_ _null_ _null_ _null_ has_column_privilege_id_name_name _null_ _null_ _null_ ));
DESCR("user privilege on column by user oid, rel name, col name");
-DATA(insert OID = 3017 ( has_column_privilege PGNSP PGUID 12 1 0 0 f f f t f s 4 0 16 "26 25 21 25" _null_ _null_ _null_ _null_ has_column_privilege_id_name_attnum _null_ _null_ _null_ ));
+DATA(insert OID = 3017 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 16 "26 25 21 25" _null_ _null_ _null_ _null_ has_column_privilege_id_name_attnum _null_ _null_ _null_ ));
DESCR("user privilege on column by user oid, rel name, col attnum");
-DATA(insert OID = 3018 ( has_column_privilege PGNSP PGUID 12 1 0 0 f f f t f s 4 0 16 "26 26 25 25" _null_ _null_ _null_ _null_ has_column_privilege_id_id_name _null_ _null_ _null_ ));
+DATA(insert OID = 3018 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 16 "26 26 25 25" _null_ _null_ _null_ _null_ has_column_privilege_id_id_name _null_ _null_ _null_ ));
DESCR("user privilege on column by user oid, rel oid, col name");
-DATA(insert OID = 3019 ( has_column_privilege PGNSP PGUID 12 1 0 0 f f f t f s 4 0 16 "26 26 21 25" _null_ _null_ _null_ _null_ has_column_privilege_id_id_attnum _null_ _null_ _null_ ));
+DATA(insert OID = 3019 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 16 "26 26 21 25" _null_ _null_ _null_ _null_ has_column_privilege_id_id_attnum _null_ _null_ _null_ ));
DESCR("user privilege on column by user oid, rel oid, col attnum");
-DATA(insert OID = 3020 ( has_column_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "25 25 25" _null_ _null_ _null_ _null_ has_column_privilege_name_name _null_ _null_ _null_ ));
+DATA(insert OID = 3020 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "25 25 25" _null_ _null_ _null_ _null_ has_column_privilege_name_name _null_ _null_ _null_ ));
DESCR("current user privilege on column by rel name, col name");
-DATA(insert OID = 3021 ( has_column_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "25 21 25" _null_ _null_ _null_ _null_ has_column_privilege_name_attnum _null_ _null_ _null_ ));
+DATA(insert OID = 3021 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "25 21 25" _null_ _null_ _null_ _null_ has_column_privilege_name_attnum _null_ _null_ _null_ ));
DESCR("current user privilege on column by rel name, col attnum");
-DATA(insert OID = 3022 ( has_column_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ has_column_privilege_id_name _null_ _null_ _null_ ));
+DATA(insert OID = 3022 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ has_column_privilege_id_name _null_ _null_ _null_ ));
DESCR("current user privilege on column by rel oid, col name");
-DATA(insert OID = 3023 ( has_column_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "26 21 25" _null_ _null_ _null_ _null_ has_column_privilege_id_attnum _null_ _null_ _null_ ));
+DATA(insert OID = 3023 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "26 21 25" _null_ _null_ _null_ _null_ has_column_privilege_id_attnum _null_ _null_ _null_ ));
DESCR("current user privilege on column by rel oid, col attnum");
-DATA(insert OID = 3024 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 f f f t f s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ has_any_column_privilege_name_name _null_ _null_ _null_ ));
+DATA(insert OID = 3024 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 0 f f f t f s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ has_any_column_privilege_name_name _null_ _null_ _null_ ));
DESCR("user privilege on any column by username, rel name");
-DATA(insert OID = 3025 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 f f f t f s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ has_any_column_privilege_name_id _null_ _null_ _null_ ));
+DATA(insert OID = 3025 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 0 f f f t f s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ has_any_column_privilege_name_id _null_ _null_ _null_ ));
DESCR("user privilege on any column by username, rel oid");
-DATA(insert OID = 3026 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 f f f t f s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ has_any_column_privilege_id_name _null_ _null_ _null_ ));
+DATA(insert OID = 3026 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 0 f f f t f s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ has_any_column_privilege_id_name _null_ _null_ _null_ ));
DESCR("user privilege on any column by user oid, rel name");
-DATA(insert OID = 3027 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 f f f t f s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ has_any_column_privilege_id_id _null_ _null_ _null_ ));
+DATA(insert OID = 3027 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 0 f f f t f s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ has_any_column_privilege_id_id _null_ _null_ _null_ ));
DESCR("user privilege on any column by user oid, rel oid");
-DATA(insert OID = 3028 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ has_any_column_privilege_name _null_ _null_ _null_ ));
+DATA(insert OID = 3028 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 0 f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ has_any_column_privilege_name _null_ _null_ _null_ ));
DESCR("current user privilege on any column by rel name");
-DATA(insert OID = 3029 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 f f f t f s 2 0 16 "26 25" _null_ _null_ _null_ _null_ has_any_column_privilege_id _null_ _null_ _null_ ));
+DATA(insert OID = 3029 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 0 f f f t f s 2 0 16 "26 25" _null_ _null_ _null_ _null_ has_any_column_privilege_id _null_ _null_ _null_ ));
DESCR("current user privilege on any column by rel oid");
-DATA(insert OID = 1928 ( pg_stat_get_numscans PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_numscans _null_ _null_ _null_ ));
+DATA(insert OID = 1928 ( pg_stat_get_numscans PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_numscans _null_ _null_ _null_ ));
DESCR("statistics: number of scans done for table/index");
-DATA(insert OID = 1929 ( pg_stat_get_tuples_returned PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_tuples_returned _null_ _null_ _null_ ));
+DATA(insert OID = 1929 ( pg_stat_get_tuples_returned PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_tuples_returned _null_ _null_ _null_ ));
DESCR("statistics: number of tuples read by seqscan");
-DATA(insert OID = 1930 ( pg_stat_get_tuples_fetched PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_tuples_fetched _null_ _null_ _null_ ));
+DATA(insert OID = 1930 ( pg_stat_get_tuples_fetched PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_tuples_fetched _null_ _null_ _null_ ));
DESCR("statistics: number of tuples fetched by idxscan");
-DATA(insert OID = 1931 ( pg_stat_get_tuples_inserted PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_tuples_inserted _null_ _null_ _null_ ));
+DATA(insert OID = 1931 ( pg_stat_get_tuples_inserted PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_tuples_inserted _null_ _null_ _null_ ));
DESCR("statistics: number of tuples inserted");
-DATA(insert OID = 1932 ( pg_stat_get_tuples_updated PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_tuples_updated _null_ _null_ _null_ ));
+DATA(insert OID = 1932 ( pg_stat_get_tuples_updated PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_tuples_updated _null_ _null_ _null_ ));
DESCR("statistics: number of tuples updated");
-DATA(insert OID = 1933 ( pg_stat_get_tuples_deleted PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_tuples_deleted _null_ _null_ _null_ ));
+DATA(insert OID = 1933 ( pg_stat_get_tuples_deleted PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_tuples_deleted _null_ _null_ _null_ ));
DESCR("statistics: number of tuples deleted");
-DATA(insert OID = 1972 ( pg_stat_get_tuples_hot_updated PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_tuples_hot_updated _null_ _null_ _null_ ));
+DATA(insert OID = 1972 ( pg_stat_get_tuples_hot_updated PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_tuples_hot_updated _null_ _null_ _null_ ));
DESCR("statistics: number of tuples hot updated");
-DATA(insert OID = 2878 ( pg_stat_get_live_tuples PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_live_tuples _null_ _null_ _null_ ));
+DATA(insert OID = 2878 ( pg_stat_get_live_tuples PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_live_tuples _null_ _null_ _null_ ));
DESCR("statistics: number of live tuples");
-DATA(insert OID = 2879 ( pg_stat_get_dead_tuples PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_dead_tuples _null_ _null_ _null_ ));
+DATA(insert OID = 2879 ( pg_stat_get_dead_tuples PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_dead_tuples _null_ _null_ _null_ ));
DESCR("statistics: number of dead tuples");
-DATA(insert OID = 1934 ( pg_stat_get_blocks_fetched PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_blocks_fetched _null_ _null_ _null_ ));
+DATA(insert OID = 1934 ( pg_stat_get_blocks_fetched PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_blocks_fetched _null_ _null_ _null_ ));
DESCR("statistics: number of blocks fetched");
-DATA(insert OID = 1935 ( pg_stat_get_blocks_hit PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_blocks_hit _null_ _null_ _null_ ));
+DATA(insert OID = 1935 ( pg_stat_get_blocks_hit PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_blocks_hit _null_ _null_ _null_ ));
DESCR("statistics: number of blocks found in cache");
-DATA(insert OID = 2781 ( pg_stat_get_last_vacuum_time PGNSP PGUID 12 1 0 0 f f f t f s 1 0 1184 "26" _null_ _null_ _null_ _null_ pg_stat_get_last_vacuum_time _null_ _null_ _null_ ));
+DATA(insert OID = 2781 ( pg_stat_get_last_vacuum_time PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 1184 "26" _null_ _null_ _null_ _null_ pg_stat_get_last_vacuum_time _null_ _null_ _null_ ));
DESCR("statistics: last manual vacuum time for a table");
-DATA(insert OID = 2782 ( pg_stat_get_last_autovacuum_time PGNSP PGUID 12 1 0 0 f f f t f s 1 0 1184 "26" _null_ _null_ _null_ _null_ pg_stat_get_last_autovacuum_time _null_ _null_ _null_ ));
+DATA(insert OID = 2782 ( pg_stat_get_last_autovacuum_time PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 1184 "26" _null_ _null_ _null_ _null_ pg_stat_get_last_autovacuum_time _null_ _null_ _null_ ));
DESCR("statistics: last auto vacuum time for a table");
-DATA(insert OID = 2783 ( pg_stat_get_last_analyze_time PGNSP PGUID 12 1 0 0 f f f t f s 1 0 1184 "26" _null_ _null_ _null_ _null_ pg_stat_get_last_analyze_time _null_ _null_ _null_ ));
+DATA(insert OID = 2783 ( pg_stat_get_last_analyze_time PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 1184 "26" _null_ _null_ _null_ _null_ pg_stat_get_last_analyze_time _null_ _null_ _null_ ));
DESCR("statistics: last manual analyze time for a table");
-DATA(insert OID = 2784 ( pg_stat_get_last_autoanalyze_time PGNSP PGUID 12 1 0 0 f f f t f s 1 0 1184 "26" _null_ _null_ _null_ _null_ pg_stat_get_last_autoanalyze_time _null_ _null_ _null_ ));
+DATA(insert OID = 2784 ( pg_stat_get_last_autoanalyze_time PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 1184 "26" _null_ _null_ _null_ _null_ pg_stat_get_last_autoanalyze_time _null_ _null_ _null_ ));
DESCR("statistics: last auto analyze time for a table");
-DATA(insert OID = 3054 ( pg_stat_get_vacuum_count PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_vacuum_count _null_ _null_ _null_ ));
+DATA(insert OID = 3054 ( pg_stat_get_vacuum_count PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_vacuum_count _null_ _null_ _null_ ));
DESCR("statistics: number of manual vacuums for a table");
-DATA(insert OID = 3055 ( pg_stat_get_autovacuum_count PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_autovacuum_count _null_ _null_ _null_ ));
+DATA(insert OID = 3055 ( pg_stat_get_autovacuum_count PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_autovacuum_count _null_ _null_ _null_ ));
DESCR("statistics: number of auto vacuums for a table");
-DATA(insert OID = 3056 ( pg_stat_get_analyze_count PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_analyze_count _null_ _null_ _null_ ));
+DATA(insert OID = 3056 ( pg_stat_get_analyze_count PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_analyze_count _null_ _null_ _null_ ));
DESCR("statistics: number of manual analyzes for a table");
-DATA(insert OID = 3057 ( pg_stat_get_autoanalyze_count PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_autoanalyze_count _null_ _null_ _null_ ));
+DATA(insert OID = 3057 ( pg_stat_get_autoanalyze_count PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_autoanalyze_count _null_ _null_ _null_ ));
DESCR("statistics: number of auto analyzes for a table");
-DATA(insert OID = 1936 ( pg_stat_get_backend_idset PGNSP PGUID 12 1 100 0 f f f t t s 0 0 23 "" _null_ _null_ _null_ _null_ pg_stat_get_backend_idset _null_ _null_ _null_ ));
+DATA(insert OID = 1936 ( pg_stat_get_backend_idset PGNSP PGUID 12 1 100 0 0 f f f t t s 0 0 23 "" _null_ _null_ _null_ _null_ pg_stat_get_backend_idset _null_ _null_ _null_ ));
DESCR("statistics: currently active backend IDs");
-DATA(insert OID = 2022 ( pg_stat_get_activity PGNSP PGUID 12 1 100 0 f f f f t s 1 0 2249 "23" "{23,26,23,26,25,25,16,1184,1184,1184,869,25,23}" "{i,o,o,o,o,o,o,o,o,o,o,o,o}" "{pid,datid,procpid,usesysid,application_name,current_query,waiting,xact_start,query_start,backend_start,client_addr,client_hostname,client_port}" _null_ pg_stat_get_activity _null_ _null_ _null_ ));
+DATA(insert OID = 2022 ( pg_stat_get_activity PGNSP PGUID 12 1 100 0 0 f f f f t s 1 0 2249 "23" "{23,26,23,26,25,25,16,1184,1184,1184,869,25,23}" "{i,o,o,o,o,o,o,o,o,o,o,o,o}" "{pid,datid,procpid,usesysid,application_name,current_query,waiting,xact_start,query_start,backend_start,client_addr,client_hostname,client_port}" _null_ pg_stat_get_activity _null_ _null_ _null_ ));
DESCR("statistics: information about currently active backends");
-DATA(insert OID = 3099 ( pg_stat_get_wal_senders PGNSP PGUID 12 1 10 0 f f f f t s 0 0 2249 "" "{23,25,25,25,25,25,23,25}" "{o,o,o,o,o,o,o,o}" "{procpid,state,sent_location,write_location,flush_location,replay_location,sync_priority,sync_state}" _null_ pg_stat_get_wal_senders _null_ _null_ _null_ ));
+DATA(insert OID = 3099 ( pg_stat_get_wal_senders PGNSP PGUID 12 1 10 0 0 f f f f t s 0 0 2249 "" "{23,25,25,25,25,25,23,25}" "{o,o,o,o,o,o,o,o}" "{procpid,state,sent_location,write_location,flush_location,replay_location,sync_priority,sync_state}" _null_ pg_stat_get_wal_senders _null_ _null_ _null_ ));
DESCR("statistics: information about currently active replication");
-DATA(insert OID = 2026 ( pg_backend_pid PGNSP PGUID 12 1 0 0 f f f t f s 0 0 23 "" _null_ _null_ _null_ _null_ pg_backend_pid _null_ _null_ _null_ ));
+DATA(insert OID = 2026 ( pg_backend_pid PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 23 "" _null_ _null_ _null_ _null_ pg_backend_pid _null_ _null_ _null_ ));
DESCR("statistics: current backend PID");
-DATA(insert OID = 1937 ( pg_stat_get_backend_pid PGNSP PGUID 12 1 0 0 f f f t f s 1 0 23 "23" _null_ _null_ _null_ _null_ pg_stat_get_backend_pid _null_ _null_ _null_ ));
+DATA(insert OID = 1937 ( pg_stat_get_backend_pid PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 23 "23" _null_ _null_ _null_ _null_ pg_stat_get_backend_pid _null_ _null_ _null_ ));
DESCR("statistics: PID of backend");
-DATA(insert OID = 1938 ( pg_stat_get_backend_dbid PGNSP PGUID 12 1 0 0 f f f t f s 1 0 26 "23" _null_ _null_ _null_ _null_ pg_stat_get_backend_dbid _null_ _null_ _null_ ));
+DATA(insert OID = 1938 ( pg_stat_get_backend_dbid PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 26 "23" _null_ _null_ _null_ _null_ pg_stat_get_backend_dbid _null_ _null_ _null_ ));
DESCR("statistics: database ID of backend");
-DATA(insert OID = 1939 ( pg_stat_get_backend_userid PGNSP PGUID 12 1 0 0 f f f t f s 1 0 26 "23" _null_ _null_ _null_ _null_ pg_stat_get_backend_userid _null_ _null_ _null_ ));
+DATA(insert OID = 1939 ( pg_stat_get_backend_userid PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 26 "23" _null_ _null_ _null_ _null_ pg_stat_get_backend_userid _null_ _null_ _null_ ));
DESCR("statistics: user ID of backend");
-DATA(insert OID = 1940 ( pg_stat_get_backend_activity PGNSP PGUID 12 1 0 0 f f f t f s 1 0 25 "23" _null_ _null_ _null_ _null_ pg_stat_get_backend_activity _null_ _null_ _null_ ));
+DATA(insert OID = 1940 ( pg_stat_get_backend_activity PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 25 "23" _null_ _null_ _null_ _null_ pg_stat_get_backend_activity _null_ _null_ _null_ ));
DESCR("statistics: current query of backend");
-DATA(insert OID = 2853 ( pg_stat_get_backend_waiting PGNSP PGUID 12 1 0 0 f f f t f s 1 0 16 "23" _null_ _null_ _null_ _null_ pg_stat_get_backend_waiting _null_ _null_ _null_ ));
+DATA(insert OID = 2853 ( pg_stat_get_backend_waiting PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 16 "23" _null_ _null_ _null_ _null_ pg_stat_get_backend_waiting _null_ _null_ _null_ ));
DESCR("statistics: is backend currently waiting for a lock");
-DATA(insert OID = 2094 ( pg_stat_get_backend_activity_start PGNSP PGUID 12 1 0 0 f f f t f s 1 0 1184 "23" _null_ _null_ _null_ _null_ pg_stat_get_backend_activity_start _null_ _null_ _null_ ));
+DATA(insert OID = 2094 ( pg_stat_get_backend_activity_start PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 1184 "23" _null_ _null_ _null_ _null_ pg_stat_get_backend_activity_start _null_ _null_ _null_ ));
DESCR("statistics: start time for current query of backend");
-DATA(insert OID = 2857 ( pg_stat_get_backend_xact_start PGNSP PGUID 12 1 0 0 f f f t f s 1 0 1184 "23" _null_ _null_ _null_ _null_ pg_stat_get_backend_xact_start _null_ _null_ _null_ ));
+DATA(insert OID = 2857 ( pg_stat_get_backend_xact_start PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 1184 "23" _null_ _null_ _null_ _null_ pg_stat_get_backend_xact_start _null_ _null_ _null_ ));
DESCR("statistics: start time for backend's current transaction");
-DATA(insert OID = 1391 ( pg_stat_get_backend_start PGNSP PGUID 12 1 0 0 f f f t f s 1 0 1184 "23" _null_ _null_ _null_ _null_ pg_stat_get_backend_start _null_ _null_ _null_ ));
+DATA(insert OID = 1391 ( pg_stat_get_backend_start PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 1184 "23" _null_ _null_ _null_ _null_ pg_stat_get_backend_start _null_ _null_ _null_ ));
DESCR("statistics: start time for current backend session");
-DATA(insert OID = 1392 ( pg_stat_get_backend_client_addr PGNSP PGUID 12 1 0 0 f f f t f s 1 0 869 "23" _null_ _null_ _null_ _null_ pg_stat_get_backend_client_addr _null_ _null_ _null_ ));
+DATA(insert OID = 1392 ( pg_stat_get_backend_client_addr PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 869 "23" _null_ _null_ _null_ _null_ pg_stat_get_backend_client_addr _null_ _null_ _null_ ));
DESCR("statistics: address of client connected to backend");
-DATA(insert OID = 1393 ( pg_stat_get_backend_client_port PGNSP PGUID 12 1 0 0 f f f t f s 1 0 23 "23" _null_ _null_ _null_ _null_ pg_stat_get_backend_client_port _null_ _null_ _null_ ));
+DATA(insert OID = 1393 ( pg_stat_get_backend_client_port PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 23 "23" _null_ _null_ _null_ _null_ pg_stat_get_backend_client_port _null_ _null_ _null_ ));
DESCR("statistics: port number of client connected to backend");
-DATA(insert OID = 1941 ( pg_stat_get_db_numbackends PGNSP PGUID 12 1 0 0 f f f t f s 1 0 23 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_numbackends _null_ _null_ _null_ ));
+DATA(insert OID = 1941 ( pg_stat_get_db_numbackends PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 23 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_numbackends _null_ _null_ _null_ ));
DESCR("statistics: number of backends in database");
-DATA(insert OID = 1942 ( pg_stat_get_db_xact_commit PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_xact_commit _null_ _null_ _null_ ));
+DATA(insert OID = 1942 ( pg_stat_get_db_xact_commit PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_xact_commit _null_ _null_ _null_ ));
DESCR("statistics: transactions committed");
-DATA(insert OID = 1943 ( pg_stat_get_db_xact_rollback PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_xact_rollback _null_ _null_ _null_ ));
+DATA(insert OID = 1943 ( pg_stat_get_db_xact_rollback PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_xact_rollback _null_ _null_ _null_ ));
DESCR("statistics: transactions rolled back");
-DATA(insert OID = 1944 ( pg_stat_get_db_blocks_fetched PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_blocks_fetched _null_ _null_ _null_ ));
+DATA(insert OID = 1944 ( pg_stat_get_db_blocks_fetched PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_blocks_fetched _null_ _null_ _null_ ));
DESCR("statistics: blocks fetched for database");
-DATA(insert OID = 1945 ( pg_stat_get_db_blocks_hit PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_blocks_hit _null_ _null_ _null_ ));
+DATA(insert OID = 1945 ( pg_stat_get_db_blocks_hit PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_blocks_hit _null_ _null_ _null_ ));
DESCR("statistics: blocks found in cache for database");
-DATA(insert OID = 2758 ( pg_stat_get_db_tuples_returned PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_tuples_returned _null_ _null_ _null_ ));
+DATA(insert OID = 2758 ( pg_stat_get_db_tuples_returned PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_tuples_returned _null_ _null_ _null_ ));
DESCR("statistics: tuples returned for database");
-DATA(insert OID = 2759 ( pg_stat_get_db_tuples_fetched PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_tuples_fetched _null_ _null_ _null_ ));
+DATA(insert OID = 2759 ( pg_stat_get_db_tuples_fetched PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_tuples_fetched _null_ _null_ _null_ ));
DESCR("statistics: tuples fetched for database");
-DATA(insert OID = 2760 ( pg_stat_get_db_tuples_inserted PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_tuples_inserted _null_ _null_ _null_ ));
+DATA(insert OID = 2760 ( pg_stat_get_db_tuples_inserted PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_tuples_inserted _null_ _null_ _null_ ));
DESCR("statistics: tuples inserted in database");
-DATA(insert OID = 2761 ( pg_stat_get_db_tuples_updated PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_tuples_updated _null_ _null_ _null_ ));
+DATA(insert OID = 2761 ( pg_stat_get_db_tuples_updated PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_tuples_updated _null_ _null_ _null_ ));
DESCR("statistics: tuples updated in database");
-DATA(insert OID = 2762 ( pg_stat_get_db_tuples_deleted PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_tuples_deleted _null_ _null_ _null_ ));
+DATA(insert OID = 2762 ( pg_stat_get_db_tuples_deleted PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_tuples_deleted _null_ _null_ _null_ ));
DESCR("statistics: tuples deleted in database");
-DATA(insert OID = 3065 ( pg_stat_get_db_conflict_tablespace PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_tablespace _null_ _null_ _null_ ));
+DATA(insert OID = 3065 ( pg_stat_get_db_conflict_tablespace PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_tablespace _null_ _null_ _null_ ));
DESCR("statistics: recovery conflicts in database caused by drop tablespace");
-DATA(insert OID = 3066 ( pg_stat_get_db_conflict_lock PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_lock _null_ _null_ _null_ ));
+DATA(insert OID = 3066 ( pg_stat_get_db_conflict_lock PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_lock _null_ _null_ _null_ ));
DESCR("statistics: recovery conflicts in database caused by relation lock");
-DATA(insert OID = 3067 ( pg_stat_get_db_conflict_snapshot PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_snapshot _null_ _null_ _null_ ));
+DATA(insert OID = 3067 ( pg_stat_get_db_conflict_snapshot PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_snapshot _null_ _null_ _null_ ));
DESCR("statistics: recovery conflicts in database caused by snapshot expiry");
-DATA(insert OID = 3068 ( pg_stat_get_db_conflict_bufferpin PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_bufferpin _null_ _null_ _null_ ));
+DATA(insert OID = 3068 ( pg_stat_get_db_conflict_bufferpin PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_bufferpin _null_ _null_ _null_ ));
DESCR("statistics: recovery conflicts in database caused by shared buffer pin");
-DATA(insert OID = 3069 ( pg_stat_get_db_conflict_startup_deadlock PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_startup_deadlock _null_ _null_ _null_ ));
+DATA(insert OID = 3069 ( pg_stat_get_db_conflict_startup_deadlock PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_startup_deadlock _null_ _null_ _null_ ));
DESCR("statistics: recovery conflicts in database caused by buffer deadlock");
-DATA(insert OID = 3070 ( pg_stat_get_db_conflict_all PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_all _null_ _null_ _null_ ));
+DATA(insert OID = 3070 ( pg_stat_get_db_conflict_all PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_all _null_ _null_ _null_ ));
DESCR("statistics: recovery conflicts in database");
-DATA(insert OID = 3074 ( pg_stat_get_db_stat_reset_time PGNSP PGUID 12 1 0 0 f f f t f s 1 0 1184 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_stat_reset_time _null_ _null_ _null_ ));
+DATA(insert OID = 3074 ( pg_stat_get_db_stat_reset_time PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 1184 "26" _null_ _null_ _null_ _null_ pg_stat_get_db_stat_reset_time _null_ _null_ _null_ ));
DESCR("statistics: last reset for a database");
-DATA(insert OID = 2769 ( pg_stat_get_bgwriter_timed_checkpoints PGNSP PGUID 12 1 0 0 f f f t f s 0 0 20 "" _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_timed_checkpoints _null_ _null_ _null_ ));
+DATA(insert OID = 2769 ( pg_stat_get_bgwriter_timed_checkpoints PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 20 "" _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_timed_checkpoints _null_ _null_ _null_ ));
DESCR("statistics: number of timed checkpoints started by the bgwriter");
-DATA(insert OID = 2770 ( pg_stat_get_bgwriter_requested_checkpoints PGNSP PGUID 12 1 0 0 f f f t f s 0 0 20 "" _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_requested_checkpoints _null_ _null_ _null_ ));
+DATA(insert OID = 2770 ( pg_stat_get_bgwriter_requested_checkpoints PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 20 "" _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_requested_checkpoints _null_ _null_ _null_ ));
DESCR("statistics: number of backend requested checkpoints started by the bgwriter");
-DATA(insert OID = 2771 ( pg_stat_get_bgwriter_buf_written_checkpoints PGNSP PGUID 12 1 0 0 f f f t f s 0 0 20 "" _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_buf_written_checkpoints _null_ _null_ _null_ ));
+DATA(insert OID = 2771 ( pg_stat_get_bgwriter_buf_written_checkpoints PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 20 "" _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_buf_written_checkpoints _null_ _null_ _null_ ));
DESCR("statistics: number of buffers written by the bgwriter during checkpoints");
-DATA(insert OID = 2772 ( pg_stat_get_bgwriter_buf_written_clean PGNSP PGUID 12 1 0 0 f f f t f s 0 0 20 "" _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_buf_written_clean _null_ _null_ _null_ ));
+DATA(insert OID = 2772 ( pg_stat_get_bgwriter_buf_written_clean PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 20 "" _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_buf_written_clean _null_ _null_ _null_ ));
DESCR("statistics: number of buffers written by the bgwriter for cleaning dirty buffers");
-DATA(insert OID = 2773 ( pg_stat_get_bgwriter_maxwritten_clean PGNSP PGUID 12 1 0 0 f f f t f s 0 0 20 "" _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_maxwritten_clean _null_ _null_ _null_ ));
+DATA(insert OID = 2773 ( pg_stat_get_bgwriter_maxwritten_clean PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 20 "" _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_maxwritten_clean _null_ _null_ _null_ ));
DESCR("statistics: number of times the bgwriter stopped processing when it had written too many buffers while cleaning");
-DATA(insert OID = 3075 ( pg_stat_get_bgwriter_stat_reset_time PGNSP PGUID 12 1 0 0 f f f t f s 0 0 1184 "" _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_stat_reset_time _null_ _null_ _null_ ));
+DATA(insert OID = 3075 ( pg_stat_get_bgwriter_stat_reset_time PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 1184 "" _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_stat_reset_time _null_ _null_ _null_ ));
DESCR("statistics: last reset for the bgwriter");
-DATA(insert OID = 2775 ( pg_stat_get_buf_written_backend PGNSP PGUID 12 1 0 0 f f f t f s 0 0 20 "" _null_ _null_ _null_ _null_ pg_stat_get_buf_written_backend _null_ _null_ _null_ ));
+DATA(insert OID = 2775 ( pg_stat_get_buf_written_backend PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 20 "" _null_ _null_ _null_ _null_ pg_stat_get_buf_written_backend _null_ _null_ _null_ ));
DESCR("statistics: number of buffers written by backends");
-DATA(insert OID = 3063 ( pg_stat_get_buf_fsync_backend PGNSP PGUID 12 1 0 0 f f f t f s 0 0 20 "" _null_ _null_ _null_ _null_ pg_stat_get_buf_fsync_backend _null_ _null_ _null_ ));
+DATA(insert OID = 3063 ( pg_stat_get_buf_fsync_backend PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 20 "" _null_ _null_ _null_ _null_ pg_stat_get_buf_fsync_backend _null_ _null_ _null_ ));
DESCR("statistics: number of backend buffer writes that did their own fsync");
-DATA(insert OID = 2859 ( pg_stat_get_buf_alloc PGNSP PGUID 12 1 0 0 f f f t f s 0 0 20 "" _null_ _null_ _null_ _null_ pg_stat_get_buf_alloc _null_ _null_ _null_ ));
+DATA(insert OID = 2859 ( pg_stat_get_buf_alloc PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 20 "" _null_ _null_ _null_ _null_ pg_stat_get_buf_alloc _null_ _null_ _null_ ));
DESCR("statistics: number of buffer allocations");
-DATA(insert OID = 2978 ( pg_stat_get_function_calls PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_function_calls _null_ _null_ _null_ ));
+DATA(insert OID = 2978 ( pg_stat_get_function_calls PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_function_calls _null_ _null_ _null_ ));
DESCR("statistics: number of function calls");
-DATA(insert OID = 2979 ( pg_stat_get_function_time PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_function_time _null_ _null_ _null_ ));
+DATA(insert OID = 2979 ( pg_stat_get_function_time PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_function_time _null_ _null_ _null_ ));
DESCR("statistics: execution time of function");
-DATA(insert OID = 2980 ( pg_stat_get_function_self_time PGNSP PGUID 12 1 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_function_self_time _null_ _null_ _null_ ));
+DATA(insert OID = 2980 ( pg_stat_get_function_self_time PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_function_self_time _null_ _null_ _null_ ));
DESCR("statistics: self execution time of function");
-DATA(insert OID = 3037 ( pg_stat_get_xact_numscans PGNSP PGUID 12 1 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_numscans _null_ _null_ _null_ ));
+DATA(insert OID = 3037 ( pg_stat_get_xact_numscans PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_numscans _null_ _null_ _null_ ));
DESCR("statistics: number of scans done for table/index in current transaction");
-DATA(insert OID = 3038 ( pg_stat_get_xact_tuples_returned PGNSP PGUID 12 1 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_returned _null_ _null_ _null_ ));
+DATA(insert OID = 3038 ( pg_stat_get_xact_tuples_returned PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_returned _null_ _null_ _null_ ));
DESCR("statistics: number of tuples read by seqscan in current transaction");
-DATA(insert OID = 3039 ( pg_stat_get_xact_tuples_fetched PGNSP PGUID 12 1 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_fetched _null_ _null_ _null_ ));
+DATA(insert OID = 3039 ( pg_stat_get_xact_tuples_fetched PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_fetched _null_ _null_ _null_ ));
DESCR("statistics: number of tuples fetched by idxscan in current transaction");
-DATA(insert OID = 3040 ( pg_stat_get_xact_tuples_inserted PGNSP PGUID 12 1 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_inserted _null_ _null_ _null_ ));
+DATA(insert OID = 3040 ( pg_stat_get_xact_tuples_inserted PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_inserted _null_ _null_ _null_ ));
DESCR("statistics: number of tuples inserted in current transaction");
-DATA(insert OID = 3041 ( pg_stat_get_xact_tuples_updated PGNSP PGUID 12 1 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_updated _null_ _null_ _null_ ));
+DATA(insert OID = 3041 ( pg_stat_get_xact_tuples_updated PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_updated _null_ _null_ _null_ ));
DESCR("statistics: number of tuples updated in current transaction");
-DATA(insert OID = 3042 ( pg_stat_get_xact_tuples_deleted PGNSP PGUID 12 1 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_deleted _null_ _null_ _null_ ));
+DATA(insert OID = 3042 ( pg_stat_get_xact_tuples_deleted PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_deleted _null_ _null_ _null_ ));
DESCR("statistics: number of tuples deleted in current transaction");
-DATA(insert OID = 3043 ( pg_stat_get_xact_tuples_hot_updated PGNSP PGUID 12 1 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_hot_updated _null_ _null_ _null_ ));
+DATA(insert OID = 3043 ( pg_stat_get_xact_tuples_hot_updated PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_hot_updated _null_ _null_ _null_ ));
DESCR("statistics: number of tuples hot updated in current transaction");
-DATA(insert OID = 3044 ( pg_stat_get_xact_blocks_fetched PGNSP PGUID 12 1 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_blocks_fetched _null_ _null_ _null_ ));
+DATA(insert OID = 3044 ( pg_stat_get_xact_blocks_fetched PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_blocks_fetched _null_ _null_ _null_ ));
DESCR("statistics: number of blocks fetched in current transaction");
-DATA(insert OID = 3045 ( pg_stat_get_xact_blocks_hit PGNSP PGUID 12 1 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_blocks_hit _null_ _null_ _null_ ));
+DATA(insert OID = 3045 ( pg_stat_get_xact_blocks_hit PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_blocks_hit _null_ _null_ _null_ ));
DESCR("statistics: number of blocks found in cache in current transaction");
-DATA(insert OID = 3046 ( pg_stat_get_xact_function_calls PGNSP PGUID 12 1 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_function_calls _null_ _null_ _null_ ));
+DATA(insert OID = 3046 ( pg_stat_get_xact_function_calls PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_function_calls _null_ _null_ _null_ ));
DESCR("statistics: number of function calls in current transaction");
-DATA(insert OID = 3047 ( pg_stat_get_xact_function_time PGNSP PGUID 12 1 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_function_time _null_ _null_ _null_ ));
+DATA(insert OID = 3047 ( pg_stat_get_xact_function_time PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_function_time _null_ _null_ _null_ ));
DESCR("statistics: execution time of function in current transaction");
-DATA(insert OID = 3048 ( pg_stat_get_xact_function_self_time PGNSP PGUID 12 1 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_function_self_time _null_ _null_ _null_ ));
+DATA(insert OID = 3048 ( pg_stat_get_xact_function_self_time PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_stat_get_xact_function_self_time _null_ _null_ _null_ ));
DESCR("statistics: self execution time of function in current transaction");
-DATA(insert OID = 2230 ( pg_stat_clear_snapshot PGNSP PGUID 12 1 0 0 f f f f f v 0 0 2278 "" _null_ _null_ _null_ _null_ pg_stat_clear_snapshot _null_ _null_ _null_ ));
+DATA(insert OID = 2230 ( pg_stat_clear_snapshot PGNSP PGUID 12 1 0 0 0 f f f f f v 0 0 2278 "" _null_ _null_ _null_ _null_ pg_stat_clear_snapshot _null_ _null_ _null_ ));
DESCR("statistics: discard current transaction's statistics snapshot");
-DATA(insert OID = 2274 ( pg_stat_reset PGNSP PGUID 12 1 0 0 f f f f f v 0 0 2278 "" _null_ _null_ _null_ _null_ pg_stat_reset _null_ _null_ _null_ ));
+DATA(insert OID = 2274 ( pg_stat_reset PGNSP PGUID 12 1 0 0 0 f f f f f v 0 0 2278 "" _null_ _null_ _null_ _null_ pg_stat_reset _null_ _null_ _null_ ));
DESCR("statistics: reset collected statistics for current database");
-DATA(insert OID = 3775 ( pg_stat_reset_shared PGNSP PGUID 12 1 0 0 f f f f f v 1 0 2278 "25" _null_ _null_ _null_ _null_ pg_stat_reset_shared _null_ _null_ _null_ ));
+DATA(insert OID = 3775 ( pg_stat_reset_shared PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "25" _null_ _null_ _null_ _null_ pg_stat_reset_shared _null_ _null_ _null_ ));
DESCR("statistics: reset collected statistics shared across the cluster");
-DATA(insert OID = 3776 ( pg_stat_reset_single_table_counters PGNSP PGUID 12 1 0 0 f f f f f v 1 0 2278 "26" _null_ _null_ _null_ _null_ pg_stat_reset_single_table_counters _null_ _null_ _null_ ));
+DATA(insert OID = 3776 ( pg_stat_reset_single_table_counters PGNSP PGUID 12 1 0 0 0 f f f f f v 1 0 2278 "26" _null_ _null_ _null_ _null_ pg_stat_reset_single_table_counters _null_ _null_ _null_ ));
DESCR("statistics: reset collected statistics for a single table or index in the current database");
-DATA(insert OID = 3777 ( pg_stat_reset_single_function_counters PGNSP PGUID 12 1 0 0 f f f f f v 1 0 2278 "26" _null_ _null_ _null_ _null_ pg_stat_reset_single_function_counters _null_ _null_ _null_ ));
+DATA(insert OID = 3777 ( pg_stat_reset_single_function_counters PGNSP PGUID 12 1 0 0 0 f f f f f v 1 0 2278 "26" _null_ _null_ _null_ _null_ pg_stat_reset_single_function_counters _null_ _null_ _null_ ));
DESCR("statistics: reset collected statistics for a single function in the current database");
-DATA(insert OID = 1946 ( encode PGNSP PGUID 12 1 0 0 f f f t f i 2 0 25 "17 25" _null_ _null_ _null_ _null_ binary_encode _null_ _null_ _null_ ));
+DATA(insert OID = 1946 ( encode PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 25 "17 25" _null_ _null_ _null_ _null_ binary_encode _null_ _null_ _null_ ));
DESCR("convert bytea value into some ascii-only text string");
-DATA(insert OID = 1947 ( decode PGNSP PGUID 12 1 0 0 f f f t f i 2 0 17 "25 25" _null_ _null_ _null_ _null_ binary_decode _null_ _null_ _null_ ));
+DATA(insert OID = 1947 ( decode PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 17 "25 25" _null_ _null_ _null_ _null_ binary_decode _null_ _null_ _null_ ));
DESCR("convert ascii-encoded text string into bytea value");
-DATA(insert OID = 1948 ( byteaeq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "17 17" _null_ _null_ _null_ _null_ byteaeq _null_ _null_ _null_ ));
-DATA(insert OID = 1949 ( bytealt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "17 17" _null_ _null_ _null_ _null_ bytealt _null_ _null_ _null_ ));
-DATA(insert OID = 1950 ( byteale PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "17 17" _null_ _null_ _null_ _null_ byteale _null_ _null_ _null_ ));
-DATA(insert OID = 1951 ( byteagt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "17 17" _null_ _null_ _null_ _null_ byteagt _null_ _null_ _null_ ));
-DATA(insert OID = 1952 ( byteage PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "17 17" _null_ _null_ _null_ _null_ byteage _null_ _null_ _null_ ));
-DATA(insert OID = 1953 ( byteane PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "17 17" _null_ _null_ _null_ _null_ byteane _null_ _null_ _null_ ));
-DATA(insert OID = 1954 ( byteacmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "17 17" _null_ _null_ _null_ _null_ byteacmp _null_ _null_ _null_ ));
+DATA(insert OID = 1948 ( byteaeq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "17 17" _null_ _null_ _null_ _null_ byteaeq _null_ _null_ _null_ ));
+DATA(insert OID = 1949 ( bytealt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "17 17" _null_ _null_ _null_ _null_ bytealt _null_ _null_ _null_ ));
+DATA(insert OID = 1950 ( byteale PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "17 17" _null_ _null_ _null_ _null_ byteale _null_ _null_ _null_ ));
+DATA(insert OID = 1951 ( byteagt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "17 17" _null_ _null_ _null_ _null_ byteagt _null_ _null_ _null_ ));
+DATA(insert OID = 1952 ( byteage PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "17 17" _null_ _null_ _null_ _null_ byteage _null_ _null_ _null_ ));
+DATA(insert OID = 1953 ( byteane PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "17 17" _null_ _null_ _null_ _null_ byteane _null_ _null_ _null_ ));
+DATA(insert OID = 1954 ( byteacmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "17 17" _null_ _null_ _null_ _null_ byteacmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 1961 ( timestamp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1114 "1114 23" _null_ _null_ _null_ _null_ timestamp_scale _null_ _null_ _null_ ));
+DATA(insert OID = 1961 ( timestamp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1114 "1114 23" _null_ _null_ _null_ _null_ timestamp_scale _null_ _null_ _null_ ));
DESCR("adjust timestamp precision");
-DATA(insert OID = 1965 ( oidlarger PGNSP PGUID 12 1 0 0 f f f t f i 2 0 26 "26 26" _null_ _null_ _null_ _null_ oidlarger _null_ _null_ _null_ ));
+DATA(insert OID = 1965 ( oidlarger PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 26 "26 26" _null_ _null_ _null_ _null_ oidlarger _null_ _null_ _null_ ));
DESCR("larger of two");
-DATA(insert OID = 1966 ( oidsmaller PGNSP PGUID 12 1 0 0 f f f t f i 2 0 26 "26 26" _null_ _null_ _null_ _null_ oidsmaller _null_ _null_ _null_ ));
+DATA(insert OID = 1966 ( oidsmaller PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 26 "26 26" _null_ _null_ _null_ _null_ oidsmaller _null_ _null_ _null_ ));
DESCR("smaller of two");
-DATA(insert OID = 1967 ( timestamptz PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1184 "1184 23" _null_ _null_ _null_ _null_ timestamptz_scale _null_ _null_ _null_ ));
+DATA(insert OID = 1967 ( timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1184 "1184 23" _null_ _null_ _null_ _null_ timestamptz_scale _null_ _null_ _null_ ));
DESCR("adjust timestamptz precision");
-DATA(insert OID = 1968 ( time PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1083 "1083 23" _null_ _null_ _null_ _null_ time_scale _null_ _null_ _null_ ));
+DATA(insert OID = 1968 ( time PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1083 "1083 23" _null_ _null_ _null_ _null_ time_scale _null_ _null_ _null_ ));
DESCR("adjust time precision");
-DATA(insert OID = 1969 ( timetz PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1266 "1266 23" _null_ _null_ _null_ _null_ timetz_scale _null_ _null_ _null_ ));
+DATA(insert OID = 1969 ( timetz PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1266 "1266 23" _null_ _null_ _null_ _null_ timetz_scale _null_ _null_ _null_ ));
DESCR("adjust time with time zone precision");
-DATA(insert OID = 2003 ( textanycat PGNSP PGUID 14 1 0 0 f f f t f v 2 0 25 "25 2776" _null_ _null_ _null_ _null_ "select $1 || $2::pg_catalog.text" _null_ _null_ _null_ ));
-DATA(insert OID = 2004 ( anytextcat PGNSP PGUID 14 1 0 0 f f f t f v 2 0 25 "2776 25" _null_ _null_ _null_ _null_ "select $1::pg_catalog.text || $2" _null_ _null_ _null_ ));
+DATA(insert OID = 2003 ( textanycat PGNSP PGUID 14 1 0 0 0 f f f t f v 2 0 25 "25 2776" _null_ _null_ _null_ _null_ "select $1 || $2::pg_catalog.text" _null_ _null_ _null_ ));
+DATA(insert OID = 2004 ( anytextcat PGNSP PGUID 14 1 0 0 0 f f f t f v 2 0 25 "2776 25" _null_ _null_ _null_ _null_ "select $1::pg_catalog.text || $2" _null_ _null_ _null_ ));
-DATA(insert OID = 2005 ( bytealike PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "17 17" _null_ _null_ _null_ _null_ bytealike _null_ _null_ _null_ ));
-DATA(insert OID = 2006 ( byteanlike PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "17 17" _null_ _null_ _null_ _null_ byteanlike _null_ _null_ _null_ ));
-DATA(insert OID = 2007 ( like PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "17 17" _null_ _null_ _null_ _null_ bytealike _null_ _null_ _null_ ));
+DATA(insert OID = 2005 ( bytealike PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "17 17" _null_ _null_ _null_ _null_ bytealike _null_ _null_ _null_ ));
+DATA(insert OID = 2006 ( byteanlike PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "17 17" _null_ _null_ _null_ _null_ byteanlike _null_ _null_ _null_ ));
+DATA(insert OID = 2007 ( like PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "17 17" _null_ _null_ _null_ _null_ bytealike _null_ _null_ _null_ ));
DESCR("matches LIKE expression");
-DATA(insert OID = 2008 ( notlike PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "17 17" _null_ _null_ _null_ _null_ byteanlike _null_ _null_ _null_ ));
+DATA(insert OID = 2008 ( notlike PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "17 17" _null_ _null_ _null_ _null_ byteanlike _null_ _null_ _null_ ));
DESCR("does not match LIKE expression");
-DATA(insert OID = 2009 ( like_escape PGNSP PGUID 12 1 0 0 f f f t f i 2 0 17 "17 17" _null_ _null_ _null_ _null_ like_escape_bytea _null_ _null_ _null_ ));
+DATA(insert OID = 2009 ( like_escape PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 17 "17 17" _null_ _null_ _null_ _null_ like_escape_bytea _null_ _null_ _null_ ));
DESCR("convert LIKE pattern to use backslash escapes");
-DATA(insert OID = 2010 ( length PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "17" _null_ _null_ _null_ _null_ byteaoctetlen _null_ _null_ _null_ ));
+DATA(insert OID = 2010 ( length PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "17" _null_ _null_ _null_ _null_ byteaoctetlen _null_ _null_ _null_ ));
DESCR("octet length");
-DATA(insert OID = 2011 ( byteacat PGNSP PGUID 12 1 0 0 f f f t f i 2 0 17 "17 17" _null_ _null_ _null_ _null_ byteacat _null_ _null_ _null_ ));
-DATA(insert OID = 2012 ( substring PGNSP PGUID 12 1 0 0 f f f t f i 3 0 17 "17 23 23" _null_ _null_ _null_ _null_ bytea_substr _null_ _null_ _null_ ));
+DATA(insert OID = 2011 ( byteacat PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 17 "17 17" _null_ _null_ _null_ _null_ byteacat _null_ _null_ _null_ ));
+DATA(insert OID = 2012 ( substring PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 17 "17 23 23" _null_ _null_ _null_ _null_ bytea_substr _null_ _null_ _null_ ));
DESCR("extract portion of string");
-DATA(insert OID = 2013 ( substring PGNSP PGUID 12 1 0 0 f f f t f i 2 0 17 "17 23" _null_ _null_ _null_ _null_ bytea_substr_no_len _null_ _null_ _null_ ));
+DATA(insert OID = 2013 ( substring PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 17 "17 23" _null_ _null_ _null_ _null_ bytea_substr_no_len _null_ _null_ _null_ ));
DESCR("extract portion of string");
-DATA(insert OID = 2085 ( substr PGNSP PGUID 12 1 0 0 f f f t f i 3 0 17 "17 23 23" _null_ _null_ _null_ _null_ bytea_substr _null_ _null_ _null_ ));
+DATA(insert OID = 2085 ( substr PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 17 "17 23 23" _null_ _null_ _null_ _null_ bytea_substr _null_ _null_ _null_ ));
DESCR("extract portion of string");
-DATA(insert OID = 2086 ( substr PGNSP PGUID 12 1 0 0 f f f t f i 2 0 17 "17 23" _null_ _null_ _null_ _null_ bytea_substr_no_len _null_ _null_ _null_ ));
+DATA(insert OID = 2086 ( substr PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 17 "17 23" _null_ _null_ _null_ _null_ bytea_substr_no_len _null_ _null_ _null_ ));
DESCR("extract portion of string");
-DATA(insert OID = 2014 ( position PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "17 17" _null_ _null_ _null_ _null_ byteapos _null_ _null_ _null_ ));
+DATA(insert OID = 2014 ( position PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "17 17" _null_ _null_ _null_ _null_ byteapos _null_ _null_ _null_ ));
DESCR("position of substring");
-DATA(insert OID = 2015 ( btrim PGNSP PGUID 12 1 0 0 f f f t f i 2 0 17 "17 17" _null_ _null_ _null_ _null_ byteatrim _null_ _null_ _null_ ));
+DATA(insert OID = 2015 ( btrim PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 17 "17 17" _null_ _null_ _null_ _null_ byteatrim _null_ _null_ _null_ ));
DESCR("trim both ends of string");
-DATA(insert OID = 2019 ( time PGNSP PGUID 12 1 0 0 f f f t f s 1 0 1083 "1184" _null_ _null_ _null_ _null_ timestamptz_time _null_ _null_ _null_ ));
+DATA(insert OID = 2019 ( time PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 1083 "1184" _null_ _null_ _null_ _null_ timestamptz_time _null_ _null_ _null_ ));
DESCR("convert timestamp with time zone to time");
-DATA(insert OID = 2020 ( date_trunc PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1114 "25 1114" _null_ _null_ _null_ _null_ timestamp_trunc _null_ _null_ _null_ ));
+DATA(insert OID = 2020 ( date_trunc PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1114 "25 1114" _null_ _null_ _null_ _null_ timestamp_trunc _null_ _null_ _null_ ));
DESCR("truncate timestamp to specified units");
-DATA(insert OID = 2021 ( date_part PGNSP PGUID 12 1 0 0 f f f t f i 2 0 701 "25 1114" _null_ _null_ _null_ _null_ timestamp_part _null_ _null_ _null_ ));
+DATA(insert OID = 2021 ( date_part PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "25 1114" _null_ _null_ _null_ _null_ timestamp_part _null_ _null_ _null_ ));
DESCR("extract field from timestamp");
-DATA(insert OID = 2023 ( timestamp PGNSP PGUID 12 1 0 0 f f f t f s 1 0 1114 "702" _null_ _null_ _null_ _null_ abstime_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 2023 ( timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 1114 "702" _null_ _null_ _null_ _null_ abstime_timestamp _null_ _null_ _null_ ));
DESCR("convert abstime to timestamp");
-DATA(insert OID = 2024 ( timestamp PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1114 "1082" _null_ _null_ _null_ _null_ date_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 2024 ( timestamp PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1114 "1082" _null_ _null_ _null_ _null_ date_timestamp _null_ _null_ _null_ ));
DESCR("convert date to timestamp");
-DATA(insert OID = 2025 ( timestamp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1114 "1082 1083" _null_ _null_ _null_ _null_ datetime_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 2025 ( timestamp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1114 "1082 1083" _null_ _null_ _null_ _null_ datetime_timestamp _null_ _null_ _null_ ));
DESCR("convert date and time to timestamp");
-DATA(insert OID = 2027 ( timestamp PGNSP PGUID 12 1 0 0 f f f t f s 1 0 1114 "1184" _null_ _null_ _null_ _null_ timestamptz_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 2027 ( timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 1114 "1184" _null_ _null_ _null_ _null_ timestamptz_timestamp _null_ _null_ _null_ ));
DESCR("convert timestamp with time zone to timestamp");
-DATA(insert OID = 2028 ( timestamptz PGNSP PGUID 12 1 0 0 f f f t f s 1 0 1184 "1114" _null_ _null_ _null_ _null_ timestamp_timestamptz _null_ _null_ _null_ ));
+DATA(insert OID = 2028 ( timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 1184 "1114" _null_ _null_ _null_ _null_ timestamp_timestamptz _null_ _null_ _null_ ));
DESCR("convert timestamp to timestamp with time zone");
-DATA(insert OID = 2029 ( date PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1082 "1114" _null_ _null_ _null_ _null_ timestamp_date _null_ _null_ _null_ ));
+DATA(insert OID = 2029 ( date PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1082 "1114" _null_ _null_ _null_ _null_ timestamp_date _null_ _null_ _null_ ));
DESCR("convert timestamp to date");
-DATA(insert OID = 2030 ( abstime PGNSP PGUID 12 1 0 0 f f f t f s 1 0 702 "1114" _null_ _null_ _null_ _null_ timestamp_abstime _null_ _null_ _null_ ));
+DATA(insert OID = 2030 ( abstime PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 702 "1114" _null_ _null_ _null_ _null_ timestamp_abstime _null_ _null_ _null_ ));
DESCR("convert timestamp to abstime");
-DATA(insert OID = 2031 ( timestamp_mi PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1186 "1114 1114" _null_ _null_ _null_ _null_ timestamp_mi _null_ _null_ _null_ ));
-DATA(insert OID = 2032 ( timestamp_pl_interval PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1114 "1114 1186" _null_ _null_ _null_ _null_ timestamp_pl_interval _null_ _null_ _null_ ));
-DATA(insert OID = 2033 ( timestamp_mi_interval PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1114 "1114 1186" _null_ _null_ _null_ _null_ timestamp_mi_interval _null_ _null_ _null_ ));
-DATA(insert OID = 2035 ( timestamp_smaller PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1114 "1114 1114" _null_ _null_ _null_ _null_ timestamp_smaller _null_ _null_ _null_ ));
+DATA(insert OID = 2031 ( timestamp_mi PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1186 "1114 1114" _null_ _null_ _null_ _null_ timestamp_mi _null_ _null_ _null_ ));
+DATA(insert OID = 2032 ( timestamp_pl_interval PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1114 "1114 1186" _null_ _null_ _null_ _null_ timestamp_pl_interval _null_ _null_ _null_ ));
+DATA(insert OID = 2033 ( timestamp_mi_interval PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1114 "1114 1186" _null_ _null_ _null_ _null_ timestamp_mi_interval _null_ _null_ _null_ ));
+DATA(insert OID = 2035 ( timestamp_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1114 "1114 1114" _null_ _null_ _null_ _null_ timestamp_smaller _null_ _null_ _null_ ));
DESCR("smaller of two");
-DATA(insert OID = 2036 ( timestamp_larger PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1114 "1114 1114" _null_ _null_ _null_ _null_ timestamp_larger _null_ _null_ _null_ ));
+DATA(insert OID = 2036 ( timestamp_larger PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1114 "1114 1114" _null_ _null_ _null_ _null_ timestamp_larger _null_ _null_ _null_ ));
DESCR("larger of two");
-DATA(insert OID = 2037 ( timezone PGNSP PGUID 12 1 0 0 f f f t f v 2 0 1266 "25 1266" _null_ _null_ _null_ _null_ timetz_zone _null_ _null_ _null_ ));
+DATA(insert OID = 2037 ( timezone PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 1266 "25 1266" _null_ _null_ _null_ _null_ timetz_zone _null_ _null_ _null_ ));
DESCR("adjust time with time zone to new zone");
-DATA(insert OID = 2038 ( timezone PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1266 "1186 1266" _null_ _null_ _null_ _null_ timetz_izone _null_ _null_ _null_ ));
+DATA(insert OID = 2038 ( timezone PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1266 "1186 1266" _null_ _null_ _null_ _null_ timetz_izone _null_ _null_ _null_ ));
DESCR("adjust time with time zone to new zone");
-DATA(insert OID = 2039 ( timestamp_hash PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "1114" _null_ _null_ _null_ _null_ timestamp_hash _null_ _null_ _null_ ));
+DATA(insert OID = 2039 ( timestamp_hash PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "1114" _null_ _null_ _null_ _null_ timestamp_hash _null_ _null_ _null_ ));
DESCR("hash");
-DATA(insert OID = 2041 ( overlaps PGNSP PGUID 12 1 0 0 f f f f f i 4 0 16 "1114 1114 1114 1114" _null_ _null_ _null_ _null_ overlaps_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 2041 ( overlaps PGNSP PGUID 12 1 0 0 0 f f f f f i 4 0 16 "1114 1114 1114 1114" _null_ _null_ _null_ _null_ overlaps_timestamp _null_ _null_ _null_ ));
DESCR("intervals overlap?");
-DATA(insert OID = 2042 ( overlaps PGNSP PGUID 14 1 0 0 f f f f f i 4 0 16 "1114 1186 1114 1186" _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ ));
+DATA(insert OID = 2042 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f i 4 0 16 "1114 1186 1114 1186" _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ ));
DESCR("intervals overlap?");
-DATA(insert OID = 2043 ( overlaps PGNSP PGUID 14 1 0 0 f f f f f i 4 0 16 "1114 1114 1114 1186" _null_ _null_ _null_ _null_ "select ($1, $2) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ ));
+DATA(insert OID = 2043 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f i 4 0 16 "1114 1114 1114 1186" _null_ _null_ _null_ _null_ "select ($1, $2) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ ));
DESCR("intervals overlap?");
-DATA(insert OID = 2044 ( overlaps PGNSP PGUID 14 1 0 0 f f f f f i 4 0 16 "1114 1186 1114 1114" _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, $4)" _null_ _null_ _null_ ));
+DATA(insert OID = 2044 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f i 4 0 16 "1114 1186 1114 1114" _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, $4)" _null_ _null_ _null_ ));
DESCR("intervals overlap?");
-DATA(insert OID = 2045 ( timestamp_cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "1114 1114" _null_ _null_ _null_ _null_ timestamp_cmp _null_ _null_ _null_ ));
+DATA(insert OID = 2045 ( timestamp_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "1114 1114" _null_ _null_ _null_ _null_ timestamp_cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 2046 ( time PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1083 "1266" _null_ _null_ _null_ _null_ timetz_time _null_ _null_ _null_ ));
+DATA(insert OID = 2046 ( time PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1083 "1266" _null_ _null_ _null_ _null_ timetz_time _null_ _null_ _null_ ));
DESCR("convert time with time zone to time");
-DATA(insert OID = 2047 ( timetz PGNSP PGUID 12 1 0 0 f f f t f s 1 0 1266 "1083" _null_ _null_ _null_ _null_ time_timetz _null_ _null_ _null_ ));
+DATA(insert OID = 2047 ( timetz PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 1266 "1083" _null_ _null_ _null_ _null_ time_timetz _null_ _null_ _null_ ));
DESCR("convert time to time with time zone");
-DATA(insert OID = 2048 ( isfinite PGNSP PGUID 12 1 0 0 f f f t f i 1 0 16 "1114" _null_ _null_ _null_ _null_ timestamp_finite _null_ _null_ _null_ ));
+DATA(insert OID = 2048 ( isfinite PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 16 "1114" _null_ _null_ _null_ _null_ timestamp_finite _null_ _null_ _null_ ));
DESCR("finite timestamp?");
-DATA(insert OID = 2049 ( to_char PGNSP PGUID 12 1 0 0 f f f t f s 2 0 25 "1114 25" _null_ _null_ _null_ _null_ timestamp_to_char _null_ _null_ _null_ ));
+DATA(insert OID = 2049 ( to_char PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 25 "1114 25" _null_ _null_ _null_ _null_ timestamp_to_char _null_ _null_ _null_ ));
DESCR("format timestamp to text");
-DATA(insert OID = 2052 ( timestamp_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ timestamp_eq _null_ _null_ _null_ ));
-DATA(insert OID = 2053 ( timestamp_ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ timestamp_ne _null_ _null_ _null_ ));
-DATA(insert OID = 2054 ( timestamp_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ timestamp_lt _null_ _null_ _null_ ));
-DATA(insert OID = 2055 ( timestamp_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ timestamp_le _null_ _null_ _null_ ));
-DATA(insert OID = 2056 ( timestamp_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ timestamp_ge _null_ _null_ _null_ ));
-DATA(insert OID = 2057 ( timestamp_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ timestamp_gt _null_ _null_ _null_ ));
-DATA(insert OID = 2058 ( age PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1186 "1114 1114" _null_ _null_ _null_ _null_ timestamp_age _null_ _null_ _null_ ));
+DATA(insert OID = 2052 ( timestamp_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ timestamp_eq _null_ _null_ _null_ ));
+DATA(insert OID = 2053 ( timestamp_ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ timestamp_ne _null_ _null_ _null_ ));
+DATA(insert OID = 2054 ( timestamp_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ timestamp_lt _null_ _null_ _null_ ));
+DATA(insert OID = 2055 ( timestamp_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ timestamp_le _null_ _null_ _null_ ));
+DATA(insert OID = 2056 ( timestamp_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ timestamp_ge _null_ _null_ _null_ ));
+DATA(insert OID = 2057 ( timestamp_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ timestamp_gt _null_ _null_ _null_ ));
+DATA(insert OID = 2058 ( age PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1186 "1114 1114" _null_ _null_ _null_ _null_ timestamp_age _null_ _null_ _null_ ));
DESCR("date difference preserving months and years");
-DATA(insert OID = 2059 ( age PGNSP PGUID 14 1 0 0 f f f t f s 1 0 1186 "1114" _null_ _null_ _null_ _null_ "select pg_catalog.age(cast(current_date as timestamp without time zone), $1)" _null_ _null_ _null_ ));
+DATA(insert OID = 2059 ( age PGNSP PGUID 14 1 0 0 0 f f f t f s 1 0 1186 "1114" _null_ _null_ _null_ _null_ "select pg_catalog.age(cast(current_date as timestamp without time zone), $1)" _null_ _null_ _null_ ));
DESCR("date difference from today preserving months and years");
-DATA(insert OID = 2069 ( timezone PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1184 "25 1114" _null_ _null_ _null_ _null_ timestamp_zone _null_ _null_ _null_ ));
+DATA(insert OID = 2069 ( timezone PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1184 "25 1114" _null_ _null_ _null_ _null_ timestamp_zone _null_ _null_ _null_ ));
DESCR("adjust timestamp to new time zone");
-DATA(insert OID = 2070 ( timezone PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1184 "1186 1114" _null_ _null_ _null_ _null_ timestamp_izone _null_ _null_ _null_ ));
+DATA(insert OID = 2070 ( timezone PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1184 "1186 1114" _null_ _null_ _null_ _null_ timestamp_izone _null_ _null_ _null_ ));
DESCR("adjust timestamp to new time zone");
-DATA(insert OID = 2071 ( date_pl_interval PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1114 "1082 1186" _null_ _null_ _null_ _null_ date_pl_interval _null_ _null_ _null_ ));
-DATA(insert OID = 2072 ( date_mi_interval PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1114 "1082 1186" _null_ _null_ _null_ _null_ date_mi_interval _null_ _null_ _null_ ));
+DATA(insert OID = 2071 ( date_pl_interval PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1114 "1082 1186" _null_ _null_ _null_ _null_ date_pl_interval _null_ _null_ _null_ ));
+DATA(insert OID = 2072 ( date_mi_interval PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1114 "1082 1186" _null_ _null_ _null_ _null_ date_mi_interval _null_ _null_ _null_ ));
-DATA(insert OID = 2073 ( substring PGNSP PGUID 12 1 0 0 f f f t f i 2 0 25 "25 25" _null_ _null_ _null_ _null_ textregexsubstr _null_ _null_ _null_ ));
+DATA(insert OID = 2073 ( substring PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 25 "25 25" _null_ _null_ _null_ _null_ textregexsubstr _null_ _null_ _null_ ));
DESCR("extract text matching regular expression");
-DATA(insert OID = 2074 ( substring PGNSP PGUID 14 1 0 0 f f f t f i 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ "select pg_catalog.substring($1, pg_catalog.similar_escape($2, $3))" _null_ _null_ _null_ ));
+DATA(insert OID = 2074 ( substring PGNSP PGUID 14 1 0 0 0 f f f t f i 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ "select pg_catalog.substring($1, pg_catalog.similar_escape($2, $3))" _null_ _null_ _null_ ));
DESCR("extract text matching SQL99 regular expression");
-DATA(insert OID = 2075 ( bit PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1560 "20 23" _null_ _null_ _null_ _null_ bitfromint8 _null_ _null_ _null_ ));
+DATA(insert OID = 2075 ( bit PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1560 "20 23" _null_ _null_ _null_ _null_ bitfromint8 _null_ _null_ _null_ ));
DESCR("convert int8 to bitstring");
-DATA(insert OID = 2076 ( int8 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 20 "1560" _null_ _null_ _null_ _null_ bittoint8 _null_ _null_ _null_ ));
+DATA(insert OID = 2076 ( int8 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 20 "1560" _null_ _null_ _null_ _null_ bittoint8 _null_ _null_ _null_ ));
DESCR("convert bitstring to int8");
-DATA(insert OID = 2077 ( current_setting PGNSP PGUID 12 1 0 0 f f f t f s 1 0 25 "25" _null_ _null_ _null_ _null_ show_config_by_name _null_ _null_ _null_ ));
+DATA(insert OID = 2077 ( current_setting PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 25 "25" _null_ _null_ _null_ _null_ show_config_by_name _null_ _null_ _null_ ));
DESCR("SHOW X as a function");
-DATA(insert OID = 2078 ( set_config PGNSP PGUID 12 1 0 0 f f f f f v 3 0 25 "25 25 16" _null_ _null_ _null_ _null_ set_config_by_name _null_ _null_ _null_ ));
+DATA(insert OID = 2078 ( set_config PGNSP PGUID 12 1 0 0 0 f f f f f v 3 0 25 "25 25 16" _null_ _null_ _null_ _null_ set_config_by_name _null_ _null_ _null_ ));
DESCR("SET X as a function");
-DATA(insert OID = 2084 ( pg_show_all_settings PGNSP PGUID 12 1 1000 0 f f f t t s 0 0 2249 "" "{25,25,25,25,25,25,25,25,25,25,25,1009,25,25,25,23}" "{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}" "{name,setting,unit,category,short_desc,extra_desc,context,vartype,source,min_val,max_val,enumvals,boot_val,reset_val,sourcefile,sourceline}" _null_ show_all_settings _null_ _null_ _null_ ));
+DATA(insert OID = 2084 ( pg_show_all_settings PGNSP PGUID 12 1 1000 0 0 f f f t t s 0 0 2249 "" "{25,25,25,25,25,25,25,25,25,25,25,1009,25,25,25,23}" "{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}" "{name,setting,unit,category,short_desc,extra_desc,context,vartype,source,min_val,max_val,enumvals,boot_val,reset_val,sourcefile,sourceline}" _null_ show_all_settings _null_ _null_ _null_ ));
DESCR("SHOW ALL as a function");
-DATA(insert OID = 1371 ( pg_lock_status PGNSP PGUID 12 1 1000 0 f f f t t v 0 0 2249 "" "{25,26,26,23,21,25,28,26,26,21,25,23,25,16}" "{o,o,o,o,o,o,o,o,o,o,o,o,o,o}" "{locktype,database,relation,page,tuple,virtualxid,transactionid,classid,objid,objsubid,virtualtransaction,pid,mode,granted}" _null_ pg_lock_status _null_ _null_ _null_ ));
+DATA(insert OID = 1371 ( pg_lock_status PGNSP PGUID 12 1 1000 0 0 f f f t t v 0 0 2249 "" "{25,26,26,23,21,25,28,26,26,21,25,23,25,16}" "{o,o,o,o,o,o,o,o,o,o,o,o,o,o}" "{locktype,database,relation,page,tuple,virtualxid,transactionid,classid,objid,objsubid,virtualtransaction,pid,mode,granted}" _null_ pg_lock_status _null_ _null_ _null_ ));
DESCR("view system lock information");
-DATA(insert OID = 1065 ( pg_prepared_xact PGNSP PGUID 12 1 1000 0 f f f t t v 0 0 2249 "" "{28,25,1184,26,26}" "{o,o,o,o,o}" "{transaction,gid,prepared,ownerid,dbid}" _null_ pg_prepared_xact _null_ _null_ _null_ ));
+DATA(insert OID = 1065 ( pg_prepared_xact PGNSP PGUID 12 1 1000 0 0 f f f t t v 0 0 2249 "" "{28,25,1184,26,26}" "{o,o,o,o,o}" "{transaction,gid,prepared,ownerid,dbid}" _null_ pg_prepared_xact _null_ _null_ _null_ ));
DESCR("view two-phase transactions");
-DATA(insert OID = 3537 ( pg_describe_object PGNSP PGUID 12 1 0 0 f f f t f s 3 0 25 "26 26 23" _null_ _null_ _null_ _null_ pg_describe_object _null_ _null_ _null_ ));
+DATA(insert OID = 3537 ( pg_describe_object PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 25 "26 26 23" _null_ _null_ _null_ _null_ pg_describe_object _null_ _null_ _null_ ));
DESCR("get identification of SQL object");
-DATA(insert OID = 2079 ( pg_table_is_visible PGNSP PGUID 12 1 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_table_is_visible _null_ _null_ _null_ ));
+DATA(insert OID = 2079 ( pg_table_is_visible PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_table_is_visible _null_ _null_ _null_ ));
DESCR("is table visible in search path?");
-DATA(insert OID = 2080 ( pg_type_is_visible PGNSP PGUID 12 1 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_type_is_visible _null_ _null_ _null_ ));
+DATA(insert OID = 2080 ( pg_type_is_visible PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_type_is_visible _null_ _null_ _null_ ));
DESCR("is type visible in search path?");
-DATA(insert OID = 2081 ( pg_function_is_visible PGNSP PGUID 12 1 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_function_is_visible _null_ _null_ _null_ ));
+DATA(insert OID = 2081 ( pg_function_is_visible PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_function_is_visible _null_ _null_ _null_ ));
DESCR("is function visible in search path?");
-DATA(insert OID = 2082 ( pg_operator_is_visible PGNSP PGUID 12 1 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_operator_is_visible _null_ _null_ _null_ ));
+DATA(insert OID = 2082 ( pg_operator_is_visible PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_operator_is_visible _null_ _null_ _null_ ));
DESCR("is operator visible in search path?");
-DATA(insert OID = 2083 ( pg_opclass_is_visible PGNSP PGUID 12 1 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_opclass_is_visible _null_ _null_ _null_ ));
+DATA(insert OID = 2083 ( pg_opclass_is_visible PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_opclass_is_visible _null_ _null_ _null_ ));
DESCR("is opclass visible in search path?");
-DATA(insert OID = 2093 ( pg_conversion_is_visible PGNSP PGUID 12 1 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_conversion_is_visible _null_ _null_ _null_ ));
+DATA(insert OID = 2093 ( pg_conversion_is_visible PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_conversion_is_visible _null_ _null_ _null_ ));
DESCR("is conversion visible in search path?");
-DATA(insert OID = 3756 ( pg_ts_parser_is_visible PGNSP PGUID 12 1 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_ts_parser_is_visible _null_ _null_ _null_ ));
+DATA(insert OID = 3756 ( pg_ts_parser_is_visible PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_ts_parser_is_visible _null_ _null_ _null_ ));
DESCR("is text search parser visible in search path?");
-DATA(insert OID = 3757 ( pg_ts_dict_is_visible PGNSP PGUID 12 1 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_ts_dict_is_visible _null_ _null_ _null_ ));
+DATA(insert OID = 3757 ( pg_ts_dict_is_visible PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_ts_dict_is_visible _null_ _null_ _null_ ));
DESCR("is text search dictionary visible in search path?");
-DATA(insert OID = 3768 ( pg_ts_template_is_visible PGNSP PGUID 12 1 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_ts_template_is_visible _null_ _null_ _null_ ));
+DATA(insert OID = 3768 ( pg_ts_template_is_visible PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_ts_template_is_visible _null_ _null_ _null_ ));
DESCR("is text search template visible in search path?");
-DATA(insert OID = 3758 ( pg_ts_config_is_visible PGNSP PGUID 12 1 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_ts_config_is_visible _null_ _null_ _null_ ));
+DATA(insert OID = 3758 ( pg_ts_config_is_visible PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_ts_config_is_visible _null_ _null_ _null_ ));
DESCR("is text search configuration visible in search path?");
-DATA(insert OID = 3815 ( pg_collation_is_visible PGNSP PGUID 12 1 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_collation_is_visible _null_ _null_ _null_ ));
+DATA(insert OID = 3815 ( pg_collation_is_visible PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_collation_is_visible _null_ _null_ _null_ ));
DESCR("is collation visible in search path?");
-DATA(insert OID = 2854 ( pg_my_temp_schema PGNSP PGUID 12 1 0 0 f f f t f s 0 0 26 "" _null_ _null_ _null_ _null_ pg_my_temp_schema _null_ _null_ _null_ ));
+DATA(insert OID = 2854 ( pg_my_temp_schema PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 26 "" _null_ _null_ _null_ _null_ pg_my_temp_schema _null_ _null_ _null_ ));
DESCR("get OID of current session's temp schema, if any");
-DATA(insert OID = 2855 ( pg_is_other_temp_schema PGNSP PGUID 12 1 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_is_other_temp_schema _null_ _null_ _null_ ));
+DATA(insert OID = 2855 ( pg_is_other_temp_schema PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 16 "26" _null_ _null_ _null_ _null_ pg_is_other_temp_schema _null_ _null_ _null_ ));
DESCR("is schema another session's temp schema?");
-DATA(insert OID = 2171 ( pg_cancel_backend PGNSP PGUID 12 1 0 0 f f f t f v 1 0 16 "23" _null_ _null_ _null_ _null_ pg_cancel_backend _null_ _null_ _null_ ));
+DATA(insert OID = 2171 ( pg_cancel_backend PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 16 "23" _null_ _null_ _null_ _null_ pg_cancel_backend _null_ _null_ _null_ ));
DESCR("cancel a server process' current query");
-DATA(insert OID = 2096 ( pg_terminate_backend PGNSP PGUID 12 1 0 0 f f f t f v 1 0 16 "23" _null_ _null_ _null_ _null_ pg_terminate_backend _null_ _null_ _null_ ));
+DATA(insert OID = 2096 ( pg_terminate_backend PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 16 "23" _null_ _null_ _null_ _null_ pg_terminate_backend _null_ _null_ _null_ ));
DESCR("terminate a server process");
-DATA(insert OID = 2172 ( pg_start_backup PGNSP PGUID 12 1 0 0 f f f t f v 2 0 25 "25 16" _null_ _null_ _null_ _null_ pg_start_backup _null_ _null_ _null_ ));
+DATA(insert OID = 2172 ( pg_start_backup PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 25 "25 16" _null_ _null_ _null_ _null_ pg_start_backup _null_ _null_ _null_ ));
DESCR("prepare for taking an online backup");
-DATA(insert OID = 2173 ( pg_stop_backup PGNSP PGUID 12 1 0 0 f f f t f v 0 0 25 "" _null_ _null_ _null_ _null_ pg_stop_backup _null_ _null_ _null_ ));
+DATA(insert OID = 2173 ( pg_stop_backup PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 25 "" _null_ _null_ _null_ _null_ pg_stop_backup _null_ _null_ _null_ ));
DESCR("finish taking an online backup");
-DATA(insert OID = 2848 ( pg_switch_xlog PGNSP PGUID 12 1 0 0 f f f t f v 0 0 25 "" _null_ _null_ _null_ _null_ pg_switch_xlog _null_ _null_ _null_ ));
+DATA(insert OID = 2848 ( pg_switch_xlog PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 25 "" _null_ _null_ _null_ _null_ pg_switch_xlog _null_ _null_ _null_ ));
DESCR("switch to new xlog file");
-DATA(insert OID = 3098 ( pg_create_restore_point PGNSP PGUID 12 1 0 0 f f f t f v 1 0 25 "25" _null_ _null_ _null_ _null_ pg_create_restore_point _null_ _null_ _null_ ));
+DATA(insert OID = 3098 ( pg_create_restore_point PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 25 "25" _null_ _null_ _null_ _null_ pg_create_restore_point _null_ _null_ _null_ ));
DESCR("create a named restore point");
-DATA(insert OID = 2849 ( pg_current_xlog_location PGNSP PGUID 12 1 0 0 f f f t f v 0 0 25 "" _null_ _null_ _null_ _null_ pg_current_xlog_location _null_ _null_ _null_ ));
+DATA(insert OID = 2849 ( pg_current_xlog_location PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 25 "" _null_ _null_ _null_ _null_ pg_current_xlog_location _null_ _null_ _null_ ));
DESCR("current xlog write location");
-DATA(insert OID = 2852 ( pg_current_xlog_insert_location PGNSP PGUID 12 1 0 0 f f f t f v 0 0 25 "" _null_ _null_ _null_ _null_ pg_current_xlog_insert_location _null_ _null_ _null_ ));
+DATA(insert OID = 2852 ( pg_current_xlog_insert_location PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 25 "" _null_ _null_ _null_ _null_ pg_current_xlog_insert_location _null_ _null_ _null_ ));
DESCR("current xlog insert location");
-DATA(insert OID = 2850 ( pg_xlogfile_name_offset PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2249 "25" "{25,25,23}" "{i,o,o}" "{wal_location,file_name,file_offset}" _null_ pg_xlogfile_name_offset _null_ _null_ _null_ ));
+DATA(insert OID = 2850 ( pg_xlogfile_name_offset PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2249 "25" "{25,25,23}" "{i,o,o}" "{wal_location,file_name,file_offset}" _null_ pg_xlogfile_name_offset _null_ _null_ _null_ ));
DESCR("xlog filename and byte offset, given an xlog location");
-DATA(insert OID = 2851 ( pg_xlogfile_name PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ pg_xlogfile_name _null_ _null_ _null_ ));
+DATA(insert OID = 2851 ( pg_xlogfile_name PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ pg_xlogfile_name _null_ _null_ _null_ ));
DESCR("xlog filename, given an xlog location");
-DATA(insert OID = 3810 ( pg_is_in_recovery PGNSP PGUID 12 1 0 0 f f f t f v 0 0 16 "" _null_ _null_ _null_ _null_ pg_is_in_recovery _null_ _null_ _null_ ));
+DATA(insert OID = 3810 ( pg_is_in_recovery PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 16 "" _null_ _null_ _null_ _null_ pg_is_in_recovery _null_ _null_ _null_ ));
DESCR("true if server is in recovery");
-DATA(insert OID = 3820 ( pg_last_xlog_receive_location PGNSP PGUID 12 1 0 0 f f f t f v 0 0 25 "" _null_ _null_ _null_ _null_ pg_last_xlog_receive_location _null_ _null_ _null_ ));
+DATA(insert OID = 3820 ( pg_last_xlog_receive_location PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 25 "" _null_ _null_ _null_ _null_ pg_last_xlog_receive_location _null_ _null_ _null_ ));
DESCR("current xlog flush location");
-DATA(insert OID = 3821 ( pg_last_xlog_replay_location PGNSP PGUID 12 1 0 0 f f f t f v 0 0 25 "" _null_ _null_ _null_ _null_ pg_last_xlog_replay_location _null_ _null_ _null_ ));
+DATA(insert OID = 3821 ( pg_last_xlog_replay_location PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 25 "" _null_ _null_ _null_ _null_ pg_last_xlog_replay_location _null_ _null_ _null_ ));
DESCR("last xlog replay location");
-DATA(insert OID = 3830 ( pg_last_xact_replay_timestamp PGNSP PGUID 12 1 0 0 f f f t f v 0 0 1184 "" _null_ _null_ _null_ _null_ pg_last_xact_replay_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 3830 ( pg_last_xact_replay_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 1184 "" _null_ _null_ _null_ _null_ pg_last_xact_replay_timestamp _null_ _null_ _null_ ));
DESCR("timestamp of last replay xact");
-DATA(insert OID = 3071 ( pg_xlog_replay_pause PGNSP PGUID 12 1 0 0 f f f t f v 0 0 2278 "" _null_ _null_ _null_ _null_ pg_xlog_replay_pause _null_ _null_ _null_ ));
+DATA(insert OID = 3071 ( pg_xlog_replay_pause PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 2278 "" _null_ _null_ _null_ _null_ pg_xlog_replay_pause _null_ _null_ _null_ ));
DESCR("pause xlog replay");
-DATA(insert OID = 3072 ( pg_xlog_replay_resume PGNSP PGUID 12 1 0 0 f f f t f v 0 0 2278 "" _null_ _null_ _null_ _null_ pg_xlog_replay_resume _null_ _null_ _null_ ));
+DATA(insert OID = 3072 ( pg_xlog_replay_resume PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 2278 "" _null_ _null_ _null_ _null_ pg_xlog_replay_resume _null_ _null_ _null_ ));
DESCR("resume xlog replay, if it was paused");
-DATA(insert OID = 3073 ( pg_is_xlog_replay_paused PGNSP PGUID 12 1 0 0 f f f t f v 0 0 16 "" _null_ _null_ _null_ _null_ pg_is_xlog_replay_paused _null_ _null_ _null_ ));
+DATA(insert OID = 3073 ( pg_is_xlog_replay_paused PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 16 "" _null_ _null_ _null_ _null_ pg_is_xlog_replay_paused _null_ _null_ _null_ ));
DESCR("true if xlog replay is paused");
-DATA(insert OID = 2621 ( pg_reload_conf PGNSP PGUID 12 1 0 0 f f f t f v 0 0 16 "" _null_ _null_ _null_ _null_ pg_reload_conf _null_ _null_ _null_ ));
+DATA(insert OID = 2621 ( pg_reload_conf PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 16 "" _null_ _null_ _null_ _null_ pg_reload_conf _null_ _null_ _null_ ));
DESCR("reload configuration files");
-DATA(insert OID = 2622 ( pg_rotate_logfile PGNSP PGUID 12 1 0 0 f f f t f v 0 0 16 "" _null_ _null_ _null_ _null_ pg_rotate_logfile _null_ _null_ _null_ ));
+DATA(insert OID = 2622 ( pg_rotate_logfile PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 16 "" _null_ _null_ _null_ _null_ pg_rotate_logfile _null_ _null_ _null_ ));
DESCR("rotate log file");
-DATA(insert OID = 2623 ( pg_stat_file PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2249 "25" "{25,20,1184,1184,1184,1184,16}" "{i,o,o,o,o,o,o}" "{filename,size,access,modification,change,creation,isdir}" _null_ pg_stat_file _null_ _null_ _null_ ));
+DATA(insert OID = 2623 ( pg_stat_file PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2249 "25" "{25,20,1184,1184,1184,1184,16}" "{i,o,o,o,o,o,o}" "{filename,size,access,modification,change,creation,isdir}" _null_ pg_stat_file _null_ _null_ _null_ ));
DESCR("get information about file");
-DATA(insert OID = 2624 ( pg_read_file PGNSP PGUID 12 1 0 0 f f f t f v 3 0 25 "25 20 20" _null_ _null_ _null_ _null_ pg_read_file _null_ _null_ _null_ ));
+DATA(insert OID = 2624 ( pg_read_file PGNSP PGUID 12 1 0 0 0 f f f t f v 3 0 25 "25 20 20" _null_ _null_ _null_ _null_ pg_read_file _null_ _null_ _null_ ));
DESCR("read text from a file");
-DATA(insert OID = 3826 ( pg_read_file PGNSP PGUID 12 1 0 0 f f f t f v 1 0 25 "25" _null_ _null_ _null_ _null_ pg_read_file_all _null_ _null_ _null_ ));
+DATA(insert OID = 3826 ( pg_read_file PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 25 "25" _null_ _null_ _null_ _null_ pg_read_file_all _null_ _null_ _null_ ));
DESCR("read text from a file");
-DATA(insert OID = 3827 ( pg_read_binary_file PGNSP PGUID 12 1 0 0 f f f t f v 3 0 17 "25 20 20" _null_ _null_ _null_ _null_ pg_read_binary_file _null_ _null_ _null_ ));
+DATA(insert OID = 3827 ( pg_read_binary_file PGNSP PGUID 12 1 0 0 0 f f f t f v 3 0 17 "25 20 20" _null_ _null_ _null_ _null_ pg_read_binary_file _null_ _null_ _null_ ));
DESCR("read bytea from a file");
-DATA(insert OID = 3828 ( pg_read_binary_file PGNSP PGUID 12 1 0 0 f f f t f v 1 0 17 "25" _null_ _null_ _null_ _null_ pg_read_binary_file_all _null_ _null_ _null_ ));
+DATA(insert OID = 3828 ( pg_read_binary_file PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 17 "25" _null_ _null_ _null_ _null_ pg_read_binary_file_all _null_ _null_ _null_ ));
DESCR("read bytea from a file");
-DATA(insert OID = 2625 ( pg_ls_dir PGNSP PGUID 12 1 1000 0 f f f t t v 1 0 25 "25" _null_ _null_ _null_ _null_ pg_ls_dir _null_ _null_ _null_ ));
+DATA(insert OID = 2625 ( pg_ls_dir PGNSP PGUID 12 1 1000 0 0 f f f t t v 1 0 25 "25" _null_ _null_ _null_ _null_ pg_ls_dir _null_ _null_ _null_ ));
DESCR("list all files in a directory");
-DATA(insert OID = 2626 ( pg_sleep PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2278 "701" _null_ _null_ _null_ _null_ pg_sleep _null_ _null_ _null_ ));
+DATA(insert OID = 2626 ( pg_sleep PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "701" _null_ _null_ _null_ _null_ pg_sleep _null_ _null_ _null_ ));
DESCR("sleep for the specified time in seconds");
-DATA(insert OID = 2971 ( text PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "16" _null_ _null_ _null_ _null_ booltext _null_ _null_ _null_ ));
+DATA(insert OID = 2971 ( text PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "16" _null_ _null_ _null_ _null_ booltext _null_ _null_ _null_ ));
DESCR("convert boolean to text");
/* Aggregates (moved here from pg_aggregate for 7.3) */
-DATA(insert OID = 2100 ( avg PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2100 ( avg PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("the average (arithmetic mean) as numeric of all bigint values");
-DATA(insert OID = 2101 ( avg PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2101 ( avg PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("the average (arithmetic mean) as numeric of all integer values");
-DATA(insert OID = 2102 ( avg PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2102 ( avg PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("the average (arithmetic mean) as numeric of all smallint values");
-DATA(insert OID = 2103 ( avg PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2103 ( avg PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("the average (arithmetic mean) as numeric of all numeric values");
-DATA(insert OID = 2104 ( avg PGNSP PGUID 12 1 0 0 t f f f f i 1 0 701 "700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2104 ( avg PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 701 "700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("the average (arithmetic mean) as float8 of all float4 values");
-DATA(insert OID = 2105 ( avg PGNSP PGUID 12 1 0 0 t f f f f i 1 0 701 "701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2105 ( avg PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 701 "701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("the average (arithmetic mean) as float8 of all float8 values");
-DATA(insert OID = 2106 ( avg PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1186 "1186" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2106 ( avg PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1186 "1186" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("the average (arithmetic mean) as interval of all interval values");
-DATA(insert OID = 2107 ( sum PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2107 ( sum PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sum as numeric across all bigint input values");
-DATA(insert OID = 2108 ( sum PGNSP PGUID 12 1 0 0 t f f f f i 1 0 20 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2108 ( sum PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 20 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sum as bigint across all integer input values");
-DATA(insert OID = 2109 ( sum PGNSP PGUID 12 1 0 0 t f f f f i 1 0 20 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2109 ( sum PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 20 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sum as bigint across all smallint input values");
-DATA(insert OID = 2110 ( sum PGNSP PGUID 12 1 0 0 t f f f f i 1 0 700 "700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2110 ( sum PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 700 "700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sum as float4 across all float4 input values");
-DATA(insert OID = 2111 ( sum PGNSP PGUID 12 1 0 0 t f f f f i 1 0 701 "701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2111 ( sum PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 701 "701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sum as float8 across all float8 input values");
-DATA(insert OID = 2112 ( sum PGNSP PGUID 12 1 0 0 t f f f f i 1 0 790 "790" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2112 ( sum PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 790 "790" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sum as money across all money input values");
-DATA(insert OID = 2113 ( sum PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1186 "1186" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2113 ( sum PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1186 "1186" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sum as interval across all interval input values");
-DATA(insert OID = 2114 ( sum PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2114 ( sum PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sum as numeric across all numeric input values");
-DATA(insert OID = 2115 ( max PGNSP PGUID 12 1 0 0 t f f f f i 1 0 20 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2115 ( max PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 20 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("maximum value of all bigint input values");
-DATA(insert OID = 2116 ( max PGNSP PGUID 12 1 0 0 t f f f f i 1 0 23 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2116 ( max PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 23 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("maximum value of all integer input values");
-DATA(insert OID = 2117 ( max PGNSP PGUID 12 1 0 0 t f f f f i 1 0 21 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2117 ( max PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 21 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("maximum value of all smallint input values");
-DATA(insert OID = 2118 ( max PGNSP PGUID 12 1 0 0 t f f f f i 1 0 26 "26" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2118 ( max PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 26 "26" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("maximum value of all oid input values");
-DATA(insert OID = 2119 ( max PGNSP PGUID 12 1 0 0 t f f f f i 1 0 700 "700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2119 ( max PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 700 "700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("maximum value of all float4 input values");
-DATA(insert OID = 2120 ( max PGNSP PGUID 12 1 0 0 t f f f f i 1 0 701 "701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2120 ( max PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 701 "701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("maximum value of all float8 input values");
-DATA(insert OID = 2121 ( max PGNSP PGUID 12 1 0 0 t f f f f i 1 0 702 "702" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2121 ( max PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 702 "702" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("maximum value of all abstime input values");
-DATA(insert OID = 2122 ( max PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1082 "1082" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2122 ( max PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1082 "1082" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("maximum value of all date input values");
-DATA(insert OID = 2123 ( max PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1083 "1083" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2123 ( max PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1083 "1083" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("maximum value of all time input values");
-DATA(insert OID = 2124 ( max PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1266 "1266" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2124 ( max PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1266 "1266" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("maximum value of all time with time zone input values");
-DATA(insert OID = 2125 ( max PGNSP PGUID 12 1 0 0 t f f f f i 1 0 790 "790" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2125 ( max PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 790 "790" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("maximum value of all money input values");
-DATA(insert OID = 2126 ( max PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1114 "1114" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2126 ( max PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1114 "1114" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("maximum value of all timestamp input values");
-DATA(insert OID = 2127 ( max PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1184 "1184" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2127 ( max PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1184 "1184" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("maximum value of all timestamp with time zone input values");
-DATA(insert OID = 2128 ( max PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1186 "1186" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2128 ( max PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1186 "1186" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("maximum value of all interval input values");
-DATA(insert OID = 2129 ( max PGNSP PGUID 12 1 0 0 t f f f f i 1 0 25 "25" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2129 ( max PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 25 "25" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("maximum value of all text input values");
-DATA(insert OID = 2130 ( max PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2130 ( max PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("maximum value of all numeric input values");
-DATA(insert OID = 2050 ( max PGNSP PGUID 12 1 0 0 t f f f f i 1 0 2277 "2277" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2050 ( max PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 2277 "2277" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("maximum value of all anyarray input values");
-DATA(insert OID = 2244 ( max PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1042 "1042" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2244 ( max PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1042 "1042" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("maximum value of all bpchar input values");
-DATA(insert OID = 2797 ( max PGNSP PGUID 12 1 0 0 t f f f f i 1 0 27 "27" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2797 ( max PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 27 "27" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("maximum value of all tid input values");
-DATA(insert OID = 2131 ( min PGNSP PGUID 12 1 0 0 t f f f f i 1 0 20 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2131 ( min PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 20 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("minimum value of all bigint input values");
-DATA(insert OID = 2132 ( min PGNSP PGUID 12 1 0 0 t f f f f i 1 0 23 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2132 ( min PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 23 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("minimum value of all integer input values");
-DATA(insert OID = 2133 ( min PGNSP PGUID 12 1 0 0 t f f f f i 1 0 21 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2133 ( min PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 21 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("minimum value of all smallint input values");
-DATA(insert OID = 2134 ( min PGNSP PGUID 12 1 0 0 t f f f f i 1 0 26 "26" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2134 ( min PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 26 "26" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("minimum value of all oid input values");
-DATA(insert OID = 2135 ( min PGNSP PGUID 12 1 0 0 t f f f f i 1 0 700 "700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2135 ( min PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 700 "700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("minimum value of all float4 input values");
-DATA(insert OID = 2136 ( min PGNSP PGUID 12 1 0 0 t f f f f i 1 0 701 "701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2136 ( min PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 701 "701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("minimum value of all float8 input values");
-DATA(insert OID = 2137 ( min PGNSP PGUID 12 1 0 0 t f f f f i 1 0 702 "702" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2137 ( min PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 702 "702" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("minimum value of all abstime input values");
-DATA(insert OID = 2138 ( min PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1082 "1082" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2138 ( min PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1082 "1082" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("minimum value of all date input values");
-DATA(insert OID = 2139 ( min PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1083 "1083" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2139 ( min PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1083 "1083" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("minimum value of all time input values");
-DATA(insert OID = 2140 ( min PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1266 "1266" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2140 ( min PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1266 "1266" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("minimum value of all time with time zone input values");
-DATA(insert OID = 2141 ( min PGNSP PGUID 12 1 0 0 t f f f f i 1 0 790 "790" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2141 ( min PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 790 "790" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("minimum value of all money input values");
-DATA(insert OID = 2142 ( min PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1114 "1114" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2142 ( min PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1114 "1114" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("minimum value of all timestamp input values");
-DATA(insert OID = 2143 ( min PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1184 "1184" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2143 ( min PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1184 "1184" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("minimum value of all timestamp with time zone input values");
-DATA(insert OID = 2144 ( min PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1186 "1186" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2144 ( min PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1186 "1186" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("minimum value of all interval input values");
-DATA(insert OID = 2145 ( min PGNSP PGUID 12 1 0 0 t f f f f i 1 0 25 "25" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2145 ( min PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 25 "25" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("minimum value of all text values");
-DATA(insert OID = 2146 ( min PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2146 ( min PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("minimum value of all numeric input values");
-DATA(insert OID = 2051 ( min PGNSP PGUID 12 1 0 0 t f f f f i 1 0 2277 "2277" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2051 ( min PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 2277 "2277" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("minimum value of all anyarray input values");
-DATA(insert OID = 2245 ( min PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1042 "1042" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2245 ( min PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1042 "1042" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("minimum value of all bpchar input values");
-DATA(insert OID = 2798 ( min PGNSP PGUID 12 1 0 0 t f f f f i 1 0 27 "27" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2798 ( min PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 27 "27" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("minimum value of all tid input values");
/* count has two forms: count(any) and count(*) */
-DATA(insert OID = 2147 ( count PGNSP PGUID 12 1 0 0 t f f f f i 1 0 20 "2276" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2147 ( count PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 20 "2276" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("number of input rows for which the input expression is not null");
-DATA(insert OID = 2803 ( count PGNSP PGUID 12 1 0 0 t f f f f i 0 0 20 "" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2803 ( count PGNSP PGUID 12 1 0 0 0 t f f f f i 0 0 20 "" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("number of input rows");
-DATA(insert OID = 2718 ( var_pop PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2718 ( var_pop PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("population variance of bigint input values (square of the population standard deviation)");
-DATA(insert OID = 2719 ( var_pop PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2719 ( var_pop PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("population variance of integer input values (square of the population standard deviation)");
-DATA(insert OID = 2720 ( var_pop PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2720 ( var_pop PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("population variance of smallint input values (square of the population standard deviation)");
-DATA(insert OID = 2721 ( var_pop PGNSP PGUID 12 1 0 0 t f f f f i 1 0 701 "700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2721 ( var_pop PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 701 "700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("population variance of float4 input values (square of the population standard deviation)");
-DATA(insert OID = 2722 ( var_pop PGNSP PGUID 12 1 0 0 t f f f f i 1 0 701 "701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2722 ( var_pop PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 701 "701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("population variance of float8 input values (square of the population standard deviation)");
-DATA(insert OID = 2723 ( var_pop PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2723 ( var_pop PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("population variance of numeric input values (square of the population standard deviation)");
-DATA(insert OID = 2641 ( var_samp PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2641 ( var_samp PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sample variance of bigint input values (square of the sample standard deviation)");
-DATA(insert OID = 2642 ( var_samp PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2642 ( var_samp PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sample variance of integer input values (square of the sample standard deviation)");
-DATA(insert OID = 2643 ( var_samp PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2643 ( var_samp PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sample variance of smallint input values (square of the sample standard deviation)");
-DATA(insert OID = 2644 ( var_samp PGNSP PGUID 12 1 0 0 t f f f f i 1 0 701 "700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2644 ( var_samp PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 701 "700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sample variance of float4 input values (square of the sample standard deviation)");
-DATA(insert OID = 2645 ( var_samp PGNSP PGUID 12 1 0 0 t f f f f i 1 0 701 "701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2645 ( var_samp PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 701 "701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sample variance of float8 input values (square of the sample standard deviation)");
-DATA(insert OID = 2646 ( var_samp PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2646 ( var_samp PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sample variance of numeric input values (square of the sample standard deviation)");
-DATA(insert OID = 2148 ( variance PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2148 ( variance PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("historical alias for var_samp");
-DATA(insert OID = 2149 ( variance PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2149 ( variance PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("historical alias for var_samp");
-DATA(insert OID = 2150 ( variance PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2150 ( variance PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("historical alias for var_samp");
-DATA(insert OID = 2151 ( variance PGNSP PGUID 12 1 0 0 t f f f f i 1 0 701 "700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2151 ( variance PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 701 "700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("historical alias for var_samp");
-DATA(insert OID = 2152 ( variance PGNSP PGUID 12 1 0 0 t f f f f i 1 0 701 "701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2152 ( variance PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 701 "701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("historical alias for var_samp");
-DATA(insert OID = 2153 ( variance PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2153 ( variance PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("historical alias for var_samp");
-DATA(insert OID = 2724 ( stddev_pop PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2724 ( stddev_pop PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("population standard deviation of bigint input values");
-DATA(insert OID = 2725 ( stddev_pop PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2725 ( stddev_pop PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("population standard deviation of integer input values");
-DATA(insert OID = 2726 ( stddev_pop PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2726 ( stddev_pop PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("population standard deviation of smallint input values");
-DATA(insert OID = 2727 ( stddev_pop PGNSP PGUID 12 1 0 0 t f f f f i 1 0 701 "700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2727 ( stddev_pop PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 701 "700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("population standard deviation of float4 input values");
-DATA(insert OID = 2728 ( stddev_pop PGNSP PGUID 12 1 0 0 t f f f f i 1 0 701 "701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2728 ( stddev_pop PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 701 "701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("population standard deviation of float8 input values");
-DATA(insert OID = 2729 ( stddev_pop PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2729 ( stddev_pop PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("population standard deviation of numeric input values");
-DATA(insert OID = 2712 ( stddev_samp PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2712 ( stddev_samp PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sample standard deviation of bigint input values");
-DATA(insert OID = 2713 ( stddev_samp PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2713 ( stddev_samp PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sample standard deviation of integer input values");
-DATA(insert OID = 2714 ( stddev_samp PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2714 ( stddev_samp PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sample standard deviation of smallint input values");
-DATA(insert OID = 2715 ( stddev_samp PGNSP PGUID 12 1 0 0 t f f f f i 1 0 701 "700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2715 ( stddev_samp PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 701 "700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sample standard deviation of float4 input values");
-DATA(insert OID = 2716 ( stddev_samp PGNSP PGUID 12 1 0 0 t f f f f i 1 0 701 "701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2716 ( stddev_samp PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 701 "701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sample standard deviation of float8 input values");
-DATA(insert OID = 2717 ( stddev_samp PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2717 ( stddev_samp PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sample standard deviation of numeric input values");
-DATA(insert OID = 2154 ( stddev PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2154 ( stddev PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("historical alias for stddev_samp");
-DATA(insert OID = 2155 ( stddev PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2155 ( stddev PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("historical alias for stddev_samp");
-DATA(insert OID = 2156 ( stddev PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2156 ( stddev PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("historical alias for stddev_samp");
-DATA(insert OID = 2157 ( stddev PGNSP PGUID 12 1 0 0 t f f f f i 1 0 701 "700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2157 ( stddev PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 701 "700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("historical alias for stddev_samp");
-DATA(insert OID = 2158 ( stddev PGNSP PGUID 12 1 0 0 t f f f f i 1 0 701 "701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2158 ( stddev PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 701 "701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("historical alias for stddev_samp");
-DATA(insert OID = 2159 ( stddev PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2159 ( stddev PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1700 "1700" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("historical alias for stddev_samp");
-DATA(insert OID = 2818 ( regr_count PGNSP PGUID 12 1 0 0 t f f f f i 2 0 20 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2818 ( regr_count PGNSP PGUID 12 1 0 0 0 t f f f f i 2 0 20 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("number of input rows in which both expressions are not null");
-DATA(insert OID = 2819 ( regr_sxx PGNSP PGUID 12 1 0 0 t f f f f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2819 ( regr_sxx PGNSP PGUID 12 1 0 0 0 t f f f f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sum of squares of the independent variable (sum(X^2) - sum(X)^2/N)");
-DATA(insert OID = 2820 ( regr_syy PGNSP PGUID 12 1 0 0 t f f f f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2820 ( regr_syy PGNSP PGUID 12 1 0 0 0 t f f f f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sum of squares of the dependent variable (sum(Y^2) - sum(Y)^2/N)");
-DATA(insert OID = 2821 ( regr_sxy PGNSP PGUID 12 1 0 0 t f f f f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2821 ( regr_sxy PGNSP PGUID 12 1 0 0 0 t f f f f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sum of products of independent times dependent variable (sum(X*Y) - sum(X) * sum(Y)/N)");
-DATA(insert OID = 2822 ( regr_avgx PGNSP PGUID 12 1 0 0 t f f f f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2822 ( regr_avgx PGNSP PGUID 12 1 0 0 0 t f f f f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("average of the independent variable (sum(X)/N)");
-DATA(insert OID = 2823 ( regr_avgy PGNSP PGUID 12 1 0 0 t f f f f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2823 ( regr_avgy PGNSP PGUID 12 1 0 0 0 t f f f f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("average of the dependent variable (sum(Y)/N)");
-DATA(insert OID = 2824 ( regr_r2 PGNSP PGUID 12 1 0 0 t f f f f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2824 ( regr_r2 PGNSP PGUID 12 1 0 0 0 t f f f f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("square of the correlation coefficient");
-DATA(insert OID = 2825 ( regr_slope PGNSP PGUID 12 1 0 0 t f f f f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2825 ( regr_slope PGNSP PGUID 12 1 0 0 0 t f f f f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("slope of the least-squares-fit linear equation determined by the (X, Y) pairs");
-DATA(insert OID = 2826 ( regr_intercept PGNSP PGUID 12 1 0 0 t f f f f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2826 ( regr_intercept PGNSP PGUID 12 1 0 0 0 t f f f f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("y-intercept of the least-squares-fit linear equation determined by the (X, Y) pairs");
-DATA(insert OID = 2827 ( covar_pop PGNSP PGUID 12 1 0 0 t f f f f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2827 ( covar_pop PGNSP PGUID 12 1 0 0 0 t f f f f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("population covariance");
-DATA(insert OID = 2828 ( covar_samp PGNSP PGUID 12 1 0 0 t f f f f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2828 ( covar_samp PGNSP PGUID 12 1 0 0 0 t f f f f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("sample covariance");
-DATA(insert OID = 2829 ( corr PGNSP PGUID 12 1 0 0 t f f f f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2829 ( corr PGNSP PGUID 12 1 0 0 0 t f f f f i 2 0 701 "701 701" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("correlation coefficient");
-DATA(insert OID = 2160 ( text_pattern_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ text_pattern_lt _null_ _null_ _null_ ));
-DATA(insert OID = 2161 ( text_pattern_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ text_pattern_le _null_ _null_ _null_ ));
-DATA(insert OID = 2163 ( text_pattern_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ text_pattern_ge _null_ _null_ _null_ ));
-DATA(insert OID = 2164 ( text_pattern_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ text_pattern_gt _null_ _null_ _null_ ));
-DATA(insert OID = 2166 ( bttext_pattern_cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "25 25" _null_ _null_ _null_ _null_ bttext_pattern_cmp _null_ _null_ _null_ ));
+DATA(insert OID = 2160 ( text_pattern_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ text_pattern_lt _null_ _null_ _null_ ));
+DATA(insert OID = 2161 ( text_pattern_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ text_pattern_le _null_ _null_ _null_ ));
+DATA(insert OID = 2163 ( text_pattern_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ text_pattern_ge _null_ _null_ _null_ ));
+DATA(insert OID = 2164 ( text_pattern_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "25 25" _null_ _null_ _null_ _null_ text_pattern_gt _null_ _null_ _null_ ));
+DATA(insert OID = 2166 ( bttext_pattern_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "25 25" _null_ _null_ _null_ _null_ bttext_pattern_cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 2174 ( bpchar_pattern_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ bpchar_pattern_lt _null_ _null_ _null_ ));
-DATA(insert OID = 2175 ( bpchar_pattern_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ bpchar_pattern_le _null_ _null_ _null_ ));
-DATA(insert OID = 2177 ( bpchar_pattern_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ bpchar_pattern_ge _null_ _null_ _null_ ));
-DATA(insert OID = 2178 ( bpchar_pattern_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ bpchar_pattern_gt _null_ _null_ _null_ ));
-DATA(insert OID = 2180 ( btbpchar_pattern_cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "1042 1042" _null_ _null_ _null_ _null_ btbpchar_pattern_cmp _null_ _null_ _null_ ));
+DATA(insert OID = 2174 ( bpchar_pattern_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ bpchar_pattern_lt _null_ _null_ _null_ ));
+DATA(insert OID = 2175 ( bpchar_pattern_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ bpchar_pattern_le _null_ _null_ _null_ ));
+DATA(insert OID = 2177 ( bpchar_pattern_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ bpchar_pattern_ge _null_ _null_ _null_ ));
+DATA(insert OID = 2178 ( bpchar_pattern_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ bpchar_pattern_gt _null_ _null_ _null_ ));
+DATA(insert OID = 2180 ( btbpchar_pattern_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "1042 1042" _null_ _null_ _null_ _null_ btbpchar_pattern_cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 2188 ( btint48cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "23 20" _null_ _null_ _null_ _null_ btint48cmp _null_ _null_ _null_ ));
+DATA(insert OID = 2188 ( btint48cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "23 20" _null_ _null_ _null_ _null_ btint48cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 2189 ( btint84cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "20 23" _null_ _null_ _null_ _null_ btint84cmp _null_ _null_ _null_ ));
+DATA(insert OID = 2189 ( btint84cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "20 23" _null_ _null_ _null_ _null_ btint84cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 2190 ( btint24cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "21 23" _null_ _null_ _null_ _null_ btint24cmp _null_ _null_ _null_ ));
+DATA(insert OID = 2190 ( btint24cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "21 23" _null_ _null_ _null_ _null_ btint24cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 2191 ( btint42cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "23 21" _null_ _null_ _null_ _null_ btint42cmp _null_ _null_ _null_ ));
+DATA(insert OID = 2191 ( btint42cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "23 21" _null_ _null_ _null_ _null_ btint42cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 2192 ( btint28cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "21 20" _null_ _null_ _null_ _null_ btint28cmp _null_ _null_ _null_ ));
+DATA(insert OID = 2192 ( btint28cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "21 20" _null_ _null_ _null_ _null_ btint28cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 2193 ( btint82cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "20 21" _null_ _null_ _null_ _null_ btint82cmp _null_ _null_ _null_ ));
+DATA(insert OID = 2193 ( btint82cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "20 21" _null_ _null_ _null_ _null_ btint82cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 2194 ( btfloat48cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "700 701" _null_ _null_ _null_ _null_ btfloat48cmp _null_ _null_ _null_ ));
+DATA(insert OID = 2194 ( btfloat48cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "700 701" _null_ _null_ _null_ _null_ btfloat48cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 2195 ( btfloat84cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "701 700" _null_ _null_ _null_ _null_ btfloat84cmp _null_ _null_ _null_ ));
+DATA(insert OID = 2195 ( btfloat84cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "701 700" _null_ _null_ _null_ _null_ btfloat84cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 2212 ( regprocedurein PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2202 "2275" _null_ _null_ _null_ _null_ regprocedurein _null_ _null_ _null_ ));
+DATA(insert OID = 2212 ( regprocedurein PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2202 "2275" _null_ _null_ _null_ _null_ regprocedurein _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2213 ( regprocedureout PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "2202" _null_ _null_ _null_ _null_ regprocedureout _null_ _null_ _null_ ));
+DATA(insert OID = 2213 ( regprocedureout PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "2202" _null_ _null_ _null_ _null_ regprocedureout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2214 ( regoperin PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2203 "2275" _null_ _null_ _null_ _null_ regoperin _null_ _null_ _null_ ));
+DATA(insert OID = 2214 ( regoperin PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2203 "2275" _null_ _null_ _null_ _null_ regoperin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2215 ( regoperout PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "2203" _null_ _null_ _null_ _null_ regoperout _null_ _null_ _null_ ));
+DATA(insert OID = 2215 ( regoperout PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "2203" _null_ _null_ _null_ _null_ regoperout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2216 ( regoperatorin PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2204 "2275" _null_ _null_ _null_ _null_ regoperatorin _null_ _null_ _null_ ));
+DATA(insert OID = 2216 ( regoperatorin PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2204 "2275" _null_ _null_ _null_ _null_ regoperatorin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2217 ( regoperatorout PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "2204" _null_ _null_ _null_ _null_ regoperatorout _null_ _null_ _null_ ));
+DATA(insert OID = 2217 ( regoperatorout PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "2204" _null_ _null_ _null_ _null_ regoperatorout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2218 ( regclassin PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2205 "2275" _null_ _null_ _null_ _null_ regclassin _null_ _null_ _null_ ));
+DATA(insert OID = 2218 ( regclassin PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2205 "2275" _null_ _null_ _null_ _null_ regclassin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2219 ( regclassout PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "2205" _null_ _null_ _null_ _null_ regclassout _null_ _null_ _null_ ));
+DATA(insert OID = 2219 ( regclassout PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "2205" _null_ _null_ _null_ _null_ regclassout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2220 ( regtypein PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2206 "2275" _null_ _null_ _null_ _null_ regtypein _null_ _null_ _null_ ));
+DATA(insert OID = 2220 ( regtypein PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2206 "2275" _null_ _null_ _null_ _null_ regtypein _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2221 ( regtypeout PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "2206" _null_ _null_ _null_ _null_ regtypeout _null_ _null_ _null_ ));
+DATA(insert OID = 2221 ( regtypeout PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "2206" _null_ _null_ _null_ _null_ regtypeout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 1079 ( regclass PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2205 "25" _null_ _null_ _null_ _null_ text_regclass _null_ _null_ _null_ ));
+DATA(insert OID = 1079 ( regclass PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2205 "25" _null_ _null_ _null_ _null_ text_regclass _null_ _null_ _null_ ));
DESCR("convert text to regclass");
-DATA(insert OID = 2246 ( fmgr_internal_validator PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2278 "26" _null_ _null_ _null_ _null_ fmgr_internal_validator _null_ _null_ _null_ ));
+DATA(insert OID = 2246 ( fmgr_internal_validator PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2278 "26" _null_ _null_ _null_ _null_ fmgr_internal_validator _null_ _null_ _null_ ));
DESCR("(internal)");
-DATA(insert OID = 2247 ( fmgr_c_validator PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2278 "26" _null_ _null_ _null_ _null_ fmgr_c_validator _null_ _null_ _null_ ));
+DATA(insert OID = 2247 ( fmgr_c_validator PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2278 "26" _null_ _null_ _null_ _null_ fmgr_c_validator _null_ _null_ _null_ ));
DESCR("(internal)");
-DATA(insert OID = 2248 ( fmgr_sql_validator PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2278 "26" _null_ _null_ _null_ _null_ fmgr_sql_validator _null_ _null_ _null_ ));
+DATA(insert OID = 2248 ( fmgr_sql_validator PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2278 "26" _null_ _null_ _null_ _null_ fmgr_sql_validator _null_ _null_ _null_ ));
DESCR("(internal)");
-DATA(insert OID = 2250 ( has_database_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ has_database_privilege_name_name _null_ _null_ _null_ ));
+DATA(insert OID = 2250 ( has_database_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ has_database_privilege_name_name _null_ _null_ _null_ ));
DESCR("user privilege on database by username, database name");
-DATA(insert OID = 2251 ( has_database_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ has_database_privilege_name_id _null_ _null_ _null_ ));
+DATA(insert OID = 2251 ( has_database_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ has_database_privilege_name_id _null_ _null_ _null_ ));
DESCR("user privilege on database by username, database oid");
-DATA(insert OID = 2252 ( has_database_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ has_database_privilege_id_name _null_ _null_ _null_ ));
+DATA(insert OID = 2252 ( has_database_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ has_database_privilege_id_name _null_ _null_ _null_ ));
DESCR("user privilege on database by user oid, database name");
-DATA(insert OID = 2253 ( has_database_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ has_database_privilege_id_id _null_ _null_ _null_ ));
+DATA(insert OID = 2253 ( has_database_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ has_database_privilege_id_id _null_ _null_ _null_ ));
DESCR("user privilege on database by user oid, database oid");
-DATA(insert OID = 2254 ( has_database_privilege PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ has_database_privilege_name _null_ _null_ _null_ ));
+DATA(insert OID = 2254 ( has_database_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ has_database_privilege_name _null_ _null_ _null_ ));
DESCR("current user privilege on database by database name");
-DATA(insert OID = 2255 ( has_database_privilege PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "26 25" _null_ _null_ _null_ _null_ has_database_privilege_id _null_ _null_ _null_ ));
+DATA(insert OID = 2255 ( has_database_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "26 25" _null_ _null_ _null_ _null_ has_database_privilege_id _null_ _null_ _null_ ));
DESCR("current user privilege on database by database oid");
-DATA(insert OID = 2256 ( has_function_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ has_function_privilege_name_name _null_ _null_ _null_ ));
+DATA(insert OID = 2256 ( has_function_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ has_function_privilege_name_name _null_ _null_ _null_ ));
DESCR("user privilege on function by username, function name");
-DATA(insert OID = 2257 ( has_function_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ has_function_privilege_name_id _null_ _null_ _null_ ));
+DATA(insert OID = 2257 ( has_function_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ has_function_privilege_name_id _null_ _null_ _null_ ));
DESCR("user privilege on function by username, function oid");
-DATA(insert OID = 2258 ( has_function_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ has_function_privilege_id_name _null_ _null_ _null_ ));
+DATA(insert OID = 2258 ( has_function_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ has_function_privilege_id_name _null_ _null_ _null_ ));
DESCR("user privilege on function by user oid, function name");
-DATA(insert OID = 2259 ( has_function_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ has_function_privilege_id_id _null_ _null_ _null_ ));
+DATA(insert OID = 2259 ( has_function_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ has_function_privilege_id_id _null_ _null_ _null_ ));
DESCR("user privilege on function by user oid, function oid");
-DATA(insert OID = 2260 ( has_function_privilege PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ has_function_privilege_name _null_ _null_ _null_ ));
+DATA(insert OID = 2260 ( has_function_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ has_function_privilege_name _null_ _null_ _null_ ));
DESCR("current user privilege on function by function name");
-DATA(insert OID = 2261 ( has_function_privilege PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "26 25" _null_ _null_ _null_ _null_ has_function_privilege_id _null_ _null_ _null_ ));
+DATA(insert OID = 2261 ( has_function_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "26 25" _null_ _null_ _null_ _null_ has_function_privilege_id _null_ _null_ _null_ ));
DESCR("current user privilege on function by function oid");
-DATA(insert OID = 2262 ( has_language_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ has_language_privilege_name_name _null_ _null_ _null_ ));
+DATA(insert OID = 2262 ( has_language_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ has_language_privilege_name_name _null_ _null_ _null_ ));
DESCR("user privilege on language by username, language name");
-DATA(insert OID = 2263 ( has_language_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ has_language_privilege_name_id _null_ _null_ _null_ ));
+DATA(insert OID = 2263 ( has_language_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ has_language_privilege_name_id _null_ _null_ _null_ ));
DESCR("user privilege on language by username, language oid");
-DATA(insert OID = 2264 ( has_language_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ has_language_privilege_id_name _null_ _null_ _null_ ));
+DATA(insert OID = 2264 ( has_language_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ has_language_privilege_id_name _null_ _null_ _null_ ));
DESCR("user privilege on language by user oid, language name");
-DATA(insert OID = 2265 ( has_language_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ has_language_privilege_id_id _null_ _null_ _null_ ));
+DATA(insert OID = 2265 ( has_language_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ has_language_privilege_id_id _null_ _null_ _null_ ));
DESCR("user privilege on language by user oid, language oid");
-DATA(insert OID = 2266 ( has_language_privilege PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ has_language_privilege_name _null_ _null_ _null_ ));
+DATA(insert OID = 2266 ( has_language_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ has_language_privilege_name _null_ _null_ _null_ ));
DESCR("current user privilege on language by language name");
-DATA(insert OID = 2267 ( has_language_privilege PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "26 25" _null_ _null_ _null_ _null_ has_language_privilege_id _null_ _null_ _null_ ));
+DATA(insert OID = 2267 ( has_language_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "26 25" _null_ _null_ _null_ _null_ has_language_privilege_id _null_ _null_ _null_ ));
DESCR("current user privilege on language by language oid");
-DATA(insert OID = 2268 ( has_schema_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ has_schema_privilege_name_name _null_ _null_ _null_ ));
+DATA(insert OID = 2268 ( has_schema_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ has_schema_privilege_name_name _null_ _null_ _null_ ));
DESCR("user privilege on schema by username, schema name");
-DATA(insert OID = 2269 ( has_schema_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ has_schema_privilege_name_id _null_ _null_ _null_ ));
+DATA(insert OID = 2269 ( has_schema_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ has_schema_privilege_name_id _null_ _null_ _null_ ));
DESCR("user privilege on schema by username, schema oid");
-DATA(insert OID = 2270 ( has_schema_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ has_schema_privilege_id_name _null_ _null_ _null_ ));
+DATA(insert OID = 2270 ( has_schema_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ has_schema_privilege_id_name _null_ _null_ _null_ ));
DESCR("user privilege on schema by user oid, schema name");
-DATA(insert OID = 2271 ( has_schema_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ has_schema_privilege_id_id _null_ _null_ _null_ ));
+DATA(insert OID = 2271 ( has_schema_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ has_schema_privilege_id_id _null_ _null_ _null_ ));
DESCR("user privilege on schema by user oid, schema oid");
-DATA(insert OID = 2272 ( has_schema_privilege PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ has_schema_privilege_name _null_ _null_ _null_ ));
+DATA(insert OID = 2272 ( has_schema_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ has_schema_privilege_name _null_ _null_ _null_ ));
DESCR("current user privilege on schema by schema name");
-DATA(insert OID = 2273 ( has_schema_privilege PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "26 25" _null_ _null_ _null_ _null_ has_schema_privilege_id _null_ _null_ _null_ ));
+DATA(insert OID = 2273 ( has_schema_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "26 25" _null_ _null_ _null_ _null_ has_schema_privilege_id _null_ _null_ _null_ ));
DESCR("current user privilege on schema by schema oid");
-DATA(insert OID = 2390 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ has_tablespace_privilege_name_name _null_ _null_ _null_ ));
+DATA(insert OID = 2390 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ has_tablespace_privilege_name_name _null_ _null_ _null_ ));
DESCR("user privilege on tablespace by username, tablespace name");
-DATA(insert OID = 2391 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ has_tablespace_privilege_name_id _null_ _null_ _null_ ));
+DATA(insert OID = 2391 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ has_tablespace_privilege_name_id _null_ _null_ _null_ ));
DESCR("user privilege on tablespace by username, tablespace oid");
-DATA(insert OID = 2392 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ has_tablespace_privilege_id_name _null_ _null_ _null_ ));
+DATA(insert OID = 2392 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ has_tablespace_privilege_id_name _null_ _null_ _null_ ));
DESCR("user privilege on tablespace by user oid, tablespace name");
-DATA(insert OID = 2393 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ has_tablespace_privilege_id_id _null_ _null_ _null_ ));
+DATA(insert OID = 2393 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ has_tablespace_privilege_id_id _null_ _null_ _null_ ));
DESCR("user privilege on tablespace by user oid, tablespace oid");
-DATA(insert OID = 2394 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ has_tablespace_privilege_name _null_ _null_ _null_ ));
+DATA(insert OID = 2394 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ has_tablespace_privilege_name _null_ _null_ _null_ ));
DESCR("current user privilege on tablespace by tablespace name");
-DATA(insert OID = 2395 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "26 25" _null_ _null_ _null_ _null_ has_tablespace_privilege_id _null_ _null_ _null_ ));
+DATA(insert OID = 2395 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "26 25" _null_ _null_ _null_ _null_ has_tablespace_privilege_id _null_ _null_ _null_ ));
DESCR("current user privilege on tablespace by tablespace oid");
-DATA(insert OID = 3000 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_name_name _null_ _null_ _null_ ));
+DATA(insert OID = 3000 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_name_name _null_ _null_ _null_ ));
DESCR("user privilege on foreign data wrapper by username, foreign data wrapper name");
-DATA(insert OID = 3001 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_name_id _null_ _null_ _null_ ));
+DATA(insert OID = 3001 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_name_id _null_ _null_ _null_ ));
DESCR("user privilege on foreign data wrapper by username, foreign data wrapper oid");
-DATA(insert OID = 3002 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_id_name _null_ _null_ _null_ ));
+DATA(insert OID = 3002 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_id_name _null_ _null_ _null_ ));
DESCR("user privilege on foreign data wrapper by user oid, foreign data wrapper name");
-DATA(insert OID = 3003 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_id_id _null_ _null_ _null_ ));
+DATA(insert OID = 3003 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_id_id _null_ _null_ _null_ ));
DESCR("user privilege on foreign data wrapper by user oid, foreign data wrapper oid");
-DATA(insert OID = 3004 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_name _null_ _null_ _null_ ));
+DATA(insert OID = 3004 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_name _null_ _null_ _null_ ));
DESCR("current user privilege on foreign data wrapper by foreign data wrapper name");
-DATA(insert OID = 3005 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "26 25" _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_id _null_ _null_ _null_ ));
+DATA(insert OID = 3005 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "26 25" _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_id _null_ _null_ _null_ ));
DESCR("current user privilege on foreign data wrapper by foreign data wrapper oid");
-DATA(insert OID = 3006 ( has_server_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ has_server_privilege_name_name _null_ _null_ _null_ ));
+DATA(insert OID = 3006 ( has_server_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ has_server_privilege_name_name _null_ _null_ _null_ ));
DESCR("user privilege on server by username, server name");
-DATA(insert OID = 3007 ( has_server_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ has_server_privilege_name_id _null_ _null_ _null_ ));
+DATA(insert OID = 3007 ( has_server_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ has_server_privilege_name_id _null_ _null_ _null_ ));
DESCR("user privilege on server by username, server oid");
-DATA(insert OID = 3008 ( has_server_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ has_server_privilege_id_name _null_ _null_ _null_ ));
+DATA(insert OID = 3008 ( has_server_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ has_server_privilege_id_name _null_ _null_ _null_ ));
DESCR("user privilege on server by user oid, server name");
-DATA(insert OID = 3009 ( has_server_privilege PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ has_server_privilege_id_id _null_ _null_ _null_ ));
+DATA(insert OID = 3009 ( has_server_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ has_server_privilege_id_id _null_ _null_ _null_ ));
DESCR("user privilege on server by user oid, server oid");
-DATA(insert OID = 3010 ( has_server_privilege PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ has_server_privilege_name _null_ _null_ _null_ ));
+DATA(insert OID = 3010 ( has_server_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ has_server_privilege_name _null_ _null_ _null_ ));
DESCR("current user privilege on server by server name");
-DATA(insert OID = 3011 ( has_server_privilege PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "26 25" _null_ _null_ _null_ _null_ has_server_privilege_id _null_ _null_ _null_ ));
+DATA(insert OID = 3011 ( has_server_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "26 25" _null_ _null_ _null_ _null_ has_server_privilege_id _null_ _null_ _null_ ));
DESCR("current user privilege on server by server oid");
-DATA(insert OID = 2705 ( pg_has_role PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "19 19 25" _null_ _null_ _null_ _null_ pg_has_role_name_name _null_ _null_ _null_ ));
+DATA(insert OID = 2705 ( pg_has_role PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "19 19 25" _null_ _null_ _null_ _null_ pg_has_role_name_name _null_ _null_ _null_ ));
DESCR("user privilege on role by username, role name");
-DATA(insert OID = 2706 ( pg_has_role PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ pg_has_role_name_id _null_ _null_ _null_ ));
+DATA(insert OID = 2706 ( pg_has_role PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ pg_has_role_name_id _null_ _null_ _null_ ));
DESCR("user privilege on role by username, role oid");
-DATA(insert OID = 2707 ( pg_has_role PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "26 19 25" _null_ _null_ _null_ _null_ pg_has_role_id_name _null_ _null_ _null_ ));
+DATA(insert OID = 2707 ( pg_has_role PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "26 19 25" _null_ _null_ _null_ _null_ pg_has_role_id_name _null_ _null_ _null_ ));
DESCR("user privilege on role by user oid, role name");
-DATA(insert OID = 2708 ( pg_has_role PGNSP PGUID 12 1 0 0 f f f t f s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ pg_has_role_id_id _null_ _null_ _null_ ));
+DATA(insert OID = 2708 ( pg_has_role PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ pg_has_role_id_id _null_ _null_ _null_ ));
DESCR("user privilege on role by user oid, role oid");
-DATA(insert OID = 2709 ( pg_has_role PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "19 25" _null_ _null_ _null_ _null_ pg_has_role_name _null_ _null_ _null_ ));
+DATA(insert OID = 2709 ( pg_has_role PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "19 25" _null_ _null_ _null_ _null_ pg_has_role_name _null_ _null_ _null_ ));
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_ ));
+DATA(insert OID = 2710 ( pg_has_role PGNSP PGUID 12 1 0 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");
-DATA(insert OID = 1269 ( pg_column_size PGNSP PGUID 12 1 0 0 f f f t f s 1 0 23 "2276" _null_ _null_ _null_ _null_ pg_column_size _null_ _null_ _null_ ));
+DATA(insert OID = 1269 ( pg_column_size PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 23 "2276" _null_ _null_ _null_ _null_ pg_column_size _null_ _null_ _null_ ));
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_ ));
+DATA(insert OID = 2322 ( pg_tablespace_size PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_tablespace_size_oid _null_ _null_ _null_ ));
DESCR("total disk space usage for the specified tablespace");
-DATA(insert OID = 2323 ( pg_tablespace_size PGNSP PGUID 12 1 0 0 f f f t f v 1 0 20 "19" _null_ _null_ _null_ _null_ pg_tablespace_size_name _null_ _null_ _null_ ));
+DATA(insert OID = 2323 ( pg_tablespace_size PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 20 "19" _null_ _null_ _null_ _null_ pg_tablespace_size_name _null_ _null_ _null_ ));
DESCR("total disk space usage for the specified tablespace");
-DATA(insert OID = 2324 ( pg_database_size PGNSP PGUID 12 1 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_database_size_oid _null_ _null_ _null_ ));
+DATA(insert OID = 2324 ( pg_database_size PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 20 "26" _null_ _null_ _null_ _null_ pg_database_size_oid _null_ _null_ _null_ ));
DESCR("total disk space usage for the specified database");
-DATA(insert OID = 2168 ( pg_database_size PGNSP PGUID 12 1 0 0 f f f t f v 1 0 20 "19" _null_ _null_ _null_ _null_ pg_database_size_name _null_ _null_ _null_ ));
+DATA(insert OID = 2168 ( pg_database_size PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 20 "19" _null_ _null_ _null_ _null_ pg_database_size_name _null_ _null_ _null_ ));
DESCR("total disk space usage for the specified database");
-DATA(insert OID = 2325 ( pg_relation_size PGNSP PGUID 14 1 0 0 f f f t f v 1 0 20 "2205" _null_ _null_ _null_ _null_ "select pg_catalog.pg_relation_size($1, ''main'')" _null_ _null_ _null_ ));
+DATA(insert OID = 2325 ( pg_relation_size PGNSP PGUID 14 1 0 0 0 f f f t f v 1 0 20 "2205" _null_ _null_ _null_ _null_ "select pg_catalog.pg_relation_size($1, ''main'')" _null_ _null_ _null_ ));
DESCR("disk space usage for the main fork of the specified table or index");
-DATA(insert OID = 2332 ( pg_relation_size PGNSP PGUID 12 1 0 0 f f f t f v 2 0 20 "2205 25" _null_ _null_ _null_ _null_ pg_relation_size _null_ _null_ _null_ ));
+DATA(insert OID = 2332 ( pg_relation_size PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 20 "2205 25" _null_ _null_ _null_ _null_ pg_relation_size _null_ _null_ _null_ ));
DESCR("disk space usage for the specified fork of a table or index");
-DATA(insert OID = 2286 ( pg_total_relation_size PGNSP PGUID 12 1 0 0 f f f t f v 1 0 20 "2205" _null_ _null_ _null_ _null_ pg_total_relation_size _null_ _null_ _null_ ));
+DATA(insert OID = 2286 ( pg_total_relation_size PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 20 "2205" _null_ _null_ _null_ _null_ pg_total_relation_size _null_ _null_ _null_ ));
DESCR("total disk space usage for the specified table and associated indexes");
-DATA(insert OID = 2288 ( pg_size_pretty PGNSP PGUID 12 1 0 0 f f f t f v 1 0 25 "20" _null_ _null_ _null_ _null_ pg_size_pretty _null_ _null_ _null_ ));
+DATA(insert OID = 2288 ( pg_size_pretty PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 25 "20" _null_ _null_ _null_ _null_ pg_size_pretty _null_ _null_ _null_ ));
DESCR("convert a long int to a human readable text using size units");
-DATA(insert OID = 2997 ( pg_table_size PGNSP PGUID 12 1 0 0 f f f t f v 1 0 20 "2205" _null_ _null_ _null_ _null_ pg_table_size _null_ _null_ _null_ ));
+DATA(insert OID = 2997 ( pg_table_size PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 20 "2205" _null_ _null_ _null_ _null_ pg_table_size _null_ _null_ _null_ ));
DESCR("disk space usage for the specified table, including TOAST, free space and visibility map");
-DATA(insert OID = 2998 ( pg_indexes_size PGNSP PGUID 12 1 0 0 f f f t f v 1 0 20 "2205" _null_ _null_ _null_ _null_ pg_indexes_size _null_ _null_ _null_ ));
+DATA(insert OID = 2998 ( pg_indexes_size PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 20 "2205" _null_ _null_ _null_ _null_ pg_indexes_size _null_ _null_ _null_ ));
DESCR("disk space usage for all indexes attached to the specified table");
-DATA(insert OID = 2999 ( pg_relation_filenode PGNSP PGUID 12 1 0 0 f f f t f s 1 0 26 "2205" _null_ _null_ _null_ _null_ pg_relation_filenode _null_ _null_ _null_ ));
+DATA(insert OID = 2999 ( pg_relation_filenode PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 26 "2205" _null_ _null_ _null_ _null_ pg_relation_filenode _null_ _null_ _null_ ));
DESCR("filenode identifier of relation");
-DATA(insert OID = 3034 ( pg_relation_filepath PGNSP PGUID 12 1 0 0 f f f t f s 1 0 25 "2205" _null_ _null_ _null_ _null_ pg_relation_filepath _null_ _null_ _null_ ));
+DATA(insert OID = 3034 ( pg_relation_filepath PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 25 "2205" _null_ _null_ _null_ _null_ pg_relation_filepath _null_ _null_ _null_ ));
DESCR("file path of relation");
-DATA(insert OID = 2316 ( postgresql_fdw_validator PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1009 26" _null_ _null_ _null_ _null_ postgresql_fdw_validator _null_ _null_ _null_));
+DATA(insert OID = 2316 ( postgresql_fdw_validator PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1009 26" _null_ _null_ _null_ _null_ postgresql_fdw_validator _null_ _null_ _null_));
DESCR("(internal)");
-DATA(insert OID = 2290 ( record_in PGNSP PGUID 12 1 0 0 f f f t f s 3 0 2249 "2275 26 23" _null_ _null_ _null_ _null_ record_in _null_ _null_ _null_ ));
+DATA(insert OID = 2290 ( record_in PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 2249 "2275 26 23" _null_ _null_ _null_ _null_ record_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2291 ( record_out PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "2249" _null_ _null_ _null_ _null_ record_out _null_ _null_ _null_ ));
+DATA(insert OID = 2291 ( record_out PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "2249" _null_ _null_ _null_ _null_ record_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2292 ( cstring_in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "2275" _null_ _null_ _null_ _null_ cstring_in _null_ _null_ _null_ ));
+DATA(insert OID = 2292 ( cstring_in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "2275" _null_ _null_ _null_ _null_ cstring_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2293 ( cstring_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "2275" _null_ _null_ _null_ _null_ cstring_out _null_ _null_ _null_ ));
+DATA(insert OID = 2293 ( cstring_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "2275" _null_ _null_ _null_ _null_ cstring_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2294 ( any_in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2276 "2275" _null_ _null_ _null_ _null_ any_in _null_ _null_ _null_ ));
+DATA(insert OID = 2294 ( any_in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2276 "2275" _null_ _null_ _null_ _null_ any_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2295 ( any_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "2276" _null_ _null_ _null_ _null_ any_out _null_ _null_ _null_ ));
+DATA(insert OID = 2295 ( any_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "2276" _null_ _null_ _null_ _null_ any_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2296 ( anyarray_in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2277 "2275" _null_ _null_ _null_ _null_ anyarray_in _null_ _null_ _null_ ));
+DATA(insert OID = 2296 ( anyarray_in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2277 "2275" _null_ _null_ _null_ _null_ anyarray_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2297 ( anyarray_out PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "2277" _null_ _null_ _null_ _null_ anyarray_out _null_ _null_ _null_ ));
+DATA(insert OID = 2297 ( anyarray_out PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "2277" _null_ _null_ _null_ _null_ anyarray_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2298 ( void_in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2278 "2275" _null_ _null_ _null_ _null_ void_in _null_ _null_ _null_ ));
+DATA(insert OID = 2298 ( void_in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2278 "2275" _null_ _null_ _null_ _null_ void_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2299 ( void_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "2278" _null_ _null_ _null_ _null_ void_out _null_ _null_ _null_ ));
+DATA(insert OID = 2299 ( void_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "2278" _null_ _null_ _null_ _null_ void_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2300 ( trigger_in PGNSP PGUID 12 1 0 0 f f f f f i 1 0 2279 "2275" _null_ _null_ _null_ _null_ trigger_in _null_ _null_ _null_ ));
+DATA(insert OID = 2300 ( trigger_in PGNSP PGUID 12 1 0 0 0 f f f f f i 1 0 2279 "2275" _null_ _null_ _null_ _null_ trigger_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2301 ( trigger_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "2279" _null_ _null_ _null_ _null_ trigger_out _null_ _null_ _null_ ));
+DATA(insert OID = 2301 ( trigger_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "2279" _null_ _null_ _null_ _null_ trigger_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2302 ( language_handler_in PGNSP PGUID 12 1 0 0 f f f f f i 1 0 2280 "2275" _null_ _null_ _null_ _null_ language_handler_in _null_ _null_ _null_ ));
+DATA(insert OID = 2302 ( language_handler_in PGNSP PGUID 12 1 0 0 0 f f f f f i 1 0 2280 "2275" _null_ _null_ _null_ _null_ language_handler_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2303 ( language_handler_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "2280" _null_ _null_ _null_ _null_ language_handler_out _null_ _null_ _null_ ));
+DATA(insert OID = 2303 ( language_handler_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "2280" _null_ _null_ _null_ _null_ language_handler_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2304 ( internal_in PGNSP PGUID 12 1 0 0 f f f f f i 1 0 2281 "2275" _null_ _null_ _null_ _null_ internal_in _null_ _null_ _null_ ));
+DATA(insert OID = 2304 ( internal_in PGNSP PGUID 12 1 0 0 0 f f f f f i 1 0 2281 "2275" _null_ _null_ _null_ _null_ internal_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2305 ( internal_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "2281" _null_ _null_ _null_ _null_ internal_out _null_ _null_ _null_ ));
+DATA(insert OID = 2305 ( internal_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "2281" _null_ _null_ _null_ _null_ internal_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2306 ( opaque_in PGNSP PGUID 12 1 0 0 f f f f f i 1 0 2282 "2275" _null_ _null_ _null_ _null_ opaque_in _null_ _null_ _null_ ));
+DATA(insert OID = 2306 ( opaque_in PGNSP PGUID 12 1 0 0 0 f f f f f i 1 0 2282 "2275" _null_ _null_ _null_ _null_ opaque_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2307 ( opaque_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "2282" _null_ _null_ _null_ _null_ opaque_out _null_ _null_ _null_ ));
+DATA(insert OID = 2307 ( opaque_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "2282" _null_ _null_ _null_ _null_ opaque_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2312 ( anyelement_in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2283 "2275" _null_ _null_ _null_ _null_ anyelement_in _null_ _null_ _null_ ));
+DATA(insert OID = 2312 ( anyelement_in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2283 "2275" _null_ _null_ _null_ _null_ anyelement_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2313 ( anyelement_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "2283" _null_ _null_ _null_ _null_ anyelement_out _null_ _null_ _null_ ));
+DATA(insert OID = 2313 ( anyelement_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "2283" _null_ _null_ _null_ _null_ anyelement_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2398 ( shell_in PGNSP PGUID 12 1 0 0 f f f f f i 1 0 2282 "2275" _null_ _null_ _null_ _null_ shell_in _null_ _null_ _null_ ));
+DATA(insert OID = 2398 ( shell_in PGNSP PGUID 12 1 0 0 0 f f f f f i 1 0 2282 "2275" _null_ _null_ _null_ _null_ shell_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2399 ( shell_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "2282" _null_ _null_ _null_ _null_ shell_out _null_ _null_ _null_ ));
+DATA(insert OID = 2399 ( shell_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "2282" _null_ _null_ _null_ _null_ shell_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2597 ( domain_in PGNSP PGUID 12 1 0 0 f f f f f s 3 0 2276 "2275 26 23" _null_ _null_ _null_ _null_ domain_in _null_ _null_ _null_ ));
+DATA(insert OID = 2597 ( domain_in PGNSP PGUID 12 1 0 0 0 f f f f f s 3 0 2276 "2275 26 23" _null_ _null_ _null_ _null_ domain_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2598 ( domain_recv PGNSP PGUID 12 1 0 0 f f f f f s 3 0 2276 "2281 26 23" _null_ _null_ _null_ _null_ domain_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2598 ( domain_recv PGNSP PGUID 12 1 0 0 0 f f f f f s 3 0 2276 "2281 26 23" _null_ _null_ _null_ _null_ domain_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2777 ( anynonarray_in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2776 "2275" _null_ _null_ _null_ _null_ anynonarray_in _null_ _null_ _null_ ));
+DATA(insert OID = 2777 ( anynonarray_in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2776 "2275" _null_ _null_ _null_ _null_ anynonarray_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2778 ( anynonarray_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "2776" _null_ _null_ _null_ _null_ anynonarray_out _null_ _null_ _null_ ));
+DATA(insert OID = 2778 ( anynonarray_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "2776" _null_ _null_ _null_ _null_ anynonarray_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3116 ( fdw_handler_in PGNSP PGUID 12 1 0 0 f f f f f i 1 0 3115 "2275" _null_ _null_ _null_ _null_ fdw_handler_in _null_ _null_ _null_ ));
+DATA(insert OID = 3116 ( fdw_handler_in PGNSP PGUID 12 1 0 0 0 f f f f f i 1 0 3115 "2275" _null_ _null_ _null_ _null_ fdw_handler_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3117 ( fdw_handler_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "3115" _null_ _null_ _null_ _null_ fdw_handler_out _null_ _null_ _null_ ));
+DATA(insert OID = 3117 ( fdw_handler_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "3115" _null_ _null_ _null_ _null_ fdw_handler_out _null_ _null_ _null_ ));
DESCR("I/O");
/* cryptographic */
-DATA(insert OID = 2311 ( md5 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ md5_text _null_ _null_ _null_ ));
+DATA(insert OID = 2311 ( md5 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "25" _null_ _null_ _null_ _null_ md5_text _null_ _null_ _null_ ));
DESCR("MD5 hash");
-DATA(insert OID = 2321 ( md5 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "17" _null_ _null_ _null_ _null_ md5_bytea _null_ _null_ _null_ ));
+DATA(insert OID = 2321 ( md5 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "17" _null_ _null_ _null_ _null_ md5_bytea _null_ _null_ _null_ ));
DESCR("MD5 hash");
/* crosstype operations for date vs. timestamp and timestamptz */
-DATA(insert OID = 2338 ( date_lt_timestamp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ date_lt_timestamp _null_ _null_ _null_ ));
-DATA(insert OID = 2339 ( date_le_timestamp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ date_le_timestamp _null_ _null_ _null_ ));
-DATA(insert OID = 2340 ( date_eq_timestamp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ date_eq_timestamp _null_ _null_ _null_ ));
-DATA(insert OID = 2341 ( date_gt_timestamp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ date_gt_timestamp _null_ _null_ _null_ ));
-DATA(insert OID = 2342 ( date_ge_timestamp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ date_ge_timestamp _null_ _null_ _null_ ));
-DATA(insert OID = 2343 ( date_ne_timestamp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ date_ne_timestamp _null_ _null_ _null_ ));
-DATA(insert OID = 2344 ( date_cmp_timestamp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "1082 1114" _null_ _null_ _null_ _null_ date_cmp_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 2338 ( date_lt_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ date_lt_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 2339 ( date_le_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ date_le_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 2340 ( date_eq_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ date_eq_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 2341 ( date_gt_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ date_gt_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 2342 ( date_ge_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ date_ge_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 2343 ( date_ne_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ date_ne_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 2344 ( date_cmp_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "1082 1114" _null_ _null_ _null_ _null_ date_cmp_timestamp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 2351 ( date_lt_timestamptz PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ date_lt_timestamptz _null_ _null_ _null_ ));
-DATA(insert OID = 2352 ( date_le_timestamptz PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ date_le_timestamptz _null_ _null_ _null_ ));
-DATA(insert OID = 2353 ( date_eq_timestamptz PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ date_eq_timestamptz _null_ _null_ _null_ ));
-DATA(insert OID = 2354 ( date_gt_timestamptz PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ date_gt_timestamptz _null_ _null_ _null_ ));
-DATA(insert OID = 2355 ( date_ge_timestamptz PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ date_ge_timestamptz _null_ _null_ _null_ ));
-DATA(insert OID = 2356 ( date_ne_timestamptz PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ date_ne_timestamptz _null_ _null_ _null_ ));
-DATA(insert OID = 2357 ( date_cmp_timestamptz PGNSP PGUID 12 1 0 0 f f f t f s 2 0 23 "1082 1184" _null_ _null_ _null_ _null_ date_cmp_timestamptz _null_ _null_ _null_ ));
+DATA(insert OID = 2351 ( date_lt_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ date_lt_timestamptz _null_ _null_ _null_ ));
+DATA(insert OID = 2352 ( date_le_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ date_le_timestamptz _null_ _null_ _null_ ));
+DATA(insert OID = 2353 ( date_eq_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ date_eq_timestamptz _null_ _null_ _null_ ));
+DATA(insert OID = 2354 ( date_gt_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ date_gt_timestamptz _null_ _null_ _null_ ));
+DATA(insert OID = 2355 ( date_ge_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ date_ge_timestamptz _null_ _null_ _null_ ));
+DATA(insert OID = 2356 ( date_ne_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ date_ne_timestamptz _null_ _null_ _null_ ));
+DATA(insert OID = 2357 ( date_cmp_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 23 "1082 1184" _null_ _null_ _null_ _null_ date_cmp_timestamptz _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 2364 ( timestamp_lt_date PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ timestamp_lt_date _null_ _null_ _null_ ));
-DATA(insert OID = 2365 ( timestamp_le_date PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ timestamp_le_date _null_ _null_ _null_ ));
-DATA(insert OID = 2366 ( timestamp_eq_date PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ timestamp_eq_date _null_ _null_ _null_ ));
-DATA(insert OID = 2367 ( timestamp_gt_date PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ timestamp_gt_date _null_ _null_ _null_ ));
-DATA(insert OID = 2368 ( timestamp_ge_date PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ timestamp_ge_date _null_ _null_ _null_ ));
-DATA(insert OID = 2369 ( timestamp_ne_date PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ timestamp_ne_date _null_ _null_ _null_ ));
-DATA(insert OID = 2370 ( timestamp_cmp_date PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "1114 1082" _null_ _null_ _null_ _null_ timestamp_cmp_date _null_ _null_ _null_ ));
+DATA(insert OID = 2364 ( timestamp_lt_date PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ timestamp_lt_date _null_ _null_ _null_ ));
+DATA(insert OID = 2365 ( timestamp_le_date PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ timestamp_le_date _null_ _null_ _null_ ));
+DATA(insert OID = 2366 ( timestamp_eq_date PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ timestamp_eq_date _null_ _null_ _null_ ));
+DATA(insert OID = 2367 ( timestamp_gt_date PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ timestamp_gt_date _null_ _null_ _null_ ));
+DATA(insert OID = 2368 ( timestamp_ge_date PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ timestamp_ge_date _null_ _null_ _null_ ));
+DATA(insert OID = 2369 ( timestamp_ne_date PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ timestamp_ne_date _null_ _null_ _null_ ));
+DATA(insert OID = 2370 ( timestamp_cmp_date PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "1114 1082" _null_ _null_ _null_ _null_ timestamp_cmp_date _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 2377 ( timestamptz_lt_date PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ timestamptz_lt_date _null_ _null_ _null_ ));
-DATA(insert OID = 2378 ( timestamptz_le_date PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ timestamptz_le_date _null_ _null_ _null_ ));
-DATA(insert OID = 2379 ( timestamptz_eq_date PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ timestamptz_eq_date _null_ _null_ _null_ ));
-DATA(insert OID = 2380 ( timestamptz_gt_date PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ timestamptz_gt_date _null_ _null_ _null_ ));
-DATA(insert OID = 2381 ( timestamptz_ge_date PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ timestamptz_ge_date _null_ _null_ _null_ ));
-DATA(insert OID = 2382 ( timestamptz_ne_date PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ timestamptz_ne_date _null_ _null_ _null_ ));
-DATA(insert OID = 2383 ( timestamptz_cmp_date PGNSP PGUID 12 1 0 0 f f f t f s 2 0 23 "1184 1082" _null_ _null_ _null_ _null_ timestamptz_cmp_date _null_ _null_ _null_ ));
+DATA(insert OID = 2377 ( timestamptz_lt_date PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ timestamptz_lt_date _null_ _null_ _null_ ));
+DATA(insert OID = 2378 ( timestamptz_le_date PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ timestamptz_le_date _null_ _null_ _null_ ));
+DATA(insert OID = 2379 ( timestamptz_eq_date PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ timestamptz_eq_date _null_ _null_ _null_ ));
+DATA(insert OID = 2380 ( timestamptz_gt_date PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ timestamptz_gt_date _null_ _null_ _null_ ));
+DATA(insert OID = 2381 ( timestamptz_ge_date PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ timestamptz_ge_date _null_ _null_ _null_ ));
+DATA(insert OID = 2382 ( timestamptz_ne_date PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ timestamptz_ne_date _null_ _null_ _null_ ));
+DATA(insert OID = 2383 ( timestamptz_cmp_date PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 23 "1184 1082" _null_ _null_ _null_ _null_ timestamptz_cmp_date _null_ _null_ _null_ ));
DESCR("less-equal-greater");
/* crosstype operations for timestamp vs. timestamptz */
-DATA(insert OID = 2520 ( timestamp_lt_timestamptz PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ timestamp_lt_timestamptz _null_ _null_ _null_ ));
-DATA(insert OID = 2521 ( timestamp_le_timestamptz PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ timestamp_le_timestamptz _null_ _null_ _null_ ));
-DATA(insert OID = 2522 ( timestamp_eq_timestamptz PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ timestamp_eq_timestamptz _null_ _null_ _null_ ));
-DATA(insert OID = 2523 ( timestamp_gt_timestamptz PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ timestamp_gt_timestamptz _null_ _null_ _null_ ));
-DATA(insert OID = 2524 ( timestamp_ge_timestamptz PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ timestamp_ge_timestamptz _null_ _null_ _null_ ));
-DATA(insert OID = 2525 ( timestamp_ne_timestamptz PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ timestamp_ne_timestamptz _null_ _null_ _null_ ));
-DATA(insert OID = 2526 ( timestamp_cmp_timestamptz PGNSP PGUID 12 1 0 0 f f f t f s 2 0 23 "1114 1184" _null_ _null_ _null_ _null_ timestamp_cmp_timestamptz _null_ _null_ _null_ ));
+DATA(insert OID = 2520 ( timestamp_lt_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ timestamp_lt_timestamptz _null_ _null_ _null_ ));
+DATA(insert OID = 2521 ( timestamp_le_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ timestamp_le_timestamptz _null_ _null_ _null_ ));
+DATA(insert OID = 2522 ( timestamp_eq_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ timestamp_eq_timestamptz _null_ _null_ _null_ ));
+DATA(insert OID = 2523 ( timestamp_gt_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ timestamp_gt_timestamptz _null_ _null_ _null_ ));
+DATA(insert OID = 2524 ( timestamp_ge_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ timestamp_ge_timestamptz _null_ _null_ _null_ ));
+DATA(insert OID = 2525 ( timestamp_ne_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ timestamp_ne_timestamptz _null_ _null_ _null_ ));
+DATA(insert OID = 2526 ( timestamp_cmp_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 23 "1114 1184" _null_ _null_ _null_ _null_ timestamp_cmp_timestamptz _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 2527 ( timestamptz_lt_timestamp PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ timestamptz_lt_timestamp _null_ _null_ _null_ ));
-DATA(insert OID = 2528 ( timestamptz_le_timestamp PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ timestamptz_le_timestamp _null_ _null_ _null_ ));
-DATA(insert OID = 2529 ( timestamptz_eq_timestamp PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ timestamptz_eq_timestamp _null_ _null_ _null_ ));
-DATA(insert OID = 2530 ( timestamptz_gt_timestamp PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ timestamptz_gt_timestamp _null_ _null_ _null_ ));
-DATA(insert OID = 2531 ( timestamptz_ge_timestamp PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ timestamptz_ge_timestamp _null_ _null_ _null_ ));
-DATA(insert OID = 2532 ( timestamptz_ne_timestamp PGNSP PGUID 12 1 0 0 f f f t f s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ timestamptz_ne_timestamp _null_ _null_ _null_ ));
-DATA(insert OID = 2533 ( timestamptz_cmp_timestamp PGNSP PGUID 12 1 0 0 f f f t f s 2 0 23 "1184 1114" _null_ _null_ _null_ _null_ timestamptz_cmp_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 2527 ( timestamptz_lt_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ timestamptz_lt_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 2528 ( timestamptz_le_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ timestamptz_le_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 2529 ( timestamptz_eq_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ timestamptz_eq_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 2530 ( timestamptz_gt_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ timestamptz_gt_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 2531 ( timestamptz_ge_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ timestamptz_ge_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 2532 ( timestamptz_ne_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ timestamptz_ne_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 2533 ( timestamptz_cmp_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 23 "1184 1114" _null_ _null_ _null_ _null_ timestamptz_cmp_timestamp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
/* send/receive functions */
-DATA(insert OID = 2400 ( array_recv PGNSP PGUID 12 1 0 0 f f f t f s 3 0 2277 "2281 26 23" _null_ _null_ _null_ _null_ array_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2400 ( array_recv PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 2277 "2281 26 23" _null_ _null_ _null_ _null_ array_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2401 ( array_send PGNSP PGUID 12 1 0 0 f f f t f s 1 0 17 "2277" _null_ _null_ _null_ _null_ array_send _null_ _null_ _null_ ));
+DATA(insert OID = 2401 ( array_send PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 17 "2277" _null_ _null_ _null_ _null_ array_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2402 ( record_recv PGNSP PGUID 12 1 0 0 f f f t f s 3 0 2249 "2281 26 23" _null_ _null_ _null_ _null_ record_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2402 ( record_recv PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 2249 "2281 26 23" _null_ _null_ _null_ _null_ record_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2403 ( record_send PGNSP PGUID 12 1 0 0 f f f t f s 1 0 17 "2249" _null_ _null_ _null_ _null_ record_send _null_ _null_ _null_ ));
+DATA(insert OID = 2403 ( record_send PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 17 "2249" _null_ _null_ _null_ _null_ record_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2404 ( int2recv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 21 "2281" _null_ _null_ _null_ _null_ int2recv _null_ _null_ _null_ ));
+DATA(insert OID = 2404 ( int2recv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 21 "2281" _null_ _null_ _null_ _null_ int2recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2405 ( int2send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "21" _null_ _null_ _null_ _null_ int2send _null_ _null_ _null_ ));
+DATA(insert OID = 2405 ( int2send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "21" _null_ _null_ _null_ _null_ int2send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2406 ( int4recv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "2281" _null_ _null_ _null_ _null_ int4recv _null_ _null_ _null_ ));
+DATA(insert OID = 2406 ( int4recv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "2281" _null_ _null_ _null_ _null_ int4recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2407 ( int4send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "23" _null_ _null_ _null_ _null_ int4send _null_ _null_ _null_ ));
+DATA(insert OID = 2407 ( int4send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "23" _null_ _null_ _null_ _null_ int4send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2408 ( int8recv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 20 "2281" _null_ _null_ _null_ _null_ int8recv _null_ _null_ _null_ ));
+DATA(insert OID = 2408 ( int8recv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 20 "2281" _null_ _null_ _null_ _null_ int8recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2409 ( int8send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "20" _null_ _null_ _null_ _null_ int8send _null_ _null_ _null_ ));
+DATA(insert OID = 2409 ( int8send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "20" _null_ _null_ _null_ _null_ int8send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2410 ( int2vectorrecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 22 "2281" _null_ _null_ _null_ _null_ int2vectorrecv _null_ _null_ _null_ ));
+DATA(insert OID = 2410 ( int2vectorrecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 22 "2281" _null_ _null_ _null_ _null_ int2vectorrecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2411 ( int2vectorsend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "22" _null_ _null_ _null_ _null_ int2vectorsend _null_ _null_ _null_ ));
+DATA(insert OID = 2411 ( int2vectorsend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "22" _null_ _null_ _null_ _null_ int2vectorsend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2412 ( bytearecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "2281" _null_ _null_ _null_ _null_ bytearecv _null_ _null_ _null_ ));
+DATA(insert OID = 2412 ( bytearecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "2281" _null_ _null_ _null_ _null_ bytearecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2413 ( byteasend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "17" _null_ _null_ _null_ _null_ byteasend _null_ _null_ _null_ ));
+DATA(insert OID = 2413 ( byteasend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "17" _null_ _null_ _null_ _null_ byteasend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2414 ( textrecv PGNSP PGUID 12 1 0 0 f f f t f s 1 0 25 "2281" _null_ _null_ _null_ _null_ textrecv _null_ _null_ _null_ ));
+DATA(insert OID = 2414 ( textrecv PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 25 "2281" _null_ _null_ _null_ _null_ textrecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2415 ( textsend PGNSP PGUID 12 1 0 0 f f f t f s 1 0 17 "25" _null_ _null_ _null_ _null_ textsend _null_ _null_ _null_ ));
+DATA(insert OID = 2415 ( textsend PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 17 "25" _null_ _null_ _null_ _null_ textsend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2416 ( unknownrecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 705 "2281" _null_ _null_ _null_ _null_ unknownrecv _null_ _null_ _null_ ));
+DATA(insert OID = 2416 ( unknownrecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 705 "2281" _null_ _null_ _null_ _null_ unknownrecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2417 ( unknownsend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "705" _null_ _null_ _null_ _null_ unknownsend _null_ _null_ _null_ ));
+DATA(insert OID = 2417 ( unknownsend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "705" _null_ _null_ _null_ _null_ unknownsend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2418 ( oidrecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 26 "2281" _null_ _null_ _null_ _null_ oidrecv _null_ _null_ _null_ ));
+DATA(insert OID = 2418 ( oidrecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 26 "2281" _null_ _null_ _null_ _null_ oidrecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2419 ( oidsend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "26" _null_ _null_ _null_ _null_ oidsend _null_ _null_ _null_ ));
+DATA(insert OID = 2419 ( oidsend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "26" _null_ _null_ _null_ _null_ oidsend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2420 ( oidvectorrecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 30 "2281" _null_ _null_ _null_ _null_ oidvectorrecv _null_ _null_ _null_ ));
+DATA(insert OID = 2420 ( oidvectorrecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 30 "2281" _null_ _null_ _null_ _null_ oidvectorrecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2421 ( oidvectorsend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "30" _null_ _null_ _null_ _null_ oidvectorsend _null_ _null_ _null_ ));
+DATA(insert OID = 2421 ( oidvectorsend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "30" _null_ _null_ _null_ _null_ oidvectorsend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2422 ( namerecv PGNSP PGUID 12 1 0 0 f f f t f s 1 0 19 "2281" _null_ _null_ _null_ _null_ namerecv _null_ _null_ _null_ ));
+DATA(insert OID = 2422 ( namerecv PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 19 "2281" _null_ _null_ _null_ _null_ namerecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2423 ( namesend PGNSP PGUID 12 1 0 0 f f f t f s 1 0 17 "19" _null_ _null_ _null_ _null_ namesend _null_ _null_ _null_ ));
+DATA(insert OID = 2423 ( namesend PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 17 "19" _null_ _null_ _null_ _null_ namesend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2424 ( float4recv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 700 "2281" _null_ _null_ _null_ _null_ float4recv _null_ _null_ _null_ ));
+DATA(insert OID = 2424 ( float4recv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 700 "2281" _null_ _null_ _null_ _null_ float4recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2425 ( float4send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "700" _null_ _null_ _null_ _null_ float4send _null_ _null_ _null_ ));
+DATA(insert OID = 2425 ( float4send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "700" _null_ _null_ _null_ _null_ float4send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2426 ( float8recv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 701 "2281" _null_ _null_ _null_ _null_ float8recv _null_ _null_ _null_ ));
+DATA(insert OID = 2426 ( float8recv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 701 "2281" _null_ _null_ _null_ _null_ float8recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2427 ( float8send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "701" _null_ _null_ _null_ _null_ float8send _null_ _null_ _null_ ));
+DATA(insert OID = 2427 ( float8send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "701" _null_ _null_ _null_ _null_ float8send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2428 ( point_recv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 600 "2281" _null_ _null_ _null_ _null_ point_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2428 ( point_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 600 "2281" _null_ _null_ _null_ _null_ point_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2429 ( point_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "600" _null_ _null_ _null_ _null_ point_send _null_ _null_ _null_ ));
+DATA(insert OID = 2429 ( point_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "600" _null_ _null_ _null_ _null_ point_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2430 ( bpcharrecv PGNSP PGUID 12 1 0 0 f f f t f s 3 0 1042 "2281 26 23" _null_ _null_ _null_ _null_ bpcharrecv _null_ _null_ _null_ ));
+DATA(insert OID = 2430 ( bpcharrecv PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 1042 "2281 26 23" _null_ _null_ _null_ _null_ bpcharrecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2431 ( bpcharsend PGNSP PGUID 12 1 0 0 f f f t f s 1 0 17 "1042" _null_ _null_ _null_ _null_ bpcharsend _null_ _null_ _null_ ));
+DATA(insert OID = 2431 ( bpcharsend PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 17 "1042" _null_ _null_ _null_ _null_ bpcharsend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2432 ( varcharrecv PGNSP PGUID 12 1 0 0 f f f t f s 3 0 1043 "2281 26 23" _null_ _null_ _null_ _null_ varcharrecv _null_ _null_ _null_ ));
+DATA(insert OID = 2432 ( varcharrecv PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 1043 "2281 26 23" _null_ _null_ _null_ _null_ varcharrecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2433 ( varcharsend PGNSP PGUID 12 1 0 0 f f f t f s 1 0 17 "1043" _null_ _null_ _null_ _null_ varcharsend _null_ _null_ _null_ ));
+DATA(insert OID = 2433 ( varcharsend PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 17 "1043" _null_ _null_ _null_ _null_ varcharsend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2434 ( charrecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 18 "2281" _null_ _null_ _null_ _null_ charrecv _null_ _null_ _null_ ));
+DATA(insert OID = 2434 ( charrecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 18 "2281" _null_ _null_ _null_ _null_ charrecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2435 ( charsend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "18" _null_ _null_ _null_ _null_ charsend _null_ _null_ _null_ ));
+DATA(insert OID = 2435 ( charsend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "18" _null_ _null_ _null_ _null_ charsend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2436 ( boolrecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 16 "2281" _null_ _null_ _null_ _null_ boolrecv _null_ _null_ _null_ ));
+DATA(insert OID = 2436 ( boolrecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 16 "2281" _null_ _null_ _null_ _null_ boolrecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2437 ( boolsend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "16" _null_ _null_ _null_ _null_ boolsend _null_ _null_ _null_ ));
+DATA(insert OID = 2437 ( boolsend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "16" _null_ _null_ _null_ _null_ boolsend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2438 ( tidrecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 27 "2281" _null_ _null_ _null_ _null_ tidrecv _null_ _null_ _null_ ));
+DATA(insert OID = 2438 ( tidrecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 27 "2281" _null_ _null_ _null_ _null_ tidrecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2439 ( tidsend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "27" _null_ _null_ _null_ _null_ tidsend _null_ _null_ _null_ ));
+DATA(insert OID = 2439 ( tidsend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "27" _null_ _null_ _null_ _null_ tidsend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2440 ( xidrecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 28 "2281" _null_ _null_ _null_ _null_ xidrecv _null_ _null_ _null_ ));
+DATA(insert OID = 2440 ( xidrecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 28 "2281" _null_ _null_ _null_ _null_ xidrecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2441 ( xidsend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "28" _null_ _null_ _null_ _null_ xidsend _null_ _null_ _null_ ));
+DATA(insert OID = 2441 ( xidsend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "28" _null_ _null_ _null_ _null_ xidsend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2442 ( cidrecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 29 "2281" _null_ _null_ _null_ _null_ cidrecv _null_ _null_ _null_ ));
+DATA(insert OID = 2442 ( cidrecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 29 "2281" _null_ _null_ _null_ _null_ cidrecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2443 ( cidsend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "29" _null_ _null_ _null_ _null_ cidsend _null_ _null_ _null_ ));
+DATA(insert OID = 2443 ( cidsend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "29" _null_ _null_ _null_ _null_ cidsend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2444 ( regprocrecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 24 "2281" _null_ _null_ _null_ _null_ regprocrecv _null_ _null_ _null_ ));
+DATA(insert OID = 2444 ( regprocrecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 24 "2281" _null_ _null_ _null_ _null_ regprocrecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2445 ( regprocsend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "24" _null_ _null_ _null_ _null_ regprocsend _null_ _null_ _null_ ));
+DATA(insert OID = 2445 ( regprocsend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "24" _null_ _null_ _null_ _null_ regprocsend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2446 ( regprocedurerecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2202 "2281" _null_ _null_ _null_ _null_ regprocedurerecv _null_ _null_ _null_ ));
+DATA(insert OID = 2446 ( regprocedurerecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2202 "2281" _null_ _null_ _null_ _null_ regprocedurerecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2447 ( regproceduresend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "2202" _null_ _null_ _null_ _null_ regproceduresend _null_ _null_ _null_ ));
+DATA(insert OID = 2447 ( regproceduresend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "2202" _null_ _null_ _null_ _null_ regproceduresend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2448 ( regoperrecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2203 "2281" _null_ _null_ _null_ _null_ regoperrecv _null_ _null_ _null_ ));
+DATA(insert OID = 2448 ( regoperrecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2203 "2281" _null_ _null_ _null_ _null_ regoperrecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2449 ( regopersend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "2203" _null_ _null_ _null_ _null_ regopersend _null_ _null_ _null_ ));
+DATA(insert OID = 2449 ( regopersend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "2203" _null_ _null_ _null_ _null_ regopersend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2450 ( regoperatorrecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2204 "2281" _null_ _null_ _null_ _null_ regoperatorrecv _null_ _null_ _null_ ));
+DATA(insert OID = 2450 ( regoperatorrecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2204 "2281" _null_ _null_ _null_ _null_ regoperatorrecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2451 ( regoperatorsend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "2204" _null_ _null_ _null_ _null_ regoperatorsend _null_ _null_ _null_ ));
+DATA(insert OID = 2451 ( regoperatorsend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "2204" _null_ _null_ _null_ _null_ regoperatorsend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2452 ( regclassrecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2205 "2281" _null_ _null_ _null_ _null_ regclassrecv _null_ _null_ _null_ ));
+DATA(insert OID = 2452 ( regclassrecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2205 "2281" _null_ _null_ _null_ _null_ regclassrecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2453 ( regclasssend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "2205" _null_ _null_ _null_ _null_ regclasssend _null_ _null_ _null_ ));
+DATA(insert OID = 2453 ( regclasssend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "2205" _null_ _null_ _null_ _null_ regclasssend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2454 ( regtyperecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2206 "2281" _null_ _null_ _null_ _null_ regtyperecv _null_ _null_ _null_ ));
+DATA(insert OID = 2454 ( regtyperecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2206 "2281" _null_ _null_ _null_ _null_ regtyperecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2455 ( regtypesend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "2206" _null_ _null_ _null_ _null_ regtypesend _null_ _null_ _null_ ));
+DATA(insert OID = 2455 ( regtypesend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "2206" _null_ _null_ _null_ _null_ regtypesend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2456 ( bit_recv PGNSP PGUID 12 1 0 0 f f f t f i 3 0 1560 "2281 26 23" _null_ _null_ _null_ _null_ bit_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2456 ( bit_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 1560 "2281 26 23" _null_ _null_ _null_ _null_ bit_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2457 ( bit_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "1560" _null_ _null_ _null_ _null_ bit_send _null_ _null_ _null_ ));
+DATA(insert OID = 2457 ( bit_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "1560" _null_ _null_ _null_ _null_ bit_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2458 ( varbit_recv PGNSP PGUID 12 1 0 0 f f f t f i 3 0 1562 "2281 26 23" _null_ _null_ _null_ _null_ varbit_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2458 ( varbit_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 1562 "2281 26 23" _null_ _null_ _null_ _null_ varbit_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2459 ( varbit_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "1562" _null_ _null_ _null_ _null_ varbit_send _null_ _null_ _null_ ));
+DATA(insert OID = 2459 ( varbit_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "1562" _null_ _null_ _null_ _null_ varbit_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2460 ( numeric_recv PGNSP PGUID 12 1 0 0 f f f t f i 3 0 1700 "2281 26 23" _null_ _null_ _null_ _null_ numeric_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2460 ( numeric_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 1700 "2281 26 23" _null_ _null_ _null_ _null_ numeric_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2461 ( numeric_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "1700" _null_ _null_ _null_ _null_ numeric_send _null_ _null_ _null_ ));
+DATA(insert OID = 2461 ( numeric_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "1700" _null_ _null_ _null_ _null_ numeric_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2462 ( abstimerecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 702 "2281" _null_ _null_ _null_ _null_ abstimerecv _null_ _null_ _null_ ));
+DATA(insert OID = 2462 ( abstimerecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 702 "2281" _null_ _null_ _null_ _null_ abstimerecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2463 ( abstimesend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "702" _null_ _null_ _null_ _null_ abstimesend _null_ _null_ _null_ ));
+DATA(insert OID = 2463 ( abstimesend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "702" _null_ _null_ _null_ _null_ abstimesend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2464 ( reltimerecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 703 "2281" _null_ _null_ _null_ _null_ reltimerecv _null_ _null_ _null_ ));
+DATA(insert OID = 2464 ( reltimerecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 703 "2281" _null_ _null_ _null_ _null_ reltimerecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2465 ( reltimesend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "703" _null_ _null_ _null_ _null_ reltimesend _null_ _null_ _null_ ));
+DATA(insert OID = 2465 ( reltimesend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "703" _null_ _null_ _null_ _null_ reltimesend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2466 ( tintervalrecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 704 "2281" _null_ _null_ _null_ _null_ tintervalrecv _null_ _null_ _null_ ));
+DATA(insert OID = 2466 ( tintervalrecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 704 "2281" _null_ _null_ _null_ _null_ tintervalrecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2467 ( tintervalsend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "704" _null_ _null_ _null_ _null_ tintervalsend _null_ _null_ _null_ ));
+DATA(insert OID = 2467 ( tintervalsend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "704" _null_ _null_ _null_ _null_ tintervalsend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2468 ( date_recv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 1082 "2281" _null_ _null_ _null_ _null_ date_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2468 ( date_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 1082 "2281" _null_ _null_ _null_ _null_ date_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2469 ( date_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "1082" _null_ _null_ _null_ _null_ date_send _null_ _null_ _null_ ));
+DATA(insert OID = 2469 ( date_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "1082" _null_ _null_ _null_ _null_ date_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2470 ( time_recv PGNSP PGUID 12 1 0 0 f f f t f i 3 0 1083 "2281 26 23" _null_ _null_ _null_ _null_ time_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2470 ( time_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 1083 "2281 26 23" _null_ _null_ _null_ _null_ time_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2471 ( time_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "1083" _null_ _null_ _null_ _null_ time_send _null_ _null_ _null_ ));
+DATA(insert OID = 2471 ( time_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "1083" _null_ _null_ _null_ _null_ time_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2472 ( timetz_recv PGNSP PGUID 12 1 0 0 f f f t f i 3 0 1266 "2281 26 23" _null_ _null_ _null_ _null_ timetz_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2472 ( timetz_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 1266 "2281 26 23" _null_ _null_ _null_ _null_ timetz_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2473 ( timetz_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "1266" _null_ _null_ _null_ _null_ timetz_send _null_ _null_ _null_ ));
+DATA(insert OID = 2473 ( timetz_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "1266" _null_ _null_ _null_ _null_ timetz_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2474 ( timestamp_recv PGNSP PGUID 12 1 0 0 f f f t f i 3 0 1114 "2281 26 23" _null_ _null_ _null_ _null_ timestamp_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2474 ( timestamp_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 1114 "2281 26 23" _null_ _null_ _null_ _null_ timestamp_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2475 ( timestamp_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "1114" _null_ _null_ _null_ _null_ timestamp_send _null_ _null_ _null_ ));
+DATA(insert OID = 2475 ( timestamp_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "1114" _null_ _null_ _null_ _null_ timestamp_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2476 ( timestamptz_recv PGNSP PGUID 12 1 0 0 f f f t f i 3 0 1184 "2281 26 23" _null_ _null_ _null_ _null_ timestamptz_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2476 ( timestamptz_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 1184 "2281 26 23" _null_ _null_ _null_ _null_ timestamptz_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2477 ( timestamptz_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "1184" _null_ _null_ _null_ _null_ timestamptz_send _null_ _null_ _null_ ));
+DATA(insert OID = 2477 ( timestamptz_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "1184" _null_ _null_ _null_ _null_ timestamptz_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2478 ( interval_recv PGNSP PGUID 12 1 0 0 f f f t f i 3 0 1186 "2281 26 23" _null_ _null_ _null_ _null_ interval_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2478 ( interval_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 1186 "2281 26 23" _null_ _null_ _null_ _null_ interval_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2479 ( interval_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "1186" _null_ _null_ _null_ _null_ interval_send _null_ _null_ _null_ ));
+DATA(insert OID = 2479 ( interval_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "1186" _null_ _null_ _null_ _null_ interval_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2480 ( lseg_recv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 601 "2281" _null_ _null_ _null_ _null_ lseg_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2480 ( lseg_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 601 "2281" _null_ _null_ _null_ _null_ lseg_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2481 ( lseg_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "601" _null_ _null_ _null_ _null_ lseg_send _null_ _null_ _null_ ));
+DATA(insert OID = 2481 ( lseg_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "601" _null_ _null_ _null_ _null_ lseg_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2482 ( path_recv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 602 "2281" _null_ _null_ _null_ _null_ path_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2482 ( path_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 602 "2281" _null_ _null_ _null_ _null_ path_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2483 ( path_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "602" _null_ _null_ _null_ _null_ path_send _null_ _null_ _null_ ));
+DATA(insert OID = 2483 ( path_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "602" _null_ _null_ _null_ _null_ path_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2484 ( box_recv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 603 "2281" _null_ _null_ _null_ _null_ box_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2484 ( box_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 603 "2281" _null_ _null_ _null_ _null_ box_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2485 ( box_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "603" _null_ _null_ _null_ _null_ box_send _null_ _null_ _null_ ));
+DATA(insert OID = 2485 ( box_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "603" _null_ _null_ _null_ _null_ box_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2486 ( poly_recv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 604 "2281" _null_ _null_ _null_ _null_ poly_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2486 ( poly_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 604 "2281" _null_ _null_ _null_ _null_ poly_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2487 ( poly_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "604" _null_ _null_ _null_ _null_ poly_send _null_ _null_ _null_ ));
+DATA(insert OID = 2487 ( poly_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "604" _null_ _null_ _null_ _null_ poly_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2488 ( line_recv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 628 "2281" _null_ _null_ _null_ _null_ line_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2488 ( line_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 628 "2281" _null_ _null_ _null_ _null_ line_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2489 ( line_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "628" _null_ _null_ _null_ _null_ line_send _null_ _null_ _null_ ));
+DATA(insert OID = 2489 ( line_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "628" _null_ _null_ _null_ _null_ line_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2490 ( circle_recv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 718 "2281" _null_ _null_ _null_ _null_ circle_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2490 ( circle_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 718 "2281" _null_ _null_ _null_ _null_ circle_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2491 ( circle_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "718" _null_ _null_ _null_ _null_ circle_send _null_ _null_ _null_ ));
+DATA(insert OID = 2491 ( circle_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "718" _null_ _null_ _null_ _null_ circle_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2492 ( cash_recv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 790 "2281" _null_ _null_ _null_ _null_ cash_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2492 ( cash_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 790 "2281" _null_ _null_ _null_ _null_ cash_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2493 ( cash_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "790" _null_ _null_ _null_ _null_ cash_send _null_ _null_ _null_ ));
+DATA(insert OID = 2493 ( cash_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "790" _null_ _null_ _null_ _null_ cash_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2494 ( macaddr_recv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 829 "2281" _null_ _null_ _null_ _null_ macaddr_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2494 ( macaddr_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 829 "2281" _null_ _null_ _null_ _null_ macaddr_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2495 ( macaddr_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "829" _null_ _null_ _null_ _null_ macaddr_send _null_ _null_ _null_ ));
+DATA(insert OID = 2495 ( macaddr_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "829" _null_ _null_ _null_ _null_ macaddr_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2496 ( inet_recv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 869 "2281" _null_ _null_ _null_ _null_ inet_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2496 ( inet_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 869 "2281" _null_ _null_ _null_ _null_ inet_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2497 ( inet_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "869" _null_ _null_ _null_ _null_ inet_send _null_ _null_ _null_ ));
+DATA(insert OID = 2497 ( inet_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "869" _null_ _null_ _null_ _null_ inet_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2498 ( cidr_recv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 650 "2281" _null_ _null_ _null_ _null_ cidr_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2498 ( cidr_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 650 "2281" _null_ _null_ _null_ _null_ cidr_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2499 ( cidr_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "650" _null_ _null_ _null_ _null_ cidr_send _null_ _null_ _null_ ));
+DATA(insert OID = 2499 ( cidr_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "650" _null_ _null_ _null_ _null_ cidr_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2500 ( cstring_recv PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "2281" _null_ _null_ _null_ _null_ cstring_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2500 ( cstring_recv PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "2281" _null_ _null_ _null_ _null_ cstring_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2501 ( cstring_send PGNSP PGUID 12 1 0 0 f f f t f s 1 0 17 "2275" _null_ _null_ _null_ _null_ cstring_send _null_ _null_ _null_ ));
+DATA(insert OID = 2501 ( cstring_send PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 17 "2275" _null_ _null_ _null_ _null_ cstring_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2502 ( anyarray_recv PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2277 "2281" _null_ _null_ _null_ _null_ anyarray_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2502 ( anyarray_recv PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2277 "2281" _null_ _null_ _null_ _null_ anyarray_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2503 ( anyarray_send PGNSP PGUID 12 1 0 0 f f f t f s 1 0 17 "2277" _null_ _null_ _null_ _null_ anyarray_send _null_ _null_ _null_ ));
+DATA(insert OID = 2503 ( anyarray_send PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 17 "2277" _null_ _null_ _null_ _null_ anyarray_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3120 ( void_recv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2278 "2281" _null_ _null_ _null_ _null_ void_recv _null_ _null_ _null_ ));
+DATA(insert OID = 3120 ( void_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2278 "2281" _null_ _null_ _null_ _null_ void_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3121 ( void_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "2278" _null_ _null_ _null_ _null_ void_send _null_ _null_ _null_ ));
+DATA(insert OID = 3121 ( void_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "2278" _null_ _null_ _null_ _null_ void_send _null_ _null_ _null_ ));
DESCR("I/O");
/* System-view support functions with pretty-print option */
-DATA(insert OID = 2504 ( pg_get_ruledef PGNSP PGUID 12 1 0 0 f f f t f s 2 0 25 "26 16" _null_ _null_ _null_ _null_ pg_get_ruledef_ext _null_ _null_ _null_ ));
+DATA(insert OID = 2504 ( pg_get_ruledef PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 25 "26 16" _null_ _null_ _null_ _null_ pg_get_ruledef_ext _null_ _null_ _null_ ));
DESCR("source text of a rule with pretty-print option");
-DATA(insert OID = 2505 ( pg_get_viewdef PGNSP PGUID 12 1 0 0 f f f t f s 2 0 25 "25 16" _null_ _null_ _null_ _null_ pg_get_viewdef_name_ext _null_ _null_ _null_ ));
+DATA(insert OID = 2505 ( pg_get_viewdef PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 25 "25 16" _null_ _null_ _null_ _null_ pg_get_viewdef_name_ext _null_ _null_ _null_ ));
DESCR("select statement of a view with pretty-print option");
-DATA(insert OID = 2506 ( pg_get_viewdef PGNSP PGUID 12 1 0 0 f f f t f s 2 0 25 "26 16" _null_ _null_ _null_ _null_ pg_get_viewdef_ext _null_ _null_ _null_ ));
+DATA(insert OID = 2506 ( pg_get_viewdef PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 25 "26 16" _null_ _null_ _null_ _null_ pg_get_viewdef_ext _null_ _null_ _null_ ));
DESCR("select statement of a view with pretty-print option");
-DATA(insert OID = 2507 ( pg_get_indexdef PGNSP PGUID 12 1 0 0 f f f t f s 3 0 25 "26 23 16" _null_ _null_ _null_ _null_ pg_get_indexdef_ext _null_ _null_ _null_ ));
+DATA(insert OID = 2507 ( pg_get_indexdef PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 25 "26 23 16" _null_ _null_ _null_ _null_ pg_get_indexdef_ext _null_ _null_ _null_ ));
DESCR("index description (full create statement or single expression) with pretty-print option");
-DATA(insert OID = 2508 ( pg_get_constraintdef PGNSP PGUID 12 1 0 0 f f f t f s 2 0 25 "26 16" _null_ _null_ _null_ _null_ pg_get_constraintdef_ext _null_ _null_ _null_ ));
+DATA(insert OID = 2508 ( pg_get_constraintdef PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 25 "26 16" _null_ _null_ _null_ _null_ pg_get_constraintdef_ext _null_ _null_ _null_ ));
DESCR("constraint description with pretty-print option");
-DATA(insert OID = 2509 ( pg_get_expr PGNSP PGUID 12 1 0 0 f f f t f s 3 0 25 "194 26 16" _null_ _null_ _null_ _null_ pg_get_expr_ext _null_ _null_ _null_ ));
+DATA(insert OID = 2509 ( pg_get_expr PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 25 "194 26 16" _null_ _null_ _null_ _null_ pg_get_expr_ext _null_ _null_ _null_ ));
DESCR("deparse an encoded expression with pretty-print option");
-DATA(insert OID = 2510 ( pg_prepared_statement PGNSP PGUID 12 1 1000 0 f f f t t s 0 0 2249 "" "{25,25,1184,2211,16}" "{o,o,o,o,o}" "{name,statement,prepare_time,parameter_types,from_sql}" _null_ pg_prepared_statement _null_ _null_ _null_ ));
+DATA(insert OID = 2510 ( pg_prepared_statement PGNSP PGUID 12 1 1000 0 0 f f f t t s 0 0 2249 "" "{25,25,1184,2211,16}" "{o,o,o,o,o}" "{name,statement,prepare_time,parameter_types,from_sql}" _null_ pg_prepared_statement _null_ _null_ _null_ ));
DESCR("get the prepared statements for this session");
-DATA(insert OID = 2511 ( pg_cursor PGNSP PGUID 12 1 1000 0 f f f t t s 0 0 2249 "" "{25,25,16,16,16,1184}" "{o,o,o,o,o,o}" "{name,statement,is_holdable,is_binary,is_scrollable,creation_time}" _null_ pg_cursor _null_ _null_ _null_ ));
+DATA(insert OID = 2511 ( pg_cursor PGNSP PGUID 12 1 1000 0 0 f f f t t s 0 0 2249 "" "{25,25,16,16,16,1184}" "{o,o,o,o,o,o}" "{name,statement,is_holdable,is_binary,is_scrollable,creation_time}" _null_ pg_cursor _null_ _null_ _null_ ));
DESCR("get the open cursors for this session");
-DATA(insert OID = 2599 ( pg_timezone_abbrevs PGNSP PGUID 12 1 1000 0 f f f t t s 0 0 2249 "" "{25,1186,16}" "{o,o,o}" "{abbrev,utc_offset,is_dst}" _null_ pg_timezone_abbrevs _null_ _null_ _null_ ));
+DATA(insert OID = 2599 ( pg_timezone_abbrevs PGNSP PGUID 12 1 1000 0 0 f f f t t s 0 0 2249 "" "{25,1186,16}" "{o,o,o}" "{abbrev,utc_offset,is_dst}" _null_ pg_timezone_abbrevs _null_ _null_ _null_ ));
DESCR("get the available time zone abbreviations");
-DATA(insert OID = 2856 ( pg_timezone_names PGNSP PGUID 12 1 1000 0 f f f t t s 0 0 2249 "" "{25,25,1186,16}" "{o,o,o,o}" "{name,abbrev,utc_offset,is_dst}" _null_ pg_timezone_names _null_ _null_ _null_ ));
+DATA(insert OID = 2856 ( pg_timezone_names PGNSP PGUID 12 1 1000 0 0 f f f t t s 0 0 2249 "" "{25,25,1186,16}" "{o,o,o,o}" "{name,abbrev,utc_offset,is_dst}" _null_ pg_timezone_names _null_ _null_ _null_ ));
DESCR("get the available time zone names");
-DATA(insert OID = 2730 ( pg_get_triggerdef PGNSP PGUID 12 1 0 0 f f f t f s 2 0 25 "26 16" _null_ _null_ _null_ _null_ pg_get_triggerdef_ext _null_ _null_ _null_ ));
+DATA(insert OID = 2730 ( pg_get_triggerdef PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 25 "26 16" _null_ _null_ _null_ _null_ pg_get_triggerdef_ext _null_ _null_ _null_ ));
DESCR("trigger description with pretty-print option");
-DATA(insert OID = 3035 ( pg_listening_channels PGNSP PGUID 12 1 10 0 f f f t t s 0 0 25 "" _null_ _null_ _null_ _null_ pg_listening_channels _null_ _null_ _null_ ));
+DATA(insert OID = 3035 ( pg_listening_channels PGNSP PGUID 12 1 10 0 0 f f f t t s 0 0 25 "" _null_ _null_ _null_ _null_ pg_listening_channels _null_ _null_ _null_ ));
DESCR("get the channels that the current backend listens to");
-DATA(insert OID = 3036 ( pg_notify PGNSP PGUID 12 1 0 0 f f f f f v 2 0 2278 "25 25" _null_ _null_ _null_ _null_ pg_notify _null_ _null_ _null_ ));
+DATA(insert OID = 3036 ( pg_notify PGNSP PGUID 12 1 0 0 0 f f f f f v 2 0 2278 "25 25" _null_ _null_ _null_ _null_ pg_notify _null_ _null_ _null_ ));
DESCR("send a notification event");
/* non-persistent series generator */
-DATA(insert OID = 1066 ( generate_series PGNSP PGUID 12 1 1000 0 f f f t t i 3 0 23 "23 23 23" _null_ _null_ _null_ _null_ generate_series_step_int4 _null_ _null_ _null_ ));
+DATA(insert OID = 1066 ( generate_series PGNSP PGUID 12 1 1000 0 0 f f f t t i 3 0 23 "23 23 23" _null_ _null_ _null_ _null_ generate_series_step_int4 _null_ _null_ _null_ ));
DESCR("non-persistent series generator");
-DATA(insert OID = 1067 ( generate_series PGNSP PGUID 12 1 1000 0 f f f t t i 2 0 23 "23 23" _null_ _null_ _null_ _null_ generate_series_int4 _null_ _null_ _null_ ));
+DATA(insert OID = 1067 ( generate_series PGNSP PGUID 12 1 1000 0 0 f f f t t i 2 0 23 "23 23" _null_ _null_ _null_ _null_ generate_series_int4 _null_ _null_ _null_ ));
DESCR("non-persistent series generator");
-DATA(insert OID = 1068 ( generate_series PGNSP PGUID 12 1 1000 0 f f f t t i 3 0 20 "20 20 20" _null_ _null_ _null_ _null_ generate_series_step_int8 _null_ _null_ _null_ ));
+DATA(insert OID = 1068 ( generate_series PGNSP PGUID 12 1 1000 0 0 f f f t t i 3 0 20 "20 20 20" _null_ _null_ _null_ _null_ generate_series_step_int8 _null_ _null_ _null_ ));
DESCR("non-persistent series generator");
-DATA(insert OID = 1069 ( generate_series PGNSP PGUID 12 1 1000 0 f f f t t i 2 0 20 "20 20" _null_ _null_ _null_ _null_ generate_series_int8 _null_ _null_ _null_ ));
+DATA(insert OID = 1069 ( generate_series PGNSP PGUID 12 1 1000 0 0 f f f t t i 2 0 20 "20 20" _null_ _null_ _null_ _null_ generate_series_int8 _null_ _null_ _null_ ));
DESCR("non-persistent series generator");
-DATA(insert OID = 938 ( generate_series PGNSP PGUID 12 1 1000 0 f f f t t i 3 0 1114 "1114 1114 1186" _null_ _null_ _null_ _null_ generate_series_timestamp _null_ _null_ _null_ ));
+DATA(insert OID = 938 ( generate_series PGNSP PGUID 12 1 1000 0 0 f f f t t i 3 0 1114 "1114 1114 1186" _null_ _null_ _null_ _null_ generate_series_timestamp _null_ _null_ _null_ ));
DESCR("non-persistent series generator");
-DATA(insert OID = 939 ( generate_series PGNSP PGUID 12 1 1000 0 f f f t t s 3 0 1184 "1184 1184 1186" _null_ _null_ _null_ _null_ generate_series_timestamptz _null_ _null_ _null_ ));
+DATA(insert OID = 939 ( generate_series PGNSP PGUID 12 1 1000 0 0 f f f t t s 3 0 1184 "1184 1184 1186" _null_ _null_ _null_ _null_ generate_series_timestamptz _null_ _null_ _null_ ));
DESCR("non-persistent series generator");
/* boolean aggregates */
-DATA(insert OID = 2515 ( booland_statefunc PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "16 16" _null_ _null_ _null_ _null_ booland_statefunc _null_ _null_ _null_ ));
+DATA(insert OID = 2515 ( booland_statefunc PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "16 16" _null_ _null_ _null_ _null_ booland_statefunc _null_ _null_ _null_ ));
DESCR("aggregate transition function");
-DATA(insert OID = 2516 ( boolor_statefunc PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "16 16" _null_ _null_ _null_ _null_ boolor_statefunc _null_ _null_ _null_ ));
+DATA(insert OID = 2516 ( boolor_statefunc PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "16 16" _null_ _null_ _null_ _null_ boolor_statefunc _null_ _null_ _null_ ));
DESCR("aggregate transition function");
-DATA(insert OID = 2517 ( bool_and PGNSP PGUID 12 1 0 0 t f f f f i 1 0 16 "16" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2517 ( bool_and PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 16 "16" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("boolean-and aggregate");
/* ANY, SOME? These names conflict with subquery operators. See doc. */
-DATA(insert OID = 2518 ( bool_or PGNSP PGUID 12 1 0 0 t f f f f i 1 0 16 "16" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2518 ( bool_or PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 16 "16" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("boolean-or aggregate");
-DATA(insert OID = 2519 ( every PGNSP PGUID 12 1 0 0 t f f f f i 1 0 16 "16" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2519 ( every PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 16 "16" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("boolean-and aggregate");
/* bitwise integer aggregates */
-DATA(insert OID = 2236 ( bit_and PGNSP PGUID 12 1 0 0 t f f f f i 1 0 21 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2236 ( bit_and PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 21 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("bitwise-and smallint aggregate");
-DATA(insert OID = 2237 ( bit_or PGNSP PGUID 12 1 0 0 t f f f f i 1 0 21 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2237 ( bit_or PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 21 "21" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("bitwise-or smallint aggregate");
-DATA(insert OID = 2238 ( bit_and PGNSP PGUID 12 1 0 0 t f f f f i 1 0 23 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2238 ( bit_and PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 23 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("bitwise-and integer aggregate");
-DATA(insert OID = 2239 ( bit_or PGNSP PGUID 12 1 0 0 t f f f f i 1 0 23 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2239 ( bit_or PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 23 "23" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("bitwise-or integer aggregate");
-DATA(insert OID = 2240 ( bit_and PGNSP PGUID 12 1 0 0 t f f f f i 1 0 20 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2240 ( bit_and PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 20 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("bitwise-and bigint aggregate");
-DATA(insert OID = 2241 ( bit_or PGNSP PGUID 12 1 0 0 t f f f f i 1 0 20 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2241 ( bit_or PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 20 "20" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("bitwise-or bigint aggregate");
-DATA(insert OID = 2242 ( bit_and PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1560 "1560" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2242 ( bit_and PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1560 "1560" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("bitwise-and bit aggregate");
-DATA(insert OID = 2243 ( bit_or PGNSP PGUID 12 1 0 0 t f f f f i 1 0 1560 "1560" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2243 ( bit_or PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 1560 "1560" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("bitwise-or bit aggregate");
/* formerly-missing interval + datetime operators */
-DATA(insert OID = 2546 ( interval_pl_date PGNSP PGUID 14 1 0 0 f f f t f i 2 0 1114 "1186 1082" _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ ));
-DATA(insert OID = 2547 ( interval_pl_timetz PGNSP PGUID 14 1 0 0 f f f t f i 2 0 1266 "1186 1266" _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ ));
-DATA(insert OID = 2548 ( interval_pl_timestamp PGNSP PGUID 14 1 0 0 f f f t f i 2 0 1114 "1186 1114" _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ ));
-DATA(insert OID = 2549 ( interval_pl_timestamptz PGNSP PGUID 14 1 0 0 f f f t f s 2 0 1184 "1186 1184" _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ ));
-DATA(insert OID = 2550 ( integer_pl_date PGNSP PGUID 14 1 0 0 f f f t f i 2 0 1082 "23 1082" _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ ));
+DATA(insert OID = 2546 ( interval_pl_date PGNSP PGUID 14 1 0 0 0 f f f t f i 2 0 1114 "1186 1082" _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ ));
+DATA(insert OID = 2547 ( interval_pl_timetz PGNSP PGUID 14 1 0 0 0 f f f t f i 2 0 1266 "1186 1266" _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ ));
+DATA(insert OID = 2548 ( interval_pl_timestamp PGNSP PGUID 14 1 0 0 0 f f f t f i 2 0 1114 "1186 1114" _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ ));
+DATA(insert OID = 2549 ( interval_pl_timestamptz PGNSP PGUID 14 1 0 0 0 f f f t f s 2 0 1184 "1186 1184" _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ ));
+DATA(insert OID = 2550 ( integer_pl_date PGNSP PGUID 14 1 0 0 0 f f f t f i 2 0 1082 "23 1082" _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ ));
-DATA(insert OID = 2556 ( pg_tablespace_databases PGNSP PGUID 12 1 1000 0 f f f t t s 1 0 26 "26" _null_ _null_ _null_ _null_ pg_tablespace_databases _null_ _null_ _null_ ));
+DATA(insert OID = 2556 ( pg_tablespace_databases PGNSP PGUID 12 1 1000 0 0 f f f t t s 1 0 26 "26" _null_ _null_ _null_ _null_ pg_tablespace_databases _null_ _null_ _null_ ));
DESCR("get OIDs of databases in a tablespace");
-DATA(insert OID = 2557 ( bool PGNSP PGUID 12 1 0 0 f f f t f i 1 0 16 "23" _null_ _null_ _null_ _null_ int4_bool _null_ _null_ _null_ ));
+DATA(insert OID = 2557 ( bool PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 16 "23" _null_ _null_ _null_ _null_ int4_bool _null_ _null_ _null_ ));
DESCR("convert int4 to boolean");
-DATA(insert OID = 2558 ( int4 PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "16" _null_ _null_ _null_ _null_ bool_int4 _null_ _null_ _null_ ));
+DATA(insert OID = 2558 ( int4 PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "16" _null_ _null_ _null_ _null_ bool_int4 _null_ _null_ _null_ ));
DESCR("convert boolean to int4");
-DATA(insert OID = 2559 ( lastval PGNSP PGUID 12 1 0 0 f f f t f v 0 0 20 "" _null_ _null_ _null_ _null_ lastval _null_ _null_ _null_ ));
+DATA(insert OID = 2559 ( lastval PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 20 "" _null_ _null_ _null_ _null_ lastval _null_ _null_ _null_ ));
DESCR("current value from last used sequence");
/* start time function */
-DATA(insert OID = 2560 ( pg_postmaster_start_time PGNSP PGUID 12 1 0 0 f f f t f s 0 0 1184 "" _null_ _null_ _null_ _null_ pg_postmaster_start_time _null_ _null_ _null_ ));
+DATA(insert OID = 2560 ( pg_postmaster_start_time PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 1184 "" _null_ _null_ _null_ _null_ pg_postmaster_start_time _null_ _null_ _null_ ));
DESCR("postmaster start time");
/* config reload time function */
-DATA(insert OID = 2034 ( pg_conf_load_time PGNSP PGUID 12 1 0 0 f f f t f s 0 0 1184 "" _null_ _null_ _null_ _null_ pg_conf_load_time _null_ _null_ _null_ ));
+DATA(insert OID = 2034 ( pg_conf_load_time PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 1184 "" _null_ _null_ _null_ _null_ pg_conf_load_time _null_ _null_ _null_ ));
DESCR("configuration load time");
/* new functions for Y-direction rtree opclasses */
-DATA(insert OID = 2562 ( box_below PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_below _null_ _null_ _null_ ));
-DATA(insert OID = 2563 ( box_overbelow PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_overbelow _null_ _null_ _null_ ));
-DATA(insert OID = 2564 ( box_overabove PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_overabove _null_ _null_ _null_ ));
-DATA(insert OID = 2565 ( box_above PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_above _null_ _null_ _null_ ));
-DATA(insert OID = 2566 ( poly_below PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_below _null_ _null_ _null_ ));
-DATA(insert OID = 2567 ( poly_overbelow PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_overbelow _null_ _null_ _null_ ));
-DATA(insert OID = 2568 ( poly_overabove PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_overabove _null_ _null_ _null_ ));
-DATA(insert OID = 2569 ( poly_above PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_above _null_ _null_ _null_ ));
-DATA(insert OID = 2587 ( circle_overbelow PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_overbelow _null_ _null_ _null_ ));
-DATA(insert OID = 2588 ( circle_overabove PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_overabove _null_ _null_ _null_ ));
+DATA(insert OID = 2562 ( box_below PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_below _null_ _null_ _null_ ));
+DATA(insert OID = 2563 ( box_overbelow PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_overbelow _null_ _null_ _null_ ));
+DATA(insert OID = 2564 ( box_overabove PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_overabove _null_ _null_ _null_ ));
+DATA(insert OID = 2565 ( box_above PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "603 603" _null_ _null_ _null_ _null_ box_above _null_ _null_ _null_ ));
+DATA(insert OID = 2566 ( poly_below PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_below _null_ _null_ _null_ ));
+DATA(insert OID = 2567 ( poly_overbelow PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_overbelow _null_ _null_ _null_ ));
+DATA(insert OID = 2568 ( poly_overabove PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_overabove _null_ _null_ _null_ ));
+DATA(insert OID = 2569 ( poly_above PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "604 604" _null_ _null_ _null_ _null_ poly_above _null_ _null_ _null_ ));
+DATA(insert OID = 2587 ( circle_overbelow PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_overbelow _null_ _null_ _null_ ));
+DATA(insert OID = 2588 ( circle_overabove PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "718 718" _null_ _null_ _null_ _null_ circle_overabove _null_ _null_ _null_ ));
/* support functions for GiST r-tree emulation */
-DATA(insert OID = 2578 ( gist_box_consistent PGNSP PGUID 12 1 0 0 f f f t f i 5 0 16 "2281 603 23 26 2281" _null_ _null_ _null_ _null_ gist_box_consistent _null_ _null_ _null_ ));
+DATA(insert OID = 2578 ( gist_box_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i 5 0 16 "2281 603 23 26 2281" _null_ _null_ _null_ _null_ gist_box_consistent _null_ _null_ _null_ ));
DESCR("GiST support");
-DATA(insert OID = 2579 ( gist_box_compress PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ gist_box_compress _null_ _null_ _null_ ));
+DATA(insert OID = 2579 ( gist_box_compress PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ gist_box_compress _null_ _null_ _null_ ));
DESCR("GiST support");
-DATA(insert OID = 2580 ( gist_box_decompress PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ gist_box_decompress _null_ _null_ _null_ ));
+DATA(insert OID = 2580 ( gist_box_decompress PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ gist_box_decompress _null_ _null_ _null_ ));
DESCR("GiST support");
-DATA(insert OID = 2581 ( gist_box_penalty PGNSP PGUID 12 1 0 0 f f f t f i 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ gist_box_penalty _null_ _null_ _null_ ));
+DATA(insert OID = 2581 ( gist_box_penalty PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ gist_box_penalty _null_ _null_ _null_ ));
DESCR("GiST support");
-DATA(insert OID = 2582 ( gist_box_picksplit PGNSP PGUID 12 1 0 0 f f f t f i 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ gist_box_picksplit _null_ _null_ _null_ ));
+DATA(insert OID = 2582 ( gist_box_picksplit PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ gist_box_picksplit _null_ _null_ _null_ ));
DESCR("GiST support");
-DATA(insert OID = 2583 ( gist_box_union PGNSP PGUID 12 1 0 0 f f f t f i 2 0 603 "2281 2281" _null_ _null_ _null_ _null_ gist_box_union _null_ _null_ _null_ ));
+DATA(insert OID = 2583 ( gist_box_union PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 603 "2281 2281" _null_ _null_ _null_ _null_ gist_box_union _null_ _null_ _null_ ));
DESCR("GiST support");
-DATA(insert OID = 2584 ( gist_box_same PGNSP PGUID 12 1 0 0 f f f t f i 3 0 2281 "603 603 2281" _null_ _null_ _null_ _null_ gist_box_same _null_ _null_ _null_ ));
+DATA(insert OID = 2584 ( gist_box_same PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 2281 "603 603 2281" _null_ _null_ _null_ _null_ gist_box_same _null_ _null_ _null_ ));
DESCR("GiST support");
-DATA(insert OID = 2585 ( gist_poly_consistent PGNSP PGUID 12 1 0 0 f f f t f i 5 0 16 "2281 604 23 26 2281" _null_ _null_ _null_ _null_ gist_poly_consistent _null_ _null_ _null_ ));
+DATA(insert OID = 2585 ( gist_poly_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i 5 0 16 "2281 604 23 26 2281" _null_ _null_ _null_ _null_ gist_poly_consistent _null_ _null_ _null_ ));
DESCR("GiST support");
-DATA(insert OID = 2586 ( gist_poly_compress PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ gist_poly_compress _null_ _null_ _null_ ));
+DATA(insert OID = 2586 ( gist_poly_compress PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ gist_poly_compress _null_ _null_ _null_ ));
DESCR("GiST support");
-DATA(insert OID = 2591 ( gist_circle_consistent PGNSP PGUID 12 1 0 0 f f f t f i 5 0 16 "2281 718 23 26 2281" _null_ _null_ _null_ _null_ gist_circle_consistent _null_ _null_ _null_ ));
+DATA(insert OID = 2591 ( gist_circle_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i 5 0 16 "2281 718 23 26 2281" _null_ _null_ _null_ _null_ gist_circle_consistent _null_ _null_ _null_ ));
DESCR("GiST support");
-DATA(insert OID = 2592 ( gist_circle_compress PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ gist_circle_compress _null_ _null_ _null_ ));
+DATA(insert OID = 2592 ( gist_circle_compress PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ gist_circle_compress _null_ _null_ _null_ ));
DESCR("GiST support");
-DATA(insert OID = 1030 ( gist_point_compress PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ gist_point_compress _null_ _null_ _null_ ));
+DATA(insert OID = 1030 ( gist_point_compress PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ gist_point_compress _null_ _null_ _null_ ));
DESCR("GiST support");
-DATA(insert OID = 2179 ( gist_point_consistent PGNSP PGUID 12 1 0 0 f f f t f i 5 0 16 "2281 600 23 26 2281" _null_ _null_ _null_ _null_ gist_point_consistent _null_ _null_ _null_ ));
+DATA(insert OID = 2179 ( gist_point_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i 5 0 16 "2281 600 23 26 2281" _null_ _null_ _null_ _null_ gist_point_consistent _null_ _null_ _null_ ));
DESCR("GiST support");
-DATA(insert OID = 3064 ( gist_point_distance PGNSP PGUID 12 1 0 0 f f f t f i 4 0 701 "2281 600 23 26" _null_ _null_ _null_ _null_ gist_point_distance _null_ _null_ _null_ ));
+DATA(insert OID = 3064 ( gist_point_distance PGNSP PGUID 12 1 0 0 0 f f f t f i 4 0 701 "2281 600 23 26" _null_ _null_ _null_ _null_ gist_point_distance _null_ _null_ _null_ ));
DESCR("GiST support");
/* GIN */
-DATA(insert OID = 2731 ( gingetbitmap PGNSP PGUID 12 1 0 0 f f f t f v 2 0 20 "2281 2281" _null_ _null_ _null_ _null_ gingetbitmap _null_ _null_ _null_ ));
+DATA(insert OID = 2731 ( gingetbitmap PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 20 "2281 2281" _null_ _null_ _null_ _null_ gingetbitmap _null_ _null_ _null_ ));
DESCR("gin(internal)");
-DATA(insert OID = 2732 ( gininsert PGNSP PGUID 12 1 0 0 f f f t f v 6 0 16 "2281 2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ gininsert _null_ _null_ _null_ ));
+DATA(insert OID = 2732 ( gininsert PGNSP PGUID 12 1 0 0 0 f f f t f v 6 0 16 "2281 2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ gininsert _null_ _null_ _null_ ));
DESCR("gin(internal)");
-DATA(insert OID = 2733 ( ginbeginscan PGNSP PGUID 12 1 0 0 f f f t f v 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ ginbeginscan _null_ _null_ _null_ ));
+DATA(insert OID = 2733 ( ginbeginscan PGNSP PGUID 12 1 0 0 0 f f f t f v 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ ginbeginscan _null_ _null_ _null_ ));
DESCR("gin(internal)");
-DATA(insert OID = 2734 ( ginrescan PGNSP PGUID 12 1 0 0 f f f t f v 5 0 2278 "2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ ginrescan _null_ _null_ _null_ ));
+DATA(insert OID = 2734 ( ginrescan PGNSP PGUID 12 1 0 0 0 f f f t f v 5 0 2278 "2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ ginrescan _null_ _null_ _null_ ));
DESCR("gin(internal)");
-DATA(insert OID = 2735 ( ginendscan PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ ginendscan _null_ _null_ _null_ ));
+DATA(insert OID = 2735 ( ginendscan PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ ginendscan _null_ _null_ _null_ ));
DESCR("gin(internal)");
-DATA(insert OID = 2736 ( ginmarkpos PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ ginmarkpos _null_ _null_ _null_ ));
+DATA(insert OID = 2736 ( ginmarkpos PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ ginmarkpos _null_ _null_ _null_ ));
DESCR("gin(internal)");
-DATA(insert OID = 2737 ( ginrestrpos PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ ginrestrpos _null_ _null_ _null_ ));
+DATA(insert OID = 2737 ( ginrestrpos PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ ginrestrpos _null_ _null_ _null_ ));
DESCR("gin(internal)");
-DATA(insert OID = 2738 ( ginbuild PGNSP PGUID 12 1 0 0 f f f t f v 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ ginbuild _null_ _null_ _null_ ));
+DATA(insert OID = 2738 ( ginbuild PGNSP PGUID 12 1 0 0 0 f f f t f v 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ ginbuild _null_ _null_ _null_ ));
DESCR("gin(internal)");
-DATA(insert OID = 325 ( ginbuildempty PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ ginbuildempty _null_ _null_ _null_ ));
+DATA(insert OID = 325 ( ginbuildempty PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "2281" _null_ _null_ _null_ _null_ ginbuildempty _null_ _null_ _null_ ));
DESCR("gin(internal)");
-DATA(insert OID = 2739 ( ginbulkdelete PGNSP PGUID 12 1 0 0 f f f t f v 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ ginbulkdelete _null_ _null_ _null_ ));
+DATA(insert OID = 2739 ( ginbulkdelete PGNSP PGUID 12 1 0 0 0 f f f t f v 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ ginbulkdelete _null_ _null_ _null_ ));
DESCR("gin(internal)");
-DATA(insert OID = 2740 ( ginvacuumcleanup PGNSP PGUID 12 1 0 0 f f f t f v 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ ginvacuumcleanup _null_ _null_ _null_ ));
+DATA(insert OID = 2740 ( ginvacuumcleanup PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ ginvacuumcleanup _null_ _null_ _null_ ));
DESCR("gin(internal)");
-DATA(insert OID = 2741 ( gincostestimate PGNSP PGUID 12 1 0 0 f f f t f v 9 0 2278 "2281 2281 2281 2281 2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ gincostestimate _null_ _null_ _null_ ));
+DATA(insert OID = 2741 ( gincostestimate PGNSP PGUID 12 1 0 0 0 f f f t f v 9 0 2278 "2281 2281 2281 2281 2281 2281 2281 2281 2281" _null_ _null_ _null_ _null_ gincostestimate _null_ _null_ _null_ ));
DESCR("gin(internal)");
-DATA(insert OID = 2788 ( ginoptions PGNSP PGUID 12 1 0 0 f f f t f s 2 0 17 "1009 16" _null_ _null_ _null_ _null_ ginoptions _null_ _null_ _null_ ));
+DATA(insert OID = 2788 ( ginoptions PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 17 "1009 16" _null_ _null_ _null_ _null_ ginoptions _null_ _null_ _null_ ));
DESCR("gin(internal)");
/* GIN array support */
-DATA(insert OID = 2743 ( ginarrayextract PGNSP PGUID 12 1 0 0 f f f t f i 3 0 2281 "2277 2281 2281" _null_ _null_ _null_ _null_ ginarrayextract _null_ _null_ _null_ ));
+DATA(insert OID = 2743 ( ginarrayextract PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 2281 "2277 2281 2281" _null_ _null_ _null_ _null_ ginarrayextract _null_ _null_ _null_ ));
DESCR("GIN array support");
-DATA(insert OID = 2774 ( ginqueryarrayextract PGNSP PGUID 12 1 0 0 f f f t f i 7 0 2281 "2277 2281 21 2281 2281 2281 2281" _null_ _null_ _null_ _null_ ginqueryarrayextract _null_ _null_ _null_ ));
+DATA(insert OID = 2774 ( ginqueryarrayextract PGNSP PGUID 12 1 0 0 0 f f f t f i 7 0 2281 "2277 2281 21 2281 2281 2281 2281" _null_ _null_ _null_ _null_ ginqueryarrayextract _null_ _null_ _null_ ));
DESCR("GIN array support");
-DATA(insert OID = 2744 ( ginarrayconsistent PGNSP PGUID 12 1 0 0 f f f t f i 8 0 16 "2281 21 2277 23 2281 2281 2281 2281" _null_ _null_ _null_ _null_ ginarrayconsistent _null_ _null_ _null_ ));
+DATA(insert OID = 2744 ( ginarrayconsistent PGNSP PGUID 12 1 0 0 0 f f f t f i 8 0 16 "2281 21 2277 23 2281 2281 2281 2281" _null_ _null_ _null_ _null_ ginarrayconsistent _null_ _null_ _null_ ));
DESCR("GIN array support");
-DATA(insert OID = 3076 ( ginarrayextract PGNSP PGUID 12 1 0 0 f f f t f i 2 0 2281 "2277 2281" _null_ _null_ _null_ _null_ ginarrayextract_2args _null_ _null_ _null_ ));
+DATA(insert OID = 3076 ( ginarrayextract PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 2281 "2277 2281" _null_ _null_ _null_ _null_ ginarrayextract_2args _null_ _null_ _null_ ));
DESCR("GIN array support (obsolete)");
/* overlap/contains/contained */
-DATA(insert OID = 2747 ( arrayoverlap PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ arrayoverlap _null_ _null_ _null_ ));
-DATA(insert OID = 2748 ( arraycontains PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ arraycontains _null_ _null_ _null_ ));
-DATA(insert OID = 2749 ( arraycontained PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ arraycontained _null_ _null_ _null_ ));
+DATA(insert OID = 2747 ( arrayoverlap PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ arrayoverlap _null_ _null_ _null_ ));
+DATA(insert OID = 2748 ( arraycontains PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ arraycontains _null_ _null_ _null_ ));
+DATA(insert OID = 2749 ( arraycontained PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ arraycontained _null_ _null_ _null_ ));
/* userlock replacements */
-DATA(insert OID = 2880 ( pg_advisory_lock PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2278 "20" _null_ _null_ _null_ _null_ pg_advisory_lock_int8 _null_ _null_ _null_ ));
+DATA(insert OID = 2880 ( pg_advisory_lock PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "20" _null_ _null_ _null_ _null_ pg_advisory_lock_int8 _null_ _null_ _null_ ));
DESCR("obtain exclusive advisory lock");
-DATA(insert OID = 3089 ( pg_advisory_xact_lock PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2278 "20" _null_ _null_ _null_ _null_ pg_advisory_xact_lock_int8 _null_ _null_ _null_ ));
+DATA(insert OID = 3089 ( pg_advisory_xact_lock PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "20" _null_ _null_ _null_ _null_ pg_advisory_xact_lock_int8 _null_ _null_ _null_ ));
DESCR("obtain exclusive advisory lock");
-DATA(insert OID = 2881 ( pg_advisory_lock_shared PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2278 "20" _null_ _null_ _null_ _null_ pg_advisory_lock_shared_int8 _null_ _null_ _null_ ));
+DATA(insert OID = 2881 ( pg_advisory_lock_shared PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "20" _null_ _null_ _null_ _null_ pg_advisory_lock_shared_int8 _null_ _null_ _null_ ));
DESCR("obtain shared advisory lock");
-DATA(insert OID = 3090 ( pg_advisory_xact_lock_shared PGNSP PGUID 12 1 0 0 f f f t f v 1 0 2278 "20" _null_ _null_ _null_ _null_ pg_advisory_xact_lock_shared_int8 _null_ _null_ _null_ ));
+DATA(insert OID = 3090 ( pg_advisory_xact_lock_shared PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "20" _null_ _null_ _null_ _null_ pg_advisory_xact_lock_shared_int8 _null_ _null_ _null_ ));
DESCR("obtain shared advisory lock");
-DATA(insert OID = 2882 ( pg_try_advisory_lock PGNSP PGUID 12 1 0 0 f f f t f v 1 0 16 "20" _null_ _null_ _null_ _null_ pg_try_advisory_lock_int8 _null_ _null_ _null_ ));
+DATA(insert OID = 2882 ( pg_try_advisory_lock PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 16 "20" _null_ _null_ _null_ _null_ pg_try_advisory_lock_int8 _null_ _null_ _null_ ));
DESCR("obtain exclusive advisory lock if available");
-DATA(insert OID = 3091 ( pg_try_advisory_xact_lock PGNSP PGUID 12 1 0 0 f f f t f v 1 0 16 "20" _null_ _null_ _null_ _null_ pg_try_advisory_xact_lock_int8 _null_ _null_ _null_ ));
+DATA(insert OID = 3091 ( pg_try_advisory_xact_lock PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 16 "20" _null_ _null_ _null_ _null_ pg_try_advisory_xact_lock_int8 _null_ _null_ _null_ ));
DESCR("obtain exclusive advisory lock if available");
-DATA(insert OID = 2883 ( pg_try_advisory_lock_shared PGNSP PGUID 12 1 0 0 f f f t f v 1 0 16 "20" _null_ _null_ _null_ _null_ pg_try_advisory_lock_shared_int8 _null_ _null_ _null_ ));
+DATA(insert OID = 2883 ( pg_try_advisory_lock_shared PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 16 "20" _null_ _null_ _null_ _null_ pg_try_advisory_lock_shared_int8 _null_ _null_ _null_ ));
DESCR("obtain shared advisory lock if available");
-DATA(insert OID = 3092 ( pg_try_advisory_xact_lock_shared PGNSP PGUID 12 1 0 0 f f f t f v 1 0 16 "20" _null_ _null_ _null_ _null_ pg_try_advisory_xact_lock_shared_int8 _null_ _null_ _null_ ));
+DATA(insert OID = 3092 ( pg_try_advisory_xact_lock_shared PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 16 "20" _null_ _null_ _null_ _null_ pg_try_advisory_xact_lock_shared_int8 _null_ _null_ _null_ ));
DESCR("obtain shared advisory lock if available");
-DATA(insert OID = 2884 ( pg_advisory_unlock PGNSP PGUID 12 1 0 0 f f f t f v 1 0 16 "20" _null_ _null_ _null_ _null_ pg_advisory_unlock_int8 _null_ _null_ _null_ ));
+DATA(insert OID = 2884 ( pg_advisory_unlock PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 16 "20" _null_ _null_ _null_ _null_ pg_advisory_unlock_int8 _null_ _null_ _null_ ));
DESCR("release exclusive advisory lock");
-DATA(insert OID = 2885 ( pg_advisory_unlock_shared PGNSP PGUID 12 1 0 0 f f f t f v 1 0 16 "20" _null_ _null_ _null_ _null_ pg_advisory_unlock_shared_int8 _null_ _null_ _null_ ));
+DATA(insert OID = 2885 ( pg_advisory_unlock_shared PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 16 "20" _null_ _null_ _null_ _null_ pg_advisory_unlock_shared_int8 _null_ _null_ _null_ ));
DESCR("release shared advisory lock");
-DATA(insert OID = 2886 ( pg_advisory_lock PGNSP PGUID 12 1 0 0 f f f t f v 2 0 2278 "23 23" _null_ _null_ _null_ _null_ pg_advisory_lock_int4 _null_ _null_ _null_ ));
+DATA(insert OID = 2886 ( pg_advisory_lock PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 2278 "23 23" _null_ _null_ _null_ _null_ pg_advisory_lock_int4 _null_ _null_ _null_ ));
DESCR("obtain exclusive advisory lock");
-DATA(insert OID = 3093 ( pg_advisory_xact_lock PGNSP PGUID 12 1 0 0 f f f t f v 2 0 2278 "23 23" _null_ _null_ _null_ _null_ pg_advisory_xact_lock_int4 _null_ _null_ _null_ ));
+DATA(insert OID = 3093 ( pg_advisory_xact_lock PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 2278 "23 23" _null_ _null_ _null_ _null_ pg_advisory_xact_lock_int4 _null_ _null_ _null_ ));
DESCR("obtain exclusive advisory lock");
-DATA(insert OID = 2887 ( pg_advisory_lock_shared PGNSP PGUID 12 1 0 0 f f f t f v 2 0 2278 "23 23" _null_ _null_ _null_ _null_ pg_advisory_lock_shared_int4 _null_ _null_ _null_ ));
+DATA(insert OID = 2887 ( pg_advisory_lock_shared PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 2278 "23 23" _null_ _null_ _null_ _null_ pg_advisory_lock_shared_int4 _null_ _null_ _null_ ));
DESCR("obtain shared advisory lock");
-DATA(insert OID = 3094 ( pg_advisory_xact_lock_shared PGNSP PGUID 12 1 0 0 f f f t f v 2 0 2278 "23 23" _null_ _null_ _null_ _null_ pg_advisory_xact_lock_shared_int4 _null_ _null_ _null_ ));
+DATA(insert OID = 3094 ( pg_advisory_xact_lock_shared PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 2278 "23 23" _null_ _null_ _null_ _null_ pg_advisory_xact_lock_shared_int4 _null_ _null_ _null_ ));
DESCR("obtain shared advisory lock");
-DATA(insert OID = 2888 ( pg_try_advisory_lock PGNSP PGUID 12 1 0 0 f f f t f v 2 0 16 "23 23" _null_ _null_ _null_ _null_ pg_try_advisory_lock_int4 _null_ _null_ _null_ ));
+DATA(insert OID = 2888 ( pg_try_advisory_lock PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 16 "23 23" _null_ _null_ _null_ _null_ pg_try_advisory_lock_int4 _null_ _null_ _null_ ));
DESCR("obtain exclusive advisory lock if available");
-DATA(insert OID = 3095 ( pg_try_advisory_xact_lock PGNSP PGUID 12 1 0 0 f f f t f v 2 0 16 "23 23" _null_ _null_ _null_ _null_ pg_try_advisory_xact_lock_int4 _null_ _null_ _null_ ));
+DATA(insert OID = 3095 ( pg_try_advisory_xact_lock PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 16 "23 23" _null_ _null_ _null_ _null_ pg_try_advisory_xact_lock_int4 _null_ _null_ _null_ ));
DESCR("obtain exclusive advisory lock if available");
-DATA(insert OID = 2889 ( pg_try_advisory_lock_shared PGNSP PGUID 12 1 0 0 f f f t f v 2 0 16 "23 23" _null_ _null_ _null_ _null_ pg_try_advisory_lock_shared_int4 _null_ _null_ _null_ ));
+DATA(insert OID = 2889 ( pg_try_advisory_lock_shared PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 16 "23 23" _null_ _null_ _null_ _null_ pg_try_advisory_lock_shared_int4 _null_ _null_ _null_ ));
DESCR("obtain shared advisory lock if available");
-DATA(insert OID = 3096 ( pg_try_advisory_xact_lock_shared PGNSP PGUID 12 1 0 0 f f f t f v 2 0 16 "23 23" _null_ _null_ _null_ _null_ pg_try_advisory_xact_lock_shared_int4 _null_ _null_ _null_ ));
+DATA(insert OID = 3096 ( pg_try_advisory_xact_lock_shared PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 16 "23 23" _null_ _null_ _null_ _null_ pg_try_advisory_xact_lock_shared_int4 _null_ _null_ _null_ ));
DESCR("obtain shared advisory lock if available");
-DATA(insert OID = 2890 ( pg_advisory_unlock PGNSP PGUID 12 1 0 0 f f f t f v 2 0 16 "23 23" _null_ _null_ _null_ _null_ pg_advisory_unlock_int4 _null_ _null_ _null_ ));
+DATA(insert OID = 2890 ( pg_advisory_unlock PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 16 "23 23" _null_ _null_ _null_ _null_ pg_advisory_unlock_int4 _null_ _null_ _null_ ));
DESCR("release exclusive advisory lock");
-DATA(insert OID = 2891 ( pg_advisory_unlock_shared PGNSP PGUID 12 1 0 0 f f f t f v 2 0 16 "23 23" _null_ _null_ _null_ _null_ pg_advisory_unlock_shared_int4 _null_ _null_ _null_ ));
+DATA(insert OID = 2891 ( pg_advisory_unlock_shared PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 16 "23 23" _null_ _null_ _null_ _null_ pg_advisory_unlock_shared_int4 _null_ _null_ _null_ ));
DESCR("release shared advisory lock");
-DATA(insert OID = 2892 ( pg_advisory_unlock_all PGNSP PGUID 12 1 0 0 f f f t f v 0 0 2278 "" _null_ _null_ _null_ _null_ pg_advisory_unlock_all _null_ _null_ _null_ ));
+DATA(insert OID = 2892 ( pg_advisory_unlock_all PGNSP PGUID 12 1 0 0 0 f f f t f v 0 0 2278 "" _null_ _null_ _null_ _null_ pg_advisory_unlock_all _null_ _null_ _null_ ));
DESCR("release all advisory locks");
/* XML support */
-DATA(insert OID = 2893 ( xml_in PGNSP PGUID 12 1 0 0 f f f t f s 1 0 142 "2275" _null_ _null_ _null_ _null_ xml_in _null_ _null_ _null_ ));
+DATA(insert OID = 2893 ( xml_in PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 142 "2275" _null_ _null_ _null_ _null_ xml_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2894 ( xml_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "142" _null_ _null_ _null_ _null_ xml_out _null_ _null_ _null_ ));
+DATA(insert OID = 2894 ( xml_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "142" _null_ _null_ _null_ _null_ xml_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2895 ( xmlcomment PGNSP PGUID 12 1 0 0 f f f t f i 1 0 142 "25" _null_ _null_ _null_ _null_ xmlcomment _null_ _null_ _null_ ));
+DATA(insert OID = 2895 ( xmlcomment PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 142 "25" _null_ _null_ _null_ _null_ xmlcomment _null_ _null_ _null_ ));
DESCR("generate XML comment");
-DATA(insert OID = 2896 ( xml PGNSP PGUID 12 1 0 0 f f f t f s 1 0 142 "25" _null_ _null_ _null_ _null_ texttoxml _null_ _null_ _null_ ));
+DATA(insert OID = 2896 ( xml PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 142 "25" _null_ _null_ _null_ _null_ texttoxml _null_ _null_ _null_ ));
DESCR("perform a non-validating parse of a character string to produce an XML value");
-DATA(insert OID = 2897 ( xmlvalidate PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "142 25" _null_ _null_ _null_ _null_ xmlvalidate _null_ _null_ _null_ ));
+DATA(insert OID = 2897 ( xmlvalidate PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "142 25" _null_ _null_ _null_ _null_ xmlvalidate _null_ _null_ _null_ ));
DESCR("validate an XML value");
-DATA(insert OID = 2898 ( xml_recv PGNSP PGUID 12 1 0 0 f f f t f s 1 0 142 "2281" _null_ _null_ _null_ _null_ xml_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2898 ( xml_recv PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 142 "2281" _null_ _null_ _null_ _null_ xml_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2899 ( xml_send PGNSP PGUID 12 1 0 0 f f f t f s 1 0 17 "142" _null_ _null_ _null_ _null_ xml_send _null_ _null_ _null_ ));
+DATA(insert OID = 2899 ( xml_send PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 17 "142" _null_ _null_ _null_ _null_ xml_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2900 ( xmlconcat2 PGNSP PGUID 12 1 0 0 f f f f f i 2 0 142 "142 142" _null_ _null_ _null_ _null_ xmlconcat2 _null_ _null_ _null_ ));
+DATA(insert OID = 2900 ( xmlconcat2 PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 142 "142 142" _null_ _null_ _null_ _null_ xmlconcat2 _null_ _null_ _null_ ));
DESCR("aggregate transition function");
-DATA(insert OID = 2901 ( xmlagg PGNSP PGUID 12 1 0 0 t f f f f i 1 0 142 "142" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 2901 ( xmlagg PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 142 "142" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("concatenate XML values");
-DATA(insert OID = 2922 ( text PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "142" _null_ _null_ _null_ _null_ xmltotext _null_ _null_ _null_ ));
+DATA(insert OID = 2922 ( text PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "142" _null_ _null_ _null_ _null_ xmltotext _null_ _null_ _null_ ));
DESCR("serialize an XML value to a character string");
-DATA(insert OID = 2923 ( table_to_xml PGNSP PGUID 12 100 0 0 f f f t f s 4 0 142 "2205 16 16 25" _null_ _null_ "{tbl,nulls,tableforest,targetns}" _null_ table_to_xml _null_ _null_ _null_ ));
+DATA(insert OID = 2923 ( table_to_xml PGNSP PGUID 12 100 0 0 0 f f f t f s 4 0 142 "2205 16 16 25" _null_ _null_ "{tbl,nulls,tableforest,targetns}" _null_ table_to_xml _null_ _null_ _null_ ));
DESCR("map table contents to XML");
-DATA(insert OID = 2924 ( query_to_xml PGNSP PGUID 12 100 0 0 f f f t f s 4 0 142 "25 16 16 25" _null_ _null_ "{query,nulls,tableforest,targetns}" _null_ query_to_xml _null_ _null_ _null_ ));
+DATA(insert OID = 2924 ( query_to_xml PGNSP PGUID 12 100 0 0 0 f f f t f s 4 0 142 "25 16 16 25" _null_ _null_ "{query,nulls,tableforest,targetns}" _null_ query_to_xml _null_ _null_ _null_ ));
DESCR("map query result to XML");
-DATA(insert OID = 2925 ( cursor_to_xml PGNSP PGUID 12 100 0 0 f f f t f s 5 0 142 "1790 23 16 16 25" _null_ _null_ "{cursor,count,nulls,tableforest,targetns}" _null_ cursor_to_xml _null_ _null_ _null_ ));
+DATA(insert OID = 2925 ( cursor_to_xml PGNSP PGUID 12 100 0 0 0 f f f t f s 5 0 142 "1790 23 16 16 25" _null_ _null_ "{cursor,count,nulls,tableforest,targetns}" _null_ cursor_to_xml _null_ _null_ _null_ ));
DESCR("map rows from cursor to XML");
-DATA(insert OID = 2926 ( table_to_xmlschema PGNSP PGUID 12 100 0 0 f f f t f s 4 0 142 "2205 16 16 25" _null_ _null_ "{tbl,nulls,tableforest,targetns}" _null_ table_to_xmlschema _null_ _null_ _null_ ));
+DATA(insert OID = 2926 ( table_to_xmlschema PGNSP PGUID 12 100 0 0 0 f f f t f s 4 0 142 "2205 16 16 25" _null_ _null_ "{tbl,nulls,tableforest,targetns}" _null_ table_to_xmlschema _null_ _null_ _null_ ));
DESCR("map table structure to XML Schema");
-DATA(insert OID = 2927 ( query_to_xmlschema PGNSP PGUID 12 100 0 0 f f f t f s 4 0 142 "25 16 16 25" _null_ _null_ "{query,nulls,tableforest,targetns}" _null_ query_to_xmlschema _null_ _null_ _null_ ));
+DATA(insert OID = 2927 ( query_to_xmlschema PGNSP PGUID 12 100 0 0 0 f f f t f s 4 0 142 "25 16 16 25" _null_ _null_ "{query,nulls,tableforest,targetns}" _null_ query_to_xmlschema _null_ _null_ _null_ ));
DESCR("map query result structure to XML Schema");
-DATA(insert OID = 2928 ( cursor_to_xmlschema PGNSP PGUID 12 100 0 0 f f f t f s 4 0 142 "1790 16 16 25" _null_ _null_ "{cursor,nulls,tableforest,targetns}" _null_ cursor_to_xmlschema _null_ _null_ _null_ ));
+DATA(insert OID = 2928 ( cursor_to_xmlschema PGNSP PGUID 12 100 0 0 0 f f f t f s 4 0 142 "1790 16 16 25" _null_ _null_ "{cursor,nulls,tableforest,targetns}" _null_ cursor_to_xmlschema _null_ _null_ _null_ ));
DESCR("map cursor structure to XML Schema");
-DATA(insert OID = 2929 ( table_to_xml_and_xmlschema PGNSP PGUID 12 100 0 0 f f f t f s 4 0 142 "2205 16 16 25" _null_ _null_ "{tbl,nulls,tableforest,targetns}" _null_ table_to_xml_and_xmlschema _null_ _null_ _null_ ));
+DATA(insert OID = 2929 ( table_to_xml_and_xmlschema PGNSP PGUID 12 100 0 0 0 f f f t f s 4 0 142 "2205 16 16 25" _null_ _null_ "{tbl,nulls,tableforest,targetns}" _null_ table_to_xml_and_xmlschema _null_ _null_ _null_ ));
DESCR("map table contents and structure to XML and XML Schema");
-DATA(insert OID = 2930 ( query_to_xml_and_xmlschema PGNSP PGUID 12 100 0 0 f f f t f s 4 0 142 "25 16 16 25" _null_ _null_ "{query,nulls,tableforest,targetns}" _null_ query_to_xml_and_xmlschema _null_ _null_ _null_ ));
+DATA(insert OID = 2930 ( query_to_xml_and_xmlschema PGNSP PGUID 12 100 0 0 0 f f f t f s 4 0 142 "25 16 16 25" _null_ _null_ "{query,nulls,tableforest,targetns}" _null_ query_to_xml_and_xmlschema _null_ _null_ _null_ ));
DESCR("map query result and structure to XML and XML Schema");
-DATA(insert OID = 2933 ( schema_to_xml PGNSP PGUID 12 100 0 0 f f f t f s 4 0 142 "19 16 16 25" _null_ _null_ "{schema,nulls,tableforest,targetns}" _null_ schema_to_xml _null_ _null_ _null_ ));
+DATA(insert OID = 2933 ( schema_to_xml PGNSP PGUID 12 100 0 0 0 f f f t f s 4 0 142 "19 16 16 25" _null_ _null_ "{schema,nulls,tableforest,targetns}" _null_ schema_to_xml _null_ _null_ _null_ ));
DESCR("map schema contents to XML");
-DATA(insert OID = 2934 ( schema_to_xmlschema PGNSP PGUID 12 100 0 0 f f f t f s 4 0 142 "19 16 16 25" _null_ _null_ "{schema,nulls,tableforest,targetns}" _null_ schema_to_xmlschema _null_ _null_ _null_ ));
+DATA(insert OID = 2934 ( schema_to_xmlschema PGNSP PGUID 12 100 0 0 0 f f f t f s 4 0 142 "19 16 16 25" _null_ _null_ "{schema,nulls,tableforest,targetns}" _null_ schema_to_xmlschema _null_ _null_ _null_ ));
DESCR("map schema structure to XML Schema");
-DATA(insert OID = 2935 ( schema_to_xml_and_xmlschema PGNSP PGUID 12 100 0 0 f f f t f s 4 0 142 "19 16 16 25" _null_ _null_ "{schema,nulls,tableforest,targetns}" _null_ schema_to_xml_and_xmlschema _null_ _null_ _null_ ));
+DATA(insert OID = 2935 ( schema_to_xml_and_xmlschema PGNSP PGUID 12 100 0 0 0 f f f t f s 4 0 142 "19 16 16 25" _null_ _null_ "{schema,nulls,tableforest,targetns}" _null_ schema_to_xml_and_xmlschema _null_ _null_ _null_ ));
DESCR("map schema contents and structure to XML and XML Schema");
-DATA(insert OID = 2936 ( database_to_xml PGNSP PGUID 12 100 0 0 f f f t f s 3 0 142 "16 16 25" _null_ _null_ "{nulls,tableforest,targetns}" _null_ database_to_xml _null_ _null_ _null_ ));
+DATA(insert OID = 2936 ( database_to_xml PGNSP PGUID 12 100 0 0 0 f f f t f s 3 0 142 "16 16 25" _null_ _null_ "{nulls,tableforest,targetns}" _null_ database_to_xml _null_ _null_ _null_ ));
DESCR("map database contents to XML");
-DATA(insert OID = 2937 ( database_to_xmlschema PGNSP PGUID 12 100 0 0 f f f t f s 3 0 142 "16 16 25" _null_ _null_ "{nulls,tableforest,targetns}" _null_ database_to_xmlschema _null_ _null_ _null_ ));
+DATA(insert OID = 2937 ( database_to_xmlschema PGNSP PGUID 12 100 0 0 0 f f f t f s 3 0 142 "16 16 25" _null_ _null_ "{nulls,tableforest,targetns}" _null_ database_to_xmlschema _null_ _null_ _null_ ));
DESCR("map database structure to XML Schema");
-DATA(insert OID = 2938 ( database_to_xml_and_xmlschema PGNSP PGUID 12 100 0 0 f f f t f s 3 0 142 "16 16 25" _null_ _null_ "{nulls,tableforest,targetns}" _null_ database_to_xml_and_xmlschema _null_ _null_ _null_ ));
+DATA(insert OID = 2938 ( database_to_xml_and_xmlschema PGNSP PGUID 12 100 0 0 0 f f f t f s 3 0 142 "16 16 25" _null_ _null_ "{nulls,tableforest,targetns}" _null_ database_to_xml_and_xmlschema _null_ _null_ _null_ ));
DESCR("map database contents and structure to XML and XML Schema");
-DATA(insert OID = 2931 ( xpath PGNSP PGUID 12 1 0 0 f f f t f i 3 0 143 "25 142 1009" _null_ _null_ _null_ _null_ xpath _null_ _null_ _null_ ));
+DATA(insert OID = 2931 ( xpath PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 143 "25 142 1009" _null_ _null_ _null_ _null_ xpath _null_ _null_ _null_ ));
DESCR("evaluate XPath expression, with namespaces support");
-DATA(insert OID = 2932 ( xpath PGNSP PGUID 14 1 0 0 f f f t f i 2 0 143 "25 142" _null_ _null_ _null_ _null_ "select pg_catalog.xpath($1, $2, ''{}''::pg_catalog.text[])" _null_ _null_ _null_ ));
+DATA(insert OID = 2932 ( xpath PGNSP PGUID 14 1 0 0 0 f f f t f i 2 0 143 "25 142" _null_ _null_ _null_ _null_ "select pg_catalog.xpath($1, $2, ''{}''::pg_catalog.text[])" _null_ _null_ _null_ ));
DESCR("evaluate XPath expression");
-DATA(insert OID = 2614 ( xmlexists PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "25 142" _null_ _null_ _null_ _null_ xmlexists _null_ _null_ _null_ ));
+DATA(insert OID = 2614 ( xmlexists PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "25 142" _null_ _null_ _null_ _null_ xmlexists _null_ _null_ _null_ ));
DESCR("test XML value against XPath expression");
-DATA(insert OID = 3049 ( xpath_exists PGNSP PGUID 12 1 0 0 f f f t f i 3 0 16 "25 142 1009" _null_ _null_ _null_ _null_ xpath_exists _null_ _null_ _null_ ));
+DATA(insert OID = 3049 ( xpath_exists PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 16 "25 142 1009" _null_ _null_ _null_ _null_ xpath_exists _null_ _null_ _null_ ));
DESCR("test XML value against XPath expression, with namespace support");
-DATA(insert OID = 3050 ( xpath_exists PGNSP PGUID 14 1 0 0 f f f t f i 2 0 16 "25 142" _null_ _null_ _null_ _null_ "select pg_catalog.xpath_exists($1, $2, ''{}''::pg_catalog.text[])" _null_ _null_ _null_ ));
+DATA(insert OID = 3050 ( xpath_exists PGNSP PGUID 14 1 0 0 0 f f f t f i 2 0 16 "25 142" _null_ _null_ _null_ _null_ "select pg_catalog.xpath_exists($1, $2, ''{}''::pg_catalog.text[])" _null_ _null_ _null_ ));
DESCR("test XML value against XPath expression");
-DATA(insert OID = 3051 ( xml_is_well_formed PGNSP PGUID 12 1 0 0 f f f t f s 1 0 16 "25" _null_ _null_ _null_ _null_ xml_is_well_formed _null_ _null_ _null_ ));
+DATA(insert OID = 3051 ( xml_is_well_formed PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 16 "25" _null_ _null_ _null_ _null_ xml_is_well_formed _null_ _null_ _null_ ));
DESCR("determine if a string is well formed XML");
-DATA(insert OID = 3052 ( xml_is_well_formed_document PGNSP PGUID 12 1 0 0 f f f t f i 1 0 16 "25" _null_ _null_ _null_ _null_ xml_is_well_formed_document _null_ _null_ _null_ ));
+DATA(insert OID = 3052 ( xml_is_well_formed_document PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 16 "25" _null_ _null_ _null_ _null_ xml_is_well_formed_document _null_ _null_ _null_ ));
DESCR("determine if a string is well formed XML document");
-DATA(insert OID = 3053 ( xml_is_well_formed_content PGNSP PGUID 12 1 0 0 f f f t f i 1 0 16 "25" _null_ _null_ _null_ _null_ xml_is_well_formed_content _null_ _null_ _null_ ));
+DATA(insert OID = 3053 ( xml_is_well_formed_content PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 16 "25" _null_ _null_ _null_ _null_ xml_is_well_formed_content _null_ _null_ _null_ ));
DESCR("determine if a string is well formed XML content");
/* uuid */
-DATA(insert OID = 2952 ( uuid_in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2950 "2275" _null_ _null_ _null_ _null_ uuid_in _null_ _null_ _null_ ));
+DATA(insert OID = 2952 ( uuid_in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2950 "2275" _null_ _null_ _null_ _null_ uuid_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2953 ( uuid_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "2950" _null_ _null_ _null_ _null_ uuid_out _null_ _null_ _null_ ));
+DATA(insert OID = 2953 ( uuid_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "2950" _null_ _null_ _null_ _null_ uuid_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2954 ( uuid_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ uuid_lt _null_ _null_ _null_ ));
-DATA(insert OID = 2955 ( uuid_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ uuid_le _null_ _null_ _null_ ));
-DATA(insert OID = 2956 ( uuid_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ uuid_eq _null_ _null_ _null_ ));
-DATA(insert OID = 2957 ( uuid_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ uuid_ge _null_ _null_ _null_ ));
-DATA(insert OID = 2958 ( uuid_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ uuid_gt _null_ _null_ _null_ ));
-DATA(insert OID = 2959 ( uuid_ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ uuid_ne _null_ _null_ _null_ ));
-DATA(insert OID = 2960 ( uuid_cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "2950 2950" _null_ _null_ _null_ _null_ uuid_cmp _null_ _null_ _null_ ));
+DATA(insert OID = 2954 ( uuid_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ uuid_lt _null_ _null_ _null_ ));
+DATA(insert OID = 2955 ( uuid_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ uuid_le _null_ _null_ _null_ ));
+DATA(insert OID = 2956 ( uuid_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ uuid_eq _null_ _null_ _null_ ));
+DATA(insert OID = 2957 ( uuid_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ uuid_ge _null_ _null_ _null_ ));
+DATA(insert OID = 2958 ( uuid_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ uuid_gt _null_ _null_ _null_ ));
+DATA(insert OID = 2959 ( uuid_ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ uuid_ne _null_ _null_ _null_ ));
+DATA(insert OID = 2960 ( uuid_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "2950 2950" _null_ _null_ _null_ _null_ uuid_cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 2961 ( uuid_recv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2950 "2281" _null_ _null_ _null_ _null_ uuid_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2961 ( uuid_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2950 "2281" _null_ _null_ _null_ _null_ uuid_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2962 ( uuid_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "2950" _null_ _null_ _null_ _null_ uuid_send _null_ _null_ _null_ ));
+DATA(insert OID = 2962 ( uuid_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "2950" _null_ _null_ _null_ _null_ uuid_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2963 ( uuid_hash PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "2950" _null_ _null_ _null_ _null_ uuid_hash _null_ _null_ _null_ ));
+DATA(insert OID = 2963 ( uuid_hash PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "2950" _null_ _null_ _null_ _null_ uuid_hash _null_ _null_ _null_ ));
DESCR("hash");
/* enum related procs */
-DATA(insert OID = 3504 ( anyenum_in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 3500 "2275" _null_ _null_ _null_ _null_ anyenum_in _null_ _null_ _null_ ));
+DATA(insert OID = 3504 ( anyenum_in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 3500 "2275" _null_ _null_ _null_ _null_ anyenum_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3505 ( anyenum_out PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "3500" _null_ _null_ _null_ _null_ anyenum_out _null_ _null_ _null_ ));
+DATA(insert OID = 3505 ( anyenum_out PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "3500" _null_ _null_ _null_ _null_ anyenum_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3506 ( enum_in PGNSP PGUID 12 1 0 0 f f f t f s 2 0 3500 "2275 26" _null_ _null_ _null_ _null_ enum_in _null_ _null_ _null_ ));
+DATA(insert OID = 3506 ( enum_in PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 3500 "2275 26" _null_ _null_ _null_ _null_ enum_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3507 ( enum_out PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "3500" _null_ _null_ _null_ _null_ enum_out _null_ _null_ _null_ ));
+DATA(insert OID = 3507 ( enum_out PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "3500" _null_ _null_ _null_ _null_ enum_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3508 ( enum_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ enum_eq _null_ _null_ _null_ ));
-DATA(insert OID = 3509 ( enum_ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ enum_ne _null_ _null_ _null_ ));
-DATA(insert OID = 3510 ( enum_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ enum_lt _null_ _null_ _null_ ));
-DATA(insert OID = 3511 ( enum_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ enum_gt _null_ _null_ _null_ ));
-DATA(insert OID = 3512 ( enum_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ enum_le _null_ _null_ _null_ ));
-DATA(insert OID = 3513 ( enum_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ enum_ge _null_ _null_ _null_ ));
-DATA(insert OID = 3514 ( enum_cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "3500 3500" _null_ _null_ _null_ _null_ enum_cmp _null_ _null_ _null_ ));
+DATA(insert OID = 3508 ( enum_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ enum_eq _null_ _null_ _null_ ));
+DATA(insert OID = 3509 ( enum_ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ enum_ne _null_ _null_ _null_ ));
+DATA(insert OID = 3510 ( enum_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ enum_lt _null_ _null_ _null_ ));
+DATA(insert OID = 3511 ( enum_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ enum_gt _null_ _null_ _null_ ));
+DATA(insert OID = 3512 ( enum_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ enum_le _null_ _null_ _null_ ));
+DATA(insert OID = 3513 ( enum_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ enum_ge _null_ _null_ _null_ ));
+DATA(insert OID = 3514 ( enum_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "3500 3500" _null_ _null_ _null_ _null_ enum_cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 3515 ( hashenum PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "3500" _null_ _null_ _null_ _null_ hashenum _null_ _null_ _null_ ));
+DATA(insert OID = 3515 ( hashenum PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "3500" _null_ _null_ _null_ _null_ hashenum _null_ _null_ _null_ ));
DESCR("hash");
-DATA(insert OID = 3524 ( enum_smaller PGNSP PGUID 12 1 0 0 f f f t f i 2 0 3500 "3500 3500" _null_ _null_ _null_ _null_ enum_smaller _null_ _null_ _null_ ));
+DATA(insert OID = 3524 ( enum_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 3500 "3500 3500" _null_ _null_ _null_ _null_ enum_smaller _null_ _null_ _null_ ));
DESCR("smaller of two");
-DATA(insert OID = 3525 ( enum_larger PGNSP PGUID 12 1 0 0 f f f t f i 2 0 3500 "3500 3500" _null_ _null_ _null_ _null_ enum_larger _null_ _null_ _null_ ));
+DATA(insert OID = 3525 ( enum_larger PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 3500 "3500 3500" _null_ _null_ _null_ _null_ enum_larger _null_ _null_ _null_ ));
DESCR("larger of two");
-DATA(insert OID = 3526 ( max PGNSP PGUID 12 1 0 0 t f f f f i 1 0 3500 "3500" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 3526 ( max PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 3500 "3500" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("maximum value of all enum input values");
-DATA(insert OID = 3527 ( min PGNSP PGUID 12 1 0 0 t f f f f i 1 0 3500 "3500" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
+DATA(insert OID = 3527 ( min PGNSP PGUID 12 1 0 0 0 t f f f f i 1 0 3500 "3500" _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ ));
DESCR("minimum value of all enum input values");
-DATA(insert OID = 3528 ( enum_first PGNSP PGUID 12 1 0 0 f f f f f s 1 0 3500 "3500" _null_ _null_ _null_ _null_ enum_first _null_ _null_ _null_ ));
+DATA(insert OID = 3528 ( enum_first PGNSP PGUID 12 1 0 0 0 f f f f f s 1 0 3500 "3500" _null_ _null_ _null_ _null_ enum_first _null_ _null_ _null_ ));
DESCR("first value of the input enum type");
-DATA(insert OID = 3529 ( enum_last PGNSP PGUID 12 1 0 0 f f f f f s 1 0 3500 "3500" _null_ _null_ _null_ _null_ enum_last _null_ _null_ _null_ ));
+DATA(insert OID = 3529 ( enum_last PGNSP PGUID 12 1 0 0 0 f f f f f s 1 0 3500 "3500" _null_ _null_ _null_ _null_ enum_last _null_ _null_ _null_ ));
DESCR("last value of the input enum type");
-DATA(insert OID = 3530 ( enum_range PGNSP PGUID 12 1 0 0 f f f f f s 2 0 2277 "3500 3500" _null_ _null_ _null_ _null_ enum_range_bounds _null_ _null_ _null_ ));
+DATA(insert OID = 3530 ( enum_range PGNSP PGUID 12 1 0 0 0 f f f f f s 2 0 2277 "3500 3500" _null_ _null_ _null_ _null_ enum_range_bounds _null_ _null_ _null_ ));
DESCR("range between the two given enum values, as an ordered array");
-DATA(insert OID = 3531 ( enum_range PGNSP PGUID 12 1 0 0 f f f f f s 1 0 2277 "3500" _null_ _null_ _null_ _null_ enum_range_all _null_ _null_ _null_ ));
+DATA(insert OID = 3531 ( enum_range PGNSP PGUID 12 1 0 0 0 f f f f f s 1 0 2277 "3500" _null_ _null_ _null_ _null_ enum_range_all _null_ _null_ _null_ ));
DESCR("range of the given enum type, as an ordered array");
-DATA(insert OID = 3532 ( enum_recv PGNSP PGUID 12 1 0 0 f f f t f s 2 0 3500 "2275 26" _null_ _null_ _null_ _null_ enum_recv _null_ _null_ _null_ ));
+DATA(insert OID = 3532 ( enum_recv PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 3500 "2275 26" _null_ _null_ _null_ _null_ enum_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3533 ( enum_send PGNSP PGUID 12 1 0 0 f f f t f s 1 0 17 "3500" _null_ _null_ _null_ _null_ enum_send _null_ _null_ _null_ ));
+DATA(insert OID = 3533 ( enum_send PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 17 "3500" _null_ _null_ _null_ _null_ enum_send _null_ _null_ _null_ ));
DESCR("I/O");
/* text search stuff */
-DATA(insert OID = 3610 ( tsvectorin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 3614 "2275" _null_ _null_ _null_ _null_ tsvectorin _null_ _null_ _null_ ));
+DATA(insert OID = 3610 ( tsvectorin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 3614 "2275" _null_ _null_ _null_ _null_ tsvectorin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3639 ( tsvectorrecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 3614 "2281" _null_ _null_ _null_ _null_ tsvectorrecv _null_ _null_ _null_ ));
+DATA(insert OID = 3639 ( tsvectorrecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 3614 "2281" _null_ _null_ _null_ _null_ tsvectorrecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3611 ( tsvectorout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "3614" _null_ _null_ _null_ _null_ tsvectorout _null_ _null_ _null_ ));
+DATA(insert OID = 3611 ( tsvectorout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "3614" _null_ _null_ _null_ _null_ tsvectorout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3638 ( tsvectorsend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "3614" _null_ _null_ _null_ _null_ tsvectorsend _null_ _null_ _null_ ));
+DATA(insert OID = 3638 ( tsvectorsend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "3614" _null_ _null_ _null_ _null_ tsvectorsend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3612 ( tsqueryin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 3615 "2275" _null_ _null_ _null_ _null_ tsqueryin _null_ _null_ _null_ ));
+DATA(insert OID = 3612 ( tsqueryin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 3615 "2275" _null_ _null_ _null_ _null_ tsqueryin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3641 ( tsqueryrecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 3615 "2281" _null_ _null_ _null_ _null_ tsqueryrecv _null_ _null_ _null_ ));
+DATA(insert OID = 3641 ( tsqueryrecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 3615 "2281" _null_ _null_ _null_ _null_ tsqueryrecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3613 ( tsqueryout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "3615" _null_ _null_ _null_ _null_ tsqueryout _null_ _null_ _null_ ));
+DATA(insert OID = 3613 ( tsqueryout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "3615" _null_ _null_ _null_ _null_ tsqueryout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3640 ( tsquerysend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "3615" _null_ _null_ _null_ _null_ tsquerysend _null_ _null_ _null_ ));
+DATA(insert OID = 3640 ( tsquerysend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "3615" _null_ _null_ _null_ _null_ tsquerysend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3646 ( gtsvectorin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 3642 "2275" _null_ _null_ _null_ _null_ gtsvectorin _null_ _null_ _null_ ));
+DATA(insert OID = 3646 ( gtsvectorin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 3642 "2275" _null_ _null_ _null_ _null_ gtsvectorin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3647 ( gtsvectorout PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "3642" _null_ _null_ _null_ _null_ gtsvectorout _null_ _null_ _null_ ));
+DATA(insert OID = 3647 ( gtsvectorout PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "3642" _null_ _null_ _null_ _null_ gtsvectorout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3616 ( tsvector_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ tsvector_lt _null_ _null_ _null_ ));
-DATA(insert OID = 3617 ( tsvector_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ tsvector_le _null_ _null_ _null_ ));
-DATA(insert OID = 3618 ( tsvector_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ tsvector_eq _null_ _null_ _null_ ));
-DATA(insert OID = 3619 ( tsvector_ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ tsvector_ne _null_ _null_ _null_ ));
-DATA(insert OID = 3620 ( tsvector_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ tsvector_ge _null_ _null_ _null_ ));
-DATA(insert OID = 3621 ( tsvector_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ tsvector_gt _null_ _null_ _null_ ));
-DATA(insert OID = 3622 ( tsvector_cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "3614 3614" _null_ _null_ _null_ _null_ tsvector_cmp _null_ _null_ _null_ ));
+DATA(insert OID = 3616 ( tsvector_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ tsvector_lt _null_ _null_ _null_ ));
+DATA(insert OID = 3617 ( tsvector_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ tsvector_le _null_ _null_ _null_ ));
+DATA(insert OID = 3618 ( tsvector_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ tsvector_eq _null_ _null_ _null_ ));
+DATA(insert OID = 3619 ( tsvector_ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ tsvector_ne _null_ _null_ _null_ ));
+DATA(insert OID = 3620 ( tsvector_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ tsvector_ge _null_ _null_ _null_ ));
+DATA(insert OID = 3621 ( tsvector_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ tsvector_gt _null_ _null_ _null_ ));
+DATA(insert OID = 3622 ( tsvector_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "3614 3614" _null_ _null_ _null_ _null_ tsvector_cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 3711 ( length PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "3614" _null_ _null_ _null_ _null_ tsvector_length _null_ _null_ _null_ ));
+DATA(insert OID = 3711 ( length PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "3614" _null_ _null_ _null_ _null_ tsvector_length _null_ _null_ _null_ ));
DESCR("number of lexemes");
-DATA(insert OID = 3623 ( strip PGNSP PGUID 12 1 0 0 f f f t f i 1 0 3614 "3614" _null_ _null_ _null_ _null_ tsvector_strip _null_ _null_ _null_ ));
+DATA(insert OID = 3623 ( strip PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 3614 "3614" _null_ _null_ _null_ _null_ tsvector_strip _null_ _null_ _null_ ));
DESCR("strip position information");
-DATA(insert OID = 3624 ( setweight PGNSP PGUID 12 1 0 0 f f f t f i 2 0 3614 "3614 18" _null_ _null_ _null_ _null_ tsvector_setweight _null_ _null_ _null_ ));
+DATA(insert OID = 3624 ( setweight PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 3614 "3614 18" _null_ _null_ _null_ _null_ tsvector_setweight _null_ _null_ _null_ ));
DESCR("set weight of lexeme's entries");
-DATA(insert OID = 3625 ( tsvector_concat PGNSP PGUID 12 1 0 0 f f f t f i 2 0 3614 "3614 3614" _null_ _null_ _null_ _null_ tsvector_concat _null_ _null_ _null_ ));
+DATA(insert OID = 3625 ( tsvector_concat PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 3614 "3614 3614" _null_ _null_ _null_ _null_ tsvector_concat _null_ _null_ _null_ ));
-DATA(insert OID = 3634 ( ts_match_vq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "3614 3615" _null_ _null_ _null_ _null_ ts_match_vq _null_ _null_ _null_ ));
-DATA(insert OID = 3635 ( ts_match_qv PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "3615 3614" _null_ _null_ _null_ _null_ ts_match_qv _null_ _null_ _null_ ));
-DATA(insert OID = 3760 ( ts_match_tt PGNSP PGUID 12 3 0 0 f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ ts_match_tt _null_ _null_ _null_ ));
-DATA(insert OID = 3761 ( ts_match_tq PGNSP PGUID 12 2 0 0 f f f t f s 2 0 16 "25 3615" _null_ _null_ _null_ _null_ ts_match_tq _null_ _null_ _null_ ));
+DATA(insert OID = 3634 ( ts_match_vq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "3614 3615" _null_ _null_ _null_ _null_ ts_match_vq _null_ _null_ _null_ ));
+DATA(insert OID = 3635 ( ts_match_qv PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "3615 3614" _null_ _null_ _null_ _null_ ts_match_qv _null_ _null_ _null_ ));
+DATA(insert OID = 3760 ( ts_match_tt PGNSP PGUID 12 3 0 0 0 f f f t f s 2 0 16 "25 25" _null_ _null_ _null_ _null_ ts_match_tt _null_ _null_ _null_ ));
+DATA(insert OID = 3761 ( ts_match_tq PGNSP PGUID 12 2 0 0 0 f f f t f s 2 0 16 "25 3615" _null_ _null_ _null_ _null_ ts_match_tq _null_ _null_ _null_ ));
-DATA(insert OID = 3648 ( gtsvector_compress PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ gtsvector_compress _null_ _null_ _null_ ));
+DATA(insert OID = 3648 ( gtsvector_compress PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ gtsvector_compress _null_ _null_ _null_ ));
DESCR("GiST tsvector support");
-DATA(insert OID = 3649 ( gtsvector_decompress PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ gtsvector_decompress _null_ _null_ _null_ ));
+DATA(insert OID = 3649 ( gtsvector_decompress PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ gtsvector_decompress _null_ _null_ _null_ ));
DESCR("GiST tsvector support");
-DATA(insert OID = 3650 ( gtsvector_picksplit PGNSP PGUID 12 1 0 0 f f f t f i 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ gtsvector_picksplit _null_ _null_ _null_ ));
+DATA(insert OID = 3650 ( gtsvector_picksplit PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ gtsvector_picksplit _null_ _null_ _null_ ));
DESCR("GiST tsvector support");
-DATA(insert OID = 3651 ( gtsvector_union PGNSP PGUID 12 1 0 0 f f f t f i 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ gtsvector_union _null_ _null_ _null_ ));
+DATA(insert OID = 3651 ( gtsvector_union PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ gtsvector_union _null_ _null_ _null_ ));
DESCR("GiST tsvector support");
-DATA(insert OID = 3652 ( gtsvector_same PGNSP PGUID 12 1 0 0 f f f t f i 3 0 2281 "3642 3642 2281" _null_ _null_ _null_ _null_ gtsvector_same _null_ _null_ _null_ ));
+DATA(insert OID = 3652 ( gtsvector_same PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 2281 "3642 3642 2281" _null_ _null_ _null_ _null_ gtsvector_same _null_ _null_ _null_ ));
DESCR("GiST tsvector support");
-DATA(insert OID = 3653 ( gtsvector_penalty PGNSP PGUID 12 1 0 0 f f f t f i 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ gtsvector_penalty _null_ _null_ _null_ ));
+DATA(insert OID = 3653 ( gtsvector_penalty PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ gtsvector_penalty _null_ _null_ _null_ ));
DESCR("GiST tsvector support");
-DATA(insert OID = 3654 ( gtsvector_consistent PGNSP PGUID 12 1 0 0 f f f t f i 5 0 16 "2281 3642 23 26 2281" _null_ _null_ _null_ _null_ gtsvector_consistent _null_ _null_ _null_ ));
+DATA(insert OID = 3654 ( gtsvector_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i 5 0 16 "2281 3642 23 26 2281" _null_ _null_ _null_ _null_ gtsvector_consistent _null_ _null_ _null_ ));
DESCR("GiST tsvector support");
-DATA(insert OID = 3656 ( gin_extract_tsvector PGNSP PGUID 12 1 0 0 f f f t f i 3 0 2281 "3614 2281 2281" _null_ _null_ _null_ _null_ gin_extract_tsvector _null_ _null_ _null_ ));
+DATA(insert OID = 3656 ( gin_extract_tsvector PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 2281 "3614 2281 2281" _null_ _null_ _null_ _null_ gin_extract_tsvector _null_ _null_ _null_ ));
DESCR("GIN tsvector support");
-DATA(insert OID = 3657 ( gin_extract_tsquery PGNSP PGUID 12 1 0 0 f f f t f i 7 0 2281 "3615 2281 21 2281 2281 2281 2281" _null_ _null_ _null_ _null_ gin_extract_tsquery _null_ _null_ _null_ ));
+DATA(insert OID = 3657 ( gin_extract_tsquery PGNSP PGUID 12 1 0 0 0 f f f t f i 7 0 2281 "3615 2281 21 2281 2281 2281 2281" _null_ _null_ _null_ _null_ gin_extract_tsquery _null_ _null_ _null_ ));
DESCR("GIN tsvector support");
-DATA(insert OID = 3658 ( gin_tsquery_consistent PGNSP PGUID 12 1 0 0 f f f t f i 8 0 16 "2281 21 3615 23 2281 2281 2281 2281" _null_ _null_ _null_ _null_ gin_tsquery_consistent _null_ _null_ _null_ ));
+DATA(insert OID = 3658 ( gin_tsquery_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i 8 0 16 "2281 21 3615 23 2281 2281 2281 2281" _null_ _null_ _null_ _null_ gin_tsquery_consistent _null_ _null_ _null_ ));
DESCR("GIN tsvector support");
-DATA(insert OID = 3724 ( gin_cmp_tslexeme PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "25 25" _null_ _null_ _null_ _null_ gin_cmp_tslexeme _null_ _null_ _null_ ));
+DATA(insert OID = 3724 ( gin_cmp_tslexeme PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "25 25" _null_ _null_ _null_ _null_ gin_cmp_tslexeme _null_ _null_ _null_ ));
DESCR("GIN tsvector support");
-DATA(insert OID = 2700 ( gin_cmp_prefix PGNSP PGUID 12 1 0 0 f f f t f i 4 0 23 "25 25 21 2281" _null_ _null_ _null_ _null_ gin_cmp_prefix _null_ _null_ _null_ ));
+DATA(insert OID = 2700 ( gin_cmp_prefix PGNSP PGUID 12 1 0 0 0 f f f t f i 4 0 23 "25 25 21 2281" _null_ _null_ _null_ _null_ gin_cmp_prefix _null_ _null_ _null_ ));
DESCR("GIN tsvector support");
-DATA(insert OID = 3077 ( gin_extract_tsvector PGNSP PGUID 12 1 0 0 f f f t f i 2 0 2281 "3614 2281" _null_ _null_ _null_ _null_ gin_extract_tsvector_2args _null_ _null_ _null_ ));
+DATA(insert OID = 3077 ( gin_extract_tsvector PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 2281 "3614 2281" _null_ _null_ _null_ _null_ gin_extract_tsvector_2args _null_ _null_ _null_ ));
DESCR("GIN tsvector support (obsolete)");
-DATA(insert OID = 3087 ( gin_extract_tsquery PGNSP PGUID 12 1 0 0 f f f t f i 5 0 2281 "3615 2281 21 2281 2281" _null_ _null_ _null_ _null_ gin_extract_tsquery_5args _null_ _null_ _null_ ));
+DATA(insert OID = 3087 ( gin_extract_tsquery PGNSP PGUID 12 1 0 0 0 f f f t f i 5 0 2281 "3615 2281 21 2281 2281" _null_ _null_ _null_ _null_ gin_extract_tsquery_5args _null_ _null_ _null_ ));
DESCR("GIN tsvector support (obsolete)");
-DATA(insert OID = 3088 ( gin_tsquery_consistent PGNSP PGUID 12 1 0 0 f f f t f i 6 0 16 "2281 21 3615 23 2281 2281" _null_ _null_ _null_ _null_ gin_tsquery_consistent_6args _null_ _null_ _null_ ));
+DATA(insert OID = 3088 ( gin_tsquery_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i 6 0 16 "2281 21 3615 23 2281 2281" _null_ _null_ _null_ _null_ gin_tsquery_consistent_6args _null_ _null_ _null_ ));
DESCR("GIN tsvector support (obsolete)");
-DATA(insert OID = 3662 ( tsquery_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ tsquery_lt _null_ _null_ _null_ ));
-DATA(insert OID = 3663 ( tsquery_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ tsquery_le _null_ _null_ _null_ ));
-DATA(insert OID = 3664 ( tsquery_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ tsquery_eq _null_ _null_ _null_ ));
-DATA(insert OID = 3665 ( tsquery_ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ tsquery_ne _null_ _null_ _null_ ));
-DATA(insert OID = 3666 ( tsquery_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ tsquery_ge _null_ _null_ _null_ ));
-DATA(insert OID = 3667 ( tsquery_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ tsquery_gt _null_ _null_ _null_ ));
-DATA(insert OID = 3668 ( tsquery_cmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "3615 3615" _null_ _null_ _null_ _null_ tsquery_cmp _null_ _null_ _null_ ));
+DATA(insert OID = 3662 ( tsquery_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ tsquery_lt _null_ _null_ _null_ ));
+DATA(insert OID = 3663 ( tsquery_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ tsquery_le _null_ _null_ _null_ ));
+DATA(insert OID = 3664 ( tsquery_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ tsquery_eq _null_ _null_ _null_ ));
+DATA(insert OID = 3665 ( tsquery_ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ tsquery_ne _null_ _null_ _null_ ));
+DATA(insert OID = 3666 ( tsquery_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ tsquery_ge _null_ _null_ _null_ ));
+DATA(insert OID = 3667 ( tsquery_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ tsquery_gt _null_ _null_ _null_ ));
+DATA(insert OID = 3668 ( tsquery_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "3615 3615" _null_ _null_ _null_ _null_ tsquery_cmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
-DATA(insert OID = 3669 ( tsquery_and PGNSP PGUID 12 1 0 0 f f f t f i 2 0 3615 "3615 3615" _null_ _null_ _null_ _null_ tsquery_and _null_ _null_ _null_ ));
-DATA(insert OID = 3670 ( tsquery_or PGNSP PGUID 12 1 0 0 f f f t f i 2 0 3615 "3615 3615" _null_ _null_ _null_ _null_ tsquery_or _null_ _null_ _null_ ));
-DATA(insert OID = 3671 ( tsquery_not PGNSP PGUID 12 1 0 0 f f f t f i 1 0 3615 "3615" _null_ _null_ _null_ _null_ tsquery_not _null_ _null_ _null_ ));
+DATA(insert OID = 3669 ( tsquery_and PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 3615 "3615 3615" _null_ _null_ _null_ _null_ tsquery_and _null_ _null_ _null_ ));
+DATA(insert OID = 3670 ( tsquery_or PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 3615 "3615 3615" _null_ _null_ _null_ _null_ tsquery_or _null_ _null_ _null_ ));
+DATA(insert OID = 3671 ( tsquery_not PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 3615 "3615" _null_ _null_ _null_ _null_ tsquery_not _null_ _null_ _null_ ));
-DATA(insert OID = 3691 ( tsq_mcontains PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ tsq_mcontains _null_ _null_ _null_ ));
-DATA(insert OID = 3692 ( tsq_mcontained PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ tsq_mcontained _null_ _null_ _null_ ));
+DATA(insert OID = 3691 ( tsq_mcontains PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ tsq_mcontains _null_ _null_ _null_ ));
+DATA(insert OID = 3692 ( tsq_mcontained PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ tsq_mcontained _null_ _null_ _null_ ));
-DATA(insert OID = 3672 ( numnode PGNSP PGUID 12 1 0 0 f f f t f i 1 0 23 "3615" _null_ _null_ _null_ _null_ tsquery_numnode _null_ _null_ _null_ ));
+DATA(insert OID = 3672 ( numnode PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 23 "3615" _null_ _null_ _null_ _null_ tsquery_numnode _null_ _null_ _null_ ));
DESCR("number of nodes");
-DATA(insert OID = 3673 ( querytree PGNSP PGUID 12 1 0 0 f f f t f i 1 0 25 "3615" _null_ _null_ _null_ _null_ tsquerytree _null_ _null_ _null_ ));
+DATA(insert OID = 3673 ( querytree PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 25 "3615" _null_ _null_ _null_ _null_ tsquerytree _null_ _null_ _null_ ));
DESCR("show real useful query for GiST index");
-DATA(insert OID = 3684 ( ts_rewrite PGNSP PGUID 12 1 0 0 f f f t f i 3 0 3615 "3615 3615 3615" _null_ _null_ _null_ _null_ tsquery_rewrite _null_ _null_ _null_ ));
+DATA(insert OID = 3684 ( ts_rewrite PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 3615 "3615 3615 3615" _null_ _null_ _null_ _null_ tsquery_rewrite _null_ _null_ _null_ ));
DESCR("rewrite tsquery");
-DATA(insert OID = 3685 ( ts_rewrite PGNSP PGUID 12 1 0 0 f f f t f v 2 0 3615 "3615 25" _null_ _null_ _null_ _null_ tsquery_rewrite_query _null_ _null_ _null_ ));
+DATA(insert OID = 3685 ( ts_rewrite PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 3615 "3615 25" _null_ _null_ _null_ _null_ tsquery_rewrite_query _null_ _null_ _null_ ));
DESCR("rewrite tsquery");
-DATA(insert OID = 3695 ( gtsquery_compress PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ gtsquery_compress _null_ _null_ _null_ ));
+DATA(insert OID = 3695 ( gtsquery_compress PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ gtsquery_compress _null_ _null_ _null_ ));
DESCR("GiST tsquery support");
-DATA(insert OID = 3696 ( gtsquery_decompress PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ gtsquery_decompress _null_ _null_ _null_ ));
+DATA(insert OID = 3696 ( gtsquery_decompress PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ gtsquery_decompress _null_ _null_ _null_ ));
DESCR("GiST tsquery support");
-DATA(insert OID = 3697 ( gtsquery_picksplit PGNSP PGUID 12 1 0 0 f f f t f i 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ gtsquery_picksplit _null_ _null_ _null_ ));
+DATA(insert OID = 3697 ( gtsquery_picksplit PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ gtsquery_picksplit _null_ _null_ _null_ ));
DESCR("GiST tsquery support");
-DATA(insert OID = 3698 ( gtsquery_union PGNSP PGUID 12 1 0 0 f f f t f i 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ gtsquery_union _null_ _null_ _null_ ));
+DATA(insert OID = 3698 ( gtsquery_union PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ gtsquery_union _null_ _null_ _null_ ));
DESCR("GiST tsquery support");
-DATA(insert OID = 3699 ( gtsquery_same PGNSP PGUID 12 1 0 0 f f f t f i 3 0 2281 "20 20 2281" _null_ _null_ _null_ _null_ gtsquery_same _null_ _null_ _null_ ));
+DATA(insert OID = 3699 ( gtsquery_same PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 2281 "20 20 2281" _null_ _null_ _null_ _null_ gtsquery_same _null_ _null_ _null_ ));
DESCR("GiST tsquery support");
-DATA(insert OID = 3700 ( gtsquery_penalty PGNSP PGUID 12 1 0 0 f f f t f i 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ gtsquery_penalty _null_ _null_ _null_ ));
+DATA(insert OID = 3700 ( gtsquery_penalty PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ gtsquery_penalty _null_ _null_ _null_ ));
DESCR("GiST tsquery support");
-DATA(insert OID = 3701 ( gtsquery_consistent PGNSP PGUID 12 1 0 0 f f f t f i 5 0 16 "2281 2281 23 26 2281" _null_ _null_ _null_ _null_ gtsquery_consistent _null_ _null_ _null_ ));
+DATA(insert OID = 3701 ( gtsquery_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i 5 0 16 "2281 2281 23 26 2281" _null_ _null_ _null_ _null_ gtsquery_consistent _null_ _null_ _null_ ));
DESCR("GiST tsquery support");
-DATA(insert OID = 3686 ( tsmatchsel PGNSP PGUID 12 1 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ tsmatchsel _null_ _null_ _null_ ));
+DATA(insert OID = 3686 ( tsmatchsel PGNSP PGUID 12 1 0 0 0 f f f t f s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ tsmatchsel _null_ _null_ _null_ ));
DESCR("restriction selectivity of tsvector @@ tsquery");
-DATA(insert OID = 3687 ( tsmatchjoinsel PGNSP PGUID 12 1 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ tsmatchjoinsel _null_ _null_ _null_ ));
+DATA(insert OID = 3687 ( tsmatchjoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ tsmatchjoinsel _null_ _null_ _null_ ));
DESCR("join selectivity of tsvector @@ tsquery");
-DATA(insert OID = 3688 ( ts_typanalyze PGNSP PGUID 12 1 0 0 f f f t f s 1 0 16 "2281" _null_ _null_ _null_ _null_ ts_typanalyze _null_ _null_ _null_ ));
+DATA(insert OID = 3688 ( ts_typanalyze PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 16 "2281" _null_ _null_ _null_ _null_ ts_typanalyze _null_ _null_ _null_ ));
DESCR("tsvector typanalyze");
-DATA(insert OID = 3689 ( ts_stat PGNSP PGUID 12 10 10000 0 f f f t t v 1 0 2249 "25" "{25,25,23,23}" "{i,o,o,o}" "{query,word,ndoc,nentry}" _null_ ts_stat1 _null_ _null_ _null_ ));
+DATA(insert OID = 3689 ( ts_stat PGNSP PGUID 12 10 10000 0 0 f f f t t v 1 0 2249 "25" "{25,25,23,23}" "{i,o,o,o}" "{query,word,ndoc,nentry}" _null_ ts_stat1 _null_ _null_ _null_ ));
DESCR("statistics of tsvector column");
-DATA(insert OID = 3690 ( ts_stat PGNSP PGUID 12 10 10000 0 f f f t t v 2 0 2249 "25 25" "{25,25,25,23,23}" "{i,i,o,o,o}" "{query,weights,word,ndoc,nentry}" _null_ ts_stat2 _null_ _null_ _null_ ));
+DATA(insert OID = 3690 ( ts_stat PGNSP PGUID 12 10 10000 0 0 f f f t t v 2 0 2249 "25 25" "{25,25,25,23,23}" "{i,i,o,o,o}" "{query,weights,word,ndoc,nentry}" _null_ ts_stat2 _null_ _null_ _null_ ));
DESCR("statistics of tsvector column");
-DATA(insert OID = 3703 ( ts_rank PGNSP PGUID 12 1 0 0 f f f t f i 4 0 700 "1021 3614 3615 23" _null_ _null_ _null_ _null_ ts_rank_wttf _null_ _null_ _null_ ));
+DATA(insert OID = 3703 ( ts_rank PGNSP PGUID 12 1 0 0 0 f f f t f i 4 0 700 "1021 3614 3615 23" _null_ _null_ _null_ _null_ ts_rank_wttf _null_ _null_ _null_ ));
DESCR("relevance");
-DATA(insert OID = 3704 ( ts_rank PGNSP PGUID 12 1 0 0 f f f t f i 3 0 700 "1021 3614 3615" _null_ _null_ _null_ _null_ ts_rank_wtt _null_ _null_ _null_ ));
+DATA(insert OID = 3704 ( ts_rank PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 700 "1021 3614 3615" _null_ _null_ _null_ _null_ ts_rank_wtt _null_ _null_ _null_ ));
DESCR("relevance");
-DATA(insert OID = 3705 ( ts_rank PGNSP PGUID 12 1 0 0 f f f t f i 3 0 700 "3614 3615 23" _null_ _null_ _null_ _null_ ts_rank_ttf _null_ _null_ _null_ ));
+DATA(insert OID = 3705 ( ts_rank PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 700 "3614 3615 23" _null_ _null_ _null_ _null_ ts_rank_ttf _null_ _null_ _null_ ));
DESCR("relevance");
-DATA(insert OID = 3706 ( ts_rank PGNSP PGUID 12 1 0 0 f f f t f i 2 0 700 "3614 3615" _null_ _null_ _null_ _null_ ts_rank_tt _null_ _null_ _null_ ));
+DATA(insert OID = 3706 ( ts_rank PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 700 "3614 3615" _null_ _null_ _null_ _null_ ts_rank_tt _null_ _null_ _null_ ));
DESCR("relevance");
-DATA(insert OID = 3707 ( ts_rank_cd PGNSP PGUID 12 1 0 0 f f f t f i 4 0 700 "1021 3614 3615 23" _null_ _null_ _null_ _null_ ts_rankcd_wttf _null_ _null_ _null_ ));
+DATA(insert OID = 3707 ( ts_rank_cd PGNSP PGUID 12 1 0 0 0 f f f t f i 4 0 700 "1021 3614 3615 23" _null_ _null_ _null_ _null_ ts_rankcd_wttf _null_ _null_ _null_ ));
DESCR("relevance");
-DATA(insert OID = 3708 ( ts_rank_cd PGNSP PGUID 12 1 0 0 f f f t f i 3 0 700 "1021 3614 3615" _null_ _null_ _null_ _null_ ts_rankcd_wtt _null_ _null_ _null_ ));
+DATA(insert OID = 3708 ( ts_rank_cd PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 700 "1021 3614 3615" _null_ _null_ _null_ _null_ ts_rankcd_wtt _null_ _null_ _null_ ));
DESCR("relevance");
-DATA(insert OID = 3709 ( ts_rank_cd PGNSP PGUID 12 1 0 0 f f f t f i 3 0 700 "3614 3615 23" _null_ _null_ _null_ _null_ ts_rankcd_ttf _null_ _null_ _null_ ));
+DATA(insert OID = 3709 ( ts_rank_cd PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 700 "3614 3615 23" _null_ _null_ _null_ _null_ ts_rankcd_ttf _null_ _null_ _null_ ));
DESCR("relevance");
-DATA(insert OID = 3710 ( ts_rank_cd PGNSP PGUID 12 1 0 0 f f f t f i 2 0 700 "3614 3615" _null_ _null_ _null_ _null_ ts_rankcd_tt _null_ _null_ _null_ ));
+DATA(insert OID = 3710 ( ts_rank_cd PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 700 "3614 3615" _null_ _null_ _null_ _null_ ts_rankcd_tt _null_ _null_ _null_ ));
DESCR("relevance");
-DATA(insert OID = 3713 ( ts_token_type PGNSP PGUID 12 1 16 0 f f f t t i 1 0 2249 "26" "{26,23,25,25}" "{i,o,o,o}" "{parser_oid,tokid,alias,description}" _null_ ts_token_type_byid _null_ _null_ _null_ ));
+DATA(insert OID = 3713 ( ts_token_type PGNSP PGUID 12 1 16 0 0 f f f t t i 1 0 2249 "26" "{26,23,25,25}" "{i,o,o,o}" "{parser_oid,tokid,alias,description}" _null_ ts_token_type_byid _null_ _null_ _null_ ));
DESCR("get parser's token types");
-DATA(insert OID = 3714 ( ts_token_type PGNSP PGUID 12 1 16 0 f f f t t s 1 0 2249 "25" "{25,23,25,25}" "{i,o,o,o}" "{parser_name,tokid,alias,description}" _null_ ts_token_type_byname _null_ _null_ _null_ ));
+DATA(insert OID = 3714 ( ts_token_type PGNSP PGUID 12 1 16 0 0 f f f t t s 1 0 2249 "25" "{25,23,25,25}" "{i,o,o,o}" "{parser_name,tokid,alias,description}" _null_ ts_token_type_byname _null_ _null_ _null_ ));
DESCR("get parser's token types");
-DATA(insert OID = 3715 ( ts_parse PGNSP PGUID 12 1 1000 0 f f f t t i 2 0 2249 "26 25" "{26,25,23,25}" "{i,i,o,o}" "{parser_oid,txt,tokid,token}" _null_ ts_parse_byid _null_ _null_ _null_ ));
+DATA(insert OID = 3715 ( ts_parse PGNSP PGUID 12 1 1000 0 0 f f f t t i 2 0 2249 "26 25" "{26,25,23,25}" "{i,i,o,o}" "{parser_oid,txt,tokid,token}" _null_ ts_parse_byid _null_ _null_ _null_ ));
DESCR("parse text to tokens");
-DATA(insert OID = 3716 ( ts_parse PGNSP PGUID 12 1 1000 0 f f f t t s 2 0 2249 "25 25" "{25,25,23,25}" "{i,i,o,o}" "{parser_name,txt,tokid,token}" _null_ ts_parse_byname _null_ _null_ _null_ ));
+DATA(insert OID = 3716 ( ts_parse PGNSP PGUID 12 1 1000 0 0 f f f t t s 2 0 2249 "25 25" "{25,25,23,25}" "{i,i,o,o}" "{parser_name,txt,tokid,token}" _null_ ts_parse_byname _null_ _null_ _null_ ));
DESCR("parse text to tokens");
-DATA(insert OID = 3717 ( prsd_start PGNSP PGUID 12 1 0 0 f f f t f i 2 0 2281 "2281 23" _null_ _null_ _null_ _null_ prsd_start _null_ _null_ _null_ ));
+DATA(insert OID = 3717 ( prsd_start PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 2281 "2281 23" _null_ _null_ _null_ _null_ prsd_start _null_ _null_ _null_ ));
DESCR("(internal)");
-DATA(insert OID = 3718 ( prsd_nexttoken PGNSP PGUID 12 1 0 0 f f f t f i 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ prsd_nexttoken _null_ _null_ _null_ ));
+DATA(insert OID = 3718 ( prsd_nexttoken PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ prsd_nexttoken _null_ _null_ _null_ ));
DESCR("(internal)");
-DATA(insert OID = 3719 ( prsd_end PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2278 "2281" _null_ _null_ _null_ _null_ prsd_end _null_ _null_ _null_ ));
+DATA(insert OID = 3719 ( prsd_end PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2278 "2281" _null_ _null_ _null_ _null_ prsd_end _null_ _null_ _null_ ));
DESCR("(internal)");
-DATA(insert OID = 3720 ( prsd_headline PGNSP PGUID 12 1 0 0 f f f t f i 3 0 2281 "2281 2281 3615" _null_ _null_ _null_ _null_ prsd_headline _null_ _null_ _null_ ));
+DATA(insert OID = 3720 ( prsd_headline PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 2281 "2281 2281 3615" _null_ _null_ _null_ _null_ prsd_headline _null_ _null_ _null_ ));
DESCR("(internal)");
-DATA(insert OID = 3721 ( prsd_lextype PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ prsd_lextype _null_ _null_ _null_ ));
+DATA(insert OID = 3721 ( prsd_lextype PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ prsd_lextype _null_ _null_ _null_ ));
DESCR("(internal)");
-DATA(insert OID = 3723 ( ts_lexize PGNSP PGUID 12 1 0 0 f f f t f i 2 0 1009 "3769 25" _null_ _null_ _null_ _null_ ts_lexize _null_ _null_ _null_ ));
+DATA(insert OID = 3723 ( ts_lexize PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 1009 "3769 25" _null_ _null_ _null_ _null_ ts_lexize _null_ _null_ _null_ ));
DESCR("normalize one word by dictionary");
-DATA(insert OID = 3725 ( dsimple_init PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ dsimple_init _null_ _null_ _null_ ));
+DATA(insert OID = 3725 ( dsimple_init PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ dsimple_init _null_ _null_ _null_ ));
DESCR("(internal)");
-DATA(insert OID = 3726 ( dsimple_lexize PGNSP PGUID 12 1 0 0 f f f t f i 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ dsimple_lexize _null_ _null_ _null_ ));
+DATA(insert OID = 3726 ( dsimple_lexize PGNSP PGUID 12 1 0 0 0 f f f t f i 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ dsimple_lexize _null_ _null_ _null_ ));
DESCR("(internal)");
-DATA(insert OID = 3728 ( dsynonym_init PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ dsynonym_init _null_ _null_ _null_ ));
+DATA(insert OID = 3728 ( dsynonym_init PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ dsynonym_init _null_ _null_ _null_ ));
DESCR("(internal)");
-DATA(insert OID = 3729 ( dsynonym_lexize PGNSP PGUID 12 1 0 0 f f f t f i 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ dsynonym_lexize _null_ _null_ _null_ ));
+DATA(insert OID = 3729 ( dsynonym_lexize PGNSP PGUID 12 1 0 0 0 f f f t f i 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ dsynonym_lexize _null_ _null_ _null_ ));
DESCR("(internal)");
-DATA(insert OID = 3731 ( dispell_init PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ dispell_init _null_ _null_ _null_ ));
+DATA(insert OID = 3731 ( dispell_init PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ dispell_init _null_ _null_ _null_ ));
DESCR("(internal)");
-DATA(insert OID = 3732 ( dispell_lexize PGNSP PGUID 12 1 0 0 f f f t f i 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ dispell_lexize _null_ _null_ _null_ ));
+DATA(insert OID = 3732 ( dispell_lexize PGNSP PGUID 12 1 0 0 0 f f f t f i 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ dispell_lexize _null_ _null_ _null_ ));
DESCR("(internal)");
-DATA(insert OID = 3740 ( thesaurus_init PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ thesaurus_init _null_ _null_ _null_ ));
+DATA(insert OID = 3740 ( thesaurus_init PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2281 "2281" _null_ _null_ _null_ _null_ thesaurus_init _null_ _null_ _null_ ));
DESCR("(internal)");
-DATA(insert OID = 3741 ( thesaurus_lexize PGNSP PGUID 12 1 0 0 f f f t f i 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ thesaurus_lexize _null_ _null_ _null_ ));
+DATA(insert OID = 3741 ( thesaurus_lexize PGNSP PGUID 12 1 0 0 0 f f f t f i 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ thesaurus_lexize _null_ _null_ _null_ ));
DESCR("(internal)");
-DATA(insert OID = 3743 ( ts_headline PGNSP PGUID 12 1 0 0 f f f t f i 4 0 25 "3734 25 3615 25" _null_ _null_ _null_ _null_ ts_headline_byid_opt _null_ _null_ _null_ ));
+DATA(insert OID = 3743 ( ts_headline PGNSP PGUID 12 1 0 0 0 f f f t f i 4 0 25 "3734 25 3615 25" _null_ _null_ _null_ _null_ ts_headline_byid_opt _null_ _null_ _null_ ));
DESCR("generate headline");
-DATA(insert OID = 3744 ( ts_headline PGNSP PGUID 12 1 0 0 f f f t f i 3 0 25 "3734 25 3615" _null_ _null_ _null_ _null_ ts_headline_byid _null_ _null_ _null_ ));
+DATA(insert OID = 3744 ( ts_headline PGNSP PGUID 12 1 0 0 0 f f f t f i 3 0 25 "3734 25 3615" _null_ _null_ _null_ _null_ ts_headline_byid _null_ _null_ _null_ ));
DESCR("generate headline");
-DATA(insert OID = 3754 ( ts_headline PGNSP PGUID 12 1 0 0 f f f t f s 3 0 25 "25 3615 25" _null_ _null_ _null_ _null_ ts_headline_opt _null_ _null_ _null_ ));
+DATA(insert OID = 3754 ( ts_headline PGNSP PGUID 12 1 0 0 0 f f f t f s 3 0 25 "25 3615 25" _null_ _null_ _null_ _null_ ts_headline_opt _null_ _null_ _null_ ));
DESCR("generate headline");
-DATA(insert OID = 3755 ( ts_headline PGNSP PGUID 12 1 0 0 f f f t f s 2 0 25 "25 3615" _null_ _null_ _null_ _null_ ts_headline _null_ _null_ _null_ ));
+DATA(insert OID = 3755 ( ts_headline PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 25 "25 3615" _null_ _null_ _null_ _null_ ts_headline _null_ _null_ _null_ ));
DESCR("generate headline");
-DATA(insert OID = 3745 ( to_tsvector PGNSP PGUID 12 1 0 0 f f f t f i 2 0 3614 "3734 25" _null_ _null_ _null_ _null_ to_tsvector_byid _null_ _null_ _null_ ));
+DATA(insert OID = 3745 ( to_tsvector PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 3614 "3734 25" _null_ _null_ _null_ _null_ to_tsvector_byid _null_ _null_ _null_ ));
DESCR("transform to tsvector");
-DATA(insert OID = 3746 ( to_tsquery PGNSP PGUID 12 1 0 0 f f f t f i 2 0 3615 "3734 25" _null_ _null_ _null_ _null_ to_tsquery_byid _null_ _null_ _null_ ));
+DATA(insert OID = 3746 ( to_tsquery PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 3615 "3734 25" _null_ _null_ _null_ _null_ to_tsquery_byid _null_ _null_ _null_ ));
DESCR("make tsquery");
-DATA(insert OID = 3747 ( plainto_tsquery PGNSP PGUID 12 1 0 0 f f f t f i 2 0 3615 "3734 25" _null_ _null_ _null_ _null_ plainto_tsquery_byid _null_ _null_ _null_ ));
+DATA(insert OID = 3747 ( plainto_tsquery PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 3615 "3734 25" _null_ _null_ _null_ _null_ plainto_tsquery_byid _null_ _null_ _null_ ));
DESCR("transform to tsquery");
-DATA(insert OID = 3749 ( to_tsvector PGNSP PGUID 12 1 0 0 f f f t f s 1 0 3614 "25" _null_ _null_ _null_ _null_ to_tsvector _null_ _null_ _null_ ));
+DATA(insert OID = 3749 ( to_tsvector PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 3614 "25" _null_ _null_ _null_ _null_ to_tsvector _null_ _null_ _null_ ));
DESCR("transform to tsvector");
-DATA(insert OID = 3750 ( to_tsquery PGNSP PGUID 12 1 0 0 f f f t f s 1 0 3615 "25" _null_ _null_ _null_ _null_ to_tsquery _null_ _null_ _null_ ));
+DATA(insert OID = 3750 ( to_tsquery PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 3615 "25" _null_ _null_ _null_ _null_ to_tsquery _null_ _null_ _null_ ));
DESCR("make tsquery");
-DATA(insert OID = 3751 ( plainto_tsquery PGNSP PGUID 12 1 0 0 f f f t f s 1 0 3615 "25" _null_ _null_ _null_ _null_ plainto_tsquery _null_ _null_ _null_ ));
+DATA(insert OID = 3751 ( plainto_tsquery PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 3615 "25" _null_ _null_ _null_ _null_ plainto_tsquery _null_ _null_ _null_ ));
DESCR("transform to tsquery");
-DATA(insert OID = 3752 ( tsvector_update_trigger PGNSP PGUID 12 1 0 0 f f f f f v 0 0 2279 "" _null_ _null_ _null_ _null_ tsvector_update_trigger_byid _null_ _null_ _null_ ));
+DATA(insert OID = 3752 ( tsvector_update_trigger PGNSP PGUID 12 1 0 0 0 f f f f f v 0 0 2279 "" _null_ _null_ _null_ _null_ tsvector_update_trigger_byid _null_ _null_ _null_ ));
DESCR("trigger for automatic update of tsvector column");
-DATA(insert OID = 3753 ( tsvector_update_trigger_column PGNSP PGUID 12 1 0 0 f f f f f v 0 0 2279 "" _null_ _null_ _null_ _null_ tsvector_update_trigger_bycolumn _null_ _null_ _null_ ));
+DATA(insert OID = 3753 ( tsvector_update_trigger_column PGNSP PGUID 12 1 0 0 0 f f f f f v 0 0 2279 "" _null_ _null_ _null_ _null_ tsvector_update_trigger_bycolumn _null_ _null_ _null_ ));
DESCR("trigger for automatic update of tsvector column");
-DATA(insert OID = 3759 ( get_current_ts_config PGNSP PGUID 12 1 0 0 f f f t f s 0 0 3734 "" _null_ _null_ _null_ _null_ get_current_ts_config _null_ _null_ _null_ ));
+DATA(insert OID = 3759 ( get_current_ts_config PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 3734 "" _null_ _null_ _null_ _null_ get_current_ts_config _null_ _null_ _null_ ));
DESCR("get current tsearch configuration");
-DATA(insert OID = 3736 ( regconfigin PGNSP PGUID 12 1 0 0 f f f t f s 1 0 3734 "2275" _null_ _null_ _null_ _null_ regconfigin _null_ _null_ _null_ ));
+DATA(insert OID = 3736 ( regconfigin PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 3734 "2275" _null_ _null_ _null_ _null_ regconfigin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3737 ( regconfigout PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "3734" _null_ _null_ _null_ _null_ regconfigout _null_ _null_ _null_ ));
+DATA(insert OID = 3737 ( regconfigout PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "3734" _null_ _null_ _null_ _null_ regconfigout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3738 ( regconfigrecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 3734 "2281" _null_ _null_ _null_ _null_ regconfigrecv _null_ _null_ _null_ ));
+DATA(insert OID = 3738 ( regconfigrecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 3734 "2281" _null_ _null_ _null_ _null_ regconfigrecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3739 ( regconfigsend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "3734" _null_ _null_ _null_ _null_ regconfigsend _null_ _null_ _null_ ));
+DATA(insert OID = 3739 ( regconfigsend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "3734" _null_ _null_ _null_ _null_ regconfigsend _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3771 ( regdictionaryin PGNSP PGUID 12 1 0 0 f f f t f s 1 0 3769 "2275" _null_ _null_ _null_ _null_ regdictionaryin _null_ _null_ _null_ ));
+DATA(insert OID = 3771 ( regdictionaryin PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 3769 "2275" _null_ _null_ _null_ _null_ regdictionaryin _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3772 ( regdictionaryout PGNSP PGUID 12 1 0 0 f f f t f s 1 0 2275 "3769" _null_ _null_ _null_ _null_ regdictionaryout _null_ _null_ _null_ ));
+DATA(insert OID = 3772 ( regdictionaryout PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 2275 "3769" _null_ _null_ _null_ _null_ regdictionaryout _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3773 ( regdictionaryrecv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 3769 "2281" _null_ _null_ _null_ _null_ regdictionaryrecv _null_ _null_ _null_ ));
+DATA(insert OID = 3773 ( regdictionaryrecv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 3769 "2281" _null_ _null_ _null_ _null_ regdictionaryrecv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 3774 ( regdictionarysend PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "3769" _null_ _null_ _null_ _null_ regdictionarysend _null_ _null_ _null_ ));
+DATA(insert OID = 3774 ( regdictionarysend PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "3769" _null_ _null_ _null_ _null_ regdictionarysend _null_ _null_ _null_ ));
DESCR("I/O");
/* txid */
-DATA(insert OID = 2939 ( txid_snapshot_in PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2970 "2275" _null_ _null_ _null_ _null_ txid_snapshot_in _null_ _null_ _null_ ));
+DATA(insert OID = 2939 ( txid_snapshot_in PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2970 "2275" _null_ _null_ _null_ _null_ txid_snapshot_in _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2940 ( txid_snapshot_out PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2275 "2970" _null_ _null_ _null_ _null_ txid_snapshot_out _null_ _null_ _null_ ));
+DATA(insert OID = 2940 ( txid_snapshot_out PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2275 "2970" _null_ _null_ _null_ _null_ txid_snapshot_out _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2941 ( txid_snapshot_recv PGNSP PGUID 12 1 0 0 f f f t f i 1 0 2970 "2281" _null_ _null_ _null_ _null_ txid_snapshot_recv _null_ _null_ _null_ ));
+DATA(insert OID = 2941 ( txid_snapshot_recv PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 2970 "2281" _null_ _null_ _null_ _null_ txid_snapshot_recv _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2942 ( txid_snapshot_send PGNSP PGUID 12 1 0 0 f f f t f i 1 0 17 "2970" _null_ _null_ _null_ _null_ txid_snapshot_send _null_ _null_ _null_ ));
+DATA(insert OID = 2942 ( txid_snapshot_send PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 17 "2970" _null_ _null_ _null_ _null_ txid_snapshot_send _null_ _null_ _null_ ));
DESCR("I/O");
-DATA(insert OID = 2943 ( txid_current PGNSP PGUID 12 1 0 0 f f f t f s 0 0 20 "" _null_ _null_ _null_ _null_ txid_current _null_ _null_ _null_ ));
+DATA(insert OID = 2943 ( txid_current PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 20 "" _null_ _null_ _null_ _null_ txid_current _null_ _null_ _null_ ));
DESCR("get current transaction ID");
-DATA(insert OID = 2944 ( txid_current_snapshot PGNSP PGUID 12 1 0 0 f f f t f s 0 0 2970 "" _null_ _null_ _null_ _null_ txid_current_snapshot _null_ _null_ _null_ ));
+DATA(insert OID = 2944 ( txid_current_snapshot PGNSP PGUID 12 1 0 0 0 f f f t f s 0 0 2970 "" _null_ _null_ _null_ _null_ txid_current_snapshot _null_ _null_ _null_ ));
DESCR("get current snapshot");
-DATA(insert OID = 2945 ( txid_snapshot_xmin PGNSP PGUID 12 1 0 0 f f f t f i 1 0 20 "2970" _null_ _null_ _null_ _null_ txid_snapshot_xmin _null_ _null_ _null_ ));
+DATA(insert OID = 2945 ( txid_snapshot_xmin PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 20 "2970" _null_ _null_ _null_ _null_ txid_snapshot_xmin _null_ _null_ _null_ ));
DESCR("get xmin of snapshot");
-DATA(insert OID = 2946 ( txid_snapshot_xmax PGNSP PGUID 12 1 0 0 f f f t f i 1 0 20 "2970" _null_ _null_ _null_ _null_ txid_snapshot_xmax _null_ _null_ _null_ ));
+DATA(insert OID = 2946 ( txid_snapshot_xmax PGNSP PGUID 12 1 0 0 0 f f f t f i 1 0 20 "2970" _null_ _null_ _null_ _null_ txid_snapshot_xmax _null_ _null_ _null_ ));
DESCR("get xmax of snapshot");
-DATA(insert OID = 2947 ( txid_snapshot_xip PGNSP PGUID 12 1 50 0 f f f t t i 1 0 20 "2970" _null_ _null_ _null_ _null_ txid_snapshot_xip _null_ _null_ _null_ ));
+DATA(insert OID = 2947 ( txid_snapshot_xip PGNSP PGUID 12 1 50 0 0 f f f t t i 1 0 20 "2970" _null_ _null_ _null_ _null_ txid_snapshot_xip _null_ _null_ _null_ ));
DESCR("get set of in-progress txids in snapshot");
-DATA(insert OID = 2948 ( txid_visible_in_snapshot PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "20 2970" _null_ _null_ _null_ _null_ txid_visible_in_snapshot _null_ _null_ _null_ ));
+DATA(insert OID = 2948 ( txid_visible_in_snapshot PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "20 2970" _null_ _null_ _null_ _null_ txid_visible_in_snapshot _null_ _null_ _null_ ));
DESCR("is txid visible in snapshot?");
/* record comparison */
-DATA(insert OID = 2981 ( record_eq PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ record_eq _null_ _null_ _null_ ));
-DATA(insert OID = 2982 ( record_ne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ record_ne _null_ _null_ _null_ ));
-DATA(insert OID = 2983 ( record_lt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ record_lt _null_ _null_ _null_ ));
-DATA(insert OID = 2984 ( record_gt PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ record_gt _null_ _null_ _null_ ));
-DATA(insert OID = 2985 ( record_le PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ record_le _null_ _null_ _null_ ));
-DATA(insert OID = 2986 ( record_ge PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ record_ge _null_ _null_ _null_ ));
-DATA(insert OID = 2987 ( btrecordcmp PGNSP PGUID 12 1 0 0 f f f t f i 2 0 23 "2249 2249" _null_ _null_ _null_ _null_ btrecordcmp _null_ _null_ _null_ ));
+DATA(insert OID = 2981 ( record_eq PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ record_eq _null_ _null_ _null_ ));
+DATA(insert OID = 2982 ( record_ne PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ record_ne _null_ _null_ _null_ ));
+DATA(insert OID = 2983 ( record_lt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ record_lt _null_ _null_ _null_ ));
+DATA(insert OID = 2984 ( record_gt PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ record_gt _null_ _null_ _null_ ));
+DATA(insert OID = 2985 ( record_le PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ record_le _null_ _null_ _null_ ));
+DATA(insert OID = 2986 ( record_ge PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ record_ge _null_ _null_ _null_ ));
+DATA(insert OID = 2987 ( btrecordcmp PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 23 "2249 2249" _null_ _null_ _null_ _null_ btrecordcmp _null_ _null_ _null_ ));
DESCR("less-equal-greater");
/* Extensions */
-DATA(insert OID = 3082 ( pg_available_extensions PGNSP PGUID 12 10 100 0 f f f t t s 0 0 2249 "" "{19,25,25}" "{o,o,o}" "{name,default_version,comment}" _null_ pg_available_extensions _null_ _null_ _null_ ));
+DATA(insert OID = 3082 ( pg_available_extensions PGNSP PGUID 12 10 100 0 0 f f f t t s 0 0 2249 "" "{19,25,25}" "{o,o,o}" "{name,default_version,comment}" _null_ pg_available_extensions _null_ _null_ _null_ ));
DESCR("list available extensions");
-DATA(insert OID = 3083 ( pg_available_extension_versions PGNSP PGUID 12 10 100 0 f f f t t s 0 0 2249 "" "{19,25,16,16,19,1003,25}" "{o,o,o,o,o,o,o}" "{name,version,superuser,relocatable,schema,requires,comment}" _null_ pg_available_extension_versions _null_ _null_ _null_ ));
+DATA(insert OID = 3083 ( pg_available_extension_versions PGNSP PGUID 12 10 100 0 0 f f f t t s 0 0 2249 "" "{19,25,16,16,19,1003,25}" "{o,o,o,o,o,o,o}" "{name,version,superuser,relocatable,schema,requires,comment}" _null_ pg_available_extension_versions _null_ _null_ _null_ ));
DESCR("list available extension versions");
-DATA(insert OID = 3084 ( pg_extension_update_paths PGNSP PGUID 12 10 100 0 f f f t t s 1 0 2249 "19" "{19,25,25,25}" "{i,o,o,o}" "{name,source,target,path}" _null_ pg_extension_update_paths _null_ _null_ _null_ ));
+DATA(insert OID = 3084 ( pg_extension_update_paths PGNSP PGUID 12 10 100 0 0 f f f t t s 1 0 2249 "19" "{19,25,25,25}" "{i,o,o,o}" "{name,source,target,path}" _null_ pg_extension_update_paths _null_ _null_ _null_ ));
DESCR("list an extension's version update paths");
-DATA(insert OID = 3086 ( pg_extension_config_dump PGNSP PGUID 12 1 0 0 f f f t f v 2 0 2278 "2205 25" _null_ _null_ _null_ _null_ pg_extension_config_dump _null_ _null_ _null_ ));
+DATA(insert OID = 3086 ( pg_extension_config_dump PGNSP PGUID 12 1 0 0 0 f f f t f v 2 0 2278 "2205 25" _null_ _null_ _null_ _null_ pg_extension_config_dump _null_ _null_ _null_ ));
DESCR("flag an extension's table contents to be emitted by pg_dump");
/* SQL-spec window functions */
-DATA(insert OID = 3100 ( row_number PGNSP PGUID 12 1 0 0 f t f f f i 0 0 20 "" _null_ _null_ _null_ _null_ window_row_number _null_ _null_ _null_ ));
+DATA(insert OID = 3100 ( row_number PGNSP PGUID 12 1 0 0 0 f t f f f i 0 0 20 "" _null_ _null_ _null_ _null_ window_row_number _null_ _null_ _null_ ));
DESCR("row number within partition");
-DATA(insert OID = 3101 ( rank PGNSP PGUID 12 1 0 0 f t f f f i 0 0 20 "" _null_ _null_ _null_ _null_ window_rank _null_ _null_ _null_ ));
+DATA(insert OID = 3101 ( rank PGNSP PGUID 12 1 0 0 0 f t f f f i 0 0 20 "" _null_ _null_ _null_ _null_ window_rank _null_ _null_ _null_ ));
DESCR("integer rank with gaps");
-DATA(insert OID = 3102 ( dense_rank PGNSP PGUID 12 1 0 0 f t f f f i 0 0 20 "" _null_ _null_ _null_ _null_ window_dense_rank _null_ _null_ _null_ ));
+DATA(insert OID = 3102 ( dense_rank PGNSP PGUID 12 1 0 0 0 f t f f f i 0 0 20 "" _null_ _null_ _null_ _null_ window_dense_rank _null_ _null_ _null_ ));
DESCR("integer rank without gaps");
-DATA(insert OID = 3103 ( percent_rank PGNSP PGUID 12 1 0 0 f t f f f i 0 0 701 "" _null_ _null_ _null_ _null_ window_percent_rank _null_ _null_ _null_ ));
+DATA(insert OID = 3103 ( percent_rank PGNSP PGUID 12 1 0 0 0 f t f f f i 0 0 701 "" _null_ _null_ _null_ _null_ window_percent_rank _null_ _null_ _null_ ));
DESCR("fractional rank within partition");
-DATA(insert OID = 3104 ( cume_dist PGNSP PGUID 12 1 0 0 f t f f f i 0 0 701 "" _null_ _null_ _null_ _null_ window_cume_dist _null_ _null_ _null_ ));
+DATA(insert OID = 3104 ( cume_dist PGNSP PGUID 12 1 0 0 0 f t f f f i 0 0 701 "" _null_ _null_ _null_ _null_ window_cume_dist _null_ _null_ _null_ ));
DESCR("fractional row number within partition");
-DATA(insert OID = 3105 ( ntile PGNSP PGUID 12 1 0 0 f t f t f i 1 0 23 "23" _null_ _null_ _null_ _null_ window_ntile _null_ _null_ _null_ ));
+DATA(insert OID = 3105 ( ntile PGNSP PGUID 12 1 0 0 0 f t f t f i 1 0 23 "23" _null_ _null_ _null_ _null_ window_ntile _null_ _null_ _null_ ));
DESCR("split rows into N groups");
-DATA(insert OID = 3106 ( lag PGNSP PGUID 12 1 0 0 f t f t f i 1 0 2283 "2283" _null_ _null_ _null_ _null_ window_lag _null_ _null_ _null_ ));
+DATA(insert OID = 3106 ( lag PGNSP PGUID 12 1 0 0 0 f t f t f i 1 0 2283 "2283" _null_ _null_ _null_ _null_ window_lag _null_ _null_ _null_ ));
DESCR("fetch the preceding row value");
-DATA(insert OID = 3107 ( lag PGNSP PGUID 12 1 0 0 f t f t f i 2 0 2283 "2283 23" _null_ _null_ _null_ _null_ window_lag_with_offset _null_ _null_ _null_ ));
+DATA(insert OID = 3107 ( lag PGNSP PGUID 12 1 0 0 0 f t f t f i 2 0 2283 "2283 23" _null_ _null_ _null_ _null_ window_lag_with_offset _null_ _null_ _null_ ));
DESCR("fetch the Nth preceding row value");
-DATA(insert OID = 3108 ( lag PGNSP PGUID 12 1 0 0 f t f t f i 3 0 2283 "2283 23 2283" _null_ _null_ _null_ _null_ window_lag_with_offset_and_default _null_ _null_ _null_ ));
+DATA(insert OID = 3108 ( lag PGNSP PGUID 12 1 0 0 0 f t f t f i 3 0 2283 "2283 23 2283" _null_ _null_ _null_ _null_ window_lag_with_offset_and_default _null_ _null_ _null_ ));
DESCR("fetch the Nth preceding row value with default");
-DATA(insert OID = 3109 ( lead PGNSP PGUID 12 1 0 0 f t f t f i 1 0 2283 "2283" _null_ _null_ _null_ _null_ window_lead _null_ _null_ _null_ ));
+DATA(insert OID = 3109 ( lead PGNSP PGUID 12 1 0 0 0 f t f t f i 1 0 2283 "2283" _null_ _null_ _null_ _null_ window_lead _null_ _null_ _null_ ));
DESCR("fetch the following row value");
-DATA(insert OID = 3110 ( lead PGNSP PGUID 12 1 0 0 f t f t f i 2 0 2283 "2283 23" _null_ _null_ _null_ _null_ window_lead_with_offset _null_ _null_ _null_ ));
+DATA(insert OID = 3110 ( lead PGNSP PGUID 12 1 0 0 0 f t f t f i 2 0 2283 "2283 23" _null_ _null_ _null_ _null_ window_lead_with_offset _null_ _null_ _null_ ));
DESCR("fetch the Nth following row value");
-DATA(insert OID = 3111 ( lead PGNSP PGUID 12 1 0 0 f t f t f i 3 0 2283 "2283 23 2283" _null_ _null_ _null_ _null_ window_lead_with_offset_and_default _null_ _null_ _null_ ));
+DATA(insert OID = 3111 ( lead PGNSP PGUID 12 1 0 0 0 f t f t f i 3 0 2283 "2283 23 2283" _null_ _null_ _null_ _null_ window_lead_with_offset_and_default _null_ _null_ _null_ ));
DESCR("fetch the Nth following row value with default");
-DATA(insert OID = 3112 ( first_value PGNSP PGUID 12 1 0 0 f t f t f i 1 0 2283 "2283" _null_ _null_ _null_ _null_ window_first_value _null_ _null_ _null_ ));
+DATA(insert OID = 3112 ( first_value PGNSP PGUID 12 1 0 0 0 f t f t f i 1 0 2283 "2283" _null_ _null_ _null_ _null_ window_first_value _null_ _null_ _null_ ));
DESCR("fetch the first row value");
-DATA(insert OID = 3113 ( last_value PGNSP PGUID 12 1 0 0 f t f t f i 1 0 2283 "2283" _null_ _null_ _null_ _null_ window_last_value _null_ _null_ _null_ ));
+DATA(insert OID = 3113 ( last_value PGNSP PGUID 12 1 0 0 0 f t f t f i 1 0 2283 "2283" _null_ _null_ _null_ _null_ window_last_value _null_ _null_ _null_ ));
DESCR("fetch the last row value");
-DATA(insert OID = 3114 ( nth_value PGNSP PGUID 12 1 0 0 f t f t f i 2 0 2283 "2283 23" _null_ _null_ _null_ _null_ window_nth_value _null_ _null_ _null_ ));
+DATA(insert OID = 3114 ( nth_value PGNSP PGUID 12 1 0 0 0 f t f t f i 2 0 2283 "2283 23" _null_ _null_ _null_ _null_ window_nth_value _null_ _null_ _null_ ));
DESCR("fetch the Nth row value");
diff --git a/src/include/commands/typecmds.h b/src/include/commands/typecmds.h
index 6d9d1ccaa9..23726fb0fb 100644
--- a/src/include/commands/typecmds.h
+++ b/src/include/commands/typecmds.h
@@ -31,6 +31,7 @@ extern Oid AssignTypeArrayOid(void);
extern void AlterDomainDefault(List *names, Node *defaultRaw);
extern void AlterDomainNotNull(List *names, bool notNull);
extern void AlterDomainAddConstraint(List *names, Node *constr);
+extern void AlterDomainValidateConstraint(List *names, char *constrName);
extern void AlterDomainDropConstraint(List *names, const char *constrName,
DropBehavior behavior);
diff --git a/src/include/libpq/hba.h b/src/include/libpq/hba.h
index b92dc0d3a4..1e49044191 100644
--- a/src/include/libpq/hba.h
+++ b/src/include/libpq/hba.h
@@ -49,12 +49,12 @@ typedef enum ConnType
ctHostNoSSL
} ConnType;
-typedef struct
+typedef struct HbaLine
{
int linenumber;
ConnType conntype;
- char *database;
- char *role;
+ List *databases;
+ List *roles;
struct sockaddr_storage addr;
struct sockaddr_storage mask;
IPCompareMethod ip_cmp_method;
@@ -87,7 +87,7 @@ typedef struct Port hbaPort;
extern bool load_hba(void);
extern void load_ident(void);
-extern int hba_getauthmethod(hbaPort *port);
+extern void hba_getauthmethod(hbaPort *port);
extern int check_usermap(const char *usermap_name,
const char *pg_role, const char *auth_user,
bool case_sensitive);
diff --git a/src/include/nodes/execnodes.h b/src/include/nodes/execnodes.h
index 16756616e5..a3a9310055 100644
--- a/src/include/nodes/execnodes.h
+++ b/src/include/nodes/execnodes.h
@@ -21,7 +21,7 @@
#include "nodes/plannodes.h"
#include "nodes/tidbitmap.h"
#include "utils/hsearch.h"
-#include "utils/rel.h"
+#include "utils/reltrigger.h"
#include "utils/snapshot.h"
#include "utils/tuplestore.h"
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h
index c65e3cd6e8..00c1269bd1 100644
--- a/src/include/nodes/parsenodes.h
+++ b/src/include/nodes/parsenodes.h
@@ -1190,6 +1190,7 @@ typedef enum AlterTableType
AT_AddConstraint, /* add constraint */
AT_AddConstraintRecurse, /* internal to commands/tablecmds.c */
AT_ValidateConstraint, /* validate constraint */
+ AT_ValidateConstraintRecurse, /* internal to commands/tablecmds.c */
AT_ProcessedConstraint, /* pre-processed add constraint (local in
* parser/parse_utilcmd.c) */
AT_AddIndexConstraint, /* add constraint using existing index */
@@ -1543,6 +1544,8 @@ typedef struct Constraint
char fk_matchtype; /* FULL, PARTIAL, UNSPECIFIED */
char fk_upd_action; /* ON UPDATE action */
char fk_del_action; /* ON DELETE action */
+
+ /* Fields used for constraints that allow a NOT VALID specification */
bool skip_validation; /* skip validation of existing rows? */
bool initially_valid; /* mark the new constraint as valid? */
} Constraint;
diff --git a/src/include/parser/parse_clause.h b/src/include/parser/parse_clause.h
index 09ef450ac5..f5ce2ff288 100644
--- a/src/include/parser/parse_clause.h
+++ b/src/include/parser/parse_clause.h
@@ -44,4 +44,6 @@ extern List *transformDistinctOnClause(ParseState *pstate, List *distinctlist,
extern Index assignSortGroupRef(TargetEntry *tle, List *tlist);
extern bool targetIsInSortList(TargetEntry *tle, Oid sortop, List *sortList);
+extern Node *relabel_to_typmod(Node *expr, int32 typmod);
+
#endif /* PARSE_CLAUSE_H */
diff --git a/src/include/port.h b/src/include/port.h
index 4c7ed64317..2cab65fbde 100644
--- a/src/include/port.h
+++ b/src/include/port.h
@@ -34,6 +34,7 @@ extern bool pg_set_block(pgsocket sock);
/* Portable path handling for Unix/Win32 (in path.c) */
+extern bool has_drive_prefix(const char *filename);
extern char *first_dir_separator(const char *filename);
extern char *last_dir_separator(const char *filename);
extern char *first_path_var_separator(const char *pathlist);
diff --git a/src/include/postmaster/postmaster.h b/src/include/postmaster/postmaster.h
index 25cc84a47f..f7072f55cf 100644
--- a/src/include/postmaster/postmaster.h
+++ b/src/include/postmaster/postmaster.h
@@ -15,7 +15,6 @@
/* GUC options */
extern bool EnableSSL;
-extern bool SilentMode;
extern int ReservedBackends;
extern int PostPortNumber;
extern int Unix_socket_permissions;
diff --git a/src/include/rewrite/rewriteSupport.h b/src/include/rewrite/rewriteSupport.h
index 77417ba034..22e6ca26cf 100644
--- a/src/include/rewrite/rewriteSupport.h
+++ b/src/include/rewrite/rewriteSupport.h
@@ -23,6 +23,7 @@ extern void SetRelationRuleStatus(Oid relationId, bool relHasRules,
bool relIsBecomingView);
extern Oid get_rewrite_oid(Oid relid, const char *rulename, bool missing_ok);
-extern Oid get_rewrite_oid_without_relid(const char *rulename, Oid *relid);
+extern Oid get_rewrite_oid_without_relid(const char *rulename,
+ Oid *relid, bool missing_ok);
#endif /* REWRITESUPPORT_H */
diff --git a/src/include/storage/predicate.h b/src/include/storage/predicate.h
index 7b5846982e..5ddbc1d3f4 100644
--- a/src/include/storage/predicate.h
+++ b/src/include/storage/predicate.h
@@ -39,24 +39,24 @@ extern Size PredicateLockShmemSize(void);
extern void CheckPointPredicate(void);
/* predicate lock reporting */
-extern bool PageIsPredicateLocked(const Relation relation, const BlockNumber blkno);
+extern bool PageIsPredicateLocked(Relation relation, BlockNumber blkno);
/* predicate lock maintenance */
extern Snapshot RegisterSerializableTransaction(Snapshot snapshot);
-extern void RegisterPredicateLockingXid(const TransactionId xid);
-extern void PredicateLockRelation(const Relation relation, const Snapshot snapshot);
-extern void PredicateLockPage(const Relation relation, const BlockNumber blkno, const Snapshot snapshot);
-extern void PredicateLockTuple(const Relation relation, const HeapTuple tuple, const Snapshot snapshot);
-extern void PredicateLockPageSplit(const Relation relation, const BlockNumber oldblkno, const BlockNumber newblkno);
-extern void PredicateLockPageCombine(const Relation relation, const BlockNumber oldblkno, const BlockNumber newblkno);
-extern void TransferPredicateLocksToHeapRelation(const Relation relation);
-extern void ReleasePredicateLocks(const bool isCommit);
+extern void RegisterPredicateLockingXid(TransactionId xid);
+extern void PredicateLockRelation(Relation relation, Snapshot snapshot);
+extern void PredicateLockPage(Relation relation, BlockNumber blkno, Snapshot snapshot);
+extern void PredicateLockTuple(Relation relation, HeapTuple tuple, Snapshot snapshot);
+extern void PredicateLockPageSplit(Relation relation, BlockNumber oldblkno, BlockNumber newblkno);
+extern void PredicateLockPageCombine(Relation relation, BlockNumber oldblkno, BlockNumber newblkno);
+extern void TransferPredicateLocksToHeapRelation(Relation relation);
+extern void ReleasePredicateLocks(bool isCommit);
/* conflict detection (may also trigger rollback) */
-extern void CheckForSerializableConflictOut(const bool valid, const Relation relation, const HeapTuple tuple,
- const Buffer buffer, const Snapshot snapshot);
-extern void CheckForSerializableConflictIn(const Relation relation, const HeapTuple tuple, const Buffer buffer);
-extern void CheckTableForSerializableConflictIn(const Relation relation);
+extern void CheckForSerializableConflictOut(bool valid, Relation relation, HeapTuple tuple,
+ Buffer buffer, Snapshot snapshot);
+extern void CheckForSerializableConflictIn(Relation relation, HeapTuple tuple, Buffer buffer);
+extern void CheckTableForSerializableConflictIn(Relation relation);
/* final rollback checking */
extern void PreCommit_CheckForSerializationFailure(void);
diff --git a/src/include/storage/predicate_internals.h b/src/include/storage/predicate_internals.h
index 495983f345..0c90f275d6 100644
--- a/src/include/storage/predicate_internals.h
+++ b/src/include/storage/predicate_internals.h
@@ -90,21 +90,22 @@ typedef struct SERIALIZABLEXACT
int pid; /* pid of associated process */
} SERIALIZABLEXACT;
-#define SXACT_FLAG_COMMITTED 0x00000001 /* already committed */
-#define SXACT_FLAG_PREPARED 0x00000002 /* about to commit */
-#define SXACT_FLAG_DOOMED 0x00000004 /* will roll back */
+#define SXACT_FLAG_COMMITTED 0x00000001 /* already committed */
+#define SXACT_FLAG_PREPARED 0x00000002 /* about to commit */
+#define SXACT_FLAG_ROLLED_BACK 0x00000004 /* already rolled back */
+#define SXACT_FLAG_DOOMED 0x00000008 /* will roll back */
/*
* The following flag actually means that the flagged transaction has a
* conflict out *to a transaction which committed ahead of it*. It's hard
* to get that into a name of a reasonable length.
*/
-#define SXACT_FLAG_CONFLICT_OUT 0x00000008
-#define SXACT_FLAG_READ_ONLY 0x00000010
-#define SXACT_FLAG_DEFERRABLE_WAITING 0x00000020
-#define SXACT_FLAG_RO_SAFE 0x00000040
-#define SXACT_FLAG_RO_UNSAFE 0x00000080
-#define SXACT_FLAG_SUMMARY_CONFLICT_IN 0x00000100
-#define SXACT_FLAG_SUMMARY_CONFLICT_OUT 0x00000200
+#define SXACT_FLAG_CONFLICT_OUT 0x00000010
+#define SXACT_FLAG_READ_ONLY 0x00000020
+#define SXACT_FLAG_DEFERRABLE_WAITING 0x00000040
+#define SXACT_FLAG_RO_SAFE 0x00000080
+#define SXACT_FLAG_RO_UNSAFE 0x00000100
+#define SXACT_FLAG_SUMMARY_CONFLICT_IN 0x00000200
+#define SXACT_FLAG_SUMMARY_CONFLICT_OUT 0x00000400
/*
* The following types are used to provide an ad hoc list for holding
diff --git a/src/include/utils/builtins.h b/src/include/utils/builtins.h
index 14215db1b4..8a1c82ef72 100644
--- a/src/include/utils/builtins.h
+++ b/src/include/utils/builtins.h
@@ -684,6 +684,7 @@ extern Datum varcharrecv(PG_FUNCTION_ARGS);
extern Datum varcharsend(PG_FUNCTION_ARGS);
extern Datum varchartypmodin(PG_FUNCTION_ARGS);
extern Datum varchartypmodout(PG_FUNCTION_ARGS);
+extern Datum varchar_transform(PG_FUNCTION_ARGS);
extern Datum varchar(PG_FUNCTION_ARGS);
/* varlena.c */
diff --git a/src/include/utils/lsyscache.h b/src/include/utils/lsyscache.h
index 0a419dcf65..f4490adc31 100644
--- a/src/include/utils/lsyscache.h
+++ b/src/include/utils/lsyscache.h
@@ -17,6 +17,15 @@
#include "access/htup.h"
#include "nodes/pg_list.h"
+/* Result list element for get_op_btree_interpretation */
+typedef struct OpBtreeInterpretation
+{
+ Oid opfamily_id; /* btree opfamily containing operator */
+ int strategy; /* its strategy number */
+ Oid oplefttype; /* declared left input datatype */
+ Oid oprighttype; /* declared right input datatype */
+} OpBtreeInterpretation;
+
/* I/O function selector for get_type_io_data */
typedef enum IOFuncSelector
{
@@ -50,8 +59,7 @@ extern bool get_compatible_hash_operators(Oid opno,
Oid *lhs_opno, Oid *rhs_opno);
extern bool get_op_hash_functions(Oid opno,
RegProcedure *lhs_procno, RegProcedure *rhs_procno);
-extern void get_op_btree_interpretation(Oid opno,
- List **opfamilies, List **opstrats);
+extern List *get_op_btree_interpretation(Oid opno);
extern bool equality_ops_are_compatible(Oid opno1, Oid opno2);
extern Oid get_opfamily_proc(Oid opfamily, Oid lefttype, Oid righttype,
int16 procnum);
diff --git a/src/include/utils/rel.h b/src/include/utils/rel.h
index e2c2fa9ae4..173dc16a25 100644
--- a/src/include/utils/rel.h
+++ b/src/include/utils/rel.h
@@ -24,6 +24,7 @@
#include "storage/block.h"
#include "storage/relfilenode.h"
#include "utils/relcache.h"
+#include "utils/reltrigger.h"
/*
@@ -44,60 +45,6 @@ typedef struct LockInfoData
typedef LockInfoData *LockInfo;
-/*
- * Likewise, this struct really belongs to trigger.h, but for convenience
- * we put it here.
- */
-typedef struct Trigger
-{
- Oid tgoid; /* OID of trigger (pg_trigger row) */
- /* Remaining fields are copied from pg_trigger, see pg_trigger.h */
- char *tgname;
- Oid tgfoid;
- int16 tgtype;
- char tgenabled;
- bool tgisinternal;
- Oid tgconstrrelid;
- Oid tgconstrindid;
- Oid tgconstraint;
- bool tgdeferrable;
- bool tginitdeferred;
- int16 tgnargs;
- int16 tgnattr;
- int16 *tgattr;
- char **tgargs;
- char *tgqual;
-} Trigger;
-
-typedef struct TriggerDesc
-{
- Trigger *triggers; /* array of Trigger structs */
- int numtriggers; /* number of array entries */
-
- /*
- * These flags indicate whether the array contains at least one of each
- * type of trigger. We use these to skip searching the array if not.
- */
- bool trig_insert_before_row;
- bool trig_insert_after_row;
- bool trig_insert_instead_row;
- bool trig_insert_before_statement;
- bool trig_insert_after_statement;
- bool trig_update_before_row;
- bool trig_update_after_row;
- bool trig_update_instead_row;
- bool trig_update_before_statement;
- bool trig_update_after_statement;
- bool trig_delete_before_row;
- bool trig_delete_after_row;
- bool trig_delete_instead_row;
- bool trig_delete_before_statement;
- bool trig_delete_after_statement;
- /* there are no row-level truncate triggers */
- bool trig_truncate_before_statement;
- bool trig_truncate_after_statement;
-} TriggerDesc;
-
/*
* Cached lookup information for the index access method functions defined
diff --git a/src/include/utils/reltrigger.h b/src/include/utils/reltrigger.h
new file mode 100644
index 0000000000..eaf5abd447
--- /dev/null
+++ b/src/include/utils/reltrigger.h
@@ -0,0 +1,74 @@
+/*-------------------------------------------------------------------------
+ *
+ * reltrigger.h
+ * POSTGRES relation trigger definitions.
+ *
+ *
+ * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * src/include/utils/reltrigger.h
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef RELTRIGGER_H
+#define RELTRIGGER_H
+
+
+/*
+ * These struct really belongs to trigger.h, but we put it separately so that
+ * it can be cleanly included in rel.h and other places.
+ */
+
+typedef struct Trigger
+{
+ Oid tgoid; /* OID of trigger (pg_trigger row) */
+ /* Remaining fields are copied from pg_trigger, see pg_trigger.h */
+ char *tgname;
+ Oid tgfoid;
+ int16 tgtype;
+ char tgenabled;
+ bool tgisinternal;
+ Oid tgconstrrelid;
+ Oid tgconstrindid;
+ Oid tgconstraint;
+ bool tgdeferrable;
+ bool tginitdeferred;
+ int16 tgnargs;
+ int16 tgnattr;
+ int16 *tgattr;
+ char **tgargs;
+ char *tgqual;
+} Trigger;
+
+typedef struct TriggerDesc
+{
+ Trigger *triggers; /* array of Trigger structs */
+ int numtriggers; /* number of array entries */
+
+ /*
+ * These flags indicate whether the array contains at least one of each
+ * type of trigger. We use these to skip searching the array if not.
+ */
+ bool trig_insert_before_row;
+ bool trig_insert_after_row;
+ bool trig_insert_instead_row;
+ bool trig_insert_before_statement;
+ bool trig_insert_after_statement;
+ bool trig_update_before_row;
+ bool trig_update_after_row;
+ bool trig_update_instead_row;
+ bool trig_update_before_statement;
+ bool trig_update_after_statement;
+ bool trig_delete_before_row;
+ bool trig_delete_after_row;
+ bool trig_delete_instead_row;
+ bool trig_delete_before_statement;
+ bool trig_delete_after_statement;
+ /* there are no row-level truncate triggers */
+ bool trig_truncate_before_statement;
+ bool trig_truncate_after_statement;
+} TriggerDesc;
+
+
+#endif /* RELTRIGGER_H */
diff --git a/src/interfaces/ecpg/ecpglib/nls.mk b/src/interfaces/ecpg/ecpglib/nls.mk
index e78b83dba6..c0f2fd2b8f 100644
--- a/src/interfaces/ecpg/ecpglib/nls.mk
+++ b/src/interfaces/ecpg/ecpglib/nls.mk
@@ -1,5 +1,6 @@
# src/interfaces/ecpg/ecpglib/nls.mk
-CATALOG_NAME = ecpglib
-AVAIL_LANGUAGES = de es fr it ja pt_BR tr zh_CN
-GETTEXT_FILES = connect.c error.c execute.c misc.c
+CATALOG_NAME = ecpglib
+AVAIL_LANGUAGES = de es fr it ja pt_BR tr zh_CN
+GETTEXT_FILES = connect.c descriptor.c error.c execute.c misc.c
GETTEXT_TRIGGERS = ecpg_gettext
+GETTEXT_FLAGS = ecpg_gettext:1:pass-c-format
diff --git a/src/interfaces/ecpg/preproc/nls.mk b/src/interfaces/ecpg/preproc/nls.mk
index c9417481b7..2a10b7668d 100644
--- a/src/interfaces/ecpg/preproc/nls.mk
+++ b/src/interfaces/ecpg/preproc/nls.mk
@@ -1,5 +1,6 @@
# src/interfaces/ecpg/preproc/nls.mk
-CATALOG_NAME = ecpg
-AVAIL_LANGUAGES = de es fr it ja ko pt_BR tr zh_CN zh_TW
-GETTEXT_FILES = descriptor.c ecpg.c pgc.c preproc.c type.c variable.c
-GETTEXT_TRIGGERS = _ mmerror:3
+CATALOG_NAME = ecpg
+AVAIL_LANGUAGES = de es fr it ja ko pt_BR tr zh_CN zh_TW
+GETTEXT_FILES = descriptor.c ecpg.c pgc.c preproc.c type.c variable.c
+GETTEXT_TRIGGERS = mmerror:3
+GETTEXT_FLAGS = mmerror:3:c-format
diff --git a/src/interfaces/libpq/nls.mk b/src/interfaces/libpq/nls.mk
index 5d38d1acf2..2cd1efa9b0 100644
--- a/src/interfaces/libpq/nls.mk
+++ b/src/interfaces/libpq/nls.mk
@@ -1,5 +1,6 @@
# src/interfaces/libpq/nls.mk
-CATALOG_NAME := libpq
-AVAIL_LANGUAGES := cs de es fr it ja ko pt_BR ru sv ta tr zh_CN zh_TW
-GETTEXT_FILES := fe-auth.c fe-connect.c fe-exec.c fe-lobj.c fe-misc.c fe-protocol2.c fe-protocol3.c fe-secure.c
-GETTEXT_TRIGGERS:= libpq_gettext pqInternalNotice:2
+CATALOG_NAME = libpq
+AVAIL_LANGUAGES = cs de es fr it ja ko pt_BR ru sv ta tr zh_CN zh_TW
+GETTEXT_FILES = fe-auth.c fe-connect.c fe-exec.c fe-lobj.c fe-misc.c fe-protocol2.c fe-protocol3.c fe-secure.c
+GETTEXT_TRIGGERS = libpq_gettext pqInternalNotice:2
+GETTEXT_FLAGS = libpq_gettext:1:pass-c-format pqInternalNotice:2:c-format
diff --git a/src/nls-global.mk b/src/nls-global.mk
index 32b3c0fbd6..c95c3a496f 100644
--- a/src/nls-global.mk
+++ b/src/nls-global.mk
@@ -6,12 +6,15 @@
# needs to contain a file 'nls.mk' with the following make variable
# assignments:
#
-# CATALOG_NAME -- name of the message catalog (xxx.po); probably
-# name of the program
-# AVAIL_LANGUAGES -- list of languages that are provided/supported
-# GETTEXT_FILES -- list of source files that contain message strings
-# GETTEXT_TRIGGERS -- (optional) list of functions that contain
+# CATALOG_NAME -- name of the message catalog (xxx.po); probably
+# name of the program
+# AVAIL_LANGUAGES -- list of languages that are provided/supported
+# GETTEXT_FILES -- list of source files that contain message strings
+# GETTEXT_TRIGGERS -- (optional) list of functions that contain
# translatable strings
+# GETTEXT_FLAGS -- (optional) list of gettext --flag arguments to mark
+# function arguments that contain C format strings
+# (functions must be listed in TRIGGERS and FLAGS)
#
# That's all, the rest is done here, if --enable-nls was specified.
#
@@ -39,6 +42,23 @@ ifdef XGETTEXT
XGETTEXT += -ctranslator --copyright-holder='PostgreSQL Global Development Group' [email protected]
endif
+# _ is defined in c.h, so it's global
+GETTEXT_TRIGGERS += _
+GETTEXT_FLAGS += _:1:pass-c-format
+
+
+# common settings that apply to backend and all backend modules
+BACKEND_COMMON_GETTEXT_TRIGGERS = \
+ errmsg errmsg_plural:1,2 \
+ errdetail errdetail_log errdetail_plural:1,2 \
+ errhint \
+ errcontext
+BACKEND_COMMON_GETTEXT_FLAGS = \
+ errmsg:1:c-format errmsg_plural:1:c-format errmsg_plural:2:c-format \
+ errdetail:1:c-format errdetail_log:1:c-format errdetail_plural:1:c-format errdetail_plural:2:c-format \
+ errhint:1:c-format \
+ errcontext:1:c-format
+
all-po: $(MO_FILES)
@@ -48,7 +68,7 @@ all-po: $(MO_FILES)
ifeq ($(word 1,$(GETTEXT_FILES)),+)
po/$(CATALOG_NAME).pot: $(word 2, $(GETTEXT_FILES)) $(MAKEFILE_LIST)
ifdef XGETTEXT
- $(XGETTEXT) -D $(srcdir) -n $(addprefix -k, $(GETTEXT_TRIGGERS)) -f $<
+ $(XGETTEXT) -D $(srcdir) -n $(addprefix -k, $(GETTEXT_TRIGGERS)) $(addprefix --flag=, $(GETTEXT_FLAGS)) -f $<
else
@echo "You don't have 'xgettext'."; exit 1
endif
@@ -57,7 +77,7 @@ po/$(CATALOG_NAME).pot: $(GETTEXT_FILES) $(MAKEFILE_LIST)
# Change to srcdir explicitly, don't rely on $^. That way we get
# consistent #: file references in the po files.
ifdef XGETTEXT
- $(XGETTEXT) -D $(srcdir) -n $(addprefix -k, $(GETTEXT_TRIGGERS)) $(GETTEXT_FILES)
+ $(XGETTEXT) -D $(srcdir) -n $(addprefix -k, $(GETTEXT_TRIGGERS)) $(addprefix --flag=, $(GETTEXT_FLAGS)) $(GETTEXT_FILES)
else
@echo "You don't have 'xgettext'."; exit 1
endif
diff --git a/src/pl/Makefile b/src/pl/Makefile
index ef630fe8d2..c4a0d1cd07 100644
--- a/src/pl/Makefile
+++ b/src/pl/Makefile
@@ -16,14 +16,21 @@ SUBDIRS = plpgsql
ifeq ($(with_perl), yes)
SUBDIRS += plperl
+else
+ALWAYS_SUBDIRS += plperl
endif
ifeq ($(with_python), yes)
SUBDIRS += plpython
+else
+ALWAYS_SUBDIRS += plpython
endif
ifeq ($(with_tcl), yes)
SUBDIRS += tcl
+else
+ALWAYS_SUBDIRS += tcl
endif
$(recurse)
+$(recurse_always)
diff --git a/src/pl/plperl/nls.mk b/src/pl/plperl/nls.mk
index 85ff132e5b..26041e53f7 100644
--- a/src/pl/plperl/nls.mk
+++ b/src/pl/plperl/nls.mk
@@ -1,5 +1,6 @@
# src/pl/plperl/nls.mk
-CATALOG_NAME := plperl
-AVAIL_LANGUAGES := de es fr it ja pt_BR ro tr zh_CN zh_TW
-GETTEXT_FILES := plperl.c SPI.c
-GETTEXT_TRIGGERS:= errmsg errmsg_plural:1,2 errdetail errdetail_log errdetail_plural:1,2 errhint errcontext
+CATALOG_NAME = plperl
+AVAIL_LANGUAGES = de es fr it ja pt_BR ro tr zh_CN zh_TW
+GETTEXT_FILES = plperl.c SPI.c
+GETTEXT_TRIGGERS = $(BACKEND_COMMON_GETTEXT_TRIGGERS)
+GETTEXT_FLAGS = $(BACKEND_COMMON_GETTEXT_FLAGS)
diff --git a/src/pl/plperl/plperl--1.0.sql b/src/pl/plperl/plperl--1.0.sql
index befd882745..801900f023 100644
--- a/src/pl/plperl/plperl--1.0.sql
+++ b/src/pl/plperl/plperl--1.0.sql
@@ -7,3 +7,5 @@
*/
CREATE PROCEDURAL LANGUAGE plperl;
+
+COMMENT ON PROCEDURAL LANGUAGE plperl IS 'PL/Perl procedural language';
diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c
index 61252308cd..8fd4cfb550 100644
--- a/src/pl/plperl/plperl.c
+++ b/src/pl/plperl/plperl.c
@@ -34,6 +34,7 @@
#include "utils/hsearch.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/typcache.h"
diff --git a/src/pl/plperl/plperlu--1.0.sql b/src/pl/plperl/plperlu--1.0.sql
index 025f7957c4..d1d213dd5f 100644
--- a/src/pl/plperl/plperlu--1.0.sql
+++ b/src/pl/plperl/plperlu--1.0.sql
@@ -7,3 +7,5 @@
*/
CREATE PROCEDURAL LANGUAGE plperlu;
+
+COMMENT ON PROCEDURAL LANGUAGE plperlu IS 'PL/PerlU untrusted procedural language';
diff --git a/src/pl/plpgsql/src/nls.mk b/src/pl/plpgsql/src/nls.mk
index bbf2a44791..5be1859a90 100644
--- a/src/pl/plpgsql/src/nls.mk
+++ b/src/pl/plpgsql/src/nls.mk
@@ -1,8 +1,6 @@
# src/pl/plpgsql/src/nls.mk
-CATALOG_NAME := plpgsql
-AVAIL_LANGUAGES := de es fr it ja ko pt_BR ro zh_CN zh_TW
-GETTEXT_FILES := pl_comp.c pl_exec.c pl_gram.c pl_funcs.c pl_handler.c pl_scanner.c
-GETTEXT_TRIGGERS:= _ errmsg errmsg_plural:1,2 errdetail errdetail_log errdetail_plural:1,2 errhint errcontext yyerror plpgsql_yyerror
-
-.PHONY: gettext-files
-gettext-files: distprep
+CATALOG_NAME = plpgsql
+AVAIL_LANGUAGES = de es fr it ja ko pt_BR ro zh_CN zh_TW
+GETTEXT_FILES = pl_comp.c pl_exec.c pl_gram.c pl_funcs.c pl_handler.c pl_scanner.c
+GETTEXT_TRIGGERS = $(BACKEND_COMMON_GETTEXT_TRIGGERS) yyerror plpgsql_yyerror
+GETTEXT_FLAGS = $(BACKEND_COMMON_GETTEXT_FLAGS)
diff --git a/src/pl/plpgsql/src/pl_comp.c b/src/pl/plpgsql/src/pl_comp.c
index 75098ec6de..afd20b4872 100644
--- a/src/pl/plpgsql/src/pl_comp.c
+++ b/src/pl/plpgsql/src/pl_comp.c
@@ -32,6 +32,7 @@
#include "utils/builtins.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
diff --git a/src/pl/plpgsql/src/pl_exec.c b/src/pl/plpgsql/src/pl_exec.c
index 906a485853..7f948d5f80 100644
--- a/src/pl/plpgsql/src/pl_exec.c
+++ b/src/pl/plpgsql/src/pl_exec.c
@@ -33,6 +33,7 @@
#include "utils/datum.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
#include "utils/snapmgr.h"
#include "utils/typcache.h"
diff --git a/src/pl/plpgsql/src/plpgsql--1.0.sql b/src/pl/plpgsql/src/plpgsql--1.0.sql
index 514562d70f..5eeea56824 100644
--- a/src/pl/plpgsql/src/plpgsql--1.0.sql
+++ b/src/pl/plpgsql/src/plpgsql--1.0.sql
@@ -7,3 +7,5 @@
*/
CREATE PROCEDURAL LANGUAGE plpgsql;
+
+COMMENT ON PROCEDURAL LANGUAGE plpgsql IS 'PL/pgSQL procedural language';
diff --git a/src/pl/plpython/Makefile b/src/pl/plpython/Makefile
index 2c0575501a..56e06d74f1 100644
--- a/src/pl/plpython/Makefile
+++ b/src/pl/plpython/Makefile
@@ -95,16 +95,8 @@ PSQLDIR = $(bindir)
include $(top_srcdir)/src/Makefile.shlib
-# Force this dependency to be known even without dependency info built:
-plpython.o: spiexceptions.h
-
-spiexceptions.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-spiexceptions.pl
- $(PERL) $(srcdir)/generate-spiexceptions.pl $< > $@
-
all: all-lib
-distprep: spiexceptions.h
-
install: all install-lib install-data
@@ -151,13 +143,13 @@ installcheck: submake prep3
$(pg_regress_installcheck) --inputdir=./python3 --outputdir=./python3 $(REGRESS_OPTS) $(REGRESS)
clean: clean3
-else
+else # not Python 3
check: submake
$(pg_regress_check) $(REGRESS_OPTS) $(REGRESS)
installcheck: submake
$(pg_regress_installcheck) $(REGRESS_OPTS) $(REGRESS)
-endif
+endif # not Python 3
.PHONY: submake
submake:
@@ -170,9 +162,6 @@ ifeq ($(PORTNAME), win32)
rm -f python${pytverstr}.def
endif
-maintainer-clean: distclean
- rm -f spiexceptions.h
-
else # can't build
all:
@@ -183,3 +172,16 @@ all:
echo ""
endif # can't build
+
+# distprep and maintainer-clean rules should be run even if we can't build.
+
+# Force this dependency to be known even without dependency info built:
+plpython.o: spiexceptions.h
+
+spiexceptions.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-spiexceptions.pl
+ $(PERL) $(srcdir)/generate-spiexceptions.pl $< > $@
+
+distprep: spiexceptions.h
+
+maintainer-clean: distclean
+ rm -f spiexceptions.h
diff --git a/src/pl/plpython/nls.mk b/src/pl/plpython/nls.mk
index 6d2716885d..27d5e7cea8 100644
--- a/src/pl/plpython/nls.mk
+++ b/src/pl/plpython/nls.mk
@@ -1,5 +1,10 @@
# src/pl/plpython/nls.mk
-CATALOG_NAME := plpython
-AVAIL_LANGUAGES := de es fr it ja pt_BR ro tr zh_CN zh_TW
-GETTEXT_FILES := plpython.c
-GETTEXT_TRIGGERS:= errmsg errmsg_plural:1,2 errdetail errdetail_log errdetail_plural:1,2 errhint errcontext PLy_elog:2 PLy_exception_set:2 PLy_exception_set_plural:2,3
+CATALOG_NAME = plpython
+AVAIL_LANGUAGES = de es fr it ja pt_BR ro tr zh_CN zh_TW
+GETTEXT_FILES = plpython.c
+GETTEXT_TRIGGERS = $(BACKEND_COMMON_GETTEXT_TRIGGERS) PLy_elog:2 PLy_exception_set:2 PLy_exception_set_plural:2,3
+GETTEXT_FLAGS = $(BACKEND_COMMON_GETTEXT_FLAGS) \
+ PLy_elog:2:c-format \
+ PLy_exception_set:2:c-format \
+ PLy_exception_set_plural:2:c-format \
+ PLy_exception_set_plural:3:c-format
diff --git a/src/pl/plpython/plpython.c b/src/pl/plpython/plpython.c
index 9081cffb49..0227f1a182 100644
--- a/src/pl/plpython/plpython.c
+++ b/src/pl/plpython/plpython.c
@@ -108,6 +108,7 @@ typedef int Py_ssize_t;
#include "utils/hsearch.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/typcache.h"
diff --git a/src/pl/plpython/plpython2u--1.0.sql b/src/pl/plpython/plpython2u--1.0.sql
index 0e47876502..e3a12b952e 100644
--- a/src/pl/plpython/plpython2u--1.0.sql
+++ b/src/pl/plpython/plpython2u--1.0.sql
@@ -7,3 +7,5 @@
*/
CREATE PROCEDURAL LANGUAGE plpython2u;
+
+COMMENT ON PROCEDURAL LANGUAGE plpython2u IS 'PL/Python2U untrusted procedural language';
diff --git a/src/pl/plpython/plpython3u--1.0.sql b/src/pl/plpython/plpython3u--1.0.sql
index d5c6e5ab96..cd1fb636a0 100644
--- a/src/pl/plpython/plpython3u--1.0.sql
+++ b/src/pl/plpython/plpython3u--1.0.sql
@@ -7,3 +7,5 @@
*/
CREATE PROCEDURAL LANGUAGE plpython3u;
+
+COMMENT ON PROCEDURAL LANGUAGE plpython3u IS 'PL/Python3U untrusted procedural language';
diff --git a/src/pl/plpython/plpythonu--1.0.sql b/src/pl/plpython/plpythonu--1.0.sql
index beb0aa1645..61d3d554c9 100644
--- a/src/pl/plpython/plpythonu--1.0.sql
+++ b/src/pl/plpython/plpythonu--1.0.sql
@@ -7,3 +7,5 @@
*/
CREATE PROCEDURAL LANGUAGE plpythonu;
+
+COMMENT ON PROCEDURAL LANGUAGE plpythonu IS 'PL/PythonU untrusted procedural language';
diff --git a/src/pl/tcl/nls.mk b/src/pl/tcl/nls.mk
index 1fc912c5eb..bb63f28b8c 100644
--- a/src/pl/tcl/nls.mk
+++ b/src/pl/tcl/nls.mk
@@ -1,5 +1,6 @@
# src/pl/tcl/nls.mk
-CATALOG_NAME := pltcl
-AVAIL_LANGUAGES := de es fr it ja pt_BR ro tr zh_CN zh_TW
-GETTEXT_FILES := pltcl.c
-GETTEXT_TRIGGERS:= errmsg errmsg_plural:1,2 errdetail errdetail_log errdetail_plural:1,2 errhint errcontext
+CATALOG_NAME = pltcl
+AVAIL_LANGUAGES = de es fr it ja pt_BR ro tr zh_CN zh_TW
+GETTEXT_FILES = pltcl.c
+GETTEXT_TRIGGERS = $(BACKEND_COMMON_GETTEXT_TRIGGERS)
+GETTEXT_FLAGS = $(BACKEND_COMMON_GETTEXT_FLAGS)
diff --git a/src/pl/tcl/pltcl--1.0.sql b/src/pl/tcl/pltcl--1.0.sql
index 897e1a1fe9..ecb264c818 100644
--- a/src/pl/tcl/pltcl--1.0.sql
+++ b/src/pl/tcl/pltcl--1.0.sql
@@ -7,3 +7,5 @@
*/
CREATE PROCEDURAL LANGUAGE pltcl;
+
+COMMENT ON PROCEDURAL LANGUAGE pltcl IS 'PL/Tcl procedural language';
diff --git a/src/pl/tcl/pltcl.c b/src/pl/tcl/pltcl.c
index 7b952b27e1..be8fe7a0f2 100644
--- a/src/pl/tcl/pltcl.c
+++ b/src/pl/tcl/pltcl.c
@@ -31,6 +31,7 @@
#include "utils/builtins.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/typcache.h"
@@ -493,8 +494,8 @@ pltcl_init_load_unknown(Tcl_Interp *interp)
* This is for backwards compatibility. To ensure that the table
* is trustworthy, we require it to be owned by a superuser.
************************************************************/
- pmrel = try_relation_openrv(makeRangeVar(NULL, "pltcl_modules", -1),
- AccessShareLock);
+ pmrel = relation_openrv_extended(makeRangeVar(NULL, "pltcl_modules", -1),
+ AccessShareLock, true);
if (pmrel == NULL)
return;
/* must be table or view, else ignore */
diff --git a/src/pl/tcl/pltclu--1.0.sql b/src/pl/tcl/pltclu--1.0.sql
index e53bb04e6d..72dcef11e5 100644
--- a/src/pl/tcl/pltclu--1.0.sql
+++ b/src/pl/tcl/pltclu--1.0.sql
@@ -7,3 +7,5 @@
*/
CREATE PROCEDURAL LANGUAGE pltclu;
+
+COMMENT ON PROCEDURAL LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';
diff --git a/src/port/path.c b/src/port/path.c
index 0d40a0bb9c..13ca4f3f1c 100644
--- a/src/port/path.c
+++ b/src/port/path.c
@@ -75,6 +75,17 @@ skip_drive(const char *path)
#endif
/*
+ * has_drive_prefix
+ *
+ * Return true if the given pathname has a drive prefix.
+ */
+bool
+has_drive_prefix(const char *path)
+{
+ return skip_drive(path) != path;
+}
+
+/*
* first_dir_separator
*
* Find the location of the first directory separator, return
@@ -304,7 +315,7 @@ canonicalize_path(char *path)
}
else if (pending_strips > 0 && *spath != '\0')
{
- /* trim a regular directory name cancelled by ".." */
+ /* trim a regular directory name canceled by ".." */
trim_directory(path);
pending_strips--;
/* foo/.. should become ".", not empty */
diff --git a/src/test/regress/expected/alter_table.out b/src/test/regress/expected/alter_table.out
index f84da45de6..005a88b084 100644
--- a/src/test/regress/expected/alter_table.out
+++ b/src/test/regress/expected/alter_table.out
@@ -196,14 +196,115 @@ DELETE FROM tmp3 where a=5;
-- Try (and succeed) and repeat to show it works on already valid constraint
ALTER TABLE tmp3 validate constraint tmpconstr;
ALTER TABLE tmp3 validate constraint tmpconstr;
+-- Try a non-verified CHECK constraint
+ALTER TABLE tmp3 ADD CONSTRAINT b_greater_than_ten CHECK (b > 10); -- fail
+ERROR: check constraint "b_greater_than_ten" is violated by some row
+ALTER TABLE tmp3 ADD CONSTRAINT b_greater_than_ten CHECK (b > 10) NOT VALID; -- succeeds
+ALTER TABLE tmp3 VALIDATE CONSTRAINT b_greater_than_ten; -- fails
+ERROR: check constraint "b_greater_than_ten" is violated by some row
+DELETE FROM tmp3 WHERE NOT b > 10;
+ALTER TABLE tmp3 VALIDATE CONSTRAINT b_greater_than_ten; -- succeeds
+ALTER TABLE tmp3 VALIDATE CONSTRAINT b_greater_than_ten; -- succeeds
+-- Test inherited NOT VALID CHECK constraints
+select * from tmp3;
+ a | b
+---+----
+ 1 | 20
+(1 row)
+
+CREATE TABLE tmp6 () INHERITS (tmp3);
+CREATE TABLE tmp7 () INHERITS (tmp3);
+INSERT INTO tmp6 VALUES (6, 30), (7, 16);
+ALTER TABLE tmp3 ADD CONSTRAINT b_le_20 CHECK (b <= 20) NOT VALID;
+ALTER TABLE tmp3 VALIDATE CONSTRAINT b_le_20; -- fails
+ERROR: check constraint "b_le_20" is violated by some row
+DELETE FROM tmp6 WHERE b > 20;
+ALTER TABLE tmp3 VALIDATE CONSTRAINT b_le_20; -- succeeds
+-- An already validated constraint must not be revalidated
+CREATE FUNCTION boo(int) RETURNS int IMMUTABLE STRICT LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'boo: %', $1; RETURN $1; END; $$;
+INSERT INTO tmp7 VALUES (8, 18);
+ALTER TABLE tmp7 ADD CONSTRAINT identity CHECK (b = boo(b));
+NOTICE: boo: 18
+ALTER TABLE tmp3 ADD CONSTRAINT IDENTITY check (b = boo(b)) NOT VALID;
+NOTICE: merging constraint "identity" with inherited definition
+ALTER TABLE tmp3 VALIDATE CONSTRAINT identity;
+NOTICE: boo: 16
+NOTICE: boo: 20
-- Try (and fail) to create constraint from tmp5(a) to tmp4(a) - unique constraint on
-- tmp4 is a,b
ALTER TABLE tmp5 add constraint tmpconstr foreign key(a) references tmp4(a) match full;
ERROR: there is no unique constraint matching given keys for referenced table "tmp4"
+DROP TABLE tmp7;
+DROP TABLE tmp6;
DROP TABLE tmp5;
DROP TABLE tmp4;
DROP TABLE tmp3;
DROP TABLE tmp2;
+-- NOT VALID with plan invalidation -- ensure we don't use a constraint for
+-- exclusion until validated
+set constraint_exclusion TO 'partition';
+create table nv_parent (d date);
+create table nv_child_2010 () inherits (nv_parent);
+create table nv_child_2011 () inherits (nv_parent);
+alter table nv_child_2010 add check (d between '2010-01-01'::date and '2010-12-31'::date) not valid;
+alter table nv_child_2011 add check (d between '2011-01-01'::date and '2011-12-31'::date) not valid;
+explain (costs off) select * from nv_parent where d between '2011-08-01' and '2011-08-31';
+ QUERY PLAN
+---------------------------------------------------------------------------------
+ Result
+ -> Append
+ -> Seq Scan on nv_parent
+ Filter: ((d >= '08-01-2011'::date) AND (d <= '08-31-2011'::date))
+ -> Seq Scan on nv_child_2010 nv_parent
+ Filter: ((d >= '08-01-2011'::date) AND (d <= '08-31-2011'::date))
+ -> Seq Scan on nv_child_2011 nv_parent
+ Filter: ((d >= '08-01-2011'::date) AND (d <= '08-31-2011'::date))
+(8 rows)
+
+create table nv_child_2009 (check (d between '2009-01-01'::date and '2009-12-31'::date)) inherits (nv_parent);
+explain (costs off) select * from nv_parent where d between '2011-08-01'::date and '2011-08-31'::date;
+ QUERY PLAN
+---------------------------------------------------------------------------------
+ Result
+ -> Append
+ -> Seq Scan on nv_parent
+ Filter: ((d >= '08-01-2011'::date) AND (d <= '08-31-2011'::date))
+ -> Seq Scan on nv_child_2010 nv_parent
+ Filter: ((d >= '08-01-2011'::date) AND (d <= '08-31-2011'::date))
+ -> Seq Scan on nv_child_2011 nv_parent
+ Filter: ((d >= '08-01-2011'::date) AND (d <= '08-31-2011'::date))
+(8 rows)
+
+explain (costs off) select * from nv_parent where d between '2009-08-01'::date and '2009-08-31'::date;
+ QUERY PLAN
+---------------------------------------------------------------------------------
+ Result
+ -> Append
+ -> Seq Scan on nv_parent
+ Filter: ((d >= '08-01-2009'::date) AND (d <= '08-31-2009'::date))
+ -> Seq Scan on nv_child_2010 nv_parent
+ Filter: ((d >= '08-01-2009'::date) AND (d <= '08-31-2009'::date))
+ -> Seq Scan on nv_child_2011 nv_parent
+ Filter: ((d >= '08-01-2009'::date) AND (d <= '08-31-2009'::date))
+ -> Seq Scan on nv_child_2009 nv_parent
+ Filter: ((d >= '08-01-2009'::date) AND (d <= '08-31-2009'::date))
+(10 rows)
+
+-- after validation, the constraint should be used
+alter table nv_child_2011 VALIDATE CONSTRAINT nv_child_2011_d_check;
+explain (costs off) select * from nv_parent where d between '2009-08-01'::date and '2009-08-31'::date;
+ QUERY PLAN
+---------------------------------------------------------------------------------
+ Result
+ -> Append
+ -> Seq Scan on nv_parent
+ Filter: ((d >= '08-01-2009'::date) AND (d <= '08-31-2009'::date))
+ -> Seq Scan on nv_child_2010 nv_parent
+ Filter: ((d >= '08-01-2009'::date) AND (d <= '08-31-2009'::date))
+ -> Seq Scan on nv_child_2009 nv_parent
+ Filter: ((d >= '08-01-2009'::date) AND (d <= '08-31-2009'::date))
+(8 rows)
+
-- Foreign key adding test with mixed types
-- Note: these tables are TEMP to avoid name conflicts when this test
-- is run in parallel with foreign_key.sql.
@@ -1509,7 +1610,7 @@ drop table another;
create table tab1 (a int, b text);
create table tab2 (x int, y tab1);
alter table tab1 alter column b type varchar; -- fails
-ERROR: cannot alter table "tab1" because column "tab2"."y" uses its rowtype
+ERROR: cannot alter table "tab1" because column "tab2.y" uses its row type
-- disallow recursive containment of row types
create temp table recur1 (f1 int);
alter table recur1 add column f2 recur1; -- fails
@@ -1568,90 +1669,88 @@ and c.relname != 'my_locks'
group by c.relname;
create table alterlock (f1 int primary key, f2 text);
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "alterlock_pkey" for table "alterlock"
--- share update exclusive
begin; alter table alterlock alter column f2 set statistics 150;
select * from my_locks order by 1;
- relname | max_lockmode
------------+--------------------------
- alterlock | ShareUpdateExclusiveLock
+ relname | max_lockmode
+-----------+---------------------
+ alterlock | AccessExclusiveLock
(1 row)
rollback;
begin; alter table alterlock cluster on alterlock_pkey;
select * from my_locks order by 1;
- relname | max_lockmode
-----------------+--------------------------
- alterlock | ShareUpdateExclusiveLock
- alterlock_pkey | ShareUpdateExclusiveLock
+ relname | max_lockmode
+----------------+---------------------
+ alterlock | AccessExclusiveLock
+ alterlock_pkey | AccessExclusiveLock
(2 rows)
commit;
begin; alter table alterlock set without cluster;
select * from my_locks order by 1;
- relname | max_lockmode
------------+--------------------------
- alterlock | ShareUpdateExclusiveLock
+ relname | max_lockmode
+-----------+---------------------
+ alterlock | AccessExclusiveLock
(1 row)
commit;
begin; alter table alterlock set (fillfactor = 100);
select * from my_locks order by 1;
- relname | max_lockmode
------------+--------------------------
- alterlock | ShareUpdateExclusiveLock
- pg_toast | ShareUpdateExclusiveLock
+ relname | max_lockmode
+-----------+---------------------
+ alterlock | AccessExclusiveLock
+ pg_toast | AccessExclusiveLock
(2 rows)
commit;
begin; alter table alterlock reset (fillfactor);
select * from my_locks order by 1;
- relname | max_lockmode
------------+--------------------------
- alterlock | ShareUpdateExclusiveLock
- pg_toast | ShareUpdateExclusiveLock
+ relname | max_lockmode
+-----------+---------------------
+ alterlock | AccessExclusiveLock
+ pg_toast | AccessExclusiveLock
(2 rows)
commit;
begin; alter table alterlock set (toast.autovacuum_enabled = off);
select * from my_locks order by 1;
- relname | max_lockmode
------------+--------------------------
- alterlock | ShareUpdateExclusiveLock
- pg_toast | ShareUpdateExclusiveLock
+ relname | max_lockmode
+-----------+---------------------
+ alterlock | AccessExclusiveLock
+ pg_toast | AccessExclusiveLock
(2 rows)
commit;
begin; alter table alterlock set (autovacuum_enabled = off);
select * from my_locks order by 1;
- relname | max_lockmode
------------+--------------------------
- alterlock | ShareUpdateExclusiveLock
- pg_toast | ShareUpdateExclusiveLock
+ relname | max_lockmode
+-----------+---------------------
+ alterlock | AccessExclusiveLock
+ pg_toast | AccessExclusiveLock
(2 rows)
commit;
begin; alter table alterlock alter column f2 set (n_distinct = 1);
select * from my_locks order by 1;
- relname | max_lockmode
------------+--------------------------
- alterlock | ShareUpdateExclusiveLock
+ relname | max_lockmode
+-----------+---------------------
+ alterlock | AccessExclusiveLock
(1 row)
rollback;
begin; alter table alterlock alter column f2 set storage extended;
select * from my_locks order by 1;
- relname | max_lockmode
------------+--------------------------
- alterlock | ShareUpdateExclusiveLock
+ relname | max_lockmode
+-----------+---------------------
+ alterlock | AccessExclusiveLock
(1 row)
rollback;
--- share row exclusive
begin; alter table alterlock alter column f2 set default 'x';
select * from my_locks order by 1;
- relname | max_lockmode
------------+-----------------------
- alterlock | ShareRowExclusiveLock
+ relname | max_lockmode
+-----------+---------------------
+ alterlock | AccessExclusiveLock
(1 row)
rollback;
@@ -1845,7 +1944,7 @@ DROP TYPE test_type;
CREATE TYPE test_type1 AS (a int, b text);
CREATE TABLE test_tbl1 (x int, y test_type1);
ALTER TYPE test_type1 ALTER ATTRIBUTE b TYPE varchar; -- fails
-ERROR: cannot alter type "test_type1" because column "test_tbl1"."y" uses it
+ERROR: cannot alter type "test_type1" because column "test_tbl1.y" uses it
CREATE TYPE test_type2 AS (a int, b text);
CREATE TABLE test_tbl2 OF test_type2;
CREATE TABLE test_tbl2_subclass () INHERITS (test_tbl2);
diff --git a/src/test/regress/expected/create_index.out b/src/test/regress/expected/create_index.out
index c78d9ee1e8..b23c712204 100644
--- a/src/test/regress/expected/create_index.out
+++ b/src/test/regress/expected/create_index.out
@@ -1279,6 +1279,18 @@ SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NOT NUL
1
(1 row)
+SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL AND unique1 > 500;
+ count
+-------
+ 499
+(1 row)
+
+SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique1 > 500;
+ count
+-------
+ 0
+(1 row)
+
DROP INDEX onek_nulltest;
CREATE UNIQUE INDEX onek_nulltest ON onek_with_null (unique2 desc,unique1);
SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL;
@@ -1305,6 +1317,18 @@ SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NOT NUL
1
(1 row)
+SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL AND unique1 > 500;
+ count
+-------
+ 499
+(1 row)
+
+SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique1 > 500;
+ count
+-------
+ 0
+(1 row)
+
DROP INDEX onek_nulltest;
CREATE UNIQUE INDEX onek_nulltest ON onek_with_null (unique2 desc nulls last,unique1);
SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL;
@@ -1331,6 +1355,18 @@ SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NOT NUL
1
(1 row)
+SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL AND unique1 > 500;
+ count
+-------
+ 499
+(1 row)
+
+SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique1 > 500;
+ count
+-------
+ 0
+(1 row)
+
DROP INDEX onek_nulltest;
CREATE UNIQUE INDEX onek_nulltest ON onek_with_null (unique2 nulls first,unique1);
SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL;
@@ -1357,6 +1393,18 @@ SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NOT NUL
1
(1 row)
+SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL AND unique1 > 500;
+ count
+-------
+ 499
+(1 row)
+
+SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique1 > 500;
+ count
+-------
+ 0
+(1 row)
+
RESET enable_seqscan;
RESET enable_indexscan;
RESET enable_bitmapscan;
diff --git a/src/test/regress/expected/create_view.out b/src/test/regress/expected/create_view.out
index f2c06854d0..f9490a3a55 100644
--- a/src/test/regress/expected/create_view.out
+++ b/src/test/regress/expected/create_view.out
@@ -81,11 +81,11 @@ CREATE VIEW temp_view_test.v2 AS SELECT * FROM base_table;
-- should fail
CREATE VIEW temp_view_test.v3_temp AS SELECT * FROM temp_table;
NOTICE: view "v3_temp" will be a temporary view
-ERROR: temporary tables cannot specify a schema name
+ERROR: cannot create temporary relation in non-temporary schema
-- should fail
CREATE SCHEMA test_schema
CREATE TEMP VIEW testview AS SELECT 1;
-ERROR: temporary tables cannot specify a schema name
+ERROR: cannot create temporary relation in non-temporary schema
-- joins: if any of the join relations are temporary, the view
-- should also be temporary
-- should be non-temp
diff --git a/src/test/regress/expected/domain.out b/src/test/regress/expected/domain.out
index 2586b07241..521fe01fa1 100644
--- a/src/test/regress/expected/domain.out
+++ b/src/test/regress/expected/domain.out
@@ -352,6 +352,17 @@ alter domain con drop constraint t;
insert into domcontest values (-5); --fails
ERROR: value for domain con violates check constraint "con_check"
insert into domcontest values (42);
+-- Test ALTER DOMAIN .. CONSTRAINT .. NOT VALID
+create domain things AS INT;
+CREATE TABLE thethings (stuff things);
+INSERT INTO thethings (stuff) VALUES (55);
+ALTER DOMAIN things ADD CONSTRAINT meow CHECK (VALUE < 11);
+ERROR: column "stuff" of table "thethings" contains values that violate the new constraint
+ALTER DOMAIN things ADD CONSTRAINT meow CHECK (VALUE < 11) NOT VALID;
+ALTER DOMAIN things VALIDATE CONSTRAINT meow;
+ERROR: column "stuff" of table "thethings" contains values that violate the new constraint
+UPDATE thethings SET stuff = 10;
+ALTER DOMAIN things VALIDATE CONSTRAINT meow;
-- Confirm ALTER DOMAIN with RULES.
create table domtab (col1 integer);
create domain dom as integer;
@@ -510,12 +521,12 @@ create type ddtest1 as (f1 posint);
create table ddtest2(f1 ddtest1);
insert into ddtest2 values(row(-1));
alter domain posint add constraint c1 check(value >= 0);
-ERROR: cannot alter type "posint" because column "ddtest2"."f1" uses it
+ERROR: cannot alter type "posint" because column "ddtest2.f1" uses it
drop table ddtest2;
create table ddtest2(f1 ddtest1[]);
insert into ddtest2 values('{(-1)}');
alter domain posint add constraint c1 check(value >= 0);
-ERROR: cannot alter type "posint" because column "ddtest2"."f1" uses it
+ERROR: cannot alter type "posint" because column "ddtest2.f1" uses it
drop table ddtest2;
alter domain posint add constraint c1 check(value >= 0);
create domain posint2 as posint check (value % 2 = 0);
diff --git a/src/test/regress/expected/foreign_data.out b/src/test/regress/expected/foreign_data.out
index e18eed8c1c..2b3eddfc8b 100644
--- a/src/test/regress/expected/foreign_data.out
+++ b/src/test/regress/expected/foreign_data.out
@@ -694,14 +694,14 @@ ALTER FOREIGN TABLE ft1 ALTER COLUMN c5 DROP DEFAULT; -- ERROR
ERROR: "ft1" is not a table or view
ALTER FOREIGN TABLE ft1 ALTER COLUMN c6 SET NOT NULL;
ALTER FOREIGN TABLE ft1 ALTER COLUMN c7 DROP NOT NULL;
-ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE char(10) using '0'; -- ERROR
-ERROR: ALTER TYPE USING is only supported on plain tables
+ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE char(10) USING '0'; -- ERROR
+ERROR: "ft1" is not a table
ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE char(10);
ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 SET DATA TYPE text;
-- can't change the column type if it's used elsewhere
CREATE TABLE use_ft1_column_type (x ft1);
ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 SET DATA TYPE integer; -- ERROR
-ERROR: cannot alter foreign table "ft1" because column "use_ft1_column_type"."x" uses its rowtype
+ERROR: cannot alter foreign table "ft1" because column "use_ft1_column_type.x" uses its row type
DROP TABLE use_ft1_column_type;
ALTER FOREIGN TABLE ft1 ADD CONSTRAINT ft1_c9_check CHECK (c9 < 0); -- ERROR
ERROR: "ft1" is not a table
diff --git a/src/test/regress/expected/prepared_xacts.out b/src/test/regress/expected/prepared_xacts.out
index 1a6b4ce1d9..e094476cb4 100644
--- a/src/test/regress/expected/prepared_xacts.out
+++ b/src/test/regress/expected/prepared_xacts.out
@@ -88,17 +88,17 @@ SELECT gid FROM pg_prepared_xacts;
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
INSERT INTO pxtest1 VALUES ('fff');
+-- This should fail, because the gid foo3 is already in use
+PREPARE TRANSACTION 'foo3';
+ERROR: transaction identifier "foo3" is already in use
SELECT * FROM pxtest1;
foobar
--------
aaa
ddd
- fff
-(3 rows)
+(2 rows)
--- This should fail, because the gid foo3 is already in use
-PREPARE TRANSACTION 'foo3';
-ERROR: transaction identifier "foo3" is already in use
+ROLLBACK PREPARED 'foo3';
SELECT * FROM pxtest1;
foobar
--------
@@ -106,7 +106,24 @@ SELECT * FROM pxtest1;
ddd
(2 rows)
-ROLLBACK PREPARED 'foo3';
+-- Test serialization failure (SSI)
+BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
+UPDATE pxtest1 SET foobar = 'eee' WHERE foobar = 'ddd';
+SELECT * FROM pxtest1;
+ foobar
+--------
+ aaa
+ eee
+(2 rows)
+
+PREPARE TRANSACTION 'foo4';
+SELECT gid FROM pg_prepared_xacts;
+ gid
+------
+ foo4
+(1 row)
+
+BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SELECT * FROM pxtest1;
foobar
--------
@@ -114,6 +131,24 @@ SELECT * FROM pxtest1;
ddd
(2 rows)
+INSERT INTO pxtest1 VALUES ('fff');
+-- This should fail, because the two transactions have a write-skew anomaly
+PREPARE TRANSACTION 'foo5';
+ERROR: could not serialize access due to read/write dependencies among transactions
+DETAIL: Canceled on commit attempt with conflict in from prepared pivot.
+HINT: The transaction might succeed if retried.
+SELECT gid FROM pg_prepared_xacts;
+ gid
+------
+ foo4
+(1 row)
+
+ROLLBACK PREPARED 'foo4';
+SELECT gid FROM pg_prepared_xacts;
+ gid
+-----
+(0 rows)
+
-- Clean up
DROP TABLE pxtest1;
-- Test subtransactions
diff --git a/src/test/regress/expected/prepared_xacts_1.out b/src/test/regress/expected/prepared_xacts_1.out
index 5051eaabd7..acd9046732 100644
--- a/src/test/regress/expected/prepared_xacts_1.out
+++ b/src/test/regress/expected/prepared_xacts_1.out
@@ -92,13 +92,6 @@ SELECT gid FROM pg_prepared_xacts;
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
INSERT INTO pxtest1 VALUES ('fff');
-SELECT * FROM pxtest1;
- foobar
---------
- aaa
- fff
-(2 rows)
-
-- This should fail, because the gid foo3 is already in use
PREPARE TRANSACTION 'foo3';
ERROR: prepared transactions are disabled
@@ -117,6 +110,47 @@ SELECT * FROM pxtest1;
aaa
(1 row)
+-- Test serialization failure (SSI)
+BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
+UPDATE pxtest1 SET foobar = 'eee' WHERE foobar = 'ddd';
+SELECT * FROM pxtest1;
+ foobar
+--------
+ aaa
+(1 row)
+
+PREPARE TRANSACTION 'foo4';
+ERROR: prepared transactions are disabled
+HINT: Set max_prepared_transactions to a nonzero value.
+SELECT gid FROM pg_prepared_xacts;
+ gid
+-----
+(0 rows)
+
+BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
+SELECT * FROM pxtest1;
+ foobar
+--------
+ aaa
+(1 row)
+
+INSERT INTO pxtest1 VALUES ('fff');
+-- This should fail, because the two transactions have a write-skew anomaly
+PREPARE TRANSACTION 'foo5';
+ERROR: prepared transactions are disabled
+HINT: Set max_prepared_transactions to a nonzero value.
+SELECT gid FROM pg_prepared_xacts;
+ gid
+-----
+(0 rows)
+
+ROLLBACK PREPARED 'foo4';
+ERROR: prepared transaction with identifier "foo4" does not exist
+SELECT gid FROM pg_prepared_xacts;
+ gid
+-----
+(0 rows)
+
-- Clean up
DROP TABLE pxtest1;
-- Test subtransactions
diff --git a/src/test/regress/expected/rowtypes.out b/src/test/regress/expected/rowtypes.out
index 9430bd9b48..a5ddbdc140 100644
--- a/src/test/regress/expected/rowtypes.out
+++ b/src/test/regress/expected/rowtypes.out
@@ -84,7 +84,7 @@ select * from people;
-- at the moment this will not work due to ALTER TABLE inadequacy:
alter table fullname add column suffix text default '';
-ERROR: cannot alter table "fullname" because column "people"."fn" uses its rowtype
+ERROR: cannot alter table "fullname" because column "people.fn" uses its row type
-- but this should work:
alter table fullname add column suffix text default null;
select * from people;
diff --git a/src/test/regress/expected/sequence.out b/src/test/regress/expected/sequence.out
index 13e1565272..968fcce8ac 100644
--- a/src/test/regress/expected/sequence.out
+++ b/src/test/regress/expected/sequence.out
@@ -16,6 +16,84 @@ SELECT * FROM serialTest;
force | 100
(3 rows)
+-- test smallserial / bigserial
+CREATE TABLE serialTest2 (f1 text, f2 serial, f3 smallserial, f4 serial2,
+ f5 bigserial, f6 serial8);
+NOTICE: CREATE TABLE will create implicit sequence "serialtest2_f2_seq" for serial column "serialtest2.f2"
+NOTICE: CREATE TABLE will create implicit sequence "serialtest2_f3_seq" for serial column "serialtest2.f3"
+NOTICE: CREATE TABLE will create implicit sequence "serialtest2_f4_seq" for serial column "serialtest2.f4"
+NOTICE: CREATE TABLE will create implicit sequence "serialtest2_f5_seq" for serial column "serialtest2.f5"
+NOTICE: CREATE TABLE will create implicit sequence "serialtest2_f6_seq" for serial column "serialtest2.f6"
+INSERT INTO serialTest2 (f1)
+ VALUES ('test_defaults');
+INSERT INTO serialTest2 (f1, f2, f3, f4, f5, f6)
+ VALUES ('test_max_vals', 2147483647, 32767, 32767, 9223372036854775807,
+ 9223372036854775807),
+ ('test_min_vals', -2147483648, -32768, -32768, -9223372036854775808,
+ -9223372036854775808);
+-- All these INSERTs should fail:
+INSERT INTO serialTest2 (f1, f3)
+ VALUES ('bogus', -32769);
+ERROR: smallint out of range
+INSERT INTO serialTest2 (f1, f4)
+ VALUES ('bogus', -32769);
+ERROR: smallint out of range
+INSERT INTO serialTest2 (f1, f3)
+ VALUES ('bogus', 32768);
+ERROR: smallint out of range
+INSERT INTO serialTest2 (f1, f4)
+ VALUES ('bogus', 32768);
+ERROR: smallint out of range
+INSERT INTO serialTest2 (f1, f5)
+ VALUES ('bogus', -9223372036854775809);
+ERROR: bigint out of range
+INSERT INTO serialTest2 (f1, f6)
+ VALUES ('bogus', -9223372036854775809);
+ERROR: bigint out of range
+INSERT INTO serialTest2 (f1, f5)
+ VALUES ('bogus', 9223372036854775808);
+ERROR: bigint out of range
+INSERT INTO serialTest2 (f1, f6)
+ VALUES ('bogus', 9223372036854775808);
+ERROR: bigint out of range
+SELECT * FROM serialTest2 ORDER BY f2 ASC;
+ f1 | f2 | f3 | f4 | f5 | f6
+---------------+-------------+--------+--------+----------------------+----------------------
+ test_min_vals | -2147483648 | -32768 | -32768 | -9223372036854775808 | -9223372036854775808
+ test_defaults | 1 | 1 | 1 | 1 | 1
+ test_max_vals | 2147483647 | 32767 | 32767 | 9223372036854775807 | 9223372036854775807
+(3 rows)
+
+SELECT nextval('serialTest2_f2_seq');
+ nextval
+---------
+ 2
+(1 row)
+
+SELECT nextval('serialTest2_f3_seq');
+ nextval
+---------
+ 2
+(1 row)
+
+SELECT nextval('serialTest2_f4_seq');
+ nextval
+---------
+ 2
+(1 row)
+
+SELECT nextval('serialTest2_f5_seq');
+ nextval
+---------
+ 2
+(1 row)
+
+SELECT nextval('serialTest2_f6_seq');
+ nextval
+---------
+ 2
+(1 row)
+
-- basic sequence operations using both text and oid references
CREATE SEQUENCE sequence_test;
SELECT nextval('sequence_test'::text);
@@ -221,11 +299,19 @@ SELECT nextval('sequence_test2');
(1 row)
-- Information schema
-SELECT * FROM information_schema.sequences WHERE sequence_name IN ('sequence_test2');
- sequence_catalog | sequence_schema | sequence_name | data_type | numeric_precision | numeric_precision_radix | numeric_scale | start_value | minimum_value | maximum_value | increment | cycle_option
-------------------+-----------------+----------------+-----------+-------------------+-------------------------+---------------+-------------+---------------+---------------+-----------+--------------
- regression | public | sequence_test2 | bigint | 64 | 2 | 0 | 32 | 5 | 36 | 4 | YES
-(1 row)
+SELECT * FROM information_schema.sequences WHERE sequence_name IN
+ ('sequence_test2', 'serialtest2_f2_seq', 'serialtest2_f3_seq',
+ 'serialtest2_f4_seq', 'serialtest2_f5_seq', 'serialtest2_f6_seq')
+ ORDER BY sequence_name ASC;
+ sequence_catalog | sequence_schema | sequence_name | data_type | numeric_precision | numeric_precision_radix | numeric_scale | start_value | minimum_value | maximum_value | increment | cycle_option
+------------------+-----------------+--------------------+-----------+-------------------+-------------------------+---------------+-------------+---------------+---------------------+-----------+--------------
+ regression | public | sequence_test2 | bigint | 64 | 2 | 0 | 32 | 5 | 36 | 4 | YES
+ regression | public | serialtest2_f2_seq | bigint | 64 | 2 | 0 | 1 | 1 | 9223372036854775807 | 1 | NO
+ regression | public | serialtest2_f3_seq | bigint | 64 | 2 | 0 | 1 | 1 | 9223372036854775807 | 1 | NO
+ regression | public | serialtest2_f4_seq | bigint | 64 | 2 | 0 | 1 | 1 | 9223372036854775807 | 1 | NO
+ regression | public | serialtest2_f5_seq | bigint | 64 | 2 | 0 | 1 | 1 | 9223372036854775807 | 1 | NO
+ regression | public | serialtest2_f6_seq | bigint | 64 | 2 | 0 | 1 | 1 | 9223372036854775807 | 1 | NO
+(6 rows)
-- Test comments
COMMENT ON SEQUENCE asdf IS 'won''t work';
@@ -289,5 +375,17 @@ REVOKE ALL ON seq3 FROM seq_user;
SELECT lastval();
ERROR: permission denied for sequence seq3
ROLLBACK;
+-- Sequences should get wiped out as well:
+DROP TABLE serialTest, serialTest2;
+-- Make sure sequences are gone:
+SELECT * FROM information_schema.sequences WHERE sequence_name IN
+ ('sequence_test2', 'serialtest2_f2_seq', 'serialtest2_f3_seq',
+ 'serialtest2_f4_seq', 'serialtest2_f5_seq', 'serialtest2_f6_seq')
+ ORDER BY sequence_name ASC;
+ sequence_catalog | sequence_schema | sequence_name | data_type | numeric_precision | numeric_precision_radix | numeric_scale | start_value | minimum_value | maximum_value | increment | cycle_option
+------------------+-----------------+----------------+-----------+-------------------+-------------------------+---------------+-------------+---------------+---------------+-----------+--------------
+ regression | public | sequence_test2 | bigint | 64 | 2 | 0 | 32 | 5 | 36 | 4 | YES
+(1 row)
+
DROP USER seq_user;
DROP SEQUENCE seq;
diff --git a/src/test/regress/expected/sequence_1.out b/src/test/regress/expected/sequence_1.out
index 8978953f17..d06c8818c7 100644
--- a/src/test/regress/expected/sequence_1.out
+++ b/src/test/regress/expected/sequence_1.out
@@ -16,6 +16,84 @@ SELECT * FROM serialTest;
force | 100
(3 rows)
+-- test smallserial / bigserial
+CREATE TABLE serialTest2 (f1 text, f2 serial, f3 smallserial, f4 serial2,
+ f5 bigserial, f6 serial8);
+NOTICE: CREATE TABLE will create implicit sequence "serialtest2_f2_seq" for serial column "serialtest2.f2"
+NOTICE: CREATE TABLE will create implicit sequence "serialtest2_f3_seq" for serial column "serialtest2.f3"
+NOTICE: CREATE TABLE will create implicit sequence "serialtest2_f4_seq" for serial column "serialtest2.f4"
+NOTICE: CREATE TABLE will create implicit sequence "serialtest2_f5_seq" for serial column "serialtest2.f5"
+NOTICE: CREATE TABLE will create implicit sequence "serialtest2_f6_seq" for serial column "serialtest2.f6"
+INSERT INTO serialTest2 (f1)
+ VALUES ('test_defaults');
+INSERT INTO serialTest2 (f1, f2, f3, f4, f5, f6)
+ VALUES ('test_max_vals', 2147483647, 32767, 32767, 9223372036854775807,
+ 9223372036854775807),
+ ('test_min_vals', -2147483648, -32768, -32768, -9223372036854775808,
+ -9223372036854775808);
+-- All these INSERTs should fail:
+INSERT INTO serialTest2 (f1, f3)
+ VALUES ('bogus', -32769);
+ERROR: smallint out of range
+INSERT INTO serialTest2 (f1, f4)
+ VALUES ('bogus', -32769);
+ERROR: smallint out of range
+INSERT INTO serialTest2 (f1, f3)
+ VALUES ('bogus', 32768);
+ERROR: smallint out of range
+INSERT INTO serialTest2 (f1, f4)
+ VALUES ('bogus', 32768);
+ERROR: smallint out of range
+INSERT INTO serialTest2 (f1, f5)
+ VALUES ('bogus', -9223372036854775809);
+ERROR: bigint out of range
+INSERT INTO serialTest2 (f1, f6)
+ VALUES ('bogus', -9223372036854775809);
+ERROR: bigint out of range
+INSERT INTO serialTest2 (f1, f5)
+ VALUES ('bogus', 9223372036854775808);
+ERROR: bigint out of range
+INSERT INTO serialTest2 (f1, f6)
+ VALUES ('bogus', 9223372036854775808);
+ERROR: bigint out of range
+SELECT * FROM serialTest2 ORDER BY f2 ASC;
+ f1 | f2 | f3 | f4 | f5 | f6
+---------------+-------------+--------+--------+----------------------+----------------------
+ test_min_vals | -2147483648 | -32768 | -32768 | -9223372036854775808 | -9223372036854775808
+ test_defaults | 1 | 1 | 1 | 1 | 1
+ test_max_vals | 2147483647 | 32767 | 32767 | 9223372036854775807 | 9223372036854775807
+(3 rows)
+
+SELECT nextval('serialTest2_f2_seq');
+ nextval
+---------
+ 2
+(1 row)
+
+SELECT nextval('serialTest2_f3_seq');
+ nextval
+---------
+ 2
+(1 row)
+
+SELECT nextval('serialTest2_f4_seq');
+ nextval
+---------
+ 2
+(1 row)
+
+SELECT nextval('serialTest2_f5_seq');
+ nextval
+---------
+ 2
+(1 row)
+
+SELECT nextval('serialTest2_f6_seq');
+ nextval
+---------
+ 2
+(1 row)
+
-- basic sequence operations using both text and oid references
CREATE SEQUENCE sequence_test;
SELECT nextval('sequence_test'::text);
@@ -221,11 +299,19 @@ SELECT nextval('sequence_test2');
(1 row)
-- Information schema
-SELECT * FROM information_schema.sequences WHERE sequence_name IN ('sequence_test2');
- sequence_catalog | sequence_schema | sequence_name | data_type | numeric_precision | numeric_precision_radix | numeric_scale | start_value | minimum_value | maximum_value | increment | cycle_option
-------------------+-----------------+----------------+-----------+-------------------+-------------------------+---------------+-------------+---------------+---------------+-----------+--------------
- regression | public | sequence_test2 | bigint | 64 | 2 | 0 | 32 | 5 | 36 | 4 | YES
-(1 row)
+SELECT * FROM information_schema.sequences WHERE sequence_name IN
+ ('sequence_test2', 'serialtest2_f2_seq', 'serialtest2_f3_seq',
+ 'serialtest2_f4_seq', 'serialtest2_f5_seq', 'serialtest2_f6_seq')
+ ORDER BY sequence_name ASC;
+ sequence_catalog | sequence_schema | sequence_name | data_type | numeric_precision | numeric_precision_radix | numeric_scale | start_value | minimum_value | maximum_value | increment | cycle_option
+------------------+-----------------+--------------------+-----------+-------------------+-------------------------+---------------+-------------+---------------+---------------------+-----------+--------------
+ regression | public | sequence_test2 | bigint | 64 | 2 | 0 | 32 | 5 | 36 | 4 | YES
+ regression | public | serialtest2_f2_seq | bigint | 64 | 2 | 0 | 1 | 1 | 9223372036854775807 | 1 | NO
+ regression | public | serialtest2_f3_seq | bigint | 64 | 2 | 0 | 1 | 1 | 9223372036854775807 | 1 | NO
+ regression | public | serialtest2_f4_seq | bigint | 64 | 2 | 0 | 1 | 1 | 9223372036854775807 | 1 | NO
+ regression | public | serialtest2_f5_seq | bigint | 64 | 2 | 0 | 1 | 1 | 9223372036854775807 | 1 | NO
+ regression | public | serialtest2_f6_seq | bigint | 64 | 2 | 0 | 1 | 1 | 9223372036854775807 | 1 | NO
+(6 rows)
-- Test comments
COMMENT ON SEQUENCE asdf IS 'won''t work';
@@ -289,5 +375,17 @@ REVOKE ALL ON seq3 FROM seq_user;
SELECT lastval();
ERROR: permission denied for sequence seq3
ROLLBACK;
+-- Sequences should get wiped out as well:
+DROP TABLE serialTest, serialTest2;
+-- Make sure sequences are gone:
+SELECT * FROM information_schema.sequences WHERE sequence_name IN
+ ('sequence_test2', 'serialtest2_f2_seq', 'serialtest2_f3_seq',
+ 'serialtest2_f4_seq', 'serialtest2_f5_seq', 'serialtest2_f6_seq')
+ ORDER BY sequence_name ASC;
+ sequence_catalog | sequence_schema | sequence_name | data_type | numeric_precision | numeric_precision_radix | numeric_scale | start_value | minimum_value | maximum_value | increment | cycle_option
+------------------+-----------------+----------------+-----------+-------------------+-------------------------+---------------+-------------+---------------+---------------+-----------+--------------
+ regression | public | sequence_test2 | bigint | 64 | 2 | 0 | 32 | 5 | 36 | 4 | YES
+(1 row)
+
DROP USER seq_user;
DROP SEQUENCE seq;
diff --git a/src/test/regress/expected/subselect.out b/src/test/regress/expected/subselect.out
index 8f180b9b19..e638f0a60c 100644
--- a/src/test/regress/expected/subselect.out
+++ b/src/test/regress/expected/subselect.out
@@ -266,7 +266,7 @@ SELECT * FROM foo WHERE id IN
CREATE TABLE orderstest (
approver_ref integer,
po_ref integer,
- ordercancelled boolean
+ ordercanceled boolean
);
INSERT INTO orderstest VALUES (1, 1, false);
INSERT INTO orderstest VALUES (66, 5, false);
@@ -285,8 +285,8 @@ SELECT *,
WHEN ord.approver_ref=1 THEN '---' ELSE 'Approved'
END) AS "Approved",
(SELECT CASE
- WHEN ord.ordercancelled
- THEN 'Cancelled'
+ WHEN ord.ordercanceled
+ THEN 'Canceled'
ELSE
(SELECT CASE
WHEN ord.po_ref=1
@@ -300,8 +300,8 @@ SELECT *,
END)
END) AS "Status",
(CASE
- WHEN ord.ordercancelled
- THEN 'Cancelled'
+ WHEN ord.ordercanceled
+ THEN 'Canceled'
ELSE
(CASE
WHEN ord.po_ref=1
@@ -316,19 +316,19 @@ END) AS "Status",
END) AS "Status_OK"
FROM orderstest ord;
SELECT * FROM orders_view;
- approver_ref | po_ref | ordercancelled | Approved | Status | Status_OK
---------------+--------+----------------+----------+-----------+-----------
- 1 | 1 | f | --- | --- | ---
- 66 | 5 | f | Approved | PO | PO
- 66 | 6 | f | Approved | PO | PO
- 66 | 7 | f | Approved | PO | PO
- 66 | 1 | t | Approved | Cancelled | Cancelled
- 66 | 8 | f | Approved | PO | PO
- 66 | 1 | f | Approved | Approved | Approved
- 77 | 1 | f | Approved | Approved | Approved
- 1 | 1 | f | --- | --- | ---
- 66 | 1 | f | Approved | Approved | Approved
- 1 | 1 | f | --- | --- | ---
+ approver_ref | po_ref | ordercanceled | Approved | Status | Status_OK
+--------------+--------+---------------+----------+----------+-----------
+ 1 | 1 | f | --- | --- | ---
+ 66 | 5 | f | Approved | PO | PO
+ 66 | 6 | f | Approved | PO | PO
+ 66 | 7 | f | Approved | PO | PO
+ 66 | 1 | t | Approved | Canceled | Canceled
+ 66 | 8 | f | Approved | PO | PO
+ 66 | 1 | f | Approved | Approved | Approved
+ 77 | 1 | f | Approved | Approved | Approved
+ 1 | 1 | f | --- | --- | ---
+ 66 | 1 | f | Approved | Approved | Approved
+ 1 | 1 | f | --- | --- | ---
(11 rows)
DROP TABLE orderstest cascade;
diff --git a/src/test/regress/expected/text.out b/src/test/regress/expected/text.out
index b84e8544d5..f5cb5e2509 100644
--- a/src/test/regress/expected/text.out
+++ b/src/test/regress/expected/text.out
@@ -203,7 +203,7 @@ select format('INSERT INTO %I VALUES(%L,%L)', 'mytab', NULL, 'Hello');
-- should fail, sql identifier cannot be NULL
select format('INSERT INTO %I VALUES(%L,%L)', NULL, 10, 'Hello');
-ERROR: NULL cannot be escaped as an SQL identifier
+ERROR: null values cannot be formatted as an SQL identifier
-- check positional placeholders
select format('%1$s %3$s', 1, 2, 3);
format
diff --git a/src/test/regress/regress.c b/src/test/regress/regress.c
index 8e4286a643..daee5af49e 100644
--- a/src/test/regress/regress.c
+++ b/src/test/regress/regress.c
@@ -16,6 +16,7 @@
#include "executor/spi.h"
#include "utils/builtins.h"
#include "utils/geo_decls.h"
+#include "utils/rel.h"
#define P_MAXDIG 12
diff --git a/src/test/regress/sql/alter_table.sql b/src/test/regress/sql/alter_table.sql
index b5d76ea68e..95e898c0ea 100644
--- a/src/test/regress/sql/alter_table.sql
+++ b/src/test/regress/sql/alter_table.sql
@@ -236,12 +236,41 @@ DELETE FROM tmp3 where a=5;
ALTER TABLE tmp3 validate constraint tmpconstr;
ALTER TABLE tmp3 validate constraint tmpconstr;
+-- Try a non-verified CHECK constraint
+ALTER TABLE tmp3 ADD CONSTRAINT b_greater_than_ten CHECK (b > 10); -- fail
+ALTER TABLE tmp3 ADD CONSTRAINT b_greater_than_ten CHECK (b > 10) NOT VALID; -- succeeds
+ALTER TABLE tmp3 VALIDATE CONSTRAINT b_greater_than_ten; -- fails
+DELETE FROM tmp3 WHERE NOT b > 10;
+ALTER TABLE tmp3 VALIDATE CONSTRAINT b_greater_than_ten; -- succeeds
+ALTER TABLE tmp3 VALIDATE CONSTRAINT b_greater_than_ten; -- succeeds
+
+-- Test inherited NOT VALID CHECK constraints
+select * from tmp3;
+CREATE TABLE tmp6 () INHERITS (tmp3);
+CREATE TABLE tmp7 () INHERITS (tmp3);
+
+INSERT INTO tmp6 VALUES (6, 30), (7, 16);
+ALTER TABLE tmp3 ADD CONSTRAINT b_le_20 CHECK (b <= 20) NOT VALID;
+ALTER TABLE tmp3 VALIDATE CONSTRAINT b_le_20; -- fails
+DELETE FROM tmp6 WHERE b > 20;
+ALTER TABLE tmp3 VALIDATE CONSTRAINT b_le_20; -- succeeds
+
+-- An already validated constraint must not be revalidated
+CREATE FUNCTION boo(int) RETURNS int IMMUTABLE STRICT LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'boo: %', $1; RETURN $1; END; $$;
+INSERT INTO tmp7 VALUES (8, 18);
+ALTER TABLE tmp7 ADD CONSTRAINT identity CHECK (b = boo(b));
+ALTER TABLE tmp3 ADD CONSTRAINT IDENTITY check (b = boo(b)) NOT VALID;
+ALTER TABLE tmp3 VALIDATE CONSTRAINT identity;
-- Try (and fail) to create constraint from tmp5(a) to tmp4(a) - unique constraint on
-- tmp4 is a,b
ALTER TABLE tmp5 add constraint tmpconstr foreign key(a) references tmp4(a) match full;
+DROP TABLE tmp7;
+
+DROP TABLE tmp6;
+
DROP TABLE tmp5;
DROP TABLE tmp4;
@@ -250,6 +279,23 @@ DROP TABLE tmp3;
DROP TABLE tmp2;
+-- NOT VALID with plan invalidation -- ensure we don't use a constraint for
+-- exclusion until validated
+set constraint_exclusion TO 'partition';
+create table nv_parent (d date);
+create table nv_child_2010 () inherits (nv_parent);
+create table nv_child_2011 () inherits (nv_parent);
+alter table nv_child_2010 add check (d between '2010-01-01'::date and '2010-12-31'::date) not valid;
+alter table nv_child_2011 add check (d between '2011-01-01'::date and '2011-12-31'::date) not valid;
+explain (costs off) select * from nv_parent where d between '2011-08-01' and '2011-08-31';
+create table nv_child_2009 (check (d between '2009-01-01'::date and '2009-12-31'::date)) inherits (nv_parent);
+explain (costs off) select * from nv_parent where d between '2011-08-01'::date and '2011-08-31'::date;
+explain (costs off) select * from nv_parent where d between '2009-08-01'::date and '2009-08-31'::date;
+-- after validation, the constraint should be used
+alter table nv_child_2011 VALIDATE CONSTRAINT nv_child_2011_d_check;
+explain (costs off) select * from nv_parent where d between '2009-08-01'::date and '2009-08-31'::date;
+
+
-- Foreign key adding test with mixed types
-- Note: these tables are TEMP to avoid name conflicts when this test
@@ -1175,7 +1221,6 @@ group by c.relname;
create table alterlock (f1 int primary key, f2 text);
--- share update exclusive
begin; alter table alterlock alter column f2 set statistics 150;
select * from my_locks order by 1;
rollback;
@@ -1212,7 +1257,6 @@ begin; alter table alterlock alter column f2 set storage extended;
select * from my_locks order by 1;
rollback;
--- share row exclusive
begin; alter table alterlock alter column f2 set default 'x';
select * from my_locks order by 1;
rollback;
diff --git a/src/test/regress/sql/create_index.sql b/src/test/regress/sql/create_index.sql
index 31b49ca227..bf27379f59 100644
--- a/src/test/regress/sql/create_index.sql
+++ b/src/test/regress/sql/create_index.sql
@@ -451,6 +451,8 @@ SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL;
SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NULL;
SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL;
SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NOT NULL;
+SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL AND unique1 > 500;
+SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique1 > 500;
DROP INDEX onek_nulltest;
@@ -460,6 +462,8 @@ SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL;
SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NULL;
SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL;
SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NOT NULL;
+SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL AND unique1 > 500;
+SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique1 > 500;
DROP INDEX onek_nulltest;
@@ -469,6 +473,8 @@ SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL;
SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NULL;
SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL;
SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NOT NULL;
+SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL AND unique1 > 500;
+SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique1 > 500;
DROP INDEX onek_nulltest;
@@ -478,6 +484,8 @@ SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL;
SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NULL;
SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL;
SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NOT NULL;
+SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL AND unique1 > 500;
+SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique1 > 500;
RESET enable_seqscan;
RESET enable_indexscan;
diff --git a/src/test/regress/sql/domain.sql b/src/test/regress/sql/domain.sql
index 1cc447b8a2..449b4234a5 100644
--- a/src/test/regress/sql/domain.sql
+++ b/src/test/regress/sql/domain.sql
@@ -259,6 +259,16 @@ alter domain con drop constraint t;
insert into domcontest values (-5); --fails
insert into domcontest values (42);
+-- Test ALTER DOMAIN .. CONSTRAINT .. NOT VALID
+create domain things AS INT;
+CREATE TABLE thethings (stuff things);
+INSERT INTO thethings (stuff) VALUES (55);
+ALTER DOMAIN things ADD CONSTRAINT meow CHECK (VALUE < 11);
+ALTER DOMAIN things ADD CONSTRAINT meow CHECK (VALUE < 11) NOT VALID;
+ALTER DOMAIN things VALIDATE CONSTRAINT meow;
+UPDATE thethings SET stuff = 10;
+ALTER DOMAIN things VALIDATE CONSTRAINT meow;
+
-- Confirm ALTER DOMAIN with RULES.
create table domtab (col1 integer);
create domain dom as integer;
diff --git a/src/test/regress/sql/foreign_data.sql b/src/test/regress/sql/foreign_data.sql
index d3239216c1..58e5060477 100644
--- a/src/test/regress/sql/foreign_data.sql
+++ b/src/test/regress/sql/foreign_data.sql
@@ -294,7 +294,7 @@ ALTER FOREIGN TABLE ft1 ALTER COLUMN c4 SET DEFAULT 0; -- ERROR
ALTER FOREIGN TABLE ft1 ALTER COLUMN c5 DROP DEFAULT; -- ERROR
ALTER FOREIGN TABLE ft1 ALTER COLUMN c6 SET NOT NULL;
ALTER FOREIGN TABLE ft1 ALTER COLUMN c7 DROP NOT NULL;
-ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE char(10) using '0'; -- ERROR
+ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE char(10) USING '0'; -- ERROR
ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE char(10);
ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 SET DATA TYPE text;
-- can't change the column type if it's used elsewhere
diff --git a/src/test/regress/sql/prepared_xacts.sql b/src/test/regress/sql/prepared_xacts.sql
index 2bdbb0d189..e06c9d47c1 100644
--- a/src/test/regress/sql/prepared_xacts.sql
+++ b/src/test/regress/sql/prepared_xacts.sql
@@ -54,7 +54,6 @@ SELECT gid FROM pg_prepared_xacts;
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
INSERT INTO pxtest1 VALUES ('fff');
-SELECT * FROM pxtest1;
-- This should fail, because the gid foo3 is already in use
PREPARE TRANSACTION 'foo3';
@@ -65,6 +64,27 @@ ROLLBACK PREPARED 'foo3';
SELECT * FROM pxtest1;
+-- Test serialization failure (SSI)
+BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
+UPDATE pxtest1 SET foobar = 'eee' WHERE foobar = 'ddd';
+SELECT * FROM pxtest1;
+PREPARE TRANSACTION 'foo4';
+
+SELECT gid FROM pg_prepared_xacts;
+
+BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
+SELECT * FROM pxtest1;
+INSERT INTO pxtest1 VALUES ('fff');
+
+-- This should fail, because the two transactions have a write-skew anomaly
+PREPARE TRANSACTION 'foo5';
+
+SELECT gid FROM pg_prepared_xacts;
+
+ROLLBACK PREPARED 'foo4';
+
+SELECT gid FROM pg_prepared_xacts;
+
-- Clean up
DROP TABLE pxtest1;
diff --git a/src/test/regress/sql/sequence.sql b/src/test/regress/sql/sequence.sql
index 29ea69123a..97ffb60385 100644
--- a/src/test/regress/sql/sequence.sql
+++ b/src/test/regress/sql/sequence.sql
@@ -11,6 +11,52 @@ INSERT INTO serialTest VALUES ('wrong', NULL);
SELECT * FROM serialTest;
+-- test smallserial / bigserial
+CREATE TABLE serialTest2 (f1 text, f2 serial, f3 smallserial, f4 serial2,
+ f5 bigserial, f6 serial8);
+
+INSERT INTO serialTest2 (f1)
+ VALUES ('test_defaults');
+
+INSERT INTO serialTest2 (f1, f2, f3, f4, f5, f6)
+ VALUES ('test_max_vals', 2147483647, 32767, 32767, 9223372036854775807,
+ 9223372036854775807),
+ ('test_min_vals', -2147483648, -32768, -32768, -9223372036854775808,
+ -9223372036854775808);
+
+-- All these INSERTs should fail:
+INSERT INTO serialTest2 (f1, f3)
+ VALUES ('bogus', -32769);
+
+INSERT INTO serialTest2 (f1, f4)
+ VALUES ('bogus', -32769);
+
+INSERT INTO serialTest2 (f1, f3)
+ VALUES ('bogus', 32768);
+
+INSERT INTO serialTest2 (f1, f4)
+ VALUES ('bogus', 32768);
+
+INSERT INTO serialTest2 (f1, f5)
+ VALUES ('bogus', -9223372036854775809);
+
+INSERT INTO serialTest2 (f1, f6)
+ VALUES ('bogus', -9223372036854775809);
+
+INSERT INTO serialTest2 (f1, f5)
+ VALUES ('bogus', 9223372036854775808);
+
+INSERT INTO serialTest2 (f1, f6)
+ VALUES ('bogus', 9223372036854775808);
+
+SELECT * FROM serialTest2 ORDER BY f2 ASC;
+
+SELECT nextval('serialTest2_f2_seq');
+SELECT nextval('serialTest2_f3_seq');
+SELECT nextval('serialTest2_f4_seq');
+SELECT nextval('serialTest2_f5_seq');
+SELECT nextval('serialTest2_f6_seq');
+
-- basic sequence operations using both text and oid references
CREATE SEQUENCE sequence_test;
@@ -86,7 +132,10 @@ SELECT nextval('sequence_test2');
SELECT nextval('sequence_test2');
-- Information schema
-SELECT * FROM information_schema.sequences WHERE sequence_name IN ('sequence_test2');
+SELECT * FROM information_schema.sequences WHERE sequence_name IN
+ ('sequence_test2', 'serialtest2_f2_seq', 'serialtest2_f3_seq',
+ 'serialtest2_f4_seq', 'serialtest2_f5_seq', 'serialtest2_f6_seq')
+ ORDER BY sequence_name ASC;
-- Test comments
COMMENT ON SEQUENCE asdf IS 'won''t work';
@@ -118,5 +167,14 @@ REVOKE ALL ON seq3 FROM seq_user;
SELECT lastval();
ROLLBACK;
+-- Sequences should get wiped out as well:
+DROP TABLE serialTest, serialTest2;
+
+-- Make sure sequences are gone:
+SELECT * FROM information_schema.sequences WHERE sequence_name IN
+ ('sequence_test2', 'serialtest2_f2_seq', 'serialtest2_f3_seq',
+ 'serialtest2_f4_seq', 'serialtest2_f5_seq', 'serialtest2_f6_seq')
+ ORDER BY sequence_name ASC;
+
DROP USER seq_user;
DROP SEQUENCE seq;
diff --git a/src/test/regress/sql/subselect.sql b/src/test/regress/sql/subselect.sql
index 0d117c878f..3cecbc1d41 100644
--- a/src/test/regress/sql/subselect.sql
+++ b/src/test/regress/sql/subselect.sql
@@ -136,7 +136,7 @@ SELECT * FROM foo WHERE id IN
CREATE TABLE orderstest (
approver_ref integer,
po_ref integer,
- ordercancelled boolean
+ ordercanceled boolean
);
INSERT INTO orderstest VALUES (1, 1, false);
@@ -157,8 +157,8 @@ SELECT *,
WHEN ord.approver_ref=1 THEN '---' ELSE 'Approved'
END) AS "Approved",
(SELECT CASE
- WHEN ord.ordercancelled
- THEN 'Cancelled'
+ WHEN ord.ordercanceled
+ THEN 'Canceled'
ELSE
(SELECT CASE
WHEN ord.po_ref=1
@@ -172,8 +172,8 @@ SELECT *,
END)
END) AS "Status",
(CASE
- WHEN ord.ordercancelled
- THEN 'Cancelled'
+ WHEN ord.ordercanceled
+ THEN 'Canceled'
ELSE
(CASE
WHEN ord.po_ref=1
diff --git a/src/tools/msvc/install.bat b/src/tools/msvc/install.bat
index 8c5fb1dccb..1d2ab9c9b0 100644
--- a/src/tools/msvc/install.bat
+++ b/src/tools/msvc/install.bat
@@ -15,7 +15,7 @@ exit /b 1
SETLOCAL
IF NOT EXIST buildenv.pl goto nobuildenv
-perl -e "require 'buildenv.pl'; while(($k,$v) = each %ENV) { print qq[\@SET $k=$v\n]; }" > bldenv.bat
+perl -e "require 'buildenv.pl'; while(($k,$v) = each %%ENV) { print qq[\@SET $k=$v\n]; }" > bldenv.bat
CALL bldenv.bat
del bldenv.bat
:nobuildenv
diff --git a/src/tools/msvc/pgbison.bat b/src/tools/msvc/pgbison.bat
index e67b8fcf19..27b5353a55 100755
--- a/src/tools/msvc/pgbison.bat
+++ b/src/tools/msvc/pgbison.bat
@@ -1,51 +1,7 @@
@echo off
-REM src/tools/msvc/pgbison.bat
-
-IF NOT EXIST src\tools\msvc\buildenv.pl goto nobuildenv
-perl -e "require 'src/tools/msvc/buildenv.pl'; while(($k,$v) = each %ENV) { print qq[\@SET $k=$v\n]; }" > bldenv.bat
-CALL bldenv.bat
-del bldenv.bat
-:nobuildenv
-
-SET BV=
-for /F "tokens=4 usebackq" %%f in (`bison -V`) do if "!BV!"=="" SET BV=%%f
-if "%BV%"=="" goto novarexp
-if %BV% EQU 1.875 goto bisonok
-if %BV% GEQ 2.2 goto bisonok
-goto nobison
-:bisonok
-
-if "%1" == "src\backend\parser\gram.y" call :generate %1 src\backend\parser\gram.c src\backend\parser\gram.h
-if "%1" == "src\backend\bootstrap\bootparse.y" call :generate %1 src\backend\bootstrap\bootparse.c
-if "%1" == "src\backend\replication\repl_gram.y" call :generate %1 src\backend\replication\repl_gram.c
-if "%1" == "src\pl\plpgsql\src\gram.y" call :generate %1 src\pl\plpgsql\src\pl_gram.c src\pl\plpgsql\src\pl_gram.h
-if "%1" == "src\test\isolation\specparse.y" call :generate %1 src\test\isolation\specparse.c
-if "%1" == "src\interfaces\ecpg\preproc\preproc.y" call :generate %1 src\interfaces\ecpg\preproc\preproc.c src\interfaces\ecpg\preproc\preproc.h
-if "%1" == "contrib\cube\cubeparse.y" call :generate %1 contrib\cube\cubeparse.c
-if "%1" == "contrib\seg\segparse.y" call :generate %1 contrib\seg\segparse.c
-
-echo Unknown bison input: %1
-exit 1
-:generate
-SET fn=%1
-SET cf=%2
-bison.exe -d %fn% -o %cf%
-if errorlevel 1 exit 1
-SET hf=%cf:~0,-2%.h
-if not "%hf%"=="%3" (
- copy /y %hf% %3
- if errorlevel 1 exit 1
- del %hf%
-)
-exit 0
-
-
-:novarexp
-echo pgbison must be called with cmd /V:ON /C pgbison to work!
-exit 1
-
-:nobison
-echo WARNING! Bison install not found, or unsupported Bison version.
-echo Attempting to build without.
-exit 0
+REM src/tools/msvc/pgbison.bat
+REM all the logic for this now belongs in builddoc.pl. This file really
+REM only exists so you don't have to type "perl src/tools/msvc/pgbison.pl"
+REM Resist any temptation to add any logic here.
+@perl src/tools/msvc/pgbison.pl %*
diff --git a/src/tools/msvc/pgbison.pl b/src/tools/msvc/pgbison.pl
new file mode 100644
index 0000000000..c48863aff6
--- /dev/null
+++ b/src/tools/msvc/pgbison.pl
@@ -0,0 +1,48 @@
+# -*-perl-*- hey - emacs - this is a perl file
+
+# src/tools/msvc/pgbison.pl
+
+use strict;
+use File::Basename;
+
+# assume we are in the postgres source root
+
+require 'src/tools/msvc/buildenv.pl' if -e 'src/tools/msvc/buildenv.pl';
+
+my ($bisonver) = `bison -V`; # grab first line
+$bisonver=(split(/\s+/,$bisonver))[3]; # grab version number
+
+unless ($bisonver eq '1.875' || $bisonver ge '2.2')
+{
+ print "WARNING! Bison install not found, or unsupported Bison version.\n";
+ print "echo Attempting to build without.\n";
+ exit 0;
+}
+
+my $input = shift;
+if ($input !~ /\.y$/)
+{
+ print "Input must be a .y file\n";
+ exit 1;
+}
+elsif (!-e $input)
+{
+ print "Input file $input not found\n";
+ exit 1;
+}
+
+(my $output = $input) =~ s/\.y$/.c/;
+
+# plpgsql just has to be different
+$output =~ s/gram\.c$/pl_gram.c/ if $input =~ /src.pl.plpgsql.src.gram\.y$/;
+
+my $makefile = dirname($input) . "/Makefile";
+my ($mf, $make);
+open($mf,$makefile);
+local $/ = undef;
+$make=<$mf>;
+close($mf);
+my $headerflag = ($make =~ /\$\(BISON\)\s+-d/ ? '-d' : '');
+
+system("bison $headerflag $input -o $output");
+exit $? >> 8;
diff --git a/src/tools/msvc/pgflex.bat b/src/tools/msvc/pgflex.bat
index 75f4eb9dfe..144422d313 100755
--- a/src/tools/msvc/pgflex.bat
+++ b/src/tools/msvc/pgflex.bat
@@ -1,45 +1,7 @@
@echo off
-REM src/tools/msvc/pgflex.bat
-
-REM silence flex bleatings about file path style
-SET CYGWIN=nodosfilewarning
-
-IF NOT EXIST src\tools\msvc\buildenv.pl goto nobuildenv
-perl -e "require 'src/tools/msvc/buildenv.pl'; while(($k,$v) = each %ENV) { print qq[\@SET $k=$v\n]; }" > bldenv.bat
-CALL bldenv.bat
-del bldenv.bat
-:nobuildenv
-
-flex -V > NUL
-if errorlevel 1 goto noflex
-if "%1" == "src\backend\parser\scan.l" call :generate %1 src\backend\parser\scan.c -CF
-if "%1" == "src\backend\bootstrap\bootscanner.l" call :generate %1 src\backend\bootstrap\bootscanner.c
-if "%1" == "src\backend\utils\misc\guc-file.l" call :generate %1 src\backend\utils\misc\guc-file.c
-if "%1" == "src\backend\replication\repl_scanner.l" call :generate %1 src\backend\replication\repl_scanner.c
-if "%1" == "src\test\isolation\specscanner.l" call :generate %1 src\test\isolation\specscanner.c
-if "%1" == "src\interfaces\ecpg\preproc\pgc.l" call :generate %1 src\interfaces\ecpg\preproc\pgc.c
-if "%1" == "src\bin\psql\psqlscan.l" call :generate %1 src\bin\psql\psqlscan.c
-if "%1" == "contrib\cube\cubescan.l" call :generate %1 contrib\cube\cubescan.c
-if "%1" == "contrib\seg\segscan.l" call :generate %1 contrib\seg\segscan.c
-
-echo Unknown flex input: %1
-exit 1
-
-REM For non-reentrant scanners we need to fix up the yywrap macro definition
-REM to keep the MS compiler happy.
-REM For reentrant scanners (like the core scanner) we do not
-REM need to (and must not) change the yywrap definition.
-:generate
-flex %3 -o%2 %1
-if errorlevel 1 exit %errorlevel%
-perl -n -e "exit 1 if /^\%%option\s+reentrant/;" %1
-if errorlevel 1 exit 0
-perl -pi.bak -e "s/yywrap\(n\)/yywrap()/;" %2
-if errorlevel 1 exit %errorlevel%
-del %2.bak
-exit 0
-
-:noflex
-echo WARNING! flex install not found, attempting to build without
-exit 0
+REM src/tools/msvc/pgflex.bat
+REM all the logic for this now belongs in builddoc.pl. This file really
+REM only exists so you don't have to type "perl src/tools/msvc/pgflex.pl"
+REM Resist any temptation to add any logic here.
+@perl src/tools/msvc/pgflex.pl %*
diff --git a/src/tools/msvc/pgflex.pl b/src/tools/msvc/pgflex.pl
new file mode 100644
index 0000000000..332d422f64
--- /dev/null
+++ b/src/tools/msvc/pgflex.pl
@@ -0,0 +1,76 @@
+# -*-perl-*- hey - emacs - this is a perl file
+
+# src/tools/msvc/pgflex.pl
+
+# silence flex bleatings about file path style
+$ENV{CYGWIN} = 'nodosfilewarning';
+
+use strict;
+use File::Basename;
+
+# assume we are in the postgres source root
+
+require 'src/tools/msvc/buildenv.pl' if -e 'src/tools/msvc/buildenv.pl';
+
+system('flex -V > NUL');
+if ($? != 0)
+{
+ print "WARNING! flex install not found, attempting to build without\n";
+ exit 0;
+}
+
+my $input = shift;
+if ($input !~ /\.l$/)
+{
+ print "Input must be a .l file\n";
+ exit 1;
+}
+elsif (!-e $input)
+{
+ print "Input file $input not found\n";
+ exit 1;
+}
+
+(my $output = $input) =~ s/\.l$/.c/;
+
+# get flex flags from make file
+my $makefile = dirname($input) . "/Makefile";
+my ($mf, $make);
+open($mf,$makefile);
+local $/ = undef;
+$make=<$mf>;
+close($mf);
+my $flexflags = ($make =~ /^\s*FLEXFLAGS\s*=\s*(\S.*)/m ? $1 : '');
+
+system("flex $flexflags -o$output $input");
+if ($? == 0)
+{
+
+ # For non-reentrant scanners we need to fix up the yywrap macro definition
+ # to keep the MS compiler happy.
+ # For reentrant scanners (like the core scanner) we do not
+ # need to (and must not) change the yywrap definition.
+ my $lfile;
+ open($lfile,$input) || die "opening $input for reading: $!";
+ my $lcode = <$lfile>;
+ close($lfile);
+ if ($lcode !~ /\%option\sreentrant/)
+ {
+ my $cfile;
+ open($cfile,$output) || die "opening $output for reading: $!";
+ my $ccode = <$cfile>;
+ close($cfile);
+ $ccode =~ s/yywrap\(n\)/yywrap()/;
+ open($cfile,">$output") || die "opening $output for reading: $!";
+ print $cfile $ccode;
+ close($cfile);
+ }
+
+ exit 0;
+
+}
+else
+{
+ exit $? >> 8;
+}
+