Version in base suite: 11.14-0+deb10u1 Base version: postgresql-11_11.14-0+deb10u1 Target version: postgresql-11_11.16-0+deb10u1 Base file: /srv/ftp-master.debian.org/ftp/pool/main/p/postgresql-11/postgresql-11_11.14-0+deb10u1.dsc Target file: /srv/ftp-master.debian.org/policy/pool/main/p/postgresql-11/postgresql-11_11.16-0+deb10u1.dsc .gitrevision | 2 COPYRIGHT | 2 INSTALL | 6 aclocal.m4 | 1 config/ax_prog_perl_modules.m4 | 77 config/check_modules.pl | 23 config/python.m4 | 33 configure | 426 configure.in | 83 contrib/amcheck/expected/check_btree.out | 23 contrib/amcheck/sql/check_btree.sql | 21 contrib/amcheck/verify_nbtree.c | 28 contrib/bloom/t/001_wal.pl | 13 contrib/btree_gist/btree_text.c | 104 contrib/btree_gist/expected/char.out | 6 contrib/btree_gist/expected/char_1.out | 6 contrib/cube/cubeparse.c | 852 contrib/dblink/dblink.c | 3 contrib/pageinspect/brinfuncs.c | 76 contrib/pageinspect/btreefuncs.c | 48 contrib/pageinspect/expected/brin.out | 39 contrib/pageinspect/expected/btree.out | 39 contrib/pageinspect/expected/gin.out | 33 contrib/pageinspect/expected/hash.out | 39 contrib/pageinspect/expected/page.out | 31 contrib/pageinspect/fsmfuncs.c | 8 contrib/pageinspect/ginfuncs.c | 34 contrib/pageinspect/hashfuncs.c | 17 contrib/pageinspect/rawpage.c | 30 contrib/pageinspect/sql/brin.sql | 19 contrib/pageinspect/sql/btree.sql | 31 contrib/pageinspect/sql/gin.sql | 20 contrib/pageinspect/sql/hash.sql | 26 contrib/pageinspect/sql/page.sql | 15 contrib/pgcrypto/imath.c | 9 contrib/pgcrypto/px.c | 2 contrib/postgres_fdw/connection.c | 3 contrib/postgres_fdw/deparse.c | 154 contrib/postgres_fdw/expected/postgres_fdw.out | 23 contrib/postgres_fdw/postgres_fdw.c | 58 contrib/postgres_fdw/postgres_fdw.h | 7 contrib/postgres_fdw/sql/postgres_fdw.sql | 8 contrib/seg/segparse.c | 849 contrib/test_decoding/expected/replorigin.out | 76 contrib/test_decoding/expected/toast.out | 2 contrib/test_decoding/sql/replorigin.sql | 32 debian/changelog | 20 doc/bug.template | 2 doc/src/sgml/arch-dev.sgml | 2 doc/src/sgml/config.sgml | 2 doc/src/sgml/datetime.sgml | 20 doc/src/sgml/ddl.sgml | 9 doc/src/sgml/event-trigger.sgml | 16 doc/src/sgml/func.sgml | 66 doc/src/sgml/high-availability.sgml | 2 doc/src/sgml/html/acronyms.html | 6 doc/src/sgml/html/admin.html | 4 doc/src/sgml/html/adminpack.html | 4 doc/src/sgml/html/amcheck.html | 4 doc/src/sgml/html/app-clusterdb.html | 4 doc/src/sgml/html/app-createdb.html | 4 doc/src/sgml/html/app-createuser.html | 4 doc/src/sgml/html/app-dropdb.html | 4 doc/src/sgml/html/app-dropuser.html | 4 doc/src/sgml/html/app-ecpg.html | 4 doc/src/sgml/html/app-initdb.html | 4 doc/src/sgml/html/app-pg-ctl.html | 4 doc/src/sgml/html/app-pg-dumpall.html | 4 doc/src/sgml/html/app-pg-isready.html | 4 doc/src/sgml/html/app-pgbasebackup.html | 4 doc/src/sgml/html/app-pgconfig.html | 4 doc/src/sgml/html/app-pgcontroldata.html | 4 doc/src/sgml/html/app-pgdump.html | 4 doc/src/sgml/html/app-pgreceivewal.html | 11 doc/src/sgml/html/app-pgreceivexlog.html | 6 doc/src/sgml/html/app-pgrecvlogical.html | 4 doc/src/sgml/html/app-pgresetwal.html | 4 doc/src/sgml/html/app-pgresetxlog.html | 6 doc/src/sgml/html/app-pgrestore.html | 4 doc/src/sgml/html/app-pgrewind.html | 4 doc/src/sgml/html/app-postgres.html | 4 doc/src/sgml/html/app-postmaster.html | 4 doc/src/sgml/html/app-psql.html | 6 doc/src/sgml/html/app-reindexdb.html | 4 doc/src/sgml/html/app-vacuumdb.html | 4 doc/src/sgml/html/appendix-obsolete.html | 4 doc/src/sgml/html/appendixes.html | 2 doc/src/sgml/html/applevel-consistency.html | 4 doc/src/sgml/html/archive-recovery-settings.html | 4 doc/src/sgml/html/arrays.html | 4 doc/src/sgml/html/auth-bsd.html | 4 doc/src/sgml/html/auth-cert.html | 4 doc/src/sgml/html/auth-delay.html | 4 doc/src/sgml/html/auth-ident.html | 4 doc/src/sgml/html/auth-ldap.html | 4 doc/src/sgml/html/auth-methods.html | 4 doc/src/sgml/html/auth-pam.html | 4 doc/src/sgml/html/auth-password.html | 4 doc/src/sgml/html/auth-peer.html | 4 doc/src/sgml/html/auth-pg-hba-conf.html | 4 doc/src/sgml/html/auth-radius.html | 4 doc/src/sgml/html/auth-trust.html | 4 doc/src/sgml/html/auth-username-maps.html | 4 doc/src/sgml/html/auto-explain.html | 4 doc/src/sgml/html/backup-dump.html | 4 doc/src/sgml/html/backup-file.html | 4 doc/src/sgml/html/backup.html | 4 doc/src/sgml/html/bgworker.html | 4 doc/src/sgml/html/biblio.html | 4 doc/src/sgml/html/bki-commands.html | 4 doc/src/sgml/html/bki-example.html | 4 doc/src/sgml/html/bki-format.html | 4 doc/src/sgml/html/bki-structure.html | 4 doc/src/sgml/html/bki.html | 4 doc/src/sgml/html/bloom.html | 4 doc/src/sgml/html/bookindex.html | 18 doc/src/sgml/html/brin-builtin-opclasses.html | 4 doc/src/sgml/html/brin-extensibility.html | 4 doc/src/sgml/html/brin-intro.html | 4 doc/src/sgml/html/brin.html | 2 doc/src/sgml/html/btree-behavior.html | 4 doc/src/sgml/html/btree-gin.html | 4 doc/src/sgml/html/btree-gist.html | 4 doc/src/sgml/html/btree-implementation.html | 4 doc/src/sgml/html/btree-intro.html | 4 doc/src/sgml/html/btree-support-funcs.html | 4 doc/src/sgml/html/btree.html | 2 doc/src/sgml/html/bug-reporting.html | 6 doc/src/sgml/html/catalog-pg-aggregate.html | 4 doc/src/sgml/html/catalog-pg-am.html | 4 doc/src/sgml/html/catalog-pg-amop.html | 4 doc/src/sgml/html/catalog-pg-amproc.html | 4 doc/src/sgml/html/catalog-pg-attrdef.html | 4 doc/src/sgml/html/catalog-pg-attribute.html | 4 doc/src/sgml/html/catalog-pg-auth-members.html | 4 doc/src/sgml/html/catalog-pg-authid.html | 4 doc/src/sgml/html/catalog-pg-cast.html | 4 doc/src/sgml/html/catalog-pg-class.html | 4 doc/src/sgml/html/catalog-pg-collation.html | 4 doc/src/sgml/html/catalog-pg-constraint.html | 4 doc/src/sgml/html/catalog-pg-conversion.html | 4 doc/src/sgml/html/catalog-pg-database.html | 4 doc/src/sgml/html/catalog-pg-db-role-setting.html | 4 doc/src/sgml/html/catalog-pg-default-acl.html | 4 doc/src/sgml/html/catalog-pg-depend.html | 4 doc/src/sgml/html/catalog-pg-description.html | 4 doc/src/sgml/html/catalog-pg-enum.html | 4 doc/src/sgml/html/catalog-pg-event-trigger.html | 4 doc/src/sgml/html/catalog-pg-extension.html | 4 doc/src/sgml/html/catalog-pg-foreign-data-wrapper.html | 4 doc/src/sgml/html/catalog-pg-foreign-server.html | 4 doc/src/sgml/html/catalog-pg-foreign-table.html | 4 doc/src/sgml/html/catalog-pg-index.html | 4 doc/src/sgml/html/catalog-pg-inherits.html | 4 doc/src/sgml/html/catalog-pg-init-privs.html | 4 doc/src/sgml/html/catalog-pg-language.html | 4 doc/src/sgml/html/catalog-pg-largeobject-metadata.html | 4 doc/src/sgml/html/catalog-pg-largeobject.html | 4 doc/src/sgml/html/catalog-pg-namespace.html | 4 doc/src/sgml/html/catalog-pg-opclass.html | 4 doc/src/sgml/html/catalog-pg-operator.html | 4 doc/src/sgml/html/catalog-pg-opfamily.html | 4 doc/src/sgml/html/catalog-pg-partitioned-table.html | 4 doc/src/sgml/html/catalog-pg-pltemplate.html | 4 doc/src/sgml/html/catalog-pg-policy.html | 4 doc/src/sgml/html/catalog-pg-proc.html | 4 doc/src/sgml/html/catalog-pg-publication-rel.html | 4 doc/src/sgml/html/catalog-pg-publication.html | 4 doc/src/sgml/html/catalog-pg-range.html | 4 doc/src/sgml/html/catalog-pg-replication-origin.html | 4 doc/src/sgml/html/catalog-pg-rewrite.html | 4 doc/src/sgml/html/catalog-pg-seclabel.html | 4 doc/src/sgml/html/catalog-pg-sequence.html | 4 doc/src/sgml/html/catalog-pg-shdepend.html | 4 doc/src/sgml/html/catalog-pg-shdescription.html | 4 doc/src/sgml/html/catalog-pg-shseclabel.html | 4 doc/src/sgml/html/catalog-pg-statistic-ext.html | 4 doc/src/sgml/html/catalog-pg-statistic.html | 4 doc/src/sgml/html/catalog-pg-subscription-rel.html | 4 doc/src/sgml/html/catalog-pg-subscription.html | 4 doc/src/sgml/html/catalog-pg-tablespace.html | 4 doc/src/sgml/html/catalog-pg-transform.html | 4 doc/src/sgml/html/catalog-pg-trigger.html | 4 doc/src/sgml/html/catalog-pg-ts-config-map.html | 4 doc/src/sgml/html/catalog-pg-ts-config.html | 4 doc/src/sgml/html/catalog-pg-ts-dict.html | 4 doc/src/sgml/html/catalog-pg-ts-parser.html | 4 doc/src/sgml/html/catalog-pg-ts-template.html | 4 doc/src/sgml/html/catalog-pg-type.html | 4 doc/src/sgml/html/catalog-pg-user-mapping.html | 4 doc/src/sgml/html/catalogs-overview.html | 4 doc/src/sgml/html/catalogs.html | 4 doc/src/sgml/html/charset.html | 4 doc/src/sgml/html/citext.html | 4 doc/src/sgml/html/client-authentication-problems.html | 4 doc/src/sgml/html/client-authentication.html | 4 doc/src/sgml/html/client-interfaces.html | 4 doc/src/sgml/html/collation.html | 4 doc/src/sgml/html/config-setting.html | 4 doc/src/sgml/html/connect-estab.html | 4 doc/src/sgml/html/continuous-archiving.html | 4 doc/src/sgml/html/contrib-dblink-build-sql-delete.html | 4 doc/src/sgml/html/contrib-dblink-build-sql-insert.html | 4 doc/src/sgml/html/contrib-dblink-build-sql-update.html | 4 doc/src/sgml/html/contrib-dblink-cancel-query.html | 4 doc/src/sgml/html/contrib-dblink-close.html | 4 doc/src/sgml/html/contrib-dblink-connect-u.html | 4 doc/src/sgml/html/contrib-dblink-connect.html | 4 doc/src/sgml/html/contrib-dblink-disconnect.html | 4 doc/src/sgml/html/contrib-dblink-error-message.html | 4 doc/src/sgml/html/contrib-dblink-exec.html | 4 doc/src/sgml/html/contrib-dblink-fetch.html | 4 doc/src/sgml/html/contrib-dblink-function.html | 4 doc/src/sgml/html/contrib-dblink-get-connections.html | 4 doc/src/sgml/html/contrib-dblink-get-notify.html | 4 doc/src/sgml/html/contrib-dblink-get-pkey.html | 4 doc/src/sgml/html/contrib-dblink-get-result.html | 4 doc/src/sgml/html/contrib-dblink-is-busy.html | 4 doc/src/sgml/html/contrib-dblink-open.html | 4 doc/src/sgml/html/contrib-dblink-send-query.html | 4 doc/src/sgml/html/contrib-prog-client.html | 4 doc/src/sgml/html/contrib-prog-server.html | 4 doc/src/sgml/html/contrib-prog.html | 4 doc/src/sgml/html/contrib-spi.html | 4 doc/src/sgml/html/contrib.html | 4 doc/src/sgml/html/creating-cluster.html | 4 doc/src/sgml/html/cube.html | 4 doc/src/sgml/html/custom-scan-execution.html | 4 doc/src/sgml/html/custom-scan-path.html | 4 doc/src/sgml/html/custom-scan-plan.html | 4 doc/src/sgml/html/custom-scan.html | 4 doc/src/sgml/html/database-roles.html | 4 doc/src/sgml/html/datatype-binary.html | 4 doc/src/sgml/html/datatype-bit.html | 4 doc/src/sgml/html/datatype-boolean.html | 4 doc/src/sgml/html/datatype-character.html | 4 doc/src/sgml/html/datatype-datetime.html | 4 doc/src/sgml/html/datatype-enum.html | 4 doc/src/sgml/html/datatype-geometric.html | 4 doc/src/sgml/html/datatype-json.html | 4 doc/src/sgml/html/datatype-money.html | 4 doc/src/sgml/html/datatype-net-types.html | 4 doc/src/sgml/html/datatype-numeric.html | 4 doc/src/sgml/html/datatype-oid.html | 4 doc/src/sgml/html/datatype-pg-lsn.html | 4 doc/src/sgml/html/datatype-pseudo.html | 4 doc/src/sgml/html/datatype-textsearch.html | 4 doc/src/sgml/html/datatype-uuid.html | 4 doc/src/sgml/html/datatype-xml.html | 4 doc/src/sgml/html/datatype.html | 4 doc/src/sgml/html/datetime-appendix.html | 4 doc/src/sgml/html/datetime-config-files.html | 4 doc/src/sgml/html/datetime-input-rules.html | 4 doc/src/sgml/html/datetime-invalid-input.html | 24 doc/src/sgml/html/datetime-julian-dates.html | 4 doc/src/sgml/html/datetime-keywords.html | 4 doc/src/sgml/html/datetime-posix-timezone-specs.html | 4 doc/src/sgml/html/datetime-units-history.html | 4 doc/src/sgml/html/dblink.html | 4 doc/src/sgml/html/ddl-alter.html | 4 doc/src/sgml/html/ddl-basics.html | 4 doc/src/sgml/html/ddl-constraints.html | 4 doc/src/sgml/html/ddl-default.html | 4 doc/src/sgml/html/ddl-depend.html | 4 doc/src/sgml/html/ddl-foreign-data.html | 4 doc/src/sgml/html/ddl-inherit.html | 4 doc/src/sgml/html/ddl-others.html | 4 doc/src/sgml/html/ddl-partitioning.html | 13 doc/src/sgml/html/ddl-priv.html | 4 doc/src/sgml/html/ddl-rowsecurity.html | 4 doc/src/sgml/html/ddl-schemas.html | 4 doc/src/sgml/html/ddl-system-columns.html | 4 doc/src/sgml/html/ddl.html | 4 doc/src/sgml/html/default-roles.html | 4 doc/src/sgml/html/dict-int.html | 4 doc/src/sgml/html/dict-xsyn.html | 4 doc/src/sgml/html/different-replication-solutions.html | 4 doc/src/sgml/html/disk-full.html | 4 doc/src/sgml/html/disk-usage.html | 4 doc/src/sgml/html/diskusage.html | 4 doc/src/sgml/html/dml-delete.html | 4 doc/src/sgml/html/dml-insert.html | 4 doc/src/sgml/html/dml-returning.html | 4 doc/src/sgml/html/dml-update.html | 4 doc/src/sgml/html/dml.html | 4 doc/src/sgml/html/docguide-authoring.html | 4 doc/src/sgml/html/docguide-build.html | 4 doc/src/sgml/html/docguide-docbook.html | 4 doc/src/sgml/html/docguide-style.html | 4 doc/src/sgml/html/docguide-toolsets.html | 4 doc/src/sgml/html/docguide.html | 4 doc/src/sgml/html/domains.html | 4 doc/src/sgml/html/dynamic-trace.html | 4 doc/src/sgml/html/earthdistance.html | 4 doc/src/sgml/html/ecpg-commands.html | 4 doc/src/sgml/html/ecpg-concept.html | 4 doc/src/sgml/html/ecpg-connect.html | 4 doc/src/sgml/html/ecpg-cpp.html | 4 doc/src/sgml/html/ecpg-descriptors.html | 4 doc/src/sgml/html/ecpg-develop.html | 4 doc/src/sgml/html/ecpg-dynamic.html | 4 doc/src/sgml/html/ecpg-errors.html | 4 doc/src/sgml/html/ecpg-informix-compat.html | 4 doc/src/sgml/html/ecpg-library.html | 4 doc/src/sgml/html/ecpg-lo.html | 4 doc/src/sgml/html/ecpg-pgtypes.html | 4 doc/src/sgml/html/ecpg-preproc.html | 4 doc/src/sgml/html/ecpg-process.html | 4 doc/src/sgml/html/ecpg-sql-allocate-descriptor.html | 4 doc/src/sgml/html/ecpg-sql-commands.html | 4 doc/src/sgml/html/ecpg-sql-connect.html | 4 doc/src/sgml/html/ecpg-sql-deallocate-descriptor.html | 4 doc/src/sgml/html/ecpg-sql-declare.html | 4 doc/src/sgml/html/ecpg-sql-describe.html | 4 doc/src/sgml/html/ecpg-sql-disconnect.html | 4 doc/src/sgml/html/ecpg-sql-execute-immediate.html | 4 doc/src/sgml/html/ecpg-sql-get-descriptor.html | 4 doc/src/sgml/html/ecpg-sql-open.html | 4 doc/src/sgml/html/ecpg-sql-prepare.html | 4 doc/src/sgml/html/ecpg-sql-set-autocommit.html | 4 doc/src/sgml/html/ecpg-sql-set-connection.html | 4 doc/src/sgml/html/ecpg-sql-set-descriptor.html | 4 doc/src/sgml/html/ecpg-sql-type.html | 4 doc/src/sgml/html/ecpg-sql-var.html | 4 doc/src/sgml/html/ecpg-sql-whenever.html | 4 doc/src/sgml/html/ecpg-variables.html | 4 doc/src/sgml/html/ecpg.html | 4 doc/src/sgml/html/encryption-options.html | 4 doc/src/sgml/html/errcodes-appendix.html | 6 doc/src/sgml/html/error-message-reporting.html | 4 doc/src/sgml/html/error-style-guide.html | 4 doc/src/sgml/html/event-log-registration.html | 4 doc/src/sgml/html/event-trigger-definition.html | 4 doc/src/sgml/html/event-trigger-example.html | 4 doc/src/sgml/html/event-trigger-interface.html | 4 doc/src/sgml/html/event-trigger-matrix.html | 4 doc/src/sgml/html/event-trigger-table-rewrite-example.html | 4 doc/src/sgml/html/event-triggers.html | 4 doc/src/sgml/html/executor.html | 6 doc/src/sgml/html/explicit-joins.html | 4 doc/src/sgml/html/explicit-locking.html | 6 doc/src/sgml/html/extend-extensions.html | 4 doc/src/sgml/html/extend-how.html | 4 doc/src/sgml/html/extend-pgxs.html | 4 doc/src/sgml/html/extend-type-system.html | 4 doc/src/sgml/html/extend.html | 4 doc/src/sgml/html/external-admin-tools.html | 4 doc/src/sgml/html/external-extensions.html | 4 doc/src/sgml/html/external-interfaces.html | 4 doc/src/sgml/html/external-pl.html | 4 doc/src/sgml/html/external-projects.html | 4 doc/src/sgml/html/fdw-callbacks.html | 4 doc/src/sgml/html/fdw-functions.html | 4 doc/src/sgml/html/fdw-helpers.html | 4 doc/src/sgml/html/fdw-planning.html | 4 doc/src/sgml/html/fdw-row-locking.html | 4 doc/src/sgml/html/fdwhandler.html | 4 doc/src/sgml/html/features-sql-standard.html | 4 doc/src/sgml/html/features.html | 4 doc/src/sgml/html/file-fdw.html | 4 doc/src/sgml/html/functions-admin.html | 9 doc/src/sgml/html/functions-aggregate.html | 4 doc/src/sgml/html/functions-array.html | 4 doc/src/sgml/html/functions-binarystring.html | 4 doc/src/sgml/html/functions-bitstring.html | 4 doc/src/sgml/html/functions-comparison.html | 4 doc/src/sgml/html/functions-comparisons.html | 4 doc/src/sgml/html/functions-conditional.html | 4 doc/src/sgml/html/functions-datetime.html | 4 doc/src/sgml/html/functions-enum.html | 4 doc/src/sgml/html/functions-event-triggers.html | 4 doc/src/sgml/html/functions-formatting.html | 4 doc/src/sgml/html/functions-geometry.html | 4 doc/src/sgml/html/functions-info.html | 4 doc/src/sgml/html/functions-json.html | 4 doc/src/sgml/html/functions-logical.html | 4 doc/src/sgml/html/functions-matching.html | 4 doc/src/sgml/html/functions-math.html | 4 doc/src/sgml/html/functions-net.html | 4 doc/src/sgml/html/functions-range.html | 4 doc/src/sgml/html/functions-sequence.html | 55 doc/src/sgml/html/functions-srf.html | 4 doc/src/sgml/html/functions-string.html | 4 doc/src/sgml/html/functions-subquery.html | 4 doc/src/sgml/html/functions-textsearch.html | 4 doc/src/sgml/html/functions-trigger.html | 4 doc/src/sgml/html/functions-window.html | 4 doc/src/sgml/html/functions-xml.html | 4 doc/src/sgml/html/functions.html | 4 doc/src/sgml/html/fuzzystrmatch.html | 4 doc/src/sgml/html/generic-wal.html | 4 doc/src/sgml/html/geqo-biblio.html | 4 doc/src/sgml/html/geqo-intro.html | 4 doc/src/sgml/html/geqo-intro2.html | 4 doc/src/sgml/html/geqo-pg-intro.html | 4 doc/src/sgml/html/geqo.html | 4 doc/src/sgml/html/gin-builtin-opclasses.html | 4 doc/src/sgml/html/gin-examples.html | 4 doc/src/sgml/html/gin-extensibility.html | 4 doc/src/sgml/html/gin-implementation.html | 4 doc/src/sgml/html/gin-intro.html | 4 doc/src/sgml/html/gin-limit.html | 4 doc/src/sgml/html/gin-tips.html | 4 doc/src/sgml/html/gin.html | 2 doc/src/sgml/html/gist-builtin-opclasses.html | 4 doc/src/sgml/html/gist-examples.html | 4 doc/src/sgml/html/gist-extensibility.html | 4 doc/src/sgml/html/gist-implementation.html | 4 doc/src/sgml/html/gist-intro.html | 4 doc/src/sgml/html/gist.html | 2 doc/src/sgml/html/git.html | 4 doc/src/sgml/html/gssapi-auth.html | 4 doc/src/sgml/html/hash-implementation.html | 4 doc/src/sgml/html/hash-index.html | 2 doc/src/sgml/html/hash-intro.html | 4 doc/src/sgml/html/high-availability.html | 4 doc/src/sgml/html/history.html | 4 doc/src/sgml/html/hot-standby.html | 4 doc/src/sgml/html/how-parallel-query-works.html | 4 doc/src/sgml/html/hstore.html | 4 doc/src/sgml/html/index-api.html | 4 doc/src/sgml/html/index-cost-estimation.html | 4 doc/src/sgml/html/index-functions.html | 4 doc/src/sgml/html/index-locking.html | 4 doc/src/sgml/html/index-scanning.html | 4 doc/src/sgml/html/index-unique-checks.html | 4 doc/src/sgml/html/index.html | 2 doc/src/sgml/html/indexam.html | 4 doc/src/sgml/html/indexes-bitmap-scans.html | 4 doc/src/sgml/html/indexes-collations.html | 4 doc/src/sgml/html/indexes-examine.html | 4 doc/src/sgml/html/indexes-expressional.html | 8 doc/src/sgml/html/indexes-index-only-scans.html | 4 doc/src/sgml/html/indexes-intro.html | 4 doc/src/sgml/html/indexes-multicolumn.html | 4 doc/src/sgml/html/indexes-opclass.html | 4 doc/src/sgml/html/indexes-ordering.html | 4 doc/src/sgml/html/indexes-partial.html | 4 doc/src/sgml/html/indexes-types.html | 4 doc/src/sgml/html/indexes-unique.html | 4 doc/src/sgml/html/indexes.html | 4 doc/src/sgml/html/information-schema.html | 4 doc/src/sgml/html/infoschema-administrable-role-authorizations.html | 4 doc/src/sgml/html/infoschema-applicable-roles.html | 4 doc/src/sgml/html/infoschema-attributes.html | 4 doc/src/sgml/html/infoschema-character-sets.html | 4 doc/src/sgml/html/infoschema-check-constraint-routine-usage.html | 4 doc/src/sgml/html/infoschema-check-constraints.html | 4 doc/src/sgml/html/infoschema-collation-character-set-applicab.html | 4 doc/src/sgml/html/infoschema-collations.html | 4 doc/src/sgml/html/infoschema-column-domain-usage.html | 4 doc/src/sgml/html/infoschema-column-options.html | 4 doc/src/sgml/html/infoschema-column-privileges.html | 4 doc/src/sgml/html/infoschema-column-udt-usage.html | 4 doc/src/sgml/html/infoschema-columns.html | 4 doc/src/sgml/html/infoschema-constraint-column-usage.html | 4 doc/src/sgml/html/infoschema-constraint-table-usage.html | 4 doc/src/sgml/html/infoschema-data-type-privileges.html | 4 doc/src/sgml/html/infoschema-datatypes.html | 4 doc/src/sgml/html/infoschema-domain-constraints.html | 4 doc/src/sgml/html/infoschema-domain-udt-usage.html | 4 doc/src/sgml/html/infoschema-domains.html | 4 doc/src/sgml/html/infoschema-element-types.html | 4 doc/src/sgml/html/infoschema-enabled-roles.html | 4 doc/src/sgml/html/infoschema-foreign-data-wrapper-options.html | 4 doc/src/sgml/html/infoschema-foreign-data-wrappers.html | 4 doc/src/sgml/html/infoschema-foreign-server-options.html | 4 doc/src/sgml/html/infoschema-foreign-servers.html | 4 doc/src/sgml/html/infoschema-foreign-table-options.html | 4 doc/src/sgml/html/infoschema-foreign-tables.html | 4 doc/src/sgml/html/infoschema-information-schema-catalog-name.html | 4 doc/src/sgml/html/infoschema-key-column-usage.html | 4 doc/src/sgml/html/infoschema-parameters.html | 4 doc/src/sgml/html/infoschema-referential-constraints.html | 4 doc/src/sgml/html/infoschema-role-column-grants.html | 4 doc/src/sgml/html/infoschema-role-routine-grants.html | 4 doc/src/sgml/html/infoschema-role-table-grants.html | 4 doc/src/sgml/html/infoschema-role-udt-grants.html | 4 doc/src/sgml/html/infoschema-role-usage-grants.html | 4 doc/src/sgml/html/infoschema-routine-privileges.html | 4 doc/src/sgml/html/infoschema-routines.html | 4 doc/src/sgml/html/infoschema-schema.html | 4 doc/src/sgml/html/infoschema-schemata.html | 4 doc/src/sgml/html/infoschema-sequences.html | 4 doc/src/sgml/html/infoschema-sql-features.html | 4 doc/src/sgml/html/infoschema-sql-implementation-info.html | 4 doc/src/sgml/html/infoschema-sql-languages.html | 4 doc/src/sgml/html/infoschema-sql-packages.html | 4 doc/src/sgml/html/infoschema-sql-parts.html | 4 doc/src/sgml/html/infoschema-sql-sizing-profiles.html | 4 doc/src/sgml/html/infoschema-sql-sizing.html | 4 doc/src/sgml/html/infoschema-table-constraints.html | 4 doc/src/sgml/html/infoschema-table-privileges.html | 4 doc/src/sgml/html/infoschema-tables.html | 4 doc/src/sgml/html/infoschema-transforms.html | 4 doc/src/sgml/html/infoschema-triggered-update-columns.html | 4 doc/src/sgml/html/infoschema-triggers.html | 4 doc/src/sgml/html/infoschema-udt-privileges.html | 4 doc/src/sgml/html/infoschema-usage-privileges.html | 4 doc/src/sgml/html/infoschema-user-defined-types.html | 4 doc/src/sgml/html/infoschema-user-mapping-options.html | 4 doc/src/sgml/html/infoschema-user-mappings.html | 4 doc/src/sgml/html/infoschema-view-column-usage.html | 4 doc/src/sgml/html/infoschema-view-routine-usage.html | 4 doc/src/sgml/html/infoschema-view-table-usage.html | 4 doc/src/sgml/html/infoschema-views.html | 4 doc/src/sgml/html/install-getsource.html | 16 doc/src/sgml/html/install-post.html | 4 doc/src/sgml/html/install-procedure.html | 4 doc/src/sgml/html/install-requirements.html | 10 doc/src/sgml/html/install-short.html | 4 doc/src/sgml/html/install-windows-full.html | 29 doc/src/sgml/html/install-windows.html | 8 doc/src/sgml/html/installation-platform-notes.html | 4 doc/src/sgml/html/installation.html | 4 doc/src/sgml/html/intagg.html | 4 doc/src/sgml/html/intarray.html | 4 doc/src/sgml/html/internals.html | 4 doc/src/sgml/html/intro-whatis.html | 4 doc/src/sgml/html/isn.html | 4 doc/src/sgml/html/jit-configuration.html | 4 doc/src/sgml/html/jit-decision.html | 4 doc/src/sgml/html/jit-extensibility.html | 4 doc/src/sgml/html/jit-reason.html | 4 doc/src/sgml/html/jit.html | 4 doc/src/sgml/html/kernel-resources.html | 4 doc/src/sgml/html/largeobjects.html | 4 doc/src/sgml/html/legalnotice.html | 4 doc/src/sgml/html/libpq-async.html | 4 doc/src/sgml/html/libpq-build.html | 4 doc/src/sgml/html/libpq-cancel.html | 4 doc/src/sgml/html/libpq-connect.html | 6 doc/src/sgml/html/libpq-control.html | 4 doc/src/sgml/html/libpq-copy.html | 4 doc/src/sgml/html/libpq-envars.html | 4 doc/src/sgml/html/libpq-events.html | 4 doc/src/sgml/html/libpq-example.html | 4 doc/src/sgml/html/libpq-exec.html | 4 doc/src/sgml/html/libpq-fastpath.html | 4 doc/src/sgml/html/libpq-ldap.html | 4 doc/src/sgml/html/libpq-misc.html | 4 doc/src/sgml/html/libpq-notice-processing.html | 4 doc/src/sgml/html/libpq-notify.html | 4 doc/src/sgml/html/libpq-pgpass.html | 4 doc/src/sgml/html/libpq-pgservice.html | 4 doc/src/sgml/html/libpq-single-row-mode.html | 4 doc/src/sgml/html/libpq-ssl.html | 28 doc/src/sgml/html/libpq-status.html | 4 doc/src/sgml/html/libpq-threading.html | 4 doc/src/sgml/html/libpq.html | 4 doc/src/sgml/html/lo-examplesect.html | 4 doc/src/sgml/html/lo-funcs.html | 4 doc/src/sgml/html/lo-implementation.html | 4 doc/src/sgml/html/lo-interfaces.html | 4 doc/src/sgml/html/lo-intro.html | 4 doc/src/sgml/html/lo.html | 4 doc/src/sgml/html/locale.html | 4 doc/src/sgml/html/locking-indexes.html | 4 doc/src/sgml/html/log-shipping-alternative.html | 4 doc/src/sgml/html/logfile-maintenance.html | 4 doc/src/sgml/html/logical-replication-architecture.html | 4 doc/src/sgml/html/logical-replication-config.html | 4 doc/src/sgml/html/logical-replication-conflicts.html | 4 doc/src/sgml/html/logical-replication-monitoring.html | 4 doc/src/sgml/html/logical-replication-publication.html | 4 doc/src/sgml/html/logical-replication-quick-setup.html | 4 doc/src/sgml/html/logical-replication-restrictions.html | 4 doc/src/sgml/html/logical-replication-security.html | 4 doc/src/sgml/html/logical-replication-subscription.html | 4 doc/src/sgml/html/logical-replication.html | 4 doc/src/sgml/html/logicaldecoding-catalogs.html | 4 doc/src/sgml/html/logicaldecoding-example.html | 4 doc/src/sgml/html/logicaldecoding-explanation.html | 4 doc/src/sgml/html/logicaldecoding-output-plugin.html | 4 doc/src/sgml/html/logicaldecoding-sql.html | 4 doc/src/sgml/html/logicaldecoding-synchronous.html | 4 doc/src/sgml/html/logicaldecoding-walsender.html | 4 doc/src/sgml/html/logicaldecoding-writer.html | 4 doc/src/sgml/html/logicaldecoding.html | 4 doc/src/sgml/html/ltree.html | 4 doc/src/sgml/html/maintenance.html | 4 doc/src/sgml/html/manage-ag-config.html | 4 doc/src/sgml/html/manage-ag-createdb.html | 4 doc/src/sgml/html/manage-ag-dropdb.html | 4 doc/src/sgml/html/manage-ag-overview.html | 4 doc/src/sgml/html/manage-ag-tablespaces.html | 4 doc/src/sgml/html/manage-ag-templatedbs.html | 4 doc/src/sgml/html/managing-databases.html | 4 doc/src/sgml/html/monitoring-locks.html | 4 doc/src/sgml/html/monitoring-ps.html | 4 doc/src/sgml/html/monitoring-stats.html | 4 doc/src/sgml/html/monitoring.html | 4 doc/src/sgml/html/multibyte.html | 4 doc/src/sgml/html/multivariate-statistics-examples.html | 4 doc/src/sgml/html/mvcc-caveats.html | 4 doc/src/sgml/html/mvcc-intro.html | 4 doc/src/sgml/html/mvcc.html | 4 doc/src/sgml/html/nls-programmer.html | 4 doc/src/sgml/html/nls-translator.html | 4 doc/src/sgml/html/nls.html | 2 doc/src/sgml/html/non-durability.html | 4 doc/src/sgml/html/notation.html | 10 doc/src/sgml/html/oid2name.html | 4 doc/src/sgml/html/overview.html | 4 doc/src/sgml/html/pageinspect.html | 4 doc/src/sgml/html/parallel-plans.html | 4 doc/src/sgml/html/parallel-query.html | 4 doc/src/sgml/html/parallel-safety.html | 4 doc/src/sgml/html/parser-stage.html | 4 doc/src/sgml/html/passwordcheck.html | 4 doc/src/sgml/html/performance-tips.html | 4 doc/src/sgml/html/perm-functions.html | 4 doc/src/sgml/html/pgarchivecleanup.html | 4 doc/src/sgml/html/pgbench.html | 4 doc/src/sgml/html/pgbuffercache.html | 4 doc/src/sgml/html/pgcrypto.html | 4 doc/src/sgml/html/pgfreespacemap.html | 4 doc/src/sgml/html/pgprewarm.html | 4 doc/src/sgml/html/pgrowlocks.html | 4 doc/src/sgml/html/pgstandby.html | 4 doc/src/sgml/html/pgstatstatements.html | 4 doc/src/sgml/html/pgstattuple.html | 4 doc/src/sgml/html/pgtestfsync.html | 4 doc/src/sgml/html/pgtesttiming.html | 4 doc/src/sgml/html/pgtrgm.html | 4 doc/src/sgml/html/pgupgrade.html | 4 doc/src/sgml/html/pgverifychecksums.html | 4 doc/src/sgml/html/pgvisibility.html | 4 doc/src/sgml/html/pgwaldump.html | 4 doc/src/sgml/html/pgxlogdump.html | 6 doc/src/sgml/html/planner-optimizer.html | 4 doc/src/sgml/html/planner-stats-details.html | 4 doc/src/sgml/html/planner-stats-security.html | 4 doc/src/sgml/html/planner-stats.html | 4 doc/src/sgml/html/plhandler.html | 4 doc/src/sgml/html/plperl-builtins.html | 4 doc/src/sgml/html/plperl-data.html | 4 doc/src/sgml/html/plperl-event-triggers.html | 4 doc/src/sgml/html/plperl-funcs.html | 4 doc/src/sgml/html/plperl-global.html | 4 doc/src/sgml/html/plperl-triggers.html | 4 doc/src/sgml/html/plperl-trusted.html | 4 doc/src/sgml/html/plperl-under-the-hood.html | 4 doc/src/sgml/html/plperl.html | 4 doc/src/sgml/html/plpgsql-control-structures.html | 4 doc/src/sgml/html/plpgsql-cursors.html | 4 doc/src/sgml/html/plpgsql-declarations.html | 4 doc/src/sgml/html/plpgsql-development-tips.html | 4 doc/src/sgml/html/plpgsql-errors-and-messages.html | 4 doc/src/sgml/html/plpgsql-expressions.html | 4 doc/src/sgml/html/plpgsql-implementation.html | 4 doc/src/sgml/html/plpgsql-overview.html | 4 doc/src/sgml/html/plpgsql-porting.html | 4 doc/src/sgml/html/plpgsql-statements.html | 4 doc/src/sgml/html/plpgsql-structure.html | 4 doc/src/sgml/html/plpgsql-transactions.html | 4 doc/src/sgml/html/plpgsql-trigger.html | 4 doc/src/sgml/html/plpgsql.html | 2 doc/src/sgml/html/plpython-data.html | 6 doc/src/sgml/html/plpython-database.html | 4 doc/src/sgml/html/plpython-do.html | 4 doc/src/sgml/html/plpython-envar.html | 4 doc/src/sgml/html/plpython-funcs.html | 4 doc/src/sgml/html/plpython-python23.html | 4 doc/src/sgml/html/plpython-sharing.html | 4 doc/src/sgml/html/plpython-subtransaction.html | 4 doc/src/sgml/html/plpython-transactions.html | 4 doc/src/sgml/html/plpython-trigger.html | 4 doc/src/sgml/html/plpython-util.html | 4 doc/src/sgml/html/plpython.html | 4 doc/src/sgml/html/pltcl-config.html | 4 doc/src/sgml/html/pltcl-data.html | 4 doc/src/sgml/html/pltcl-dbaccess.html | 10 doc/src/sgml/html/pltcl-error-handling.html | 4 doc/src/sgml/html/pltcl-event-trigger.html | 4 doc/src/sgml/html/pltcl-functions.html | 4 doc/src/sgml/html/pltcl-global.html | 4 doc/src/sgml/html/pltcl-overview.html | 4 doc/src/sgml/html/pltcl-procnames.html | 4 doc/src/sgml/html/pltcl-subtransactions.html | 4 doc/src/sgml/html/pltcl-transactions.html | 4 doc/src/sgml/html/pltcl-trigger.html | 4 doc/src/sgml/html/pltcl.html | 4 doc/src/sgml/html/populate.html | 4 doc/src/sgml/html/postgres-fdw.html | 11 doc/src/sgml/html/postgres-user.html | 4 doc/src/sgml/html/preface.html | 4 doc/src/sgml/html/preventing-server-spoofing.html | 4 doc/src/sgml/html/progress-reporting.html | 4 doc/src/sgml/html/protocol-changes.html | 4 doc/src/sgml/html/protocol-error-fields.html | 4 doc/src/sgml/html/protocol-flow.html | 4 doc/src/sgml/html/protocol-logical-replication.html | 28 doc/src/sgml/html/protocol-logicalrep-message-formats.html | 4 doc/src/sgml/html/protocol-message-formats.html | 4 doc/src/sgml/html/protocol-message-types.html | 4 doc/src/sgml/html/protocol-overview.html | 4 doc/src/sgml/html/protocol-replication.html | 6 doc/src/sgml/html/protocol.html | 4 doc/src/sgml/html/queries-limit.html | 4 doc/src/sgml/html/queries-order.html | 4 doc/src/sgml/html/queries-overview.html | 4 doc/src/sgml/html/queries-select-lists.html | 4 doc/src/sgml/html/queries-table-expressions.html | 4 doc/src/sgml/html/queries-union.html | 4 doc/src/sgml/html/queries-values.html | 4 doc/src/sgml/html/queries-with.html | 4 doc/src/sgml/html/queries.html | 4 doc/src/sgml/html/query-path.html | 4 doc/src/sgml/html/querytree.html | 4 doc/src/sgml/html/rangetypes.html | 4 doc/src/sgml/html/recovery-config.html | 4 doc/src/sgml/html/recovery-target-settings.html | 4 doc/src/sgml/html/reference-client.html | 4 doc/src/sgml/html/reference-server.html | 4 doc/src/sgml/html/reference.html | 4 doc/src/sgml/html/regress-coverage.html | 4 doc/src/sgml/html/regress-evaluation.html | 4 doc/src/sgml/html/regress-run.html | 4 doc/src/sgml/html/regress-tap.html | 4 doc/src/sgml/html/regress-variant.html | 4 doc/src/sgml/html/regress.html | 4 doc/src/sgml/html/release-11-1.html | 10 doc/src/sgml/html/release-11-10.html | 12 doc/src/sgml/html/release-11-11.html | 12 doc/src/sgml/html/release-11-12.html | 12 doc/src/sgml/html/release-11-13.html | 12 doc/src/sgml/html/release-11-14.html | 12 doc/src/sgml/html/release-11-15.html | 219 doc/src/sgml/html/release-11-16.html | 260 doc/src/sgml/html/release-11-2.html | 12 doc/src/sgml/html/release-11-3.html | 12 doc/src/sgml/html/release-11-4.html | 12 doc/src/sgml/html/release-11-5.html | 12 doc/src/sgml/html/release-11-6.html | 12 doc/src/sgml/html/release-11-7.html | 12 doc/src/sgml/html/release-11-8.html | 12 doc/src/sgml/html/release-11-9.html | 12 doc/src/sgml/html/release-11.html | 58 doc/src/sgml/html/release-prior.html | 4 doc/src/sgml/html/release.html | 4 doc/src/sgml/html/replication-origins.html | 4 doc/src/sgml/html/resources.html | 4 doc/src/sgml/html/role-attributes.html | 4 doc/src/sgml/html/role-membership.html | 4 doc/src/sgml/html/role-removal.html | 4 doc/src/sgml/html/routine-reindex.html | 4 doc/src/sgml/html/routine-vacuuming.html | 24 doc/src/sgml/html/row-estimation-examples.html | 4 doc/src/sgml/html/rowtypes.html | 4 doc/src/sgml/html/rule-system.html | 4 doc/src/sgml/html/rules-materializedviews.html | 7 doc/src/sgml/html/rules-privileges.html | 4 doc/src/sgml/html/rules-status.html | 4 doc/src/sgml/html/rules-triggers.html | 4 doc/src/sgml/html/rules-update.html | 4 doc/src/sgml/html/rules-views.html | 4 doc/src/sgml/html/rules.html | 4 doc/src/sgml/html/runtime-config-autovacuum.html | 4 doc/src/sgml/html/runtime-config-client.html | 4 doc/src/sgml/html/runtime-config-compatible.html | 4 doc/src/sgml/html/runtime-config-connection.html | 6 doc/src/sgml/html/runtime-config-custom.html | 4 doc/src/sgml/html/runtime-config-developer.html | 4 doc/src/sgml/html/runtime-config-error-handling.html | 4 doc/src/sgml/html/runtime-config-file-locations.html | 4 doc/src/sgml/html/runtime-config-locks.html | 4 doc/src/sgml/html/runtime-config-logging.html | 4 doc/src/sgml/html/runtime-config-preset.html | 4 doc/src/sgml/html/runtime-config-query.html | 4 doc/src/sgml/html/runtime-config-replication.html | 4 doc/src/sgml/html/runtime-config-resource.html | 4 doc/src/sgml/html/runtime-config-short.html | 4 doc/src/sgml/html/runtime-config-statistics.html | 4 doc/src/sgml/html/runtime-config-wal.html | 4 doc/src/sgml/html/runtime-config.html | 4 doc/src/sgml/html/runtime.html | 4 doc/src/sgml/html/sasl-authentication.html | 4 doc/src/sgml/html/seg.html | 4 doc/src/sgml/html/sepgsql.html | 4 doc/src/sgml/html/server-programming.html | 4 doc/src/sgml/html/server-shutdown.html | 4 doc/src/sgml/html/server-start.html | 12 doc/src/sgml/html/source-conventions.html | 4 doc/src/sgml/html/source-format.html | 4 doc/src/sgml/html/source.html | 2 doc/src/sgml/html/sourcerepo.html | 4 doc/src/sgml/html/spgist-builtin-opclasses.html | 4 doc/src/sgml/html/spgist-examples.html | 4 doc/src/sgml/html/spgist-extensibility.html | 4 doc/src/sgml/html/spgist-implementation.html | 4 doc/src/sgml/html/spgist-intro.html | 4 doc/src/sgml/html/spgist.html | 2 doc/src/sgml/html/spi-examples.html | 4 doc/src/sgml/html/spi-interface-support.html | 4 doc/src/sgml/html/spi-interface.html | 4 doc/src/sgml/html/spi-memory.html | 4 doc/src/sgml/html/spi-realloc.html | 4 doc/src/sgml/html/spi-spi-commit.html | 4 doc/src/sgml/html/spi-spi-connect.html | 4 doc/src/sgml/html/spi-spi-copytuple.html | 4 doc/src/sgml/html/spi-spi-cursor-close.html | 4 doc/src/sgml/html/spi-spi-cursor-fetch.html | 4 doc/src/sgml/html/spi-spi-cursor-find.html | 4 doc/src/sgml/html/spi-spi-cursor-move.html | 4 doc/src/sgml/html/spi-spi-cursor-open-with-args.html | 4 doc/src/sgml/html/spi-spi-cursor-open-with-paramlist.html | 4 doc/src/sgml/html/spi-spi-cursor-open.html | 4 doc/src/sgml/html/spi-spi-exec.html | 4 doc/src/sgml/html/spi-spi-execp.html | 4 doc/src/sgml/html/spi-spi-execute-plan-with-paramlist.html | 4 doc/src/sgml/html/spi-spi-execute-plan.html | 4 doc/src/sgml/html/spi-spi-execute-with-args.html | 4 doc/src/sgml/html/spi-spi-execute.html | 4 doc/src/sgml/html/spi-spi-finish.html | 4 doc/src/sgml/html/spi-spi-fname.html | 4 doc/src/sgml/html/spi-spi-fnumber.html | 4 doc/src/sgml/html/spi-spi-freeplan.html | 4 doc/src/sgml/html/spi-spi-freetuple.html | 4 doc/src/sgml/html/spi-spi-freetupletable.html | 4 doc/src/sgml/html/spi-spi-getargcount.html | 4 doc/src/sgml/html/spi-spi-getargtypeid.html | 4 doc/src/sgml/html/spi-spi-getbinval.html | 4 doc/src/sgml/html/spi-spi-getnspname.html | 4 doc/src/sgml/html/spi-spi-getrelname.html | 4 doc/src/sgml/html/spi-spi-gettype.html | 4 doc/src/sgml/html/spi-spi-gettypeid.html | 4 doc/src/sgml/html/spi-spi-getvalue.html | 4 doc/src/sgml/html/spi-spi-is-cursor-plan.html | 4 doc/src/sgml/html/spi-spi-keepplan.html | 4 doc/src/sgml/html/spi-spi-modifytuple.html | 4 doc/src/sgml/html/spi-spi-palloc.html | 4 doc/src/sgml/html/spi-spi-pfree.html | 4 doc/src/sgml/html/spi-spi-prepare-cursor.html | 4 doc/src/sgml/html/spi-spi-prepare-params.html | 4 doc/src/sgml/html/spi-spi-prepare.html | 4 doc/src/sgml/html/spi-spi-register-relation.html | 4 doc/src/sgml/html/spi-spi-register-trigger-data.html | 4 doc/src/sgml/html/spi-spi-result-code-string.html | 4 doc/src/sgml/html/spi-spi-returntuple.html | 4 doc/src/sgml/html/spi-spi-rollback.html | 4 doc/src/sgml/html/spi-spi-saveplan.html | 4 doc/src/sgml/html/spi-spi-scroll-cursor-fetch.html | 4 doc/src/sgml/html/spi-spi-scroll-cursor-move.html | 4 doc/src/sgml/html/spi-spi-start-transaction.html | 4 doc/src/sgml/html/spi-spi-unregister-relation.html | 4 doc/src/sgml/html/spi-transaction.html | 4 doc/src/sgml/html/spi-visibility.html | 4 doc/src/sgml/html/spi.html | 4 doc/src/sgml/html/sql-abort.html | 4 doc/src/sgml/html/sql-alteraggregate.html | 4 doc/src/sgml/html/sql-altercollation.html | 4 doc/src/sgml/html/sql-alterconversion.html | 4 doc/src/sgml/html/sql-alterdatabase.html | 4 doc/src/sgml/html/sql-alterdefaultprivileges.html | 4 doc/src/sgml/html/sql-alterdomain.html | 4 doc/src/sgml/html/sql-altereventtrigger.html | 4 doc/src/sgml/html/sql-alterextension.html | 4 doc/src/sgml/html/sql-alterforeigndatawrapper.html | 4 doc/src/sgml/html/sql-alterforeigntable.html | 4 doc/src/sgml/html/sql-alterfunction.html | 4 doc/src/sgml/html/sql-altergroup.html | 4 doc/src/sgml/html/sql-alterindex.html | 4 doc/src/sgml/html/sql-alterlanguage.html | 4 doc/src/sgml/html/sql-alterlargeobject.html | 4 doc/src/sgml/html/sql-altermaterializedview.html | 5 doc/src/sgml/html/sql-alteropclass.html | 4 doc/src/sgml/html/sql-alteroperator.html | 4 doc/src/sgml/html/sql-alteropfamily.html | 4 doc/src/sgml/html/sql-alterpolicy.html | 4 doc/src/sgml/html/sql-alterprocedure.html | 4 doc/src/sgml/html/sql-alterpublication.html | 4 doc/src/sgml/html/sql-alterrole.html | 4 doc/src/sgml/html/sql-alterroutine.html | 4 doc/src/sgml/html/sql-alterrule.html | 4 doc/src/sgml/html/sql-alterschema.html | 4 doc/src/sgml/html/sql-altersequence.html | 4 doc/src/sgml/html/sql-alterserver.html | 4 doc/src/sgml/html/sql-alterstatistics.html | 4 doc/src/sgml/html/sql-altersubscription.html | 4 doc/src/sgml/html/sql-altersystem.html | 4 doc/src/sgml/html/sql-altertable.html | 34 doc/src/sgml/html/sql-altertablespace.html | 4 doc/src/sgml/html/sql-altertrigger.html | 4 doc/src/sgml/html/sql-altertsconfig.html | 4 doc/src/sgml/html/sql-altertsdictionary.html | 4 doc/src/sgml/html/sql-altertsparser.html | 4 doc/src/sgml/html/sql-altertstemplate.html | 4 doc/src/sgml/html/sql-altertype.html | 4 doc/src/sgml/html/sql-alteruser.html | 4 doc/src/sgml/html/sql-alterusermapping.html | 4 doc/src/sgml/html/sql-alterview.html | 4 doc/src/sgml/html/sql-analyze.html | 30 doc/src/sgml/html/sql-begin.html | 4 doc/src/sgml/html/sql-call.html | 4 doc/src/sgml/html/sql-checkpoint.html | 4 doc/src/sgml/html/sql-close.html | 4 doc/src/sgml/html/sql-cluster.html | 4 doc/src/sgml/html/sql-commands.html | 4 doc/src/sgml/html/sql-comment.html | 7 doc/src/sgml/html/sql-commit-prepared.html | 4 doc/src/sgml/html/sql-commit.html | 4 doc/src/sgml/html/sql-copy.html | 4 doc/src/sgml/html/sql-create-access-method.html | 4 doc/src/sgml/html/sql-createaggregate.html | 4 doc/src/sgml/html/sql-createcast.html | 4 doc/src/sgml/html/sql-createcollation.html | 4 doc/src/sgml/html/sql-createconversion.html | 4 doc/src/sgml/html/sql-createdatabase.html | 4 doc/src/sgml/html/sql-createdomain.html | 4 doc/src/sgml/html/sql-createeventtrigger.html | 4 doc/src/sgml/html/sql-createextension.html | 4 doc/src/sgml/html/sql-createforeigndatawrapper.html | 4 doc/src/sgml/html/sql-createforeigntable.html | 26 doc/src/sgml/html/sql-createfunction.html | 4 doc/src/sgml/html/sql-creategroup.html | 4 doc/src/sgml/html/sql-createindex.html | 4 doc/src/sgml/html/sql-createlanguage.html | 4 doc/src/sgml/html/sql-creatematerializedview.html | 4 doc/src/sgml/html/sql-createopclass.html | 4 doc/src/sgml/html/sql-createoperator.html | 4 doc/src/sgml/html/sql-createopfamily.html | 4 doc/src/sgml/html/sql-createpolicy.html | 4 doc/src/sgml/html/sql-createprocedure.html | 4 doc/src/sgml/html/sql-createpublication.html | 4 doc/src/sgml/html/sql-createrole.html | 4 doc/src/sgml/html/sql-createrule.html | 4 doc/src/sgml/html/sql-createschema.html | 4 doc/src/sgml/html/sql-createsequence.html | 4 doc/src/sgml/html/sql-createserver.html | 4 doc/src/sgml/html/sql-createstatistics.html | 4 doc/src/sgml/html/sql-createsubscription.html | 4 doc/src/sgml/html/sql-createtable.html | 4 doc/src/sgml/html/sql-createtableas.html | 4 doc/src/sgml/html/sql-createtablespace.html | 4 doc/src/sgml/html/sql-createtransform.html | 4 doc/src/sgml/html/sql-createtrigger.html | 4 doc/src/sgml/html/sql-createtsconfig.html | 4 doc/src/sgml/html/sql-createtsdictionary.html | 4 doc/src/sgml/html/sql-createtsparser.html | 4 doc/src/sgml/html/sql-createtstemplate.html | 4 doc/src/sgml/html/sql-createtype.html | 4 doc/src/sgml/html/sql-createuser.html | 4 doc/src/sgml/html/sql-createusermapping.html | 4 doc/src/sgml/html/sql-createview.html | 4 doc/src/sgml/html/sql-deallocate.html | 4 doc/src/sgml/html/sql-declare.html | 4 doc/src/sgml/html/sql-delete.html | 4 doc/src/sgml/html/sql-discard.html | 4 doc/src/sgml/html/sql-do.html | 4 doc/src/sgml/html/sql-drop-access-method.html | 4 doc/src/sgml/html/sql-drop-owned.html | 4 doc/src/sgml/html/sql-dropaggregate.html | 4 doc/src/sgml/html/sql-dropcast.html | 4 doc/src/sgml/html/sql-dropcollation.html | 4 doc/src/sgml/html/sql-dropconversion.html | 4 doc/src/sgml/html/sql-dropdatabase.html | 4 doc/src/sgml/html/sql-dropdomain.html | 4 doc/src/sgml/html/sql-dropeventtrigger.html | 4 doc/src/sgml/html/sql-dropextension.html | 4 doc/src/sgml/html/sql-dropforeigndatawrapper.html | 4 doc/src/sgml/html/sql-dropforeigntable.html | 4 doc/src/sgml/html/sql-dropfunction.html | 4 doc/src/sgml/html/sql-dropgroup.html | 4 doc/src/sgml/html/sql-dropindex.html | 4 doc/src/sgml/html/sql-droplanguage.html | 4 doc/src/sgml/html/sql-dropmaterializedview.html | 4 doc/src/sgml/html/sql-dropopclass.html | 4 doc/src/sgml/html/sql-dropoperator.html | 4 doc/src/sgml/html/sql-dropopfamily.html | 4 doc/src/sgml/html/sql-droppolicy.html | 4 doc/src/sgml/html/sql-dropprocedure.html | 4 doc/src/sgml/html/sql-droppublication.html | 4 doc/src/sgml/html/sql-droprole.html | 4 doc/src/sgml/html/sql-droproutine.html | 4 doc/src/sgml/html/sql-droprule.html | 4 doc/src/sgml/html/sql-dropschema.html | 4 doc/src/sgml/html/sql-dropsequence.html | 4 doc/src/sgml/html/sql-dropserver.html | 4 doc/src/sgml/html/sql-dropstatistics.html | 4 doc/src/sgml/html/sql-dropsubscription.html | 4 doc/src/sgml/html/sql-droptable.html | 4 doc/src/sgml/html/sql-droptablespace.html | 4 doc/src/sgml/html/sql-droptransform.html | 4 doc/src/sgml/html/sql-droptrigger.html | 4 doc/src/sgml/html/sql-droptsconfig.html | 4 doc/src/sgml/html/sql-droptsdictionary.html | 4 doc/src/sgml/html/sql-droptsparser.html | 4 doc/src/sgml/html/sql-droptstemplate.html | 4 doc/src/sgml/html/sql-droptype.html | 4 doc/src/sgml/html/sql-dropuser.html | 4 doc/src/sgml/html/sql-dropusermapping.html | 4 doc/src/sgml/html/sql-dropview.html | 4 doc/src/sgml/html/sql-end.html | 4 doc/src/sgml/html/sql-execute.html | 4 doc/src/sgml/html/sql-explain.html | 4 doc/src/sgml/html/sql-expressions.html | 4 doc/src/sgml/html/sql-fetch.html | 4 doc/src/sgml/html/sql-grant.html | 4 doc/src/sgml/html/sql-importforeignschema.html | 4 doc/src/sgml/html/sql-insert.html | 4 doc/src/sgml/html/sql-keywords-appendix.html | 6 doc/src/sgml/html/sql-listen.html | 4 doc/src/sgml/html/sql-load.html | 4 doc/src/sgml/html/sql-lock.html | 4 doc/src/sgml/html/sql-move.html | 4 doc/src/sgml/html/sql-notify.html | 4 doc/src/sgml/html/sql-prepare-transaction.html | 4 doc/src/sgml/html/sql-prepare.html | 4 doc/src/sgml/html/sql-reassign-owned.html | 4 doc/src/sgml/html/sql-refreshmaterializedview.html | 14 doc/src/sgml/html/sql-reindex.html | 4 doc/src/sgml/html/sql-release-savepoint.html | 4 doc/src/sgml/html/sql-reset.html | 4 doc/src/sgml/html/sql-revoke.html | 4 doc/src/sgml/html/sql-rollback-prepared.html | 4 doc/src/sgml/html/sql-rollback-to.html | 4 doc/src/sgml/html/sql-rollback.html | 4 doc/src/sgml/html/sql-savepoint.html | 4 doc/src/sgml/html/sql-security-label.html | 4 doc/src/sgml/html/sql-select.html | 4 doc/src/sgml/html/sql-selectinto.html | 4 doc/src/sgml/html/sql-set-constraints.html | 4 doc/src/sgml/html/sql-set-role.html | 4 doc/src/sgml/html/sql-set-session-authorization.html | 4 doc/src/sgml/html/sql-set-transaction.html | 4 doc/src/sgml/html/sql-set.html | 4 doc/src/sgml/html/sql-show.html | 4 doc/src/sgml/html/sql-start-transaction.html | 4 doc/src/sgml/html/sql-syntax-calling-funcs.html | 4 doc/src/sgml/html/sql-syntax-lexical.html | 4 doc/src/sgml/html/sql-syntax.html | 4 doc/src/sgml/html/sql-truncate.html | 4 doc/src/sgml/html/sql-unlisten.html | 4 doc/src/sgml/html/sql-update.html | 4 doc/src/sgml/html/sql-vacuum.html | 4 doc/src/sgml/html/sql-values.html | 4 doc/src/sgml/html/sql.html | 4 doc/src/sgml/html/ssh-tunnels.html | 4 doc/src/sgml/html/ssl-tcp.html | 4 doc/src/sgml/html/sslinfo.html | 4 doc/src/sgml/html/sspi-auth.html | 4 doc/src/sgml/html/standby-settings.html | 4 doc/src/sgml/html/storage-file-layout.html | 4 doc/src/sgml/html/storage-fsm.html | 4 doc/src/sgml/html/storage-init.html | 4 doc/src/sgml/html/storage-page-layout.html | 4 doc/src/sgml/html/storage-toast.html | 4 doc/src/sgml/html/storage-vm.html | 4 doc/src/sgml/html/storage.html | 4 doc/src/sgml/html/supported-platforms.html | 4 doc/src/sgml/html/system-catalog-declarations.html | 4 doc/src/sgml/html/system-catalog-initial-data.html | 4 doc/src/sgml/html/tablefunc.html | 4 doc/src/sgml/html/tablesample-method.html | 4 doc/src/sgml/html/tablesample-support-functions.html | 4 doc/src/sgml/html/tcn.html | 4 doc/src/sgml/html/test-decoding.html | 4 doc/src/sgml/html/textsearch-configuration.html | 4 doc/src/sgml/html/textsearch-controls.html | 4 doc/src/sgml/html/textsearch-debugging.html | 4 doc/src/sgml/html/textsearch-dictionaries.html | 4 doc/src/sgml/html/textsearch-features.html | 4 doc/src/sgml/html/textsearch-indexes.html | 14 doc/src/sgml/html/textsearch-intro.html | 6 doc/src/sgml/html/textsearch-limitations.html | 4 doc/src/sgml/html/textsearch-parsers.html | 4 doc/src/sgml/html/textsearch-psql.html | 4 doc/src/sgml/html/textsearch-tables.html | 8 doc/src/sgml/html/textsearch.html | 2 doc/src/sgml/html/transaction-iso.html | 4 doc/src/sgml/html/trigger-datachanges.html | 4 doc/src/sgml/html/trigger-definition.html | 4 doc/src/sgml/html/trigger-example.html | 4 doc/src/sgml/html/trigger-interface.html | 4 doc/src/sgml/html/triggers.html | 4 doc/src/sgml/html/tsm-system-rows.html | 4 doc/src/sgml/html/tsm-system-time.html | 4 doc/src/sgml/html/tutorial-accessdb.html | 8 doc/src/sgml/html/tutorial-advanced-intro.html | 4 doc/src/sgml/html/tutorial-advanced.html | 2 doc/src/sgml/html/tutorial-agg.html | 4 doc/src/sgml/html/tutorial-arch.html | 4 doc/src/sgml/html/tutorial-concepts.html | 4 doc/src/sgml/html/tutorial-conclusion.html | 4 doc/src/sgml/html/tutorial-createdb.html | 4 doc/src/sgml/html/tutorial-delete.html | 4 doc/src/sgml/html/tutorial-fk.html | 4 doc/src/sgml/html/tutorial-inheritance.html | 4 doc/src/sgml/html/tutorial-install.html | 4 doc/src/sgml/html/tutorial-join.html | 4 doc/src/sgml/html/tutorial-populate.html | 4 doc/src/sgml/html/tutorial-select.html | 4 doc/src/sgml/html/tutorial-sql-intro.html | 4 doc/src/sgml/html/tutorial-sql.html | 2 doc/src/sgml/html/tutorial-start.html | 2 doc/src/sgml/html/tutorial-table.html | 4 doc/src/sgml/html/tutorial-transactions.html | 4 doc/src/sgml/html/tutorial-update.html | 4 doc/src/sgml/html/tutorial-views.html | 4 doc/src/sgml/html/tutorial-window.html | 4 doc/src/sgml/html/tutorial.html | 4 doc/src/sgml/html/typeconv-func.html | 4 doc/src/sgml/html/typeconv-oper.html | 4 doc/src/sgml/html/typeconv-overview.html | 4 doc/src/sgml/html/typeconv-query.html | 4 doc/src/sgml/html/typeconv-select.html | 4 doc/src/sgml/html/typeconv-union-case.html | 4 doc/src/sgml/html/typeconv.html | 4 doc/src/sgml/html/unaccent.html | 4 doc/src/sgml/html/unsupported-features-sql-standard.html | 4 doc/src/sgml/html/upgrading.html | 6 doc/src/sgml/html/user-manag.html | 4 doc/src/sgml/html/using-explain.html | 4 doc/src/sgml/html/uuid-ossp.html | 4 doc/src/sgml/html/vacuumlo.html | 4 doc/src/sgml/html/view-pg-available-extension-versions.html | 4 doc/src/sgml/html/view-pg-available-extensions.html | 4 doc/src/sgml/html/view-pg-config.html | 4 doc/src/sgml/html/view-pg-cursors.html | 4 doc/src/sgml/html/view-pg-file-settings.html | 4 doc/src/sgml/html/view-pg-group.html | 4 doc/src/sgml/html/view-pg-hba-file-rules.html | 4 doc/src/sgml/html/view-pg-indexes.html | 4 doc/src/sgml/html/view-pg-locks.html | 4 doc/src/sgml/html/view-pg-matviews.html | 4 doc/src/sgml/html/view-pg-policies.html | 4 doc/src/sgml/html/view-pg-prepared-statements.html | 4 doc/src/sgml/html/view-pg-prepared-xacts.html | 4 doc/src/sgml/html/view-pg-publication-tables.html | 4 doc/src/sgml/html/view-pg-replication-origin-status.html | 4 doc/src/sgml/html/view-pg-replication-slots.html | 4 doc/src/sgml/html/view-pg-roles.html | 4 doc/src/sgml/html/view-pg-rules.html | 4 doc/src/sgml/html/view-pg-seclabels.html | 4 doc/src/sgml/html/view-pg-sequences.html | 4 doc/src/sgml/html/view-pg-settings.html | 4 doc/src/sgml/html/view-pg-shadow.html | 4 doc/src/sgml/html/view-pg-stats.html | 4 doc/src/sgml/html/view-pg-tables.html | 4 doc/src/sgml/html/view-pg-timezone-abbrevs.html | 4 doc/src/sgml/html/view-pg-timezone-names.html | 4 doc/src/sgml/html/view-pg-user-mappings.html | 4 doc/src/sgml/html/view-pg-user.html | 4 doc/src/sgml/html/view-pg-views.html | 4 doc/src/sgml/html/views-overview.html | 4 doc/src/sgml/html/wal-async-commit.html | 4 doc/src/sgml/html/wal-configuration.html | 4 doc/src/sgml/html/wal-internals.html | 4 doc/src/sgml/html/wal-intro.html | 4 doc/src/sgml/html/wal-reliability.html | 4 doc/src/sgml/html/wal.html | 4 doc/src/sgml/html/warm-standby-failover.html | 4 doc/src/sgml/html/warm-standby.html | 6 doc/src/sgml/html/when-can-parallel-query-be-used.html | 4 doc/src/sgml/html/xaggr.html | 4 doc/src/sgml/html/xfunc-c.html | 18 doc/src/sgml/html/xfunc-internal.html | 4 doc/src/sgml/html/xfunc-overload.html | 4 doc/src/sgml/html/xfunc-pl.html | 4 doc/src/sgml/html/xfunc-sql.html | 4 doc/src/sgml/html/xfunc-volatility.html | 4 doc/src/sgml/html/xfunc.html | 4 doc/src/sgml/html/xindex.html | 4 doc/src/sgml/html/xml-limits-conformance.html | 4 doc/src/sgml/html/xml2.html | 4 doc/src/sgml/html/xoper-optimization.html | 6 doc/src/sgml/html/xoper.html | 4 doc/src/sgml/html/xplang-install.html | 4 doc/src/sgml/html/xplang.html | 4 doc/src/sgml/html/xproc.html | 4 doc/src/sgml/html/xtypes.html | 4 doc/src/sgml/indices.sgml | 4 doc/src/sgml/install-windows.sgml | 44 doc/src/sgml/installation.sgml | 6 doc/src/sgml/legal.sgml | 6 doc/src/sgml/libpq.sgml | 28 doc/src/sgml/maintenance.sgml | 29 doc/src/sgml/man1/clusterdb.1 | 10 doc/src/sgml/man1/createdb.1 | 10 doc/src/sgml/man1/createuser.1 | 10 doc/src/sgml/man1/dropdb.1 | 10 doc/src/sgml/man1/dropuser.1 | 10 doc/src/sgml/man1/ecpg.1 | 10 doc/src/sgml/man1/initdb.1 | 10 doc/src/sgml/man1/oid2name.1 | 10 doc/src/sgml/man1/pg_archivecleanup.1 | 10 doc/src/sgml/man1/pg_basebackup.1 | 10 doc/src/sgml/man1/pg_config.1 | 10 doc/src/sgml/man1/pg_controldata.1 | 10 doc/src/sgml/man1/pg_ctl.1 | 10 doc/src/sgml/man1/pg_dump.1 | 10 doc/src/sgml/man1/pg_dumpall.1 | 10 doc/src/sgml/man1/pg_isready.1 | 10 doc/src/sgml/man1/pg_receivewal.1 | 14 doc/src/sgml/man1/pg_recvlogical.1 | 10 doc/src/sgml/man1/pg_resetwal.1 | 10 doc/src/sgml/man1/pg_restore.1 | 10 doc/src/sgml/man1/pg_rewind.1 | 10 doc/src/sgml/man1/pg_standby.1 | 10 doc/src/sgml/man1/pg_test_fsync.1 | 10 doc/src/sgml/man1/pg_test_timing.1 | 10 doc/src/sgml/man1/pg_upgrade.1 | 10 doc/src/sgml/man1/pg_verify_checksums.1 | 10 doc/src/sgml/man1/pg_waldump.1 | 10 doc/src/sgml/man1/pgbench.1 | 10 doc/src/sgml/man1/postgres.1 | 10 doc/src/sgml/man1/postmaster.1 | 10 doc/src/sgml/man1/psql.1 | 12 doc/src/sgml/man1/reindexdb.1 | 10 doc/src/sgml/man1/vacuumdb.1 | 10 doc/src/sgml/man1/vacuumlo.1 | 10 doc/src/sgml/man3/SPI_commit.3 | 10 doc/src/sgml/man3/SPI_connect.3 | 10 doc/src/sgml/man3/SPI_copytuple.3 | 10 doc/src/sgml/man3/SPI_cursor_close.3 | 10 doc/src/sgml/man3/SPI_cursor_fetch.3 | 10 doc/src/sgml/man3/SPI_cursor_find.3 | 10 doc/src/sgml/man3/SPI_cursor_move.3 | 10 doc/src/sgml/man3/SPI_cursor_open.3 | 10 doc/src/sgml/man3/SPI_cursor_open_with_args.3 | 10 doc/src/sgml/man3/SPI_cursor_open_with_paramlist.3 | 10 doc/src/sgml/man3/SPI_exec.3 | 10 doc/src/sgml/man3/SPI_execp.3 | 10 doc/src/sgml/man3/SPI_execute.3 | 10 doc/src/sgml/man3/SPI_execute_plan.3 | 10 doc/src/sgml/man3/SPI_execute_plan_with_paramlist.3 | 10 doc/src/sgml/man3/SPI_execute_with_args.3 | 10 doc/src/sgml/man3/SPI_finish.3 | 10 doc/src/sgml/man3/SPI_fname.3 | 10 doc/src/sgml/man3/SPI_fnumber.3 | 10 doc/src/sgml/man3/SPI_freeplan.3 | 10 doc/src/sgml/man3/SPI_freetuple.3 | 10 doc/src/sgml/man3/SPI_freetuptable.3 | 10 doc/src/sgml/man3/SPI_getargcount.3 | 10 doc/src/sgml/man3/SPI_getargtypeid.3 | 10 doc/src/sgml/man3/SPI_getbinval.3 | 10 doc/src/sgml/man3/SPI_getnspname.3 | 10 doc/src/sgml/man3/SPI_getrelname.3 | 10 doc/src/sgml/man3/SPI_gettype.3 | 10 doc/src/sgml/man3/SPI_gettypeid.3 | 10 doc/src/sgml/man3/SPI_getvalue.3 | 10 doc/src/sgml/man3/SPI_is_cursor_plan.3 | 10 doc/src/sgml/man3/SPI_keepplan.3 | 10 doc/src/sgml/man3/SPI_modifytuple.3 | 10 doc/src/sgml/man3/SPI_palloc.3 | 10 doc/src/sgml/man3/SPI_pfree.3 | 10 doc/src/sgml/man3/SPI_prepare.3 | 10 doc/src/sgml/man3/SPI_prepare_cursor.3 | 10 doc/src/sgml/man3/SPI_prepare_params.3 | 10 doc/src/sgml/man3/SPI_register_relation.3 | 10 doc/src/sgml/man3/SPI_register_trigger_data.3 | 10 doc/src/sgml/man3/SPI_repalloc.3 | 10 doc/src/sgml/man3/SPI_result_code_string.3 | 10 doc/src/sgml/man3/SPI_returntuple.3 | 10 doc/src/sgml/man3/SPI_rollback.3 | 10 doc/src/sgml/man3/SPI_saveplan.3 | 10 doc/src/sgml/man3/SPI_scroll_cursor_fetch.3 | 10 doc/src/sgml/man3/SPI_scroll_cursor_move.3 | 10 doc/src/sgml/man3/SPI_start_transaction.3 | 10 doc/src/sgml/man3/SPI_unregister_relation.3 | 10 doc/src/sgml/man3/dblink.3 | 10 doc/src/sgml/man3/dblink_build_sql_delete.3 | 10 doc/src/sgml/man3/dblink_build_sql_insert.3 | 10 doc/src/sgml/man3/dblink_build_sql_update.3 | 10 doc/src/sgml/man3/dblink_cancel_query.3 | 10 doc/src/sgml/man3/dblink_close.3 | 10 doc/src/sgml/man3/dblink_connect.3 | 10 doc/src/sgml/man3/dblink_connect_u.3 | 10 doc/src/sgml/man3/dblink_disconnect.3 | 10 doc/src/sgml/man3/dblink_error_message.3 | 10 doc/src/sgml/man3/dblink_exec.3 | 10 doc/src/sgml/man3/dblink_fetch.3 | 10 doc/src/sgml/man3/dblink_get_connections.3 | 10 doc/src/sgml/man3/dblink_get_notify.3 | 10 doc/src/sgml/man3/dblink_get_pkey.3 | 10 doc/src/sgml/man3/dblink_get_result.3 | 10 doc/src/sgml/man3/dblink_is_busy.3 | 10 doc/src/sgml/man3/dblink_open.3 | 10 doc/src/sgml/man3/dblink_send_query.3 | 10 doc/src/sgml/man7/ABORT.7 | 10 doc/src/sgml/man7/ALTER_AGGREGATE.7 | 10 doc/src/sgml/man7/ALTER_COLLATION.7 | 10 doc/src/sgml/man7/ALTER_CONVERSION.7 | 10 doc/src/sgml/man7/ALTER_DATABASE.7 | 10 doc/src/sgml/man7/ALTER_DEFAULT_PRIVILEGES.7 | 10 doc/src/sgml/man7/ALTER_DOMAIN.7 | 10 doc/src/sgml/man7/ALTER_EVENT_TRIGGER.7 | 10 doc/src/sgml/man7/ALTER_EXTENSION.7 | 10 doc/src/sgml/man7/ALTER_FOREIGN_DATA_WRAPPER.7 | 10 doc/src/sgml/man7/ALTER_FOREIGN_TABLE.7 | 10 doc/src/sgml/man7/ALTER_FUNCTION.7 | 10 doc/src/sgml/man7/ALTER_GROUP.7 | 10 doc/src/sgml/man7/ALTER_INDEX.7 | 10 doc/src/sgml/man7/ALTER_LANGUAGE.7 | 10 doc/src/sgml/man7/ALTER_LARGE_OBJECT.7 | 10 doc/src/sgml/man7/ALTER_MATERIALIZED_VIEW.7 | 11 doc/src/sgml/man7/ALTER_OPERATOR.7 | 10 doc/src/sgml/man7/ALTER_OPERATOR_CLASS.7 | 10 doc/src/sgml/man7/ALTER_OPERATOR_FAMILY.7 | 10 doc/src/sgml/man7/ALTER_POLICY.7 | 10 doc/src/sgml/man7/ALTER_PROCEDURE.7 | 10 doc/src/sgml/man7/ALTER_PUBLICATION.7 | 10 doc/src/sgml/man7/ALTER_ROLE.7 | 10 doc/src/sgml/man7/ALTER_ROUTINE.7 | 10 doc/src/sgml/man7/ALTER_RULE.7 | 10 doc/src/sgml/man7/ALTER_SCHEMA.7 | 10 doc/src/sgml/man7/ALTER_SEQUENCE.7 | 10 doc/src/sgml/man7/ALTER_SERVER.7 | 10 doc/src/sgml/man7/ALTER_STATISTICS.7 | 10 doc/src/sgml/man7/ALTER_SUBSCRIPTION.7 | 10 doc/src/sgml/man7/ALTER_SYSTEM.7 | 10 doc/src/sgml/man7/ALTER_TABLE.7 | 38 doc/src/sgml/man7/ALTER_TABLESPACE.7 | 10 doc/src/sgml/man7/ALTER_TEXT_SEARCH_CONFIGURATION.7 | 10 doc/src/sgml/man7/ALTER_TEXT_SEARCH_DICTIONARY.7 | 10 doc/src/sgml/man7/ALTER_TEXT_SEARCH_PARSER.7 | 10 doc/src/sgml/man7/ALTER_TEXT_SEARCH_TEMPLATE.7 | 10 doc/src/sgml/man7/ALTER_TRIGGER.7 | 10 doc/src/sgml/man7/ALTER_TYPE.7 | 10 doc/src/sgml/man7/ALTER_USER.7 | 10 doc/src/sgml/man7/ALTER_USER_MAPPING.7 | 10 doc/src/sgml/man7/ALTER_VIEW.7 | 10 doc/src/sgml/man7/ANALYZE.7 | 26 doc/src/sgml/man7/BEGIN.7 | 10 doc/src/sgml/man7/CALL.7 | 10 doc/src/sgml/man7/CHECKPOINT.7 | 10 doc/src/sgml/man7/CLOSE.7 | 10 doc/src/sgml/man7/CLUSTER.7 | 10 doc/src/sgml/man7/COMMENT.7 | 14 doc/src/sgml/man7/COMMIT.7 | 10 doc/src/sgml/man7/COMMIT_PREPARED.7 | 10 doc/src/sgml/man7/COPY.7 | 10 doc/src/sgml/man7/CREATE_ACCESS_METHOD.7 | 10 doc/src/sgml/man7/CREATE_AGGREGATE.7 | 10 doc/src/sgml/man7/CREATE_CAST.7 | 10 doc/src/sgml/man7/CREATE_COLLATION.7 | 10 doc/src/sgml/man7/CREATE_CONVERSION.7 | 10 doc/src/sgml/man7/CREATE_DATABASE.7 | 10 doc/src/sgml/man7/CREATE_DOMAIN.7 | 10 doc/src/sgml/man7/CREATE_EVENT_TRIGGER.7 | 10 doc/src/sgml/man7/CREATE_EXTENSION.7 | 10 doc/src/sgml/man7/CREATE_FOREIGN_DATA_WRAPPER.7 | 10 doc/src/sgml/man7/CREATE_FOREIGN_TABLE.7 | 36 doc/src/sgml/man7/CREATE_FUNCTION.7 | 10 doc/src/sgml/man7/CREATE_GROUP.7 | 10 doc/src/sgml/man7/CREATE_INDEX.7 | 10 doc/src/sgml/man7/CREATE_LANGUAGE.7 | 10 doc/src/sgml/man7/CREATE_MATERIALIZED_VIEW.7 | 10 doc/src/sgml/man7/CREATE_OPERATOR.7 | 10 doc/src/sgml/man7/CREATE_OPERATOR_CLASS.7 | 10 doc/src/sgml/man7/CREATE_OPERATOR_FAMILY.7 | 10 doc/src/sgml/man7/CREATE_POLICY.7 | 10 doc/src/sgml/man7/CREATE_PROCEDURE.7 | 10 doc/src/sgml/man7/CREATE_PUBLICATION.7 | 12 doc/src/sgml/man7/CREATE_ROLE.7 | 10 doc/src/sgml/man7/CREATE_RULE.7 | 10 doc/src/sgml/man7/CREATE_SCHEMA.7 | 10 doc/src/sgml/man7/CREATE_SEQUENCE.7 | 10 doc/src/sgml/man7/CREATE_SERVER.7 | 10 doc/src/sgml/man7/CREATE_STATISTICS.7 | 10 doc/src/sgml/man7/CREATE_SUBSCRIPTION.7 | 10 doc/src/sgml/man7/CREATE_TABLE.7 | 10 doc/src/sgml/man7/CREATE_TABLESPACE.7 | 10 doc/src/sgml/man7/CREATE_TABLE_AS.7 | 10 doc/src/sgml/man7/CREATE_TEXT_SEARCH_CONFIGURATION.7 | 10 doc/src/sgml/man7/CREATE_TEXT_SEARCH_DICTIONARY.7 | 10 doc/src/sgml/man7/CREATE_TEXT_SEARCH_PARSER.7 | 10 doc/src/sgml/man7/CREATE_TEXT_SEARCH_TEMPLATE.7 | 10 doc/src/sgml/man7/CREATE_TRANSFORM.7 | 10 doc/src/sgml/man7/CREATE_TRIGGER.7 | 10 doc/src/sgml/man7/CREATE_TYPE.7 | 10 doc/src/sgml/man7/CREATE_USER.7 | 10 doc/src/sgml/man7/CREATE_USER_MAPPING.7 | 10 doc/src/sgml/man7/CREATE_VIEW.7 | 10 doc/src/sgml/man7/DEALLOCATE.7 | 10 doc/src/sgml/man7/DECLARE.7 | 10 doc/src/sgml/man7/DELETE.7 | 10 doc/src/sgml/man7/DISCARD.7 | 10 doc/src/sgml/man7/DO.7 | 10 doc/src/sgml/man7/DROP_ACCESS_METHOD.7 | 10 doc/src/sgml/man7/DROP_AGGREGATE.7 | 10 doc/src/sgml/man7/DROP_CAST.7 | 10 doc/src/sgml/man7/DROP_COLLATION.7 | 10 doc/src/sgml/man7/DROP_CONVERSION.7 | 10 doc/src/sgml/man7/DROP_DATABASE.7 | 10 doc/src/sgml/man7/DROP_DOMAIN.7 | 10 doc/src/sgml/man7/DROP_EVENT_TRIGGER.7 | 10 doc/src/sgml/man7/DROP_EXTENSION.7 | 10 doc/src/sgml/man7/DROP_FOREIGN_DATA_WRAPPER.7 | 10 doc/src/sgml/man7/DROP_FOREIGN_TABLE.7 | 10 doc/src/sgml/man7/DROP_FUNCTION.7 | 10 doc/src/sgml/man7/DROP_GROUP.7 | 10 doc/src/sgml/man7/DROP_INDEX.7 | 10 doc/src/sgml/man7/DROP_LANGUAGE.7 | 10 doc/src/sgml/man7/DROP_MATERIALIZED_VIEW.7 | 10 doc/src/sgml/man7/DROP_OPERATOR.7 | 10 doc/src/sgml/man7/DROP_OPERATOR_CLASS.7 | 10 doc/src/sgml/man7/DROP_OPERATOR_FAMILY.7 | 10 doc/src/sgml/man7/DROP_OWNED.7 | 10 doc/src/sgml/man7/DROP_POLICY.7 | 10 doc/src/sgml/man7/DROP_PROCEDURE.7 | 10 doc/src/sgml/man7/DROP_PUBLICATION.7 | 10 doc/src/sgml/man7/DROP_ROLE.7 | 10 doc/src/sgml/man7/DROP_ROUTINE.7 | 10 doc/src/sgml/man7/DROP_RULE.7 | 10 doc/src/sgml/man7/DROP_SCHEMA.7 | 10 doc/src/sgml/man7/DROP_SEQUENCE.7 | 10 doc/src/sgml/man7/DROP_SERVER.7 | 10 doc/src/sgml/man7/DROP_STATISTICS.7 | 10 doc/src/sgml/man7/DROP_SUBSCRIPTION.7 | 10 doc/src/sgml/man7/DROP_TABLE.7 | 10 doc/src/sgml/man7/DROP_TABLESPACE.7 | 10 doc/src/sgml/man7/DROP_TEXT_SEARCH_CONFIGURATION.7 | 10 doc/src/sgml/man7/DROP_TEXT_SEARCH_DICTIONARY.7 | 10 doc/src/sgml/man7/DROP_TEXT_SEARCH_PARSER.7 | 10 doc/src/sgml/man7/DROP_TEXT_SEARCH_TEMPLATE.7 | 10 doc/src/sgml/man7/DROP_TRANSFORM.7 | 10 doc/src/sgml/man7/DROP_TRIGGER.7 | 10 doc/src/sgml/man7/DROP_TYPE.7 | 10 doc/src/sgml/man7/DROP_USER.7 | 10 doc/src/sgml/man7/DROP_USER_MAPPING.7 | 10 doc/src/sgml/man7/DROP_VIEW.7 | 10 doc/src/sgml/man7/END.7 | 10 doc/src/sgml/man7/EXECUTE.7 | 10 doc/src/sgml/man7/EXPLAIN.7 | 10 doc/src/sgml/man7/FETCH.7 | 10 doc/src/sgml/man7/GRANT.7 | 10 doc/src/sgml/man7/IMPORT_FOREIGN_SCHEMA.7 | 10 doc/src/sgml/man7/INSERT.7 | 10 doc/src/sgml/man7/LISTEN.7 | 10 doc/src/sgml/man7/LOAD.7 | 10 doc/src/sgml/man7/LOCK.7 | 10 doc/src/sgml/man7/MOVE.7 | 10 doc/src/sgml/man7/NOTIFY.7 | 10 doc/src/sgml/man7/PREPARE.7 | 10 doc/src/sgml/man7/PREPARE_TRANSACTION.7 | 10 doc/src/sgml/man7/REASSIGN_OWNED.7 | 10 doc/src/sgml/man7/REFRESH_MATERIALIZED_VIEW.7 | 20 doc/src/sgml/man7/REINDEX.7 | 10 doc/src/sgml/man7/RELEASE_SAVEPOINT.7 | 10 doc/src/sgml/man7/RESET.7 | 10 doc/src/sgml/man7/REVOKE.7 | 10 doc/src/sgml/man7/ROLLBACK.7 | 10 doc/src/sgml/man7/ROLLBACK_PREPARED.7 | 10 doc/src/sgml/man7/ROLLBACK_TO_SAVEPOINT.7 | 10 doc/src/sgml/man7/SAVEPOINT.7 | 10 doc/src/sgml/man7/SECURITY_LABEL.7 | 10 doc/src/sgml/man7/SELECT.7 | 10 doc/src/sgml/man7/SELECT_INTO.7 | 10 doc/src/sgml/man7/SET.7 | 10 doc/src/sgml/man7/SET_CONSTRAINTS.7 | 10 doc/src/sgml/man7/SET_ROLE.7 | 10 doc/src/sgml/man7/SET_SESSION_AUTHORIZATION.7 | 10 doc/src/sgml/man7/SET_TRANSACTION.7 | 10 doc/src/sgml/man7/SHOW.7 | 10 doc/src/sgml/man7/START_TRANSACTION.7 | 10 doc/src/sgml/man7/TRUNCATE.7 | 10 doc/src/sgml/man7/UNLISTEN.7 | 10 doc/src/sgml/man7/UPDATE.7 | 10 doc/src/sgml/man7/VACUUM.7 | 10 doc/src/sgml/man7/VALUES.7 | 10 doc/src/sgml/mvcc.sgml | 2 doc/src/sgml/notation.sgml | 6 doc/src/sgml/plpython.sgml | 2 doc/src/sgml/pltcl.sgml | 6 doc/src/sgml/postgres-fdw.sgml | 7 doc/src/sgml/protocol.sgml | 28 doc/src/sgml/ref/alter_materialized_view.sgml | 1 doc/src/sgml/ref/alter_table.sgml | 58 doc/src/sgml/ref/analyze.sgml | 32 doc/src/sgml/ref/comment.sgml | 5 doc/src/sgml/ref/create_foreign_table.sgml | 24 doc/src/sgml/ref/create_publication.sgml | 2 doc/src/sgml/ref/pg_receivewal.sgml | 7 doc/src/sgml/ref/refresh_materialized_view.sgml | 10 doc/src/sgml/release-11.sgml | 1540 doc/src/sgml/rules.sgml | 3 doc/src/sgml/runtime.sgml | 8 doc/src/sgml/textsearch.sgml | 10 doc/src/sgml/xfunc.sgml | 53 src/backend/access/brin/brin.c | 30 src/backend/access/heap/heapam.c | 189 src/backend/access/heap/rewriteheap.c | 3 src/backend/access/transam/clog.c | 5 src/backend/access/transam/commit_ts.c | 8 src/backend/access/transam/twophase.c | 24 src/backend/access/transam/xact.c | 6 src/backend/access/transam/xlog.c | 29 src/backend/access/transam/xlogreader.c | 2 src/backend/bootstrap/bootparse.c | 1302 src/backend/catalog/index.c | 52 src/backend/catalog/namespace.c | 3 src/backend/catalog/pg_class_d.h | 2 src/backend/catalog/pg_shdepend.c | 20 src/backend/catalog/storage.c | 26 src/backend/commands/analyze.c | 18 src/backend/commands/cluster.c | 35 src/backend/commands/copy.c | 2 src/backend/commands/explain.c | 2 src/backend/commands/functioncmds.c | 5 src/backend/commands/indexcmds.c | 79 src/backend/commands/matview.c | 30 src/backend/commands/tablecmds.c | 104 src/backend/executor/execExpr.c | 8 src/backend/executor/execExprInterp.c | 72 src/backend/executor/execTuples.c | 37 src/backend/executor/nodeIndexonlyscan.c | 8 src/backend/executor/nodeIndexscan.c | 6 src/backend/executor/nodeMergejoin.c | 12 src/backend/jit/llvm/Makefile | 6 src/backend/jit/llvm/llvmjit_error.cpp | 35 src/backend/jit/llvm/llvmjit_inline.cpp | 12 src/backend/libpq/be-secure-common.c | 28 src/backend/nodes/copyfuncs.c | 47 src/backend/nodes/nodeFuncs.c | 2 src/backend/nodes/outfuncs.c | 1 src/backend/nodes/readfuncs.c | 1 src/backend/optimizer/geqo/geqo_main.c | 7 src/backend/optimizer/path/costsize.c | 6 src/backend/optimizer/path/joinpath.c | 2 src/backend/optimizer/plan/createplan.c | 45 src/backend/optimizer/plan/setrefs.c | 26 src/backend/optimizer/plan/subselect.c | 32 src/backend/parser/analyze.c | 21 src/backend/parser/gram.c |19687 +++--- src/backend/parser/gram.h | 943 src/backend/parser/parse_coerce.c | 10 src/backend/parser/parse_utilcmd.c | 2 src/backend/po/de.po | 1581 src/backend/po/fr.po | 5017 - src/backend/po/ru.po | 1592 src/backend/po/sv.po | 1703 src/backend/replication/logical/launcher.c | 8 src/backend/replication/logical/tablesync.c | 21 src/backend/replication/logical/worker.c | 5 src/backend/replication/repl_gram.c | 1380 src/backend/replication/repl_gram.y | 25 src/backend/replication/repl_scanner.c | 756 src/backend/replication/repl_scanner.l | 89 src/backend/replication/syncrep_gram.c | 866 src/backend/replication/walsender.c | 43 src/backend/statistics/dependencies.c | 13 src/backend/statistics/extended_stats.c | 1 src/backend/storage/buffer/bufmgr.c | 4 src/backend/storage/ipc/latch.c | 2 src/backend/storage/ipc/procarray.c | 109 src/backend/storage/ipc/shm_mq.c | 7 src/backend/storage/ipc/standby.c | 22 src/backend/storage/lmgr/proc.c | 4 src/backend/storage/smgr/md.c | 14 src/backend/utils/adt/numeric.c | 8 src/backend/utils/adt/ruleutils.c | 66 src/backend/utils/adt/selfuncs.c | 12 src/backend/utils/adt/xid.c | 26 src/backend/utils/adt/xml.c | 4 src/backend/utils/cache/inval.c | 2 src/backend/utils/cache/relcache.c | 2 src/backend/utils/init/miscinit.c | 24 src/backend/utils/sort/tuplesort.c | 4 src/backend/utils/time/snapmgr.c | 10 src/backend/utils/time/tqual.c | 4 src/bin/initdb/po/ru.po | 16 src/bin/initdb/po/sv.po | 12 src/bin/pg_archivecleanup/po/sv.po | 2 src/bin/pg_basebackup/pg_receivewal.c | 12 src/bin/pg_basebackup/pg_recvlogical.c | 22 src/bin/pg_basebackup/po/ru.po | 96 src/bin/pg_basebackup/po/sv.po | 98 src/bin/pg_basebackup/t/010_pg_basebackup.pl | 33 src/bin/pg_basebackup/walmethods.c | 198 src/bin/pg_config/po/ru.po | 16 src/bin/pg_config/po/sv.po | 2 src/bin/pg_controldata/po/sv.po | 2 src/bin/pg_ctl/pg_ctl.c | 128 src/bin/pg_ctl/po/ru.po | 280 src/bin/pg_ctl/po/sv.po | 266 src/bin/pg_ctl/t/001_start_stop.pl | 11 src/bin/pg_dump/Makefile | 2 src/bin/pg_dump/pg_dump_sort.c | 23 src/bin/pg_dump/po/ru.po | 34 src/bin/pg_dump/po/sv.po | 28 src/bin/pg_dump/t/002_pg_dump.pl | 3 src/bin/pg_resetwal/po/sv.po | 4 src/bin/pg_rewind/parsexlog.c | 6 src/bin/pg_rewind/po/de.po | 153 src/bin/pg_rewind/po/fr.po | 163 src/bin/pg_rewind/po/ru.po | 30 src/bin/pg_rewind/po/sv.po | 31 src/bin/pg_rewind/t/RewindTest.pm | 1 src/bin/pg_test_fsync/po/sv.po | 2 src/bin/pg_test_timing/po/sv.po | 2 src/bin/pg_upgrade/po/ru.po | 8 src/bin/pg_upgrade/po/sv.po | 14 src/bin/pg_upgrade/test.sh | 15 src/bin/pg_upgrade/upgrade_adapt.sql | 58 src/bin/pg_verify_checksums/po/sv.po | 2 src/bin/pg_waldump/pg_waldump.c | 18 src/bin/pg_waldump/po/ru.po | 4 src/bin/pg_waldump/po/sv.po | 2 src/bin/pgbench/exprparse.c | 1231 src/bin/pgbench/t/022_cic.pl | 5 src/bin/pgbench/t/023_cic_2pc.pl | 19 src/bin/psql/command.c | 34 src/bin/psql/po/de.po | 179 src/bin/psql/po/fr.po | 567 src/bin/psql/po/ru.po | 1693 src/bin/psql/po/sv.po | 181 src/bin/psql/sql_help.c | 4 src/bin/scripts/common.c | 27 src/bin/scripts/po/ru.po | 46 src/bin/scripts/po/sv.po | 40 src/bin/scripts/t/080_pg_isready.pl | 4 src/common/exec.c | 5 src/common/unicode_norm.c | 4 src/fe_utils/print.c | 3 src/include/catalog/pg_class.h | 2 src/include/nodes/execnodes.h | 4 src/include/nodes/plannodes.h | 21 src/include/pg_config.h.win32 | 8 src/include/replication/walsender_private.h | 1 src/include/storage/block.h | 2 src/include/storage/proc.h | 16 src/include/storage/procarray.h | 6 src/include/utils/builtins.h | 1 src/include/utils/relptr.h | 17 src/interfaces/ecpg/Makefile | 1 src/interfaces/ecpg/ecpglib/misc.c | 11 src/interfaces/ecpg/ecpglib/po/sv.po | 2 src/interfaces/ecpg/preproc/po/sv.po | 2 src/interfaces/ecpg/preproc/preproc.c |28420 +++++----- src/interfaces/ecpg/preproc/preproc.h | 1093 src/interfaces/ecpg/test/pg_regress_ecpg.c | 8 src/interfaces/libpq/fe-connect.c | 22 src/interfaces/libpq/fe-misc.c | 11 src/interfaces/libpq/fe-secure-openssl.c | 40 src/interfaces/libpq/libpq-dist.rc | 8 src/interfaces/libpq/libpq.rc.in | 8 src/interfaces/libpq/po/de.po | 252 src/interfaces/libpq/po/fr.po | 350 src/interfaces/libpq/po/ru.po | 141 src/interfaces/libpq/po/sv.po | 130 src/pl/plperl/GNUmakefile | 2 src/pl/plperl/plperl.c | 56 src/pl/plperl/plperl.h | 3 src/pl/plperl/po/ru.po | 86 src/pl/plperl/po/sv.po | 86 src/pl/plperl/ppport.h |17622 +++++- src/pl/plpgsql/src/pl_gram.c | 2586 src/pl/plpgsql/src/pl_gram.h | 273 src/pl/plpgsql/src/po/sv.po | 2 src/pl/plpython/Makefile | 2 src/pl/plpython/plpython.h | 3 src/pl/plpython/po/sv.po | 2 src/pl/tcl/Makefile | 2 src/pl/tcl/po/sv.po | 2 src/port/win32ver.rc | 4 src/test/isolation/expected/partition-drop-index-locking.out | 100 src/test/isolation/expected/temp-schema-cleanup.out | 115 src/test/isolation/isolation_main.c | 7 src/test/isolation/isolation_schedule | 2 src/test/isolation/isolationtester.c | 28 src/test/isolation/specparse.c | 1052 src/test/isolation/specs/partition-drop-index-locking.spec | 47 src/test/isolation/specs/temp-schema-cleanup.spec | 85 src/test/perl/PostgreSQL/Test/Cluster.pm | 16 src/test/perl/PostgreSQL/Test/Utils.pm | 44 src/test/perl/PostgresNode.pm | 170 src/test/perl/TestLib.pm | 128 src/test/recovery/t/002_archiving.pl | 28 src/test/recovery/t/006_logical_decoding.pl | 4 src/test/recovery/t/010_logical_decoding_timelines.pl | 4 src/test/recovery/t/013_crash_restart.pl | 49 src/test/recovery/t/014_unlogged_reinit.pl | 4 src/test/recovery/t/017_shm.pl | 18 src/test/recovery/t/025_stuck_on_old_timeline.pl | 2 src/test/recovery/t/026_overwrite_contrecord.pl | 14 src/test/recovery/t/031_recovery_conflict.pl | 377 src/test/recovery/t/cp_history_files | 7 src/test/regress/expected/alter_table.out | 23 src/test/regress/expected/cluster.out | 121 src/test/regress/expected/create_index.out | 27 src/test/regress/expected/create_view.out | 18 src/test/regress/expected/expressions.out | 36 src/test/regress/expected/gist.out | 75 src/test/regress/expected/groupingsets.out | 49 src/test/regress/expected/privileges.out | 79 src/test/regress/expected/publication.out | 14 src/test/regress/expected/replica_identity.out | 4 src/test/regress/expected/rowtypes.out | 23 src/test/regress/expected/select.out | 7 src/test/regress/expected/stats_ext.out | 80 src/test/regress/expected/timestamp.out | 60 src/test/regress/expected/timestamptz.out | 60 src/test/regress/expected/with.out | 16 src/test/regress/expected/xmlmap.out | 928 src/test/regress/expected/xmlmap_1.out | 10 src/test/regress/pg_regress.c | 4 src/test/regress/sql/alter_table.sql | 19 src/test/regress/sql/cluster.sql | 43 src/test/regress/sql/create_index.sql | 4 src/test/regress/sql/create_view.sql | 5 src/test/regress/sql/expressions.sql | 16 src/test/regress/sql/gist.sql | 27 src/test/regress/sql/groupingsets.sql | 9 src/test/regress/sql/privileges.sql | 64 src/test/regress/sql/publication.sql | 13 src/test/regress/sql/replica_identity.sql | 4 src/test/regress/sql/rowtypes.sql | 6 src/test/regress/sql/select.sql | 5 src/test/regress/sql/stats_ext.sql | 53 src/test/regress/sql/timestamp.sql | 14 src/test/regress/sql/timestamptz.sql | 14 src/test/regress/sql/with.sql | 10 src/test/regress/sql/xmlmap.sql | 10 src/test/ssl/t/001_ssltests.pl | 23 src/test/ssl/t/002_scram.pl | 2 src/test/subscription/t/100_bugs.pl | 86 src/timezone/data/tzdata.zi | 34 src/tools/msvc/MSBuildProject.pm | 25 src/tools/msvc/README | 12 src/tools/msvc/Solution.pm | 28 src/tools/msvc/VSObjectFactory.pm | 26 src/tools/msvc/build.bat | 2 src/tools/msvc/clean.bat | 7 src/tools/msvc/install.bat | 2 src/tools/msvc/pgbison.bat | 2 src/tools/msvc/pgflex.bat | 2 src/tools/msvc/vcregress.bat | 2 src/tools/msvc/vcregress.pl | 17 1730 files changed, 64876 insertions(+), 47166 deletions(-) diff -Nru postgresql-11-11.14/.gitrevision postgresql-11-11.16/.gitrevision --- postgresql-11-11.14/.gitrevision 2021-11-08 22:20:53.000000000 +0000 +++ postgresql-11-11.16/.gitrevision 2022-05-09 21:36:05.000000000 +0000 @@ -1 +1 @@ -7f05af399052dab32c28c253fa891dc1e8b4224b +6ac9161f69829fe327e393bff83d5f390105a70f diff -Nru postgresql-11-11.14/COPYRIGHT postgresql-11-11.16/COPYRIGHT --- postgresql-11-11.14/COPYRIGHT 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/COPYRIGHT 2022-05-09 21:20:11.000000000 +0000 @@ -1,7 +1,7 @@ PostgreSQL Database Management System (formerly known as Postgres, then as Postgres95) -Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group +Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group Portions Copyright (c) 1994, The Regents of the University of California diff -Nru postgresql-11-11.14/INSTALL postgresql-11-11.16/INSTALL --- postgresql-11-11.14/INSTALL 2021-11-08 22:22:13.000000000 +0000 +++ postgresql-11-11.16/INSTALL 2022-05-09 21:37:44.000000000 +0000 @@ -82,9 +82,9 @@ usemultiplicity option enabled (perl -V will show whether this is the case). * To build the PL/Python server programming language, you need a - Python installation with the header files and the distutils module. - The minimum required version is Python 2.4. Python 3 is supported - if it's version 3.1 or later; but see the PL/Python documentation + Python installation with the header files and the sysconfig module. + The minimum required version is Python 2.7. Python 3 is supported + if it's version 3.2 or later; but see the PL/Python documentation when using Python 3. Since PL/Python will be a shared library, the "libpython" library must be a shared library also on most platforms. This is not the diff -Nru postgresql-11-11.14/aclocal.m4 postgresql-11-11.16/aclocal.m4 --- postgresql-11-11.14/aclocal.m4 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/aclocal.m4 2022-05-09 21:20:11.000000000 +0000 @@ -1,6 +1,5 @@ dnl aclocal.m4 m4_include([config/ac_func_accept_argtypes.m4]) -m4_include([config/ax_prog_perl_modules.m4]) m4_include([config/ax_pthread.m4]) m4_include([config/c-compiler.m4]) m4_include([config/c-library.m4]) diff -Nru postgresql-11-11.14/config/ax_prog_perl_modules.m4 postgresql-11-11.16/config/ax_prog_perl_modules.m4 --- postgresql-11-11.14/config/ax_prog_perl_modules.m4 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/config/ax_prog_perl_modules.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ -# =========================================================================== -# https://www.gnu.org/software/autoconf-archive/ax_prog_perl_modules.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_PROG_PERL_MODULES([MODULES], [ACTION-IF-TRUE], [ACTION-IF-FALSE]) -# -# DESCRIPTION -# -# Checks to see if the given perl modules are available. If true the shell -# commands in ACTION-IF-TRUE are executed. If not the shell commands in -# ACTION-IF-FALSE are run. Note if $PERL is not set (for example by -# calling AC_CHECK_PROG, or AC_PATH_PROG), AC_CHECK_PROG(PERL, perl, perl) -# will be run. -# -# MODULES is a space separated list of module names. To check for a -# minimum version of a module, append the version number to the module -# name, separated by an equals sign. -# -# Example: -# -# AX_PROG_PERL_MODULES( Text::Wrap Net::LDAP=1.0.3, , -# AC_MSG_WARN(Need some Perl modules) -# -# LICENSE -# -# Copyright (c) 2009 Dean Povey -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 8 - -AU_ALIAS([AC_PROG_PERL_MODULES], [AX_PROG_PERL_MODULES]) -AC_DEFUN([AX_PROG_PERL_MODULES],[dnl - -m4_define([ax_perl_modules]) -m4_foreach([ax_perl_module], m4_split(m4_normalize([$1])), - [ - m4_append([ax_perl_modules], - [']m4_bpatsubst(ax_perl_module,=,[ ])[' ]) - ]) - -# Make sure we have perl -if test -z "$PERL"; then -AC_CHECK_PROG(PERL,perl,perl) -fi - -if test "x$PERL" != x; then - ax_perl_modules_failed=0 - for ax_perl_module in ax_perl_modules; do - AC_MSG_CHECKING(for perl module $ax_perl_module) - - # Would be nice to log result here, but can't rely on autoconf internals - $PERL -e "use $ax_perl_module; exit" > /dev/null 2>&1 - if test $? -ne 0; then - AC_MSG_RESULT(no); - ax_perl_modules_failed=1 - else - AC_MSG_RESULT(ok); - fi - done - - # Run optional shell commands - if test "$ax_perl_modules_failed" = 0; then - : - $2 - else - : - $3 - fi -else - AC_MSG_WARN(could not find perl) -fi])dnl diff -Nru postgresql-11-11.14/config/check_modules.pl postgresql-11-11.16/config/check_modules.pl --- postgresql-11-11.14/config/check_modules.pl 1970-01-01 00:00:00.000000000 +0000 +++ postgresql-11-11.16/config/check_modules.pl 2022-05-09 21:20:11.000000000 +0000 @@ -0,0 +1,23 @@ +# +# Verify that required Perl modules are available, +# in at least the required minimum versions. +# (The required minimum versions are all quite ancient now, +# but specify them anyway for documentation's sake.) +# +use strict; +use warnings; + +use IPC::Run 0.79; + +# Test::More and Time::HiRes are supposed to be part of core Perl, +# but some distros omit them in a minimal installation. +use Test::More 0.87; +use Time::HiRes 1.52; + +# While here, we might as well report exactly what versions we found. +diag("IPC::Run::VERSION: $IPC::Run::VERSION"); +diag("Test::More::VERSION: $Test::More::VERSION"); +diag("Time::HiRes::VERSION: $Time::HiRes::VERSION"); + +ok(1); +done_testing(); diff -Nru postgresql-11-11.14/config/python.m4 postgresql-11-11.16/config/python.m4 --- postgresql-11-11.14/config/python.m4 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/config/python.m4 2022-05-09 21:20:11.000000000 +0000 @@ -36,32 +36,25 @@ python_minorversion=`echo "$python_fullversion" | sed '[s/^[0-9]*\.\([0-9]*\).*/\1/]'` python_version=`echo "$python_fullversion" | sed '[s/^\([0-9]*\.[0-9]*\).*/\1/]'` # Reject unsupported Python versions as soon as practical. -if test "$python_majorversion" -lt 3 -a "$python_minorversion" -lt 4; then - AC_MSG_ERROR([Python version $python_version is too old (version 2.4 or later is required)]) +if test "$python_majorversion" -lt 3 -a "$python_minorversion" -lt 7; then + AC_MSG_ERROR([Python version $python_version is too old (version 2.7 or later is required)]) fi -AC_MSG_CHECKING([for Python distutils module]) -if "${PYTHON}" -c 'import distutils' 2>&AS_MESSAGE_LOG_FD +AC_MSG_CHECKING([for Python sysconfig module]) +if "${PYTHON}" -c 'import sysconfig' 2>&AS_MESSAGE_LOG_FD then AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) - AC_MSG_ERROR([distutils module not found]) + AC_MSG_ERROR([sysconfig module not found]) fi AC_MSG_CHECKING([Python configuration directory]) -python_configdir=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBPL'))))"` +python_configdir=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LIBPL'))))"` AC_MSG_RESULT([$python_configdir]) -AC_MSG_CHECKING([Python include directories]) -python_includespec=`${PYTHON} -c " -import distutils.sysconfig -a = '-I' + distutils.sysconfig.get_python_inc(False) -b = '-I' + distutils.sysconfig.get_python_inc(True) -if a == b: - print(a) -else: - print(a + ' ' + b)"` +AC_MSG_CHECKING([Python include directory]) +python_includespec=`${PYTHON} -c "import sysconfig; print('-I' + sysconfig.get_config_var('INCLUDEPY'))"` if test "$PORTNAME" = win32 ; then python_includespec=`echo $python_includespec | sed 's,[[\]],/,g'` fi @@ -95,8 +88,8 @@ [AC_REQUIRE([_PGAC_CHECK_PYTHON_DIRS]) AC_MSG_CHECKING([how to link an embedded Python application]) -python_libdir=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBDIR'))))"` -python_ldlibrary=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LDLIBRARY'))))"` +python_libdir=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LIBDIR'))))"` +python_ldlibrary=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LDLIBRARY'))))"` # If LDLIBRARY exists and has a shlib extension, use it verbatim. ldlibrary=`echo "${python_ldlibrary}" | sed -e 's/\.so$//' -e 's/\.dll$//' -e 's/\.dylib$//' -e 's/\.sl$//'` @@ -108,11 +101,11 @@ # Otherwise, guess the base name of the shlib. # LDVERSION was added in Python 3.2, before that use VERSION, # or failing that, $python_version from _PGAC_CHECK_PYTHON_DIRS. - python_ldversion=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LDVERSION'))))"` + python_ldversion=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LDVERSION'))))"` if test x"${python_ldversion}" != x""; then ldlibrary="python${python_ldversion}" else - python_version_var=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('VERSION'))))"` + python_version_var=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('VERSION'))))"` if test x"${python_version_var}" != x""; then ldlibrary="python${python_version_var}" else @@ -172,7 +165,7 @@ fi python_libspec="-L${python_libdir} -l${ldlibrary}" -python_additional_libs=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBS','LIBC','LIBM','BASEMODLIBS'))))"` +python_additional_libs=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LIBS','LIBC','LIBM','BASEMODLIBS'))))"` AC_MSG_RESULT([${python_libspec} ${python_additional_libs}]) diff -Nru postgresql-11-11.14/configure postgresql-11-11.16/configure --- postgresql-11-11.14/configure 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/configure 2022-05-09 21:20:11.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for PostgreSQL 11.14. +# Generated by GNU Autoconf 2.69 for PostgreSQL 11.16. # # Report bugs to . # @@ -582,8 +582,8 @@ # Identity of this package. PACKAGE_NAME='PostgreSQL' PACKAGE_TARNAME='postgresql' -PACKAGE_VERSION='11.14' -PACKAGE_STRING='PostgreSQL 11.14' +PACKAGE_VERSION='11.16' +PACKAGE_STRING='PostgreSQL 11.16' PACKAGE_BUGREPORT='pgsql-bugs@postgresql.org' PACKAGE_URL='' @@ -1436,7 +1436,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures PostgreSQL 11.14 to adapt to many kinds of systems. +\`configure' configures PostgreSQL 11.16 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1501,7 +1501,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of PostgreSQL 11.14:";; + short | recursive ) echo "Configuration of PostgreSQL 11.16:";; esac cat <<\_ACEOF @@ -1666,7 +1666,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -PostgreSQL configure 11.14 +PostgreSQL configure 11.16 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2419,7 +2419,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by PostgreSQL $as_me 11.14, which was +It was created by PostgreSQL $as_me 11.16, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -5068,7 +5068,7 @@ fi # When generating bitcode (for inlining) we always want to use -O2 -# even when --enable-debug is specified. The bitcode it's not going to +# even when --enable-debug is specified. The bitcode is not going to # be used for line-by-line debugging, and JIT inlining doesn't work # without at least -O1 (otherwise clang will emit 'noinline' # attributes everywhere), which is bad for testing. Still allow the @@ -5778,9 +5778,14 @@ fi - # We want to suppress clang's unhelpful unused-command-line-argument warnings - # but gcc won't complain about unrecognized -Wno-foo switches, so we have to - # test for the positive form and if that works, add the negative form + # + # The following tests want to suppress various unhelpful warnings by adding + # -Wno-foo switches. But gcc won't complain about unrecognized -Wno-foo + # switches, so we have to test for the positive form and if that works, + # add the negative form. Note that tests of this form typically need to + # be duplicated in the BITCODE_CFLAGS setup stanza below. + # + # Suppress clang's unhelpful unused-command-line-argument warnings. NOT_THE_CFLAGS="" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CC} supports -Wunused-command-line-argument, for NOT_THE_CFLAGS" >&5 $as_echo_n "checking whether ${CC} supports -Wunused-command-line-argument, for NOT_THE_CFLAGS... " >&6; } @@ -5824,6 +5829,51 @@ if test -n "$NOT_THE_CFLAGS"; then CFLAGS="$CFLAGS -Wno-unused-command-line-argument" fi + # Remove clang 12+'s compound-token-split-by-macro, as this causes a lot + # of warnings when building plperl because of usages in the Perl headers. + NOT_THE_CFLAGS="" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CC} supports -Wcompound-token-split-by-macro, for NOT_THE_CFLAGS" >&5 +$as_echo_n "checking whether ${CC} supports -Wcompound-token-split-by-macro, for NOT_THE_CFLAGS... " >&6; } +if ${pgac_cv_prog_CC_cflags__Wcompound_token_split_by_macro+:} false; then : + $as_echo_n "(cached) " >&6 +else + pgac_save_CFLAGS=$CFLAGS +pgac_save_CC=$CC +CC=${CC} +CFLAGS="${NOT_THE_CFLAGS} -Wcompound-token-split-by-macro" +ac_save_c_werror_flag=$ac_c_werror_flag +ac_c_werror_flag=yes +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + pgac_cv_prog_CC_cflags__Wcompound_token_split_by_macro=yes +else + pgac_cv_prog_CC_cflags__Wcompound_token_split_by_macro=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_c_werror_flag=$ac_save_c_werror_flag +CFLAGS="$pgac_save_CFLAGS" +CC="$pgac_save_CC" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_CC_cflags__Wcompound_token_split_by_macro" >&5 +$as_echo "$pgac_cv_prog_CC_cflags__Wcompound_token_split_by_macro" >&6; } +if test x"$pgac_cv_prog_CC_cflags__Wcompound_token_split_by_macro" = x"yes"; then + NOT_THE_CFLAGS="${NOT_THE_CFLAGS} -Wcompound-token-split-by-macro" +fi + + + if test -n "$NOT_THE_CFLAGS"; then + CFLAGS="$CFLAGS -Wno-compound-token-split-by-macro" + fi # Similarly disable useless truncation warnings from gcc 8+ NOT_THE_CFLAGS="" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CC} supports -Wformat-truncation, for NOT_THE_CFLAGS" >&5 @@ -6379,9 +6429,12 @@ -# Determine flags used to emit bitcode for JIT inlining. Need to test -# for behaviour changing compiler flags, to keep compatibility with -# compiler used for normal postgres code. +# Determine flags used to emit bitcode for JIT inlining. +# 1. We must duplicate any behaviour-changing compiler flags used above, +# to keep compatibility with the compiler used for normal Postgres code. +# 2. We don't bother to duplicate extra-warnings switches --- seeing a +# warning in the main build is enough. +# 3. But we must duplicate -Wno-warning flags, else we'll see those anyway. if test "$with_llvm" = yes ; then CLANGXX="$CLANG -xc++" @@ -6649,6 +6702,175 @@ BITCODE_CXXFLAGS="${BITCODE_CXXFLAGS} -fexcess-precision=standard" fi + + NOT_THE_CFLAGS="" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CLANG} supports -Wunused-command-line-argument, for NOT_THE_CFLAGS" >&5 +$as_echo_n "checking whether ${CLANG} supports -Wunused-command-line-argument, for NOT_THE_CFLAGS... " >&6; } +if ${pgac_cv_prog_CLANG_cflags__Wunused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + pgac_save_CFLAGS=$CFLAGS +pgac_save_CC=$CC +CC=${CLANG} +CFLAGS="${NOT_THE_CFLAGS} -Wunused-command-line-argument" +ac_save_c_werror_flag=$ac_c_werror_flag +ac_c_werror_flag=yes +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + pgac_cv_prog_CLANG_cflags__Wunused_command_line_argument=yes +else + pgac_cv_prog_CLANG_cflags__Wunused_command_line_argument=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_c_werror_flag=$ac_save_c_werror_flag +CFLAGS="$pgac_save_CFLAGS" +CC="$pgac_save_CC" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_CLANG_cflags__Wunused_command_line_argument" >&5 +$as_echo "$pgac_cv_prog_CLANG_cflags__Wunused_command_line_argument" >&6; } +if test x"$pgac_cv_prog_CLANG_cflags__Wunused_command_line_argument" = x"yes"; then + NOT_THE_CFLAGS="${NOT_THE_CFLAGS} -Wunused-command-line-argument" +fi + + if test -n "$NOT_THE_CFLAGS"; then + BITCODE_CFLAGS="$BITCODE_CFLAGS -Wno-unused-command-line-argument" + fi + NOT_THE_CFLAGS="" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CLANG} supports -Wcompound-token-split-by-macro, for NOT_THE_CFLAGS" >&5 +$as_echo_n "checking whether ${CLANG} supports -Wcompound-token-split-by-macro, for NOT_THE_CFLAGS... " >&6; } +if ${pgac_cv_prog_CLANG_cflags__Wcompound_token_split_by_macro+:} false; then : + $as_echo_n "(cached) " >&6 +else + pgac_save_CFLAGS=$CFLAGS +pgac_save_CC=$CC +CC=${CLANG} +CFLAGS="${NOT_THE_CFLAGS} -Wcompound-token-split-by-macro" +ac_save_c_werror_flag=$ac_c_werror_flag +ac_c_werror_flag=yes +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + pgac_cv_prog_CLANG_cflags__Wcompound_token_split_by_macro=yes +else + pgac_cv_prog_CLANG_cflags__Wcompound_token_split_by_macro=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_c_werror_flag=$ac_save_c_werror_flag +CFLAGS="$pgac_save_CFLAGS" +CC="$pgac_save_CC" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_CLANG_cflags__Wcompound_token_split_by_macro" >&5 +$as_echo "$pgac_cv_prog_CLANG_cflags__Wcompound_token_split_by_macro" >&6; } +if test x"$pgac_cv_prog_CLANG_cflags__Wcompound_token_split_by_macro" = x"yes"; then + NOT_THE_CFLAGS="${NOT_THE_CFLAGS} -Wcompound-token-split-by-macro" +fi + + if test -n "$NOT_THE_CFLAGS"; then + BITCODE_CFLAGS="$BITCODE_CFLAGS -Wno-compound-token-split-by-macro" + fi + NOT_THE_CFLAGS="" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CLANG} supports -Wformat-truncation, for NOT_THE_CFLAGS" >&5 +$as_echo_n "checking whether ${CLANG} supports -Wformat-truncation, for NOT_THE_CFLAGS... " >&6; } +if ${pgac_cv_prog_CLANG_cflags__Wformat_truncation+:} false; then : + $as_echo_n "(cached) " >&6 +else + pgac_save_CFLAGS=$CFLAGS +pgac_save_CC=$CC +CC=${CLANG} +CFLAGS="${NOT_THE_CFLAGS} -Wformat-truncation" +ac_save_c_werror_flag=$ac_c_werror_flag +ac_c_werror_flag=yes +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + pgac_cv_prog_CLANG_cflags__Wformat_truncation=yes +else + pgac_cv_prog_CLANG_cflags__Wformat_truncation=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_c_werror_flag=$ac_save_c_werror_flag +CFLAGS="$pgac_save_CFLAGS" +CC="$pgac_save_CC" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_CLANG_cflags__Wformat_truncation" >&5 +$as_echo "$pgac_cv_prog_CLANG_cflags__Wformat_truncation" >&6; } +if test x"$pgac_cv_prog_CLANG_cflags__Wformat_truncation" = x"yes"; then + NOT_THE_CFLAGS="${NOT_THE_CFLAGS} -Wformat-truncation" +fi + + if test -n "$NOT_THE_CFLAGS"; then + BITCODE_CFLAGS="$BITCODE_CFLAGS -Wno-format-truncation" + fi + NOT_THE_CFLAGS="" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CLANG} supports -Wstringop-truncation, for NOT_THE_CFLAGS" >&5 +$as_echo_n "checking whether ${CLANG} supports -Wstringop-truncation, for NOT_THE_CFLAGS... " >&6; } +if ${pgac_cv_prog_CLANG_cflags__Wstringop_truncation+:} false; then : + $as_echo_n "(cached) " >&6 +else + pgac_save_CFLAGS=$CFLAGS +pgac_save_CC=$CC +CC=${CLANG} +CFLAGS="${NOT_THE_CFLAGS} -Wstringop-truncation" +ac_save_c_werror_flag=$ac_c_werror_flag +ac_c_werror_flag=yes +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + pgac_cv_prog_CLANG_cflags__Wstringop_truncation=yes +else + pgac_cv_prog_CLANG_cflags__Wstringop_truncation=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_c_werror_flag=$ac_save_c_werror_flag +CFLAGS="$pgac_save_CFLAGS" +CC="$pgac_save_CC" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_CLANG_cflags__Wstringop_truncation" >&5 +$as_echo "$pgac_cv_prog_CLANG_cflags__Wstringop_truncation" >&6; } +if test x"$pgac_cv_prog_CLANG_cflags__Wstringop_truncation" = x"yes"; then + NOT_THE_CFLAGS="${NOT_THE_CFLAGS} -Wstringop-truncation" +fi + + if test -n "$NOT_THE_CFLAGS"; then + BITCODE_CFLAGS="$BITCODE_CFLAGS -Wno-stringop-truncation" + fi fi # supply -g if --enable-debug @@ -9667,38 +9889,31 @@ python_minorversion=`echo "$python_fullversion" | sed 's/^[0-9]*\.\([0-9]*\).*/\1/'` python_version=`echo "$python_fullversion" | sed 's/^\([0-9]*\.[0-9]*\).*/\1/'` # Reject unsupported Python versions as soon as practical. -if test "$python_majorversion" -lt 3 -a "$python_minorversion" -lt 4; then - as_fn_error $? "Python version $python_version is too old (version 2.4 or later is required)" "$LINENO" 5 +if test "$python_majorversion" -lt 3 -a "$python_minorversion" -lt 7; then + as_fn_error $? "Python version $python_version is too old (version 2.7 or later is required)" "$LINENO" 5 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python distutils module" >&5 -$as_echo_n "checking for Python distutils module... " >&6; } -if "${PYTHON}" -c 'import distutils' 2>&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python sysconfig module" >&5 +$as_echo_n "checking for Python sysconfig module... " >&6; } +if "${PYTHON}" -c 'import sysconfig' 2>&5 then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - as_fn_error $? "distutils module not found" "$LINENO" 5 + as_fn_error $? "sysconfig module not found" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python configuration directory" >&5 $as_echo_n "checking Python configuration directory... " >&6; } -python_configdir=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBPL'))))"` +python_configdir=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LIBPL'))))"` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $python_configdir" >&5 $as_echo "$python_configdir" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Python include directories" >&5 -$as_echo_n "checking Python include directories... " >&6; } -python_includespec=`${PYTHON} -c " -import distutils.sysconfig -a = '-I' + distutils.sysconfig.get_python_inc(False) -b = '-I' + distutils.sysconfig.get_python_inc(True) -if a == b: - print(a) -else: - print(a + ' ' + b)"` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Python include directory" >&5 +$as_echo_n "checking Python include directory... " >&6; } +python_includespec=`${PYTHON} -c "import sysconfig; print('-I' + sysconfig.get_config_var('INCLUDEPY'))"` if test "$PORTNAME" = win32 ; then python_includespec=`echo $python_includespec | sed 's,[\],/,g'` fi @@ -9710,8 +9925,8 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link an embedded Python application" >&5 $as_echo_n "checking how to link an embedded Python application... " >&6; } -python_libdir=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBDIR'))))"` -python_ldlibrary=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LDLIBRARY'))))"` +python_libdir=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LIBDIR'))))"` +python_ldlibrary=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LDLIBRARY'))))"` # If LDLIBRARY exists and has a shlib extension, use it verbatim. ldlibrary=`echo "${python_ldlibrary}" | sed -e 's/\.so$//' -e 's/\.dll$//' -e 's/\.dylib$//' -e 's/\.sl$//'` @@ -9723,11 +9938,11 @@ # Otherwise, guess the base name of the shlib. # LDVERSION was added in Python 3.2, before that use VERSION, # or failing that, $python_version from _PGAC_CHECK_PYTHON_DIRS. - python_ldversion=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LDVERSION'))))"` + python_ldversion=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LDVERSION'))))"` if test x"${python_ldversion}" != x""; then ldlibrary="python${python_ldversion}" else - python_version_var=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('VERSION'))))"` + python_version_var=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('VERSION'))))"` if test x"${python_version_var}" != x""; then ldlibrary="python${python_version_var}" else @@ -9787,7 +10002,7 @@ fi python_libspec="-L${python_libdir} -l${ldlibrary}" -python_additional_libs=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBS','LIBC','LIBM','BASEMODLIBS'))))"` +python_additional_libs=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LIBS','LIBC','LIBM','BASEMODLIBS'))))"` { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${python_libspec} ${python_additional_libs}" >&5 $as_echo "${python_libspec} ${python_additional_libs}" >&6; } @@ -10710,9 +10925,12 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 -$as_echo_n "checking for library containing dlopen... " >&6; } -if ${ac_cv_search_dlopen+:} false; then : +# gcc/clang's sanitizer helper library provides dlopen but not dlsym, thus +# when enabling asan the dlopen check doesn't notice that -ldl is actually +# required. Just checking for dlsym() ought to suffice. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlsym" >&5 +$as_echo_n "checking for library containing dlsym... " >&6; } +if ${ac_cv_search_dlsym+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS @@ -10725,11 +10943,11 @@ #ifdef __cplusplus extern "C" #endif -char dlopen (); +char dlsym (); int main () { -return dlopen (); +return dlsym (); ; return 0; } @@ -10742,25 +10960,25 @@ LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_dlopen=$ac_res + ac_cv_search_dlsym=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext - if ${ac_cv_search_dlopen+:} false; then : + if ${ac_cv_search_dlsym+:} false; then : break fi done -if ${ac_cv_search_dlopen+:} false; then : +if ${ac_cv_search_dlsym+:} false; then : else - ac_cv_search_dlopen=no + ac_cv_search_dlsym=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 -$as_echo "$ac_cv_search_dlopen" >&6; } -ac_res=$ac_cv_search_dlopen +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlsym" >&5 +$as_echo "$ac_cv_search_dlsym" >&6; } +ac_res=$ac_cv_search_dlsym if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" @@ -18627,96 +18845,7 @@ # Check for test tools # if test "$enable_tap_tests" = yes; then - # Check for necessary modules, unless user has specified the "prove" to use; - # in that case it's her responsibility to have a working configuration. - # (prove might be part of a different Perl installation than perl, eg on - # MSys, so the result of AX_PROG_PERL_MODULES could be irrelevant anyway.) - if test -z "$PROVE"; then - # Test::More and Time::HiRes are supposed to be part of core Perl, - # but some distros omit them in a minimal installation. - - - - - - - - - - -# Make sure we have perl -if test -z "$PERL"; then -# Extract the first word of "perl", so it can be a program name with args. -set dummy perl; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_PERL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$PERL"; then - ac_cv_prog_PERL="$PERL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_PERL="perl" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -PERL=$ac_cv_prog_PERL -if test -n "$PERL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 -$as_echo "$PERL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi - -if test "x$PERL" != x; then - ax_perl_modules_failed=0 - for ax_perl_module in 'IPC::Run' 'Test::More 0.87' 'Time::HiRes' ; do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl module $ax_perl_module" >&5 -$as_echo_n "checking for perl module $ax_perl_module... " >&6; } - - # Would be nice to log result here, but can't rely on autoconf internals - $PERL -e "use $ax_perl_module; exit" > /dev/null 2>&1 - if test $? -ne 0; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; - ax_perl_modules_failed=1 - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; }; - fi - done - - # Run optional shell commands - if test "$ax_perl_modules_failed" = 0; then - : - - else - : - as_fn_error $? "Additional Perl modules are required to run TAP tests" "$LINENO" 5 - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not find perl" >&5 -$as_echo "$as_me: WARNING: could not find perl" >&2;} -fi - fi - # Now make sure we know where prove is + # Make sure we know where prove is. if test -z "$PROVE"; then for ac_prog in prove do @@ -18774,6 +18903,23 @@ if test -z "$PROVE"; then as_fn_error $? "prove not found" "$LINENO" 5 fi + # Check for necessary Perl modules. You might think we should use + # AX_PROG_PERL_MODULES here, but prove might be part of a different Perl + # installation than perl, eg on MSys, so we have to check using prove. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Perl modules required for TAP tests" >&5 +$as_echo_n "checking for Perl modules required for TAP tests... " >&6; } + modulestderr=`"$PROVE" "$srcdir/config/check_modules.pl" 2>&1 >/dev/null` + if test $? -eq 0; then + # log the module version details, but don't show them interactively + echo "$modulestderr" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + # on failure, though, show the results to the user + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $modulestderr" >&5 +$as_echo "$modulestderr" >&6; } + as_fn_error $? "Additional Perl modules are required to run TAP tests" "$LINENO" 5 + fi fi # Thread testing @@ -19572,7 +19718,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by PostgreSQL $as_me 11.14, which was +This file was extended by PostgreSQL $as_me 11.16, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -19642,7 +19788,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -PostgreSQL config.status 11.14 +PostgreSQL config.status 11.16 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -Nru postgresql-11-11.14/configure.in postgresql-11-11.16/configure.in --- postgresql-11-11.14/configure.in 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/configure.in 2022-05-09 21:20:11.000000000 +0000 @@ -17,7 +17,7 @@ dnl m4_pattern_forbid(^PGAC_)dnl to catch undefined macros -AC_INIT([PostgreSQL], [11.14], [pgsql-bugs@postgresql.org]) +AC_INIT([PostgreSQL], [11.16], [pgsql-bugs@postgresql.org]) m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.69], [], [m4_fatal([Autoconf version 2.69 is required. Untested combinations of 'autoconf' and PostgreSQL versions are not @@ -435,7 +435,7 @@ fi # When generating bitcode (for inlining) we always want to use -O2 -# even when --enable-debug is specified. The bitcode it's not going to +# even when --enable-debug is specified. The bitcode is not going to # be used for line-by-line debugging, and JIT inlining doesn't work # without at least -O1 (otherwise clang will emit 'noinline' # attributes everywhere), which is bad for testing. Still allow the @@ -496,14 +496,26 @@ # Optimization flags for specific files that benefit from vectorization PGAC_PROG_CC_VAR_OPT(CFLAGS_VECTOR, [-funroll-loops]) PGAC_PROG_CC_VAR_OPT(CFLAGS_VECTOR, [-ftree-vectorize]) - # We want to suppress clang's unhelpful unused-command-line-argument warnings - # but gcc won't complain about unrecognized -Wno-foo switches, so we have to - # test for the positive form and if that works, add the negative form + # + # The following tests want to suppress various unhelpful warnings by adding + # -Wno-foo switches. But gcc won't complain about unrecognized -Wno-foo + # switches, so we have to test for the positive form and if that works, + # add the negative form. Note that tests of this form typically need to + # be duplicated in the BITCODE_CFLAGS setup stanza below. + # + # Suppress clang's unhelpful unused-command-line-argument warnings. NOT_THE_CFLAGS="" PGAC_PROG_CC_VAR_OPT(NOT_THE_CFLAGS, [-Wunused-command-line-argument]) if test -n "$NOT_THE_CFLAGS"; then CFLAGS="$CFLAGS -Wno-unused-command-line-argument" fi + # Remove clang 12+'s compound-token-split-by-macro, as this causes a lot + # of warnings when building plperl because of usages in the Perl headers. + NOT_THE_CFLAGS="" + PGAC_PROG_CC_VAR_OPT(NOT_THE_CFLAGS, [-Wcompound-token-split-by-macro]) + if test -n "$NOT_THE_CFLAGS"; then + CFLAGS="$CFLAGS -Wno-compound-token-split-by-macro" + fi # Similarly disable useless truncation warnings from gcc 8+ NOT_THE_CFLAGS="" PGAC_PROG_CC_VAR_OPT(NOT_THE_CFLAGS, [-Wformat-truncation]) @@ -538,9 +550,12 @@ AC_SUBST(CFLAGS_VECTOR) -# Determine flags used to emit bitcode for JIT inlining. Need to test -# for behaviour changing compiler flags, to keep compatibility with -# compiler used for normal postgres code. +# Determine flags used to emit bitcode for JIT inlining. +# 1. We must duplicate any behaviour-changing compiler flags used above, +# to keep compatibility with the compiler used for normal Postgres code. +# 2. We don't bother to duplicate extra-warnings switches --- seeing a +# warning in the main build is enough. +# 3. But we must duplicate -Wno-warning flags, else we'll see those anyway. if test "$with_llvm" = yes ; then CLANGXX="$CLANG -xc++" @@ -550,6 +565,27 @@ PGAC_PROG_VARCXX_VARFLAGS_OPT(CLANGXX, BITCODE_CXXFLAGS, [-fwrapv]) PGAC_PROG_VARCC_VARFLAGS_OPT(CLANG, BITCODE_CFLAGS, [-fexcess-precision=standard]) PGAC_PROG_VARCXX_VARFLAGS_OPT(CLANGXX, BITCODE_CXXFLAGS, [-fexcess-precision=standard]) + + NOT_THE_CFLAGS="" + PGAC_PROG_VARCC_VARFLAGS_OPT(CLANG, NOT_THE_CFLAGS, [-Wunused-command-line-argument]) + if test -n "$NOT_THE_CFLAGS"; then + BITCODE_CFLAGS="$BITCODE_CFLAGS -Wno-unused-command-line-argument" + fi + NOT_THE_CFLAGS="" + PGAC_PROG_VARCC_VARFLAGS_OPT(CLANG, NOT_THE_CFLAGS, [-Wcompound-token-split-by-macro]) + if test -n "$NOT_THE_CFLAGS"; then + BITCODE_CFLAGS="$BITCODE_CFLAGS -Wno-compound-token-split-by-macro" + fi + NOT_THE_CFLAGS="" + PGAC_PROG_VARCC_VARFLAGS_OPT(CLANG, NOT_THE_CFLAGS, [-Wformat-truncation]) + if test -n "$NOT_THE_CFLAGS"; then + BITCODE_CFLAGS="$BITCODE_CFLAGS -Wno-format-truncation" + fi + NOT_THE_CFLAGS="" + PGAC_PROG_VARCC_VARFLAGS_OPT(CLANG, NOT_THE_CFLAGS, [-Wstringop-truncation]) + if test -n "$NOT_THE_CFLAGS"; then + BITCODE_CFLAGS="$BITCODE_CFLAGS -Wno-stringop-truncation" + fi fi # supply -g if --enable-debug @@ -1148,7 +1184,10 @@ AC_CHECK_LIB(m, main) AC_SEARCH_LIBS(setproctitle, util) -AC_SEARCH_LIBS(dlopen, dl) +# gcc/clang's sanitizer helper library provides dlopen but not dlsym, thus +# when enabling asan the dlopen check doesn't notice that -ldl is actually +# required. Just checking for dlsym() ought to suffice. +AC_SEARCH_LIBS(dlsym, dl) AC_SEARCH_LIBS(socket, [socket ws2_32]) AC_SEARCH_LIBS(shl_load, dld) # We only use libld in port/dynloader/aix.c @@ -2333,21 +2372,25 @@ # Check for test tools # if test "$enable_tap_tests" = yes; then - # Check for necessary modules, unless user has specified the "prove" to use; - # in that case it's her responsibility to have a working configuration. - # (prove might be part of a different Perl installation than perl, eg on - # MSys, so the result of AX_PROG_PERL_MODULES could be irrelevant anyway.) - if test -z "$PROVE"; then - # Test::More and Time::HiRes are supposed to be part of core Perl, - # but some distros omit them in a minimal installation. - AX_PROG_PERL_MODULES([IPC::Run Test::More=0.87 Time::HiRes], , - [AC_MSG_ERROR([Additional Perl modules are required to run TAP tests])]) - fi - # Now make sure we know where prove is + # Make sure we know where prove is. PGAC_PATH_PROGS(PROVE, prove) if test -z "$PROVE"; then AC_MSG_ERROR([prove not found]) fi + # Check for necessary Perl modules. You might think we should use + # AX_PROG_PERL_MODULES here, but prove might be part of a different Perl + # installation than perl, eg on MSys, so we have to check using prove. + AC_MSG_CHECKING(for Perl modules required for TAP tests) + [modulestderr=`"$PROVE" "$srcdir/config/check_modules.pl" 2>&1 >/dev/null`] + if test $? -eq 0; then + # log the module version details, but don't show them interactively + echo "$modulestderr" >&AS_MESSAGE_LOG_FD + AC_MSG_RESULT(yes) + else + # on failure, though, show the results to the user + AC_MSG_RESULT([$modulestderr]) + AC_MSG_ERROR([Additional Perl modules are required to run TAP tests]) + fi fi # Thread testing diff -Nru postgresql-11-11.14/contrib/amcheck/expected/check_btree.out postgresql-11-11.16/contrib/amcheck/expected/check_btree.out --- postgresql-11-11.14/contrib/amcheck/expected/check_btree.out 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/amcheck/expected/check_btree.out 2022-05-09 21:20:11.000000000 +0000 @@ -167,11 +167,34 @@ (1 row) +-- +-- Check that index expressions and predicates are run as the table's owner +-- +TRUNCATE bttest_a; +INSERT INTO bttest_a SELECT * FROM generate_series(1, 1000); +ALTER TABLE bttest_a OWNER TO regress_bttest_role; +-- A dummy index function checking current_user +CREATE FUNCTION ifun(int8) RETURNS int8 AS $$ +BEGIN + ASSERT current_user = 'regress_bttest_role', + format('ifun(%s) called by %s', $1, current_user); + RETURN $1; +END; +$$ LANGUAGE plpgsql IMMUTABLE; +CREATE INDEX bttest_a_expr_idx ON bttest_a ((ifun(id) + ifun(0))) + WHERE ifun(id + 10) > ifun(10); +SELECT bt_index_check('bttest_a_expr_idx', true); + bt_index_check +---------------- + +(1 row) + -- cleanup DROP TABLE bttest_a; DROP TABLE bttest_b; DROP TABLE bttest_multi; DROP TABLE delete_test_table; DROP TABLE toast_bug; +DROP FUNCTION ifun(int8); DROP OWNED BY regress_bttest_role; -- permissions DROP ROLE regress_bttest_role; diff -Nru postgresql-11-11.14/contrib/amcheck/sql/check_btree.sql postgresql-11-11.16/contrib/amcheck/sql/check_btree.sql --- postgresql-11-11.14/contrib/amcheck/sql/check_btree.sql 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/amcheck/sql/check_btree.sql 2022-05-09 21:20:11.000000000 +0000 @@ -109,11 +109,32 @@ -- Should not get false positive report of corruption: SELECT bt_index_check('toasty', true); +-- +-- Check that index expressions and predicates are run as the table's owner +-- +TRUNCATE bttest_a; +INSERT INTO bttest_a SELECT * FROM generate_series(1, 1000); +ALTER TABLE bttest_a OWNER TO regress_bttest_role; +-- A dummy index function checking current_user +CREATE FUNCTION ifun(int8) RETURNS int8 AS $$ +BEGIN + ASSERT current_user = 'regress_bttest_role', + format('ifun(%s) called by %s', $1, current_user); + RETURN $1; +END; +$$ LANGUAGE plpgsql IMMUTABLE; + +CREATE INDEX bttest_a_expr_idx ON bttest_a ((ifun(id) + ifun(0))) + WHERE ifun(id + 10) > ifun(10); + +SELECT bt_index_check('bttest_a_expr_idx', true); + -- cleanup DROP TABLE bttest_a; DROP TABLE bttest_b; DROP TABLE bttest_multi; DROP TABLE delete_test_table; DROP TABLE toast_bug; +DROP FUNCTION ifun(int8); DROP OWNED BY regress_bttest_role; -- permissions DROP ROLE regress_bttest_role; diff -Nru postgresql-11-11.14/contrib/amcheck/verify_nbtree.c postgresql-11-11.16/contrib/amcheck/verify_nbtree.c --- postgresql-11-11.14/contrib/amcheck/verify_nbtree.c 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/amcheck/verify_nbtree.c 2022-05-09 21:20:11.000000000 +0000 @@ -34,6 +34,7 @@ #include "miscadmin.h" #include "storage/lmgr.h" #include "storage/smgr.h" +#include "utils/guc.h" #include "utils/memutils.h" #include "utils/snapmgr.h" @@ -206,6 +207,9 @@ Relation indrel; Relation heaprel; LOCKMODE lockmode; + Oid save_userid; + int save_sec_context; + int save_nestlevel; if (parentcheck) lockmode = ShareLock; @@ -222,9 +226,27 @@ */ heapid = IndexGetRelation(indrelid, true); if (OidIsValid(heapid)) + { heaprel = heap_open(heapid, lockmode); + + /* + * Switch to the table owner's userid, so that any index functions are + * run as that user. Also lock down security-restricted operations + * and arrange to make GUC variable changes local to this command. + */ + GetUserIdAndSecContext(&save_userid, &save_sec_context); + SetUserIdAndSecContext(heaprel->rd_rel->relowner, + save_sec_context | SECURITY_RESTRICTED_OPERATION); + save_nestlevel = NewGUCNestLevel(); + } else + { heaprel = NULL; + /* for "gcc -Og" https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78394 */ + save_userid = InvalidOid; + save_sec_context = -1; + save_nestlevel = -1; + } /* * Open the target index relations separately (like relation_openrv(), but @@ -267,6 +289,12 @@ bt_check_every_level(indrel, heaprel, parentcheck, heapallindexed); } + /* Roll back any GUC changes executed by index functions */ + AtEOXact_GUC(false, save_nestlevel); + + /* Restore userid and security context */ + SetUserIdAndSecContext(save_userid, save_sec_context); + /* * Release locks early. That's ok here because nothing in the called * routines will trigger shared cache invalidations to be sent, so we can diff -Nru postgresql-11-11.14/contrib/bloom/t/001_wal.pl postgresql-11-11.16/contrib/bloom/t/001_wal.pl --- postgresql-11-11.14/contrib/bloom/t/001_wal.pl 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/bloom/t/001_wal.pl 2022-05-09 21:20:11.000000000 +0000 @@ -3,7 +3,18 @@ use warnings; use PostgresNode; use TestLib; -use Test::More tests => 31; +use Test::More; + +if (TestLib::has_wal_read_bug) +{ + # We'd prefer to use Test::More->builder->todo_start, but the bug causes + # this test file to die(), not merely to fail. + plan skip_all => 'filesystem bug'; +} +else +{ + plan tests => 31; +} my $node_master; my $node_standby; diff -Nru postgresql-11-11.14/contrib/btree_gist/btree_text.c postgresql-11-11.16/contrib/btree_gist/btree_text.c --- postgresql-11-11.14/contrib/btree_gist/btree_text.c 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/btree_gist/btree_text.c 2022-05-09 21:20:11.000000000 +0000 @@ -90,6 +90,76 @@ NULL }; +/* bpchar needs its own comparison rules */ + +static bool +gbt_bpchargt(const void *a, const void *b, Oid collation, FmgrInfo *flinfo) +{ + return DatumGetBool(DirectFunctionCall2Coll(bpchargt, + collation, + PointerGetDatum(a), + PointerGetDatum(b))); +} + +static bool +gbt_bpcharge(const void *a, const void *b, Oid collation, FmgrInfo *flinfo) +{ + return DatumGetBool(DirectFunctionCall2Coll(bpcharge, + collation, + PointerGetDatum(a), + PointerGetDatum(b))); +} + +static bool +gbt_bpchareq(const void *a, const void *b, Oid collation, FmgrInfo *flinfo) +{ + return DatumGetBool(DirectFunctionCall2Coll(bpchareq, + collation, + PointerGetDatum(a), + PointerGetDatum(b))); +} + +static bool +gbt_bpcharle(const void *a, const void *b, Oid collation, FmgrInfo *flinfo) +{ + return DatumGetBool(DirectFunctionCall2Coll(bpcharle, + collation, + PointerGetDatum(a), + PointerGetDatum(b))); +} + +static bool +gbt_bpcharlt(const void *a, const void *b, Oid collation, FmgrInfo *flinfo) +{ + return DatumGetBool(DirectFunctionCall2Coll(bpcharlt, + collation, + PointerGetDatum(a), + PointerGetDatum(b))); +} + +static int32 +gbt_bpcharcmp(const void *a, const void *b, Oid collation, FmgrInfo *flinfo) +{ + return DatumGetInt32(DirectFunctionCall2Coll(bpcharcmp, + collation, + PointerGetDatum(a), + PointerGetDatum(b))); +} + +static gbtree_vinfo bptinfo = +{ + gbt_t_bpchar, + 0, + false, + gbt_bpchargt, + gbt_bpcharge, + gbt_bpchareq, + gbt_bpcharle, + gbt_bpcharlt, + gbt_bpcharcmp, + NULL +}; + /************************************************** * Text ops @@ -112,29 +182,8 @@ Datum gbt_bpchar_compress(PG_FUNCTION_ARGS) { - GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0); - GISTENTRY *retval; - - if (tinfo.eml == 0) - { - tinfo.eml = pg_database_encoding_max_length(); - } - - if (entry->leafkey) - { - - Datum d = DirectFunctionCall1(rtrim1, entry->key); - GISTENTRY trim; - - gistentryinit(trim, d, - entry->rel, entry->page, - entry->offset, true); - retval = gbt_var_compress(&trim, &tinfo); - } - else - retval = entry; - - PG_RETURN_POINTER(retval); + /* This should never have been distinct from gbt_text_compress */ + return gbt_text_compress(fcinfo); } @@ -179,18 +228,17 @@ bool retval; GBT_VARKEY *key = (GBT_VARKEY *) DatumGetPointer(entry->key); GBT_VARKEY_R r = gbt_var_key_readable(key); - void *trim = (void *) DatumGetPointer(DirectFunctionCall1(rtrim1, PointerGetDatum(query))); /* All cases served by this function are exact */ *recheck = false; - if (tinfo.eml == 0) + if (bptinfo.eml == 0) { - tinfo.eml = pg_database_encoding_max_length(); + bptinfo.eml = pg_database_encoding_max_length(); } - retval = gbt_var_consistent(&r, trim, strategy, PG_GET_COLLATION(), - GIST_LEAF(entry), &tinfo, fcinfo->flinfo); + retval = gbt_var_consistent(&r, query, strategy, PG_GET_COLLATION(), + GIST_LEAF(entry), &bptinfo, fcinfo->flinfo); PG_RETURN_BOOL(retval); } diff -Nru postgresql-11-11.14/contrib/btree_gist/expected/char.out postgresql-11-11.16/contrib/btree_gist/expected/char.out --- postgresql-11-11.14/contrib/btree_gist/expected/char.out 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/btree_gist/expected/char.out 2022-05-09 21:20:11.000000000 +0000 @@ -75,8 +75,8 @@ (2 rows) SELECT * FROM chartmp WHERE a BETWEEN '31a' AND '31c'; - a ------- - 31b0 + a +---------------------------------- + 31b0 (1 row) diff -Nru postgresql-11-11.14/contrib/btree_gist/expected/char_1.out postgresql-11-11.16/contrib/btree_gist/expected/char_1.out --- postgresql-11-11.14/contrib/btree_gist/expected/char_1.out 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/btree_gist/expected/char_1.out 2022-05-09 21:20:11.000000000 +0000 @@ -75,8 +75,8 @@ (2 rows) SELECT * FROM chartmp WHERE a BETWEEN '31a' AND '31c'; - a ------- - 31b0 + a +---------------------------------- + 31b0 (1 row) diff -Nru postgresql-11-11.14/contrib/cube/cubeparse.c postgresql-11-11.16/contrib/cube/cubeparse.c --- postgresql-11-11.14/contrib/cube/cubeparse.c 2021-11-08 22:22:12.000000000 +0000 +++ postgresql-11-11.16/contrib/cube/cubeparse.c 2022-05-09 21:37:42.000000000 +0000 @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.3.2. */ +/* A Bison parser, made by GNU Bison 3.7.5. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -34,6 +34,10 @@ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. @@ -41,14 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - -/* Identify Bison output. */ -#define YYBISON 1 +/* Identify Bison output, and Bison version. */ +#define YYBISON 30705 -/* Bison version. */ -#define YYBISON_VERSION "3.3.2" +/* Bison version string. */ +#define YYBISON_VERSION "3.7.5" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -69,12 +70,11 @@ #define yyerror cube_yyerror #define yydebug cube_yydebug #define yynerrs cube_yynerrs - #define yylval cube_yylval #define yychar cube_yychar /* First part of user prologue. */ -#line 1 "cubeparse.y" /* yacc.c:337 */ +#line 1 "cubeparse.y" /* contrib/cube/cubeparse.y */ @@ -108,7 +108,17 @@ static NDBOX *write_point_as_box(int dim, char *str); -#line 112 "cubeparse.c" /* yacc.c:337 */ +#line 112 "cubeparse.c" + +# ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) +# else +# define YY_CAST(Type, Val) ((Type) (Val)) +# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +# endif # ifndef YY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus @@ -121,14 +131,6 @@ # endif # endif -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - /* Debug traces. */ #ifndef YYDEBUG @@ -138,18 +140,23 @@ extern int cube_yydebug; #endif -/* Token type. */ +/* Token kinds. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { - CUBEFLOAT = 258, - O_PAREN = 259, - C_PAREN = 260, - O_BRACKET = 261, - C_BRACKET = 262, - COMMA = 263 + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + CUBEFLOAT = 258, /* CUBEFLOAT */ + O_PAREN = 259, /* O_PAREN */ + C_PAREN = 260, /* C_PAREN */ + O_BRACKET = 261, /* O_BRACKET */ + C_BRACKET = 262, /* C_BRACKET */ + COMMA = 263 /* COMMA */ }; + typedef enum yytokentype yytoken_kind_t; #endif /* Value type. */ @@ -165,6 +172,26 @@ int cube_yyparse (NDBOX **result); +/* Symbol kind. */ +enum yysymbol_kind_t +{ + YYSYMBOL_YYEMPTY = -2, + YYSYMBOL_YYEOF = 0, /* "end of file" */ + YYSYMBOL_YYerror = 1, /* error */ + YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ + YYSYMBOL_CUBEFLOAT = 3, /* CUBEFLOAT */ + YYSYMBOL_O_PAREN = 4, /* O_PAREN */ + YYSYMBOL_C_PAREN = 5, /* C_PAREN */ + YYSYMBOL_O_BRACKET = 6, /* O_BRACKET */ + YYSYMBOL_C_BRACKET = 7, /* C_BRACKET */ + YYSYMBOL_COMMA = 8, /* COMMA */ + YYSYMBOL_YYACCEPT = 9, /* $accept */ + YYSYMBOL_box = 10, /* box */ + YYSYMBOL_paren_list = 11, /* paren_list */ + YYSYMBOL_list = 12 /* list */ +}; +typedef enum yysymbol_kind_t yysymbol_kind_t; + @@ -172,28 +199,87 @@ # undef short #endif -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; +/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure + and (if available) are included + so that the code can choose integer types of a good width. */ + +#ifndef __PTRDIFF_MAX__ +# include /* INFRINGES ON USER NAME SPACE */ +# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_STDINT_H +# endif #endif -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; +/* Narrow types that promote to a signed type and that can represent a + signed or unsigned integer of at least N bits. In tables they can + save space and decrease cache pressure. Promoting to a signed type + helps avoid bugs in integer arithmetic. */ + +#ifdef __INT_LEAST8_MAX__ +typedef __INT_LEAST8_TYPE__ yytype_int8; +#elif defined YY_STDINT_H +typedef int_least8_t yytype_int8; #else typedef signed char yytype_int8; #endif -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; +#ifdef __INT_LEAST16_MAX__ +typedef __INT_LEAST16_TYPE__ yytype_int16; +#elif defined YY_STDINT_H +typedef int_least16_t yytype_int16; #else -typedef unsigned short yytype_uint16; +typedef short yytype_int16; #endif -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; +/* Work around bug in HP-UX 11.23, which defines these macros + incorrectly for preprocessor constants. This workaround can likely + be removed in 2023, as HPE has promised support for HP-UX 11.23 + (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of + . */ +#ifdef __hpux +# undef UINT_LEAST8_MAX +# undef UINT_LEAST16_MAX +# define UINT_LEAST8_MAX 255 +# define UINT_LEAST16_MAX 65535 +#endif + +#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST8_TYPE__ yytype_uint8; +#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST8_MAX <= INT_MAX) +typedef uint_least8_t yytype_uint8; +#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX +typedef unsigned char yytype_uint8; #else -typedef short yytype_int16; +typedef short yytype_uint8; +#endif + +#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST16_TYPE__ yytype_uint16; +#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST16_MAX <= INT_MAX) +typedef uint_least16_t yytype_uint16; +#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX +typedef unsigned short yytype_uint16; +#else +typedef int yytype_uint16; +#endif + +#ifndef YYPTRDIFF_T +# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ +# define YYPTRDIFF_T __PTRDIFF_TYPE__ +# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ +# elif defined PTRDIFF_MAX +# ifndef ptrdiff_t +# include /* INFRINGES ON USER NAME SPACE */ +# endif +# define YYPTRDIFF_T ptrdiff_t +# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX +# else +# define YYPTRDIFF_T long +# define YYPTRDIFF_MAXIMUM LONG_MAX +# endif #endif #ifndef YYSIZE_T @@ -201,7 +287,7 @@ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T +# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -209,7 +295,20 @@ # endif #endif -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) +#define YYSIZE_MAXIMUM \ + YY_CAST (YYPTRDIFF_T, \ + (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ + ? YYPTRDIFF_MAXIMUM \ + : YY_CAST (YYSIZE_T, -1))) + +#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + + +/* Stored state numbers (used for stacks). */ +typedef yytype_int8 yy_state_t; + +/* State numbers in computations. */ +typedef int yy_state_fast_t; #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS @@ -223,38 +322,37 @@ # endif #endif -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) -# else -# define YY_ATTRIBUTE(Spec) /* empty */ -# endif -#endif #ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define YY_ATTRIBUTE_PURE +# endif #endif #ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define YY_ATTRIBUTE_UNUSED +# endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) +# define YY_USE(E) ((void) (E)) #else -# define YYUSE(E) /* empty */ +# define YY_USE(E) /* empty */ #endif #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value @@ -267,8 +365,22 @@ # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif +#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ +# define YY_IGNORE_USELESS_CAST_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") +# define YY_IGNORE_USELESS_CAST_END \ + _Pragma ("GCC diagnostic pop") +#endif +#ifndef YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_END +#endif + -#if ! defined yyoverflow || YYERROR_VERBOSE +#define YY_ASSERT(E) ((void) (0 && (E))) + +#if !defined yyoverflow /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -333,8 +445,7 @@ # endif # endif # endif -#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ - +#endif /* !defined yyoverflow */ #if (! defined yyoverflow \ && (! defined __cplusplus \ @@ -343,17 +454,17 @@ /* A type that is properly aligned for any stack member. */ union yyalloc { - yytype_int16 yyss_alloc; + yy_state_t yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) +# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 @@ -366,11 +477,11 @@ # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ - YYSIZE_T yynewbytes; \ + YYPTRDIFF_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ + yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / YYSIZEOF (*yyptr); \ } \ while (0) @@ -382,12 +493,12 @@ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) + __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ - YYSIZE_T yyi; \ + YYPTRDIFF_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ @@ -410,17 +521,20 @@ /* YYNSTATES -- Number of states. */ #define YYNSTATES 19 -#define YYUNDEFTOK 2 +/* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 263 + /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ -#define YYTRANSLATE(YYX) \ - ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) +#define YYTRANSLATE(YYX) \ + (0 <= (YYX) && (YYX) <= YYMAXUTOK \ + ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ + : YYSYMBOL_YYUNDEF) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ -static const yytype_uint8 yytranslate[] = +static const yytype_int8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -459,34 +573,47 @@ }; #endif -#if YYDEBUG || YYERROR_VERBOSE || 0 +/** Accessing symbol of state STATE. */ +#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) + +#if YYDEBUG || 0 +/* The user-facing name of the symbol whose (internal) number is + YYSYMBOL. No bounds checking. */ +static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; + /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "CUBEFLOAT", "O_PAREN", "C_PAREN", - "O_BRACKET", "C_BRACKET", "COMMA", "$accept", "box", "paren_list", - "list", YY_NULLPTR + "\"end of file\"", "error", "\"invalid token\"", "CUBEFLOAT", "O_PAREN", + "C_PAREN", "O_BRACKET", "C_BRACKET", "COMMA", "$accept", "box", + "paren_list", "list", YY_NULLPTR }; + +static const char * +yysymbol_name (yysymbol_kind_t yysymbol) +{ + return yytname[yysymbol]; +} #endif -# ifdef YYPRINT +#ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ -static const yytype_uint16 yytoknum[] = +static const yytype_int16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263 }; -# endif +#endif -#define YYPACT_NINF -4 +#define YYPACT_NINF (-4) -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-4))) +#define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF -1 +#define YYTABLE_NINF (-1) -#define yytable_value_is_error(Yytable_value) \ +#define yytable_value_is_error(Yyn) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing @@ -500,7 +627,7 @@ /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ -static const yytype_uint8 yydefact[] = +static const yytype_int8 yydefact[] = { 0, 8, 0, 0, 0, 4, 5, 7, 0, 0, 1, 0, 0, 6, 0, 3, 9, 0, 2 @@ -515,19 +642,19 @@ /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { - -1, 4, 5, 6 + 0, 4, 5, 6 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_uint8 yytable[] = +static const yytype_int8 yytable[] = { 9, 1, 2, 1, 3, 7, 13, 2, 15, 12, 10, 17, 11, 12, 14, 16, 18, 8 }; -static const yytype_uint8 yycheck[] = +static const yytype_int8 yycheck[] = { 3, 3, 4, 3, 6, 5, 5, 4, 11, 8, 0, 14, 8, 8, 8, 3, 7, 2 @@ -535,29 +662,29 @@ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ -static const yytype_uint8 yystos[] = +static const yytype_int8 yystos[] = { 0, 3, 4, 6, 10, 11, 12, 5, 12, 11, 0, 8, 8, 5, 8, 11, 3, 11, 7 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = +static const yytype_int8 yyr1[] = { 0, 9, 10, 10, 10, 10, 11, 11, 12, 12 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = +static const yytype_int8 yyr2[] = { 0, 2, 5, 3, 1, 1, 3, 2, 1, 3 }; +enum { YYENOMEM = -2 }; + #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab @@ -583,10 +710,9 @@ } \ while (0) -/* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 - +/* Backward compatibility with an undocumented macro. + Use YYerror or YYUNDEF. */ +#define YYERRCODE YYUNDEF /* Enable debugging if requested. */ @@ -604,18 +730,18 @@ } while (0) /* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif +# ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ - Type, Value, result); \ + Kind, Value, result); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) @@ -626,18 +752,21 @@ `-----------------------------------*/ static void -yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, NDBOX **result) +yy_symbol_value_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, NDBOX **result) { FILE *yyoutput = yyo; - YYUSE (yyoutput); - YYUSE (result); + YY_USE (yyoutput); + YY_USE (result); if (!yyvaluep) return; # ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyo, yytoknum[yytype], *yyvaluep); + if (yykind < YYNTOKENS) + YYPRINT (yyo, yytoknum[yykind], *yyvaluep); # endif - YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YY_USE (yykind); + YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -646,12 +775,13 @@ `---------------------------*/ static void -yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, NDBOX **result) +yy_symbol_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, NDBOX **result) { YYFPRINTF (yyo, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); + yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); - yy_symbol_value_print (yyo, yytype, yyvaluep, result); + yy_symbol_value_print (yyo, yykind, yyvaluep, result); YYFPRINTF (yyo, ")"); } @@ -661,7 +791,7 @@ `------------------------------------------------------------------*/ static void -yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -684,21 +814,21 @@ `------------------------------------------------*/ static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, NDBOX **result) +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, + int yyrule, NDBOX **result) { - unsigned long yylno = yyrline[yyrule]; + int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], - &yyvsp[(yyi + 1) - (yynrhs)] - , result); + YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), + &yyvsp[(yyi + 1) - (yynrhs)], result); YYFPRINTF (stderr, "\n"); } } @@ -713,8 +843,8 @@ multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YYDPRINTF(Args) ((void) 0) +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ @@ -737,255 +867,31 @@ #endif -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -static YYSIZE_T -yystrlen (const char *yystr) -{ - YYSIZE_T yylen; - for (yylen = 0; yystr[yylen]; yylen++) - continue; - return yylen; -} -# endif -# endif - -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -yystpcpy (char *yydest, const char *yysrc) -{ - char *yyd = yydest; - const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -# ifndef yytnamerr -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). YYSTR is taken from yytname. If YYRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static YYSIZE_T -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - YYSIZE_T yyn = 0; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - else - goto append; - - append: - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - - if (! yyres) - return yystrlen (yystr); - - return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); -} -# endif - -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP. - - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store. */ -static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - yytype_int16 *yyssp, int yytoken) -{ - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - YYSIZE_T yysize = yysize0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat. */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ - int yycount = 0; - - /* There are many possibilities here to consider: - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[*yyssp]; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; - } - } - } - } - switch (yycount) - { -# define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - default: /* Avoid compiler warnings. */ - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ - } - { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; - } - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } - - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - char *yyp = *yymsg; - int yyi = 0; - while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - yyp++; - yyformat++; - } - } - return 0; -} -#endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, NDBOX **result) +yydestruct (const char *yymsg, + yysymbol_kind_t yykind, YYSTYPE *yyvaluep, NDBOX **result) { - YYUSE (yyvaluep); - YYUSE (result); + YY_USE (yyvaluep); + YY_USE (result); if (!yymsg) yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); + YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } - - -/* The lookahead symbol. */ +/* Lookahead token kind. */ int yychar; /* The semantic value of the lookahead symbol. */ @@ -994,6 +900,8 @@ int yynerrs; + + /*----------. | yyparse. | `----------*/ @@ -1001,43 +909,36 @@ int yyparse (NDBOX **result) { - int yystate; + yy_state_fast_t yystate = 0; /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; + int yyerrstatus = 0; - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - - Refer to the stacks through separate pointers, to allow yyoverflow + /* Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; + /* Their size. */ + YYPTRDIFF_T yystacksize = YYINITDEPTH; - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; + /* The state stack: array, bottom, top. */ + yy_state_t yyssa[YYINITDEPTH]; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; - YYSIZE_T yystacksize; + /* The semantic value stack: array, bottom, top. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; int yyn; + /* The return value of yyparse. */ int yyresult; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; + /* Lookahead symbol kind. */ + yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif + #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) @@ -1045,15 +946,8 @@ Keep to zero when no symbol should be popped. */ int yylen = 0; - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - yystacksize = YYINITDEPTH; - YYDPRINTF ((stderr, "Starting parse\n")); - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; @@ -1068,10 +962,15 @@ /*--------------------------------------------------------------------. -| yynewstate -- set current state (the top of the stack) to yystate. | +| yysetstate -- set current state (the top of the stack) to yystate. | `--------------------------------------------------------------------*/ yysetstate: - *yyssp = (yytype_int16) yystate; + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + YY_ASSERT (0 <= yystate && yystate < YYNSTATES); + YY_IGNORE_USELESS_CAST_BEGIN + *yyssp = YY_CAST (yy_state_t, yystate); + YY_IGNORE_USELESS_CAST_END + YY_STACK_PRINT (yyss, yyssp); if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE @@ -1079,23 +978,23 @@ #else { /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); + YYPTRDIFF_T yysize = yyssp - yyss + 1; # if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ + yy_state_t *yyss1 = yyss; YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), + &yyss1, yysize * YYSIZEOF (*yyssp), + &yyvs1, yysize * YYSIZEOF (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; @@ -1109,14 +1008,15 @@ yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; + yy_state_t *yyss1 = yyss; union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + YY_CAST (union yyalloc *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE +# undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } @@ -1125,16 +1025,16 @@ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long) yystacksize)); + YY_IGNORE_USELESS_CAST_BEGIN + YYDPRINTF ((stderr, "Stack size increased to %ld\n", + YY_CAST (long, yystacksize))); + YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) YYABORT; } #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - if (yystate == YYFINAL) YYACCEPT; @@ -1155,18 +1055,29 @@ /* Not known => get a lookahead token if don't already have one. */ - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ if (yychar == YYEMPTY) { - YYDPRINTF ((stderr, "Reading a token: ")); + YYDPRINTF ((stderr, "Reading a token\n")); yychar = yylex (); } if (yychar <= YYEOF) { - yychar = yytoken = YYEOF; + yychar = YYEOF; + yytoken = YYSYMBOL_YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } + else if (yychar == YYerror) + { + /* The scanner already issued an error message, process directly + to error recovery. But do not keep the error token as + lookahead, it is too special and may lead us to an endless + loop in error recovery. */ + yychar = YYUNDEF; + yytoken = YYSYMBOL_YYerror; + goto yyerrlab1; + } else { yytoken = YYTRANSLATE (yychar); @@ -1194,15 +1105,13 @@ /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token. */ - yychar = YYEMPTY; - yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END + /* Discard the shifted token. */ + yychar = YYEMPTY; goto yynewstate; @@ -1237,9 +1146,9 @@ YY_REDUCE_PRINT (yyn); switch (yyn) { - case 2: -#line 47 "cubeparse.y" /* yacc.c:1652 */ - { + case 2: /* box: O_BRACKET paren_list COMMA paren_list C_BRACKET */ +#line 47 "cubeparse.y" + { int dim; dim = item_count(yyvsp[-3], ','); @@ -1264,12 +1173,12 @@ *result = write_box( dim, yyvsp[-3], yyvsp[-1] ); } -#line 1268 "cubeparse.c" /* yacc.c:1652 */ +#line 1177 "cubeparse.c" break; - case 3: -#line 74 "cubeparse.y" /* yacc.c:1652 */ - { + case 3: /* box: paren_list COMMA paren_list */ +#line 74 "cubeparse.y" + { int dim; dim = item_count(yyvsp[-2], ','); @@ -1294,12 +1203,12 @@ *result = write_box( dim, yyvsp[-2], yyvsp[0] ); } -#line 1298 "cubeparse.c" /* yacc.c:1652 */ +#line 1207 "cubeparse.c" break; - case 4: -#line 101 "cubeparse.y" /* yacc.c:1652 */ - { + case 4: /* box: paren_list */ +#line 101 "cubeparse.y" + { int dim; dim = item_count(yyvsp[0], ','); @@ -1315,12 +1224,12 @@ *result = write_point_as_box(dim, yyvsp[0]); } -#line 1319 "cubeparse.c" /* yacc.c:1652 */ +#line 1228 "cubeparse.c" break; - case 5: -#line 119 "cubeparse.y" /* yacc.c:1652 */ - { + case 5: /* box: list */ +#line 119 "cubeparse.y" + { int dim; dim = item_count(yyvsp[0], ','); @@ -1336,47 +1245,48 @@ *result = write_point_as_box(dim, yyvsp[0]); } -#line 1340 "cubeparse.c" /* yacc.c:1652 */ +#line 1249 "cubeparse.c" break; - case 6: -#line 138 "cubeparse.y" /* yacc.c:1652 */ - { + case 6: /* paren_list: O_PAREN list C_PAREN */ +#line 138 "cubeparse.y" + { yyval = yyvsp[-1]; } -#line 1348 "cubeparse.c" /* yacc.c:1652 */ +#line 1257 "cubeparse.c" break; - case 7: -#line 142 "cubeparse.y" /* yacc.c:1652 */ - { + case 7: /* paren_list: O_PAREN C_PAREN */ +#line 142 "cubeparse.y" + { yyval = pstrdup(""); } -#line 1356 "cubeparse.c" /* yacc.c:1652 */ +#line 1265 "cubeparse.c" break; - case 8: -#line 148 "cubeparse.y" /* yacc.c:1652 */ - { + case 8: /* list: CUBEFLOAT */ +#line 148 "cubeparse.y" + { /* alloc enough space to be sure whole list will fit */ yyval = palloc(scanbuflen + 1); strcpy(yyval, yyvsp[0]); } -#line 1366 "cubeparse.c" /* yacc.c:1652 */ +#line 1275 "cubeparse.c" break; - case 9: -#line 154 "cubeparse.y" /* yacc.c:1652 */ - { + case 9: /* list: list COMMA CUBEFLOAT */ +#line 154 "cubeparse.y" + { yyval = yyvsp[-2]; strcat(yyval, ","); strcat(yyval, yyvsp[0]); } -#line 1376 "cubeparse.c" /* yacc.c:1652 */ +#line 1285 "cubeparse.c" break; -#line 1380 "cubeparse.c" /* yacc.c:1652 */ +#line 1289 "cubeparse.c" + default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -1390,11 +1300,10 @@ case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; - YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; @@ -1418,50 +1327,14 @@ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - + yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; -#if ! YYERROR_VERBOSE yyerror (result, YY_("syntax error")); -#else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ - yyssp, yytoken) - { - char const *yymsgp = YY_("syntax error"); - int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; - if (yysyntax_error_status == 0) - yymsgp = yymsg; - else if (yysyntax_error_status == 1) - { - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); - if (!yymsg) - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } - else - { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; - } - } - yyerror (result, yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; - } -# undef YYSYNTAX_ERROR -#endif } - - if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an @@ -1510,13 +1383,14 @@ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ + /* Pop stack until we find a state that shifts the error token. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + yyn += YYSYMBOL_YYerror; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) { yyn = yytable[yyn]; if (0 < yyn) @@ -1530,7 +1404,7 @@ yydestruct ("Error: popping", - yystos[yystate], yyvsp, result); + YY_ACCESSING_SYMBOL (yystate), yyvsp, result); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -1542,7 +1416,7 @@ /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); yystate = yyn; goto yynewstate; @@ -1564,20 +1438,20 @@ goto yyreturn; -#if !defined yyoverflow || YYERROR_VERBOSE +#if !defined yyoverflow /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (result, YY_("memory exhausted")); yyresult = 2; - /* Fall through. */ + goto yyreturn; #endif -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ +/*-------------------------------------------------------. +| yyreturn -- parsing is finished, clean up and return. | +`-------------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -1594,20 +1468,18 @@ while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp, result); + YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, result); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif -#if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); -#endif + return yyresult; } -#line 161 "cubeparse.y" /* yacc.c:1918 */ + +#line 161 "cubeparse.y" /* This assumes the string has been normalized by productions above */ diff -Nru postgresql-11-11.14/contrib/dblink/dblink.c postgresql-11-11.16/contrib/dblink/dblink.c --- postgresql-11-11.14/contrib/dblink/dblink.c 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/dblink/dblink.c 2022-05-09 21:20:11.000000000 +0000 @@ -2758,7 +2758,8 @@ ereport(level, (errcode(sqlstate), - message_primary ? errmsg_internal("%s", message_primary) : + (message_primary != NULL && message_primary[0] != '\0') ? + errmsg_internal("%s", message_primary) : errmsg("could not obtain message string for remote error"), message_detail ? errdetail_internal("%s", message_detail) : 0, message_hint ? errhint("%s", message_hint) : 0, diff -Nru postgresql-11-11.14/contrib/pageinspect/brinfuncs.c postgresql-11-11.16/contrib/pageinspect/brinfuncs.c --- postgresql-11-11.14/contrib/pageinspect/brinfuncs.c 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/pageinspect/brinfuncs.c 2022-05-09 21:20:11.000000000 +0000 @@ -18,6 +18,7 @@ #include "access/brin_revmap.h" #include "access/brin_tuple.h" #include "catalog/index.h" +#include "catalog/pg_am_d.h" #include "catalog/pg_type.h" #include "funcapi.h" #include "lib/stringinfo.h" @@ -33,6 +34,8 @@ PG_FUNCTION_INFO_V1(brin_metapage_info); PG_FUNCTION_INFO_V1(brin_revmap_data); +#define IS_BRIN(r) ((r)->rd_rel->relam == BRIN_AM_OID) + typedef struct brin_column_state { int nstored; @@ -47,8 +50,7 @@ brin_page_type(PG_FUNCTION_ARGS) { bytea *raw_page = PG_GETARG_BYTEA_P(0); - Page page = VARDATA(raw_page); - int raw_page_size; + Page page; char *type; if (!superuser()) @@ -56,14 +58,19 @@ (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), (errmsg("must be superuser to use raw page functions")))); - raw_page_size = VARSIZE(raw_page) - VARHDRSZ; + page = get_page_from_raw(raw_page); - if (raw_page_size != BLCKSZ) - ereport(ERROR, - (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("input page too small"), - errdetail("Expected size %d, got %d", - BLCKSZ, raw_page_size))); + if (PageIsNew(page)) + PG_RETURN_NULL(); + + /* verify the special space has the expected size */ + if (PageGetSpecialSize(page) != MAXALIGN(sizeof(BrinSpecialSpace))) + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("input page is not a valid %s page", "BRIN"), + errdetail("Expected special size %d, got %d.", + (int) MAXALIGN(sizeof(BrinSpecialSpace)), + (int) PageGetSpecialSize(page)))); switch (BrinPageType(page)) { @@ -91,19 +98,19 @@ static Page verify_brin_page(bytea *raw_page, uint16 type, const char *strtype) { - Page page; - int raw_page_size; + Page page = get_page_from_raw(raw_page); - raw_page_size = VARSIZE(raw_page) - VARHDRSZ; + if (PageIsNew(page)) + return page; - if (raw_page_size != BLCKSZ) - ereport(ERROR, - (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("input page too small"), - errdetail("Expected size %d, got %d", - BLCKSZ, raw_page_size))); - - page = VARDATA(raw_page); + /* verify the special space has the expected size */ + if (PageGetSpecialSize(page) != MAXALIGN(sizeof(BrinSpecialSpace))) + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("input page is not a valid %s page", "BRIN"), + errdetail("Expected special size %d, got %d.", + (int) MAXALIGN(sizeof(BrinSpecialSpace)), + (int) PageGetSpecialSize(page)))); /* verify the special space says this page is what we want */ if (BrinPageType(page) != type) @@ -171,11 +178,25 @@ MemoryContextSwitchTo(oldcontext); indexRel = index_open(indexRelid, AccessShareLock); + + if (!IS_BRIN(indexRel)) + ereport(ERROR, + (errcode(ERRCODE_WRONG_OBJECT_TYPE), + errmsg("\"%s\" is not a %s index", + RelationGetRelationName(indexRel), "BRIN"))); + bdesc = brin_build_desc(indexRel); /* minimally verify the page we got */ page = verify_brin_page(raw_page, BRIN_PAGETYPE_REGULAR, "regular"); + if (PageIsNew(page)) + { + brin_free_desc(bdesc); + index_close(indexRel, AccessShareLock); + PG_RETURN_NULL(); + } + /* * Initialize output functions for all indexed datatypes; simplifies * calling them later. @@ -342,6 +363,9 @@ page = verify_brin_page(raw_page, BRIN_PAGETYPE_META, "metapage"); + if (PageIsNew(page)) + PG_RETURN_NULL(); + /* Build a tuple descriptor for our result type */ if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE) elog(ERROR, "return type must be a row type"); @@ -384,15 +408,21 @@ MemoryContext mctx; Page page; - /* minimally verify the page we got */ - page = verify_brin_page(raw_page, BRIN_PAGETYPE_REVMAP, "revmap"); - /* create a function context for cross-call persistence */ fctx = SRF_FIRSTCALL_INIT(); /* switch to memory context appropriate for multiple function calls */ mctx = MemoryContextSwitchTo(fctx->multi_call_memory_ctx); + /* minimally verify the page we got */ + page = verify_brin_page(raw_page, BRIN_PAGETYPE_REVMAP, "revmap"); + + if (PageIsNew(page)) + { + MemoryContextSwitchTo(mctx); + PG_RETURN_NULL(); + } + state = palloc(sizeof(*state)); state->tids = ((RevmapContents *) PageGetContents(page))->rm_tids; state->idx = 0; diff -Nru postgresql-11-11.14/contrib/pageinspect/btreefuncs.c postgresql-11-11.16/contrib/pageinspect/btreefuncs.c --- postgresql-11-11.14/contrib/pageinspect/btreefuncs.c 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/pageinspect/btreefuncs.c 2022-05-09 21:20:11.000000000 +0000 @@ -181,8 +181,10 @@ rel = relation_openrv(relrv, AccessShareLock); if (!IS_INDEX(rel) || !IS_BTREE(rel)) - elog(ERROR, "relation \"%s\" is not a btree index", - RelationGetRelationName(rel)); + ereport(ERROR, + (errcode(ERRCODE_WRONG_OBJECT_TYPE), + errmsg("\"%s\" is not a %s index", + RelationGetRelationName(rel), "btree"))); /* * Reject attempts to read non-local temporary relations; we would be @@ -335,8 +337,10 @@ rel = relation_openrv(relrv, AccessShareLock); if (!IS_INDEX(rel) || !IS_BTREE(rel)) - elog(ERROR, "relation \"%s\" is not a btree index", - RelationGetRelationName(rel)); + ereport(ERROR, + (errcode(ERRCODE_WRONG_OBJECT_TYPE), + errmsg("\"%s\" is not a %s index", + RelationGetRelationName(rel), "btree"))); /* * Reject attempts to read non-local temporary relations; we would be @@ -424,7 +428,6 @@ Datum result; FuncCallContext *fctx; struct user_args *uargs; - int raw_page_size; if (!superuser()) ereport(ERROR, @@ -437,22 +440,30 @@ MemoryContext mctx; TupleDesc tupleDesc; - raw_page_size = VARSIZE(raw_page) - VARHDRSZ; - - if (raw_page_size < SizeOfPageHeaderData) - ereport(ERROR, - (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("input page too small (%d bytes)", raw_page_size))); - fctx = SRF_FIRSTCALL_INIT(); mctx = MemoryContextSwitchTo(fctx->multi_call_memory_ctx); uargs = palloc(sizeof(struct user_args)); - uargs->page = VARDATA(raw_page); + uargs->page = get_page_from_raw(raw_page); + + if (PageIsNew(uargs->page)) + { + MemoryContextSwitchTo(mctx); + PG_RETURN_NULL(); + } uargs->offset = FirstOffsetNumber; + /* verify the special space has the expected size */ + if (PageGetSpecialSize(uargs->page) != MAXALIGN(sizeof(BTPageOpaqueData))) + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("input page is not a valid %s page", "btree"), + errdetail("Expected special size %d, got %d.", + (int) MAXALIGN(sizeof(BTPageOpaqueData)), + (int) PageGetSpecialSize(uargs->page)))); + opaque = (BTPageOpaque) PageGetSpecialPointer(uargs->page); if (P_ISMETA(opaque)) @@ -460,6 +471,11 @@ (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("block is a meta page"))); + if (P_ISLEAF(opaque) && opaque->btpo.level != 0) + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("block is not a valid btree leaf page"))); + if (P_ISDELETED(opaque)) elog(NOTICE, "page is deleted"); @@ -525,8 +541,10 @@ rel = relation_openrv(relrv, AccessShareLock); if (!IS_INDEX(rel) || !IS_BTREE(rel)) - elog(ERROR, "relation \"%s\" is not a btree index", - RelationGetRelationName(rel)); + ereport(ERROR, + (errcode(ERRCODE_WRONG_OBJECT_TYPE), + errmsg("\"%s\" is not a %s index", + RelationGetRelationName(rel), "btree"))); /* * Reject attempts to read non-local temporary relations; we would be diff -Nru postgresql-11-11.14/contrib/pageinspect/expected/brin.out postgresql-11-11.16/contrib/pageinspect/expected/brin.out --- postgresql-11-11.14/contrib/pageinspect/expected/brin.out 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/pageinspect/expected/brin.out 2022-05-09 21:20:11.000000000 +0000 @@ -48,4 +48,43 @@ 1 | 0 | 1 | f | f | f | {1 .. 1} (1 row) +-- Failure for non-BRIN index. +CREATE INDEX test1_a_btree ON test1 (a); +SELECT brin_page_items(get_raw_page('test1_a_btree', 0), 'test1_a_btree'); +ERROR: "test1_a_btree" is not a BRIN index +-- Mask DETAIL messages as these are not portable across architectures. +\set VERBOSITY terse +-- Invalid special area size +SELECT brin_page_type(get_raw_page('test1', 0)); +ERROR: input page is not a valid BRIN page +SELECT * FROM brin_metapage_info(get_raw_page('test1', 0)); +ERROR: input page is not a valid BRIN page +SELECT * FROM brin_revmap_data(get_raw_page('test1', 0)); +ERROR: input page is not a valid BRIN page +\set VERBOSITY default +-- Tests with all-zero pages. +SHOW block_size \gset +SELECT brin_page_type(decode(repeat('00', :block_size), 'hex')); + brin_page_type +---------------- + +(1 row) + +SELECT brin_page_items(decode(repeat('00', :block_size), 'hex'), 'test1_a_idx'); + brin_page_items +----------------- +(0 rows) + +SELECT brin_metapage_info(decode(repeat('00', :block_size), 'hex')); + brin_metapage_info +-------------------- + +(1 row) + +SELECT brin_revmap_data(decode(repeat('00', :block_size), 'hex')); + brin_revmap_data +------------------ + +(1 row) + DROP TABLE test1; diff -Nru postgresql-11-11.14/contrib/pageinspect/expected/btree.out postgresql-11-11.16/contrib/pageinspect/expected/btree.out --- postgresql-11-11.14/contrib/pageinspect/expected/btree.out 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/pageinspect/expected/btree.out 2022-05-09 21:20:11.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE TABLE test1 (a int8, b text); -INSERT INTO test1 VALUES (72057594037927937, 'text'); +CREATE TABLE test1 (a int8, b int4range); +INSERT INTO test1 VALUES (72057594037927937, '[0,1)'); CREATE INDEX test1_a_idx ON test1 USING btree (a); \x SELECT * FROM bt_metap('test1_a_idx'); @@ -57,4 +57,39 @@ SELECT * FROM bt_page_items(get_raw_page('test1_a_idx', 2)); ERROR: block number 2 is out of range for relation "test1_a_idx" +-- Failure when using a non-btree index. +CREATE INDEX test1_a_hash ON test1 USING hash(a); +SELECT bt_metap('test1_a_hash'); +ERROR: "test1_a_hash" is not a btree index +SELECT bt_page_stats('test1_a_hash', 0); +ERROR: "test1_a_hash" is not a btree index +SELECT bt_page_items('test1_a_hash', 0); +ERROR: "test1_a_hash" is not a btree index +SELECT bt_page_items(get_raw_page('test1_a_hash', 0)); +ERROR: block is a meta page +CREATE INDEX test1_b_gist ON test1 USING gist(b); +-- Special area of GiST is the same as btree, this complains about inconsistent +-- leaf data on the page. +SELECT bt_page_items(get_raw_page('test1_b_gist', 0)); +ERROR: block is not a valid btree leaf page +-- Several failure modes. +-- Suppress the DETAIL message, to allow the tests to work across various +-- page sizes and architectures. +\set VERBOSITY terse +-- invalid page size +SELECT bt_page_items('aaa'::bytea); +ERROR: invalid page size +-- invalid special area size +CREATE INDEX test1_a_brin ON test1 USING brin(a); +SELECT bt_page_items(get_raw_page('test1', 0)); +ERROR: input page is not a valid btree page +SELECT bt_page_items(get_raw_page('test1_a_brin', 0)); +ERROR: input page is not a valid btree page +\set VERBOSITY default +-- Tests with all-zero pages. +SHOW block_size \gset +SELECT bt_page_items(decode(repeat('00', :block_size), 'hex')); +-[ RECORD 1 ]-+- +bt_page_items | + DROP TABLE test1; diff -Nru postgresql-11-11.14/contrib/pageinspect/expected/gin.out postgresql-11-11.16/contrib/pageinspect/expected/gin.out --- postgresql-11-11.14/contrib/pageinspect/expected/gin.out 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/pageinspect/expected/gin.out 2022-05-09 21:20:11.000000000 +0000 @@ -35,3 +35,36 @@ -[ RECORD 1 ] ?column? | t +-- Failure with various modes. +-- Suppress the DETAIL message, to allow the tests to work across various +-- page sizes and architectures. +\set VERBOSITY terse +-- invalid page size +SELECT gin_leafpage_items('aaa'::bytea); +ERROR: invalid page size +SELECT gin_metapage_info('bbb'::bytea); +ERROR: invalid page size +SELECT gin_page_opaque_info('ccc'::bytea); +ERROR: invalid page size +-- invalid special area size +SELECT * FROM gin_metapage_info(get_raw_page('test1', 0)); +ERROR: input page is not a valid GIN metapage +SELECT * FROM gin_page_opaque_info(get_raw_page('test1', 0)); +ERROR: input page is not a valid GIN data leaf page +SELECT * FROM gin_leafpage_items(get_raw_page('test1', 0)); +ERROR: input page is not a valid GIN data leaf page +\set VERBOSITY default +-- Tests with all-zero pages. +SHOW block_size \gset +SELECT gin_leafpage_items(decode(repeat('00', :block_size), 'hex')); +-[ RECORD 1 ]------+- +gin_leafpage_items | + +SELECT gin_metapage_info(decode(repeat('00', :block_size), 'hex')); +-[ RECORD 1 ]-----+- +gin_metapage_info | + +SELECT gin_page_opaque_info(decode(repeat('00', :block_size), 'hex')); +-[ RECORD 1 ]--------+- +gin_page_opaque_info | + diff -Nru postgresql-11-11.14/contrib/pageinspect/expected/hash.out postgresql-11-11.16/contrib/pageinspect/expected/hash.out --- postgresql-11-11.14/contrib/pageinspect/expected/hash.out 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/pageinspect/expected/hash.out 2022-05-09 21:20:11.000000000 +0000 @@ -159,4 +159,43 @@ SELECT * FROM hash_page_items(get_raw_page('test_hash_a_idx', 5)); ERROR: page is not a hash bucket or overflow page +-- Failure with non-hash index +CREATE INDEX test_hash_a_btree ON test_hash USING btree (a); +SELECT hash_bitmap_info('test_hash_a_btree', 0); +ERROR: "test_hash_a_btree" is not a hash index +-- Failure with various modes. +-- Suppress the DETAIL message, to allow the tests to work across various +-- page sizes and architectures. +\set VERBOSITY terse +-- invalid page size +SELECT hash_metapage_info('aaa'::bytea); +ERROR: invalid page size +SELECT hash_page_items('bbb'::bytea); +ERROR: invalid page size +SELECT hash_page_stats('ccc'::bytea); +ERROR: invalid page size +SELECT hash_page_type('ddd'::bytea); +ERROR: invalid page size +-- invalid special area size +SELECT hash_metapage_info(get_raw_page('test_hash', 0)); +ERROR: input page is not a valid hash page +SELECT hash_page_items(get_raw_page('test_hash', 0)); +ERROR: input page is not a valid hash page +SELECT hash_page_stats(get_raw_page('test_hash', 0)); +ERROR: input page is not a valid hash page +SELECT hash_page_type(get_raw_page('test_hash', 0)); +ERROR: input page is not a valid hash page +\set VERBOSITY default +-- Tests with all-zero pages. +SHOW block_size \gset +SELECT hash_metapage_info(decode(repeat('00', :block_size), 'hex')); +ERROR: page is not a hash meta page +SELECT hash_page_items(decode(repeat('00', :block_size), 'hex')); +ERROR: page is not a hash bucket or overflow page +SELECT hash_page_stats(decode(repeat('00', :block_size), 'hex')); +ERROR: page is not a hash bucket or overflow page +SELECT hash_page_type(decode(repeat('00', :block_size), 'hex')); +-[ RECORD 1 ]--+------- +hash_page_type | unused + DROP TABLE test_hash; diff -Nru postgresql-11-11.14/contrib/pageinspect/expected/page.out postgresql-11-11.16/contrib/pageinspect/expected/page.out --- postgresql-11-11.14/contrib/pageinspect/expected/page.out 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/pageinspect/expected/page.out 2022-05-09 21:20:11.000000000 +0000 @@ -113,3 +113,34 @@ (1 row) drop table test8; +-- Failure with incorrect page size +-- Suppress the DETAIL message, to allow the tests to work across various +-- page sizes. +\set VERBOSITY terse +SELECT fsm_page_contents('aaa'::bytea); +ERROR: invalid page size +SELECT page_checksum('bbb'::bytea, 0); +ERROR: invalid page size +SELECT page_header('ccc'::bytea); +ERROR: invalid page size +\set VERBOSITY default +-- Tests with all-zero pages. +SHOW block_size \gset +SELECT fsm_page_contents(decode(repeat('00', :block_size), 'hex')); + fsm_page_contents +------------------- + +(1 row) + +SELECT page_header(decode(repeat('00', :block_size), 'hex')); + page_header +----------------------- + (0/0,0,0,0,0,0,0,0,0) +(1 row) + +SELECT page_checksum(decode(repeat('00', :block_size), 'hex'), 1); + page_checksum +--------------- + +(1 row) + diff -Nru postgresql-11-11.14/contrib/pageinspect/fsmfuncs.c postgresql-11-11.16/contrib/pageinspect/fsmfuncs.c --- postgresql-11-11.14/contrib/pageinspect/fsmfuncs.c 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/pageinspect/fsmfuncs.c 2022-05-09 21:20:11.000000000 +0000 @@ -37,6 +37,7 @@ { bytea *raw_page = PG_GETARG_BYTEA_P(0); StringInfoData sinfo; + Page page; FSMPage fsmpage; int i; @@ -45,7 +46,12 @@ (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), (errmsg("must be superuser to use raw page functions")))); - fsmpage = (FSMPage) PageGetContents(VARDATA(raw_page)); + page = get_page_from_raw(raw_page); + + if (PageIsNew(page)) + PG_RETURN_NULL(); + + fsmpage = (FSMPage) PageGetContents(page); initStringInfo(&sinfo); diff -Nru postgresql-11-11.14/contrib/pageinspect/ginfuncs.c postgresql-11-11.16/contrib/pageinspect/ginfuncs.c --- postgresql-11-11.14/contrib/pageinspect/ginfuncs.c 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/pageinspect/ginfuncs.c 2022-05-09 21:20:11.000000000 +0000 @@ -50,6 +50,17 @@ page = get_page_from_raw(raw_page); + if (PageIsNew(page)) + PG_RETURN_NULL(); + + if (PageGetSpecialSize(page) != MAXALIGN(sizeof(GinPageOpaqueData))) + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("input page is not a valid GIN metapage"), + errdetail("Expected special size %d, got %d.", + (int) MAXALIGN(sizeof(GinPageOpaqueData)), + (int) PageGetSpecialSize(page)))); + opaq = (GinPageOpaque) PageGetSpecialPointer(page); if (opaq->flags != GIN_META) ereport(ERROR, @@ -108,6 +119,17 @@ page = get_page_from_raw(raw_page); + if (PageIsNew(page)) + PG_RETURN_NULL(); + + if (PageGetSpecialSize(page) != MAXALIGN(sizeof(GinPageOpaqueData))) + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("input page is not a valid GIN data leaf page"), + errdetail("Expected special size %d, got %d.", + (int) MAXALIGN(sizeof(GinPageOpaqueData)), + (int) PageGetSpecialSize(page)))); + opaq = (GinPageOpaque) PageGetSpecialPointer(page); /* Build a tuple descriptor for our result type */ @@ -184,13 +206,19 @@ page = get_page_from_raw(raw_page); + if (PageIsNew(page)) + { + MemoryContextSwitchTo(mctx); + PG_RETURN_NULL(); + } + if (PageGetSpecialSize(page) != MAXALIGN(sizeof(GinPageOpaqueData))) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("input page is not a valid GIN data leaf page"), - errdetail("Special size %d, expected %d", - (int) PageGetSpecialSize(page), - (int) MAXALIGN(sizeof(GinPageOpaqueData))))); + errdetail("Expected special size %d, got %d.", + (int) MAXALIGN(sizeof(GinPageOpaqueData)), + (int) PageGetSpecialSize(page)))); opaq = (GinPageOpaque) PageGetSpecialPointer(page); if (opaq->flags != (GIN_DATA | GIN_LEAF | GIN_COMPRESSED)) diff -Nru postgresql-11-11.14/contrib/pageinspect/hashfuncs.c postgresql-11-11.16/contrib/pageinspect/hashfuncs.c --- postgresql-11-11.14/contrib/pageinspect/hashfuncs.c 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/pageinspect/hashfuncs.c 2022-05-09 21:20:11.000000000 +0000 @@ -66,14 +66,17 @@ if (PageGetSpecialSize(page) != MAXALIGN(sizeof(HashPageOpaqueData))) ereport(ERROR, - (errcode(ERRCODE_INDEX_CORRUPTED), - errmsg("index table contains corrupted page"))); + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("input page is not a valid %s page", "hash"), + errdetail("Expected special size %d, got %d.", + (int) MAXALIGN(sizeof(HashPageOpaqueData)), + (int) PageGetSpecialSize(page)))); pageopaque = (HashPageOpaque) PageGetSpecialPointer(page); if (pageopaque->hasho_page_id != HASHO_PAGE_ID) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("page is not a hash page"), + errmsg("input page is not a valid %s page", "hash"), errdetail("Expected %08x, got %08x.", HASHO_PAGE_ID, pageopaque->hasho_page_id))); @@ -134,7 +137,7 @@ ereport(ERROR, (errcode(ERRCODE_INDEX_CORRUPTED), errmsg("invalid version for metadata"), - errdetail("Expected %d, got %d", + errdetail("Expected %d, got %d.", HASH_VERSION, metap->hashm_version))); } @@ -420,8 +423,10 @@ indexRel = index_open(indexRelid, AccessShareLock); if (!IS_HASH(indexRel)) - elog(ERROR, "relation \"%s\" is not a hash index", - RelationGetRelationName(indexRel)); + ereport(ERROR, + (errcode(ERRCODE_WRONG_OBJECT_TYPE), + errmsg("\"%s\" is not a %s index", + RelationGetRelationName(indexRel), "hash"))); if (RELATION_IS_OTHER_TEMP(indexRel)) ereport(ERROR, diff -Nru postgresql-11-11.14/contrib/pageinspect/rawpage.c postgresql-11-11.16/contrib/pageinspect/rawpage.c --- postgresql-11-11.14/contrib/pageinspect/rawpage.c 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/pageinspect/rawpage.c 2022-05-09 21:20:11.000000000 +0000 @@ -218,7 +218,6 @@ page_header(PG_FUNCTION_ARGS) { bytea *raw_page = PG_GETARG_BYTEA_P(0); - int raw_page_size; TupleDesc tupdesc; @@ -235,18 +234,7 @@ (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), (errmsg("must be superuser to use raw page functions")))); - raw_page_size = VARSIZE(raw_page) - VARHDRSZ; - - /* - * Check that enough data was supplied, so that we don't try to access - * fields outside the supplied buffer. - */ - if (raw_page_size < SizeOfPageHeaderData) - ereport(ERROR, - (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("input page too small (%d bytes)", raw_page_size))); - - page = (PageHeader) VARDATA(raw_page); + page = (PageHeader) get_page_from_raw(raw_page); /* Build a tuple descriptor for our result type */ if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE) @@ -299,25 +287,17 @@ { bytea *raw_page = PG_GETARG_BYTEA_P(0); uint32 blkno = PG_GETARG_INT32(1); - int raw_page_size; - PageHeader page; + Page page; if (!superuser()) ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), (errmsg("must be superuser to use raw page functions")))); - raw_page_size = VARSIZE(raw_page) - VARHDRSZ; - - /* - * Check that the supplied page is of the right size. - */ - if (raw_page_size != BLCKSZ) - ereport(ERROR, - (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("incorrect size of input page (%d bytes)", raw_page_size))); + page = get_page_from_raw(raw_page); - page = (PageHeader) VARDATA(raw_page); + if (PageIsNew(page)) + PG_RETURN_NULL(); PG_RETURN_INT16(pg_checksum_page((char *) page, blkno)); } diff -Nru postgresql-11-11.14/contrib/pageinspect/sql/brin.sql postgresql-11-11.16/contrib/pageinspect/sql/brin.sql --- postgresql-11-11.14/contrib/pageinspect/sql/brin.sql 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/pageinspect/sql/brin.sql 2022-05-09 21:20:11.000000000 +0000 @@ -15,4 +15,23 @@ SELECT * FROM brin_page_items(get_raw_page('test1_a_idx', 2), 'test1_a_idx') ORDER BY blknum, attnum LIMIT 5; +-- Failure for non-BRIN index. +CREATE INDEX test1_a_btree ON test1 (a); +SELECT brin_page_items(get_raw_page('test1_a_btree', 0), 'test1_a_btree'); + +-- Mask DETAIL messages as these are not portable across architectures. +\set VERBOSITY terse +-- Invalid special area size +SELECT brin_page_type(get_raw_page('test1', 0)); +SELECT * FROM brin_metapage_info(get_raw_page('test1', 0)); +SELECT * FROM brin_revmap_data(get_raw_page('test1', 0)); +\set VERBOSITY default + +-- Tests with all-zero pages. +SHOW block_size \gset +SELECT brin_page_type(decode(repeat('00', :block_size), 'hex')); +SELECT brin_page_items(decode(repeat('00', :block_size), 'hex'), 'test1_a_idx'); +SELECT brin_metapage_info(decode(repeat('00', :block_size), 'hex')); +SELECT brin_revmap_data(decode(repeat('00', :block_size), 'hex')); + DROP TABLE test1; diff -Nru postgresql-11-11.14/contrib/pageinspect/sql/btree.sql postgresql-11-11.16/contrib/pageinspect/sql/btree.sql --- postgresql-11-11.14/contrib/pageinspect/sql/btree.sql 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/pageinspect/sql/btree.sql 2022-05-09 21:20:11.000000000 +0000 @@ -1,5 +1,5 @@ -CREATE TABLE test1 (a int8, b text); -INSERT INTO test1 VALUES (72057594037927937, 'text'); +CREATE TABLE test1 (a int8, b int4range); +INSERT INTO test1 VALUES (72057594037927937, '[0,1)'); CREATE INDEX test1_a_idx ON test1 USING btree (a); \x @@ -18,4 +18,31 @@ SELECT * FROM bt_page_items(get_raw_page('test1_a_idx', 1)); SELECT * FROM bt_page_items(get_raw_page('test1_a_idx', 2)); +-- Failure when using a non-btree index. +CREATE INDEX test1_a_hash ON test1 USING hash(a); +SELECT bt_metap('test1_a_hash'); +SELECT bt_page_stats('test1_a_hash', 0); +SELECT bt_page_items('test1_a_hash', 0); +SELECT bt_page_items(get_raw_page('test1_a_hash', 0)); +CREATE INDEX test1_b_gist ON test1 USING gist(b); +-- Special area of GiST is the same as btree, this complains about inconsistent +-- leaf data on the page. +SELECT bt_page_items(get_raw_page('test1_b_gist', 0)); + +-- Several failure modes. +-- Suppress the DETAIL message, to allow the tests to work across various +-- page sizes and architectures. +\set VERBOSITY terse +-- invalid page size +SELECT bt_page_items('aaa'::bytea); +-- invalid special area size +CREATE INDEX test1_a_brin ON test1 USING brin(a); +SELECT bt_page_items(get_raw_page('test1', 0)); +SELECT bt_page_items(get_raw_page('test1_a_brin', 0)); +\set VERBOSITY default + +-- Tests with all-zero pages. +SHOW block_size \gset +SELECT bt_page_items(decode(repeat('00', :block_size), 'hex')); + DROP TABLE test1; diff -Nru postgresql-11-11.14/contrib/pageinspect/sql/gin.sql postgresql-11-11.16/contrib/pageinspect/sql/gin.sql --- postgresql-11-11.14/contrib/pageinspect/sql/gin.sql 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/pageinspect/sql/gin.sql 2022-05-09 21:20:11.000000000 +0000 @@ -17,3 +17,23 @@ FROM gin_leafpage_items(get_raw_page('test1_y_idx', (pg_relation_size('test1_y_idx') / current_setting('block_size')::bigint)::int - 1)); + +-- Failure with various modes. +-- Suppress the DETAIL message, to allow the tests to work across various +-- page sizes and architectures. +\set VERBOSITY terse +-- invalid page size +SELECT gin_leafpage_items('aaa'::bytea); +SELECT gin_metapage_info('bbb'::bytea); +SELECT gin_page_opaque_info('ccc'::bytea); +-- invalid special area size +SELECT * FROM gin_metapage_info(get_raw_page('test1', 0)); +SELECT * FROM gin_page_opaque_info(get_raw_page('test1', 0)); +SELECT * FROM gin_leafpage_items(get_raw_page('test1', 0)); +\set VERBOSITY default + +-- Tests with all-zero pages. +SHOW block_size \gset +SELECT gin_leafpage_items(decode(repeat('00', :block_size), 'hex')); +SELECT gin_metapage_info(decode(repeat('00', :block_size), 'hex')); +SELECT gin_page_opaque_info(decode(repeat('00', :block_size), 'hex')); diff -Nru postgresql-11-11.14/contrib/pageinspect/sql/hash.sql postgresql-11-11.16/contrib/pageinspect/sql/hash.sql --- postgresql-11-11.14/contrib/pageinspect/sql/hash.sql 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/pageinspect/sql/hash.sql 2022-05-09 21:20:11.000000000 +0000 @@ -76,5 +76,31 @@ SELECT * FROM hash_page_items(get_raw_page('test_hash_a_idx', 4)); SELECT * FROM hash_page_items(get_raw_page('test_hash_a_idx', 5)); +-- Failure with non-hash index +CREATE INDEX test_hash_a_btree ON test_hash USING btree (a); +SELECT hash_bitmap_info('test_hash_a_btree', 0); + +-- Failure with various modes. +-- Suppress the DETAIL message, to allow the tests to work across various +-- page sizes and architectures. +\set VERBOSITY terse +-- invalid page size +SELECT hash_metapage_info('aaa'::bytea); +SELECT hash_page_items('bbb'::bytea); +SELECT hash_page_stats('ccc'::bytea); +SELECT hash_page_type('ddd'::bytea); +-- invalid special area size +SELECT hash_metapage_info(get_raw_page('test_hash', 0)); +SELECT hash_page_items(get_raw_page('test_hash', 0)); +SELECT hash_page_stats(get_raw_page('test_hash', 0)); +SELECT hash_page_type(get_raw_page('test_hash', 0)); +\set VERBOSITY default + +-- Tests with all-zero pages. +SHOW block_size \gset +SELECT hash_metapage_info(decode(repeat('00', :block_size), 'hex')); +SELECT hash_page_items(decode(repeat('00', :block_size), 'hex')); +SELECT hash_page_stats(decode(repeat('00', :block_size), 'hex')); +SELECT hash_page_type(decode(repeat('00', :block_size), 'hex')); DROP TABLE test_hash; diff -Nru postgresql-11-11.14/contrib/pageinspect/sql/page.sql postgresql-11-11.16/contrib/pageinspect/sql/page.sql --- postgresql-11-11.14/contrib/pageinspect/sql/page.sql 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/pageinspect/sql/page.sql 2022-05-09 21:20:11.000000000 +0000 @@ -52,3 +52,18 @@ select tuple_data_split('test8'::regclass, t_data, t_infomask, t_infomask2, t_bits) from heap_page_items(get_raw_page('test8', 0)); drop table test8; + +-- Failure with incorrect page size +-- Suppress the DETAIL message, to allow the tests to work across various +-- page sizes. +\set VERBOSITY terse +SELECT fsm_page_contents('aaa'::bytea); +SELECT page_checksum('bbb'::bytea, 0); +SELECT page_header('ccc'::bytea); +\set VERBOSITY default + +-- Tests with all-zero pages. +SHOW block_size \gset +SELECT fsm_page_contents(decode(repeat('00', :block_size), 'hex')); +SELECT page_header(decode(repeat('00', :block_size), 'hex')); +SELECT page_checksum(decode(repeat('00', :block_size), 'hex'), 1); diff -Nru postgresql-11-11.14/contrib/pgcrypto/imath.c postgresql-11-11.16/contrib/pgcrypto/imath.c --- postgresql-11-11.14/contrib/pgcrypto/imath.c 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/pgcrypto/imath.c 2022-05-09 21:20:11.000000000 +0000 @@ -129,8 +129,13 @@ #define CLAMP(Z) s_clamp(Z) #else #define CLAMP(Z) \ -do{mp_int z_=(Z);mp_size uz_=MP_USED(z_);mp_digit *dz_=MP_DIGITS(z_)+uz_-1;\ -while(uz_ > 1 && (*dz_-- == 0)) --uz_;MP_USED(z_)=uz_;}while(0) +do{ \ + mp_int z_=(Z); \ + mp_size uz_=MP_USED(z_); \ + mp_digit *dz_=MP_DIGITS(z_)+uz_-1; \ + while(uz_ > 1 && (*dz_-- == 0)) --uz_; \ + MP_USED(z_)=uz_; \ +}while(0) #endif #undef MIN diff -Nru postgresql-11-11.14/contrib/pgcrypto/px.c postgresql-11-11.16/contrib/pgcrypto/px.c --- postgresql-11-11.14/contrib/pgcrypto/px.c 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/pgcrypto/px.c 2022-05-09 21:20:11.000000000 +0000 @@ -208,7 +208,7 @@ memset(ivbuf, 0, ivs); if (ivlen > ivs) memcpy(ivbuf, iv, ivs); - else + else if (ivlen > 0) memcpy(ivbuf, iv, ivlen); } diff -Nru postgresql-11-11.14/contrib/postgres_fdw/connection.c postgresql-11-11.16/contrib/postgres_fdw/connection.c --- postgresql-11-11.14/contrib/postgres_fdw/connection.c 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/postgres_fdw/connection.c 2022-05-09 21:20:11.000000000 +0000 @@ -625,7 +625,8 @@ ereport(elevel, (errcode(sqlstate), - message_primary ? errmsg_internal("%s", message_primary) : + (message_primary != NULL && message_primary[0] != '\0') ? + errmsg_internal("%s", message_primary) : errmsg("could not obtain message string for remote error"), message_detail ? errdetail_internal("%s", message_detail) : 0, message_hint ? errhint("%s", message_hint) : 0, diff -Nru postgresql-11-11.14/contrib/postgres_fdw/deparse.c postgresql-11-11.16/contrib/postgres_fdw/deparse.c --- postgresql-11-11.14/contrib/postgres_fdw/deparse.c 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/postgres_fdw/deparse.c 2022-05-09 21:20:11.000000000 +0000 @@ -42,6 +42,7 @@ #include "catalog/pg_collation.h" #include "catalog/pg_namespace.h" #include "catalog/pg_operator.h" +#include "catalog/pg_opfamily.h" #include "catalog/pg_proc.h" #include "catalog/pg_type.h" #include "commands/defrem.h" @@ -179,6 +180,8 @@ Index ignore_rel, List **ignore_conds, List **params_list); static void deparseAggref(Aggref *node, deparse_expr_cxt *context); static void appendGroupByClause(List *tlist, deparse_expr_cxt *context); +static void appendOrderBySuffix(Oid sortop, Oid sortcoltype, bool nulls_first, + deparse_expr_cxt *context); static void appendAggOrderBy(List *orderList, List *targetList, deparse_expr_cxt *context); static void appendFunctionName(Oid funcid, deparse_expr_cxt *context); @@ -906,6 +909,33 @@ } /* + * Returns true if it's safe to push down the sort expression described by + * 'pathkey' to the foreign server. + */ +bool +is_foreign_pathkey(PlannerInfo *root, + RelOptInfo *baserel, + PathKey *pathkey) +{ + EquivalenceClass *pathkey_ec = pathkey->pk_eclass; + PgFdwRelationInfo *fpinfo = (PgFdwRelationInfo *) baserel->fdw_private; + + /* + * is_foreign_expr would detect volatile expressions as well, but checking + * ec_has_volatile here saves some cycles. + */ + if (pathkey_ec->ec_has_volatile) + return false; + + /* can't push down the sort if the pathkey's opfamily is not shippable */ + if (!is_shippable(pathkey->pk_opfamily, OperatorFamilyRelationId, fpinfo)) + return false; + + /* can push if a suitable EC member exists */ + return (find_em_for_rel(root, pathkey_ec, baserel) != NULL); +} + +/* * Convert type OID + typmod info into a type name we can ship to the remote * server. Someplace else had better have verified that this type name is * expected to be known on the remote end. @@ -3054,44 +3084,59 @@ { SortGroupClause *srt = (SortGroupClause *) lfirst(lc); Node *sortexpr; - Oid sortcoltype; - TypeCacheEntry *typentry; if (!first) appendStringInfoString(buf, ", "); first = false; + /* Deparse the sort expression proper. */ sortexpr = deparseSortGroupClause(srt->tleSortGroupRef, targetList, false, context); - sortcoltype = exprType(sortexpr); - /* See whether operator is default < or > for datatype */ - typentry = lookup_type_cache(sortcoltype, - TYPECACHE_LT_OPR | TYPECACHE_GT_OPR); - if (srt->sortop == typentry->lt_opr) - appendStringInfoString(buf, " ASC"); - else if (srt->sortop == typentry->gt_opr) - appendStringInfoString(buf, " DESC"); - else - { - HeapTuple opertup; - Form_pg_operator operform; + /* Add decoration as needed. */ + appendOrderBySuffix(srt->sortop, exprType(sortexpr), srt->nulls_first, + context); + } +} - appendStringInfoString(buf, " USING "); +/* + * Append the ASC, DESC, USING and NULLS FIRST / NULLS LAST parts + * of an ORDER BY clause. + */ +static void +appendOrderBySuffix(Oid sortop, Oid sortcoltype, bool nulls_first, + deparse_expr_cxt *context) +{ + StringInfo buf = context->buf; + TypeCacheEntry *typentry; - /* Append operator name. */ - opertup = SearchSysCache1(OPEROID, ObjectIdGetDatum(srt->sortop)); - if (!HeapTupleIsValid(opertup)) - elog(ERROR, "cache lookup failed for operator %u", srt->sortop); - operform = (Form_pg_operator) GETSTRUCT(opertup); - deparseOperatorName(buf, operform); - ReleaseSysCache(opertup); - } + /* See whether operator is default < or > for sort expr's datatype. */ + typentry = lookup_type_cache(sortcoltype, + TYPECACHE_LT_OPR | TYPECACHE_GT_OPR); - if (srt->nulls_first) - appendStringInfoString(buf, " NULLS FIRST"); - else - appendStringInfoString(buf, " NULLS LAST"); + if (sortop == typentry->lt_opr) + appendStringInfoString(buf, " ASC"); + else if (sortop == typentry->gt_opr) + appendStringInfoString(buf, " DESC"); + else + { + HeapTuple opertup; + Form_pg_operator operform; + + appendStringInfoString(buf, " USING "); + + /* Append operator name. */ + opertup = SearchSysCache1(OPEROID, ObjectIdGetDatum(sortop)); + if (!HeapTupleIsValid(opertup)) + elog(ERROR, "cache lookup failed for operator %u", sortop); + operform = (Form_pg_operator) GETSTRUCT(opertup); + deparseOperatorName(buf, operform); + ReleaseSysCache(opertup); } + + if (nulls_first) + appendStringInfoString(buf, " NULLS FIRST"); + else + appendStringInfoString(buf, " NULLS LAST"); } /* @@ -3174,17 +3219,17 @@ } /* - * Deparse ORDER BY clause according to the given pathkeys for given base - * relation. From given pathkeys expressions belonging entirely to the given - * base relation are obtained and deparsed. + * Deparse ORDER BY clause defined by the given pathkeys. + * + * We find a suitable pathkey expression (some earlier step + * should have verified that there is one) and deparse it. */ static void appendOrderByClause(List *pathkeys, deparse_expr_cxt *context) { ListCell *lcell; int nestlevel; - char *delim = " "; - RelOptInfo *baserel = context->scanrel; + const char *delim = " "; StringInfo buf = context->buf; /* Make sure any constants in the exprs are printed portably */ @@ -3194,22 +3239,47 @@ foreach(lcell, pathkeys) { PathKey *pathkey = lfirst(lcell); + EquivalenceMember *em; Expr *em_expr; + Oid oprid; - em_expr = find_em_expr_for_rel(pathkey->pk_eclass, baserel); - Assert(em_expr != NULL); + em = find_em_for_rel(context->root, + pathkey->pk_eclass, + context->scanrel); + + /* + * We don't expect any error here; it would mean that shippability + * wasn't verified earlier. For the same reason, we don't recheck + * shippability of the sort operator. + */ + if (em == NULL) + elog(ERROR, "could not find pathkey item to sort"); + + em_expr = em->em_expr; + + /* + * Lookup the operator corresponding to the strategy in the opclass. + * The datatype used by the opfamily is not necessarily the same as + * the expression type (for array types for example). + */ + oprid = get_opfamily_member(pathkey->pk_opfamily, + em->em_datatype, + em->em_datatype, + pathkey->pk_strategy); + if (!OidIsValid(oprid)) + elog(ERROR, "missing operator %d(%u,%u) in opfamily %u", + pathkey->pk_strategy, em->em_datatype, em->em_datatype, + pathkey->pk_opfamily); appendStringInfoString(buf, delim); deparseExpr(em_expr, context); - if (pathkey->pk_strategy == BTLessStrategyNumber) - appendStringInfoString(buf, " ASC"); - else - appendStringInfoString(buf, " DESC"); - if (pathkey->pk_nulls_first) - appendStringInfoString(buf, " NULLS FIRST"); - else - appendStringInfoString(buf, " NULLS LAST"); + /* + * Here we need to use the expression's actual type to discover + * whether the desired operator will be the default or not. + */ + appendOrderBySuffix(oprid, exprType((Node *) em_expr), + pathkey->pk_nulls_first, context); delim = ", "; } diff -Nru postgresql-11-11.14/contrib/postgres_fdw/expected/postgres_fdw.out postgresql-11-11.16/contrib/postgres_fdw/expected/postgres_fdw.out --- postgresql-11-11.14/contrib/postgres_fdw/expected/postgres_fdw.out 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/postgres_fdw/expected/postgres_fdw.out 2022-05-09 21:20:11.000000000 +0000 @@ -3265,6 +3265,19 @@ Remote SQL: SELECT "C 1", c2 FROM "S 1"."T 1" WHERE (("C 1" < 100)) AND ((c2 = 6)) (6 rows) +-- This should not be pushed either. +explain (verbose, costs off) +select * from ft2 order by c1 using operator(public.<^); + QUERY PLAN +------------------------------------------------------------------------------- + Sort + Output: c1, c2, c3, c4, c5, c6, c7, c8 + Sort Key: ft2.c1 USING <^ + -> Foreign Scan on public.ft2 + Output: c1, c2, c3, c4, c5, c6, c7, c8 + Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" +(6 rows) + -- Add into extension alter extension postgres_fdw add operator class my_op_class using btree; alter extension postgres_fdw add function my_op_cmp(a int, b int); @@ -3290,6 +3303,16 @@ {6,16,26,36,46,56,66,76,86,96} (1 row) +-- This should be pushed too. +explain (verbose, costs off) +select * from ft2 order by c1 using operator(public.<^); + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------- + Foreign Scan on public.ft2 + Output: c1, c2, c3, c4, c5, c6, c7, c8 + Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" ORDER BY "C 1" USING OPERATOR(public.<^) NULLS LAST +(3 rows) + -- Remove from extension alter extension postgres_fdw drop operator class my_op_class using btree; alter extension postgres_fdw drop function my_op_cmp(a int, b int); diff -Nru postgresql-11-11.14/contrib/postgres_fdw/postgres_fdw.c postgresql-11-11.16/contrib/postgres_fdw/postgres_fdw.c --- postgresql-11-11.14/contrib/postgres_fdw/postgres_fdw.c 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/postgres_fdw/postgres_fdw.c 2022-05-09 21:20:11.000000000 +0000 @@ -17,6 +17,7 @@ #include "access/htup_details.h" #include "access/sysattr.h" #include "catalog/pg_class.h" +#include "catalog/pg_opfamily.h" #include "commands/defrem.h" #include "commands/explain.h" #include "commands/vacuum.h" @@ -825,8 +826,6 @@ foreach(lc, root->query_pathkeys) { PathKey *pathkey = (PathKey *) lfirst(lc); - EquivalenceClass *pathkey_ec = pathkey->pk_eclass; - Expr *em_expr; /* * The planner and executor don't have any clever strategy for @@ -834,13 +833,8 @@ * getting it to be sorted by all of those pathkeys. We'll just * end up resorting the entire data set. So, unless we can push * down all of the query pathkeys, forget it. - * - * is_foreign_expr would detect volatile expressions as well, but - * checking ec_has_volatile here saves some cycles. */ - if (pathkey_ec->ec_has_volatile || - !(em_expr = find_em_expr_for_rel(pathkey_ec, rel)) || - !is_foreign_expr(root, rel, em_expr)) + if (!is_foreign_pathkey(root, rel, pathkey)) { query_pathkeys_ok = false; break; @@ -884,16 +878,19 @@ foreach(lc, useful_eclass_list) { EquivalenceClass *cur_ec = lfirst(lc); - Expr *em_expr; PathKey *pathkey; /* If redundant with what we did above, skip it. */ if (cur_ec == query_ec) continue; + /* Can't push down the sort if the EC's opfamily is not shippable. */ + if (!is_shippable(linitial_oid(cur_ec->ec_opfamilies), + OperatorFamilyRelationId, fpinfo)) + continue; + /* If no pushable expression for this rel, skip it. */ - em_expr = find_em_expr_for_rel(cur_ec, rel); - if (em_expr == NULL || !is_foreign_expr(root, rel, em_expr)) + if (find_em_for_rel(root, cur_ec, rel) == NULL) continue; /* Looks like we can generate a pathkey, so let's do it. */ @@ -5916,30 +5913,35 @@ } /* - * Find an equivalence class member expression, all of whose Vars, come from - * the indicated relation. + * Given an EquivalenceClass and a foreign relation, find an EC member + * that can be used to sort the relation remotely according to a pathkey + * using this EC. + * + * If there is more than one suitable candidate, return an arbitrary + * one of them. If there is none, return NULL. + * + * This checks that the EC member expression uses only Vars from the given + * rel and is shippable. Caller must separately verify that the pathkey's + * ordering operator is shippable. */ -Expr * -find_em_expr_for_rel(EquivalenceClass *ec, RelOptInfo *rel) +EquivalenceMember * +find_em_for_rel(PlannerInfo *root, EquivalenceClass *ec, RelOptInfo *rel) { - ListCell *lc_em; + ListCell *lc; - foreach(lc_em, ec->ec_members) + foreach(lc, ec->ec_members) { - EquivalenceMember *em = lfirst(lc_em); + EquivalenceMember *em = (EquivalenceMember *) lfirst(lc); + /* + * Note we require !bms_is_empty, else we'd accept constant + * expressions which are not suitable for the purpose. + */ if (bms_is_subset(em->em_relids, rel->relids) && - !bms_is_empty(em->em_relids)) - { - /* - * If there is more than one equivalence member whose Vars are - * taken entirely from this relation, we'll be content to choose - * any one of those. - */ - return em->em_expr; - } + !bms_is_empty(em->em_relids) && + is_foreign_expr(root, rel, em->em_expr)) + return em; } - /* We didn't find any suitable equivalence class expression */ return NULL; } diff -Nru postgresql-11-11.14/contrib/postgres_fdw/postgres_fdw.h postgresql-11-11.16/contrib/postgres_fdw/postgres_fdw.h --- postgresql-11-11.14/contrib/postgres_fdw/postgres_fdw.h 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/postgres_fdw/postgres_fdw.h 2022-05-09 21:20:11.000000000 +0000 @@ -143,6 +143,9 @@ extern bool is_foreign_param(PlannerInfo *root, RelOptInfo *baserel, Expr *expr); +extern bool is_foreign_pathkey(PlannerInfo *root, + RelOptInfo *baserel, + PathKey *pathkey); extern void deparseInsertSql(StringInfo buf, RangeTblEntry *rte, Index rtindex, Relation rel, List *targetAttrs, bool doNothing, List *returningList, @@ -175,7 +178,9 @@ extern void deparseAnalyzeSql(StringInfo buf, Relation rel, List **retrieved_attrs); extern void deparseStringLiteral(StringInfo buf, const char *val); -extern Expr *find_em_expr_for_rel(EquivalenceClass *ec, RelOptInfo *rel); +extern EquivalenceMember *find_em_for_rel(PlannerInfo *root, + EquivalenceClass *ec, + RelOptInfo *rel); extern List *build_tlist_to_deparse(RelOptInfo *foreignrel); extern void deparseSelectStmtForRel(StringInfo buf, PlannerInfo *root, RelOptInfo *foreignrel, List *tlist, diff -Nru postgresql-11-11.14/contrib/postgres_fdw/sql/postgres_fdw.sql postgresql-11-11.16/contrib/postgres_fdw/sql/postgres_fdw.sql --- postgresql-11-11.14/contrib/postgres_fdw/sql/postgres_fdw.sql 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/postgres_fdw/sql/postgres_fdw.sql 2022-05-09 21:20:11.000000000 +0000 @@ -825,6 +825,10 @@ explain (verbose, costs off) select array_agg(c1 order by c1 using operator(public.<^)) from ft2 where c2 = 6 and c1 < 100 group by c2; +-- This should not be pushed either. +explain (verbose, costs off) +select * from ft2 order by c1 using operator(public.<^); + -- Add into extension alter extension postgres_fdw add operator class my_op_class using btree; alter extension postgres_fdw add function my_op_cmp(a int, b int); @@ -839,6 +843,10 @@ select array_agg(c1 order by c1 using operator(public.<^)) from ft2 where c2 = 6 and c1 < 100 group by c2; select array_agg(c1 order by c1 using operator(public.<^)) from ft2 where c2 = 6 and c1 < 100 group by c2; +-- This should be pushed too. +explain (verbose, costs off) +select * from ft2 order by c1 using operator(public.<^); + -- Remove from extension alter extension postgres_fdw drop operator class my_op_class using btree; alter extension postgres_fdw drop function my_op_cmp(a int, b int); diff -Nru postgresql-11-11.14/contrib/seg/segparse.c postgresql-11-11.16/contrib/seg/segparse.c --- postgresql-11-11.14/contrib/seg/segparse.c 2021-11-08 22:22:12.000000000 +0000 +++ postgresql-11-11.16/contrib/seg/segparse.c 2022-05-09 21:37:43.000000000 +0000 @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.3.2. */ +/* A Bison parser, made by GNU Bison 3.7.5. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -34,6 +34,10 @@ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. @@ -41,14 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - -/* Identify Bison output. */ -#define YYBISON 1 +/* Identify Bison output, and Bison version. */ +#define YYBISON 30705 -/* Bison version. */ -#define YYBISON_VERSION "3.3.2" +/* Bison version string. */ +#define YYBISON_VERSION "3.7.5" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -69,12 +70,11 @@ #define yyerror seg_yyerror #define yydebug seg_yydebug #define yynerrs seg_yynerrs - #define yylval seg_yylval #define yychar seg_yychar /* First part of user prologue. */ -#line 1 "segparse.y" /* yacc.c:337 */ +#line 1 "segparse.y" /* contrib/seg/segparse.y */ @@ -109,7 +109,17 @@ }; -#line 113 "segparse.c" /* yacc.c:337 */ +#line 113 "segparse.c" + +# ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) +# else +# define YY_CAST(Type, Val) ((Type) (Val)) +# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +# endif # ifndef YY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus @@ -122,14 +132,6 @@ # endif # endif -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - /* Debug traces. */ #ifndef YYDEBUG @@ -139,24 +141,28 @@ extern int seg_yydebug; #endif -/* Token type. */ +/* Token kinds. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { - SEGFLOAT = 258, - RANGE = 259, - PLUMIN = 260, - EXTENSION = 261 + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + SEGFLOAT = 258, /* SEGFLOAT */ + RANGE = 259, /* RANGE */ + PLUMIN = 260, /* PLUMIN */ + EXTENSION = 261 /* EXTENSION */ }; + typedef enum yytokentype yytoken_kind_t; #endif /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - union YYSTYPE { -#line 41 "segparse.y" /* yacc.c:352 */ +#line 41 "segparse.y" struct BND { float val; @@ -165,9 +171,9 @@ } bnd; char * text; -#line 169 "segparse.c" /* yacc.c:352 */ -}; +#line 175 "segparse.c" +}; typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 @@ -179,6 +185,24 @@ int seg_yyparse (SEG *result); +/* Symbol kind. */ +enum yysymbol_kind_t +{ + YYSYMBOL_YYEMPTY = -2, + YYSYMBOL_YYEOF = 0, /* "end of file" */ + YYSYMBOL_YYerror = 1, /* error */ + YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ + YYSYMBOL_SEGFLOAT = 3, /* SEGFLOAT */ + YYSYMBOL_RANGE = 4, /* RANGE */ + YYSYMBOL_PLUMIN = 5, /* PLUMIN */ + YYSYMBOL_EXTENSION = 6, /* EXTENSION */ + YYSYMBOL_YYACCEPT = 7, /* $accept */ + YYSYMBOL_range = 8, /* range */ + YYSYMBOL_boundary = 9, /* boundary */ + YYSYMBOL_deviation = 10 /* deviation */ +}; +typedef enum yysymbol_kind_t yysymbol_kind_t; + @@ -186,28 +210,87 @@ # undef short #endif -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; +/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure + and (if available) are included + so that the code can choose integer types of a good width. */ + +#ifndef __PTRDIFF_MAX__ +# include /* INFRINGES ON USER NAME SPACE */ +# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_STDINT_H +# endif #endif -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; +/* Narrow types that promote to a signed type and that can represent a + signed or unsigned integer of at least N bits. In tables they can + save space and decrease cache pressure. Promoting to a signed type + helps avoid bugs in integer arithmetic. */ + +#ifdef __INT_LEAST8_MAX__ +typedef __INT_LEAST8_TYPE__ yytype_int8; +#elif defined YY_STDINT_H +typedef int_least8_t yytype_int8; #else typedef signed char yytype_int8; #endif -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; +#ifdef __INT_LEAST16_MAX__ +typedef __INT_LEAST16_TYPE__ yytype_int16; +#elif defined YY_STDINT_H +typedef int_least16_t yytype_int16; #else -typedef unsigned short yytype_uint16; +typedef short yytype_int16; #endif -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; +/* Work around bug in HP-UX 11.23, which defines these macros + incorrectly for preprocessor constants. This workaround can likely + be removed in 2023, as HPE has promised support for HP-UX 11.23 + (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of + . */ +#ifdef __hpux +# undef UINT_LEAST8_MAX +# undef UINT_LEAST16_MAX +# define UINT_LEAST8_MAX 255 +# define UINT_LEAST16_MAX 65535 +#endif + +#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST8_TYPE__ yytype_uint8; +#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST8_MAX <= INT_MAX) +typedef uint_least8_t yytype_uint8; +#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX +typedef unsigned char yytype_uint8; #else -typedef short yytype_int16; +typedef short yytype_uint8; +#endif + +#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST16_TYPE__ yytype_uint16; +#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST16_MAX <= INT_MAX) +typedef uint_least16_t yytype_uint16; +#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX +typedef unsigned short yytype_uint16; +#else +typedef int yytype_uint16; +#endif + +#ifndef YYPTRDIFF_T +# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ +# define YYPTRDIFF_T __PTRDIFF_TYPE__ +# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ +# elif defined PTRDIFF_MAX +# ifndef ptrdiff_t +# include /* INFRINGES ON USER NAME SPACE */ +# endif +# define YYPTRDIFF_T ptrdiff_t +# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX +# else +# define YYPTRDIFF_T long +# define YYPTRDIFF_MAXIMUM LONG_MAX +# endif #endif #ifndef YYSIZE_T @@ -215,7 +298,7 @@ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T +# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -223,7 +306,20 @@ # endif #endif -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) +#define YYSIZE_MAXIMUM \ + YY_CAST (YYPTRDIFF_T, \ + (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ + ? YYPTRDIFF_MAXIMUM \ + : YY_CAST (YYSIZE_T, -1))) + +#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + + +/* Stored state numbers (used for stacks). */ +typedef yytype_int8 yy_state_t; + +/* State numbers in computations. */ +typedef int yy_state_fast_t; #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS @@ -237,38 +333,37 @@ # endif #endif -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) -# else -# define YY_ATTRIBUTE(Spec) /* empty */ -# endif -#endif #ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define YY_ATTRIBUTE_PURE +# endif #endif #ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define YY_ATTRIBUTE_UNUSED +# endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) +# define YY_USE(E) ((void) (E)) #else -# define YYUSE(E) /* empty */ +# define YY_USE(E) /* empty */ #endif #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value @@ -281,8 +376,22 @@ # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif +#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ +# define YY_IGNORE_USELESS_CAST_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") +# define YY_IGNORE_USELESS_CAST_END \ + _Pragma ("GCC diagnostic pop") +#endif +#ifndef YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_END +#endif + + +#define YY_ASSERT(E) ((void) (0 && (E))) -#if ! defined yyoverflow || YYERROR_VERBOSE +#if !defined yyoverflow /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -347,8 +456,7 @@ # endif # endif # endif -#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ - +#endif /* !defined yyoverflow */ #if (! defined yyoverflow \ && (! defined __cplusplus \ @@ -357,17 +465,17 @@ /* A type that is properly aligned for any stack member. */ union yyalloc { - yytype_int16 yyss_alloc; + yy_state_t yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) +# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 @@ -380,11 +488,11 @@ # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ - YYSIZE_T yynewbytes; \ + YYPTRDIFF_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ + yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / YYSIZEOF (*yyptr); \ } \ while (0) @@ -396,12 +504,12 @@ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) + __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ - YYSIZE_T yyi; \ + YYPTRDIFF_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ @@ -424,17 +532,20 @@ /* YYNSTATES -- Number of states. */ #define YYNSTATES 14 -#define YYUNDEFTOK 2 +/* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 261 + /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ -#define YYTRANSLATE(YYX) \ - ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) +#define YYTRANSLATE(YYX) \ + (0 <= (YYX) && (YYX) <= YYMAXUTOK \ + ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ + : YYSYMBOL_YYUNDEF) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ -static const yytype_uint8 yytranslate[] = +static const yytype_int8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -473,33 +584,46 @@ }; #endif -#if YYDEBUG || YYERROR_VERBOSE || 0 +/** Accessing symbol of state STATE. */ +#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) + +#if YYDEBUG || 0 +/* The user-facing name of the symbol whose (internal) number is + YYSYMBOL. No bounds checking. */ +static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; + /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "SEGFLOAT", "RANGE", "PLUMIN", - "EXTENSION", "$accept", "range", "boundary", "deviation", YY_NULLPTR + "\"end of file\"", "error", "\"invalid token\"", "SEGFLOAT", "RANGE", + "PLUMIN", "EXTENSION", "$accept", "range", "boundary", "deviation", YY_NULLPTR }; + +static const char * +yysymbol_name (yysymbol_kind_t yysymbol) +{ + return yytname[yysymbol]; +} #endif -# ifdef YYPRINT +#ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ -static const yytype_uint16 yytoknum[] = +static const yytype_int16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261 }; -# endif +#endif -#define YYPACT_NINF -3 +#define YYPACT_NINF (-3) -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-3))) +#define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF -1 +#define YYTABLE_NINF (-1) -#define yytable_value_is_error(Yytable_value) \ +#define yytable_value_is_error(Yyn) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing @@ -513,7 +637,7 @@ /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ -static const yytype_uint8 yydefact[] = +static const yytype_int8 yydefact[] = { 0, 7, 0, 0, 0, 6, 5, 8, 1, 4, 0, 3, 9, 2 @@ -528,13 +652,13 @@ /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { - -1, 4, 5, 13 + 0, 4, 5, 13 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_uint8 yytable[] = +static const yytype_int8 yytable[] = { 6, 0, 1, 2, 7, 3, 1, 11, 8, 3, 9, 10, 12 @@ -548,29 +672,29 @@ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ -static const yytype_uint8 yystos[] = +static const yytype_int8 yystos[] = { 0, 3, 4, 6, 8, 9, 9, 3, 0, 4, 5, 9, 3, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = +static const yytype_int8 yyr1[] = { 0, 7, 8, 8, 8, 8, 8, 9, 9, 10 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = +static const yytype_int8 yyr2[] = { 0, 2, 3, 3, 2, 2, 1, 1, 2, 1 }; +enum { YYENOMEM = -2 }; + #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab @@ -596,10 +720,9 @@ } \ while (0) -/* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 - +/* Backward compatibility with an undocumented macro. + Use YYerror or YYUNDEF. */ +#define YYERRCODE YYUNDEF /* Enable debugging if requested. */ @@ -617,18 +740,18 @@ } while (0) /* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif +# ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ - Type, Value, result); \ + Kind, Value, result); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) @@ -639,18 +762,21 @@ `-----------------------------------*/ static void -yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, SEG *result) +yy_symbol_value_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, SEG *result) { FILE *yyoutput = yyo; - YYUSE (yyoutput); - YYUSE (result); + YY_USE (yyoutput); + YY_USE (result); if (!yyvaluep) return; # ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyo, yytoknum[yytype], *yyvaluep); + if (yykind < YYNTOKENS) + YYPRINT (yyo, yytoknum[yykind], *yyvaluep); # endif - YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YY_USE (yykind); + YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -659,12 +785,13 @@ `---------------------------*/ static void -yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, SEG *result) +yy_symbol_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, SEG *result) { YYFPRINTF (yyo, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); + yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); - yy_symbol_value_print (yyo, yytype, yyvaluep, result); + yy_symbol_value_print (yyo, yykind, yyvaluep, result); YYFPRINTF (yyo, ")"); } @@ -674,7 +801,7 @@ `------------------------------------------------------------------*/ static void -yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -697,21 +824,21 @@ `------------------------------------------------*/ static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, SEG *result) +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, + int yyrule, SEG *result) { - unsigned long yylno = yyrline[yyrule]; + int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], - &yyvsp[(yyi + 1) - (yynrhs)] - , result); + YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), + &yyvsp[(yyi + 1) - (yynrhs)], result); YYFPRINTF (stderr, "\n"); } } @@ -726,8 +853,8 @@ multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YYDPRINTF(Args) ((void) 0) +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ @@ -750,255 +877,31 @@ #endif -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -static YYSIZE_T -yystrlen (const char *yystr) -{ - YYSIZE_T yylen; - for (yylen = 0; yystr[yylen]; yylen++) - continue; - return yylen; -} -# endif -# endif - -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -yystpcpy (char *yydest, const char *yysrc) -{ - char *yyd = yydest; - const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif -# ifndef yytnamerr -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). YYSTR is taken from yytname. If YYRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static YYSIZE_T -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - YYSIZE_T yyn = 0; - char const *yyp = yystr; - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - else - goto append; - - append: - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - if (! yyres) - return yystrlen (yystr); - - return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); -} -# endif - -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP. - - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store. */ -static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - yytype_int16 *yyssp, int yytoken) -{ - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - YYSIZE_T yysize = yysize0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat. */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ - int yycount = 0; - - /* There are many possibilities here to consider: - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[*yyssp]; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; - } - } - } - } - - switch (yycount) - { -# define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - default: /* Avoid compiler warnings. */ - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ - } - - { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; - } - - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } - - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - char *yyp = *yymsg; - int yyi = 0; - while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - yyp++; - yyformat++; - } - } - return 0; -} -#endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, SEG *result) +yydestruct (const char *yymsg, + yysymbol_kind_t yykind, YYSTYPE *yyvaluep, SEG *result) { - YYUSE (yyvaluep); - YYUSE (result); + YY_USE (yyvaluep); + YY_USE (result); if (!yymsg) yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); + YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } - - -/* The lookahead symbol. */ +/* Lookahead token kind. */ int yychar; /* The semantic value of the lookahead symbol. */ @@ -1007,6 +910,8 @@ int yynerrs; + + /*----------. | yyparse. | `----------*/ @@ -1014,43 +919,36 @@ int yyparse (SEG *result) { - int yystate; + yy_state_fast_t yystate = 0; /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. + int yyerrstatus = 0; - Refer to the stacks through separate pointers, to allow yyoverflow + /* Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; + /* Their size. */ + YYPTRDIFF_T yystacksize = YYINITDEPTH; - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; + /* The state stack: array, bottom, top. */ + yy_state_t yyssa[YYINITDEPTH]; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; - YYSIZE_T yystacksize; + /* The semantic value stack: array, bottom, top. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; int yyn; + /* The return value of yyparse. */ int yyresult; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; + /* Lookahead symbol kind. */ + yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif + #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) @@ -1058,15 +956,8 @@ Keep to zero when no symbol should be popped. */ int yylen = 0; - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - yystacksize = YYINITDEPTH; - YYDPRINTF ((stderr, "Starting parse\n")); - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; @@ -1081,10 +972,15 @@ /*--------------------------------------------------------------------. -| yynewstate -- set current state (the top of the stack) to yystate. | +| yysetstate -- set current state (the top of the stack) to yystate. | `--------------------------------------------------------------------*/ yysetstate: - *yyssp = (yytype_int16) yystate; + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + YY_ASSERT (0 <= yystate && yystate < YYNSTATES); + YY_IGNORE_USELESS_CAST_BEGIN + *yyssp = YY_CAST (yy_state_t, yystate); + YY_IGNORE_USELESS_CAST_END + YY_STACK_PRINT (yyss, yyssp); if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE @@ -1092,23 +988,23 @@ #else { /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); + YYPTRDIFF_T yysize = yyssp - yyss + 1; # if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ + yy_state_t *yyss1 = yyss; YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), + &yyss1, yysize * YYSIZEOF (*yyssp), + &yyvs1, yysize * YYSIZEOF (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; @@ -1122,14 +1018,15 @@ yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; + yy_state_t *yyss1 = yyss; union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + YY_CAST (union yyalloc *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE +# undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } @@ -1138,16 +1035,16 @@ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long) yystacksize)); + YY_IGNORE_USELESS_CAST_BEGIN + YYDPRINTF ((stderr, "Stack size increased to %ld\n", + YY_CAST (long, yystacksize))); + YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) YYABORT; } #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - if (yystate == YYFINAL) YYACCEPT; @@ -1168,18 +1065,29 @@ /* Not known => get a lookahead token if don't already have one. */ - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ if (yychar == YYEMPTY) { - YYDPRINTF ((stderr, "Reading a token: ")); + YYDPRINTF ((stderr, "Reading a token\n")); yychar = yylex (); } if (yychar <= YYEOF) { - yychar = yytoken = YYEOF; + yychar = YYEOF; + yytoken = YYSYMBOL_YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } + else if (yychar == YYerror) + { + /* The scanner already issued an error message, process directly + to error recovery. But do not keep the error token as + lookahead, it is too special and may lead us to an endless + loop in error recovery. */ + yychar = YYUNDEF; + yytoken = YYSYMBOL_YYerror; + goto yyerrlab1; + } else { yytoken = YYTRANSLATE (yychar); @@ -1207,15 +1115,13 @@ /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token. */ - yychar = YYEMPTY; - yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END + /* Discard the shifted token. */ + yychar = YYEMPTY; goto yynewstate; @@ -1250,9 +1156,9 @@ YY_REDUCE_PRINT (yyn); switch (yyn) { - case 2: -#line 62 "segparse.y" /* yacc.c:1652 */ - { + case 2: /* range: boundary PLUMIN deviation */ +#line 62 "segparse.y" + { result->lower = (yyvsp[-2].bnd).val - (yyvsp[0].bnd).val; result->upper = (yyvsp[-2].bnd).val + (yyvsp[0].bnd).val; sprintf(strbuf, "%g", result->lower); @@ -1262,12 +1168,12 @@ result->l_ext = '\0'; result->u_ext = '\0'; } -#line 1266 "segparse.c" /* yacc.c:1652 */ +#line 1172 "segparse.c" break; - case 3: -#line 74 "segparse.y" /* yacc.c:1652 */ - { + case 3: /* range: boundary RANGE boundary */ +#line 74 "segparse.y" + { result->lower = (yyvsp[-2].bnd).val; result->upper = (yyvsp[0].bnd).val; if ( result->lower > result->upper ) { @@ -1283,12 +1189,12 @@ result->l_ext = ( (yyvsp[-2].bnd).ext ? (yyvsp[-2].bnd).ext : '\0' ); result->u_ext = ( (yyvsp[0].bnd).ext ? (yyvsp[0].bnd).ext : '\0' ); } -#line 1287 "segparse.c" /* yacc.c:1652 */ +#line 1193 "segparse.c" break; - case 4: -#line 92 "segparse.y" /* yacc.c:1652 */ - { + case 4: /* range: boundary RANGE */ +#line 92 "segparse.y" + { result->lower = (yyvsp[-1].bnd).val; result->upper = HUGE_VAL; result->l_sigd = (yyvsp[-1].bnd).sigd; @@ -1296,12 +1202,12 @@ result->l_ext = ( (yyvsp[-1].bnd).ext ? (yyvsp[-1].bnd).ext : '\0' ); result->u_ext = '-'; } -#line 1300 "segparse.c" /* yacc.c:1652 */ +#line 1206 "segparse.c" break; - case 5: -#line 102 "segparse.y" /* yacc.c:1652 */ - { + case 5: /* range: RANGE boundary */ +#line 102 "segparse.y" + { result->lower = -HUGE_VAL; result->upper = (yyvsp[0].bnd).val; result->l_sigd = 0; @@ -1309,22 +1215,22 @@ result->l_ext = '-'; result->u_ext = ( (yyvsp[0].bnd).ext ? (yyvsp[0].bnd).ext : '\0' ); } -#line 1313 "segparse.c" /* yacc.c:1652 */ +#line 1219 "segparse.c" break; - case 6: -#line 112 "segparse.y" /* yacc.c:1652 */ - { + case 6: /* range: boundary */ +#line 112 "segparse.y" + { result->lower = result->upper = (yyvsp[0].bnd).val; result->l_sigd = result->u_sigd = (yyvsp[0].bnd).sigd; result->l_ext = result->u_ext = ( (yyvsp[0].bnd).ext ? (yyvsp[0].bnd).ext : '\0' ); } -#line 1323 "segparse.c" /* yacc.c:1652 */ +#line 1229 "segparse.c" break; - case 7: -#line 120 "segparse.y" /* yacc.c:1652 */ - { + case 7: /* boundary: SEGFLOAT */ +#line 120 "segparse.y" + { /* temp variable avoids a gcc 3.3.x bug on Sparc64 */ float val = seg_atof((yyvsp[0].text)); @@ -1332,12 +1238,12 @@ (yyval.bnd).sigd = significant_digits((yyvsp[0].text)); (yyval.bnd).val = val; } -#line 1336 "segparse.c" /* yacc.c:1652 */ +#line 1242 "segparse.c" break; - case 8: -#line 129 "segparse.y" /* yacc.c:1652 */ - { + case 8: /* boundary: EXTENSION SEGFLOAT */ +#line 129 "segparse.y" + { /* temp variable avoids a gcc 3.3.x bug on Sparc64 */ float val = seg_atof((yyvsp[0].text)); @@ -1345,12 +1251,12 @@ (yyval.bnd).sigd = significant_digits((yyvsp[0].text)); (yyval.bnd).val = val; } -#line 1349 "segparse.c" /* yacc.c:1652 */ +#line 1255 "segparse.c" break; - case 9: -#line 140 "segparse.y" /* yacc.c:1652 */ - { + case 9: /* deviation: SEGFLOAT */ +#line 140 "segparse.y" + { /* temp variable avoids a gcc 3.3.x bug on Sparc64 */ float val = seg_atof((yyvsp[0].text)); @@ -1358,11 +1264,12 @@ (yyval.bnd).sigd = significant_digits((yyvsp[0].text)); (yyval.bnd).val = val; } -#line 1362 "segparse.c" /* yacc.c:1652 */ +#line 1268 "segparse.c" break; -#line 1366 "segparse.c" /* yacc.c:1652 */ +#line 1272 "segparse.c" + default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -1376,11 +1283,10 @@ case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; - YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; @@ -1404,50 +1310,14 @@ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - + yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; -#if ! YYERROR_VERBOSE yyerror (result, YY_("syntax error")); -#else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ - yyssp, yytoken) - { - char const *yymsgp = YY_("syntax error"); - int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; - if (yysyntax_error_status == 0) - yymsgp = yymsg; - else if (yysyntax_error_status == 1) - { - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); - if (!yymsg) - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } - else - { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; - } - } - yyerror (result, yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; - } -# undef YYSYNTAX_ERROR -#endif } - - if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an @@ -1496,13 +1366,14 @@ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ + /* Pop stack until we find a state that shifts the error token. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + yyn += YYSYMBOL_YYerror; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) { yyn = yytable[yyn]; if (0 < yyn) @@ -1516,7 +1387,7 @@ yydestruct ("Error: popping", - yystos[yystate], yyvsp, result); + YY_ACCESSING_SYMBOL (yystate), yyvsp, result); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -1528,7 +1399,7 @@ /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); yystate = yyn; goto yynewstate; @@ -1550,20 +1421,20 @@ goto yyreturn; -#if !defined yyoverflow || YYERROR_VERBOSE +#if !defined yyoverflow /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (result, YY_("memory exhausted")); yyresult = 2; - /* Fall through. */ + goto yyreturn; #endif -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ +/*-------------------------------------------------------. +| yyreturn -- parsing is finished, clean up and return. | +`-------------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -1580,20 +1451,18 @@ while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp, result); + YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, result); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif -#if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); -#endif + return yyresult; } -#line 150 "segparse.y" /* yacc.c:1918 */ + +#line 150 "segparse.y" diff -Nru postgresql-11-11.14/contrib/test_decoding/expected/replorigin.out postgresql-11-11.16/contrib/test_decoding/expected/replorigin.out --- postgresql-11-11.14/contrib/test_decoding/expected/replorigin.out 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/test_decoding/expected/replorigin.out 2022-05-09 21:20:11.000000000 +0000 @@ -152,3 +152,79 @@ (1 row) +-- Set of transactions with no origin LSNs and commit timestamps set for +-- this session. +SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot_no_lsn', 'test_decoding'); + ?column? +---------- + init +(1 row) + +SELECT pg_replication_origin_create('regress_test_decoding: regression_slot_no_lsn'); + pg_replication_origin_create +------------------------------ + 1 +(1 row) + +-- mark session as replaying +SELECT pg_replication_origin_session_setup('regress_test_decoding: regression_slot_no_lsn'); + pg_replication_origin_session_setup +------------------------------------- + +(1 row) + +-- Simple transactions +BEGIN; +INSERT INTO origin_tbl(data) VALUES ('no_lsn, commit'); +COMMIT; +BEGIN; +INSERT INTO origin_tbl(data) VALUES ('no_lsn, rollback'); +ROLLBACK; +-- 2PC transactions +BEGIN; +INSERT INTO origin_tbl(data) VALUES ('no_lsn, commit prepared'); +PREPARE TRANSACTION 'replorigin_prepared'; +COMMIT PREPARED 'replorigin_prepared'; +BEGIN; +INSERT INTO origin_tbl(data) VALUES ('no_lsn, rollback prepared'); +PREPARE TRANSACTION 'replorigin_prepared'; +ROLLBACK PREPARED 'replorigin_prepared'; +SELECT local_id, external_id, + remote_lsn <> '0/0' AS valid_remote_lsn, + local_lsn <> '0/0' AS valid_local_lsn + FROM pg_replication_origin_status; + local_id | external_id | valid_remote_lsn | valid_local_lsn +----------+-----------------------------------------------+------------------+----------------- + 1 | regress_test_decoding: regression_slot_no_lsn | f | t +(1 row) + +SELECT data FROM pg_logical_slot_get_changes('regression_slot_no_lsn', NULL, NULL, 'skip-empty-xacts', '1', 'include-xids', '0'); + data +------------------------------------------------------------------------------------- + BEGIN + table public.origin_tbl: INSERT: id[integer]:4 data[text]:'no_lsn, commit' + COMMIT + BEGIN + table public.origin_tbl: INSERT: id[integer]:6 data[text]:'no_lsn, commit prepared' + COMMIT +(6 rows) + +-- Clean up +SELECT pg_replication_origin_session_reset(); + pg_replication_origin_session_reset +------------------------------------- + +(1 row) + +SELECT pg_drop_replication_slot('regression_slot_no_lsn'); + pg_drop_replication_slot +-------------------------- + +(1 row) + +SELECT pg_replication_origin_drop('regress_test_decoding: regression_slot_no_lsn'); + pg_replication_origin_drop +---------------------------- + +(1 row) + diff -Nru postgresql-11-11.14/contrib/test_decoding/expected/toast.out postgresql-11-11.16/contrib/test_decoding/expected/toast.out --- postgresql-11-11.14/contrib/test_decoding/expected/toast.out 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/test_decoding/expected/toast.out 2022-05-09 21:20:11.000000000 +0000 @@ -77,7 +77,7 @@ table public.toasted_key: INSERT: id[integer]:1 toasted_key[text]:'1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123 COMMIT BEGIN - table public.toasted_key: UPDATE: id[integer]:1 toasted_key[text]:unchanged-toast-datum toasted_col1[text]:unchanged-toast-datum toasted_col2[text]:'987654321098765432109876543210987654321098765432109 + table public.toasted_key: UPDATE: old-key: toasted_key[text]:'123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678 COMMIT BEGIN table public.toasted_key: UPDATE: old-key: toasted_key[text]:'123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678 diff -Nru postgresql-11-11.14/contrib/test_decoding/sql/replorigin.sql postgresql-11-11.16/contrib/test_decoding/sql/replorigin.sql --- postgresql-11-11.14/contrib/test_decoding/sql/replorigin.sql 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/contrib/test_decoding/sql/replorigin.sql 2022-05-09 21:20:11.000000000 +0000 @@ -69,3 +69,35 @@ SELECT pg_drop_replication_slot('regression_slot'); SELECT pg_replication_origin_drop('test_decoding: regression_slot'); + +-- Set of transactions with no origin LSNs and commit timestamps set for +-- this session. +SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot_no_lsn', 'test_decoding'); +SELECT pg_replication_origin_create('regress_test_decoding: regression_slot_no_lsn'); +-- mark session as replaying +SELECT pg_replication_origin_session_setup('regress_test_decoding: regression_slot_no_lsn'); +-- Simple transactions +BEGIN; +INSERT INTO origin_tbl(data) VALUES ('no_lsn, commit'); +COMMIT; +BEGIN; +INSERT INTO origin_tbl(data) VALUES ('no_lsn, rollback'); +ROLLBACK; +-- 2PC transactions +BEGIN; +INSERT INTO origin_tbl(data) VALUES ('no_lsn, commit prepared'); +PREPARE TRANSACTION 'replorigin_prepared'; +COMMIT PREPARED 'replorigin_prepared'; +BEGIN; +INSERT INTO origin_tbl(data) VALUES ('no_lsn, rollback prepared'); +PREPARE TRANSACTION 'replorigin_prepared'; +ROLLBACK PREPARED 'replorigin_prepared'; +SELECT local_id, external_id, + remote_lsn <> '0/0' AS valid_remote_lsn, + local_lsn <> '0/0' AS valid_local_lsn + FROM pg_replication_origin_status; +SELECT data FROM pg_logical_slot_get_changes('regression_slot_no_lsn', NULL, NULL, 'skip-empty-xacts', '1', 'include-xids', '0'); +-- Clean up +SELECT pg_replication_origin_session_reset(); +SELECT pg_drop_replication_slot('regression_slot_no_lsn'); +SELECT pg_replication_origin_drop('regress_test_decoding: regression_slot_no_lsn'); diff -Nru postgresql-11-11.14/debian/changelog postgresql-11-11.16/debian/changelog --- postgresql-11-11.14/debian/changelog 2021-11-11 11:53:26.000000000 +0000 +++ postgresql-11-11.16/debian/changelog 2022-05-11 13:15:30.000000000 +0000 @@ -1,3 +1,23 @@ +postgresql-11 (11.16-0+deb10u1) buster-security; urgency=medium + + * New upstream release. + + * Confine additional operations within security restricted operation + sandboxes (Sergey Shinderuk, Noah Misch) + + Autovacuum, CLUSTER, CREATE INDEX, REINDEX, REFRESH MATERIALIZED VIEW, + and pg_amcheck activated the security restricted operation protection + mechanism too late, or even not at all in some code paths. A user having + permission to create non-temporary objects within a database could + define an object that would execute arbitrary SQL code with superuser + permissions the next time that autovacuum processed the object, or that + some superuser ran one of the affected commands against it. + + The PostgreSQL Project thanks Alexander Lakhin for reporting this + problem. (CVE-2022-1552) + + -- Christoph Berg Wed, 11 May 2022 15:15:30 +0200 + postgresql-11 (11.14-0+deb10u1) buster-security; urgency=medium * New upstream security release. diff -Nru postgresql-11-11.14/doc/bug.template postgresql-11-11.16/doc/bug.template --- postgresql-11-11.14/doc/bug.template 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/doc/bug.template 2022-05-09 21:20:11.000000000 +0000 @@ -27,7 +27,7 @@ Operating System (example: Linux 2.4.18) : - PostgreSQL version (example: PostgreSQL 11.14): PostgreSQL 11.14 + PostgreSQL version (example: PostgreSQL 11.16): PostgreSQL 11.16 Compiler used (example: gcc 3.3.5) : diff -Nru postgresql-11-11.14/doc/src/sgml/arch-dev.sgml postgresql-11-11.16/doc/src/sgml/arch-dev.sgml --- postgresql-11-11.14/doc/src/sgml/arch-dev.sgml 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/arch-dev.sgml 2022-05-09 21:20:11.000000000 +0000 @@ -557,7 +557,7 @@ A simple INSERT ... VALUES command creates a trivial plan tree consisting of a single Result node, which computes just one result row, feeding that up - toModifyTable to perform the insertion. + to ModifyTable to perform the insertion. diff -Nru postgresql-11-11.14/doc/src/sgml/config.sgml postgresql-11-11.16/doc/src/sgml/config.sgml --- postgresql-11-11.14/doc/src/sgml/config.sgml 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/config.sgml 2022-05-09 21:20:11.000000000 +0000 @@ -1143,7 +1143,7 @@ - Specifies the name of the file containing the SSL server certificate + Specifies the name of the file containing the SSL client certificate revocation list (CRL). Relative paths are relative to the data directory. This parameter can only be set in the postgresql.conf diff -Nru postgresql-11-11.14/doc/src/sgml/datetime.sgml postgresql-11-11.16/doc/src/sgml/datetime.sgml --- postgresql-11-11.14/doc/src/sgml/datetime.sgml 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/datetime.sgml 2022-05-09 21:20:11.000000000 +0000 @@ -210,27 +210,25 @@ Conversely, consider the behavior during a fall-back transition: -=> SELECT '2018-11-04 02:30'::timestamptz; +=> SELECT '2018-11-04 01:30'::timestamptz; timestamptz ------------------------ - 2018-11-04 02:30:00-05 + 2018-11-04 01:30:00-05 (1 row) - On that date, there were two possible interpretations of 2:30AM; there - was 2:30AM EDT, and then an hour later after the reversion to standard - time, there was 2:30AM EST. + On that date, there were two possible interpretations of 1:30AM; there + was 1:30AM EDT, and then an hour later after clocks jumped back from + 2AM EDT to 1AM EST, there was 1:30AM EST. Again, PostgreSQL interprets the given time - as if it were standard time (UTC-5). We can force the matter by - specifying daylight-savings time: + as if it were standard time (UTC-5). We can force the other + interpretation by specifying daylight-savings time: -=> SELECT '2018-11-04 02:30 EDT'::timestamptz; +=> SELECT '2018-11-04 01:30 EDT'::timestamptz; timestamptz ------------------------ - 2018-11-04 01:30:00-05 + 2018-11-04 01:30:00-04 (1 row) - This timestamp could validly be rendered as either 2:30 UTC-4 or - 1:30 UTC-5; the timestamp output code chooses the latter. diff -Nru postgresql-11-11.14/doc/src/sgml/ddl.sgml postgresql-11-11.16/doc/src/sgml/ddl.sgml --- postgresql-11-11.14/doc/src/sgml/ddl.sgml 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/ddl.sgml 2022-05-09 21:20:11.000000000 +0000 @@ -3123,9 +3123,12 @@ - Partitions can also be foreign tables, although they have some limitations - that normal tables do not; see for - more information. + Partitions can also be foreign + tables, although considerable care is needed because it is then + the user's responsibility that the contents of the foreign table + satisfy the partitioning rule. There are some other restrictions as + well. See for more + information. diff -Nru postgresql-11-11.14/doc/src/sgml/event-trigger.sgml postgresql-11-11.16/doc/src/sgml/event-trigger.sgml --- postgresql-11-11.14/doc/src/sgml/event-trigger.sgml 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/event-trigger.sgml 2022-05-09 21:20:11.000000000 +0000 @@ -288,6 +288,14 @@ + ALTER ROUTINE + X + X + - + - + + + ALTER SCHEMA X X @@ -848,6 +856,14 @@ + DROP ROUTINE + X + X + X + - + + + DROP RULE X X diff -Nru postgresql-11-11.14/doc/src/sgml/func.sgml postgresql-11-11.16/doc/src/sgml/func.sgml --- postgresql-11-11.14/doc/src/sgml/func.sgml 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/func.sgml 2022-05-09 21:20:11.000000000 +0000 @@ -12397,24 +12397,6 @@ see its command reference page for more information. - - - To avoid blocking concurrent transactions that obtain numbers from - the same sequence, a nextval operation is never - rolled back; that is, once a value has been fetched it is considered - used and will not be returned again. This is true even if the - surrounding transaction later aborts, or if the calling query ends - up not using the value. For example an INSERT with - an ON CONFLICT clause will compute the to-be-inserted - tuple, including doing any required nextval - calls, before detecting any conflict that would cause it to follow - the ON CONFLICT rule instead. Such cases will leave - unused holes in the sequence of assigned values. - Thus, PostgreSQL sequence objects cannot - be used to obtain gapless sequences. - - - This function requires USAGE or UPDATE privilege on the sequence. @@ -12491,13 +12473,6 @@ The result returned by setval is just the value of its second argument. - - - Because sequences are non-transactional, changes made by - setval are not undone if the transaction rolls - back. - - This function requires UPDATE privilege on the @@ -12508,6 +12483,42 @@ + + + To avoid blocking concurrent transactions that obtain numbers from + the same sequence, the value obtained by nextval + is not reclaimed for re-use if the calling transaction later aborts. + This means that transaction aborts or database crashes can result in + gaps in the sequence of assigned values. That can happen without a + transaction abort, too. For example an INSERT with + an ON CONFLICT clause will compute the to-be-inserted + tuple, including doing any required nextval + calls, before detecting any conflict that would cause it to follow + the ON CONFLICT rule instead. + Thus, PostgreSQL sequence + objects cannot be used to obtain gapless + sequences. + + + + Likewise, sequence state changes made by setval + are immediately visible to other transactions, and are not undone if + the calling transaction rolls back. + + + + If the database cluster crashes before committing a transaction + containing a nextval + or setval call, the sequence state change might + not have made its way to persistent storage, so that it is uncertain + whether the sequence will have its original or updated state after the + cluster restarts. This is harmless for usage of the sequence within + the database, since other effects of uncommitted transactions will not + be visible either. However, if you wish to use a sequence value for + persistent outside-the-database purposes, make sure that the + nextval call has been committed before doing so. + + @@ -19608,8 +19619,9 @@ oid - Lookup a replication origin by name and return the internal id. If no - corresponding replication origin is found an error is thrown. + Lookup a replication origin by name and return the internal ID. If + no such replication origin is found, NULL is + returned. diff -Nru postgresql-11-11.14/doc/src/sgml/high-availability.sgml postgresql-11-11.16/doc/src/sgml/high-availability.sgml --- postgresql-11-11.14/doc/src/sgml/high-availability.sgml 2021-11-08 22:04:02.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/high-availability.sgml 2022-05-09 21:20:11.000000000 +0000 @@ -1078,7 +1078,7 @@ servers. Waiting for confirmation increases the user's confidence that the changes will not be lost in the event of server crashes but it also necessarily increases the response time for the requesting transaction. - The minimum wait time is the round-trip time between primary to standby. + The minimum wait time is the round-trip time between primary and standby. diff -Nru postgresql-11-11.14/doc/src/sgml/html/acronyms.html postgresql-11-11.16/doc/src/sgml/html/acronyms.html --- postgresql-11-11.14/doc/src/sgml/html/acronyms.html 2021-11-08 22:21:51.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/acronyms.html 2022-05-09 21:37:26.000000000 +0000 @@ -1,5 +1,5 @@ -Appendix K. Acronyms

Appendix K. Acronyms

+Appendix K. Acronyms

Appendix K. Acronyms

This is a list of acronyms commonly used in the PostgreSQL documentation and in discussions about PostgreSQL. @@ -135,7 +135,7 @@ Pluggable Authentication Modules

PGSQL

- PostgreSQL + PostgreSQL

PGXS

PostgreSQL Extension System

PID

@@ -210,4 +210,4 @@ Extensible Markup Language

-

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/admin.html postgresql-11-11.16/doc/src/sgml/html/admin.html --- postgresql-11-11.14/doc/src/sgml/html/admin.html 2021-11-08 22:21:32.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/admin.html 2022-05-09 21:37:07.000000000 +0000 @@ -1,5 +1,5 @@ -Part III. Server Administration

Part III. Server Administration

+Part III. Server Administration

Part III. Server Administration

This part covers topics that are of interest to a PostgreSQL database administrator. This includes installation of the software, set up and configuration of the @@ -23,4 +23,4 @@ the PostgreSQL database system. Readers are encouraged to look at Part I and Part II for additional information.

Table of Contents

16. Installation from Source Code
16.1. Short Version
16.2. Requirements
16.3. Getting The Source
16.4. Installation Procedure
16.5. Post-Installation Setup
16.6. Supported Platforms
16.7. Platform-specific Notes
17. Installation from Source Code on Windows
17.1. Building with Visual C++ or the - Microsoft Windows SDK
18. Server Setup and Operation
18.1. The PostgreSQL User Account
18.2. Creating a Database Cluster
18.3. Starting the Database Server
18.4. Managing Kernel Resources
18.5. Shutting Down the Server
18.6. Upgrading a PostgreSQL Cluster
18.7. Preventing Server Spoofing
18.8. Encryption Options
18.9. Secure TCP/IP Connections with SSL
18.10. Secure TCP/IP Connections with SSH Tunnels
18.11. Registering Event Log on Windows
19. Server Configuration
19.1. Setting Parameters
19.2. File Locations
19.3. Connections and Authentication
19.4. Resource Consumption
19.5. Write Ahead Log
19.6. Replication
19.7. Query Planning
19.8. Error Reporting and Logging
19.9. Run-time Statistics
19.10. Automatic Vacuuming
19.11. Client Connection Defaults
19.12. Lock Management
19.13. Version and Platform Compatibility
19.14. Error Handling
19.15. Preset Options
19.16. Customized Options
19.17. Developer Options
19.18. Short Options
20. Client Authentication
20.1. The pg_hba.conf File
20.2. User Name Maps
20.3. Authentication Methods
20.4. Trust Authentication
20.5. Password Authentication
20.6. GSSAPI Authentication
20.7. SSPI Authentication
20.8. Ident Authentication
20.9. Peer Authentication
20.10. LDAP Authentication
20.11. RADIUS Authentication
20.12. Certificate Authentication
20.13. PAM Authentication
20.14. BSD Authentication
20.15. Authentication Problems
21. Database Roles
21.1. Database Roles
21.2. Role Attributes
21.3. Role Membership
21.4. Dropping Roles
21.5. Default Roles
21.6. Function Security
22. Managing Databases
22.1. Overview
22.2. Creating a Database
22.3. Template Databases
22.4. Database Configuration
22.5. Destroying a Database
22.6. Tablespaces
23. Localization
23.1. Locale Support
23.2. Collation Support
23.3. Character Set Support
24. Routine Database Maintenance Tasks
24.1. Routine Vacuuming
24.2. Routine Reindexing
24.3. Log File Maintenance
25. Backup and Restore
25.1. SQL Dump
25.2. File System Level Backup
25.3. Continuous Archiving and Point-in-Time Recovery (PITR)
26. High Availability, Load Balancing, and Replication
26.1. Comparison of Different Solutions
26.2. Log-Shipping Standby Servers
26.3. Failover
26.4. Alternative Method for Log Shipping
26.5. Hot Standby
27. Recovery Configuration
27.1. Archive Recovery Settings
27.2. Recovery Target Settings
27.3. Standby Server Settings
28. Monitoring Database Activity
28.1. Standard Unix Tools
28.2. The Statistics Collector
28.3. Viewing Locks
28.4. Progress Reporting
28.5. Dynamic Tracing
29. Monitoring Disk Usage
29.1. Determining Disk Usage
29.2. Disk Full Failure
30. Reliability and the Write-Ahead Log
30.1. Reliability
30.2. Write-Ahead Logging (WAL)
30.3. Asynchronous Commit
30.4. WAL Configuration
30.5. WAL Internals
31. Logical Replication
31.1. Publication
31.2. Subscription
31.3. Conflicts
31.4. Restrictions
31.5. Architecture
31.6. Monitoring
31.7. Security
31.8. Configuration Settings
31.9. Quick Setup
32. Just-in-Time Compilation (JIT)
32.1. What is JIT compilation?
32.2. When to JIT?
32.3. Configuration
32.4. Extensibility
33. Regression Tests
33.1. Running the Tests
33.2. Test Evaluation
33.3. Variant Comparison Files
33.4. TAP Tests
33.5. Test Coverage Examination
\ No newline at end of file + Microsoft Windows SDK
18. Server Setup and Operation
18.1. The PostgreSQL User Account
18.2. Creating a Database Cluster
18.3. Starting the Database Server
18.4. Managing Kernel Resources
18.5. Shutting Down the Server
18.6. Upgrading a PostgreSQL Cluster
18.7. Preventing Server Spoofing
18.8. Encryption Options
18.9. Secure TCP/IP Connections with SSL
18.10. Secure TCP/IP Connections with SSH Tunnels
18.11. Registering Event Log on Windows
19. Server Configuration
19.1. Setting Parameters
19.2. File Locations
19.3. Connections and Authentication
19.4. Resource Consumption
19.5. Write Ahead Log
19.6. Replication
19.7. Query Planning
19.8. Error Reporting and Logging
19.9. Run-time Statistics
19.10. Automatic Vacuuming
19.11. Client Connection Defaults
19.12. Lock Management
19.13. Version and Platform Compatibility
19.14. Error Handling
19.15. Preset Options
19.16. Customized Options
19.17. Developer Options
19.18. Short Options
20. Client Authentication
20.1. The pg_hba.conf File
20.2. User Name Maps
20.3. Authentication Methods
20.4. Trust Authentication
20.5. Password Authentication
20.6. GSSAPI Authentication
20.7. SSPI Authentication
20.8. Ident Authentication
20.9. Peer Authentication
20.10. LDAP Authentication
20.11. RADIUS Authentication
20.12. Certificate Authentication
20.13. PAM Authentication
20.14. BSD Authentication
20.15. Authentication Problems
21. Database Roles
21.1. Database Roles
21.2. Role Attributes
21.3. Role Membership
21.4. Dropping Roles
21.5. Default Roles
21.6. Function Security
22. Managing Databases
22.1. Overview
22.2. Creating a Database
22.3. Template Databases
22.4. Database Configuration
22.5. Destroying a Database
22.6. Tablespaces
23. Localization
23.1. Locale Support
23.2. Collation Support
23.3. Character Set Support
24. Routine Database Maintenance Tasks
24.1. Routine Vacuuming
24.2. Routine Reindexing
24.3. Log File Maintenance
25. Backup and Restore
25.1. SQL Dump
25.2. File System Level Backup
25.3. Continuous Archiving and Point-in-Time Recovery (PITR)
26. High Availability, Load Balancing, and Replication
26.1. Comparison of Different Solutions
26.2. Log-Shipping Standby Servers
26.3. Failover
26.4. Alternative Method for Log Shipping
26.5. Hot Standby
27. Recovery Configuration
27.1. Archive Recovery Settings
27.2. Recovery Target Settings
27.3. Standby Server Settings
28. Monitoring Database Activity
28.1. Standard Unix Tools
28.2. The Statistics Collector
28.3. Viewing Locks
28.4. Progress Reporting
28.5. Dynamic Tracing
29. Monitoring Disk Usage
29.1. Determining Disk Usage
29.2. Disk Full Failure
30. Reliability and the Write-Ahead Log
30.1. Reliability
30.2. Write-Ahead Logging (WAL)
30.3. Asynchronous Commit
30.4. WAL Configuration
30.5. WAL Internals
31. Logical Replication
31.1. Publication
31.2. Subscription
31.3. Conflicts
31.4. Restrictions
31.5. Architecture
31.6. Monitoring
31.7. Security
31.8. Configuration Settings
31.9. Quick Setup
32. Just-in-Time Compilation (JIT)
32.1. What is JIT compilation?
32.2. When to JIT?
32.3. Configuration
32.4. Extensibility
33. Regression Tests
33.1. Running the Tests
33.2. Test Evaluation
33.3. Variant Comparison Files
33.4. TAP Tests
33.5. Test Coverage Examination
\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/adminpack.html postgresql-11-11.16/doc/src/sgml/html/adminpack.html --- postgresql-11-11.14/doc/src/sgml/html/adminpack.html 2021-11-08 22:21:49.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/adminpack.html 2022-05-09 21:37:25.000000000 +0000 @@ -1,5 +1,5 @@ -F.1. adminpack

F.1. adminpack

+F.1. adminpack

F.1. adminpack

adminpack provides a number of support functions which pgAdmin and other administration and management tools can use to provide additional functionality, such as remote management @@ -51,4 +51,4 @@ directory. The log_filename parameter must have its default setting (postgresql-%Y-%m-%d_%H%M%S.log) to use this function. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/amcheck.html postgresql-11-11.16/doc/src/sgml/html/amcheck.html --- postgresql-11-11.14/doc/src/sgml/html/amcheck.html 2021-11-08 22:21:49.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/amcheck.html 2022-05-09 21:37:25.000000000 +0000 @@ -1,5 +1,5 @@ -F.2. amcheck

F.2. amcheck

+F.2. amcheck

F.2. amcheck

The amcheck module provides functions that allow you to verify the logical consistency of the structure of relations. If the structure appears to be valid, no error is raised. @@ -244,4 +244,4 @@ an invariant violation should be sought. pageinspect may play a useful role in diagnosing corruption that amcheck detects. A REINDEX may not be effective in repairing corruption. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-clusterdb.html postgresql-11-11.16/doc/src/sgml/html/app-clusterdb.html --- postgresql-11-11.14/doc/src/sgml/html/app-clusterdb.html 2021-11-08 22:21:42.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-clusterdb.html 2022-05-09 21:37:17.000000000 +0000 @@ -1,5 +1,5 @@ -clusterdb

clusterdb

clusterdb — cluster a PostgreSQL database

Synopsis

clusterdb [connection-option...] [ --verbose | -v ] +clusterdb

clusterdb

clusterdb — cluster a PostgreSQL database

Synopsis

clusterdb [connection-option...] [ --verbose | -v ] [ --table | -t table @@ -115,4 +115,4 @@ xyzzy:

 $ clusterdb --table=foo xyzzy
-

See Also

CLUSTER
\ No newline at end of file +

See Also

CLUSTER
\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-createdb.html postgresql-11-11.16/doc/src/sgml/html/app-createdb.html --- postgresql-11-11.14/doc/src/sgml/html/app-createdb.html 2021-11-08 22:21:42.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-createdb.html 2022-05-09 21:37:17.000000000 +0000 @@ -1,5 +1,5 @@ -createdb

createdb

createdb — create a new PostgreSQL database

Synopsis

createdb [connection-option...] [option...] [dbname +createdb

createdb

createdb — create a new PostgreSQL database

Synopsis

createdb [connection-option...] [option...] [dbname [description]]

Description

@@ -136,4 +136,4 @@

 $ createdb -p 5000 -h eden -T template0 -e demo
 CREATE DATABASE demo TEMPLATE template0;
-
\ No newline at end of file +
\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-createuser.html postgresql-11-11.16/doc/src/sgml/html/app-createuser.html --- postgresql-11-11.14/doc/src/sgml/html/app-createuser.html 2021-11-08 22:21:42.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-createuser.html 2022-05-09 21:37:17.000000000 +0000 @@ -1,5 +1,5 @@ -createuser

createuser

createuser — define a new PostgreSQL user account

Synopsis

createuser [connection-option...] [option...] [username]

Description

+createuser

createuser

createuser — define a new PostgreSQL user account

Synopsis

createuser [connection-option...] [option...] [username]

Description

createuser creates a new PostgreSQL user (or more precisely, a role). Only superusers and users with CREATEROLE privilege can create @@ -175,4 +175,4 @@ In the above example, the new password isn't actually echoed when typed, but we show what was typed for clarity. As you see, the password is encrypted before it is sent to the client. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-dropdb.html postgresql-11-11.16/doc/src/sgml/html/app-dropdb.html --- postgresql-11-11.14/doc/src/sgml/html/app-dropdb.html 2021-11-08 22:21:42.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-dropdb.html 2022-05-09 21:37:17.000000000 +0000 @@ -1,5 +1,5 @@ -dropdb

dropdb

dropdb — remove a PostgreSQL database

Synopsis

dropdb [connection-option...] [option...] dbname

Description

+dropdb

dropdb

dropdb — remove a PostgreSQL database

Synopsis

dropdb [connection-option...] [option...] dbname

Description

dropdb destroys an existing PostgreSQL database. The user who executes this command must be a database @@ -100,4 +100,4 @@ Database "demo" will be permanently deleted. Are you sure? (y/n) y DROP DATABASE demo; -

\ No newline at end of file +
\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-dropuser.html postgresql-11-11.16/doc/src/sgml/html/app-dropuser.html --- postgresql-11-11.14/doc/src/sgml/html/app-dropuser.html 2021-11-08 22:21:42.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-dropuser.html 2022-05-09 21:37:17.000000000 +0000 @@ -1,5 +1,5 @@ -dropuser

dropuser

dropuser — remove a PostgreSQL user account

Synopsis

dropuser [connection-option...] [option...] [username]

Description

+dropuser

dropuser

dropuser — remove a PostgreSQL user account

Synopsis

dropuser [connection-option...] [option...] [username]

Description

dropuser removes an existing PostgreSQL user. Only superusers and users with the CREATEROLE privilege can @@ -96,4 +96,4 @@ Role "joe" will be permanently removed. Are you sure? (y/n) y DROP ROLE joe; -

\ No newline at end of file +
\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-ecpg.html postgresql-11-11.16/doc/src/sgml/html/app-ecpg.html --- postgresql-11-11.14/doc/src/sgml/html/app-ecpg.html 2021-11-08 22:21:42.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-ecpg.html 2022-05-09 21:37:17.000000000 +0000 @@ -1,5 +1,5 @@ -ecpg

ecpg

ecpg — embedded SQL C preprocessor

Synopsis

ecpg [option...] file...

Description

+ecpg

ecpg

ecpg — embedded SQL C preprocessor

Synopsis

ecpg [option...] file...

Description

ecpg is the embedded SQL preprocessor for C programs. It converts C programs with embedded SQL statements to normal C code by replacing the SQL invocations with special @@ -103,4 +103,4 @@ ecpg prog1.pgc cc -I/usr/local/pgsql/include -c prog1.c cc -o prog1 prog1.o -L/usr/local/pgsql/lib -lecpg -

\ No newline at end of file +
\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-initdb.html postgresql-11-11.16/doc/src/sgml/html/app-initdb.html --- postgresql-11-11.14/doc/src/sgml/html/app-initdb.html 2021-11-08 22:21:43.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-initdb.html 2022-05-09 21:37:18.000000000 +0000 @@ -1,5 +1,5 @@ -initdb

initdb

initdb — create a new PostgreSQL database cluster

Synopsis

initdb [option...] [ --pgdata | -D ] directory

+initdb

initdb

initdb — create a new PostgreSQL database cluster

Synopsis

initdb [option...] [ --pgdata | -D ] directory

Description

initdb creates a new @@ -206,4 +206,4 @@

Notes

initdb can also be invoked via pg_ctl initdb. -

See Also

pg_ctl, postgres
\ No newline at end of file +

See Also

pg_ctl, postgres
\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-pg-ctl.html postgresql-11-11.16/doc/src/sgml/html/app-pg-ctl.html --- postgresql-11-11.14/doc/src/sgml/html/app-pg-ctl.html 2021-11-08 22:21:43.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-pg-ctl.html 2022-05-09 21:37:18.000000000 +0000 @@ -1,5 +1,5 @@ -pg_ctl

pg_ctl

pg_ctl — initialize, start, stop, or control a PostgreSQL server

Synopsis

pg_ctl init[db] [-D datadir] [-s] [-o initdb-options]

pg_ctl start [-D datadir] [-l filename] [-W] [-t seconds] [-s] [-o options] [-p path] [-c]

pg_ctl stop [-D datadir] [-m +pg_ctl

pg_ctl

pg_ctl — initialize, start, stop, or control a PostgreSQL server

Synopsis

pg_ctl init[db] [-D datadir] [-s] [-o initdb-options]

pg_ctl start [-D datadir] [-l filename] [-W] [-t seconds] [-s] [-o options] [-p path] [-c]

pg_ctl stop [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ] [-W] [-t seconds] [-s]

pg_ctl restart [-D datadir] [-m s[mart] | f[ast] | i[mmediate] @@ -281,4 +281,4 @@ /usr/local/pgsql/bin/postgres "-D" "/usr/local/pgsql/data" "-p" "5433" "-B" "128"

The second line is the command that would be invoked in restart mode. -

See Also

initdb, postgres
\ No newline at end of file +

See Also

initdb, postgres
\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-pg-dumpall.html postgresql-11-11.16/doc/src/sgml/html/app-pg-dumpall.html --- postgresql-11-11.14/doc/src/sgml/html/app-pg-dumpall.html 2021-11-08 22:21:43.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-pg-dumpall.html 2022-05-09 21:37:18.000000000 +0000 @@ -1,5 +1,5 @@ -pg_dumpall

pg_dumpall

pg_dumpall — extract a PostgreSQL database cluster into a script file

Synopsis

pg_dumpall [connection-option...] [option...]

Description

+pg_dumpall

pg_dumpall

pg_dumpall — extract a PostgreSQL database cluster into a script file

Synopsis

pg_dumpall [connection-option...] [option...]

Description

pg_dumpall is a utility for writing out (dumping) all PostgreSQL databases of a cluster into one script file. The script file contains @@ -321,4 +321,4 @@

See Also

Check pg_dump for details on possible error conditions. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-pg-isready.html postgresql-11-11.16/doc/src/sgml/html/app-pg-isready.html --- postgresql-11-11.14/doc/src/sgml/html/app-pg-isready.html 2021-11-08 22:21:43.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-pg-isready.html 2022-05-09 21:37:18.000000000 +0000 @@ -1,5 +1,5 @@ -pg_isready

pg_isready

pg_isready — check the connection status of a PostgreSQL server

Synopsis

pg_isready [connection-option...] [option...]

Description

+pg_isready

pg_isready

pg_isready — check the connection status of a PostgreSQL server

Synopsis

pg_isready [connection-option...] [option...]

Description

pg_isready is a utility for checking the connection status of a PostgreSQL database server. The exit status specifies the result of the connection check. @@ -71,4 +71,4 @@ $ echo $? 2

-

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-pgbasebackup.html postgresql-11-11.16/doc/src/sgml/html/app-pgbasebackup.html --- postgresql-11-11.14/doc/src/sgml/html/app-pgbasebackup.html 2021-11-08 22:21:42.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-pgbasebackup.html 2022-05-09 21:37:17.000000000 +0000 @@ -1,5 +1,5 @@ -pg_basebackup

pg_basebackup

pg_basebackup — take a base backup of a PostgreSQL cluster

Synopsis

pg_basebackup [option...]

+pg_basebackup

pg_basebackup

pg_basebackup — take a base backup of a PostgreSQL cluster

Synopsis

pg_basebackup [option...]

Description

pg_basebackup is used to take base backups of @@ -406,4 +406,4 @@

 $ pg_basebackup -D backup/data -T /opt/ts=$(pwd)/backup/ts
 

-

See Also

pg_dump
\ No newline at end of file +

See Also

pg_dump
\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-pgconfig.html postgresql-11-11.16/doc/src/sgml/html/app-pgconfig.html --- postgresql-11-11.14/doc/src/sgml/html/app-pgconfig.html 2021-11-08 22:21:42.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-pgconfig.html 2022-05-09 21:37:18.000000000 +0000 @@ -1,5 +1,5 @@ -pg_config

pg_config

pg_config — retrieve information about the installed version of PostgreSQL

Synopsis

pg_config [option...]

Description

+pg_config

pg_config

pg_config — retrieve information about the installed version of PostgreSQL

Synopsis

pg_config [option...]

Description

The pg_config utility prints configuration parameters of the currently installed version of PostgreSQL. It is intended, for example, to be used by software packages that want to interface @@ -107,4 +107,4 @@ shell quotation marks so arguments with spaces are represented correctly. Therefore, using eval is required for proper results. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-pgcontroldata.html postgresql-11-11.16/doc/src/sgml/html/app-pgcontroldata.html --- postgresql-11-11.14/doc/src/sgml/html/app-pgcontroldata.html 2021-11-08 22:21:43.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-pgcontroldata.html 2022-05-09 21:37:18.000000000 +0000 @@ -1,5 +1,5 @@ -pg_controldata

pg_controldata

pg_controldata — display control information of a PostgreSQL database cluster

Synopsis

pg_controldata [option] [[ -D | --pgdata ]datadir]

Description

+pg_controldata

pg_controldata

pg_controldata — display control information of a PostgreSQL database cluster

Synopsis

pg_controldata [option] [[ -D | --pgdata ]datadir]

Description

pg_controldata prints information initialized during initdb, such as the catalog version. It also shows information about write-ahead logging and checkpoint @@ -16,4 +16,4 @@ supported arguments.

Environment

PGDATA

Default data directory location -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-pgdump.html postgresql-11-11.16/doc/src/sgml/html/app-pgdump.html --- postgresql-11-11.14/doc/src/sgml/html/app-pgdump.html 2021-11-08 22:21:43.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-pgdump.html 2022-05-09 21:37:18.000000000 +0000 @@ -1,5 +1,5 @@ -pg_dump

pg_dump

pg_dump — +pg_dump

pg_dump

pg_dump — extract a PostgreSQL database into a script file or other archive file

Synopsis

pg_dump [connection-option...] [option...] [dbname]

Description @@ -766,4 +766,4 @@

 $ pg_dump -t "\"MixedCaseName\"" mydb > mytab.sql
-

\ No newline at end of file +
\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-pgreceivewal.html postgresql-11-11.16/doc/src/sgml/html/app-pgreceivewal.html --- postgresql-11-11.14/doc/src/sgml/html/app-pgreceivewal.html 2021-11-08 22:21:43.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-pgreceivewal.html 2022-05-09 21:37:18.000000000 +0000 @@ -1,5 +1,5 @@ -pg_receivewal

pg_receivewal

pg_receivewal — stream write-ahead logs from a PostgreSQL server

Synopsis

pg_receivewal [option...]

+pg_receivewal

pg_receivewal

pg_receivewal — stream write-ahead logs from a PostgreSQL server

Synopsis

pg_receivewal [option...]

Description

pg_receivewal is used to stream the write-ahead log @@ -44,13 +44,12 @@ pg_receivewal starts:

  1. First, scan the directory where the WAL segment files are written and - find the newest completed segment file, using as starting point the - beginning of the next WAL segment file. This is calculated independently - on the compression method used to compress each segment. + find the newest completed segment file, using as the starting point the + beginning of the next WAL segment file.

  2. If a starting point cannot be calculated with the previous method, the latest WAL flush location is used as reported by the server from - a IDENTIFY_SYSTEM command. + an IDENTIFY_SYSTEM command.

If the connection is lost, or if it cannot be initially established, @@ -216,4 +215,4 @@ /usr/local/pgsql/archive:

 $ pg_receivewal -h mydbserver -D /usr/local/pgsql/archive
-
\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-pgreceivexlog.html postgresql-11-11.16/doc/src/sgml/html/app-pgreceivexlog.html --- postgresql-11-11.14/doc/src/sgml/html/app-pgreceivexlog.html 2021-11-08 22:21:51.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-pgreceivexlog.html 2022-05-09 21:37:26.000000000 +0000 @@ -1,10 +1,10 @@ -L.3. pg_receivexlog renamed to pg_receivewal

L.3. pg_receivexlog renamed to pg_receivewal

+L.3. pg_receivexlog renamed to pg_receivewal

L.3. pg_receivexlog renamed to pg_receivewal

PostgreSQL 9.6 and below provided a command named pg_receivexlog to fetch write-ahead-log (WAL) files. This command was renamed to pg_receivewal, see pg_receivewal for documentation of pg_receivewal and see - the release notes for PostgreSQL 10 for details + the release notes for PostgreSQL 10 for details on this change. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-pgrecvlogical.html postgresql-11-11.16/doc/src/sgml/html/app-pgrecvlogical.html --- postgresql-11-11.14/doc/src/sgml/html/app-pgrecvlogical.html 2021-11-08 22:21:43.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-pgrecvlogical.html 2022-05-09 21:37:18.000000000 +0000 @@ -1,5 +1,5 @@ -pg_recvlogical

pg_recvlogical

pg_recvlogical — control PostgreSQL logical decoding streams

Synopsis

pg_recvlogical [option...]

Description

+pg_recvlogical

pg_recvlogical

pg_recvlogical — control PostgreSQL logical decoding streams

Synopsis

pg_recvlogical [option...]

Description

pg_recvlogical controls logical decoding replication slots and streams data from such replication slots.

@@ -163,4 +163,4 @@ cluster.

Examples

See Section 49.1 for an example. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-pgresetwal.html postgresql-11-11.16/doc/src/sgml/html/app-pgresetwal.html --- postgresql-11-11.14/doc/src/sgml/html/app-pgresetwal.html 2021-11-08 22:21:43.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-pgresetwal.html 2022-05-09 21:37:18.000000000 +0000 @@ -1,5 +1,5 @@ -pg_resetwal

pg_resetwal

pg_resetwal — reset the write-ahead log and other control information of a PostgreSQL database cluster

Synopsis

pg_resetwal [ -f | --force ] [ -n | --dry-run ] [option...] [ -D | --pgdata ]datadir

Description

+pg_resetwal

pg_resetwal

pg_resetwal — reset the write-ahead log and other control information of a PostgreSQL database cluster

Synopsis

pg_resetwal [ -f | --force ] [ -n | --dry-run ] [option...] [ -D | --pgdata ]datadir

Description

pg_resetwal clears the write-ahead log (WAL) and optionally resets some other control information stored in the pg_control file. This function is sometimes needed @@ -162,4 +162,4 @@

pg_resetwal works only with servers of the same major version. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-pgresetxlog.html postgresql-11-11.16/doc/src/sgml/html/app-pgresetxlog.html --- postgresql-11-11.14/doc/src/sgml/html/app-pgresetxlog.html 2021-11-08 22:21:51.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-pgresetxlog.html 2022-05-09 21:37:26.000000000 +0000 @@ -1,10 +1,10 @@ -L.2. pg_resetxlog renamed to pg_resetwal

L.2. pg_resetxlog renamed to pg_resetwal

+L.2. pg_resetxlog renamed to pg_resetwal

L.2. pg_resetxlog renamed to pg_resetwal

PostgreSQL 9.6 and below provided a command named pg_resetxlog to reset the write-ahead-log (WAL) files. This command was renamed to pg_resetwal, see pg_resetwal for documentation of pg_resetwal and see - the release notes for PostgreSQL 10 for details + the release notes for PostgreSQL 10 for details on this change. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-pgrestore.html postgresql-11-11.16/doc/src/sgml/html/app-pgrestore.html --- postgresql-11-11.14/doc/src/sgml/html/app-pgrestore.html 2021-11-08 22:21:43.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-pgrestore.html 2022-05-09 21:37:18.000000000 +0000 @@ -1,5 +1,5 @@ -pg_restore

pg_restore

pg_restore — +pg_restore

pg_restore

pg_restore — restore a PostgreSQL database from an archive file created by pg_dump

Synopsis

pg_restore [connection-option...] [option...] [filename]

Description

@@ -483,4 +483,4 @@ items 10 and 6, in that order:

 $ pg_restore -L db.list db.dump
-
\ No newline at end of file +
\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-pgrewind.html postgresql-11-11.16/doc/src/sgml/html/app-pgrewind.html --- postgresql-11-11.14/doc/src/sgml/html/app-pgrewind.html 2021-11-08 22:21:43.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-pgrewind.html 2022-05-09 21:37:18.000000000 +0000 @@ -1,5 +1,5 @@ -pg_rewind

pg_rewind

pg_rewind — synchronize a PostgreSQL data directory with another data directory that was forked from it

Synopsis

pg_rewind [option...] { -D | --target-pgdata } directory { --source-pgdata=directory | --source-server=connstr }

Description

+pg_rewind

pg_rewind

pg_rewind — synchronize a PostgreSQL data directory with another data directory that was forked from it

Synopsis

pg_rewind [option...] { -D | --target-pgdata } directory { --source-pgdata=directory | --source-server=connstr }

Description

pg_rewind is a tool for synchronizing a PostgreSQL cluster with another copy of the same cluster, after the clusters' timelines have diverged. A typical scenario is to bring an old master server back online @@ -147,4 +147,4 @@ doesn't apply the WAL, it just creates a backup label file that makes PostgreSQL start by replaying all WAL from that checkpoint forward.) -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-postgres.html postgresql-11-11.16/doc/src/sgml/html/app-postgres.html --- postgresql-11-11.14/doc/src/sgml/html/app-postgres.html 2021-11-08 22:21:43.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-postgres.html 2022-05-09 21:37:19.000000000 +0000 @@ -1,5 +1,5 @@ -postgres

postgres

postgres — PostgreSQL database server

Synopsis

postgres [option...]

Description

+postgres

postgres

postgres — PostgreSQL database server

Synopsis

postgres [option...]

Description

postgres is the PostgreSQL database server. In order for a client application to access a database it connects (over a @@ -436,4 +436,4 @@

See Also

initdb, pg_ctl -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-postmaster.html postgresql-11-11.16/doc/src/sgml/html/app-postmaster.html --- postgresql-11-11.14/doc/src/sgml/html/app-postmaster.html 2021-11-08 22:21:43.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-postmaster.html 2022-05-09 21:37:19.000000000 +0000 @@ -1,6 +1,6 @@ -postmaster

postmaster

postmaster — PostgreSQL database server

Synopsis

postmaster [option...]

Description

+postmaster

postmaster

postmaster — PostgreSQL database server

Synopsis

postmaster [option...]

Description

postmaster is a deprecated alias of postgres.

See Also

postgres -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-psql.html postgresql-11-11.16/doc/src/sgml/html/app-psql.html --- postgresql-11-11.14/doc/src/sgml/html/app-psql.html 2021-11-08 22:21:43.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-psql.html 2022-05-09 21:37:18.000000000 +0000 @@ -1,5 +1,5 @@ -psql

psql

psql — +psql

psql

psqlPostgreSQL interactive terminal

Synopsis

psql [option...] [dbname [username]]

Description

@@ -347,7 +347,7 @@ the string =>. For example:

 $ psql testdb
-psql (11.14)
+psql (11.16)
 Type "help" for help.
 
 testdb=>
@@ -2618,4 +2618,4 @@
 (4 rows)
 

-

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-reindexdb.html postgresql-11-11.16/doc/src/sgml/html/app-reindexdb.html --- postgresql-11-11.14/doc/src/sgml/html/app-reindexdb.html 2021-11-08 22:21:43.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-reindexdb.html 2022-05-09 21:37:18.000000000 +0000 @@ -1,5 +1,5 @@ -reindexdb

reindexdb

reindexdb — reindex a PostgreSQL database

Synopsis

reindexdb [connection-option...] [option...] +reindexdb

reindexdb

reindexdb — reindex a PostgreSQL database

Synopsis

reindexdb [connection-option...] [option...] [ -S | --schema schema @@ -137,4 +137,4 @@ bar in a database named abcd:

 $ reindexdb --table=foo --index=bar abcd
-

See Also

REINDEX
\ No newline at end of file +

See Also

REINDEX
\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/app-vacuumdb.html postgresql-11-11.16/doc/src/sgml/html/app-vacuumdb.html --- postgresql-11-11.14/doc/src/sgml/html/app-vacuumdb.html 2021-11-08 22:21:43.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/app-vacuumdb.html 2022-05-09 21:37:18.000000000 +0000 @@ -1,5 +1,5 @@ -vacuumdb

vacuumdb

vacuumdb — garbage-collect and analyze a PostgreSQL database

Synopsis

vacuumdb [connection-option...] [option...] +vacuumdb

vacuumdb

vacuumdb — garbage-collect and analyze a PostgreSQL database

Synopsis

vacuumdb [connection-option...] [option...] [ -t | --table table @@ -164,4 +164,4 @@ bar of the table for the optimizer:

 $ vacuumdb --analyze --verbose --table='foo(bar)' xyzzy
-

See Also

VACUUM
\ No newline at end of file +

See Also

VACUUM
\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/appendix-obsolete.html postgresql-11-11.16/doc/src/sgml/html/appendix-obsolete.html --- postgresql-11-11.14/doc/src/sgml/html/appendix-obsolete.html 2021-11-08 22:21:51.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/appendix-obsolete.html 2022-05-09 21:37:26.000000000 +0000 @@ -1,8 +1,8 @@ -Appendix L. Obsolete or Renamed Features

Appendix L. Obsolete or Renamed Features

+Appendix L. Obsolete or Renamed Features

Appendix L. Obsolete or Renamed Features

Functionality is sometimes removed from PostgreSQL, feature, setting and file names sometimes change, or documentation moves to different places. This section directs users coming from old versions of the documentation or from external links to the appropriate new location for the information they need. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/appendixes.html postgresql-11-11.16/doc/src/sgml/html/appendixes.html --- postgresql-11-11.14/doc/src/sgml/html/appendixes.html 2021-11-08 22:21:51.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/appendixes.html 2022-05-09 21:37:26.000000000 +0000 @@ -1,2 +1,2 @@ -Part VIII. Appendixes

Part VIII. Appendixes

Table of Contents

A. PostgreSQL Error Codes
B. Date/Time Support
B.1. Date/Time Input Interpretation
B.2. Handling of Invalid or Ambiguous Timestamps
B.3. Date/Time Key Words
B.4. Date/Time Configuration Files
B.5. POSIX Time Zone Specifications
B.6. History of Units
B.7. Julian Dates
C. SQL Key Words
D. SQL Conformance
D.1. Supported Features
D.2. Unsupported Features
D.3. XML Limits and Conformance to SQL/XML
E. Release Notes
E.1. Release 11.14
E.2. Release 11.13
E.3. Release 11.12
E.4. Release 11.11
E.5. Release 11.10
E.6. Release 11.9
E.7. Release 11.8
E.8. Release 11.7
E.9. Release 11.6
E.10. Release 11.5
E.11. Release 11.4
E.12. Release 11.3
E.13. Release 11.2
E.14. Release 11.1
E.15. Release 11
E.16. Prior Releases
F. Additional Supplied Modules
F.1. adminpack
F.2. amcheck
F.3. auth_delay
F.4. auto_explain
F.5. bloom
F.6. btree_gin
F.7. btree_gist
F.8. citext
F.9. cube
F.10. dblink
F.11. dict_int
F.12. dict_xsyn
F.13. earthdistance
F.14. file_fdw
F.15. fuzzystrmatch
F.16. hstore
F.17. intagg
F.18. intarray
F.19. isn
F.20. lo
F.21. ltree
F.22. pageinspect
F.23. passwordcheck
F.24. pg_buffercache
F.25. pgcrypto
F.26. pg_freespacemap
F.27. pg_prewarm
F.28. pgrowlocks
F.29. pg_stat_statements
F.30. pgstattuple
F.31. pg_trgm
F.32. pg_visibility
F.33. postgres_fdw
F.34. seg
F.35. sepgsql
F.36. spi
F.37. sslinfo
F.38. tablefunc
F.39. tcn
F.40. test_decoding
F.41. tsm_system_rows
F.42. tsm_system_time
F.43. unaccent
F.44. uuid-ossp
F.45. xml2
G. Additional Supplied Programs
G.1. Client Applications
G.2. Server Applications
H. External Projects
H.1. Client Interfaces
H.2. Administration Tools
H.3. Procedural Languages
H.4. Extensions
I. The Source Code Repository
I.1. Getting The Source via Git
J. Documentation
J.1. DocBook
J.2. Tool Sets
J.3. Building The Documentation
J.4. Documentation Authoring
J.5. Style Guide
K. Acronyms
L. Obsolete or Renamed Features
L.1. pg_xlogdump renamed to pg_waldump
L.2. pg_resetxlog renamed to pg_resetwal
L.3. pg_receivexlog renamed to pg_receivewal
\ No newline at end of file +Part VIII. Appendixes

Part VIII. Appendixes

Table of Contents

A. PostgreSQL Error Codes
B. Date/Time Support
B.1. Date/Time Input Interpretation
B.2. Handling of Invalid or Ambiguous Timestamps
B.3. Date/Time Key Words
B.4. Date/Time Configuration Files
B.5. POSIX Time Zone Specifications
B.6. History of Units
B.7. Julian Dates
C. SQL Key Words
D. SQL Conformance
D.1. Supported Features
D.2. Unsupported Features
D.3. XML Limits and Conformance to SQL/XML
E. Release Notes
E.1. Release 11.16
E.2. Release 11.15
E.3. Release 11.14
E.4. Release 11.13
E.5. Release 11.12
E.6. Release 11.11
E.7. Release 11.10
E.8. Release 11.9
E.9. Release 11.8
E.10. Release 11.7
E.11. Release 11.6
E.12. Release 11.5
E.13. Release 11.4
E.14. Release 11.3
E.15. Release 11.2
E.16. Release 11.1
E.17. Release 11
E.18. Prior Releases
F. Additional Supplied Modules
F.1. adminpack
F.2. amcheck
F.3. auth_delay
F.4. auto_explain
F.5. bloom
F.6. btree_gin
F.7. btree_gist
F.8. citext
F.9. cube
F.10. dblink
F.11. dict_int
F.12. dict_xsyn
F.13. earthdistance
F.14. file_fdw
F.15. fuzzystrmatch
F.16. hstore
F.17. intagg
F.18. intarray
F.19. isn
F.20. lo
F.21. ltree
F.22. pageinspect
F.23. passwordcheck
F.24. pg_buffercache
F.25. pgcrypto
F.26. pg_freespacemap
F.27. pg_prewarm
F.28. pgrowlocks
F.29. pg_stat_statements
F.30. pgstattuple
F.31. pg_trgm
F.32. pg_visibility
F.33. postgres_fdw
F.34. seg
F.35. sepgsql
F.36. spi
F.37. sslinfo
F.38. tablefunc
F.39. tcn
F.40. test_decoding
F.41. tsm_system_rows
F.42. tsm_system_time
F.43. unaccent
F.44. uuid-ossp
F.45. xml2
G. Additional Supplied Programs
G.1. Client Applications
G.2. Server Applications
H. External Projects
H.1. Client Interfaces
H.2. Administration Tools
H.3. Procedural Languages
H.4. Extensions
I. The Source Code Repository
I.1. Getting The Source via Git
J. Documentation
J.1. DocBook
J.2. Tool Sets
J.3. Building The Documentation
J.4. Documentation Authoring
J.5. Style Guide
K. Acronyms
L. Obsolete or Renamed Features
L.1. pg_xlogdump renamed to pg_waldump
L.2. pg_resetxlog renamed to pg_resetwal
L.3. pg_receivexlog renamed to pg_receivewal
\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/applevel-consistency.html postgresql-11-11.16/doc/src/sgml/html/applevel-consistency.html --- postgresql-11-11.14/doc/src/sgml/html/applevel-consistency.html 2021-11-08 22:21:29.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/applevel-consistency.html 2022-05-09 21:37:04.000000000 +0000 @@ -1,5 +1,5 @@ -13.4. Data Consistency Checks at the Application Level

13.4. Data Consistency Checks at the Application Level

+13.4. Data Consistency Checks at the Application Level

13.4. Data Consistency Checks at the Application Level

It is very difficult to enforce business rules regarding data integrity using Read Committed transactions because the view of the data is shifting with each statement, and even a single statement may not @@ -111,4 +111,4 @@ UPDATE, or DELETE), so it is possible to obtain locks explicitly before the snapshot is frozen. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/archive-recovery-settings.html postgresql-11-11.16/doc/src/sgml/html/archive-recovery-settings.html --- postgresql-11-11.14/doc/src/sgml/html/archive-recovery-settings.html 2021-11-08 22:21:31.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/archive-recovery-settings.html 2022-05-09 21:37:06.000000000 +0000 @@ -1,5 +1,5 @@ -27.1. Archive Recovery Settings

27.1. Archive Recovery Settings

restore_command (string) +27.1. Archive Recovery Settings

27.1. Archive Recovery Settings

restore_command (string)

The local shell command to execute to retrieve an archived segment of @@ -78,4 +78,4 @@ anyway. An exception is that if the command was terminated by a signal or an error by the shell (such as command not found), the database will not proceed with startup. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/arrays.html postgresql-11-11.16/doc/src/sgml/html/arrays.html --- postgresql-11-11.14/doc/src/sgml/html/arrays.html 2021-11-08 22:21:26.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/arrays.html 2022-05-09 21:37:01.000000000 +0000 @@ -1,5 +1,5 @@ -8.15. Arrays

8.15. Arrays

+8.15. Arrays

8.15. Arrays

PostgreSQL allows columns of a table to be defined as variable-length multidimensional arrays. Arrays of any built-in or user-defined base type, enum type, composite type, range type, @@ -642,4 +642,4 @@ with than the array-literal syntax when writing array values in SQL commands. In ARRAY, individual element values are written the same way they would be written when not members of an array. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/auth-bsd.html postgresql-11-11.16/doc/src/sgml/html/auth-bsd.html --- postgresql-11-11.14/doc/src/sgml/html/auth-bsd.html 2021-11-08 22:21:30.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/auth-bsd.html 2022-05-09 21:37:05.000000000 +0000 @@ -1,5 +1,5 @@ -20.14. BSD Authentication

20.14. BSD Authentication

+20.14. BSD Authentication

20.14. BSD Authentication

This authentication method operates similarly to password except that it uses BSD Authentication to verify the password. BSD Authentication is used only @@ -18,4 +18,4 @@ operating system user running the server) must first be added to the auth group. The auth group exists by default on OpenBSD systems. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/auth-cert.html postgresql-11-11.16/doc/src/sgml/html/auth-cert.html --- postgresql-11-11.14/doc/src/sgml/html/auth-cert.html 2021-11-08 22:21:30.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/auth-cert.html 2022-05-09 21:37:05.000000000 +0000 @@ -1,5 +1,5 @@ -20.12. Certificate Authentication

20.12. Certificate Authentication

+20.12. Certificate Authentication

20.12. Certificate Authentication

This authentication method uses SSL client certificates to perform authentication. It is therefore only available for SSL connections. When using this authentication method, the server will require that @@ -24,4 +24,4 @@ method adds to the basic clientcert certificate validity test is a check that the cn attribute matches the database user name. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/auth-delay.html postgresql-11-11.16/doc/src/sgml/html/auth-delay.html --- postgresql-11-11.14/doc/src/sgml/html/auth-delay.html 2021-11-08 22:21:49.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/auth-delay.html 2022-05-09 21:37:25.000000000 +0000 @@ -1,5 +1,5 @@ -F.3. auth_delay

F.3. auth_delay

+F.3. auth_delay

F.3. auth_delay

auth_delay causes the server to pause briefly before reporting authentication failure, to make brute-force attacks on database passwords more difficult. Note that it does nothing to prevent @@ -25,4 +25,4 @@ auth_delay.milliseconds = '500'

F.3.2. Author

KaiGai Kohei -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/auth-ident.html postgresql-11-11.16/doc/src/sgml/html/auth-ident.html --- postgresql-11-11.14/doc/src/sgml/html/auth-ident.html 2021-11-08 22:21:30.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/auth-ident.html 2022-05-09 21:37:05.000000000 +0000 @@ -1,5 +1,5 @@ -20.8. Ident Authentication

20.8. Ident Authentication

+20.8. Ident Authentication

20.8. Ident Authentication

The ident authentication method works by obtaining the client's operating system user name from an ident server and using it as the allowed database user name (with an optional user name mapping). @@ -48,4 +48,4 @@ used when using the ident server with PostgreSQL, since PostgreSQL does not have any way to decrypt the returned string to determine the actual user name. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/auth-ldap.html postgresql-11-11.16/doc/src/sgml/html/auth-ldap.html --- postgresql-11-11.14/doc/src/sgml/html/auth-ldap.html 2021-11-08 22:21:30.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/auth-ldap.html 2022-05-09 21:37:05.000000000 +0000 @@ -1,5 +1,5 @@ -20.10. LDAP Authentication

20.10. LDAP Authentication

+20.10. LDAP Authentication

20.10. LDAP Authentication

This authentication method operates similarly to password except that it uses LDAP as the password verification method. LDAP is used only to validate @@ -170,4 +170,4 @@ Since LDAP often uses commas and spaces to separate the different parts of a DN, it is often necessary to use double-quoted parameter values when configuring LDAP options, as shown in the examples. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/auth-methods.html postgresql-11-11.16/doc/src/sgml/html/auth-methods.html --- postgresql-11-11.14/doc/src/sgml/html/auth-methods.html 2021-11-08 22:21:30.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/auth-methods.html 2022-05-09 21:37:05.000000000 +0000 @@ -1,5 +1,5 @@ -20.3. Authentication Methods

20.3. Authentication Methods

+20.3. Authentication Methods

20.3. Authentication Methods

PostgreSQL provides various methods for authenticating users: @@ -55,4 +55,4 @@

The following sections describe each of these authentication methods in more detail. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/auth-pam.html postgresql-11-11.16/doc/src/sgml/html/auth-pam.html --- postgresql-11-11.14/doc/src/sgml/html/auth-pam.html 2021-11-08 22:21:30.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/auth-pam.html 2022-05-09 21:37:05.000000000 +0000 @@ -1,5 +1,5 @@ -20.13. PAM Authentication

20.13. PAM Authentication

+20.13. PAM Authentication

20.13. PAM Authentication

This authentication method operates similarly to password except that it uses PAM (Pluggable Authentication Modules) as the authentication mechanism. The @@ -28,4 +28,4 @@ will fail because the PostgreSQL server is started by a non-root user. However, this is not an issue when PAM is configured to use LDAP or other authentication methods. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/auth-password.html postgresql-11-11.16/doc/src/sgml/html/auth-password.html --- postgresql-11-11.14/doc/src/sgml/html/auth-password.html 2021-11-08 22:21:30.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/auth-password.html 2022-05-09 21:37:05.000000000 +0000 @@ -1,5 +1,5 @@ -20.5. Password Authentication

20.5. Password Authentication

+20.5. Password Authentication

20.5. Password Authentication

There are several password-based authentication methods. These methods operate similarly but differ in how the users' passwords are stored on the server and how the password provided by a client is sent across the @@ -77,4 +77,4 @@ in postgresql.conf, make all users set new passwords, and change the authentication method specifications in pg_hba.conf to scram-sha-256. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/auth-peer.html postgresql-11-11.16/doc/src/sgml/html/auth-peer.html --- postgresql-11-11.14/doc/src/sgml/html/auth-peer.html 2021-11-08 22:21:30.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/auth-peer.html 2022-05-09 21:37:05.000000000 +0000 @@ -1,5 +1,5 @@ -20.9. Peer Authentication

20.9. Peer Authentication

+20.9. Peer Authentication

20.9. Peer Authentication

The peer authentication method works by obtaining the client's operating system user name from the kernel and using it as the allowed database user name (with optional user name mapping). This @@ -18,4 +18,4 @@ most flavors of BSD including macOS, and Solaris. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/auth-pg-hba-conf.html postgresql-11-11.16/doc/src/sgml/html/auth-pg-hba-conf.html --- postgresql-11-11.14/doc/src/sgml/html/auth-pg-hba-conf.html 2021-11-08 22:21:30.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/auth-pg-hba-conf.html 2022-05-09 21:37:05.000000000 +0000 @@ -1,5 +1,5 @@ -20.1. The pg_hba.conf File

20.1. The pg_hba.conf File

+20.1. The pg_hba.conf File

20.1. The pg_hba.conf File

Client authentication is controlled by a configuration file, which traditionally is named pg_hba.conf and is stored in the database @@ -435,4 +435,4 @@ # The database column can also use lists and file names: local db1,db2,@demodbs all md5 -


\ No newline at end of file +
\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/auth-radius.html postgresql-11-11.16/doc/src/sgml/html/auth-radius.html --- postgresql-11-11.14/doc/src/sgml/html/auth-radius.html 2021-11-08 22:21:30.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/auth-radius.html 2022-05-09 21:37:05.000000000 +0000 @@ -1,5 +1,5 @@ -20.11. RADIUS Authentication

20.11. RADIUS Authentication

+20.11. RADIUS Authentication

20.11. RADIUS Authentication

This authentication method operates similarly to password except that it uses RADIUS as the password verification method. RADIUS is used only to validate @@ -62,4 +62,4 @@

 host ... radius radiusservers="server1,server2" radiussecrets="""secret one"",""secret two"""
 

-

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/auth-trust.html postgresql-11-11.16/doc/src/sgml/html/auth-trust.html --- postgresql-11-11.14/doc/src/sgml/html/auth-trust.html 2021-11-08 22:21:30.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/auth-trust.html 2022-05-09 21:37:05.000000000 +0000 @@ -1,5 +1,5 @@ -20.4. Trust Authentication

20.4. Trust Authentication

+20.4. Trust Authentication

20.4. Trust Authentication

When trust authentication is specified, PostgreSQL assumes that anyone who can connect to the server is authorized to access the database with @@ -34,4 +34,4 @@ to the server by the pg_hba.conf lines that specify trust. It is seldom reasonable to use trust for any TCP/IP connections other than those from localhost (127.0.0.1). -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/auth-username-maps.html postgresql-11-11.16/doc/src/sgml/html/auth-username-maps.html --- postgresql-11-11.14/doc/src/sgml/html/auth-username-maps.html 2021-11-08 22:21:30.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/auth-username-maps.html 2022-05-09 21:37:05.000000000 +0000 @@ -1,5 +1,5 @@ -20.2. User Name Maps

20.2. User Name Maps

+20.2. User Name Maps

20.2. User Name Maps

When using an external authentication system such as Ident or GSSAPI, the name of the operating system user that initiated the connection might not be the same as the database user (role) that is to be used. @@ -91,4 +91,4 @@ omicron robert bob # bryanh can also connect as guest1 omicron bryanh guest1 -


\ No newline at end of file +
\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/auto-explain.html postgresql-11-11.16/doc/src/sgml/html/auto-explain.html --- postgresql-11-11.14/doc/src/sgml/html/auto-explain.html 2021-11-08 22:21:49.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/auto-explain.html 2022-05-09 21:37:25.000000000 +0000 @@ -1,5 +1,5 @@ -F.4. auto_explain

F.4. auto_explain

+F.4. auto_explain

F.4. auto_explain

The auto_explain module provides a means for logging execution plans of slow statements automatically, without having to run EXPLAIN @@ -153,4 +153,4 @@ Filter: indisunique

F.4.3. Author

Takahiro Itagaki -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/backup-dump.html postgresql-11-11.16/doc/src/sgml/html/backup-dump.html --- postgresql-11-11.14/doc/src/sgml/html/backup-dump.html 2021-11-08 22:21:31.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/backup-dump.html 2022-05-09 21:37:06.000000000 +0000 @@ -1,5 +1,5 @@ -25.1. SQL Dump

25.1. SQL Dump

+25.1. SQL Dump

25.1. SQL Dump

The idea behind this dump method is to generate a file with SQL commands that, when fed back to the server, will recreate the database in the same state as it was at the time of the dump. @@ -244,4 +244,4 @@ You can use pg_restore -j to restore a dump in parallel. This will work for any archive of either the "custom" or the "directory" archive mode, whether or not it has been created with pg_dump -j. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/backup-file.html postgresql-11-11.16/doc/src/sgml/html/backup-file.html --- postgresql-11-11.14/doc/src/sgml/html/backup-file.html 2021-11-08 22:21:31.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/backup-file.html 2022-05-09 21:37:06.000000000 +0000 @@ -1,5 +1,5 @@ -25.2. File System Level Backup

25.2. File System Level Backup

+25.2. File System Level Backup

25.2. File System Level Backup

An alternative backup strategy is to directly copy the files that PostgreSQL uses to store the data in the database; Section 18.2 explains where these files @@ -88,4 +88,4 @@ than an SQL dump. (pg_dump does not need to dump the contents of indexes for example, just the commands to recreate them.) However, taking a file system backup might be faster. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/backup.html postgresql-11-11.16/doc/src/sgml/html/backup.html --- postgresql-11-11.14/doc/src/sgml/html/backup.html 2021-11-08 22:21:31.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/backup.html 2022-05-09 21:37:06.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 25. Backup and Restore

Chapter 25. Backup and Restore

+Chapter 25. Backup and Restore

Chapter 25. Backup and Restore

As with everything that contains valuable data, PostgreSQL databases should be backed up regularly. While the procedure is essentially simple, it is important to have a clear understanding of @@ -10,4 +10,4 @@

  • SQL dump

  • File system level backup

  • Continuous archiving

Each has its own strengths and weaknesses; each is discussed in turn in the following sections. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/bgworker.html postgresql-11-11.16/doc/src/sgml/html/bgworker.html --- postgresql-11-11.14/doc/src/sgml/html/bgworker.html 2021-11-08 22:21:36.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/bgworker.html 2022-05-09 21:37:11.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 48. Background Worker Processes

Chapter 48. Background Worker Processes

+Chapter 48. Background Worker Processes

Chapter 48. Background Worker Processes

PostgreSQL can be extended to run user-supplied code in separate processes. Such processes are started, stopped and monitored by postgres, which permits them to have a lifetime closely linked to the server's status. @@ -230,4 +230,4 @@

The maximum number of registered background workers is limited by max_worker_processes. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/biblio.html postgresql-11-11.16/doc/src/sgml/html/biblio.html --- postgresql-11-11.14/doc/src/sgml/html/biblio.html 2021-11-08 22:21:51.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/biblio.html 2022-05-09 21:37:26.000000000 +0000 @@ -1,5 +1,5 @@ -Bibliography

Bibliography

+Bibliography

Bibliography

Selected references and readings for SQL and PostgreSQL.

@@ -19,4 +19,4 @@ system”. M. Stonebraker, M. Hearst, and S. Potamianos. SIGMOD Record 18(3). Sept. 1989.

[ston89b] The case for partial indexes”. M. Stonebraker. SIGMOD Record 18(4). Dec. 1989. 4-11.

[ston90a] The implementation of POSTGRES”. M. Stonebraker, L. A. Rowe, and M. Hirohama. Transactions on Knowledge and Data Engineering 2(1). IEEE. March 1990.

[ston90b] On - Rules, Procedures, Caching and Views in Database Systems”. M. Stonebraker, A. Jhingran, J. Goh, and S. Potamianos. ACM-SIGMOD Conference on Management of Data, June 1990.

\ No newline at end of file + Rules, Procedures, Caching and Views in Database Systems”. M. Stonebraker, A. Jhingran, J. Goh, and S. Potamianos. ACM-SIGMOD Conference on Management of Data, June 1990.

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/bki-commands.html postgresql-11-11.16/doc/src/sgml/html/bki-commands.html --- postgresql-11-11.14/doc/src/sgml/html/bki-commands.html 2021-11-08 22:21:47.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/bki-commands.html 2022-05-09 21:37:22.000000000 +0000 @@ -1,5 +1,5 @@ -70.4. BKI Commands

70.4. BKI Commands

+70.4. BKI Commands

70.4. BKI Commands

create tablename tableoid @@ -111,4 +111,4 @@ is postponed.

build indices

Fill in the indices that have previously been declared. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/bki-example.html postgresql-11-11.16/doc/src/sgml/html/bki-example.html --- postgresql-11-11.14/doc/src/sgml/html/bki-example.html 2021-11-08 22:21:47.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/bki-example.html 2022-05-09 21:37:22.000000000 +0000 @@ -1,5 +1,5 @@ -70.6. BKI Example

70.6. BKI Example

+70.6. BKI Example

70.6. BKI Example

The following sequence of commands will create the table test_table with OID 420, having two columns cola and colb of type @@ -12,4 +12,4 @@ insert OID=422 ( 2 _null_ ) close test_table

-

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/bki-format.html postgresql-11-11.16/doc/src/sgml/html/bki-format.html --- postgresql-11-11.14/doc/src/sgml/html/bki-format.html 2021-11-08 22:21:47.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/bki-format.html 2022-05-09 21:37:22.000000000 +0000 @@ -1,5 +1,5 @@ -70.3. BKI File Format

70.3. BKI File Format

+70.3. BKI File Format

70.3. BKI File Format

This section describes how the PostgreSQL backend interprets BKI files. This description will be easier to understand if the postgres.bki @@ -16,4 +16,4 @@ strings. Everything is case sensitive.

Lines starting with # are ignored. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/bki-structure.html postgresql-11-11.16/doc/src/sgml/html/bki-structure.html --- postgresql-11-11.14/doc/src/sgml/html/bki-structure.html 2021-11-08 22:21:47.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/bki-structure.html 2022-05-09 21:37:22.000000000 +0000 @@ -1,5 +1,5 @@ -70.5. Structure of the Bootstrap BKI File

70.5. Structure of the Bootstrap BKI File

+70.5. Structure of the Bootstrap BKI File

70.5. Structure of the Bootstrap BKI File

The open command cannot be used until the tables it uses exist and have entries for the table that is to be opened. (These minimum tables are pg_class, @@ -39,4 +39,4 @@

There are doubtless other, undocumented ordering dependencies. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/bki.html postgresql-11-11.16/doc/src/sgml/html/bki.html --- postgresql-11-11.14/doc/src/sgml/html/bki.html 2021-11-08 22:21:47.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/bki.html 2022-05-09 21:37:22.000000000 +0000 @@ -1,5 +1,5 @@ -Chapter 70. System Catalog Declarations and Initial Contents

Chapter 70. System Catalog Declarations and Initial Contents

+Chapter 70. System Catalog Declarations and Initial Contents

Chapter 70. System Catalog Declarations and Initial Contents

PostgreSQL uses many different system catalogs to keep track of the existence and properties of database objects, such as tables and functions. Physically there is no difference between a system @@ -57,4 +57,4 @@ and/or initial data files. The rest of this chapter gives some information about that, and for completeness describes the BKI file format. -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/bloom.html postgresql-11-11.16/doc/src/sgml/html/bloom.html --- postgresql-11-11.14/doc/src/sgml/html/bloom.html 2021-11-08 22:21:49.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/bloom.html 2022-05-09 21:37:25.000000000 +0000 @@ -1,5 +1,5 @@ -F.5. bloom

F.5. bloom

+F.5. bloom

F.5. bloom

bloom provides an index access method based on Bloom filters.

@@ -187,4 +187,4 @@

Oleg Bartunov , Postgres Professional, Moscow, Russia -

\ No newline at end of file +

\ No newline at end of file diff -Nru postgresql-11-11.14/doc/src/sgml/html/bookindex.html postgresql-11-11.16/doc/src/sgml/html/bookindex.html --- postgresql-11-11.14/doc/src/sgml/html/bookindex.html 2021-11-08 22:21:52.000000000 +0000 +++ postgresql-11-11.16/doc/src/sgml/html/bookindex.html 2022-05-09 21:37:27.000000000 +0000 @@ -1,5 +1,5 @@ -Index

Index

Index

A

abbrev, Network Address Functions and Operators
ABORT, ABORT
abs, Mathematical Functions and Operators
acos, Mathematical Functions and Operators
acosd, Mathematical Functions and Operators
administration tools
externally maintained, Administration Tools
adminpack, adminpack
advisory lock, Advisory Locks
age, Date/Time Functions and Operators
aggregate function, Aggregate Functions, Aggregate Expressions, Aggregate Functions, User-defined Aggregates
built-in, Aggregate Functions
invocation, Aggregate Expressions
moving aggregate, Moving-Aggregate Mode
ordered set, Ordered-Set Aggregates
partial aggregation, Partial Aggregation
polymorphic, Polymorphic and Variadic Aggregates
support functions for, Support Functions for Aggregates
user-defined, User-defined Aggregates
variadic, Polymorphic and Variadic Aggregates
AIX, AIX
installation on, AIX
IPC configuration, Shared Memory and Semaphores
akeys, hstore Operators and Functions
alias, Table and Column Aliases, Column Labels
for table name in query, Joins Between Tables
in the FROM clause, Table and Column Aliases
in the select list, Column Labels
ALL, Subquery Expressions, Row and Array Comparisons
allow_system_table_mods configuration parameter, Developer Options
ALTER AGGREGATE, ALTER AGGREGATE
ALTER COLLATION, ALTER COLLATION
ALTER CONVERSION, ALTER CONVERSION
ALTER DATABASE, ALTER DATABASE
ALTER DEFAULT PRIVILEGES, ALTER DEFAULT PRIVILEGES
ALTER DOMAIN, ALTER DOMAIN
ALTER EVENT TRIGGER, ALTER EVENT TRIGGER
ALTER EXTENSION, ALTER EXTENSION
ALTER FOREIGN DATA WRAPPER, ALTER FOREIGN DATA WRAPPER
ALTER FOREIGN TABLE, ALTER FOREIGN TABLE
ALTER FUNCTION, ALTER FUNCTION
ALTER GROUP, ALTER GROUP
ALTER INDEX, ALTER INDEX
ALTER LANGUAGE, ALTER LANGUAGE
ALTER LARGE OBJECT, ALTER LARGE OBJECT
ALTER MATERIALIZED VIEW, ALTER MATERIALIZED VIEW
ALTER OPERATOR, ALTER OPERATOR
ALTER OPERATOR CLASS, ALTER OPERATOR CLASS
ALTER OPERATOR FAMILY, ALTER OPERATOR FAMILY
ALTER POLICY, ALTER POLICY
ALTER PROCEDURE, ALTER PROCEDURE
ALTER PUBLICATION, ALTER PUBLICATION
ALTER ROLE, Role Attributes, ALTER ROLE
ALTER ROUTINE, ALTER ROUTINE
ALTER RULE, ALTER RULE
ALTER SCHEMA, ALTER SCHEMA
ALTER SEQUENCE, ALTER SEQUENCE
ALTER SERVER, ALTER SERVER
ALTER STATISTICS, ALTER STATISTICS
ALTER SUBSCRIPTION, ALTER SUBSCRIPTION
ALTER SYSTEM, ALTER SYSTEM
ALTER TABLE, ALTER TABLE
ALTER TABLESPACE, ALTER TABLESPACE
ALTER TEXT SEARCH CONFIGURATION, ALTER TEXT SEARCH CONFIGURATION
ALTER TEXT SEARCH DICTIONARY, ALTER TEXT SEARCH DICTIONARY
ALTER TEXT SEARCH PARSER, ALTER TEXT SEARCH PARSER
ALTER TEXT SEARCH TEMPLATE, ALTER TEXT SEARCH TEMPLATE
ALTER TRIGGER, ALTER TRIGGER
ALTER TYPE, ALTER TYPE
ALTER USER, ALTER USER
ALTER USER MAPPING, ALTER USER MAPPING
ALTER VIEW, ALTER VIEW
amcheck, amcheck
ANALYZE, Updating Planner Statistics, ANALYZE
AND (operator), Logical Operators
anonymous code blocks, DO
any, Pseudo-Types
ANY, Aggregate Functions, Subquery Expressions, Row and Array Comparisons
anyarray, Pseudo-Types
anyelement, Pseudo-Types
anyenum, Pseudo-Types
anynonarray, Pseudo-Types
anyrange, Pseudo-Types
applicable role, applicable_roles
application_name configuration parameter, What To Log
arbitrary precision numbers, Arbitrary Precision Numbers
archive_cleanup_command recovery parameter, Archive Recovery Settings
archive_command configuration parameter, Archiving
archive_mode configuration parameter, Archiving
archive_timeout configuration parameter, Archiving
area, Geometric Functions and Operators
armor, armor(), dearmor()
array, Arrays
accessing, Accessing Arrays
constant, Array Value Input
constructor, Array Constructors
declaration, Declaration of Array Types
I/O, Array Input and Output Syntax
modifying, Modifying Arrays
of user-defined type, User-defined Types
searching, Searching in Arrays
ARRAY, Array Constructors, UNION, CASE, and Related Constructs
determination of result type, UNION, CASE, and Related Constructs
array_agg, Aggregate Functions, Functions
array_append, Array Functions and Operators
array_cat, Array Functions and Operators
array_dims, Array Functions and Operators
array_fill, Array Functions and Operators
array_length, Array Functions and Operators
array_lower, Array Functions and Operators
array_ndims, Array Functions and Operators
array_nulls configuration parameter, Previous PostgreSQL Versions
array_position, Array Functions and Operators
array_positions, Array Functions and Operators
array_prepend, Array Functions and Operators
array_remove, Array Functions and Operators
array_replace, Array Functions and Operators
array_to_json, JSON Functions and Operators
array_to_string, Array Functions and Operators
array_to_tsvector, Text Search Functions and Operators
array_upper, Array Functions and Operators
ascii, String Functions and Operators
asin, Mathematical Functions and Operators
asind, Mathematical Functions and Operators
ASSERT
in PL/pgSQL, Checking Assertions
assertions
in PL/pgSQL, Checking Assertions
asynchronous commit, Asynchronous Commit
AT TIME ZONE, AT TIME ZONE
atan, Mathematical Functions and Operators
atan2, Mathematical Functions and Operators
atan2d, Mathematical Functions and Operators
atand, Mathematical Functions and Operators
authentication_timeout configuration parameter, Authentication
auth_delay, auth_delay
auth_delay.milliseconds configuration parameter, Configuration Parameters
auto-increment (see serial)
autocommit
bulk-loading data, Disable Autocommit
psql, Variables
autovacuum
configuration parameters, Automatic Vacuuming
general information, The Autovacuum Daemon
autovacuum configuration parameter, Automatic Vacuuming
autovacuum_analyze_scale_factor configuration parameter, Automatic Vacuuming
autovacuum_analyze_threshold configuration parameter, Automatic Vacuuming
autovacuum_freeze_max_age configuration parameter, Automatic Vacuuming
autovacuum_max_workers configuration parameter, Automatic Vacuuming
autovacuum_multixact_freeze_max_age configuration parameter, Automatic Vacuuming
autovacuum_naptime configuration parameter, Automatic Vacuuming
autovacuum_vacuum_cost_delay configuration parameter, Automatic Vacuuming
autovacuum_vacuum_cost_limit configuration parameter, Automatic Vacuuming
autovacuum_vacuum_scale_factor configuration parameter, Automatic Vacuuming
autovacuum_vacuum_threshold configuration parameter, Automatic Vacuuming
autovacuum_work_mem configuration parameter, Memory
auto_explain, auto_explain
auto_explain.log_analyze configuration parameter, Configuration Parameters
auto_explain.log_buffers configuration parameter, Configuration Parameters
auto_explain.log_format configuration parameter, Configuration Parameters
auto_explain.log_min_duration configuration parameter, Configuration Parameters
auto_explain.log_nested_statements configuration parameter, Configuration Parameters
auto_explain.log_timing configuration parameter, Configuration Parameters
auto_explain.log_triggers configuration parameter, Configuration Parameters
auto_explain.log_verbose configuration parameter, Configuration Parameters
auto_explain.sample_rate configuration parameter, Configuration Parameters
avals, hstore Operators and Functions
average, Aggregate Functions
avg, Aggregate Functions

B

B-tree (see index)
backend_flush_after configuration parameter, Asynchronous Behavior
Background workers, Background Worker Processes
backslash escapes, String Constants with C-style Escapes
backslash_quote configuration parameter, Previous PostgreSQL Versions
backup, Backup Control Functions, Backup and Restore
base type, The PostgreSQL Type System
BASE_BACKUP, Streaming Replication Protocol
BEGIN, BEGIN
BETWEEN, Comparison Functions and Operators
BETWEEN SYMMETRIC, Comparison Functions and Operators
BGWORKER_BACKEND_DATABASE_CONNECTION, Background Worker Processes
BGWORKER_SHMEM_ACCESS, Background Worker Processes
bgwriter_delay configuration parameter, Background Writer
bgwriter_flush_after configuration parameter, Background Writer
bgwriter_lru_maxpages configuration parameter, Background Writer
bgwriter_lru_multiplier configuration parameter, Background Writer
bigint, Numeric Constants, Integer Types
bigserial, Serial Types
binary data, Binary Data Types, Binary String Functions and Operators
functions, Binary String Functions and Operators
binary string
concatenation, Binary String Functions and Operators
length, Binary String Functions and Operators
bison, Requirements
bit string, Bit-string Constants, Bit String Types
constant, Bit-string Constants
data type, Bit String Types
bit strings, Bit String Functions and Operators
functions, Bit String Functions and Operators
bitmap scan, Combining Multiple Indexes, Planner Method Configuration
bit_and, Aggregate Functions
bit_length, String Functions and Operators
bit_or, Aggregate Functions
BLOB (see large object)
block_size configuration parameter, Preset Options
bloom, bloom
bonjour configuration parameter, Connection Settings
bonjour_name configuration parameter, Connection Settings
Boolean, Boolean Type
data type, Boolean Type
operators (see operators, logical)
bool_and, Aggregate Functions
bool_or, Aggregate Functions
booting
starting the server during, Starting the Database Server
box, Geometric Functions and Operators
box (data type), Boxes
BRIN (see index)
brin_desummarize_range, Index Maintenance Functions
brin_metapage_info, BRIN Functions
brin_page_items, BRIN Functions
brin_page_type, BRIN Functions
brin_revmap_data, BRIN Functions
brin_summarize_new_values, Index Maintenance Functions
brin_summarize_range, Index Maintenance Functions
broadcast, Network Address Functions and Operators
BSD Authentication, BSD Authentication
btree_gin, btree_gin
btree_gist, btree_gist
btrim, String Functions and Operators, Binary String Functions and Operators
bt_index_check, Functions
bt_index_parent_check, Functions
bt_metap, B-tree Functions
bt_page_items, B-tree Functions
bt_page_stats, B-tree Functions
bytea, Binary Data Types
bytea_output configuration parameter, Statement Behavior

C

C, libpq - C Library, ECPG - Embedded SQL in C
C++, Using C++ for Extensibility
CALL, CALL
canceling, Canceling Queries in Progress
SQL command, Canceling Queries in Progress
cardinality, Array Functions and Operators
CASCADE, Dependency Tracking
with DROP, Dependency Tracking
foreign key action, Foreign Keys
Cascading Replication, High Availability, Load Balancing, and Replication
CASE, Conditional Expressions, UNION, CASE, and Related Constructs
determination of result type, UNION, CASE, and Related Constructs
case sensitivity
of SQL commands, Identifiers and Key Words
cast, CREATE CAST
I/O conversion, CREATE CAST
cbrt, Mathematical Functions and Operators
ceil, Mathematical Functions and Operators
ceiling, Mathematical Functions and Operators
center, Geometric Functions and Operators
Certificate, Certificate Authentication
char, Character Types
character, Character Types
character set, Locale and Formatting, Preset Options, Character Set Support
character string, String Constants, Character Types
concatenation, String Functions and Operators
constant, String Constants
data types, Character Types
length, String Functions and Operators
character varying, Character Types
char_length, String Functions and Operators
check constraint, Check Constraints
CHECK OPTION, CREATE VIEW
checkpoint, WAL Configuration
CHECKPOINT, CHECKPOINT
checkpoint_completion_target configuration parameter, Checkpoints
checkpoint_flush_after configuration parameter, Checkpoints
checkpoint_timeout configuration parameter, Checkpoints
checkpoint_warning configuration parameter, Checkpoints
check_function_bodies configuration parameter, Statement Behavior
chr, String Functions and Operators
cid, Object Identifier Types
cidr, cidr
circle, Circles, Geometric Functions and Operators
citext, citext
client authentication, Client Authentication
timeout during, Authentication
client_encoding configuration parameter, Locale and Formatting
client_min_messages configuration parameter, Statement Behavior
clock_timestamp, Date/Time Functions and Operators
CLOSE, CLOSE
cluster
of databases (see database cluster)
CLUSTER, CLUSTER
clusterdb, clusterdb
clustering, High Availability, Load Balancing, and Replication
cluster_name configuration parameter, Process Title
cmax, System Columns
cmin, System Columns
COALESCE, COALESCE
COLLATE, Collation Expressions
collation, Collation Support
in PL/pgSQL, Collation of PL/pgSQL Variables
in SQL functions, SQL Functions with Collations
collation for, System Information Functions
column, Concepts, Table Basics
adding, Adding a Column
removing, Removing a Column
renaming, Renaming a Column
system column, System Columns
column data type
changing, Changing a Column's Data Type
column reference, Column References
col_description, System Information Functions
comment, Comments
about database objects, System Information Functions
in SQL, Comments
COMMENT, COMMENT
COMMIT, COMMIT
COMMIT PREPARED, COMMIT PREPARED
commit_delay configuration parameter, Settings
commit_siblings configuration parameter, Settings
common table expression (see WITH)
comparison, Comparison Functions and Operators, Subquery Expressions
composite type, Row and Array Comparisons
operators, Comparison Functions and Operators
row constructor, Row and Array Comparisons
subquery result row, Subquery Expressions
compiling, Building libpq Programs
libpq applications, Building libpq Programs
composite type, Composite Types, The PostgreSQL Type System
comparison, Row and Array Comparisons
constant, Constructing Composite Values
constructor, Row Constructors
computed field, Using Composite Types in Queries
concat, String Functions and Operators
concat_ws, String Functions and Operators
concurrency, Concurrency Control
conditional expression, Conditional Expressions
configuration
of recovery
of a standby server, Recovery Configuration
of the server, Server Configuration
of the server
functions, Configuration Settings Functions
configure, Installation Procedure
config_file configuration parameter, File Locations
conjunction, Logical Operators
connectby, Functions Provided, connectby
connection service file, The Connection Service File
conninfo, Connection Strings
constant, Constants
constraint, Constraints
adding, Adding a Constraint
check, Check Constraints
exclusion, Exclusion Constraints
foreign key, Foreign Keys
name, Check Constraints
NOT NULL, Not-Null Constraints
primary key, Primary Keys
removing, Removing a Constraint
unique, Unique Constraints
constraint exclusion, Partitioning and Constraint Exclusion, Other Planner Options
constraint_exclusion configuration parameter, Other Planner Options
container type, The PostgreSQL Type System
CONTINUE
in PL/pgSQL, CONTINUE
continuous archiving, Backup and Restore
in standby, Continuous archiving in standby
control file, Extension Files
convert, String Functions and Operators
convert_from, String Functions and Operators
convert_to, String Functions and Operators
COPY, Populating a Table With Rows, Functions Associated with the COPY Command, COPY
with libpq, Functions Associated with the COPY Command
corr, Aggregate Functions
correlation, Aggregate Functions
in the query planner, Extended Statistics
cos, Mathematical Functions and Operators
cosd, Mathematical Functions and Operators
cot, Mathematical Functions and Operators
cotd, Mathematical Functions and Operators
count, Aggregate Functions
covariance
population, Aggregate Functions
sample, Aggregate Functions
covar_pop, Aggregate Functions
covar_samp, Aggregate Functions
covering index, Index-Only Scans and Covering Indexes
cpu_index_tuple_cost configuration parameter, Planner Cost Constants
cpu_operator_cost configuration parameter, Planner Cost Constants
cpu_tuple_cost configuration parameter, Planner Cost Constants
CREATE ACCESS METHOD, CREATE ACCESS METHOD
CREATE AGGREGATE, CREATE AGGREGATE
CREATE CAST, CREATE CAST
CREATE COLLATION, CREATE COLLATION
CREATE CONVERSION, CREATE CONVERSION
CREATE DATABASE, Creating a Database, CREATE DATABASE
CREATE DOMAIN, CREATE DOMAIN
CREATE EVENT TRIGGER, CREATE EVENT TRIGGER
CREATE EXTENSION, CREATE EXTENSION
CREATE FOREIGN DATA WRAPPER, CREATE FOREIGN DATA WRAPPER
CREATE FOREIGN TABLE, CREATE FOREIGN TABLE
CREATE FUNCTION, CREATE FUNCTION
CREATE GROUP, CREATE GROUP
CREATE INDEX, CREATE INDEX
CREATE LANGUAGE, CREATE LANGUAGE
CREATE MATERIALIZED VIEW, CREATE MATERIALIZED VIEW
CREATE OPERATOR, CREATE OPERATOR
CREATE OPERATOR CLASS, CREATE OPERATOR CLASS
CREATE OPERATOR FAMILY, CREATE OPERATOR FAMILY
CREATE POLICY, CREATE POLICY
CREATE PROCEDURE, CREATE PROCEDURE
CREATE PUBLICATION, CREATE PUBLICATION
CREATE ROLE, Database Roles, CREATE ROLE
CREATE RULE, CREATE RULE
CREATE SCHEMA, CREATE SCHEMA
CREATE SEQUENCE, CREATE SEQUENCE
CREATE SERVER, CREATE SERVER
CREATE STATISTICS, CREATE STATISTICS
CREATE SUBSCRIPTION, CREATE SUBSCRIPTION
CREATE TABLE, Creating a New Table, CREATE TABLE
CREATE TABLE AS, CREATE TABLE AS
CREATE TABLESPACE, Tablespaces, CREATE TABLESPACE
CREATE TEXT SEARCH CONFIGURATION, CREATE TEXT SEARCH CONFIGURATION
CREATE TEXT SEARCH DICTIONARY, CREATE TEXT SEARCH DICTIONARY
CREATE TEXT SEARCH PARSER, CREATE TEXT SEARCH PARSER
CREATE TEXT SEARCH TEMPLATE, CREATE TEXT SEARCH TEMPLATE
CREATE TRANSFORM, CREATE TRANSFORM
CREATE TRIGGER, CREATE TRIGGER
CREATE TYPE, CREATE TYPE
CREATE USER, CREATE USER
CREATE USER MAPPING, CREATE USER MAPPING
CREATE VIEW, CREATE VIEW
createdb, Creating a Database, Creating a Database, createdb
createuser, Database Roles, createuser
CREATE_REPLICATION_SLOT, Streaming Replication Protocol
cross compilation, Installation Procedure
cross join, Joined Tables
crosstab, crosstab(text), crosstabN(text), crosstab(text, text)
crypt, crypt()
cstring, Pseudo-Types
ctid, System Columns
CTID, View Rules in Non-SELECT Statements
CUBE, GROUPING SETS, CUBE, and ROLLUP
cube (extension), cube
cume_dist, Window Functions
hypothetical, Aggregate Functions
current_catalog, System Information Functions
current_database, System Information Functions
current_date, Date/Time Functions and Operators
current_logfiles
and the log_destination configuration parameter, Where To Log
and the pg_current_logfile function, System Information Functions
current_query, System Information Functions
current_role, System Information Functions
current_schema, System Information Functions
current_schemas, System Information Functions
current_setting, Configuration Settings Functions
current_time, Date/Time Functions and Operators
current_timestamp, Date/Time Functions and Operators
current_user, System Information Functions
currval, Sequence Manipulation Functions
cursor, Cursors, CLOSE, DECLARE, EXPLAIN, FETCH, MOVE
CLOSE, CLOSE
DECLARE, DECLARE
FETCH, FETCH
in PL/pgSQL, Cursors
MOVE, MOVE
showing the query plan, EXPLAIN
cursor_tuple_fraction configuration parameter, Other Planner Options
custom scan provider, Writing A Custom Scan Provider
handler for, Writing A Custom Scan Provider
Cygwin, Cygwin
installation on, Cygwin

D

data area (see database cluster)
data partitioning, High Availability, Load Balancing, and Replication
data type, Data Types, Numeric Types, Enumerated Types, Domain Types, Type Conversion, The PostgreSQL Type System, The PostgreSQL Type System, The PostgreSQL Type System, Polymorphic Types, Base Types in C-Language Functions, User-defined Types
base, The PostgreSQL Type System
category, Overview
composite, The PostgreSQL Type System
constant, Constants of Other Types
container, The PostgreSQL Type System
conversion, Type Conversion
domain, Domain Types
enumerated (enum), Enumerated Types
internal organization, Base Types in C-Language Functions
numeric, Numeric Types
polymorphic, Polymorphic Types
type cast, Type Casts
user-defined, User-defined Types
database, Creating a Database, Managing Databases
creating, Creating a Database
privilege to create, Role Attributes
database activity, Monitoring Database Activity
monitoring, Monitoring Database Activity
database cluster, Concepts, Creating a Database Cluster
data_checksums configuration parameter, Preset Options
data_directory configuration parameter, File Locations
data_directory_mode configuration parameter, Preset Options
data_sync_retry configuration parameter, Error Handling
date, Date/Time Types, Dates
constants, Special Values
current, Current Date/Time
output format, Date/Time Output
(see also formatting)
DateStyle configuration parameter, Locale and Formatting
date_part, Date/Time Functions and Operators, EXTRACT, date_part
date_trunc, Date/Time Functions and Operators, date_trunc
dblink, dblink, dblink
dblink_build_sql_delete, dblink_build_sql_delete
dblink_build_sql_insert, dblink_build_sql_insert
dblink_build_sql_update, dblink_build_sql_update
dblink_cancel_query, dblink_cancel_query
dblink_close, dblink_close
dblink_connect, dblink_connect
dblink_connect_u, dblink_connect_u
dblink_disconnect, dblink_disconnect
dblink_error_message, dblink_error_message
dblink_exec, dblink_exec
dblink_fetch, dblink_fetch
dblink_get_connections, dblink_get_connections
dblink_get_notify, dblink_get_notify
dblink_get_pkey, dblink_get_pkey
dblink_get_result, dblink_get_result
dblink_is_busy, dblink_is_busy
dblink_open, dblink_open
dblink_send_query, dblink_send_query
db_user_namespace configuration parameter, Authentication
deadlock, Deadlocks
timeout during, Lock Management
deadlock_timeout configuration parameter, Lock Management
DEALLOCATE, DEALLOCATE
dearmor, armor(), dearmor()
debug_assertions configuration parameter, Preset Options
debug_deadlocks configuration parameter, Developer Options
debug_pretty_print configuration parameter, What To Log
debug_print_parse configuration parameter, What To Log
debug_print_plan configuration parameter, What To Log
debug_print_rewritten configuration parameter, What To Log
decimal (see numeric)
DECLARE, DECLARE
decode, String Functions and Operators, Binary String Functions and Operators
decode_bytea
in PL/Perl, Utility Functions in PL/Perl
decrypt, Raw Encryption Functions
decrypt_iv, Raw Encryption Functions
default value, Default Values
changing, Changing a Column's Default Value
default_statistics_target configuration parameter, Other Planner Options
default_tablespace configuration parameter, Statement Behavior
default_text_search_config configuration parameter, Locale and Formatting
default_transaction_deferrable configuration parameter, Statement Behavior
default_transaction_isolation configuration parameter, Statement Behavior
default_transaction_read_only configuration parameter, Statement Behavior
default_with_oids configuration parameter, Previous PostgreSQL Versions
deferrable transaction, Statement Behavior
setting, SET TRANSACTION
setting default, Statement Behavior
defined, hstore Operators and Functions
degrees, Mathematical Functions and Operators
delay, Delaying Execution
DELETE, Deletions, Deleting Data, Returning Data From Modified Rows, DELETE
RETURNING, Returning Data From Modified Rows
delete, hstore Operators and Functions
deleting, Deleting Data
dense_rank, Window Functions
hypothetical, Aggregate Functions
diameter, Geometric Functions and Operators
dict_int, dict_int
dict_xsyn, dict_xsyn
difference, Soundex
digest, digest()
dirty read, Transaction Isolation
DISCARD, DISCARD
disjunction, Logical Operators
disk drive, WAL Internals
disk space, Recovering Disk Space
disk usage, Determining Disk Usage
DISTINCT, Querying a Table, DISTINCT
div, Mathematical Functions and Operators
dmetaphone, Double Metaphone
dmetaphone_alt, Double Metaphone
DO, DO
document, What Is a Document?
text search, What Is a Document?
dollar quoting, Dollar-quoted String Constants
domain, Domain Types
double precision, Floating-Point Types
DROP ACCESS METHOD, DROP ACCESS METHOD
DROP AGGREGATE, DROP AGGREGATE
DROP CAST, DROP CAST
DROP COLLATION, DROP COLLATION
DROP CONVERSION, DROP CONVERSION
DROP DATABASE, Destroying a Database, DROP DATABASE
DROP DOMAIN, DROP DOMAIN
DROP EVENT TRIGGER, DROP EVENT TRIGGER
DROP EXTENSION, DROP EXTENSION
DROP FOREIGN DATA WRAPPER, DROP FOREIGN DATA WRAPPER
DROP FOREIGN TABLE, DROP FOREIGN TABLE
DROP FUNCTION, DROP FUNCTION
DROP GROUP, DROP GROUP
DROP INDEX, DROP INDEX
DROP LANGUAGE, DROP LANGUAGE
DROP MATERIALIZED VIEW, DROP MATERIALIZED VIEW
DROP OPERATOR, DROP OPERATOR
DROP OPERATOR CLASS, DROP OPERATOR CLASS
DROP OPERATOR FAMILY, DROP OPERATOR FAMILY
DROP OWNED, DROP OWNED
DROP POLICY, DROP POLICY
DROP PROCEDURE, DROP PROCEDURE
DROP PUBLICATION, DROP PUBLICATION
DROP ROLE, Database Roles, DROP ROLE
DROP ROUTINE, DROP ROUTINE
DROP RULE, DROP RULE
DROP SCHEMA, DROP SCHEMA
DROP SEQUENCE, DROP SEQUENCE
DROP SERVER, DROP SERVER
DROP STATISTICS, DROP STATISTICS
DROP SUBSCRIPTION, DROP SUBSCRIPTION
DROP TABLE, Creating a New Table, DROP TABLE
DROP TABLESPACE, DROP TABLESPACE
DROP TEXT SEARCH CONFIGURATION, DROP TEXT SEARCH CONFIGURATION
DROP TEXT SEARCH DICTIONARY, DROP TEXT SEARCH DICTIONARY
DROP TEXT SEARCH PARSER, DROP TEXT SEARCH PARSER
DROP TEXT SEARCH TEMPLATE, DROP TEXT SEARCH TEMPLATE
DROP TRANSFORM, DROP TRANSFORM
DROP TRIGGER, DROP TRIGGER
DROP TYPE, DROP TYPE
DROP USER, DROP USER
DROP USER MAPPING, DROP USER MAPPING
DROP VIEW, DROP VIEW
dropdb, Destroying a Database, dropdb
dropuser, Database Roles, dropuser
DROP_REPLICATION_SLOT, Streaming Replication Protocol
DTD, Creating XML Values
DTrace, Installation Procedure, Dynamic Tracing
duplicate, Querying a Table
duplicates, DISTINCT
dynamic loading, Other Defaults, Dynamic Loading
dynamic_library_path, Dynamic Loading
dynamic_library_path configuration parameter, Other Defaults
dynamic_shared_memory_type configuration parameter, Memory

E

each, hstore Operators and Functions
earth, Cube-based Earth Distances
earthdistance, earthdistance
earth_box, Cube-based Earth Distances
earth_distance, Cube-based Earth Distances
ECPG, ECPG - Embedded SQL in C
ecpg, ecpg
effective_cache_size configuration parameter, Planner Cost Constants
effective_io_concurrency configuration parameter, Asynchronous Behavior
elog, Reporting Errors Within the Server
in PL/Perl, Utility Functions in PL/Perl
in PL/Python, Utility Functions
in PL/Tcl, Database Access from PL/Tcl
embedded SQL, ECPG - Embedded SQL in C
in C, ECPG - Embedded SQL in C
enabled role, enabled_roles
enable_bitmapscan configuration parameter, Planner Method Configuration
enable_gathermerge configuration parameter, Planner Method Configuration
enable_hashagg configuration parameter, Planner Method Configuration
enable_hashjoin configuration parameter, Planner Method Configuration
enable_indexonlyscan configuration parameter, Planner Method Configuration
enable_indexscan configuration parameter, Planner Method Configuration
enable_material configuration parameter, Planner Method Configuration
enable_mergejoin configuration parameter, Planner Method Configuration
enable_nestloop configuration parameter, Planner Method Configuration
enable_parallel_append configuration parameter, Planner Method Configuration
enable_parallel_hash configuration parameter, Planner Method Configuration
enable_partitionwise_aggregate configuration parameter, Planner Method Configuration
enable_partitionwise_join configuration parameter, Planner Method Configuration
enable_partition_pruning configuration parameter, Planner Method Configuration
enable_seqscan configuration parameter, Planner Method Configuration
enable_sort configuration parameter, Planner Method Configuration
enable_tidscan configuration parameter, Planner Method Configuration
encode, String Functions and Operators, Binary String Functions and Operators
encode_array_constructor
in PL/Perl, Utility Functions in PL/Perl
encode_array_literal
in PL/Perl, Utility Functions in PL/Perl
encode_bytea
in PL/Perl, Utility Functions in PL/Perl
encode_typed_literal
in PL/Perl, Utility Functions in PL/Perl
encrypt, Raw Encryption Functions
encryption, Encryption Options, pgcrypto
for specific columns, pgcrypto
encrypt_iv, Raw Encryption Functions
END, END
enumerated types, Enumerated Types
enum_first, Enum Support Functions
enum_last, Enum Support Functions
enum_range, Enum Support Functions
environment variable, Environment Variables
ephemeral named relation
registering with SPI, SPI_register_relation, SPI_register_trigger_data
unregistering from SPI, SPI_unregister_relation
ereport, Reporting Errors Within the Server
error codes, PostgreSQL Error Codes
libpq, Main Functions
list of, PostgreSQL Error Codes
error message, Connection Status Functions
escape string syntax, String Constants with C-style Escapes
escape_string_warning configuration parameter, Previous PostgreSQL Versions
escaping strings, Escaping Strings for Inclusion in SQL Commands
in libpq, Escaping Strings for Inclusion in SQL Commands
event log, Registering Event Log on Windows
event log, Registering Event Log on Windows
event trigger, Event Triggers, Writing Event Trigger Functions in C
in C, Writing Event Trigger Functions in C
in PL/Tcl, Event Trigger Functions in PL/Tcl
event_source configuration parameter, Where To Log
event_trigger, Pseudo-Types
every, Aggregate Functions
EXCEPT, Combining Queries
exceptions
in PL/pgSQL, Trapping Errors
in PL/Tcl, Error Handling in PL/Tcl
exclusion constraint, Exclusion Constraints
EXECUTE, EXECUTE
exist, hstore Operators and Functions
EXISTS, Subquery Expressions
EXIT
in PL/pgSQL, EXIT
exit_on_error configuration parameter, Error Handling
exp, Mathematical Functions and Operators
EXPLAIN, Using EXPLAIN, EXPLAIN
expression, Value Expressions
order of evaluation, Expression Evaluation Rules
syntax, Value Expressions
extending SQL, Extending SQL
extension, Packaging Related Objects into an Extension
externally maintained, Extensions
external_pid_file configuration parameter, File Locations
extract, Date/Time Functions and Operators, EXTRACT, date_part
extra_float_digits configuration parameter, Locale and Formatting

F

factorial, Mathematical Functions and Operators
failover, High Availability, Load Balancing, and Replication
false, Boolean Type
family, Network Address Functions and Operators
fast path, The Fast-Path Interface
fdw_handler, Pseudo-Types
FETCH, FETCH
field
computed, Using Composite Types in Queries
field selection, Field Selection
file system mount points, Use of Secondary File Systems
file_fdw, file_fdw
FILTER, Aggregate Expressions
first_value, Window Functions
flex, Requirements
float4 (see real)
float8 (see double precision)
floating point, Floating-Point Types
floating-point
display, Locale and Formatting
floor, Mathematical Functions and Operators
force_parallel_mode configuration parameter, Other Planner Options
foreign data, Foreign Data
foreign data wrapper, Writing A Foreign Data Wrapper
handler for, Writing A Foreign Data Wrapper
foreign key, Foreign Keys, Foreign Keys
self-referential, Foreign Keys
foreign table, Foreign Data
format, String Functions and Operators, format
use in PL/pgSQL, Executing Dynamic Commands
formatting, Data Type Formatting Functions
format_type, System Information Functions
Free Space Map, Free Space Map
FreeBSD
IPC configuration, Shared Memory and Semaphores
shared library, Compiling and Linking Dynamically-loaded Functions
start script, Starting the Database Server
from_collapse_limit configuration parameter, Other Planner Options
FSM (see Free Space Map)
fsm_page_contents, General Functions
fsync configuration parameter, Settings
full text search, Text Search Types, Text Search Types, Full Text Search
data types, Text Search Types
functions and operators, Text Search Types
full_page_writes configuration parameter, Settings
function, Table Functions, Functions and Operators, Functions, Polymorphic Types, User-defined Functions, Query Language (SQL) Functions, Internal Functions, C-Language Functions
default values for arguments, SQL Functions with Default Values for Arguments
in the FROM clause, Table Functions
internal, Internal Functions
invocation, Function Calls
mixed notation, Using Mixed Notation
named argument, Arguments for SQL Functions
named notation, Using Named Notation
output parameter, SQL Functions with Output Parameters
polymorphic, Polymorphic Types
positional notation, Using Positional Notation
RETURNS TABLE, SQL Functions Returning TABLE
type resolution in an invocation, Functions
user-defined, User-defined Functions, Query Language (SQL) Functions, C-Language Functions
in C, C-Language Functions
in SQL, Query Language (SQL) Functions
variadic, SQL Functions with Variable Numbers of Arguments
with SETOF, SQL Functions Returning Sets
functional dependency, The GROUP BY and HAVING Clauses
fuzzystrmatch, fuzzystrmatch

G

gc_to_sec, Cube-based Earth Distances
generate_series, Set Returning Functions
generate_subscripts, Set Returning Functions
genetic query optimization, Genetic Query Optimizer
gen_random_bytes, Random-Data Functions
gen_random_uuid, Random-Data Functions
gen_salt, gen_salt()
GEQO (see genetic query optimization)
geqo configuration parameter, Genetic Query Optimizer
geqo_effort configuration parameter, Genetic Query Optimizer
geqo_generations configuration parameter, Genetic Query Optimizer
geqo_pool_size configuration parameter, Genetic Query Optimizer
geqo_seed configuration parameter, Genetic Query Optimizer
geqo_selection_bias configuration parameter, Genetic Query Optimizer
geqo_threshold configuration parameter, Genetic Query Optimizer
get_bit, Binary String Functions and Operators
get_byte, Binary String Functions and Operators
get_current_ts_config, Text Search Functions and Operators
get_raw_page, General Functions
GIN (see index)
gin_clean_pending_list, Index Maintenance Functions
gin_fuzzy_search_limit configuration parameter, Other Defaults
gin_leafpage_items, GIN Functions
gin_metapage_info, GIN Functions
gin_page_opaque_info, GIN Functions
gin_pending_list_limit configuration parameter, Statement Behavior
GiST (see index)
global data, Global Data in PL/Tcl
in PL/Python, Sharing Data
in PL/Tcl, Global Data in PL/Tcl
GRANT, Privileges, GRANT
GREATEST, GREATEST and LEAST, UNION, CASE, and Related Constructs
determination of result type, UNION, CASE, and Related Constructs
Gregorian calendar, History of Units
GROUP BY, Aggregate Functions, The GROUP BY and HAVING Clauses
grouping, The GROUP BY and HAVING Clauses
GROUPING, Aggregate Functions
GROUPING SETS, GROUPING SETS, CUBE, and ROLLUP
GSSAPI, GSSAPI Authentication
GUID, UUID Type

H

hash (see index)
hash_bitmap_info, Hash Functions
hash_metapage_info, Hash Functions
hash_page_items, Hash Functions
hash_page_stats, Hash Functions
hash_page_type, Hash Functions
has_any_column_privilege, System Information Functions
has_column_privilege, System Information Functions
has_database_privilege, System Information Functions
has_foreign_data_wrapper_privilege, System Information Functions
has_function_privilege, System Information Functions
has_language_privilege, System Information Functions
has_schema_privilege, System Information Functions
has_sequence_privilege, System Information Functions
has_server_privilege, System Information Functions
has_tablespace_privilege, System Information Functions
has_table_privilege, System Information Functions
has_type_privilege, System Information Functions
HAVING, Aggregate Functions, The GROUP BY and HAVING Clauses
hba_file configuration parameter, File Locations
heap_page_items, Heap Functions
heap_page_item_attrs, Heap Functions
height, Geometric Functions and Operators
hierarchical database, Concepts
high availability, High Availability, Load Balancing, and Replication
history, A Brief History of PostgreSQL
of PostgreSQL, A Brief History of PostgreSQL
hmac, hmac()
host, Network Address Functions and Operators
host name, Parameter Key Words
hostmask, Network Address Functions and Operators
Hot Standby, High Availability, Load Balancing, and Replication
hot_standby configuration parameter, Standby Servers
hot_standby_feedback configuration parameter, Standby Servers
HP-UX, HP-UX
installation on, HP-UX
IPC configuration, Shared Memory and Semaphores
shared library, Compiling and Linking Dynamically-loaded Functions
hstore, hstore, hstore Operators and Functions
hstore_to_array, hstore Operators and Functions
hstore_to_json, hstore Operators and Functions
hstore_to_jsonb, hstore Operators and Functions
hstore_to_jsonb_loose, hstore Operators and Functions
hstore_to_json_loose, hstore Operators and Functions
hstore_to_matrix, hstore Operators and Functions
huge_pages configuration parameter, Memory
hypothetical-set aggregate
built-in, Aggregate Functions

I

icount, intarray Functions and Operators
ICU, Installation Procedure, Managing Collations, Parameters
ident, Ident Authentication
identifier, Identifiers and Key Words
length, Identifiers and Key Words
syntax of, Identifiers and Key Words
IDENTIFY_SYSTEM, Streaming Replication Protocol
ident_file configuration parameter, File Locations
idle_in_transaction_session_timeout configuration parameter, Statement Behavior
idx, intarray Functions and Operators
IFNULL, COALESCE
ignore_checksum_failure configuration parameter, Developer Options
ignore_system_indexes configuration parameter, Developer Options
IMMUTABLE, Function Volatility Categories
IMPORT FOREIGN SCHEMA, IMPORT FOREIGN SCHEMA
IN, Subquery Expressions, Row and Array Comparisons
INCLUDE
in index definitions, Index-Only Scans and Covering Indexes
include
in configuration file, Managing Configuration File Contents
include_dir
in configuration file, Managing Configuration File Contents
include_if_exists
in configuration file, Managing Configuration File Contents
index, Indexes, Multicolumn Indexes, Indexes and ORDER BY, Combining Multiple Indexes, Unique Indexes, Indexes on Expressions, Partial Indexes, Index-Only Scans and Covering Indexes, Index-Only Scans and Covering Indexes, Examining Index Usage, GIN and GiST Index Types, GIN and GiST Index Types, Locking and Indexes, Interfacing Extensions To Indexes, Building Indexes Concurrently, Operators and Functions
and ORDER BY, Indexes and ORDER BY
B-tree, Index Types
B-Tree, B-Tree Indexes
BRIN, Index Types, BRIN Indexes
building concurrently, Building Indexes Concurrently
combining multiple indexes, Combining Multiple Indexes
covering, Index-Only Scans and Covering Indexes
examining usage, Examining Index Usage
on expressions, Indexes on Expressions
for user-defined data type, Interfacing Extensions To Indexes
GIN, Index Types, GIN and GiST Index Types, GIN Indexes
text search, GIN and GiST Index Types
GiST, Index Types, GIN and GiST Index Types, GiST Indexes
text search, GIN and GiST Index Types
hash, Index Types
Hash, Hash Indexes
index-only scans, Index-Only Scans and Covering Indexes
locks, Locking and Indexes
multicolumn, Multicolumn Indexes
partial, Partial Indexes
SP-GiST, Index Types, SP-GiST Indexes
unique, Unique Indexes
index scan, Planner Method Configuration
index-only scan, Index-Only Scans and Covering Indexes
index_am_handler, Pseudo-Types
inet (data type), inet
inet_client_addr, System Information Functions
inet_client_port, System Information Functions
inet_merge, Network Address Functions and Operators
inet_same_family, Network Address Functions and Operators
inet_server_addr, System Information Functions
inet_server_port, System Information Functions
information schema, The Information Schema
inheritance, Inheritance, Inheritance
initcap, String Functions and Operators
initdb, Creating a Database Cluster, initdb
Initialization Fork, The Initialization Fork
input function, User-defined Types
INSERT, Populating a Table With Rows, Inserting Data, Returning Data From Modified Rows, INSERT
RETURNING, Returning Data From Modified Rows
inserting, Inserting Data
installation, Installation from Source Code
on Windows, Installation from Source Code on Windows
instr function, Appendix
int2 (see smallint)
int4 (see integer)
int8 (see bigint)
intagg, intagg
intarray, intarray
integer, Numeric Constants, Integer Types
integer_datetimes configuration parameter, Preset Options
interfaces
externally maintained, Client Interfaces
internal, Pseudo-Types
INTERSECT, Combining Queries
interval, Date/Time Types, Interval Input
output format, Interval Output
(see also formatting)
IntervalStyle configuration parameter, Locale and Formatting
intset, intarray Functions and Operators
int_array_aggregate, Functions
int_array_enum, Functions
inverse distribution, Aggregate Functions
in_range support functions, B-Tree Support Functions
IS DISTINCT FROM, Comparison Functions and Operators, Row and Array Comparisons
IS DOCUMENT, IS DOCUMENT
IS FALSE, Comparison Functions and Operators
IS NOT DISTINCT FROM, Comparison Functions and Operators, Row and Array Comparisons
IS NOT DOCUMENT, IS NOT DOCUMENT
IS NOT FALSE, Comparison Functions and Operators
IS NOT NULL, Comparison Functions and Operators
IS NOT TRUE, Comparison Functions and Operators
IS NOT UNKNOWN, Comparison Functions and Operators
IS NULL, Comparison Functions and Operators, Platform and Client Compatibility
IS TRUE, Comparison Functions and Operators
IS UNKNOWN, Comparison Functions and Operators
isclosed, Geometric Functions and Operators
isempty, Range Functions and Operators
isfinite, Date/Time Functions and Operators
isn, isn
ISNULL, Comparison Functions and Operators
isn_weak, Functions and Operators
isopen, Geometric Functions and Operators
is_array_ref
in PL/Perl, Utility Functions in PL/Perl
is_valid, Functions and Operators

J

JIT, Just-in-Time Compilation (JIT)
jit configuration parameter, Other Planner Options
jit_above_cost configuration parameter, Planner Cost Constants
jit_debugging_support configuration parameter, Developer Options
jit_dump_bitcode configuration parameter, Developer Options
jit_expressions configuration parameter, Developer Options
jit_inline_above_cost configuration parameter, Planner Cost Constants
jit_optimize_above_cost configuration parameter, Planner Cost Constants
jit_profiling_support configuration parameter, Developer Options
jit_provider configuration parameter, Shared Library Preloading
jit_tuple_deforming configuration parameter, Developer Options
join, Joins Between Tables, Joined Tables, Controlling the Planner with Explicit JOIN Clauses
controlling the order, Controlling the Planner with Explicit JOIN Clauses
cross, Joined Tables
left, Joined Tables
natural, Joined Tables
outer, Joins Between Tables, Joined Tables
right, Joined Tables
self, Joins Between Tables
join_collapse_limit configuration parameter, Other Planner Options
JSON, JSON Types, JSON Functions and Operators
functions and operators, JSON Functions and Operators
JSONB, JSON Types
jsonb
containment, jsonb Containment and Existence
existence, jsonb Containment and Existence
indexes on, jsonb Indexing
jsonb_agg, Aggregate Functions
jsonb_array_elements, JSON Functions and Operators
jsonb_array_elements_text, JSON Functions and Operators
jsonb_array_length, JSON Functions and Operators
jsonb_build_array, JSON Functions and Operators
jsonb_build_object, JSON Functions and Operators
jsonb_each, JSON Functions and Operators
jsonb_each_text, JSON Functions and Operators
jsonb_extract_path, JSON Functions and Operators
jsonb_extract_path_text, JSON Functions and Operators
jsonb_insert, JSON Functions and Operators
jsonb_object, JSON Functions and Operators
jsonb_object_agg, Aggregate Functions
jsonb_object_keys, JSON Functions and Operators
jsonb_populate_record, JSON Functions and Operators
jsonb_populate_recordset, JSON Functions and Operators
jsonb_pretty, JSON Functions and Operators
jsonb_set, JSON Functions and Operators
jsonb_strip_nulls, JSON Functions and Operators
jsonb_to_record, JSON Functions and Operators
jsonb_to_recordset, JSON Functions and Operators
jsonb_typeof, JSON Functions and Operators
json_agg, Aggregate Functions
json_array_elements, JSON Functions and Operators
json_array_elements_text, JSON Functions and Operators
json_array_length, JSON Functions and Operators
json_build_array, JSON Functions and Operators
json_build_object, JSON Functions and Operators
json_each, JSON Functions and Operators
json_each_text, JSON Functions and Operators
json_extract_path, JSON Functions and Operators
json_extract_path_text, JSON Functions and Operators
json_object, JSON Functions and Operators
json_object_agg, Aggregate Functions
json_object_keys, JSON Functions and Operators
json_populate_record, JSON Functions and Operators
json_populate_recordset, JSON Functions and Operators
json_strip_nulls, JSON Functions and Operators
json_to_record, JSON Functions and Operators
json_to_recordset, JSON Functions and Operators
json_typeof, JSON Functions and Operators
Julian date, Julian Dates
Just-In-Time compilation (see JIT)
justify_days, Date/Time Functions and Operators
justify_hours, Date/Time Functions and Operators
justify_interval, Date/Time Functions and Operators

K

key word, Identifiers and Key Words, SQL Key Words
list of, SQL Key Words
syntax of, Identifiers and Key Words
krb_caseins_users configuration parameter, Authentication
krb_server_keyfile configuration parameter, Authentication

L

label (see alias)
lag, Window Functions
language_handler, Pseudo-Types
large object, Large Objects
lastval, Sequence Manipulation Functions
last_value, Window Functions
LATERAL, LATERAL Subqueries
in the FROM clause, LATERAL Subqueries
latitude, Cube-based Earth Distances
lca, Operators and Functions
lc_collate configuration parameter, Preset Options
lc_ctype configuration parameter, Preset Options
lc_messages configuration parameter, Locale and Formatting
lc_monetary configuration parameter, Locale and Formatting
lc_numeric configuration parameter, Locale and Formatting
lc_time configuration parameter, Locale and Formatting
LDAP, Installation Procedure, LDAP Authentication
LDAP connection parameter lookup, LDAP Lookup of Connection Parameters
ldconfig, Shared Libraries
lead, Window Functions
LEAST, GREATEST and LEAST, UNION, CASE, and Related Constructs
determination of result type, UNION, CASE, and Related Constructs
left, String Functions and Operators
left join, Joined Tables
length, String Functions and Operators, Binary String Functions and Operators, Geometric Functions and Operators, Text Search Functions and Operators
of a binary string (see binary strings, length)
of a character string (see character string, length)
length(tsvector), Manipulating Documents
levenshtein, Levenshtein
levenshtein_less_equal, Levenshtein
lex, Requirements
libedit, Requirements
libperl, Requirements
libpq, libpq - C Library, Retrieving Query Results Row-By-Row
single-row mode, Retrieving Query Results Row-By-Row
libpq-fe.h, libpq - C Library, Connection Status Functions
libpq-int.h, Connection Status Functions
libpython, Requirements
library finalization function, Dynamic Loading
library initialization function, Dynamic Loading
LIKE, LIKE
and locales, Behavior
LIMIT, LIMIT and OFFSET
line, Lines
line segment, Line Segments
linear regression, Aggregate Functions
Linux
IPC configuration, Shared Memory and Semaphores
shared library, Compiling and Linking Dynamically-loaded Functions
start script, Starting the Database Server
LISTEN, LISTEN
listen_addresses configuration parameter, Connection Settings
llvm-config, Installation Procedure
ll_to_earth, Cube-based Earth Distances
ln, Mathematical Functions and Operators
lo, lo
LOAD, LOAD
load balancing, High Availability, Load Balancing, and Replication
locale, Creating a Database Cluster, Locale Support
localtime, Date/Time Functions and Operators
localtimestamp, Date/Time Functions and Operators
local_preload_libraries configuration parameter, Shared Library Preloading
lock, Explicit Locking, Advisory Locks, Viewing Locks
advisory, Advisory Locks
monitoring, Viewing Locks
LOCK, Table-level Locks, LOCK
lock_timeout configuration parameter, Statement Behavior
log, Mathematical Functions and Operators
log shipping, High Availability, Load Balancing, and Replication
Logging
current_logfiles file and the pg_current_logfile - function, System Information Functions
pg_current_logfile function, System Information Functions
logging_collector configuration parameter, Where To Log
Logical Decoding, Logical Decoding, Logical Decoding
login privilege, Role Attributes
log_autovacuum_min_duration configuration parameter, Automatic Vacuuming
log_btree_build_stats configuration parameter, Developer Options
log_checkpoints configuration parameter, What To Log
log_connections configuration parameter, What To Log
log_destination configuration parameter, Where To Log
log_directory configuration parameter, Where To Log
log_disconnections configuration parameter, What To Log
log_duration configuration parameter, What To Log
log_error_verbosity configuration parameter, What To Log
log_executor_stats configuration parameter, Statistics Monitoring
log_filename configuration parameter, Where To Log
log_file_mode configuration parameter, Where To Log
log_hostname configuration parameter, What To Log
log_line_prefix configuration parameter, What To Log
log_lock_waits configuration parameter, What To Log
log_min_duration_statement configuration parameter, When To Log
log_min_error_statement configuration parameter, When To Log
log_min_messages configuration parameter, When To Log
log_parser_stats configuration parameter, Statistics Monitoring
log_planner_stats configuration parameter, Statistics Monitoring
log_replication_commands configuration parameter, What To Log
log_rotation_age configuration parameter, Where To Log
log_rotation_size configuration parameter, Where To Log
log_statement configuration parameter, What To Log
log_statement_stats configuration parameter, Statistics Monitoring
log_temp_files configuration parameter, What To Log
log_timezone configuration parameter, What To Log
log_truncate_on_rotation configuration parameter, Where To Log
longitude, Cube-based Earth Distances
looks_like_number
in PL/Perl, Utility Functions in PL/Perl
loop, Simple Loops
in PL/pgSQL, Simple Loops
lower, String Functions and Operators, Range Functions and Operators
and locales, Behavior
lower_inc, Range Functions and Operators
lower_inf, Range Functions and Operators
lo_close, Closing a Large Object Descriptor
lo_compat_privileges configuration parameter, Previous PostgreSQL Versions</