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
\ 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
\ 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
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
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
-
\ No newline at end of file
+
\ 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
Description
+
ecpg
ecpg ecpg — embedded SQL C preprocessor
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
.
-
\ No newline at end of file
+
\ 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.
-
\ No newline at end of file
+
\ 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
-
\ No newline at end of file
+
\ 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
Description
+
pg_config
pg_config pg_config — retrieve information about the installed version of PostgreSQL
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:
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.
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
\ 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.
\ 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
\ 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
Description
+
postgres
postgres postgres — PostgreSQL database server
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 @@
\ 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
Description
+
postmaster
postmaster postmaster — PostgreSQL database server
Description
postmaster
is a deprecated alias of 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 psql —
PostgreSQL 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
-
\ No newline at end of file
+
\ 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
-
\ No newline at end of file
+
\ 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
\ No newline at end of file
+
Part VIII. Appendixes
\ 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
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
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'
\ 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
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
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
\ 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
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
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
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
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
\ 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
\ 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 Symbols
+
Index Symbols
|
A
|
@@ -51,16 +51,16 @@
|
Y
|
- Z
Symbols $, Positional Parameters $libdir, Dynamic Loading $libdir/plugins, Shared Library Preloading , Description *, Select-List Items .pgpass, The Password File .pg_service.conf, The Connection Service File ::, Type Casts _PG_fini, Dynamic Loading _PG_init, Dynamic Loading _PG_output_plugin_init, Initialization Function 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 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