Merge ~sergiodj/ubuntu/+source/postgresql-10:update-10.21-bionic into ubuntu/+source/postgresql-10:ubuntu/bionic-devel

Proposed by Sergio Durigan Junior
Status: Merged
Merge reported by: Sergio Durigan Junior
Merged at revision: 70841e8932ad8aefbdc5c9be724a63df9e4c6581
Proposed branch: ~sergiodj/ubuntu/+source/postgresql-10:update-10.21-bionic
Merge into: ubuntu/+source/postgresql-10:ubuntu/bionic-devel
Diff against target: 141389 lines (+40545/-36795)
1555 files modified
.gitrevision (+1/-1)
configure (+24/-21)
configure.in (+5/-2)
contrib/amcheck/expected/check_btree.out (+23/-0)
contrib/amcheck/sql/check_btree.sql (+21/-0)
contrib/amcheck/verify_nbtree.c (+28/-0)
contrib/bloom/t/001_wal.pl (+12/-1)
contrib/cube/cubeparse.c (+362/-490)
contrib/pageinspect/brinfuncs.c (+53/-23)
contrib/pageinspect/btreefuncs.c (+33/-15)
contrib/pageinspect/expected/brin.out (+39/-0)
contrib/pageinspect/expected/btree.out (+37/-2)
contrib/pageinspect/expected/gin.out (+33/-0)
contrib/pageinspect/expected/hash.out (+39/-0)
contrib/pageinspect/expected/page.out (+31/-0)
contrib/pageinspect/fsmfuncs.c (+7/-1)
contrib/pageinspect/ginfuncs.c (+31/-3)
contrib/pageinspect/hashfuncs.c (+11/-6)
contrib/pageinspect/rawpage.c (+5/-25)
contrib/pageinspect/sql/brin.sql (+19/-0)
contrib/pageinspect/sql/btree.sql (+29/-2)
contrib/pageinspect/sql/gin.sql (+20/-0)
contrib/pageinspect/sql/hash.sql (+26/-0)
contrib/pageinspect/sql/page.sql (+15/-0)
contrib/pgcrypto/px.c (+1/-1)
contrib/postgres_fdw/deparse.c (+114/-44)
contrib/postgres_fdw/expected/postgres_fdw.out (+23/-0)
contrib/postgres_fdw/postgres_fdw.c (+30/-28)
contrib/postgres_fdw/postgres_fdw.h (+6/-1)
contrib/postgres_fdw/sql/postgres_fdw.sql (+8/-0)
contrib/seg/segparse.c (+359/-490)
contrib/test_decoding/expected/toast.out (+1/-1)
debian/changelog (+29/-0)
doc/bug.template (+1/-1)
doc/src/sgml/html/acronyms.html (+3/-3)
doc/src/sgml/html/admin.html (+2/-2)
doc/src/sgml/html/adminpack.html (+2/-2)
doc/src/sgml/html/amcheck.html (+2/-2)
doc/src/sgml/html/app-clusterdb.html (+2/-2)
doc/src/sgml/html/app-createdb.html (+2/-2)
doc/src/sgml/html/app-createuser.html (+2/-2)
doc/src/sgml/html/app-dropdb.html (+2/-2)
doc/src/sgml/html/app-dropuser.html (+2/-2)
doc/src/sgml/html/app-ecpg.html (+2/-2)
doc/src/sgml/html/app-initdb.html (+2/-2)
doc/src/sgml/html/app-pg-ctl.html (+2/-2)
doc/src/sgml/html/app-pg-dumpall.html (+2/-2)
doc/src/sgml/html/app-pg-isready.html (+2/-2)
doc/src/sgml/html/app-pgbasebackup.html (+2/-2)
doc/src/sgml/html/app-pgconfig.html (+2/-2)
doc/src/sgml/html/app-pgcontroldata.html (+2/-2)
doc/src/sgml/html/app-pgdump.html (+2/-2)
doc/src/sgml/html/app-pgreceivewal.html (+2/-2)
doc/src/sgml/html/app-pgreceivexlog.html (+3/-3)
doc/src/sgml/html/app-pgrecvlogical.html (+2/-2)
doc/src/sgml/html/app-pgresetwal.html (+2/-2)
doc/src/sgml/html/app-pgresetxlog.html (+3/-3)
doc/src/sgml/html/app-pgrestore.html (+2/-2)
doc/src/sgml/html/app-pgrewind.html (+2/-2)
doc/src/sgml/html/app-postgres.html (+2/-2)
doc/src/sgml/html/app-postmaster.html (+2/-2)
doc/src/sgml/html/app-psql.html (+3/-3)
doc/src/sgml/html/app-reindexdb.html (+2/-2)
doc/src/sgml/html/app-vacuumdb.html (+2/-2)
doc/src/sgml/html/appendix-obsolete.html (+2/-2)
doc/src/sgml/html/appendixes.html (+1/-1)
doc/src/sgml/html/applevel-consistency.html (+2/-2)
doc/src/sgml/html/archive-recovery-settings.html (+2/-2)
doc/src/sgml/html/arrays.html (+2/-2)
doc/src/sgml/html/auth-delay.html (+2/-2)
doc/src/sgml/html/auth-methods.html (+2/-2)
doc/src/sgml/html/auth-pg-hba-conf.html (+2/-2)
doc/src/sgml/html/auth-username-maps.html (+2/-2)
doc/src/sgml/html/auto-explain.html (+2/-2)
doc/src/sgml/html/backup-dump.html (+2/-2)
doc/src/sgml/html/backup-file.html (+2/-2)
doc/src/sgml/html/backup.html (+2/-2)
doc/src/sgml/html/bgworker.html (+2/-2)
doc/src/sgml/html/biblio.html (+2/-2)
doc/src/sgml/html/bki-commands.html (+2/-2)
doc/src/sgml/html/bki-example.html (+2/-2)
doc/src/sgml/html/bki-format.html (+2/-2)
doc/src/sgml/html/bki-structure.html (+2/-2)
doc/src/sgml/html/bki.html (+2/-2)
doc/src/sgml/html/bloom.html (+2/-2)
doc/src/sgml/html/bookindex.html (+6/-6)
doc/src/sgml/html/brin-builtin-opclasses.html (+2/-2)
doc/src/sgml/html/brin-extensibility.html (+2/-2)
doc/src/sgml/html/brin-intro.html (+2/-2)
doc/src/sgml/html/brin.html (+1/-1)
doc/src/sgml/html/btree-gin.html (+2/-2)
doc/src/sgml/html/btree-gist.html (+2/-2)
doc/src/sgml/html/bug-reporting.html (+3/-3)
doc/src/sgml/html/catalog-pg-aggregate.html (+2/-2)
doc/src/sgml/html/catalog-pg-am.html (+2/-2)
doc/src/sgml/html/catalog-pg-amop.html (+2/-2)
doc/src/sgml/html/catalog-pg-amproc.html (+2/-2)
doc/src/sgml/html/catalog-pg-attrdef.html (+2/-2)
doc/src/sgml/html/catalog-pg-attribute.html (+2/-2)
doc/src/sgml/html/catalog-pg-auth-members.html (+2/-2)
doc/src/sgml/html/catalog-pg-authid.html (+2/-2)
doc/src/sgml/html/catalog-pg-cast.html (+2/-2)
doc/src/sgml/html/catalog-pg-class.html (+2/-2)
doc/src/sgml/html/catalog-pg-collation.html (+2/-2)
doc/src/sgml/html/catalog-pg-constraint.html (+2/-2)
doc/src/sgml/html/catalog-pg-conversion.html (+2/-2)
doc/src/sgml/html/catalog-pg-database.html (+2/-2)
doc/src/sgml/html/catalog-pg-db-role-setting.html (+2/-2)
doc/src/sgml/html/catalog-pg-default-acl.html (+2/-2)
doc/src/sgml/html/catalog-pg-depend.html (+2/-2)
doc/src/sgml/html/catalog-pg-description.html (+2/-2)
doc/src/sgml/html/catalog-pg-enum.html (+2/-2)
doc/src/sgml/html/catalog-pg-event-trigger.html (+2/-2)
doc/src/sgml/html/catalog-pg-extension.html (+2/-2)
doc/src/sgml/html/catalog-pg-foreign-data-wrapper.html (+2/-2)
doc/src/sgml/html/catalog-pg-foreign-server.html (+2/-2)
doc/src/sgml/html/catalog-pg-foreign-table.html (+2/-2)
doc/src/sgml/html/catalog-pg-index.html (+2/-2)
doc/src/sgml/html/catalog-pg-inherits.html (+2/-2)
doc/src/sgml/html/catalog-pg-init-privs.html (+2/-2)
doc/src/sgml/html/catalog-pg-language.html (+2/-2)
doc/src/sgml/html/catalog-pg-largeobject-metadata.html (+2/-2)
doc/src/sgml/html/catalog-pg-largeobject.html (+2/-2)
doc/src/sgml/html/catalog-pg-namespace.html (+2/-2)
doc/src/sgml/html/catalog-pg-opclass.html (+2/-2)
doc/src/sgml/html/catalog-pg-operator.html (+2/-2)
doc/src/sgml/html/catalog-pg-opfamily.html (+2/-2)
doc/src/sgml/html/catalog-pg-partitioned-table.html (+2/-2)
doc/src/sgml/html/catalog-pg-pltemplate.html (+2/-2)
doc/src/sgml/html/catalog-pg-policy.html (+2/-2)
doc/src/sgml/html/catalog-pg-proc.html (+2/-2)
doc/src/sgml/html/catalog-pg-publication-rel.html (+2/-2)
doc/src/sgml/html/catalog-pg-publication.html (+2/-2)
doc/src/sgml/html/catalog-pg-range.html (+2/-2)
doc/src/sgml/html/catalog-pg-replication-origin.html (+2/-2)
doc/src/sgml/html/catalog-pg-rewrite.html (+2/-2)
doc/src/sgml/html/catalog-pg-seclabel.html (+2/-2)
doc/src/sgml/html/catalog-pg-sequence.html (+2/-2)
doc/src/sgml/html/catalog-pg-shdepend.html (+2/-2)
doc/src/sgml/html/catalog-pg-shdescription.html (+2/-2)
doc/src/sgml/html/catalog-pg-shseclabel.html (+2/-2)
doc/src/sgml/html/catalog-pg-statistic-ext.html (+2/-2)
doc/src/sgml/html/catalog-pg-statistic.html (+2/-2)
doc/src/sgml/html/catalog-pg-subscription-rel.html (+2/-2)
doc/src/sgml/html/catalog-pg-subscription.html (+2/-2)
doc/src/sgml/html/catalog-pg-tablespace.html (+2/-2)
doc/src/sgml/html/catalog-pg-transform.html (+2/-2)
doc/src/sgml/html/catalog-pg-trigger.html (+2/-2)
doc/src/sgml/html/catalog-pg-ts-config-map.html (+2/-2)
doc/src/sgml/html/catalog-pg-ts-config.html (+2/-2)
doc/src/sgml/html/catalog-pg-ts-dict.html (+2/-2)
doc/src/sgml/html/catalog-pg-ts-parser.html (+2/-2)
doc/src/sgml/html/catalog-pg-ts-template.html (+2/-2)
doc/src/sgml/html/catalog-pg-type.html (+2/-2)
doc/src/sgml/html/catalog-pg-user-mapping.html (+2/-2)
doc/src/sgml/html/catalogs-overview.html (+2/-2)
doc/src/sgml/html/catalogs.html (+2/-2)
doc/src/sgml/html/charset.html (+2/-2)
doc/src/sgml/html/chkpass.html (+2/-2)
doc/src/sgml/html/citext.html (+2/-2)
doc/src/sgml/html/client-authentication-problems.html (+2/-2)
doc/src/sgml/html/client-authentication.html (+2/-2)
doc/src/sgml/html/client-interfaces.html (+2/-2)
doc/src/sgml/html/collation.html (+2/-2)
doc/src/sgml/html/config-setting.html (+2/-2)
doc/src/sgml/html/connect-estab.html (+2/-2)
doc/src/sgml/html/continuous-archiving.html (+2/-2)
doc/src/sgml/html/contrib-dblink-build-sql-delete.html (+2/-2)
doc/src/sgml/html/contrib-dblink-build-sql-insert.html (+2/-2)
doc/src/sgml/html/contrib-dblink-build-sql-update.html (+2/-2)
doc/src/sgml/html/contrib-dblink-cancel-query.html (+2/-2)
doc/src/sgml/html/contrib-dblink-close.html (+2/-2)
doc/src/sgml/html/contrib-dblink-connect-u.html (+2/-2)
doc/src/sgml/html/contrib-dblink-connect.html (+2/-2)
doc/src/sgml/html/contrib-dblink-disconnect.html (+2/-2)
doc/src/sgml/html/contrib-dblink-error-message.html (+2/-2)
doc/src/sgml/html/contrib-dblink-exec.html (+2/-2)
doc/src/sgml/html/contrib-dblink-fetch.html (+2/-2)
doc/src/sgml/html/contrib-dblink-function.html (+2/-2)
doc/src/sgml/html/contrib-dblink-get-connections.html (+2/-2)
doc/src/sgml/html/contrib-dblink-get-notify.html (+2/-2)
doc/src/sgml/html/contrib-dblink-get-pkey.html (+2/-2)
doc/src/sgml/html/contrib-dblink-get-result.html (+2/-2)
doc/src/sgml/html/contrib-dblink-is-busy.html (+2/-2)
doc/src/sgml/html/contrib-dblink-open.html (+2/-2)
doc/src/sgml/html/contrib-dblink-send-query.html (+2/-2)
doc/src/sgml/html/contrib-prog-client.html (+2/-2)
doc/src/sgml/html/contrib-prog-server.html (+2/-2)
doc/src/sgml/html/contrib-prog.html (+2/-2)
doc/src/sgml/html/contrib-spi.html (+2/-2)
doc/src/sgml/html/contrib.html (+2/-2)
doc/src/sgml/html/creating-cluster.html (+2/-2)
doc/src/sgml/html/cube.html (+2/-2)
doc/src/sgml/html/custom-scan-execution.html (+2/-2)
doc/src/sgml/html/custom-scan-path.html (+2/-2)
doc/src/sgml/html/custom-scan-plan.html (+2/-2)
doc/src/sgml/html/custom-scan.html (+2/-2)
doc/src/sgml/html/database-roles.html (+2/-2)
doc/src/sgml/html/datatype-binary.html (+2/-2)
doc/src/sgml/html/datatype-bit.html (+2/-2)
doc/src/sgml/html/datatype-boolean.html (+2/-2)
doc/src/sgml/html/datatype-character.html (+2/-2)
doc/src/sgml/html/datatype-datetime.html (+2/-2)
doc/src/sgml/html/datatype-enum.html (+2/-2)
doc/src/sgml/html/datatype-geometric.html (+2/-2)
doc/src/sgml/html/datatype-json.html (+2/-2)
doc/src/sgml/html/datatype-money.html (+2/-2)
doc/src/sgml/html/datatype-net-types.html (+2/-2)
doc/src/sgml/html/datatype-numeric.html (+2/-2)
doc/src/sgml/html/datatype-oid.html (+2/-2)
doc/src/sgml/html/datatype-pg-lsn.html (+2/-2)
doc/src/sgml/html/datatype-pseudo.html (+2/-2)
doc/src/sgml/html/datatype-textsearch.html (+2/-2)
doc/src/sgml/html/datatype-uuid.html (+2/-2)
doc/src/sgml/html/datatype-xml.html (+2/-2)
doc/src/sgml/html/datatype.html (+2/-2)
doc/src/sgml/html/datetime-appendix.html (+2/-2)
doc/src/sgml/html/datetime-config-files.html (+2/-2)
doc/src/sgml/html/datetime-input-rules.html (+2/-2)
doc/src/sgml/html/datetime-invalid-input.html (+2/-2)
doc/src/sgml/html/datetime-julian-dates.html (+2/-2)
doc/src/sgml/html/datetime-keywords.html (+2/-2)
doc/src/sgml/html/datetime-posix-timezone-specs.html (+2/-2)
doc/src/sgml/html/datetime-units-history.html (+2/-2)
doc/src/sgml/html/dblink.html (+2/-2)
doc/src/sgml/html/ddl-alter.html (+2/-2)
doc/src/sgml/html/ddl-basics.html (+2/-2)
doc/src/sgml/html/ddl-constraints.html (+2/-2)
doc/src/sgml/html/ddl-default.html (+2/-2)
doc/src/sgml/html/ddl-depend.html (+2/-2)
doc/src/sgml/html/ddl-foreign-data.html (+2/-2)
doc/src/sgml/html/ddl-inherit.html (+2/-2)
doc/src/sgml/html/ddl-others.html (+2/-2)
doc/src/sgml/html/ddl-partitioning.html (+2/-2)
doc/src/sgml/html/ddl-priv.html (+2/-2)
doc/src/sgml/html/ddl-rowsecurity.html (+2/-2)
doc/src/sgml/html/ddl-schemas.html (+2/-2)
doc/src/sgml/html/ddl-system-columns.html (+2/-2)
doc/src/sgml/html/ddl.html (+2/-2)
doc/src/sgml/html/default-roles.html (+2/-2)
doc/src/sgml/html/dict-int.html (+2/-2)
doc/src/sgml/html/dict-xsyn.html (+2/-2)
doc/src/sgml/html/different-replication-solutions.html (+2/-2)
doc/src/sgml/html/disk-full.html (+2/-2)
doc/src/sgml/html/disk-usage.html (+2/-2)
doc/src/sgml/html/diskusage.html (+2/-2)
doc/src/sgml/html/dml-delete.html (+2/-2)
doc/src/sgml/html/dml-insert.html (+2/-2)
doc/src/sgml/html/dml-returning.html (+2/-2)
doc/src/sgml/html/dml-update.html (+2/-2)
doc/src/sgml/html/dml.html (+2/-2)
doc/src/sgml/html/docguide-authoring.html (+2/-2)
doc/src/sgml/html/docguide-build.html (+2/-2)
doc/src/sgml/html/docguide-docbook.html (+2/-2)
doc/src/sgml/html/docguide-style.html (+2/-2)
doc/src/sgml/html/docguide-toolsets.html (+2/-2)
doc/src/sgml/html/docguide.html (+2/-2)
doc/src/sgml/html/dynamic-trace.html (+2/-2)
doc/src/sgml/html/earthdistance.html (+2/-2)
doc/src/sgml/html/ecpg-commands.html (+2/-2)
doc/src/sgml/html/ecpg-concept.html (+2/-2)
doc/src/sgml/html/ecpg-connect.html (+2/-2)
doc/src/sgml/html/ecpg-cpp.html (+2/-2)
doc/src/sgml/html/ecpg-descriptors.html (+2/-2)
doc/src/sgml/html/ecpg-develop.html (+2/-2)
doc/src/sgml/html/ecpg-dynamic.html (+2/-2)
doc/src/sgml/html/ecpg-errors.html (+2/-2)
doc/src/sgml/html/ecpg-informix-compat.html (+2/-2)
doc/src/sgml/html/ecpg-library.html (+2/-2)
doc/src/sgml/html/ecpg-lo.html (+2/-2)
doc/src/sgml/html/ecpg-pgtypes.html (+2/-2)
doc/src/sgml/html/ecpg-preproc.html (+2/-2)
doc/src/sgml/html/ecpg-process.html (+2/-2)
doc/src/sgml/html/ecpg-sql-allocate-descriptor.html (+2/-2)
doc/src/sgml/html/ecpg-sql-commands.html (+2/-2)
doc/src/sgml/html/ecpg-sql-connect.html (+2/-2)
doc/src/sgml/html/ecpg-sql-deallocate-descriptor.html (+2/-2)
doc/src/sgml/html/ecpg-sql-declare.html (+2/-2)
doc/src/sgml/html/ecpg-sql-describe.html (+2/-2)
doc/src/sgml/html/ecpg-sql-disconnect.html (+2/-2)
doc/src/sgml/html/ecpg-sql-execute-immediate.html (+2/-2)
doc/src/sgml/html/ecpg-sql-get-descriptor.html (+2/-2)
doc/src/sgml/html/ecpg-sql-open.html (+2/-2)
doc/src/sgml/html/ecpg-sql-prepare.html (+2/-2)
doc/src/sgml/html/ecpg-sql-set-autocommit.html (+2/-2)
doc/src/sgml/html/ecpg-sql-set-connection.html (+2/-2)
doc/src/sgml/html/ecpg-sql-set-descriptor.html (+2/-2)
doc/src/sgml/html/ecpg-sql-type.html (+2/-2)
doc/src/sgml/html/ecpg-sql-var.html (+2/-2)
doc/src/sgml/html/ecpg-sql-whenever.html (+2/-2)
doc/src/sgml/html/ecpg-variables.html (+2/-2)
doc/src/sgml/html/ecpg.html (+2/-2)
doc/src/sgml/html/encryption-options.html (+2/-2)
doc/src/sgml/html/errcodes-appendix.html (+3/-3)
doc/src/sgml/html/error-message-reporting.html (+2/-2)
doc/src/sgml/html/error-style-guide.html (+2/-2)
doc/src/sgml/html/event-log-registration.html (+2/-2)
doc/src/sgml/html/event-trigger-definition.html (+2/-2)
doc/src/sgml/html/event-trigger-example.html (+2/-2)
doc/src/sgml/html/event-trigger-interface.html (+2/-2)
doc/src/sgml/html/event-trigger-matrix.html (+2/-2)
doc/src/sgml/html/event-trigger-table-rewrite-example.html (+2/-2)
doc/src/sgml/html/event-triggers.html (+2/-2)
doc/src/sgml/html/executor.html (+2/-2)
doc/src/sgml/html/explicit-joins.html (+2/-2)
doc/src/sgml/html/explicit-locking.html (+2/-2)
doc/src/sgml/html/extend-extensions.html (+2/-2)
doc/src/sgml/html/extend-how.html (+2/-2)
doc/src/sgml/html/extend-pgxs.html (+2/-2)
doc/src/sgml/html/extend-type-system.html (+2/-2)
doc/src/sgml/html/extend.html (+2/-2)
doc/src/sgml/html/external-admin-tools.html (+2/-2)
doc/src/sgml/html/external-extensions.html (+2/-2)
doc/src/sgml/html/external-interfaces.html (+2/-2)
doc/src/sgml/html/external-pl.html (+2/-2)
doc/src/sgml/html/external-projects.html (+2/-2)
doc/src/sgml/html/fdw-callbacks.html (+2/-2)
doc/src/sgml/html/fdw-functions.html (+2/-2)
doc/src/sgml/html/fdw-helpers.html (+2/-2)
doc/src/sgml/html/fdw-planning.html (+2/-2)
doc/src/sgml/html/fdw-row-locking.html (+2/-2)
doc/src/sgml/html/fdwhandler.html (+2/-2)
doc/src/sgml/html/features-sql-standard.html (+2/-2)
doc/src/sgml/html/features.html (+2/-2)
doc/src/sgml/html/file-fdw.html (+2/-2)
doc/src/sgml/html/functions-admin.html (+2/-2)
doc/src/sgml/html/functions-aggregate.html (+2/-2)
doc/src/sgml/html/functions-array.html (+2/-2)
doc/src/sgml/html/functions-binarystring.html (+2/-2)
doc/src/sgml/html/functions-bitstring.html (+2/-2)
doc/src/sgml/html/functions-comparison.html (+2/-2)
doc/src/sgml/html/functions-comparisons.html (+2/-2)
doc/src/sgml/html/functions-conditional.html (+2/-2)
doc/src/sgml/html/functions-datetime.html (+2/-2)
doc/src/sgml/html/functions-enum.html (+2/-2)
doc/src/sgml/html/functions-event-triggers.html (+2/-2)
doc/src/sgml/html/functions-formatting.html (+2/-2)
doc/src/sgml/html/functions-geometry.html (+2/-2)
doc/src/sgml/html/functions-info.html (+2/-2)
doc/src/sgml/html/functions-json.html (+2/-2)
doc/src/sgml/html/functions-logical.html (+2/-2)
doc/src/sgml/html/functions-matching.html (+2/-2)
doc/src/sgml/html/functions-math.html (+2/-2)
doc/src/sgml/html/functions-net.html (+2/-2)
doc/src/sgml/html/functions-range.html (+2/-2)
doc/src/sgml/html/functions-sequence.html (+2/-2)
doc/src/sgml/html/functions-srf.html (+2/-2)
doc/src/sgml/html/functions-string.html (+2/-2)
doc/src/sgml/html/functions-subquery.html (+2/-2)
doc/src/sgml/html/functions-textsearch.html (+2/-2)
doc/src/sgml/html/functions-trigger.html (+2/-2)
doc/src/sgml/html/functions-window.html (+2/-2)
doc/src/sgml/html/functions-xml.html (+2/-2)
doc/src/sgml/html/functions.html (+2/-2)
doc/src/sgml/html/fuzzystrmatch.html (+2/-2)
doc/src/sgml/html/generic-wal.html (+2/-2)
doc/src/sgml/html/geqo-biblio.html (+2/-2)
doc/src/sgml/html/geqo-intro.html (+2/-2)
doc/src/sgml/html/geqo-intro2.html (+2/-2)
doc/src/sgml/html/geqo-pg-intro.html (+2/-2)
doc/src/sgml/html/geqo.html (+2/-2)
doc/src/sgml/html/gin-builtin-opclasses.html (+2/-2)
doc/src/sgml/html/gin-examples.html (+2/-2)
doc/src/sgml/html/gin-extensibility.html (+2/-2)
doc/src/sgml/html/gin-implementation.html (+2/-2)
doc/src/sgml/html/gin-intro.html (+2/-2)
doc/src/sgml/html/gin-limit.html (+2/-2)
doc/src/sgml/html/gin-tips.html (+2/-2)
doc/src/sgml/html/gin.html (+1/-1)
doc/src/sgml/html/gist-builtin-opclasses.html (+2/-2)
doc/src/sgml/html/gist-examples.html (+2/-2)
doc/src/sgml/html/gist-extensibility.html (+2/-2)
doc/src/sgml/html/gist-implementation.html (+2/-2)
doc/src/sgml/html/gist-intro.html (+2/-2)
doc/src/sgml/html/gist.html (+1/-1)
doc/src/sgml/html/git.html (+2/-2)
doc/src/sgml/html/hash-implementation.html (+2/-2)
doc/src/sgml/html/hash-index.html (+1/-1)
doc/src/sgml/html/hash-intro.html (+2/-2)
doc/src/sgml/html/high-availability.html (+2/-2)
doc/src/sgml/html/history.html (+2/-2)
doc/src/sgml/html/hot-standby.html (+2/-2)
doc/src/sgml/html/how-parallel-query-works.html (+2/-2)
doc/src/sgml/html/hstore.html (+2/-2)
doc/src/sgml/html/index-api.html (+2/-2)
doc/src/sgml/html/index-cost-estimation.html (+2/-2)
doc/src/sgml/html/index-functions.html (+2/-2)
doc/src/sgml/html/index-locking.html (+2/-2)
doc/src/sgml/html/index-scanning.html (+2/-2)
doc/src/sgml/html/index-unique-checks.html (+2/-2)
doc/src/sgml/html/index.html (+1/-1)
doc/src/sgml/html/indexam.html (+2/-2)
doc/src/sgml/html/indexes-bitmap-scans.html (+2/-2)
doc/src/sgml/html/indexes-collations.html (+2/-2)
doc/src/sgml/html/indexes-examine.html (+2/-2)
doc/src/sgml/html/indexes-expressional.html (+2/-2)
doc/src/sgml/html/indexes-index-only-scans.html (+2/-2)
doc/src/sgml/html/indexes-intro.html (+2/-2)
doc/src/sgml/html/indexes-multicolumn.html (+2/-2)
doc/src/sgml/html/indexes-opclass.html (+2/-2)
doc/src/sgml/html/indexes-ordering.html (+2/-2)
doc/src/sgml/html/indexes-partial.html (+2/-2)
doc/src/sgml/html/indexes-types.html (+2/-2)
doc/src/sgml/html/indexes-unique.html (+2/-2)
doc/src/sgml/html/indexes.html (+2/-2)
doc/src/sgml/html/information-schema.html (+2/-2)
doc/src/sgml/html/infoschema-administrable-role-authorizations.html (+2/-2)
doc/src/sgml/html/infoschema-applicable-roles.html (+2/-2)
doc/src/sgml/html/infoschema-attributes.html (+2/-2)
doc/src/sgml/html/infoschema-character-sets.html (+2/-2)
doc/src/sgml/html/infoschema-check-constraint-routine-usage.html (+2/-2)
doc/src/sgml/html/infoschema-check-constraints.html (+2/-2)
doc/src/sgml/html/infoschema-collation-character-set-applicab.html (+2/-2)
doc/src/sgml/html/infoschema-collations.html (+2/-2)
doc/src/sgml/html/infoschema-column-domain-usage.html (+2/-2)
doc/src/sgml/html/infoschema-column-options.html (+2/-2)
doc/src/sgml/html/infoschema-column-privileges.html (+2/-2)
doc/src/sgml/html/infoschema-column-udt-usage.html (+2/-2)
doc/src/sgml/html/infoschema-columns.html (+2/-2)
doc/src/sgml/html/infoschema-constraint-column-usage.html (+2/-2)
doc/src/sgml/html/infoschema-constraint-table-usage.html (+2/-2)
doc/src/sgml/html/infoschema-data-type-privileges.html (+2/-2)
doc/src/sgml/html/infoschema-datatypes.html (+2/-2)
doc/src/sgml/html/infoschema-domain-constraints.html (+2/-2)
doc/src/sgml/html/infoschema-domain-udt-usage.html (+2/-2)
doc/src/sgml/html/infoschema-domains.html (+2/-2)
doc/src/sgml/html/infoschema-element-types.html (+2/-2)
doc/src/sgml/html/infoschema-enabled-roles.html (+2/-2)
doc/src/sgml/html/infoschema-foreign-data-wrapper-options.html (+2/-2)
doc/src/sgml/html/infoschema-foreign-data-wrappers.html (+2/-2)
doc/src/sgml/html/infoschema-foreign-server-options.html (+2/-2)
doc/src/sgml/html/infoschema-foreign-servers.html (+2/-2)
doc/src/sgml/html/infoschema-foreign-table-options.html (+2/-2)
doc/src/sgml/html/infoschema-foreign-tables.html (+2/-2)
doc/src/sgml/html/infoschema-information-schema-catalog-name.html (+2/-2)
doc/src/sgml/html/infoschema-key-column-usage.html (+2/-2)
doc/src/sgml/html/infoschema-parameters.html (+2/-2)
doc/src/sgml/html/infoschema-referential-constraints.html (+2/-2)
doc/src/sgml/html/infoschema-role-column-grants.html (+2/-2)
doc/src/sgml/html/infoschema-role-routine-grants.html (+2/-2)
doc/src/sgml/html/infoschema-role-table-grants.html (+2/-2)
doc/src/sgml/html/infoschema-role-udt-grants.html (+2/-2)
doc/src/sgml/html/infoschema-role-usage-grants.html (+2/-2)
doc/src/sgml/html/infoschema-routine-privileges.html (+2/-2)
doc/src/sgml/html/infoschema-routines.html (+2/-2)
doc/src/sgml/html/infoschema-schema.html (+2/-2)
doc/src/sgml/html/infoschema-schemata.html (+2/-2)
doc/src/sgml/html/infoschema-sequences.html (+2/-2)
doc/src/sgml/html/infoschema-sql-features.html (+2/-2)
doc/src/sgml/html/infoschema-sql-implementation-info.html (+2/-2)
doc/src/sgml/html/infoschema-sql-languages.html (+2/-2)
doc/src/sgml/html/infoschema-sql-packages.html (+2/-2)
doc/src/sgml/html/infoschema-sql-parts.html (+2/-2)
doc/src/sgml/html/infoschema-sql-sizing-profiles.html (+2/-2)
doc/src/sgml/html/infoschema-sql-sizing.html (+2/-2)
doc/src/sgml/html/infoschema-table-constraints.html (+2/-2)
doc/src/sgml/html/infoschema-table-privileges.html (+2/-2)
doc/src/sgml/html/infoschema-tables.html (+2/-2)
doc/src/sgml/html/infoschema-transforms.html (+2/-2)
doc/src/sgml/html/infoschema-triggered-update-columns.html (+2/-2)
doc/src/sgml/html/infoschema-triggers.html (+2/-2)
doc/src/sgml/html/infoschema-udt-privileges.html (+2/-2)
doc/src/sgml/html/infoschema-usage-privileges.html (+2/-2)
doc/src/sgml/html/infoschema-user-defined-types.html (+2/-2)
doc/src/sgml/html/infoschema-user-mapping-options.html (+2/-2)
doc/src/sgml/html/infoschema-user-mappings.html (+2/-2)
doc/src/sgml/html/infoschema-view-column-usage.html (+2/-2)
doc/src/sgml/html/infoschema-view-routine-usage.html (+2/-2)
doc/src/sgml/html/infoschema-view-table-usage.html (+2/-2)
doc/src/sgml/html/infoschema-views.html (+2/-2)
doc/src/sgml/html/install-getsource.html (+7/-7)
doc/src/sgml/html/install-post.html (+2/-2)
doc/src/sgml/html/install-procedure.html (+2/-2)
doc/src/sgml/html/install-requirements.html (+2/-2)
doc/src/sgml/html/install-short.html (+2/-2)
doc/src/sgml/html/install-windows-full.html (+3/-3)
doc/src/sgml/html/install-windows.html (+2/-2)
doc/src/sgml/html/installation-platform-notes.html (+2/-2)
doc/src/sgml/html/installation.html (+2/-2)
doc/src/sgml/html/intagg.html (+2/-2)
doc/src/sgml/html/intarray.html (+2/-2)
doc/src/sgml/html/internals.html (+2/-2)
doc/src/sgml/html/intro-whatis.html (+2/-2)
doc/src/sgml/html/isn.html (+2/-2)
doc/src/sgml/html/kernel-resources.html (+2/-2)
doc/src/sgml/html/largeobjects.html (+2/-2)
doc/src/sgml/html/legalnotice.html (+1/-1)
doc/src/sgml/html/libpq-async.html (+2/-2)
doc/src/sgml/html/libpq-build.html (+2/-2)
doc/src/sgml/html/libpq-cancel.html (+2/-2)
doc/src/sgml/html/libpq-connect.html (+2/-2)
doc/src/sgml/html/libpq-control.html (+2/-2)
doc/src/sgml/html/libpq-copy.html (+2/-2)
doc/src/sgml/html/libpq-envars.html (+2/-2)
doc/src/sgml/html/libpq-events.html (+2/-2)
doc/src/sgml/html/libpq-example.html (+2/-2)
doc/src/sgml/html/libpq-exec.html (+2/-2)
doc/src/sgml/html/libpq-fastpath.html (+2/-2)
doc/src/sgml/html/libpq-ldap.html (+2/-2)
doc/src/sgml/html/libpq-misc.html (+2/-2)
doc/src/sgml/html/libpq-notice-processing.html (+2/-2)
doc/src/sgml/html/libpq-notify.html (+2/-2)
doc/src/sgml/html/libpq-pgpass.html (+2/-2)
doc/src/sgml/html/libpq-pgservice.html (+2/-2)
doc/src/sgml/html/libpq-single-row-mode.html (+2/-2)
doc/src/sgml/html/libpq-ssl.html (+18/-9)
doc/src/sgml/html/libpq-status.html (+2/-2)
doc/src/sgml/html/libpq-threading.html (+2/-2)
doc/src/sgml/html/libpq.html (+2/-2)
doc/src/sgml/html/lo-examplesect.html (+2/-2)
doc/src/sgml/html/lo-funcs.html (+2/-2)
doc/src/sgml/html/lo-implementation.html (+2/-2)
doc/src/sgml/html/lo-interfaces.html (+2/-2)
doc/src/sgml/html/lo-intro.html (+2/-2)
doc/src/sgml/html/lo.html (+2/-2)
doc/src/sgml/html/locale.html (+2/-2)
doc/src/sgml/html/locking-indexes.html (+2/-2)
doc/src/sgml/html/log-shipping-alternative.html (+2/-2)
doc/src/sgml/html/logfile-maintenance.html (+2/-2)
doc/src/sgml/html/logical-replication-architecture.html (+2/-2)
doc/src/sgml/html/logical-replication-config.html (+2/-2)
doc/src/sgml/html/logical-replication-conflicts.html (+2/-2)
doc/src/sgml/html/logical-replication-monitoring.html (+2/-2)
doc/src/sgml/html/logical-replication-publication.html (+2/-2)
doc/src/sgml/html/logical-replication-quick-setup.html (+2/-2)
doc/src/sgml/html/logical-replication-restrictions.html (+2/-2)
doc/src/sgml/html/logical-replication-security.html (+2/-2)
doc/src/sgml/html/logical-replication-subscription.html (+2/-2)
doc/src/sgml/html/logical-replication.html (+2/-2)
doc/src/sgml/html/logicaldecoding-catalogs.html (+2/-2)
doc/src/sgml/html/logicaldecoding-example.html (+2/-2)
doc/src/sgml/html/logicaldecoding-explanation.html (+2/-2)
doc/src/sgml/html/logicaldecoding-output-plugin.html (+2/-2)
doc/src/sgml/html/logicaldecoding-sql.html (+2/-2)
doc/src/sgml/html/logicaldecoding-synchronous.html (+2/-2)
doc/src/sgml/html/logicaldecoding-walsender.html (+2/-2)
doc/src/sgml/html/logicaldecoding-writer.html (+2/-2)
doc/src/sgml/html/logicaldecoding.html (+2/-2)
doc/src/sgml/html/ltree.html (+2/-2)
doc/src/sgml/html/maintenance.html (+2/-2)
doc/src/sgml/html/manage-ag-config.html (+2/-2)
doc/src/sgml/html/manage-ag-createdb.html (+2/-2)
doc/src/sgml/html/manage-ag-dropdb.html (+2/-2)
doc/src/sgml/html/manage-ag-overview.html (+2/-2)
doc/src/sgml/html/manage-ag-tablespaces.html (+2/-2)
doc/src/sgml/html/manage-ag-templatedbs.html (+2/-2)
doc/src/sgml/html/managing-databases.html (+2/-2)
doc/src/sgml/html/monitoring-locks.html (+2/-2)
doc/src/sgml/html/monitoring-ps.html (+2/-2)
doc/src/sgml/html/monitoring-stats.html (+2/-2)
doc/src/sgml/html/monitoring.html (+2/-2)
doc/src/sgml/html/multibyte.html (+2/-2)
doc/src/sgml/html/multivariate-statistics-examples.html (+2/-2)
doc/src/sgml/html/mvcc-caveats.html (+2/-2)
doc/src/sgml/html/mvcc-intro.html (+2/-2)
doc/src/sgml/html/mvcc.html (+2/-2)
doc/src/sgml/html/nls-programmer.html (+2/-2)
doc/src/sgml/html/nls-translator.html (+2/-2)
doc/src/sgml/html/nls.html (+1/-1)
doc/src/sgml/html/non-durability.html (+2/-2)
doc/src/sgml/html/notation.html (+2/-2)
doc/src/sgml/html/oid2name.html (+2/-2)
doc/src/sgml/html/overview.html (+2/-2)
doc/src/sgml/html/pageinspect.html (+2/-2)
doc/src/sgml/html/parallel-plans.html (+2/-2)
doc/src/sgml/html/parallel-query.html (+2/-2)
doc/src/sgml/html/parallel-safety.html (+2/-2)
doc/src/sgml/html/parser-stage.html (+2/-2)
doc/src/sgml/html/passwordcheck.html (+2/-2)
doc/src/sgml/html/performance-tips.html (+2/-2)
doc/src/sgml/html/perm-functions.html (+2/-2)
doc/src/sgml/html/pgarchivecleanup.html (+2/-2)
doc/src/sgml/html/pgbench.html (+2/-2)
doc/src/sgml/html/pgbuffercache.html (+2/-2)
doc/src/sgml/html/pgcrypto.html (+2/-2)
doc/src/sgml/html/pgfreespacemap.html (+2/-2)
doc/src/sgml/html/pgprewarm.html (+2/-2)
doc/src/sgml/html/pgrowlocks.html (+2/-2)
doc/src/sgml/html/pgstandby.html (+2/-2)
doc/src/sgml/html/pgstatstatements.html (+2/-2)
doc/src/sgml/html/pgstattuple.html (+2/-2)
doc/src/sgml/html/pgtestfsync.html (+2/-2)
doc/src/sgml/html/pgtesttiming.html (+2/-2)
doc/src/sgml/html/pgtrgm.html (+2/-2)
doc/src/sgml/html/pgupgrade.html (+2/-2)
doc/src/sgml/html/pgvisibility.html (+2/-2)
doc/src/sgml/html/pgwaldump.html (+2/-2)
doc/src/sgml/html/pgxlogdump.html (+3/-3)
doc/src/sgml/html/planner-optimizer.html (+2/-2)
doc/src/sgml/html/planner-stats-details.html (+2/-2)
doc/src/sgml/html/planner-stats-security.html (+2/-2)
doc/src/sgml/html/planner-stats.html (+2/-2)
doc/src/sgml/html/plhandler.html (+2/-2)
doc/src/sgml/html/plperl-builtins.html (+2/-2)
doc/src/sgml/html/plperl-data.html (+2/-2)
doc/src/sgml/html/plperl-event-triggers.html (+2/-2)
doc/src/sgml/html/plperl-funcs.html (+2/-2)
doc/src/sgml/html/plperl-global.html (+2/-2)
doc/src/sgml/html/plperl-triggers.html (+2/-2)
doc/src/sgml/html/plperl-trusted.html (+2/-2)
doc/src/sgml/html/plperl-under-the-hood.html (+2/-2)
doc/src/sgml/html/plperl.html (+2/-2)
doc/src/sgml/html/plpgsql-control-structures.html (+2/-2)
doc/src/sgml/html/plpgsql-cursors.html (+2/-2)
doc/src/sgml/html/plpgsql-declarations.html (+2/-2)
doc/src/sgml/html/plpgsql-development-tips.html (+2/-2)
doc/src/sgml/html/plpgsql-errors-and-messages.html (+2/-2)
doc/src/sgml/html/plpgsql-expressions.html (+2/-2)
doc/src/sgml/html/plpgsql-implementation.html (+2/-2)
doc/src/sgml/html/plpgsql-overview.html (+2/-2)
doc/src/sgml/html/plpgsql-porting.html (+2/-2)
doc/src/sgml/html/plpgsql-statements.html (+2/-2)
doc/src/sgml/html/plpgsql-structure.html (+2/-2)
doc/src/sgml/html/plpgsql-trigger.html (+2/-2)
doc/src/sgml/html/plpgsql.html (+1/-1)
doc/src/sgml/html/plpython-data.html (+2/-2)
doc/src/sgml/html/plpython-database.html (+2/-2)
doc/src/sgml/html/plpython-do.html (+2/-2)
doc/src/sgml/html/plpython-envar.html (+2/-2)
doc/src/sgml/html/plpython-funcs.html (+2/-2)
doc/src/sgml/html/plpython-python23.html (+2/-2)
doc/src/sgml/html/plpython-sharing.html (+2/-2)
doc/src/sgml/html/plpython-subtransaction.html (+2/-2)
doc/src/sgml/html/plpython-trigger.html (+2/-2)
doc/src/sgml/html/plpython-util.html (+2/-2)
doc/src/sgml/html/plpython.html (+2/-2)
doc/src/sgml/html/pltcl-config.html (+2/-2)
doc/src/sgml/html/pltcl-data.html (+2/-2)
doc/src/sgml/html/pltcl-dbaccess.html (+2/-2)
doc/src/sgml/html/pltcl-error-handling.html (+2/-2)
doc/src/sgml/html/pltcl-event-trigger.html (+2/-2)
doc/src/sgml/html/pltcl-functions.html (+2/-2)
doc/src/sgml/html/pltcl-global.html (+2/-2)
doc/src/sgml/html/pltcl-overview.html (+2/-2)
doc/src/sgml/html/pltcl-procnames.html (+2/-2)
doc/src/sgml/html/pltcl-subtransactions.html (+2/-2)
doc/src/sgml/html/pltcl-trigger.html (+2/-2)
doc/src/sgml/html/pltcl.html (+2/-2)
doc/src/sgml/html/populate.html (+2/-2)
doc/src/sgml/html/postgres-fdw.html (+2/-2)
doc/src/sgml/html/postgres-user.html (+2/-2)
doc/src/sgml/html/preface.html (+2/-2)
doc/src/sgml/html/preventing-server-spoofing.html (+2/-2)
doc/src/sgml/html/progress-reporting.html (+2/-2)
doc/src/sgml/html/protocol-changes.html (+2/-2)
doc/src/sgml/html/protocol-error-fields.html (+2/-2)
doc/src/sgml/html/protocol-flow.html (+2/-2)
doc/src/sgml/html/protocol-logical-replication.html (+2/-2)
doc/src/sgml/html/protocol-logicalrep-message-formats.html (+2/-2)
doc/src/sgml/html/protocol-message-formats.html (+2/-2)
doc/src/sgml/html/protocol-message-types.html (+2/-2)
doc/src/sgml/html/protocol-overview.html (+2/-2)
doc/src/sgml/html/protocol-replication.html (+2/-2)
doc/src/sgml/html/protocol.html (+2/-2)
doc/src/sgml/html/queries-limit.html (+2/-2)
doc/src/sgml/html/queries-order.html (+2/-2)
doc/src/sgml/html/queries-overview.html (+2/-2)
doc/src/sgml/html/queries-select-lists.html (+2/-2)
doc/src/sgml/html/queries-table-expressions.html (+2/-2)
doc/src/sgml/html/queries-union.html (+2/-2)
doc/src/sgml/html/queries-values.html (+2/-2)
doc/src/sgml/html/queries-with.html (+2/-2)
doc/src/sgml/html/queries.html (+2/-2)
doc/src/sgml/html/query-path.html (+2/-2)
doc/src/sgml/html/querytree.html (+2/-2)
doc/src/sgml/html/rangetypes.html (+2/-2)
doc/src/sgml/html/recovery-config.html (+2/-2)
doc/src/sgml/html/recovery-target-settings.html (+2/-2)
doc/src/sgml/html/reference-client.html (+2/-2)
doc/src/sgml/html/reference-server.html (+2/-2)
doc/src/sgml/html/reference.html (+2/-2)
doc/src/sgml/html/regress-coverage.html (+2/-2)
doc/src/sgml/html/regress-evaluation.html (+2/-2)
doc/src/sgml/html/regress-run.html (+2/-2)
doc/src/sgml/html/regress-tap.html (+2/-2)
doc/src/sgml/html/regress-variant.html (+2/-2)
doc/src/sgml/html/regress.html (+2/-2)
doc/src/sgml/html/release-10-1.html (+5/-5)
doc/src/sgml/html/release-10-10.html (+6/-6)
doc/src/sgml/html/release-10-11.html (+6/-6)
doc/src/sgml/html/release-10-12.html (+6/-6)
doc/src/sgml/html/release-10-13.html (+6/-6)
doc/src/sgml/html/release-10-14.html (+6/-6)
doc/src/sgml/html/release-10-15.html (+6/-6)
doc/src/sgml/html/release-10-16.html (+6/-6)
doc/src/sgml/html/release-10-17.html (+6/-6)
doc/src/sgml/html/release-10-18.html (+6/-6)
doc/src/sgml/html/release-10-19.html (+6/-6)
doc/src/sgml/html/release-10-2.html (+6/-6)
doc/src/sgml/html/release-10-20.html (+6/-6)
doc/src/sgml/html/release-10-21.html (+186/-0)
doc/src/sgml/html/release-10-3.html (+6/-6)
doc/src/sgml/html/release-10-4.html (+6/-6)
doc/src/sgml/html/release-10-5.html (+6/-6)
doc/src/sgml/html/release-10-6.html (+6/-6)
doc/src/sgml/html/release-10-7.html (+6/-6)
doc/src/sgml/html/release-10-8.html (+6/-6)
doc/src/sgml/html/release-10-9.html (+6/-6)
doc/src/sgml/html/release-10.html (+33/-33)
doc/src/sgml/html/release-prior.html (+2/-2)
doc/src/sgml/html/release.html (+2/-2)
doc/src/sgml/html/replication-origins.html (+2/-2)
doc/src/sgml/html/resources.html (+2/-2)
doc/src/sgml/html/role-attributes.html (+2/-2)
doc/src/sgml/html/role-membership.html (+2/-2)
doc/src/sgml/html/role-removal.html (+2/-2)
doc/src/sgml/html/routine-reindex.html (+2/-2)
doc/src/sgml/html/routine-vacuuming.html (+19/-2)
doc/src/sgml/html/row-estimation-examples.html (+2/-2)
doc/src/sgml/html/rowtypes.html (+2/-2)
doc/src/sgml/html/rule-system.html (+2/-2)
doc/src/sgml/html/rules-materializedviews.html (+2/-2)
doc/src/sgml/html/rules-privileges.html (+2/-2)
doc/src/sgml/html/rules-status.html (+2/-2)
doc/src/sgml/html/rules-triggers.html (+2/-2)
doc/src/sgml/html/rules-update.html (+2/-2)
doc/src/sgml/html/rules-views.html (+2/-2)
doc/src/sgml/html/rules.html (+2/-2)
doc/src/sgml/html/runtime-config-autovacuum.html (+2/-2)
doc/src/sgml/html/runtime-config-client.html (+2/-2)
doc/src/sgml/html/runtime-config-compatible.html (+2/-2)
doc/src/sgml/html/runtime-config-connection.html (+2/-2)
doc/src/sgml/html/runtime-config-custom.html (+2/-2)
doc/src/sgml/html/runtime-config-developer.html (+2/-2)
doc/src/sgml/html/runtime-config-error-handling.html (+2/-2)
doc/src/sgml/html/runtime-config-file-locations.html (+2/-2)
doc/src/sgml/html/runtime-config-locks.html (+2/-2)
doc/src/sgml/html/runtime-config-logging.html (+2/-2)
doc/src/sgml/html/runtime-config-preset.html (+2/-2)
doc/src/sgml/html/runtime-config-query.html (+2/-2)
doc/src/sgml/html/runtime-config-replication.html (+2/-2)
doc/src/sgml/html/runtime-config-resource.html (+2/-2)
doc/src/sgml/html/runtime-config-short.html (+2/-2)
doc/src/sgml/html/runtime-config-statistics.html (+2/-2)
doc/src/sgml/html/runtime-config-wal.html (+2/-2)
doc/src/sgml/html/runtime-config.html (+2/-2)
doc/src/sgml/html/runtime.html (+2/-2)
doc/src/sgml/html/sasl-authentication.html (+2/-2)
doc/src/sgml/html/seg.html (+2/-2)
doc/src/sgml/html/sepgsql.html (+2/-2)
doc/src/sgml/html/server-programming.html (+2/-2)
doc/src/sgml/html/server-shutdown.html (+2/-2)
doc/src/sgml/html/server-start.html (+6/-6)
doc/src/sgml/html/source-conventions.html (+2/-2)
doc/src/sgml/html/source-format.html (+2/-2)
doc/src/sgml/html/source.html (+1/-1)
doc/src/sgml/html/sourcerepo.html (+2/-2)
doc/src/sgml/html/spgist-builtin-opclasses.html (+2/-2)
doc/src/sgml/html/spgist-examples.html (+2/-2)
doc/src/sgml/html/spgist-extensibility.html (+2/-2)
doc/src/sgml/html/spgist-implementation.html (+2/-2)
doc/src/sgml/html/spgist-intro.html (+2/-2)
doc/src/sgml/html/spgist.html (+1/-1)
doc/src/sgml/html/spi-examples.html (+2/-2)
doc/src/sgml/html/spi-interface-support.html (+2/-2)
doc/src/sgml/html/spi-interface.html (+2/-2)
doc/src/sgml/html/spi-memory.html (+2/-2)
doc/src/sgml/html/spi-realloc.html (+2/-2)
doc/src/sgml/html/spi-spi-connect.html (+2/-2)
doc/src/sgml/html/spi-spi-copytuple.html (+2/-2)
doc/src/sgml/html/spi-spi-cursor-close.html (+2/-2)
doc/src/sgml/html/spi-spi-cursor-fetch.html (+2/-2)
doc/src/sgml/html/spi-spi-cursor-find.html (+2/-2)
doc/src/sgml/html/spi-spi-cursor-move.html (+2/-2)
doc/src/sgml/html/spi-spi-cursor-open-with-args.html (+2/-2)
doc/src/sgml/html/spi-spi-cursor-open-with-paramlist.html (+2/-2)
doc/src/sgml/html/spi-spi-cursor-open.html (+2/-2)
doc/src/sgml/html/spi-spi-exec.html (+2/-2)
doc/src/sgml/html/spi-spi-execp.html (+2/-2)
doc/src/sgml/html/spi-spi-execute-plan-with-paramlist.html (+2/-2)
doc/src/sgml/html/spi-spi-execute-plan.html (+2/-2)
doc/src/sgml/html/spi-spi-execute-with-args.html (+2/-2)
doc/src/sgml/html/spi-spi-execute.html (+2/-2)
doc/src/sgml/html/spi-spi-finish.html (+2/-2)
doc/src/sgml/html/spi-spi-fname.html (+2/-2)
doc/src/sgml/html/spi-spi-fnumber.html (+2/-2)
doc/src/sgml/html/spi-spi-freeplan.html (+2/-2)
doc/src/sgml/html/spi-spi-freetuple.html (+2/-2)
doc/src/sgml/html/spi-spi-freetupletable.html (+2/-2)
doc/src/sgml/html/spi-spi-getargcount.html (+2/-2)
doc/src/sgml/html/spi-spi-getargtypeid.html (+2/-2)
doc/src/sgml/html/spi-spi-getbinval.html (+2/-2)
doc/src/sgml/html/spi-spi-getnspname.html (+2/-2)
doc/src/sgml/html/spi-spi-getrelname.html (+2/-2)
doc/src/sgml/html/spi-spi-gettype.html (+2/-2)
doc/src/sgml/html/spi-spi-gettypeid.html (+2/-2)
doc/src/sgml/html/spi-spi-getvalue.html (+2/-2)
doc/src/sgml/html/spi-spi-is-cursor-plan.html (+2/-2)
doc/src/sgml/html/spi-spi-keepplan.html (+2/-2)
doc/src/sgml/html/spi-spi-modifytuple.html (+2/-2)
doc/src/sgml/html/spi-spi-palloc.html (+2/-2)
doc/src/sgml/html/spi-spi-pfree.html (+2/-2)
doc/src/sgml/html/spi-spi-prepare-cursor.html (+2/-2)
doc/src/sgml/html/spi-spi-prepare-params.html (+2/-2)
doc/src/sgml/html/spi-spi-prepare.html (+2/-2)
doc/src/sgml/html/spi-spi-register-relation.html (+2/-2)
doc/src/sgml/html/spi-spi-register-trigger-data.html (+2/-2)
doc/src/sgml/html/spi-spi-returntuple.html (+2/-2)
doc/src/sgml/html/spi-spi-saveplan.html (+2/-2)
doc/src/sgml/html/spi-spi-scroll-cursor-fetch.html (+2/-2)
doc/src/sgml/html/spi-spi-scroll-cursor-move.html (+2/-2)
doc/src/sgml/html/spi-spi-unregister-relation.html (+2/-2)
doc/src/sgml/html/spi-visibility.html (+2/-2)
doc/src/sgml/html/spi.html (+2/-2)
doc/src/sgml/html/sql-abort.html (+2/-2)
doc/src/sgml/html/sql-alteraggregate.html (+2/-2)
doc/src/sgml/html/sql-altercollation.html (+2/-2)
doc/src/sgml/html/sql-alterconversion.html (+2/-2)
doc/src/sgml/html/sql-alterdatabase.html (+2/-2)
doc/src/sgml/html/sql-alterdefaultprivileges.html (+2/-2)
doc/src/sgml/html/sql-alterdomain.html (+2/-2)
doc/src/sgml/html/sql-altereventtrigger.html (+2/-2)
doc/src/sgml/html/sql-alterextension.html (+2/-2)
doc/src/sgml/html/sql-alterforeigndatawrapper.html (+2/-2)
doc/src/sgml/html/sql-alterforeigntable.html (+2/-2)
doc/src/sgml/html/sql-alterfunction.html (+2/-2)
doc/src/sgml/html/sql-altergroup.html (+2/-2)
doc/src/sgml/html/sql-alterindex.html (+2/-2)
doc/src/sgml/html/sql-alterlanguage.html (+2/-2)
doc/src/sgml/html/sql-alterlargeobject.html (+2/-2)
doc/src/sgml/html/sql-altermaterializedview.html (+3/-2)
doc/src/sgml/html/sql-alteropclass.html (+2/-2)
doc/src/sgml/html/sql-alteroperator.html (+2/-2)
doc/src/sgml/html/sql-alteropfamily.html (+2/-2)
doc/src/sgml/html/sql-alterpolicy.html (+2/-2)
doc/src/sgml/html/sql-alterpublication.html (+2/-2)
doc/src/sgml/html/sql-alterrole.html (+2/-2)
doc/src/sgml/html/sql-alterrule.html (+2/-2)
doc/src/sgml/html/sql-alterschema.html (+2/-2)
doc/src/sgml/html/sql-altersequence.html (+2/-2)
doc/src/sgml/html/sql-alterserver.html (+2/-2)
doc/src/sgml/html/sql-alterstatistics.html (+2/-2)
doc/src/sgml/html/sql-altersubscription.html (+2/-2)
doc/src/sgml/html/sql-altersystem.html (+2/-2)
doc/src/sgml/html/sql-altertable.html (+7/-6)
doc/src/sgml/html/sql-altertablespace.html (+2/-2)
doc/src/sgml/html/sql-altertrigger.html (+2/-2)
doc/src/sgml/html/sql-altertsconfig.html (+2/-2)
doc/src/sgml/html/sql-altertsdictionary.html (+2/-2)
doc/src/sgml/html/sql-altertsparser.html (+2/-2)
doc/src/sgml/html/sql-altertstemplate.html (+2/-2)
doc/src/sgml/html/sql-altertype.html (+2/-2)
doc/src/sgml/html/sql-alteruser.html (+2/-2)
doc/src/sgml/html/sql-alterusermapping.html (+2/-2)
doc/src/sgml/html/sql-alterview.html (+2/-2)
doc/src/sgml/html/sql-analyze.html (+22/-5)
doc/src/sgml/html/sql-begin.html (+2/-2)
doc/src/sgml/html/sql-checkpoint.html (+2/-2)
doc/src/sgml/html/sql-close.html (+2/-2)
doc/src/sgml/html/sql-cluster.html (+2/-2)
doc/src/sgml/html/sql-commands.html (+2/-2)
doc/src/sgml/html/sql-comment.html (+2/-2)
doc/src/sgml/html/sql-commit-prepared.html (+2/-2)
doc/src/sgml/html/sql-commit.html (+2/-2)
doc/src/sgml/html/sql-copy.html (+2/-2)
doc/src/sgml/html/sql-create-access-method.html (+2/-2)
doc/src/sgml/html/sql-createaggregate.html (+2/-2)
doc/src/sgml/html/sql-createcast.html (+2/-2)
doc/src/sgml/html/sql-createcollation.html (+2/-2)
doc/src/sgml/html/sql-createconversion.html (+2/-2)
doc/src/sgml/html/sql-createdatabase.html (+2/-2)
doc/src/sgml/html/sql-createdomain.html (+2/-2)
doc/src/sgml/html/sql-createeventtrigger.html (+2/-2)
doc/src/sgml/html/sql-createextension.html (+2/-2)
doc/src/sgml/html/sql-createforeigndatawrapper.html (+2/-2)
doc/src/sgml/html/sql-createforeigntable.html (+2/-2)
doc/src/sgml/html/sql-createfunction.html (+2/-2)
doc/src/sgml/html/sql-creategroup.html (+2/-2)
doc/src/sgml/html/sql-createindex.html (+2/-2)
doc/src/sgml/html/sql-createlanguage.html (+2/-2)
doc/src/sgml/html/sql-creatematerializedview.html (+2/-2)
doc/src/sgml/html/sql-createopclass.html (+2/-2)
doc/src/sgml/html/sql-createoperator.html (+2/-2)
doc/src/sgml/html/sql-createopfamily.html (+2/-2)
doc/src/sgml/html/sql-createpolicy.html (+2/-2)
doc/src/sgml/html/sql-createpublication.html (+2/-2)
doc/src/sgml/html/sql-createrole.html (+2/-2)
doc/src/sgml/html/sql-createrule.html (+2/-2)
doc/src/sgml/html/sql-createschema.html (+2/-2)
doc/src/sgml/html/sql-createsequence.html (+2/-2)
doc/src/sgml/html/sql-createserver.html (+2/-2)
doc/src/sgml/html/sql-createstatistics.html (+2/-2)
doc/src/sgml/html/sql-createsubscription.html (+2/-2)
doc/src/sgml/html/sql-createtable.html (+2/-2)
doc/src/sgml/html/sql-createtableas.html (+2/-2)
doc/src/sgml/html/sql-createtablespace.html (+2/-2)
doc/src/sgml/html/sql-createtransform.html (+2/-2)
doc/src/sgml/html/sql-createtrigger.html (+2/-2)
doc/src/sgml/html/sql-createtsconfig.html (+2/-2)
doc/src/sgml/html/sql-createtsdictionary.html (+2/-2)
doc/src/sgml/html/sql-createtsparser.html (+2/-2)
doc/src/sgml/html/sql-createtstemplate.html (+2/-2)
doc/src/sgml/html/sql-createtype.html (+2/-2)
doc/src/sgml/html/sql-createuser.html (+2/-2)
doc/src/sgml/html/sql-createusermapping.html (+2/-2)
doc/src/sgml/html/sql-createview.html (+2/-2)
doc/src/sgml/html/sql-deallocate.html (+2/-2)
doc/src/sgml/html/sql-declare.html (+2/-2)
doc/src/sgml/html/sql-delete.html (+2/-2)
doc/src/sgml/html/sql-discard.html (+2/-2)
doc/src/sgml/html/sql-do.html (+2/-2)
doc/src/sgml/html/sql-drop-access-method.html (+2/-2)
doc/src/sgml/html/sql-drop-owned.html (+2/-2)
doc/src/sgml/html/sql-dropaggregate.html (+2/-2)
doc/src/sgml/html/sql-dropcast.html (+2/-2)
doc/src/sgml/html/sql-dropcollation.html (+2/-2)
doc/src/sgml/html/sql-dropconversion.html (+2/-2)
doc/src/sgml/html/sql-dropdatabase.html (+2/-2)
doc/src/sgml/html/sql-dropdomain.html (+2/-2)
doc/src/sgml/html/sql-dropeventtrigger.html (+2/-2)
doc/src/sgml/html/sql-dropextension.html (+2/-2)
doc/src/sgml/html/sql-dropforeigndatawrapper.html (+2/-2)
doc/src/sgml/html/sql-dropforeigntable.html (+2/-2)
doc/src/sgml/html/sql-dropfunction.html (+2/-2)
doc/src/sgml/html/sql-dropgroup.html (+2/-2)
doc/src/sgml/html/sql-dropindex.html (+2/-2)
doc/src/sgml/html/sql-droplanguage.html (+2/-2)
doc/src/sgml/html/sql-dropmaterializedview.html (+2/-2)
doc/src/sgml/html/sql-dropopclass.html (+2/-2)
doc/src/sgml/html/sql-dropoperator.html (+2/-2)
doc/src/sgml/html/sql-dropopfamily.html (+2/-2)
doc/src/sgml/html/sql-droppolicy.html (+2/-2)
doc/src/sgml/html/sql-droppublication.html (+2/-2)
doc/src/sgml/html/sql-droprole.html (+2/-2)
doc/src/sgml/html/sql-droprule.html (+2/-2)
doc/src/sgml/html/sql-dropschema.html (+2/-2)
doc/src/sgml/html/sql-dropsequence.html (+2/-2)
doc/src/sgml/html/sql-dropserver.html (+2/-2)
doc/src/sgml/html/sql-dropstatistics.html (+2/-2)
doc/src/sgml/html/sql-dropsubscription.html (+2/-2)
doc/src/sgml/html/sql-droptable.html (+2/-2)
doc/src/sgml/html/sql-droptablespace.html (+2/-2)
doc/src/sgml/html/sql-droptransform.html (+2/-2)
doc/src/sgml/html/sql-droptrigger.html (+2/-2)
doc/src/sgml/html/sql-droptsconfig.html (+2/-2)
doc/src/sgml/html/sql-droptsdictionary.html (+2/-2)
doc/src/sgml/html/sql-droptsparser.html (+2/-2)
doc/src/sgml/html/sql-droptstemplate.html (+2/-2)
doc/src/sgml/html/sql-droptype.html (+2/-2)
doc/src/sgml/html/sql-dropuser.html (+2/-2)
doc/src/sgml/html/sql-dropusermapping.html (+2/-2)
doc/src/sgml/html/sql-dropview.html (+2/-2)
doc/src/sgml/html/sql-end.html (+2/-2)
doc/src/sgml/html/sql-execute.html (+2/-2)
doc/src/sgml/html/sql-explain.html (+2/-2)
doc/src/sgml/html/sql-expressions.html (+2/-2)
doc/src/sgml/html/sql-fetch.html (+2/-2)
doc/src/sgml/html/sql-grant.html (+2/-2)
doc/src/sgml/html/sql-importforeignschema.html (+2/-2)
doc/src/sgml/html/sql-insert.html (+2/-2)
doc/src/sgml/html/sql-keywords-appendix.html (+3/-3)
doc/src/sgml/html/sql-listen.html (+2/-2)
doc/src/sgml/html/sql-load.html (+2/-2)
doc/src/sgml/html/sql-lock.html (+2/-2)
doc/src/sgml/html/sql-move.html (+2/-2)
doc/src/sgml/html/sql-notify.html (+2/-2)
doc/src/sgml/html/sql-prepare-transaction.html (+2/-2)
doc/src/sgml/html/sql-prepare.html (+2/-2)
doc/src/sgml/html/sql-reassign-owned.html (+2/-2)
doc/src/sgml/html/sql-refreshmaterializedview.html (+2/-2)
doc/src/sgml/html/sql-reindex.html (+2/-2)
doc/src/sgml/html/sql-release-savepoint.html (+2/-2)
doc/src/sgml/html/sql-reset.html (+2/-2)
doc/src/sgml/html/sql-revoke.html (+2/-2)
doc/src/sgml/html/sql-rollback-prepared.html (+2/-2)
doc/src/sgml/html/sql-rollback-to.html (+2/-2)
doc/src/sgml/html/sql-rollback.html (+2/-2)
doc/src/sgml/html/sql-savepoint.html (+2/-2)
doc/src/sgml/html/sql-security-label.html (+2/-2)
doc/src/sgml/html/sql-select.html (+2/-2)
doc/src/sgml/html/sql-selectinto.html (+2/-2)
doc/src/sgml/html/sql-set-constraints.html (+2/-2)
doc/src/sgml/html/sql-set-role.html (+2/-2)
doc/src/sgml/html/sql-set-session-authorization.html (+2/-2)
doc/src/sgml/html/sql-set-transaction.html (+2/-2)
doc/src/sgml/html/sql-set.html (+2/-2)
doc/src/sgml/html/sql-show.html (+2/-2)
doc/src/sgml/html/sql-start-transaction.html (+2/-2)
doc/src/sgml/html/sql-syntax-calling-funcs.html (+2/-2)
doc/src/sgml/html/sql-syntax-lexical.html (+2/-2)
doc/src/sgml/html/sql-syntax.html (+2/-2)
doc/src/sgml/html/sql-truncate.html (+2/-2)
doc/src/sgml/html/sql-unlisten.html (+2/-2)
doc/src/sgml/html/sql-update.html (+2/-2)
doc/src/sgml/html/sql-vacuum.html (+2/-2)
doc/src/sgml/html/sql-values.html (+2/-2)
doc/src/sgml/html/sql.html (+2/-2)
doc/src/sgml/html/ssh-tunnels.html (+2/-2)
doc/src/sgml/html/ssl-tcp.html (+2/-2)
doc/src/sgml/html/sslinfo.html (+2/-2)
doc/src/sgml/html/standby-settings.html (+2/-2)
doc/src/sgml/html/storage-file-layout.html (+2/-2)
doc/src/sgml/html/storage-fsm.html (+2/-2)
doc/src/sgml/html/storage-init.html (+2/-2)
doc/src/sgml/html/storage-page-layout.html (+2/-2)
doc/src/sgml/html/storage-toast.html (+2/-2)
doc/src/sgml/html/storage-vm.html (+2/-2)
doc/src/sgml/html/storage.html (+2/-2)
doc/src/sgml/html/supported-platforms.html (+2/-2)
doc/src/sgml/html/tablefunc.html (+2/-2)
doc/src/sgml/html/tablesample-method.html (+2/-2)
doc/src/sgml/html/tablesample-support-functions.html (+2/-2)
doc/src/sgml/html/tcn.html (+2/-2)
doc/src/sgml/html/test-decoding.html (+2/-2)
doc/src/sgml/html/textsearch-configuration.html (+2/-2)
doc/src/sgml/html/textsearch-controls.html (+2/-2)
doc/src/sgml/html/textsearch-debugging.html (+2/-2)
doc/src/sgml/html/textsearch-dictionaries.html (+2/-2)
doc/src/sgml/html/textsearch-features.html (+2/-2)
doc/src/sgml/html/textsearch-indexes.html (+8/-5)
doc/src/sgml/html/textsearch-intro.html (+3/-3)
doc/src/sgml/html/textsearch-limitations.html (+2/-2)
doc/src/sgml/html/textsearch-parsers.html (+2/-2)
doc/src/sgml/html/textsearch-psql.html (+2/-2)
doc/src/sgml/html/textsearch-tables.html (+4/-4)
doc/src/sgml/html/textsearch.html (+1/-1)
doc/src/sgml/html/transaction-iso.html (+2/-2)
doc/src/sgml/html/trigger-datachanges.html (+2/-2)
doc/src/sgml/html/trigger-definition.html (+2/-2)
doc/src/sgml/html/trigger-example.html (+2/-2)
doc/src/sgml/html/trigger-interface.html (+2/-2)
doc/src/sgml/html/triggers.html (+2/-2)
doc/src/sgml/html/tsm-system-rows.html (+2/-2)
doc/src/sgml/html/tsm-system-time.html (+2/-2)
doc/src/sgml/html/tutorial-accessdb.html (+4/-4)
doc/src/sgml/html/tutorial-advanced-intro.html (+2/-2)
doc/src/sgml/html/tutorial-advanced.html (+1/-1)
doc/src/sgml/html/tutorial-agg.html (+2/-2)
doc/src/sgml/html/tutorial-arch.html (+2/-2)
doc/src/sgml/html/tutorial-concepts.html (+2/-2)
doc/src/sgml/html/tutorial-conclusion.html (+2/-2)
doc/src/sgml/html/tutorial-createdb.html (+2/-2)
doc/src/sgml/html/tutorial-delete.html (+2/-2)
doc/src/sgml/html/tutorial-fk.html (+2/-2)
doc/src/sgml/html/tutorial-inheritance.html (+2/-2)
doc/src/sgml/html/tutorial-install.html (+2/-2)
doc/src/sgml/html/tutorial-join.html (+2/-2)
doc/src/sgml/html/tutorial-populate.html (+2/-2)
doc/src/sgml/html/tutorial-select.html (+2/-2)
doc/src/sgml/html/tutorial-sql-intro.html (+2/-2)
doc/src/sgml/html/tutorial-sql.html (+1/-1)
doc/src/sgml/html/tutorial-start.html (+1/-1)
doc/src/sgml/html/tutorial-table.html (+2/-2)
doc/src/sgml/html/tutorial-transactions.html (+2/-2)
doc/src/sgml/html/tutorial-update.html (+2/-2)
doc/src/sgml/html/tutorial-views.html (+2/-2)
doc/src/sgml/html/tutorial-window.html (+2/-2)
doc/src/sgml/html/tutorial.html (+2/-2)
doc/src/sgml/html/typeconv-func.html (+2/-2)
doc/src/sgml/html/typeconv-oper.html (+2/-2)
doc/src/sgml/html/typeconv-overview.html (+2/-2)
doc/src/sgml/html/typeconv-query.html (+2/-2)
doc/src/sgml/html/typeconv-select.html (+2/-2)
doc/src/sgml/html/typeconv-union-case.html (+2/-2)
doc/src/sgml/html/typeconv.html (+2/-2)
doc/src/sgml/html/unaccent.html (+2/-2)
doc/src/sgml/html/unsupported-features-sql-standard.html (+2/-2)
doc/src/sgml/html/upgrading.html (+3/-3)
doc/src/sgml/html/user-manag.html (+2/-2)
doc/src/sgml/html/using-explain.html (+2/-2)
doc/src/sgml/html/uuid-ossp.html (+2/-2)
doc/src/sgml/html/vacuumlo.html (+2/-2)
doc/src/sgml/html/view-pg-available-extension-versions.html (+2/-2)
doc/src/sgml/html/view-pg-available-extensions.html (+2/-2)
doc/src/sgml/html/view-pg-config.html (+2/-2)
doc/src/sgml/html/view-pg-cursors.html (+2/-2)
doc/src/sgml/html/view-pg-file-settings.html (+2/-2)
doc/src/sgml/html/view-pg-group.html (+2/-2)
doc/src/sgml/html/view-pg-hba-file-rules.html (+2/-2)
doc/src/sgml/html/view-pg-indexes.html (+2/-2)
doc/src/sgml/html/view-pg-locks.html (+2/-2)
doc/src/sgml/html/view-pg-matviews.html (+2/-2)
doc/src/sgml/html/view-pg-policies.html (+2/-2)
doc/src/sgml/html/view-pg-prepared-statements.html (+2/-2)
doc/src/sgml/html/view-pg-prepared-xacts.html (+2/-2)
doc/src/sgml/html/view-pg-publication-tables.html (+2/-2)
doc/src/sgml/html/view-pg-replication-origin-status.html (+2/-2)
doc/src/sgml/html/view-pg-replication-slots.html (+2/-2)
doc/src/sgml/html/view-pg-roles.html (+2/-2)
doc/src/sgml/html/view-pg-rules.html (+2/-2)
doc/src/sgml/html/view-pg-seclabels.html (+2/-2)
doc/src/sgml/html/view-pg-sequences.html (+2/-2)
doc/src/sgml/html/view-pg-settings.html (+2/-2)
doc/src/sgml/html/view-pg-shadow.html (+2/-2)
doc/src/sgml/html/view-pg-stats.html (+2/-2)
doc/src/sgml/html/view-pg-tables.html (+2/-2)
doc/src/sgml/html/view-pg-timezone-abbrevs.html (+2/-2)
doc/src/sgml/html/view-pg-timezone-names.html (+2/-2)
doc/src/sgml/html/view-pg-user-mappings.html (+2/-2)
doc/src/sgml/html/view-pg-user.html (+2/-2)
doc/src/sgml/html/view-pg-views.html (+2/-2)
doc/src/sgml/html/views-overview.html (+2/-2)
doc/src/sgml/html/wal-async-commit.html (+2/-2)
doc/src/sgml/html/wal-configuration.html (+2/-2)
doc/src/sgml/html/wal-internals.html (+2/-2)
doc/src/sgml/html/wal-intro.html (+2/-2)
doc/src/sgml/html/wal-reliability.html (+2/-2)
doc/src/sgml/html/wal.html (+2/-2)
doc/src/sgml/html/warm-standby-failover.html (+2/-2)
doc/src/sgml/html/warm-standby.html (+2/-2)
doc/src/sgml/html/when-can-parallel-query-be-used.html (+2/-2)
doc/src/sgml/html/xaggr.html (+2/-2)
doc/src/sgml/html/xfunc-c.html (+2/-2)
doc/src/sgml/html/xfunc-internal.html (+2/-2)
doc/src/sgml/html/xfunc-overload.html (+2/-2)
doc/src/sgml/html/xfunc-pl.html (+2/-2)
doc/src/sgml/html/xfunc-sql.html (+2/-2)
doc/src/sgml/html/xfunc-volatility.html (+2/-2)
doc/src/sgml/html/xfunc.html (+2/-2)
doc/src/sgml/html/xindex.html (+2/-2)
doc/src/sgml/html/xml-limits-conformance.html (+2/-2)
doc/src/sgml/html/xml2.html (+2/-2)
doc/src/sgml/html/xoper-optimization.html (+3/-3)
doc/src/sgml/html/xoper.html (+2/-2)
doc/src/sgml/html/xplang-install.html (+2/-2)
doc/src/sgml/html/xplang.html (+2/-2)
doc/src/sgml/html/xtypes.html (+2/-2)
doc/src/sgml/libpq.sgml (+22/-10)
doc/src/sgml/maintenance.sgml (+29/-0)
doc/src/sgml/man1/clusterdb.1 (+4/-4)
doc/src/sgml/man1/createdb.1 (+4/-4)
doc/src/sgml/man1/createuser.1 (+4/-4)
doc/src/sgml/man1/dropdb.1 (+4/-4)
doc/src/sgml/man1/dropuser.1 (+4/-4)
doc/src/sgml/man1/ecpg.1 (+4/-4)
doc/src/sgml/man1/initdb.1 (+4/-4)
doc/src/sgml/man1/oid2name.1 (+4/-4)
doc/src/sgml/man1/pg_archivecleanup.1 (+4/-4)
doc/src/sgml/man1/pg_basebackup.1 (+4/-4)
doc/src/sgml/man1/pg_config.1 (+4/-4)
doc/src/sgml/man1/pg_controldata.1 (+4/-4)
doc/src/sgml/man1/pg_ctl.1 (+4/-4)
doc/src/sgml/man1/pg_dump.1 (+4/-4)
doc/src/sgml/man1/pg_dumpall.1 (+4/-4)
doc/src/sgml/man1/pg_isready.1 (+4/-4)
doc/src/sgml/man1/pg_receivewal.1 (+4/-4)
doc/src/sgml/man1/pg_recvlogical.1 (+4/-4)
doc/src/sgml/man1/pg_resetwal.1 (+4/-4)
doc/src/sgml/man1/pg_restore.1 (+4/-4)
doc/src/sgml/man1/pg_rewind.1 (+4/-4)
doc/src/sgml/man1/pg_standby.1 (+4/-4)
doc/src/sgml/man1/pg_test_fsync.1 (+4/-4)
doc/src/sgml/man1/pg_test_timing.1 (+4/-4)
doc/src/sgml/man1/pg_upgrade.1 (+4/-4)
doc/src/sgml/man1/pg_waldump.1 (+4/-4)
doc/src/sgml/man1/pgbench.1 (+4/-4)
doc/src/sgml/man1/postgres.1 (+4/-4)
doc/src/sgml/man1/postmaster.1 (+4/-4)
doc/src/sgml/man1/psql.1 (+5/-5)
doc/src/sgml/man1/reindexdb.1 (+4/-4)
doc/src/sgml/man1/vacuumdb.1 (+4/-4)
doc/src/sgml/man1/vacuumlo.1 (+4/-4)
doc/src/sgml/man3/SPI_connect.3 (+4/-4)
doc/src/sgml/man3/SPI_copytuple.3 (+4/-4)
doc/src/sgml/man3/SPI_cursor_close.3 (+4/-4)
doc/src/sgml/man3/SPI_cursor_fetch.3 (+4/-4)
doc/src/sgml/man3/SPI_cursor_find.3 (+4/-4)
doc/src/sgml/man3/SPI_cursor_move.3 (+4/-4)
doc/src/sgml/man3/SPI_cursor_open.3 (+4/-4)
doc/src/sgml/man3/SPI_cursor_open_with_args.3 (+4/-4)
doc/src/sgml/man3/SPI_cursor_open_with_paramlist.3 (+4/-4)
doc/src/sgml/man3/SPI_exec.3 (+4/-4)
doc/src/sgml/man3/SPI_execp.3 (+4/-4)
doc/src/sgml/man3/SPI_execute.3 (+4/-4)
doc/src/sgml/man3/SPI_execute_plan.3 (+4/-4)
doc/src/sgml/man3/SPI_execute_plan_with_paramlist.3 (+4/-4)
doc/src/sgml/man3/SPI_execute_with_args.3 (+4/-4)
doc/src/sgml/man3/SPI_finish.3 (+4/-4)
doc/src/sgml/man3/SPI_fname.3 (+4/-4)
doc/src/sgml/man3/SPI_fnumber.3 (+4/-4)
doc/src/sgml/man3/SPI_freeplan.3 (+4/-4)
doc/src/sgml/man3/SPI_freetuple.3 (+4/-4)
doc/src/sgml/man3/SPI_freetuptable.3 (+4/-4)
doc/src/sgml/man3/SPI_getargcount.3 (+4/-4)
doc/src/sgml/man3/SPI_getargtypeid.3 (+4/-4)
doc/src/sgml/man3/SPI_getbinval.3 (+4/-4)
doc/src/sgml/man3/SPI_getnspname.3 (+4/-4)
doc/src/sgml/man3/SPI_getrelname.3 (+4/-4)
doc/src/sgml/man3/SPI_gettype.3 (+4/-4)
doc/src/sgml/man3/SPI_gettypeid.3 (+4/-4)
doc/src/sgml/man3/SPI_getvalue.3 (+4/-4)
doc/src/sgml/man3/SPI_is_cursor_plan.3 (+4/-4)
doc/src/sgml/man3/SPI_keepplan.3 (+4/-4)
doc/src/sgml/man3/SPI_modifytuple.3 (+4/-4)
doc/src/sgml/man3/SPI_palloc.3 (+4/-4)
doc/src/sgml/man3/SPI_pfree.3 (+4/-4)
doc/src/sgml/man3/SPI_prepare.3 (+4/-4)
doc/src/sgml/man3/SPI_prepare_cursor.3 (+4/-4)
doc/src/sgml/man3/SPI_prepare_params.3 (+4/-4)
doc/src/sgml/man3/SPI_register_relation.3 (+4/-4)
doc/src/sgml/man3/SPI_register_trigger_data.3 (+4/-4)
doc/src/sgml/man3/SPI_repalloc.3 (+4/-4)
doc/src/sgml/man3/SPI_returntuple.3 (+4/-4)
doc/src/sgml/man3/SPI_saveplan.3 (+4/-4)
doc/src/sgml/man3/SPI_scroll_cursor_fetch.3 (+4/-4)
doc/src/sgml/man3/SPI_scroll_cursor_move.3 (+4/-4)
doc/src/sgml/man3/SPI_unregister_relation.3 (+4/-4)
doc/src/sgml/man3/dblink.3 (+4/-4)
doc/src/sgml/man3/dblink_build_sql_delete.3 (+4/-4)
doc/src/sgml/man3/dblink_build_sql_insert.3 (+4/-4)
doc/src/sgml/man3/dblink_build_sql_update.3 (+4/-4)
doc/src/sgml/man3/dblink_cancel_query.3 (+4/-4)
doc/src/sgml/man3/dblink_close.3 (+4/-4)
doc/src/sgml/man3/dblink_connect.3 (+4/-4)
doc/src/sgml/man3/dblink_connect_u.3 (+4/-4)
doc/src/sgml/man3/dblink_disconnect.3 (+4/-4)
doc/src/sgml/man3/dblink_error_message.3 (+4/-4)
doc/src/sgml/man3/dblink_exec.3 (+4/-4)
doc/src/sgml/man3/dblink_fetch.3 (+4/-4)
doc/src/sgml/man3/dblink_get_connections.3 (+4/-4)
doc/src/sgml/man3/dblink_get_notify.3 (+4/-4)
doc/src/sgml/man3/dblink_get_pkey.3 (+4/-4)
doc/src/sgml/man3/dblink_get_result.3 (+4/-4)
doc/src/sgml/man3/dblink_is_busy.3 (+4/-4)
doc/src/sgml/man3/dblink_open.3 (+4/-4)
doc/src/sgml/man3/dblink_send_query.3 (+4/-4)
doc/src/sgml/man7/ABORT.7 (+4/-4)
doc/src/sgml/man7/ALTER_AGGREGATE.7 (+4/-4)
doc/src/sgml/man7/ALTER_COLLATION.7 (+4/-4)
doc/src/sgml/man7/ALTER_CONVERSION.7 (+4/-4)
doc/src/sgml/man7/ALTER_DATABASE.7 (+4/-4)
doc/src/sgml/man7/ALTER_DEFAULT_PRIVILEGES.7 (+4/-4)
doc/src/sgml/man7/ALTER_DOMAIN.7 (+4/-4)
doc/src/sgml/man7/ALTER_EVENT_TRIGGER.7 (+4/-4)
doc/src/sgml/man7/ALTER_EXTENSION.7 (+4/-4)
doc/src/sgml/man7/ALTER_FOREIGN_DATA_WRAPPER.7 (+4/-4)
doc/src/sgml/man7/ALTER_FOREIGN_TABLE.7 (+4/-4)
doc/src/sgml/man7/ALTER_FUNCTION.7 (+4/-4)
doc/src/sgml/man7/ALTER_GROUP.7 (+4/-4)
doc/src/sgml/man7/ALTER_INDEX.7 (+4/-4)
doc/src/sgml/man7/ALTER_LANGUAGE.7 (+4/-4)
doc/src/sgml/man7/ALTER_LARGE_OBJECT.7 (+4/-4)
doc/src/sgml/man7/ALTER_MATERIALIZED_VIEW.7 (+5/-4)
doc/src/sgml/man7/ALTER_OPERATOR.7 (+4/-4)
doc/src/sgml/man7/ALTER_OPERATOR_CLASS.7 (+4/-4)
doc/src/sgml/man7/ALTER_OPERATOR_FAMILY.7 (+4/-4)
doc/src/sgml/man7/ALTER_POLICY.7 (+4/-4)
doc/src/sgml/man7/ALTER_PUBLICATION.7 (+4/-4)
doc/src/sgml/man7/ALTER_ROLE.7 (+4/-4)
doc/src/sgml/man7/ALTER_RULE.7 (+4/-4)
doc/src/sgml/man7/ALTER_SCHEMA.7 (+4/-4)
doc/src/sgml/man7/ALTER_SEQUENCE.7 (+4/-4)
doc/src/sgml/man7/ALTER_SERVER.7 (+4/-4)
doc/src/sgml/man7/ALTER_STATISTICS.7 (+4/-4)
doc/src/sgml/man7/ALTER_SUBSCRIPTION.7 (+4/-4)
doc/src/sgml/man7/ALTER_SYSTEM.7 (+4/-4)
doc/src/sgml/man7/ALTER_TABLE.7 (+5/-5)
doc/src/sgml/man7/ALTER_TABLESPACE.7 (+4/-4)
doc/src/sgml/man7/ALTER_TEXT_SEARCH_CONFIGURATION.7 (+4/-4)
doc/src/sgml/man7/ALTER_TEXT_SEARCH_DICTIONARY.7 (+4/-4)
doc/src/sgml/man7/ALTER_TEXT_SEARCH_PARSER.7 (+4/-4)
doc/src/sgml/man7/ALTER_TEXT_SEARCH_TEMPLATE.7 (+4/-4)
doc/src/sgml/man7/ALTER_TRIGGER.7 (+4/-4)
doc/src/sgml/man7/ALTER_TYPE.7 (+4/-4)
doc/src/sgml/man7/ALTER_USER.7 (+4/-4)
doc/src/sgml/man7/ALTER_USER_MAPPING.7 (+4/-4)
doc/src/sgml/man7/ALTER_VIEW.7 (+4/-4)
doc/src/sgml/man7/ANALYZE.7 (+18/-6)
doc/src/sgml/man7/BEGIN.7 (+4/-4)
doc/src/sgml/man7/CHECKPOINT.7 (+4/-4)
doc/src/sgml/man7/CLOSE.7 (+4/-4)
doc/src/sgml/man7/CLUSTER.7 (+4/-4)
doc/src/sgml/man7/COMMENT.7 (+4/-4)
doc/src/sgml/man7/COMMIT.7 (+4/-4)
doc/src/sgml/man7/COMMIT_PREPARED.7 (+4/-4)
doc/src/sgml/man7/COPY.7 (+4/-4)
doc/src/sgml/man7/CREATE_ACCESS_METHOD.7 (+4/-4)
doc/src/sgml/man7/CREATE_AGGREGATE.7 (+4/-4)
doc/src/sgml/man7/CREATE_CAST.7 (+4/-4)
doc/src/sgml/man7/CREATE_COLLATION.7 (+4/-4)
doc/src/sgml/man7/CREATE_CONVERSION.7 (+4/-4)
doc/src/sgml/man7/CREATE_DATABASE.7 (+4/-4)
doc/src/sgml/man7/CREATE_DOMAIN.7 (+4/-4)
doc/src/sgml/man7/CREATE_EVENT_TRIGGER.7 (+4/-4)
doc/src/sgml/man7/CREATE_EXTENSION.7 (+4/-4)
doc/src/sgml/man7/CREATE_FOREIGN_DATA_WRAPPER.7 (+4/-4)
doc/src/sgml/man7/CREATE_FOREIGN_TABLE.7 (+4/-4)
doc/src/sgml/man7/CREATE_FUNCTION.7 (+4/-4)
doc/src/sgml/man7/CREATE_GROUP.7 (+4/-4)
doc/src/sgml/man7/CREATE_INDEX.7 (+4/-4)
doc/src/sgml/man7/CREATE_LANGUAGE.7 (+4/-4)
doc/src/sgml/man7/CREATE_MATERIALIZED_VIEW.7 (+4/-4)
doc/src/sgml/man7/CREATE_OPERATOR.7 (+4/-4)
doc/src/sgml/man7/CREATE_OPERATOR_CLASS.7 (+4/-4)
doc/src/sgml/man7/CREATE_OPERATOR_FAMILY.7 (+4/-4)
doc/src/sgml/man7/CREATE_POLICY.7 (+4/-4)
doc/src/sgml/man7/CREATE_PUBLICATION.7 (+4/-4)
doc/src/sgml/man7/CREATE_ROLE.7 (+4/-4)
doc/src/sgml/man7/CREATE_RULE.7 (+4/-4)
doc/src/sgml/man7/CREATE_SCHEMA.7 (+4/-4)
doc/src/sgml/man7/CREATE_SEQUENCE.7 (+4/-4)
doc/src/sgml/man7/CREATE_SERVER.7 (+4/-4)
doc/src/sgml/man7/CREATE_STATISTICS.7 (+4/-4)
doc/src/sgml/man7/CREATE_SUBSCRIPTION.7 (+4/-4)
doc/src/sgml/man7/CREATE_TABLE.7 (+4/-4)
doc/src/sgml/man7/CREATE_TABLESPACE.7 (+4/-4)
doc/src/sgml/man7/CREATE_TABLE_AS.7 (+4/-4)
doc/src/sgml/man7/CREATE_TEXT_SEARCH_CONFIGURATION.7 (+4/-4)
doc/src/sgml/man7/CREATE_TEXT_SEARCH_DICTIONARY.7 (+4/-4)
doc/src/sgml/man7/CREATE_TEXT_SEARCH_PARSER.7 (+4/-4)
doc/src/sgml/man7/CREATE_TEXT_SEARCH_TEMPLATE.7 (+4/-4)
doc/src/sgml/man7/CREATE_TRANSFORM.7 (+4/-4)
doc/src/sgml/man7/CREATE_TRIGGER.7 (+4/-4)
doc/src/sgml/man7/CREATE_TYPE.7 (+4/-4)
doc/src/sgml/man7/CREATE_USER.7 (+4/-4)
doc/src/sgml/man7/CREATE_USER_MAPPING.7 (+4/-4)
doc/src/sgml/man7/CREATE_VIEW.7 (+4/-4)
doc/src/sgml/man7/DEALLOCATE.7 (+4/-4)
doc/src/sgml/man7/DECLARE.7 (+4/-4)
doc/src/sgml/man7/DELETE.7 (+4/-4)
doc/src/sgml/man7/DISCARD.7 (+4/-4)
doc/src/sgml/man7/DO.7 (+4/-4)
doc/src/sgml/man7/DROP_ACCESS_METHOD.7 (+4/-4)
doc/src/sgml/man7/DROP_AGGREGATE.7 (+4/-4)
doc/src/sgml/man7/DROP_CAST.7 (+4/-4)
doc/src/sgml/man7/DROP_COLLATION.7 (+4/-4)
doc/src/sgml/man7/DROP_CONVERSION.7 (+4/-4)
doc/src/sgml/man7/DROP_DATABASE.7 (+4/-4)
doc/src/sgml/man7/DROP_DOMAIN.7 (+4/-4)
doc/src/sgml/man7/DROP_EVENT_TRIGGER.7 (+4/-4)
doc/src/sgml/man7/DROP_EXTENSION.7 (+4/-4)
doc/src/sgml/man7/DROP_FOREIGN_DATA_WRAPPER.7 (+4/-4)
doc/src/sgml/man7/DROP_FOREIGN_TABLE.7 (+4/-4)
doc/src/sgml/man7/DROP_FUNCTION.7 (+4/-4)
doc/src/sgml/man7/DROP_GROUP.7 (+4/-4)
doc/src/sgml/man7/DROP_INDEX.7 (+4/-4)
doc/src/sgml/man7/DROP_LANGUAGE.7 (+4/-4)
doc/src/sgml/man7/DROP_MATERIALIZED_VIEW.7 (+4/-4)
doc/src/sgml/man7/DROP_OPERATOR.7 (+4/-4)
doc/src/sgml/man7/DROP_OPERATOR_CLASS.7 (+4/-4)
doc/src/sgml/man7/DROP_OPERATOR_FAMILY.7 (+4/-4)
doc/src/sgml/man7/DROP_OWNED.7 (+4/-4)
doc/src/sgml/man7/DROP_POLICY.7 (+4/-4)
doc/src/sgml/man7/DROP_PUBLICATION.7 (+4/-4)
doc/src/sgml/man7/DROP_ROLE.7 (+4/-4)
doc/src/sgml/man7/DROP_RULE.7 (+4/-4)
doc/src/sgml/man7/DROP_SCHEMA.7 (+4/-4)
doc/src/sgml/man7/DROP_SEQUENCE.7 (+4/-4)
doc/src/sgml/man7/DROP_SERVER.7 (+4/-4)
doc/src/sgml/man7/DROP_STATISTICS.7 (+4/-4)
doc/src/sgml/man7/DROP_SUBSCRIPTION.7 (+4/-4)
doc/src/sgml/man7/DROP_TABLE.7 (+4/-4)
doc/src/sgml/man7/DROP_TABLESPACE.7 (+4/-4)
doc/src/sgml/man7/DROP_TEXT_SEARCH_CONFIGURATION.7 (+4/-4)
doc/src/sgml/man7/DROP_TEXT_SEARCH_DICTIONARY.7 (+4/-4)
doc/src/sgml/man7/DROP_TEXT_SEARCH_PARSER.7 (+4/-4)
doc/src/sgml/man7/DROP_TEXT_SEARCH_TEMPLATE.7 (+4/-4)
doc/src/sgml/man7/DROP_TRANSFORM.7 (+4/-4)
doc/src/sgml/man7/DROP_TRIGGER.7 (+4/-4)
doc/src/sgml/man7/DROP_TYPE.7 (+4/-4)
doc/src/sgml/man7/DROP_USER.7 (+4/-4)
doc/src/sgml/man7/DROP_USER_MAPPING.7 (+4/-4)
doc/src/sgml/man7/DROP_VIEW.7 (+4/-4)
doc/src/sgml/man7/END.7 (+4/-4)
doc/src/sgml/man7/EXECUTE.7 (+4/-4)
doc/src/sgml/man7/EXPLAIN.7 (+4/-4)
doc/src/sgml/man7/FETCH.7 (+4/-4)
doc/src/sgml/man7/GRANT.7 (+4/-4)
doc/src/sgml/man7/IMPORT_FOREIGN_SCHEMA.7 (+4/-4)
doc/src/sgml/man7/INSERT.7 (+4/-4)
doc/src/sgml/man7/LISTEN.7 (+4/-4)
doc/src/sgml/man7/LOAD.7 (+4/-4)
doc/src/sgml/man7/LOCK.7 (+4/-4)
doc/src/sgml/man7/MOVE.7 (+4/-4)
doc/src/sgml/man7/NOTIFY.7 (+4/-4)
doc/src/sgml/man7/PREPARE.7 (+4/-4)
doc/src/sgml/man7/PREPARE_TRANSACTION.7 (+4/-4)
doc/src/sgml/man7/REASSIGN_OWNED.7 (+4/-4)
doc/src/sgml/man7/REFRESH_MATERIALIZED_VIEW.7 (+4/-4)
doc/src/sgml/man7/REINDEX.7 (+4/-4)
doc/src/sgml/man7/RELEASE_SAVEPOINT.7 (+4/-4)
doc/src/sgml/man7/RESET.7 (+4/-4)
doc/src/sgml/man7/REVOKE.7 (+4/-4)
doc/src/sgml/man7/ROLLBACK.7 (+4/-4)
doc/src/sgml/man7/ROLLBACK_PREPARED.7 (+4/-4)
doc/src/sgml/man7/ROLLBACK_TO_SAVEPOINT.7 (+4/-4)
doc/src/sgml/man7/SAVEPOINT.7 (+4/-4)
doc/src/sgml/man7/SECURITY_LABEL.7 (+4/-4)
doc/src/sgml/man7/SELECT.7 (+4/-4)
doc/src/sgml/man7/SELECT_INTO.7 (+4/-4)
doc/src/sgml/man7/SET.7 (+4/-4)
doc/src/sgml/man7/SET_CONSTRAINTS.7 (+4/-4)
doc/src/sgml/man7/SET_ROLE.7 (+4/-4)
doc/src/sgml/man7/SET_SESSION_AUTHORIZATION.7 (+4/-4)
doc/src/sgml/man7/SET_TRANSACTION.7 (+4/-4)
doc/src/sgml/man7/SHOW.7 (+4/-4)
doc/src/sgml/man7/START_TRANSACTION.7 (+4/-4)
doc/src/sgml/man7/TRUNCATE.7 (+4/-4)
doc/src/sgml/man7/UNLISTEN.7 (+4/-4)
doc/src/sgml/man7/UPDATE.7 (+4/-4)
doc/src/sgml/man7/VACUUM.7 (+4/-4)
doc/src/sgml/man7/VALUES.7 (+4/-4)
doc/src/sgml/ref/alter_materialized_view.sgml (+1/-0)
doc/src/sgml/ref/alter_table.sgml (+5/-4)
doc/src/sgml/ref/analyze.sgml (+29/-3)
doc/src/sgml/release-10.sgml (+774/-0)
doc/src/sgml/runtime.sgml (+4/-4)
doc/src/sgml/textsearch.sgml (+8/-2)
src/backend/access/brin/brin.c (+29/-1)
src/backend/access/heap/heapam.c (+117/-61)
src/backend/access/transam/twophase.c (+3/-0)
src/backend/access/transam/xact.c (+4/-2)
src/backend/access/transam/xlog.c (+22/-7)
src/backend/bootstrap/bootparse.c (+535/-617)
src/backend/catalog/index.c (+30/-11)
src/backend/catalog/namespace.c (+3/-0)
src/backend/catalog/storage.c (+25/-1)
src/backend/commands/cluster.c (+28/-7)
src/backend/commands/copy.c (+1/-1)
src/backend/commands/functioncmds.c (+3/-2)
src/backend/commands/indexcmds.c (+51/-2)
src/backend/commands/matview.c (+11/-19)
src/backend/executor/execExpr.c (+4/-4)
src/backend/executor/execExprInterp.c (+32/-34)
src/backend/executor/execTuples.c (+13/-24)
src/backend/executor/nodeIndexscan.c (+5/-1)
src/backend/libpq/be-secure-openssl.c (+13/-15)
src/backend/nodes/copyfuncs.c (+17/-29)
src/backend/nodes/nodeFuncs.c (+2/-0)
src/backend/optimizer/path/costsize.c (+6/-0)
src/backend/optimizer/plan/createplan.c (+16/-0)
src/backend/optimizer/plan/subselect.c (+19/-11)
src/backend/parser/analyze.c (+7/-14)
src/backend/parser/gram.c (+9837/-9402)
src/backend/parser/gram.h (+466/-461)
src/backend/parser/parse_utilcmd.c (+1/-1)
src/backend/po/de.po (+312/-297)
src/backend/po/fr.po (+350/-335)
src/backend/po/ru.po (+315/-299)
src/backend/po/sv.po (+578/-558)
src/backend/replication/logical/launcher.c (+4/-4)
src/backend/replication/logical/tablesync.c (+17/-4)
src/backend/replication/repl_gram.c (+573/-653)
src/backend/replication/syncrep_gram.c (+370/-496)
src/backend/storage/buffer/bufmgr.c (+3/-1)
src/backend/storage/ipc/latch.c (+1/-1)
src/backend/storage/ipc/procarray.c (+84/-18)
src/backend/storage/ipc/shm_mq.c (+5/-2)
src/backend/storage/ipc/standby.c (+12/-10)
src/backend/storage/lmgr/proc.c (+2/-2)
src/backend/storage/smgr/md.c (+13/-1)
src/backend/utils/adt/numeric.c (+8/-0)
src/backend/utils/adt/ruleutils.c (+7/-3)
src/backend/utils/adt/xml.c (+2/-2)
src/backend/utils/cache/inval.c (+1/-1)
src/backend/utils/cache/relcache.c (+1/-1)
src/backend/utils/init/miscinit.c (+15/-9)
src/backend/utils/sort/tuplesort.c (+3/-1)
src/backend/utils/time/snapmgr.c (+6/-4)
src/backend/utils/time/tqual.c (+2/-2)
src/bin/initdb/po/ru.po (+8/-8)
src/bin/initdb/po/sv.po (+1/-1)
src/bin/pg_archivecleanup/po/sv.po (+1/-1)
src/bin/pg_basebackup/po/sv.po (+49/-49)
src/bin/pg_config/po/ru.po (+8/-8)
src/bin/pg_config/po/sv.po (+1/-1)
src/bin/pg_controldata/po/sv.po (+1/-1)
src/bin/pg_ctl/pg_ctl.c (+80/-48)
src/bin/pg_ctl/po/ru.po (+136/-136)
src/bin/pg_ctl/po/sv.po (+129/-129)
src/bin/pg_ctl/t/001_start_stop.pl (+1/-10)
src/bin/pg_dump/Makefile (+1/-1)
src/bin/pg_dump/po/ru.po (+8/-8)
src/bin/pg_dump/po/sv.po (+11/-11)
src/bin/pg_dump/t/002_pg_dump.pl (+2/-1)
src/bin/pg_resetwal/po/sv.po (+1/-1)
src/bin/pg_rewind/parsexlog.c (+5/-1)
src/bin/pg_rewind/po/de.po (+77/-72)
src/bin/pg_rewind/po/fr.po (+82/-77)
src/bin/pg_rewind/po/ru.po (+18/-12)
src/bin/pg_rewind/po/sv.po (+17/-12)
src/bin/pg_rewind/t/RewindTest.pm (+0/-1)
src/bin/pg_test_fsync/po/sv.po (+1/-1)
src/bin/pg_test_timing/po/sv.po (+1/-1)
src/bin/pg_upgrade/po/sv.po (+1/-1)
src/bin/pg_waldump/po/sv.po (+1/-1)
src/bin/pgbench/exprparse.c (+410/-528)
src/bin/pgbench/t/022_cic.pl (+3/-2)
src/bin/pgbench/t/023_cic_2pc.pl (+11/-8)
src/bin/psql/po/ru.po (+710/-709)
src/bin/psql/po/sv.po (+1/-1)
src/bin/psql/sql_help.c (+3/-1)
src/bin/scripts/po/ru.po (+5/-5)
src/bin/scripts/po/sv.po (+11/-21)
src/bin/scripts/t/080_pg_isready.pl (+3/-2)
src/common/exec.c (+5/-0)
src/fe_utils/print.c (+2/-1)
src/include/pg_config.h.win32 (+4/-4)
src/include/storage/block.h (+1/-1)
src/include/storage/proc.h (+14/-2)
src/include/storage/procarray.h (+5/-1)
src/include/utils/relptr.h (+15/-2)
src/interfaces/ecpg/Makefile (+1/-0)
src/interfaces/ecpg/ecpglib/po/sv.po (+1/-1)
src/interfaces/ecpg/preproc/po/sv.po (+1/-1)
src/interfaces/ecpg/preproc/preproc.c (+14142/-13535)
src/interfaces/ecpg/preproc/preproc.h (+542/-537)
src/interfaces/libpq/fe-secure-openssl.c (+37/-3)
src/interfaces/libpq/libpq-dist.rc (+4/-4)
src/interfaces/libpq/libpq.rc.in (+4/-4)
src/interfaces/libpq/po/de.po (+23/-13)
src/interfaces/libpq/po/fr.po (+67/-53)
src/interfaces/libpq/po/ru.po (+32/-17)
src/interfaces/libpq/po/sv.po (+61/-51)
src/pl/plperl/GNUmakefile (+1/-1)
src/pl/plperl/plperl.c (+27/-2)
src/pl/plperl/po/ru.po (+44/-44)
src/pl/plperl/po/sv.po (+44/-44)
src/pl/plperl/ppport.h (+8/-0)
src/pl/plpgsql/src/pl_gram.c (+1163/-1317)
src/pl/plpgsql/src/pl_gram.h (+133/-128)
src/pl/plpgsql/src/po/sv.po (+1/-1)
src/pl/plpython/Makefile (+1/-1)
src/pl/plpython/po/sv.po (+1/-1)
src/pl/tcl/Makefile (+1/-1)
src/pl/tcl/po/sv.po (+1/-1)
src/port/win32ver.rc (+2/-2)
src/test/isolation/expected/temp-schema-cleanup.out (+115/-0)
src/test/isolation/isolation_schedule (+1/-0)
src/test/isolation/specparse.c (+472/-580)
src/test/isolation/specs/temp-schema-cleanup.spec (+85/-0)
src/test/perl/PostgreSQL/Test/Cluster.pm (+16/-0)
src/test/perl/PostgreSQL/Test/Utils.pm (+41/-0)
src/test/perl/PostgresNode.pm (+59/-21)
src/test/perl/TestLib.pm (+72/-33)
src/test/recovery/t/006_logical_decoding.pl (+2/-2)
src/test/recovery/t/010_logical_decoding_timelines.pl (+2/-2)
src/test/recovery/t/017_shm.pl (+7/-6)
src/test/recovery/t/025_stuck_on_old_timeline.pl (+1/-1)
src/test/recovery/t/026_overwrite_contrecord.pl (+4/-1)
src/test/recovery/t/031_recovery_conflict.pl (+377/-0)
src/test/recovery/t/cp_history_files (+0/-7)
src/test/regress/expected/cluster.out (+121/-0)
src/test/regress/expected/create_index.out (+27/-0)
src/test/regress/expected/gist.out (+16/-0)
src/test/regress/expected/groupingsets.out (+49/-0)
src/test/regress/expected/privileges.out (+79/-0)
src/test/regress/expected/rowtypes.out (+2/-21)
src/test/regress/expected/select.out (+7/-0)
src/test/regress/expected/timestamp.out (+60/-0)
src/test/regress/expected/timestamptz.out (+60/-0)
src/test/regress/expected/xmlmap.out (+496/-432)
src/test/regress/expected/xmlmap_1.out (+8/-2)
src/test/regress/sql/cluster.sql (+43/-0)
src/test/regress/sql/create_index.sql (+4/-0)
src/test/regress/sql/gist.sql (+5/-0)
src/test/regress/sql/groupingsets.sql (+9/-0)
src/test/regress/sql/privileges.sql (+64/-0)
src/test/regress/sql/rowtypes.sql (+2/-4)
src/test/regress/sql/select.sql (+5/-0)
src/test/regress/sql/timestamp.sql (+14/-0)
src/test/regress/sql/timestamptz.sql (+14/-0)
src/test/regress/sql/xmlmap.sql (+8/-2)
src/test/ssl/t/001_ssltests.pl (+14/-9)
src/timezone/data/tzdata.zi (+18/-16)
Reviewer Review Type Date Requested Status
Athos Ribeiro (community) Approve
Canonical Server packageset reviewers Pending
Canonical Server Pending
Review via email: mp+422793@code.launchpad.net

Description of the change

This is the MRE for postgresql-10 on Bionic (bug #1973627).

I've created a bileto ticket for this change; you can find it here:

https://bileto.ubuntu.com/#/ticket/4847

and the corresponding PPA is here:

https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/4847/+packages

The builds are still being published, and I'm not sure if bileto is triggering the dep8 tests or not (last time it wasn't), but I'm creating this MP now to get the review out of the way. If there are any dep8 failures I will address them later.

This update contains a CVE fix, which means that it will be uploaded to the security pocket.

To post a comment you must log in.
Revision history for this message
Athos Ribeiro (athos-ribeiro) wrote :

The changes LGTM!

Let's keep an eye on test re-triggers and verify the failures now. In special, the tests for postgresql-multicorn are failing in all architectures.

review: Approve
Revision history for this message
Sergio Durigan Junior (sergiodj) wrote :

None of the failures present in the related bileto ticket are regressions. We are clear to proceed here.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/.gitrevision b/.gitrevision
index 74eb6bf..8113666 100644
--- a/.gitrevision
+++ b/.gitrevision
@@ -1 +1 @@
1fa362d2b3bde0f99ba8a22486205de11b2e00e1416979736b4bcdc57e4699eadcca44b699fd1afd29
diff --git a/configure b/configure
index d0d7796..547d05c 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
1#! /bin/sh1#! /bin/sh
2# Guess values for system-dependent variables and create Makefiles.2# Guess values for system-dependent variables and create Makefiles.
3# Generated by GNU Autoconf 2.69 for PostgreSQL 10.20.3# Generated by GNU Autoconf 2.69 for PostgreSQL 10.21.
4#4#
5# Report bugs to <pgsql-bugs@postgresql.org>.5# Report bugs to <pgsql-bugs@postgresql.org>.
6#6#
@@ -582,8 +582,8 @@ MAKEFLAGS=
582# Identity of this package.582# Identity of this package.
583PACKAGE_NAME='PostgreSQL'583PACKAGE_NAME='PostgreSQL'
584PACKAGE_TARNAME='postgresql'584PACKAGE_TARNAME='postgresql'
585PACKAGE_VERSION='10.20'585PACKAGE_VERSION='10.21'
586PACKAGE_STRING='PostgreSQL 10.20'586PACKAGE_STRING='PostgreSQL 10.21'
587PACKAGE_BUGREPORT='pgsql-bugs@postgresql.org'587PACKAGE_BUGREPORT='pgsql-bugs@postgresql.org'
588PACKAGE_URL=''588PACKAGE_URL=''
589589
@@ -1417,7 +1417,7 @@ if test "$ac_init_help" = "long"; then
1417 # Omit some internal or obsolete options to make the list less imposing.1417 # Omit some internal or obsolete options to make the list less imposing.
1418 # This message is too long to be a string in the A/UX 3.1 sh.1418 # This message is too long to be a string in the A/UX 3.1 sh.
1419 cat <<_ACEOF1419 cat <<_ACEOF
1420\`configure' configures PostgreSQL 10.20 to adapt to many kinds of systems.1420\`configure' configures PostgreSQL 10.21 to adapt to many kinds of systems.
14211421
1422Usage: $0 [OPTION]... [VAR=VALUE]...1422Usage: $0 [OPTION]... [VAR=VALUE]...
14231423
@@ -1482,7 +1482,7 @@ fi
14821482
1483if test -n "$ac_init_help"; then1483if test -n "$ac_init_help"; then
1484 case $ac_init_help in1484 case $ac_init_help in
1485 short | recursive ) echo "Configuration of PostgreSQL 10.20:";;1485 short | recursive ) echo "Configuration of PostgreSQL 10.21:";;
1486 esac1486 esac
1487 cat <<\_ACEOF1487 cat <<\_ACEOF
14881488
@@ -1644,7 +1644,7 @@ fi
1644test -n "$ac_init_help" && exit $ac_status1644test -n "$ac_init_help" && exit $ac_status
1645if $ac_init_version; then1645if $ac_init_version; then
1646 cat <<\_ACEOF1646 cat <<\_ACEOF
1647PostgreSQL configure 10.201647PostgreSQL configure 10.21
1648generated by GNU Autoconf 2.691648generated by GNU Autoconf 2.69
16491649
1650Copyright (C) 2012 Free Software Foundation, Inc.1650Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2359,7 +2359,7 @@ cat >config.log <<_ACEOF
2359This file contains any messages produced by compilers while2359This file contains any messages produced by compilers while
2360running configure, to aid debugging if configure makes a mistake.2360running configure, to aid debugging if configure makes a mistake.
23612361
2362It was created by PostgreSQL $as_me 10.20, which was2362It was created by PostgreSQL $as_me 10.21, which was
2363generated by GNU Autoconf 2.69. Invocation command line was2363generated by GNU Autoconf 2.69. Invocation command line was
23642364
2365 $ $0 $@2365 $ $0 $@
@@ -9274,9 +9274,12 @@ if test "$ac_res" != no; then :
92749274
9275fi9275fi
92769276
9277{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&59277# gcc/clang's sanitizer helper library provides dlopen but not dlsym, thus
9278$as_echo_n "checking for library containing dlopen... " >&6; }9278# when enabling asan the dlopen check doesn't notice that -ldl is actually
9279if ${ac_cv_search_dlopen+:} false; then :9279# required. Just checking for dlsym() ought to suffice.
9280{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlsym" >&5
9281$as_echo_n "checking for library containing dlsym... " >&6; }
9282if ${ac_cv_search_dlsym+:} false; then :
9280 $as_echo_n "(cached) " >&69283 $as_echo_n "(cached) " >&6
9281else9284else
9282 ac_func_search_save_LIBS=$LIBS9285 ac_func_search_save_LIBS=$LIBS
@@ -9289,11 +9292,11 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
9289#ifdef __cplusplus9292#ifdef __cplusplus
9290extern "C"9293extern "C"
9291#endif9294#endif
9292char dlopen ();9295char dlsym ();
9293int9296int
9294main ()9297main ()
9295{9298{
9296return dlopen ();9299return dlsym ();
9297 ;9300 ;
9298 return 0;9301 return 0;
9299}9302}
@@ -9306,25 +9309,25 @@ for ac_lib in '' dl; do
9306 LIBS="-l$ac_lib $ac_func_search_save_LIBS"9309 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
9307 fi9310 fi
9308 if ac_fn_c_try_link "$LINENO"; then :9311 if ac_fn_c_try_link "$LINENO"; then :
9309 ac_cv_search_dlopen=$ac_res9312 ac_cv_search_dlsym=$ac_res
9310fi9313fi
9311rm -f core conftest.err conftest.$ac_objext \9314rm -f core conftest.err conftest.$ac_objext \
9312 conftest$ac_exeext9315 conftest$ac_exeext
9313 if ${ac_cv_search_dlopen+:} false; then :9316 if ${ac_cv_search_dlsym+:} false; then :
9314 break9317 break
9315fi9318fi
9316done9319done
9317if ${ac_cv_search_dlopen+:} false; then :9320if ${ac_cv_search_dlsym+:} false; then :
93189321
9319else9322else
9320 ac_cv_search_dlopen=no9323 ac_cv_search_dlsym=no
9321fi9324fi
9322rm conftest.$ac_ext9325rm conftest.$ac_ext
9323LIBS=$ac_func_search_save_LIBS9326LIBS=$ac_func_search_save_LIBS
9324fi9327fi
9325{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&59328{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlsym" >&5
9326$as_echo "$ac_cv_search_dlopen" >&6; }9329$as_echo "$ac_cv_search_dlsym" >&6; }
9327ac_res=$ac_cv_search_dlopen9330ac_res=$ac_cv_search_dlsym
9328if test "$ac_res" != no; then :9331if test "$ac_res" != no; then :
9329 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"9332 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
93309333
@@ -17766,7 +17769,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
17766# report actual input values of CONFIG_FILES etc. instead of their17769# report actual input values of CONFIG_FILES etc. instead of their
17767# values after options handling.17770# values after options handling.
17768ac_log="17771ac_log="
17769This file was extended by PostgreSQL $as_me 10.20, which was17772This file was extended by PostgreSQL $as_me 10.21, which was
17770generated by GNU Autoconf 2.69. Invocation command line was17773generated by GNU Autoconf 2.69. Invocation command line was
1777117774
17772 CONFIG_FILES = $CONFIG_FILES17775 CONFIG_FILES = $CONFIG_FILES
@@ -17836,7 +17839,7 @@ _ACEOF
17836cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=117839cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
17837ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"17840ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
17838ac_cs_version="\\17841ac_cs_version="\\
17839PostgreSQL config.status 10.2017842PostgreSQL config.status 10.21
17840configured by $0, generated by GNU Autoconf 2.69,17843configured by $0, generated by GNU Autoconf 2.69,
17841 with options \\"\$ac_cs_config\\"17844 with options \\"\$ac_cs_config\\"
1784217845
diff --git a/configure.in b/configure.in
index f8babe7..0866691 100644
--- a/configure.in
+++ b/configure.in
@@ -17,7 +17,7 @@ dnl Read the Autoconf manual for details.
17dnl17dnl
18m4_pattern_forbid(^PGAC_)dnl to catch undefined macros18m4_pattern_forbid(^PGAC_)dnl to catch undefined macros
1919
20AC_INIT([PostgreSQL], [10.20], [pgsql-bugs@postgresql.org])20AC_INIT([PostgreSQL], [10.21], [pgsql-bugs@postgresql.org])
2121
22m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.69], [], [m4_fatal([Autoconf version 2.69 is required.22m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.69], [], [m4_fatal([Autoconf version 2.69 is required.
23Untested combinations of 'autoconf' and PostgreSQL versions are not23Untested combinations of 'autoconf' and PostgreSQL versions are not
@@ -1091,7 +1091,10 @@ AC_SUBST(PTHREAD_LIBS)
10911091
1092AC_CHECK_LIB(m, main)1092AC_CHECK_LIB(m, main)
1093AC_SEARCH_LIBS(setproctitle, util)1093AC_SEARCH_LIBS(setproctitle, util)
1094AC_SEARCH_LIBS(dlopen, dl)1094# gcc/clang's sanitizer helper library provides dlopen but not dlsym, thus
1095# when enabling asan the dlopen check doesn't notice that -ldl is actually
1096# required. Just checking for dlsym() ought to suffice.
1097AC_SEARCH_LIBS(dlsym, dl)
1095AC_SEARCH_LIBS(socket, [socket ws2_32])1098AC_SEARCH_LIBS(socket, [socket ws2_32])
1096AC_SEARCH_LIBS(shl_load, dld)1099AC_SEARCH_LIBS(shl_load, dld)
1097# We only use libld in port/dynloader/aix.c1100# We only use libld in port/dynloader/aix.c
diff --git a/contrib/amcheck/expected/check_btree.out b/contrib/amcheck/expected/check_btree.out
index 4cd2ddd..95c7f84 100644
--- a/contrib/amcheck/expected/check_btree.out
+++ b/contrib/amcheck/expected/check_btree.out
@@ -85,8 +85,31 @@ WHERE relation = ANY(ARRAY['bttest_a', 'bttest_a_idx', 'bttest_b', 'bttest_b_idx
85(0 rows)85(0 rows)
8686
87COMMIT;87COMMIT;
88--
89-- Check that index expressions and predicates are run as the table's owner
90--
91TRUNCATE bttest_a;
92INSERT INTO bttest_a SELECT * FROM generate_series(1, 1000);
93ALTER TABLE bttest_a OWNER TO regress_bttest_role;
94-- A dummy index function checking current_user
95CREATE FUNCTION ifun(int8) RETURNS int8 AS $$
96BEGIN
97 ASSERT current_user = 'regress_bttest_role',
98 format('ifun(%s) called by %s', $1, current_user);
99 RETURN $1;
100END;
101$$ LANGUAGE plpgsql IMMUTABLE;
102CREATE INDEX bttest_a_expr_idx ON bttest_a ((ifun(id) + ifun(0)))
103 WHERE ifun(id + 10) > ifun(10);
104SELECT bt_index_check('bttest_a_expr_idx');
105 bt_index_check
106----------------
107
108(1 row)
109
88-- cleanup110-- cleanup
89DROP TABLE bttest_a;111DROP TABLE bttest_a;
90DROP TABLE bttest_b;112DROP TABLE bttest_b;
113DROP FUNCTION ifun(int8);
91DROP OWNED BY regress_bttest_role; -- permissions114DROP OWNED BY regress_bttest_role; -- permissions
92DROP ROLE regress_bttest_role;115DROP ROLE regress_bttest_role;
diff --git a/contrib/amcheck/sql/check_btree.sql b/contrib/amcheck/sql/check_btree.sql
index 019e0b7..91b77eb 100644
--- a/contrib/amcheck/sql/check_btree.sql
+++ b/contrib/amcheck/sql/check_btree.sql
@@ -54,8 +54,29 @@ WHERE relation = ANY(ARRAY['bttest_a', 'bttest_a_idx', 'bttest_b', 'bttest_b_idx
54 AND pid = pg_backend_pid();54 AND pid = pg_backend_pid();
55COMMIT;55COMMIT;
5656
57--
58-- Check that index expressions and predicates are run as the table's owner
59--
60TRUNCATE bttest_a;
61INSERT INTO bttest_a SELECT * FROM generate_series(1, 1000);
62ALTER TABLE bttest_a OWNER TO regress_bttest_role;
63-- A dummy index function checking current_user
64CREATE FUNCTION ifun(int8) RETURNS int8 AS $$
65BEGIN
66 ASSERT current_user = 'regress_bttest_role',
67 format('ifun(%s) called by %s', $1, current_user);
68 RETURN $1;
69END;
70$$ LANGUAGE plpgsql IMMUTABLE;
71
72CREATE INDEX bttest_a_expr_idx ON bttest_a ((ifun(id) + ifun(0)))
73 WHERE ifun(id + 10) > ifun(10);
74
75SELECT bt_index_check('bttest_a_expr_idx');
76
57-- cleanup77-- cleanup
58DROP TABLE bttest_a;78DROP TABLE bttest_a;
59DROP TABLE bttest_b;79DROP TABLE bttest_b;
80DROP FUNCTION ifun(int8);
60DROP OWNED BY regress_bttest_role; -- permissions81DROP OWNED BY regress_bttest_role; -- permissions
61DROP ROLE regress_bttest_role;82DROP ROLE regress_bttest_role;
diff --git a/contrib/amcheck/verify_nbtree.c b/contrib/amcheck/verify_nbtree.c
index 6c496c5..29b4170 100644
--- a/contrib/amcheck/verify_nbtree.c
+++ b/contrib/amcheck/verify_nbtree.c
@@ -26,6 +26,7 @@
26#include "miscadmin.h"26#include "miscadmin.h"
27#include "storage/lmgr.h"27#include "storage/lmgr.h"
28#include "storage/smgr.h"28#include "storage/smgr.h"
29#include "utils/guc.h"
29#include "utils/memutils.h"30#include "utils/memutils.h"
30#include "utils/snapmgr.h"31#include "utils/snapmgr.h"
3132
@@ -163,6 +164,9 @@ bt_index_check_internal(Oid indrelid, bool parentcheck)
163 Relation indrel;164 Relation indrel;
164 Relation heaprel;165 Relation heaprel;
165 LOCKMODE lockmode;166 LOCKMODE lockmode;
167 Oid save_userid;
168 int save_sec_context;
169 int save_nestlevel;
166170
167 if (parentcheck)171 if (parentcheck)
168 lockmode = ShareLock;172 lockmode = ShareLock;
@@ -179,9 +183,27 @@ bt_index_check_internal(Oid indrelid, bool parentcheck)
179 */183 */
180 heapid = IndexGetRelation(indrelid, true);184 heapid = IndexGetRelation(indrelid, true);
181 if (OidIsValid(heapid))185 if (OidIsValid(heapid))
186 {
182 heaprel = heap_open(heapid, lockmode);187 heaprel = heap_open(heapid, lockmode);
188
189 /*
190 * Switch to the table owner's userid, so that any index functions are
191 * run as that user. Also lock down security-restricted operations
192 * and arrange to make GUC variable changes local to this command.
193 */
194 GetUserIdAndSecContext(&save_userid, &save_sec_context);
195 SetUserIdAndSecContext(heaprel->rd_rel->relowner,
196 save_sec_context | SECURITY_RESTRICTED_OPERATION);
197 save_nestlevel = NewGUCNestLevel();
198 }
183 else199 else
200 {
184 heaprel = NULL;201 heaprel = NULL;
202 /* for "gcc -Og" https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78394 */
203 save_userid = InvalidOid;
204 save_sec_context = -1;
205 save_nestlevel = -1;
206 }
185207
186 /*208 /*
187 * Open the target index relations separately (like relation_openrv(), but209 * Open the target index relations separately (like relation_openrv(), but
@@ -219,6 +241,12 @@ bt_index_check_internal(Oid indrelid, bool parentcheck)
219 bt_check_every_level(indrel, parentcheck);241 bt_check_every_level(indrel, parentcheck);
220 }242 }
221243
244 /* Roll back any GUC changes executed by index functions */
245 AtEOXact_GUC(false, save_nestlevel);
246
247 /* Restore userid and security context */
248 SetUserIdAndSecContext(save_userid, save_sec_context);
249
222 /*250 /*
223 * Release locks early. That's ok here because nothing in the called251 * Release locks early. That's ok here because nothing in the called
224 * routines will trigger shared cache invalidations to be sent, so we can252 * routines will trigger shared cache invalidations to be sent, so we can
diff --git a/contrib/bloom/t/001_wal.pl b/contrib/bloom/t/001_wal.pl
index 1b319c9..2953d08 100644
--- a/contrib/bloom/t/001_wal.pl
+++ b/contrib/bloom/t/001_wal.pl
@@ -3,7 +3,18 @@ use strict;
3use warnings;3use warnings;
4use PostgresNode;4use PostgresNode;
5use TestLib;5use TestLib;
6use Test::More tests => 31;6use Test::More;
7
8if (TestLib::has_wal_read_bug)
9{
10 # We'd prefer to use Test::More->builder->todo_start, but the bug causes
11 # this test file to die(), not merely to fail.
12 plan skip_all => 'filesystem bug';
13}
14else
15{
16 plan tests => 31;
17}
718
8my $node_master;19my $node_master;
9my $node_standby;20my $node_standby;
diff --git a/contrib/cube/cubeparse.c b/contrib/cube/cubeparse.c
index ac9a1f9..f766310 100644
--- a/contrib/cube/cubeparse.c
+++ b/contrib/cube/cubeparse.c
@@ -1,8 +1,8 @@
1/* A Bison parser, made by GNU Bison 3.3.2. */1/* A Bison parser, made by GNU Bison 3.7.5. */
22
3/* Bison implementation for Yacc-like parsers in C3/* Bison implementation for Yacc-like parsers in C
44
5 Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,5 Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
6 Inc.6 Inc.
77
8 This program is free software: you can redistribute it and/or modify8 This program is free software: you can redistribute it and/or modify
@@ -34,6 +34,10 @@
34/* C LALR(1) parser skeleton written by Richard Stallman, by34/* C LALR(1) parser skeleton written by Richard Stallman, by
35 simplifying the original so-called "semantic" parser. */35 simplifying the original so-called "semantic" parser. */
3636
37/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38 especially those whose name start with YY_ or yy_. They are
39 private implementation details that can be changed or removed. */
40
37/* All symbols defined below should begin with yy or YY, to avoid41/* All symbols defined below should begin with yy or YY, to avoid
38 infringing on user name space. This should be done even for local42 infringing on user name space. This should be done even for local
39 variables, as they might otherwise be expanded by user macros.43 variables, as they might otherwise be expanded by user macros.
@@ -41,14 +45,11 @@
41 define necessary library symbols; they are noted "INFRINGES ON45 define necessary library symbols; they are noted "INFRINGES ON
42 USER NAME SPACE" below. */46 USER NAME SPACE" below. */
4347
44/* Undocumented macros, especially those whose name start with YY_,48/* Identify Bison output, and Bison version. */
45 are private implementation details. Do not rely on them. */49#define YYBISON 30705
46
47/* Identify Bison output. */
48#define YYBISON 1
4950
50/* Bison version. */51/* Bison version string. */
51#define YYBISON_VERSION "3.3.2"52#define YYBISON_VERSION "3.7.5"
5253
53/* Skeleton name. */54/* Skeleton name. */
54#define YYSKELETON_NAME "yacc.c"55#define YYSKELETON_NAME "yacc.c"
@@ -69,12 +70,11 @@
69#define yyerror cube_yyerror70#define yyerror cube_yyerror
70#define yydebug cube_yydebug71#define yydebug cube_yydebug
71#define yynerrs cube_yynerrs72#define yynerrs cube_yynerrs
72
73#define yylval cube_yylval73#define yylval cube_yylval
74#define yychar cube_yychar74#define yychar cube_yychar
7575
76/* First part of user prologue. */76/* First part of user prologue. */
77#line 1 "cubeparse.y" /* yacc.c:337 */77#line 1 "cubeparse.y"
7878
79/* contrib/cube/cubeparse.y */79/* contrib/cube/cubeparse.y */
8080
@@ -108,7 +108,17 @@ static NDBOX *write_box(int dim, char *str1, char *str2);
108static NDBOX *write_point_as_box(int dim, char *str);108static NDBOX *write_point_as_box(int dim, char *str);
109109
110110
111#line 112 "cubeparse.c" /* yacc.c:337 */111#line 112 "cubeparse.c"
112
113# ifndef YY_CAST
114# ifdef __cplusplus
115# define YY_CAST(Type, Val) static_cast<Type> (Val)
116# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
117# else
118# define YY_CAST(Type, Val) ((Type) (Val))
119# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
120# endif
121# endif
112# ifndef YY_NULLPTR122# ifndef YY_NULLPTR
113# if defined __cplusplus123# if defined __cplusplus
114# if 201103L <= __cplusplus124# if 201103L <= __cplusplus
@@ -121,14 +131,6 @@ static NDBOX *write_point_as_box(int dim, char *str);
121# endif131# endif
122# endif132# endif
123133
124/* Enabling verbose error messages. */
125#ifdef YYERROR_VERBOSE
126# undef YYERROR_VERBOSE
127# define YYERROR_VERBOSE 1
128#else
129# define YYERROR_VERBOSE 0
130#endif
131
132134
133/* Debug traces. */135/* Debug traces. */
134#ifndef YYDEBUG136#ifndef YYDEBUG
@@ -138,18 +140,23 @@ static NDBOX *write_point_as_box(int dim, char *str);
138extern int cube_yydebug;140extern int cube_yydebug;
139#endif141#endif
140142
141/* Token type. */143/* Token kinds. */
142#ifndef YYTOKENTYPE144#ifndef YYTOKENTYPE
143# define YYTOKENTYPE145# define YYTOKENTYPE
144 enum yytokentype146 enum yytokentype
145 {147 {
146 CUBEFLOAT = 258,148 YYEMPTY = -2,
147 O_PAREN = 259,149 YYEOF = 0, /* "end of file" */
148 C_PAREN = 260,150 YYerror = 256, /* error */
149 O_BRACKET = 261,151 YYUNDEF = 257, /* "invalid token" */
150 C_BRACKET = 262,152 CUBEFLOAT = 258, /* CUBEFLOAT */
151 COMMA = 263153 O_PAREN = 259, /* O_PAREN */
154 C_PAREN = 260, /* C_PAREN */
155 O_BRACKET = 261, /* O_BRACKET */
156 C_BRACKET = 262, /* C_BRACKET */
157 COMMA = 263 /* COMMA */
152 };158 };
159 typedef enum yytokentype yytoken_kind_t;
153#endif160#endif
154161
155/* Value type. */162/* Value type. */
@@ -165,6 +172,26 @@ extern YYSTYPE cube_yylval;
165int cube_yyparse (NDBOX **result);172int cube_yyparse (NDBOX **result);
166173
167174
175/* Symbol kind. */
176enum yysymbol_kind_t
177{
178 YYSYMBOL_YYEMPTY = -2,
179 YYSYMBOL_YYEOF = 0, /* "end of file" */
180 YYSYMBOL_YYerror = 1, /* error */
181 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
182 YYSYMBOL_CUBEFLOAT = 3, /* CUBEFLOAT */
183 YYSYMBOL_O_PAREN = 4, /* O_PAREN */
184 YYSYMBOL_C_PAREN = 5, /* C_PAREN */
185 YYSYMBOL_O_BRACKET = 6, /* O_BRACKET */
186 YYSYMBOL_C_BRACKET = 7, /* C_BRACKET */
187 YYSYMBOL_COMMA = 8, /* COMMA */
188 YYSYMBOL_YYACCEPT = 9, /* $accept */
189 YYSYMBOL_box = 10, /* box */
190 YYSYMBOL_paren_list = 11, /* paren_list */
191 YYSYMBOL_list = 12 /* list */
192};
193typedef enum yysymbol_kind_t yysymbol_kind_t;
194
168195
169196
170197
@@ -172,28 +199,87 @@ int cube_yyparse (NDBOX **result);
172# undef short199# undef short
173#endif200#endif
174201
175#ifdef YYTYPE_UINT8202/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
176typedef YYTYPE_UINT8 yytype_uint8;203 <limits.h> and (if available) <stdint.h> are included
177#else204 so that the code can choose integer types of a good width. */
178typedef unsigned char yytype_uint8;205
206#ifndef __PTRDIFF_MAX__
207# include <limits.h> /* INFRINGES ON USER NAME SPACE */
208# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
209# include <stdint.h> /* INFRINGES ON USER NAME SPACE */
210# define YY_STDINT_H
211# endif
179#endif212#endif
180213
181#ifdef YYTYPE_INT8214/* Narrow types that promote to a signed type and that can represent a
182typedef YYTYPE_INT8 yytype_int8;215 signed or unsigned integer of at least N bits. In tables they can
216 save space and decrease cache pressure. Promoting to a signed type
217 helps avoid bugs in integer arithmetic. */
218
219#ifdef __INT_LEAST8_MAX__
220typedef __INT_LEAST8_TYPE__ yytype_int8;
221#elif defined YY_STDINT_H
222typedef int_least8_t yytype_int8;
183#else223#else
184typedef signed char yytype_int8;224typedef signed char yytype_int8;
185#endif225#endif
186226
187#ifdef YYTYPE_UINT16227#ifdef __INT_LEAST16_MAX__
188typedef YYTYPE_UINT16 yytype_uint16;228typedef __INT_LEAST16_TYPE__ yytype_int16;
229#elif defined YY_STDINT_H
230typedef int_least16_t yytype_int16;
189#else231#else
190typedef unsigned short yytype_uint16;232typedef short yytype_int16;
191#endif233#endif
192234
193#ifdef YYTYPE_INT16235/* Work around bug in HP-UX 11.23, which defines these macros
194typedef YYTYPE_INT16 yytype_int16;236 incorrectly for preprocessor constants. This workaround can likely
237 be removed in 2023, as HPE has promised support for HP-UX 11.23
238 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
239 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
240#ifdef __hpux
241# undef UINT_LEAST8_MAX
242# undef UINT_LEAST16_MAX
243# define UINT_LEAST8_MAX 255
244# define UINT_LEAST16_MAX 65535
245#endif
246
247#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
248typedef __UINT_LEAST8_TYPE__ yytype_uint8;
249#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
250 && UINT_LEAST8_MAX <= INT_MAX)
251typedef uint_least8_t yytype_uint8;
252#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
253typedef unsigned char yytype_uint8;
195#else254#else
196typedef short yytype_int16;255typedef short yytype_uint8;
256#endif
257
258#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
259typedef __UINT_LEAST16_TYPE__ yytype_uint16;
260#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
261 && UINT_LEAST16_MAX <= INT_MAX)
262typedef uint_least16_t yytype_uint16;
263#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
264typedef unsigned short yytype_uint16;
265#else
266typedef int yytype_uint16;
267#endif
268
269#ifndef YYPTRDIFF_T
270# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
271# define YYPTRDIFF_T __PTRDIFF_TYPE__
272# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
273# elif defined PTRDIFF_MAX
274# ifndef ptrdiff_t
275# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
276# endif
277# define YYPTRDIFF_T ptrdiff_t
278# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
279# else
280# define YYPTRDIFF_T long
281# define YYPTRDIFF_MAXIMUM LONG_MAX
282# endif
197#endif283#endif
198284
199#ifndef YYSIZE_T285#ifndef YYSIZE_T
@@ -201,7 +287,7 @@ typedef short yytype_int16;
201# define YYSIZE_T __SIZE_TYPE__287# define YYSIZE_T __SIZE_TYPE__
202# elif defined size_t288# elif defined size_t
203# define YYSIZE_T size_t289# define YYSIZE_T size_t
204# elif ! defined YYSIZE_T290# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
205# include <stddef.h> /* INFRINGES ON USER NAME SPACE */291# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
206# define YYSIZE_T size_t292# define YYSIZE_T size_t
207# else293# else
@@ -209,7 +295,20 @@ typedef short yytype_int16;
209# endif295# endif
210#endif296#endif
211297
212#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)298#define YYSIZE_MAXIMUM \
299 YY_CAST (YYPTRDIFF_T, \
300 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
301 ? YYPTRDIFF_MAXIMUM \
302 : YY_CAST (YYSIZE_T, -1)))
303
304#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
305
306
307/* Stored state numbers (used for stacks). */
308typedef yytype_int8 yy_state_t;
309
310/* State numbers in computations. */
311typedef int yy_state_fast_t;
213312
214#ifndef YY_313#ifndef YY_
215# if defined YYENABLE_NLS && YYENABLE_NLS314# if defined YYENABLE_NLS && YYENABLE_NLS
@@ -223,38 +322,37 @@ typedef short yytype_int16;
223# endif322# endif
224#endif323#endif
225324
226#ifndef YY_ATTRIBUTE
227# if (defined __GNUC__ \
228 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
229 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
230# define YY_ATTRIBUTE(Spec) __attribute__(Spec)
231# else
232# define YY_ATTRIBUTE(Spec) /* empty */
233# endif
234#endif
235325
236#ifndef YY_ATTRIBUTE_PURE326#ifndef YY_ATTRIBUTE_PURE
237# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))327# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
328# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
329# else
330# define YY_ATTRIBUTE_PURE
331# endif
238#endif332#endif
239333
240#ifndef YY_ATTRIBUTE_UNUSED334#ifndef YY_ATTRIBUTE_UNUSED
241# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))335# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
336# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
337# else
338# define YY_ATTRIBUTE_UNUSED
339# endif
242#endif340#endif
243341
244/* Suppress unused-variable warnings by "using" E. */342/* Suppress unused-variable warnings by "using" E. */
245#if ! defined lint || defined __GNUC__343#if ! defined lint || defined __GNUC__
246# define YYUSE(E) ((void) (E))344# define YY_USE(E) ((void) (E))
247#else345#else
248# define YYUSE(E) /* empty */346# define YY_USE(E) /* empty */
249#endif347#endif
250348
251#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__349#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
252/* Suppress an incorrect diagnostic about yylval being uninitialized. */350/* Suppress an incorrect diagnostic about yylval being uninitialized. */
253# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \351# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
254 _Pragma ("GCC diagnostic push") \352 _Pragma ("GCC diagnostic push") \
255 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\353 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
256 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")354 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
257# define YY_IGNORE_MAYBE_UNINITIALIZED_END \355# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
258 _Pragma ("GCC diagnostic pop")356 _Pragma ("GCC diagnostic pop")
259#else357#else
260# define YY_INITIAL_VALUE(Value) Value358# define YY_INITIAL_VALUE(Value) Value
@@ -267,8 +365,22 @@ typedef short yytype_int16;
267# define YY_INITIAL_VALUE(Value) /* Nothing. */365# define YY_INITIAL_VALUE(Value) /* Nothing. */
268#endif366#endif
269367
368#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
369# define YY_IGNORE_USELESS_CAST_BEGIN \
370 _Pragma ("GCC diagnostic push") \
371 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
372# define YY_IGNORE_USELESS_CAST_END \
373 _Pragma ("GCC diagnostic pop")
374#endif
375#ifndef YY_IGNORE_USELESS_CAST_BEGIN
376# define YY_IGNORE_USELESS_CAST_BEGIN
377# define YY_IGNORE_USELESS_CAST_END
378#endif
270379
271#if ! defined yyoverflow || YYERROR_VERBOSE380
381#define YY_ASSERT(E) ((void) (0 && (E)))
382
383#if !defined yyoverflow
272384
273/* The parser invokes alloca or malloc; define the necessary symbols. */385/* The parser invokes alloca or malloc; define the necessary symbols. */
274386
@@ -333,8 +445,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
333# endif445# endif
334# endif446# endif
335# endif447# endif
336#endif /* ! defined yyoverflow || YYERROR_VERBOSE */448#endif /* !defined yyoverflow */
337
338449
339#if (! defined yyoverflow \450#if (! defined yyoverflow \
340 && (! defined __cplusplus \451 && (! defined __cplusplus \
@@ -343,17 +454,17 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
343/* A type that is properly aligned for any stack member. */454/* A type that is properly aligned for any stack member. */
344union yyalloc455union yyalloc
345{456{
346 yytype_int16 yyss_alloc;457 yy_state_t yyss_alloc;
347 YYSTYPE yyvs_alloc;458 YYSTYPE yyvs_alloc;
348};459};
349460
350/* The size of the maximum gap between one aligned stack and the next. */461/* The size of the maximum gap between one aligned stack and the next. */
351# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)462# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
352463
353/* The size of an array large to enough to hold all stacks, each with464/* The size of an array large to enough to hold all stacks, each with
354 N elements. */465 N elements. */
355# define YYSTACK_BYTES(N) \466# define YYSTACK_BYTES(N) \
356 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \467 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
357 + YYSTACK_GAP_MAXIMUM)468 + YYSTACK_GAP_MAXIMUM)
358469
359# define YYCOPY_NEEDED 1470# define YYCOPY_NEEDED 1
@@ -366,11 +477,11 @@ union yyalloc
366# define YYSTACK_RELOCATE(Stack_alloc, Stack) \477# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
367 do \478 do \
368 { \479 { \
369 YYSIZE_T yynewbytes; \480 YYPTRDIFF_T yynewbytes; \
370 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \481 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
371 Stack = &yyptr->Stack_alloc; \482 Stack = &yyptr->Stack_alloc; \
372 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \483 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
373 yyptr += yynewbytes / sizeof (*yyptr); \484 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
374 } \485 } \
375 while (0)486 while (0)
376487
@@ -382,12 +493,12 @@ union yyalloc
382# ifndef YYCOPY493# ifndef YYCOPY
383# if defined __GNUC__ && 1 < __GNUC__494# if defined __GNUC__ && 1 < __GNUC__
384# define YYCOPY(Dst, Src, Count) \495# define YYCOPY(Dst, Src, Count) \
385 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))496 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
386# else497# else
387# define YYCOPY(Dst, Src, Count) \498# define YYCOPY(Dst, Src, Count) \
388 do \499 do \
389 { \500 { \
390 YYSIZE_T yyi; \501 YYPTRDIFF_T yyi; \
391 for (yyi = 0; yyi < (Count); yyi++) \502 for (yyi = 0; yyi < (Count); yyi++) \
392 (Dst)[yyi] = (Src)[yyi]; \503 (Dst)[yyi] = (Src)[yyi]; \
393 } \504 } \
@@ -410,17 +521,20 @@ union yyalloc
410/* YYNSTATES -- Number of states. */521/* YYNSTATES -- Number of states. */
411#define YYNSTATES 19522#define YYNSTATES 19
412523
413#define YYUNDEFTOK 2524/* YYMAXUTOK -- Last valid token kind. */
414#define YYMAXUTOK 263525#define YYMAXUTOK 263
415526
527
416/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM528/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
417 as returned by yylex, with out-of-bounds checking. */529 as returned by yylex, with out-of-bounds checking. */
418#define YYTRANSLATE(YYX) \530#define YYTRANSLATE(YYX) \
419 ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)531 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
532 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
533 : YYSYMBOL_YYUNDEF)
420534
421/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM535/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
422 as returned by yylex. */536 as returned by yylex. */
423static const yytype_uint8 yytranslate[] =537static const yytype_int8 yytranslate[] =
424{538{
425 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,539 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
426 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,540 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -459,34 +573,47 @@ static const yytype_uint8 yyrline[] =
459};573};
460#endif574#endif
461575
462#if YYDEBUG || YYERROR_VERBOSE || 0576/** Accessing symbol of state STATE. */
577#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
578
579#if YYDEBUG || 0
580/* The user-facing name of the symbol whose (internal) number is
581 YYSYMBOL. No bounds checking. */
582static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
583
463/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.584/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
464 First, the terminals, then, starting at YYNTOKENS, nonterminals. */585 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
465static const char *const yytname[] =586static const char *const yytname[] =
466{587{
467 "$end", "error", "$undefined", "CUBEFLOAT", "O_PAREN", "C_PAREN",588 "\"end of file\"", "error", "\"invalid token\"", "CUBEFLOAT", "O_PAREN",
468 "O_BRACKET", "C_BRACKET", "COMMA", "$accept", "box", "paren_list",589 "C_PAREN", "O_BRACKET", "C_BRACKET", "COMMA", "$accept", "box",
469 "list", YY_NULLPTR590 "paren_list", "list", YY_NULLPTR
470};591};
592
593static const char *
594yysymbol_name (yysymbol_kind_t yysymbol)
595{
596 return yytname[yysymbol];
597}
471#endif598#endif
472599
473# ifdef YYPRINT600#ifdef YYPRINT
474/* YYTOKNUM[NUM] -- (External) token number corresponding to the601/* YYTOKNUM[NUM] -- (External) token number corresponding to the
475 (internal) symbol number NUM (which must be that of a token). */602 (internal) symbol number NUM (which must be that of a token). */
476static const yytype_uint16 yytoknum[] =603static const yytype_int16 yytoknum[] =
477{604{
478 0, 256, 257, 258, 259, 260, 261, 262, 263605 0, 256, 257, 258, 259, 260, 261, 262, 263
479};606};
480# endif607#endif
481608
482#define YYPACT_NINF -4609#define YYPACT_NINF (-4)
483610
484#define yypact_value_is_default(Yystate) \611#define yypact_value_is_default(Yyn) \
485 (!!((Yystate) == (-4)))612 ((Yyn) == YYPACT_NINF)
486613
487#define YYTABLE_NINF -1614#define YYTABLE_NINF (-1)
488615
489#define yytable_value_is_error(Yytable_value) \616#define yytable_value_is_error(Yyn) \
490 0617 0
491618
492 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing619 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -500,7 +627,7 @@ static const yytype_int8 yypact[] =
500 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.627 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
501 Performed when YYTABLE does not specify something else to do. Zero628 Performed when YYTABLE does not specify something else to do. Zero
502 means the default is an error. */629 means the default is an error. */
503static const yytype_uint8 yydefact[] =630static const yytype_int8 yydefact[] =
504{631{
505 0, 8, 0, 0, 0, 4, 5, 7, 0, 0,632 0, 8, 0, 0, 0, 4, 5, 7, 0, 0,
506 1, 0, 0, 6, 0, 3, 9, 0, 2633 1, 0, 0, 6, 0, 3, 9, 0, 2
@@ -515,19 +642,19 @@ static const yytype_int8 yypgoto[] =
515 /* YYDEFGOTO[NTERM-NUM]. */642 /* YYDEFGOTO[NTERM-NUM]. */
516static const yytype_int8 yydefgoto[] =643static const yytype_int8 yydefgoto[] =
517{644{
518 -1, 4, 5, 6645 0, 4, 5, 6
519};646};
520647
521 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If648 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
522 positive, shift that token. If negative, reduce the rule whose649 positive, shift that token. If negative, reduce the rule whose
523 number is the opposite. If YYTABLE_NINF, syntax error. */650 number is the opposite. If YYTABLE_NINF, syntax error. */
524static const yytype_uint8 yytable[] =651static const yytype_int8 yytable[] =
525{652{
526 9, 1, 2, 1, 3, 7, 13, 2, 15, 12,653 9, 1, 2, 1, 3, 7, 13, 2, 15, 12,
527 10, 17, 11, 12, 14, 16, 18, 8654 10, 17, 11, 12, 14, 16, 18, 8
528};655};
529656
530static const yytype_uint8 yycheck[] =657static const yytype_int8 yycheck[] =
531{658{
532 3, 3, 4, 3, 6, 5, 5, 4, 11, 8,659 3, 3, 4, 3, 6, 5, 5, 4, 11, 8,
533 0, 14, 8, 8, 8, 3, 7, 2660 0, 14, 8, 8, 8, 3, 7, 2
@@ -535,29 +662,29 @@ static const yytype_uint8 yycheck[] =
535662
536 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing663 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
537 symbol of state STATE-NUM. */664 symbol of state STATE-NUM. */
538static const yytype_uint8 yystos[] =665static const yytype_int8 yystos[] =
539{666{
540 0, 3, 4, 6, 10, 11, 12, 5, 12, 11,667 0, 3, 4, 6, 10, 11, 12, 5, 12, 11,
541 0, 8, 8, 5, 8, 11, 3, 11, 7668 0, 8, 8, 5, 8, 11, 3, 11, 7
542};669};
543670
544 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */671 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
545static const yytype_uint8 yyr1[] =672static const yytype_int8 yyr1[] =
546{673{
547 0, 9, 10, 10, 10, 10, 11, 11, 12, 12674 0, 9, 10, 10, 10, 10, 11, 11, 12, 12
548};675};
549676
550 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */677 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
551static const yytype_uint8 yyr2[] =678static const yytype_int8 yyr2[] =
552{679{
553 0, 2, 5, 3, 1, 1, 3, 2, 1, 3680 0, 2, 5, 3, 1, 1, 3, 2, 1, 3
554};681};
555682
556683
684enum { YYENOMEM = -2 };
685
557#define yyerrok (yyerrstatus = 0)686#define yyerrok (yyerrstatus = 0)
558#define yyclearin (yychar = YYEMPTY)687#define yyclearin (yychar = YYEMPTY)
559#define YYEMPTY (-2)
560#define YYEOF 0
561688
562#define YYACCEPT goto yyacceptlab689#define YYACCEPT goto yyacceptlab
563#define YYABORT goto yyabortlab690#define YYABORT goto yyabortlab
@@ -583,10 +710,9 @@ static const yytype_uint8 yyr2[] =
583 } \710 } \
584 while (0)711 while (0)
585712
586/* Error token number */713/* Backward compatibility with an undocumented macro.
587#define YYTERROR 1714 Use YYerror or YYUNDEF. */
588#define YYERRCODE 256715#define YYERRCODE YYUNDEF
589
590716
591717
592/* Enable debugging if requested. */718/* Enable debugging if requested. */
@@ -604,18 +730,18 @@ do { \
604} while (0)730} while (0)
605731
606/* This macro is provided for backward compatibility. */732/* This macro is provided for backward compatibility. */
607#ifndef YY_LOCATION_PRINT733# ifndef YY_LOCATION_PRINT
608# define YY_LOCATION_PRINT(File, Loc) ((void) 0)734# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
609#endif735# endif
610736
611737
612# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \738# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
613do { \739do { \
614 if (yydebug) \740 if (yydebug) \
615 { \741 { \
616 YYFPRINTF (stderr, "%s ", Title); \742 YYFPRINTF (stderr, "%s ", Title); \
617 yy_symbol_print (stderr, \743 yy_symbol_print (stderr, \
618 Type, Value, result); \744 Kind, Value, result); \
619 YYFPRINTF (stderr, "\n"); \745 YYFPRINTF (stderr, "\n"); \
620 } \746 } \
621} while (0)747} while (0)
@@ -626,18 +752,21 @@ do { \
626`-----------------------------------*/752`-----------------------------------*/
627753
628static void754static void
629yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, NDBOX **result)755yy_symbol_value_print (FILE *yyo,
756 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, NDBOX **result)
630{757{
631 FILE *yyoutput = yyo;758 FILE *yyoutput = yyo;
632 YYUSE (yyoutput);759 YY_USE (yyoutput);
633 YYUSE (result);760 YY_USE (result);
634 if (!yyvaluep)761 if (!yyvaluep)
635 return;762 return;
636# ifdef YYPRINT763# ifdef YYPRINT
637 if (yytype < YYNTOKENS)764 if (yykind < YYNTOKENS)
638 YYPRINT (yyo, yytoknum[yytype], *yyvaluep);765 YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
639# endif766# endif
640 YYUSE (yytype);767 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
768 YY_USE (yykind);
769 YY_IGNORE_MAYBE_UNINITIALIZED_END
641}770}
642771
643772
@@ -646,12 +775,13 @@ yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, ND
646`---------------------------*/775`---------------------------*/
647776
648static void777static void
649yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, NDBOX **result)778yy_symbol_print (FILE *yyo,
779 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, NDBOX **result)
650{780{
651 YYFPRINTF (yyo, "%s %s (",781 YYFPRINTF (yyo, "%s %s (",
652 yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);782 yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
653783
654 yy_symbol_value_print (yyo, yytype, yyvaluep, result);784 yy_symbol_value_print (yyo, yykind, yyvaluep, result);
655 YYFPRINTF (yyo, ")");785 YYFPRINTF (yyo, ")");
656}786}
657787
@@ -661,7 +791,7 @@ yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, NDBOX **
661`------------------------------------------------------------------*/791`------------------------------------------------------------------*/
662792
663static void793static void
664yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)794yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
665{795{
666 YYFPRINTF (stderr, "Stack now");796 YYFPRINTF (stderr, "Stack now");
667 for (; yybottom <= yytop; yybottom++)797 for (; yybottom <= yytop; yybottom++)
@@ -684,21 +814,21 @@ do { \
684`------------------------------------------------*/814`------------------------------------------------*/
685815
686static void816static void
687yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, NDBOX **result)817yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
818 int yyrule, NDBOX **result)
688{819{
689 unsigned long yylno = yyrline[yyrule];820 int yylno = yyrline[yyrule];
690 int yynrhs = yyr2[yyrule];821 int yynrhs = yyr2[yyrule];
691 int yyi;822 int yyi;
692 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",823 YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
693 yyrule - 1, yylno);824 yyrule - 1, yylno);
694 /* The symbols being reduced. */825 /* The symbols being reduced. */
695 for (yyi = 0; yyi < yynrhs; yyi++)826 for (yyi = 0; yyi < yynrhs; yyi++)
696 {827 {
697 YYFPRINTF (stderr, " $%d = ", yyi + 1);828 YYFPRINTF (stderr, " $%d = ", yyi + 1);
698 yy_symbol_print (stderr,829 yy_symbol_print (stderr,
699 yystos[yyssp[yyi + 1 - yynrhs]],830 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
700 &yyvsp[(yyi + 1) - (yynrhs)]831 &yyvsp[(yyi + 1) - (yynrhs)], result);
701 , result);
702 YYFPRINTF (stderr, "\n");832 YYFPRINTF (stderr, "\n");
703 }833 }
704}834}
@@ -713,8 +843,8 @@ do { \
713 multiple parsers can coexist. */843 multiple parsers can coexist. */
714int yydebug;844int yydebug;
715#else /* !YYDEBUG */845#else /* !YYDEBUG */
716# define YYDPRINTF(Args)846# define YYDPRINTF(Args) ((void) 0)
717# define YY_SYMBOL_PRINT(Title, Type, Value, Location)847# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
718# define YY_STACK_PRINT(Bottom, Top)848# define YY_STACK_PRINT(Bottom, Top)
719# define YY_REDUCE_PRINT(Rule)849# define YY_REDUCE_PRINT(Rule)
720#endif /* !YYDEBUG */850#endif /* !YYDEBUG */
@@ -737,255 +867,31 @@ int yydebug;
737#endif867#endif
738868
739869
740#if YYERROR_VERBOSE
741
742# ifndef yystrlen
743# if defined __GLIBC__ && defined _STRING_H
744# define yystrlen strlen
745# else
746/* Return the length of YYSTR. */
747static YYSIZE_T
748yystrlen (const char *yystr)
749{
750 YYSIZE_T yylen;
751 for (yylen = 0; yystr[yylen]; yylen++)
752 continue;
753 return yylen;
754}
755# endif
756# endif
757
758# ifndef yystpcpy
759# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
760# define yystpcpy stpcpy
761# else
762/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
763 YYDEST. */
764static char *
765yystpcpy (char *yydest, const char *yysrc)
766{
767 char *yyd = yydest;
768 const char *yys = yysrc;
769
770 while ((*yyd++ = *yys++) != '\0')
771 continue;
772870
773 return yyd - 1;
774}
775# endif
776# endif
777871
778# ifndef yytnamerr
779/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
780 quotes and backslashes, so that it's suitable for yyerror. The
781 heuristic is that double-quoting is unnecessary unless the string
782 contains an apostrophe, a comma, or backslash (other than
783 backslash-backslash). YYSTR is taken from yytname. If YYRES is
784 null, do not copy; instead, return the length of what the result
785 would have been. */
786static YYSIZE_T
787yytnamerr (char *yyres, const char *yystr)
788{
789 if (*yystr == '"')
790 {
791 YYSIZE_T yyn = 0;
792 char const *yyp = yystr;
793
794 for (;;)
795 switch (*++yyp)
796 {
797 case '\'':
798 case ',':
799 goto do_not_strip_quotes;
800
801 case '\\':
802 if (*++yyp != '\\')
803 goto do_not_strip_quotes;
804 else
805 goto append;
806
807 append:
808 default:
809 if (yyres)
810 yyres[yyn] = *yyp;
811 yyn++;
812 break;
813
814 case '"':
815 if (yyres)
816 yyres[yyn] = '\0';
817 return yyn;
818 }
819 do_not_strip_quotes: ;
820 }
821872
822 if (! yyres)
823 return yystrlen (yystr);
824
825 return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres);
826}
827# endif
828
829/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
830 about the unexpected token YYTOKEN for the state stack whose top is
831 YYSSP.
832
833 Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
834 not large enough to hold the message. In that case, also set
835 *YYMSG_ALLOC to the required number of bytes. Return 2 if the
836 required number of bytes is too large to store. */
837static int
838yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
839 yytype_int16 *yyssp, int yytoken)
840{
841 YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
842 YYSIZE_T yysize = yysize0;
843 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
844 /* Internationalized format string. */
845 const char *yyformat = YY_NULLPTR;
846 /* Arguments of yyformat. */
847 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
848 /* Number of reported tokens (one for the "unexpected", one per
849 "expected"). */
850 int yycount = 0;
851
852 /* There are many possibilities here to consider:
853 - If this state is a consistent state with a default action, then
854 the only way this function was invoked is if the default action
855 is an error action. In that case, don't check for expected
856 tokens because there are none.
857 - The only way there can be no lookahead present (in yychar) is if
858 this state is a consistent state with a default action. Thus,
859 detecting the absence of a lookahead is sufficient to determine
860 that there is no unexpected or expected token to report. In that
861 case, just report a simple "syntax error".
862 - Don't assume there isn't a lookahead just because this state is a
863 consistent state with a default action. There might have been a
864 previous inconsistent state, consistent state with a non-default
865 action, or user semantic action that manipulated yychar.
866 - Of course, the expected token list depends on states to have
867 correct lookahead information, and it depends on the parser not
868 to perform extra reductions after fetching a lookahead from the
869 scanner and before detecting a syntax error. Thus, state merging
870 (from LALR or IELR) and default reductions corrupt the expected
871 token list. However, the list is correct for canonical LR with
872 one exception: it will still contain any token that will not be
873 accepted due to an error action in a later state.
874 */
875 if (yytoken != YYEMPTY)
876 {
877 int yyn = yypact[*yyssp];
878 yyarg[yycount++] = yytname[yytoken];
879 if (!yypact_value_is_default (yyn))
880 {
881 /* Start YYX at -YYN if negative to avoid negative indexes in
882 YYCHECK. In other words, skip the first -YYN actions for
883 this state because they are default actions. */
884 int yyxbegin = yyn < 0 ? -yyn : 0;
885 /* Stay within bounds of both yycheck and yytname. */
886 int yychecklim = YYLAST - yyn + 1;
887 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
888 int yyx;
889
890 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
891 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
892 && !yytable_value_is_error (yytable[yyx + yyn]))
893 {
894 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
895 {
896 yycount = 1;
897 yysize = yysize0;
898 break;
899 }
900 yyarg[yycount++] = yytname[yyx];
901 {
902 YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
903 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
904 yysize = yysize1;
905 else
906 return 2;
907 }
908 }
909 }
910 }
911
912 switch (yycount)
913 {
914# define YYCASE_(N, S) \
915 case N: \
916 yyformat = S; \
917 break
918 default: /* Avoid compiler warnings. */
919 YYCASE_(0, YY_("syntax error"));
920 YYCASE_(1, YY_("syntax error, unexpected %s"));
921 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
922 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
923 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
924 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
925# undef YYCASE_
926 }
927
928 {
929 YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
930 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
931 yysize = yysize1;
932 else
933 return 2;
934 }
935
936 if (*yymsg_alloc < yysize)
937 {
938 *yymsg_alloc = 2 * yysize;
939 if (! (yysize <= *yymsg_alloc
940 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
941 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
942 return 1;
943 }
944
945 /* Avoid sprintf, as that infringes on the user's name space.
946 Don't have undefined behavior even if the translation
947 produced a string with the wrong number of "%s"s. */
948 {
949 char *yyp = *yymsg;
950 int yyi = 0;
951 while ((*yyp = *yyformat) != '\0')
952 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
953 {
954 yyp += yytnamerr (yyp, yyarg[yyi++]);
955 yyformat += 2;
956 }
957 else
958 {
959 yyp++;
960 yyformat++;
961 }
962 }
963 return 0;
964}
965#endif /* YYERROR_VERBOSE */
966873
967/*-----------------------------------------------.874/*-----------------------------------------------.
968| Release the memory associated to this symbol. |875| Release the memory associated to this symbol. |
969`-----------------------------------------------*/876`-----------------------------------------------*/
970877
971static void878static void
972yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, NDBOX **result)879yydestruct (const char *yymsg,
880 yysymbol_kind_t yykind, YYSTYPE *yyvaluep, NDBOX **result)
973{881{
974 YYUSE (yyvaluep);882 YY_USE (yyvaluep);
975 YYUSE (result);883 YY_USE (result);
976 if (!yymsg)884 if (!yymsg)
977 yymsg = "Deleting";885 yymsg = "Deleting";
978 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);886 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
979887
980 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN888 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
981 YYUSE (yytype);889 YY_USE (yykind);
982 YY_IGNORE_MAYBE_UNINITIALIZED_END890 YY_IGNORE_MAYBE_UNINITIALIZED_END
983}891}
984892
985893
986894/* Lookahead token kind. */
987
988/* The lookahead symbol. */
989int yychar;895int yychar;
990896
991/* The semantic value of the lookahead symbol. */897/* The semantic value of the lookahead symbol. */
@@ -994,6 +900,8 @@ YYSTYPE yylval;
994int yynerrs;900int yynerrs;
995901
996902
903
904
997/*----------.905/*----------.
998| yyparse. |906| yyparse. |
999`----------*/907`----------*/
@@ -1001,43 +909,36 @@ int yynerrs;
1001int909int
1002yyparse (NDBOX **result)910yyparse (NDBOX **result)
1003{911{
1004 int yystate;912 yy_state_fast_t yystate = 0;
1005 /* Number of tokens to shift before error messages enabled. */913 /* Number of tokens to shift before error messages enabled. */
1006 int yyerrstatus;914 int yyerrstatus = 0;
1007
1008 /* The stacks and their tools:
1009 'yyss': related to states.
1010 'yyvs': related to semantic values.
1011915
1012 Refer to the stacks through separate pointers, to allow yyoverflow916 /* Refer to the stacks through separate pointers, to allow yyoverflow
1013 to reallocate them elsewhere. */917 to reallocate them elsewhere. */
1014918
1015 /* The state stack. */919 /* Their size. */
1016 yytype_int16 yyssa[YYINITDEPTH];920 YYPTRDIFF_T yystacksize = YYINITDEPTH;
1017 yytype_int16 *yyss;
1018 yytype_int16 *yyssp;
1019921
1020 /* The semantic value stack. */922 /* The state stack: array, bottom, top. */
1021 YYSTYPE yyvsa[YYINITDEPTH];923 yy_state_t yyssa[YYINITDEPTH];
1022 YYSTYPE *yyvs;924 yy_state_t *yyss = yyssa;
1023 YYSTYPE *yyvsp;925 yy_state_t *yyssp = yyss;
1024926
1025 YYSIZE_T yystacksize;927 /* The semantic value stack: array, bottom, top. */
928 YYSTYPE yyvsa[YYINITDEPTH];
929 YYSTYPE *yyvs = yyvsa;
930 YYSTYPE *yyvsp = yyvs;
1026931
1027 int yyn;932 int yyn;
933 /* The return value of yyparse. */
1028 int yyresult;934 int yyresult;
1029 /* Lookahead token as an internal (translated) token number. */935 /* Lookahead symbol kind. */
1030 int yytoken = 0;936 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
1031 /* The variables used to return semantic value and location from the937 /* The variables used to return semantic value and location from the
1032 action routines. */938 action routines. */
1033 YYSTYPE yyval;939 YYSTYPE yyval;
1034940
1035#if YYERROR_VERBOSE941
1036 /* Buffer for error messages, and its allocated size. */
1037 char yymsgbuf[128];
1038 char *yymsg = yymsgbuf;
1039 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1040#endif
1041942
1042#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))943#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1043944
@@ -1045,15 +946,8 @@ yyparse (NDBOX **result)
1045 Keep to zero when no symbol should be popped. */946 Keep to zero when no symbol should be popped. */
1046 int yylen = 0;947 int yylen = 0;
1047948
1048 yyssp = yyss = yyssa;
1049 yyvsp = yyvs = yyvsa;
1050 yystacksize = YYINITDEPTH;
1051
1052 YYDPRINTF ((stderr, "Starting parse\n"));949 YYDPRINTF ((stderr, "Starting parse\n"));
1053950
1054 yystate = 0;
1055 yyerrstatus = 0;
1056 yynerrs = 0;
1057 yychar = YYEMPTY; /* Cause a token to be read. */951 yychar = YYEMPTY; /* Cause a token to be read. */
1058 goto yysetstate;952 goto yysetstate;
1059953
@@ -1068,10 +962,15 @@ yynewstate:
1068962
1069963
1070/*--------------------------------------------------------------------.964/*--------------------------------------------------------------------.
1071| yynewstate -- set current state (the top of the stack) to yystate. |965| yysetstate -- set current state (the top of the stack) to yystate. |
1072`--------------------------------------------------------------------*/966`--------------------------------------------------------------------*/
1073yysetstate:967yysetstate:
1074 *yyssp = (yytype_int16) yystate;968 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
969 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
970 YY_IGNORE_USELESS_CAST_BEGIN
971 *yyssp = YY_CAST (yy_state_t, yystate);
972 YY_IGNORE_USELESS_CAST_END
973 YY_STACK_PRINT (yyss, yyssp);
1075974
1076 if (yyss + yystacksize - 1 <= yyssp)975 if (yyss + yystacksize - 1 <= yyssp)
1077#if !defined yyoverflow && !defined YYSTACK_RELOCATE976#if !defined yyoverflow && !defined YYSTACK_RELOCATE
@@ -1079,23 +978,23 @@ yysetstate:
1079#else978#else
1080 {979 {
1081 /* Get the current used size of the three stacks, in elements. */980 /* Get the current used size of the three stacks, in elements. */
1082 YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1);981 YYPTRDIFF_T yysize = yyssp - yyss + 1;
1083982
1084# if defined yyoverflow983# if defined yyoverflow
1085 {984 {
1086 /* Give user a chance to reallocate the stack. Use copies of985 /* Give user a chance to reallocate the stack. Use copies of
1087 these so that the &'s don't force the real ones into986 these so that the &'s don't force the real ones into
1088 memory. */987 memory. */
988 yy_state_t *yyss1 = yyss;
1089 YYSTYPE *yyvs1 = yyvs;989 YYSTYPE *yyvs1 = yyvs;
1090 yytype_int16 *yyss1 = yyss;
1091990
1092 /* Each stack pointer address is followed by the size of the991 /* Each stack pointer address is followed by the size of the
1093 data in use in that stack, in bytes. This used to be a992 data in use in that stack, in bytes. This used to be a
1094 conditional around just the two extra args, but that might993 conditional around just the two extra args, but that might
1095 be undefined if yyoverflow is a macro. */994 be undefined if yyoverflow is a macro. */
1096 yyoverflow (YY_("memory exhausted"),995 yyoverflow (YY_("memory exhausted"),
1097 &yyss1, yysize * sizeof (*yyssp),996 &yyss1, yysize * YYSIZEOF (*yyssp),
1098 &yyvs1, yysize * sizeof (*yyvsp),997 &yyvs1, yysize * YYSIZEOF (*yyvsp),
1099 &yystacksize);998 &yystacksize);
1100 yyss = yyss1;999 yyss = yyss1;
1101 yyvs = yyvs1;1000 yyvs = yyvs1;
@@ -1109,14 +1008,15 @@ yysetstate:
1109 yystacksize = YYMAXDEPTH;1008 yystacksize = YYMAXDEPTH;
11101009
1111 {1010 {
1112 yytype_int16 *yyss1 = yyss;1011 yy_state_t *yyss1 = yyss;
1113 union yyalloc *yyptr =1012 union yyalloc *yyptr =
1114 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));1013 YY_CAST (union yyalloc *,
1014 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
1115 if (! yyptr)1015 if (! yyptr)
1116 goto yyexhaustedlab;1016 goto yyexhaustedlab;
1117 YYSTACK_RELOCATE (yyss_alloc, yyss);1017 YYSTACK_RELOCATE (yyss_alloc, yyss);
1118 YYSTACK_RELOCATE (yyvs_alloc, yyvs);1018 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1119# undef YYSTACK_RELOCATE1019# undef YYSTACK_RELOCATE
1120 if (yyss1 != yyssa)1020 if (yyss1 != yyssa)
1121 YYSTACK_FREE (yyss1);1021 YYSTACK_FREE (yyss1);
1122 }1022 }
@@ -1125,16 +1025,16 @@ yysetstate:
1125 yyssp = yyss + yysize - 1;1025 yyssp = yyss + yysize - 1;
1126 yyvsp = yyvs + yysize - 1;1026 yyvsp = yyvs + yysize - 1;
11271027
1128 YYDPRINTF ((stderr, "Stack size increased to %lu\n",1028 YY_IGNORE_USELESS_CAST_BEGIN
1129 (unsigned long) yystacksize));1029 YYDPRINTF ((stderr, "Stack size increased to %ld\n",
1030 YY_CAST (long, yystacksize)));
1031 YY_IGNORE_USELESS_CAST_END
11301032
1131 if (yyss + yystacksize - 1 <= yyssp)1033 if (yyss + yystacksize - 1 <= yyssp)
1132 YYABORT;1034 YYABORT;
1133 }1035 }
1134#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */1036#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
11351037
1136 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1137
1138 if (yystate == YYFINAL)1038 if (yystate == YYFINAL)
1139 YYACCEPT;1039 YYACCEPT;
11401040
@@ -1155,18 +1055,29 @@ yybackup:
11551055
1156 /* Not known => get a lookahead token if don't already have one. */1056 /* Not known => get a lookahead token if don't already have one. */
11571057
1158 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */1058 /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
1159 if (yychar == YYEMPTY)1059 if (yychar == YYEMPTY)
1160 {1060 {
1161 YYDPRINTF ((stderr, "Reading a token: "));1061 YYDPRINTF ((stderr, "Reading a token\n"));
1162 yychar = yylex ();1062 yychar = yylex ();
1163 }1063 }
11641064
1165 if (yychar <= YYEOF)1065 if (yychar <= YYEOF)
1166 {1066 {
1167 yychar = yytoken = YYEOF;1067 yychar = YYEOF;
1068 yytoken = YYSYMBOL_YYEOF;
1168 YYDPRINTF ((stderr, "Now at end of input.\n"));1069 YYDPRINTF ((stderr, "Now at end of input.\n"));
1169 }1070 }
1071 else if (yychar == YYerror)
1072 {
1073 /* The scanner already issued an error message, process directly
1074 to error recovery. But do not keep the error token as
1075 lookahead, it is too special and may lead us to an endless
1076 loop in error recovery. */
1077 yychar = YYUNDEF;
1078 yytoken = YYSYMBOL_YYerror;
1079 goto yyerrlab1;
1080 }
1170 else1081 else
1171 {1082 {
1172 yytoken = YYTRANSLATE (yychar);1083 yytoken = YYTRANSLATE (yychar);
@@ -1194,15 +1105,13 @@ yybackup:
11941105
1195 /* Shift the lookahead token. */1106 /* Shift the lookahead token. */
1196 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);1107 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1197
1198 /* Discard the shifted token. */
1199 yychar = YYEMPTY;
1200
1201 yystate = yyn;1108 yystate = yyn;
1202 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN1109 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1203 *++yyvsp = yylval;1110 *++yyvsp = yylval;
1204 YY_IGNORE_MAYBE_UNINITIALIZED_END1111 YY_IGNORE_MAYBE_UNINITIALIZED_END
12051112
1113 /* Discard the shifted token. */
1114 yychar = YYEMPTY;
1206 goto yynewstate;1115 goto yynewstate;
12071116
12081117
@@ -1237,9 +1146,9 @@ yyreduce:
1237 YY_REDUCE_PRINT (yyn);1146 YY_REDUCE_PRINT (yyn);
1238 switch (yyn)1147 switch (yyn)
1239 {1148 {
1240 case 2:1149 case 2: /* box: O_BRACKET paren_list COMMA paren_list C_BRACKET */
1241#line 47 "cubeparse.y" /* yacc.c:1652 */1150#line 47 "cubeparse.y"
1242 {1151 {
1243 int dim;1152 int dim;
12441153
1245 dim = item_count(yyvsp[-3], ',');1154 dim = item_count(yyvsp[-3], ',');
@@ -1264,12 +1173,12 @@ yyreduce:
12641173
1265 *result = write_box( dim, yyvsp[-3], yyvsp[-1] );1174 *result = write_box( dim, yyvsp[-3], yyvsp[-1] );
1266 }1175 }
1267#line 1268 "cubeparse.c" /* yacc.c:1652 */1176#line 1177 "cubeparse.c"
1268 break;1177 break;
12691178
1270 case 3:1179 case 3: /* box: paren_list COMMA paren_list */
1271#line 74 "cubeparse.y" /* yacc.c:1652 */1180#line 74 "cubeparse.y"
1272 {1181 {
1273 int dim;1182 int dim;
12741183
1275 dim = item_count(yyvsp[-2], ',');1184 dim = item_count(yyvsp[-2], ',');
@@ -1294,12 +1203,12 @@ yyreduce:
12941203
1295 *result = write_box( dim, yyvsp[-2], yyvsp[0] );1204 *result = write_box( dim, yyvsp[-2], yyvsp[0] );
1296 }1205 }
1297#line 1298 "cubeparse.c" /* yacc.c:1652 */1206#line 1207 "cubeparse.c"
1298 break;1207 break;
12991208
1300 case 4:1209 case 4: /* box: paren_list */
1301#line 101 "cubeparse.y" /* yacc.c:1652 */1210#line 101 "cubeparse.y"
1302 {1211 {
1303 int dim;1212 int dim;
13041213
1305 dim = item_count(yyvsp[0], ',');1214 dim = item_count(yyvsp[0], ',');
@@ -1315,12 +1224,12 @@ yyreduce:
13151224
1316 *result = write_point_as_box(dim, yyvsp[0]);1225 *result = write_point_as_box(dim, yyvsp[0]);
1317 }1226 }
1318#line 1319 "cubeparse.c" /* yacc.c:1652 */1227#line 1228 "cubeparse.c"
1319 break;1228 break;
13201229
1321 case 5:1230 case 5: /* box: list */
1322#line 119 "cubeparse.y" /* yacc.c:1652 */1231#line 119 "cubeparse.y"
1323 {1232 {
1324 int dim;1233 int dim;
13251234
1326 dim = item_count(yyvsp[0], ',');1235 dim = item_count(yyvsp[0], ',');
@@ -1336,47 +1245,48 @@ yyreduce:
13361245
1337 *result = write_point_as_box(dim, yyvsp[0]);1246 *result = write_point_as_box(dim, yyvsp[0]);
1338 }1247 }
1339#line 1340 "cubeparse.c" /* yacc.c:1652 */1248#line 1249 "cubeparse.c"
1340 break;1249 break;
13411250
1342 case 6:1251 case 6: /* paren_list: O_PAREN list C_PAREN */
1343#line 138 "cubeparse.y" /* yacc.c:1652 */1252#line 138 "cubeparse.y"
1344 {1253 {
1345 yyval = yyvsp[-1];1254 yyval = yyvsp[-1];
1346 }1255 }
1347#line 1348 "cubeparse.c" /* yacc.c:1652 */1256#line 1257 "cubeparse.c"
1348 break;1257 break;
13491258
1350 case 7:1259 case 7: /* paren_list: O_PAREN C_PAREN */
1351#line 142 "cubeparse.y" /* yacc.c:1652 */1260#line 142 "cubeparse.y"
1352 {1261 {
1353 yyval = pstrdup("");1262 yyval = pstrdup("");
1354 }1263 }
1355#line 1356 "cubeparse.c" /* yacc.c:1652 */1264#line 1265 "cubeparse.c"
1356 break;1265 break;
13571266
1358 case 8:1267 case 8: /* list: CUBEFLOAT */
1359#line 148 "cubeparse.y" /* yacc.c:1652 */1268#line 148 "cubeparse.y"
1360 {1269 {
1361 /* alloc enough space to be sure whole list will fit */1270 /* alloc enough space to be sure whole list will fit */
1362 yyval = palloc(scanbuflen + 1);1271 yyval = palloc(scanbuflen + 1);
1363 strcpy(yyval, yyvsp[0]);1272 strcpy(yyval, yyvsp[0]);
1364 }1273 }
1365#line 1366 "cubeparse.c" /* yacc.c:1652 */1274#line 1275 "cubeparse.c"
1366 break;1275 break;
13671276
1368 case 9:1277 case 9: /* list: list COMMA CUBEFLOAT */
1369#line 154 "cubeparse.y" /* yacc.c:1652 */1278#line 154 "cubeparse.y"
1370 {1279 {
1371 yyval = yyvsp[-2];1280 yyval = yyvsp[-2];
1372 strcat(yyval, ",");1281 strcat(yyval, ",");
1373 strcat(yyval, yyvsp[0]);1282 strcat(yyval, yyvsp[0]);
1374 }1283 }
1375#line 1376 "cubeparse.c" /* yacc.c:1652 */1284#line 1285 "cubeparse.c"
1376 break;1285 break;
13771286
13781287
1379#line 1380 "cubeparse.c" /* yacc.c:1652 */1288#line 1289 "cubeparse.c"
1289
1380 default: break;1290 default: break;
1381 }1291 }
1382 /* User semantic actions sometimes alter yychar, and that requires1292 /* User semantic actions sometimes alter yychar, and that requires
@@ -1390,11 +1300,10 @@ yyreduce:
1390 case of YYERROR or YYBACKUP, subsequent parser actions might lead1300 case of YYERROR or YYBACKUP, subsequent parser actions might lead
1391 to an incorrect destructor call or verbose syntax error message1301 to an incorrect destructor call or verbose syntax error message
1392 before the lookahead is translated. */1302 before the lookahead is translated. */
1393 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);1303 YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
13941304
1395 YYPOPSTACK (yylen);1305 YYPOPSTACK (yylen);
1396 yylen = 0;1306 yylen = 0;
1397 YY_STACK_PRINT (yyss, yyssp);
13981307
1399 *++yyvsp = yyval;1308 *++yyvsp = yyval;
14001309
@@ -1418,50 +1327,14 @@ yyreduce:
1418yyerrlab:1327yyerrlab:
1419 /* Make sure we have latest lookahead translation. See comments at1328 /* Make sure we have latest lookahead translation. See comments at
1420 user semantic actions for why this is necessary. */1329 user semantic actions for why this is necessary. */
1421 yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);1330 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
1422
1423 /* If not already recovering from an error, report this error. */1331 /* If not already recovering from an error, report this error. */
1424 if (!yyerrstatus)1332 if (!yyerrstatus)
1425 {1333 {
1426 ++yynerrs;1334 ++yynerrs;
1427#if ! YYERROR_VERBOSE
1428 yyerror (result, YY_("syntax error"));1335 yyerror (result, YY_("syntax error"));
1429#else
1430# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
1431 yyssp, yytoken)
1432 {
1433 char const *yymsgp = YY_("syntax error");
1434 int yysyntax_error_status;
1435 yysyntax_error_status = YYSYNTAX_ERROR;
1436 if (yysyntax_error_status == 0)
1437 yymsgp = yymsg;
1438 else if (yysyntax_error_status == 1)
1439 {
1440 if (yymsg != yymsgbuf)
1441 YYSTACK_FREE (yymsg);
1442 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
1443 if (!yymsg)
1444 {
1445 yymsg = yymsgbuf;
1446 yymsg_alloc = sizeof yymsgbuf;
1447 yysyntax_error_status = 2;
1448 }
1449 else
1450 {
1451 yysyntax_error_status = YYSYNTAX_ERROR;
1452 yymsgp = yymsg;
1453 }
1454 }
1455 yyerror (result, yymsgp);
1456 if (yysyntax_error_status == 2)
1457 goto yyexhaustedlab;
1458 }
1459# undef YYSYNTAX_ERROR
1460#endif
1461 }1336 }
14621337
1463
1464
1465 if (yyerrstatus == 3)1338 if (yyerrstatus == 3)
1466 {1339 {
1467 /* If just tried and failed to reuse lookahead token after an1340 /* If just tried and failed to reuse lookahead token after an
@@ -1510,13 +1383,14 @@ yyerrorlab:
1510yyerrlab1:1383yyerrlab1:
1511 yyerrstatus = 3; /* Each real token shifted decrements this. */1384 yyerrstatus = 3; /* Each real token shifted decrements this. */
15121385
1386 /* Pop stack until we find a state that shifts the error token. */
1513 for (;;)1387 for (;;)
1514 {1388 {
1515 yyn = yypact[yystate];1389 yyn = yypact[yystate];
1516 if (!yypact_value_is_default (yyn))1390 if (!yypact_value_is_default (yyn))
1517 {1391 {
1518 yyn += YYTERROR;1392 yyn += YYSYMBOL_YYerror;
1519 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)1393 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
1520 {1394 {
1521 yyn = yytable[yyn];1395 yyn = yytable[yyn];
1522 if (0 < yyn)1396 if (0 < yyn)
@@ -1530,7 +1404,7 @@ yyerrlab1:
15301404
15311405
1532 yydestruct ("Error: popping",1406 yydestruct ("Error: popping",
1533 yystos[yystate], yyvsp, result);1407 YY_ACCESSING_SYMBOL (yystate), yyvsp, result);
1534 YYPOPSTACK (1);1408 YYPOPSTACK (1);
1535 yystate = *yyssp;1409 yystate = *yyssp;
1536 YY_STACK_PRINT (yyss, yyssp);1410 YY_STACK_PRINT (yyss, yyssp);
@@ -1542,7 +1416,7 @@ yyerrlab1:
15421416
15431417
1544 /* Shift the error token. */1418 /* Shift the error token. */
1545 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);1419 YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
15461420
1547 yystate = yyn;1421 yystate = yyn;
1548 goto yynewstate;1422 goto yynewstate;
@@ -1564,20 +1438,20 @@ yyabortlab:
1564 goto yyreturn;1438 goto yyreturn;
15651439
15661440
1567#if !defined yyoverflow || YYERROR_VERBOSE1441#if !defined yyoverflow
1568/*-------------------------------------------------.1442/*-------------------------------------------------.
1569| yyexhaustedlab -- memory exhaustion comes here. |1443| yyexhaustedlab -- memory exhaustion comes here. |
1570`-------------------------------------------------*/1444`-------------------------------------------------*/
1571yyexhaustedlab:1445yyexhaustedlab:
1572 yyerror (result, YY_("memory exhausted"));1446 yyerror (result, YY_("memory exhausted"));
1573 yyresult = 2;1447 yyresult = 2;
1574 /* Fall through. */1448 goto yyreturn;
1575#endif1449#endif
15761450
15771451
1578/*-----------------------------------------------------.1452/*-------------------------------------------------------.
1579| yyreturn -- parsing is finished, return the result. |1453| yyreturn -- parsing is finished, clean up and return. |
1580`-----------------------------------------------------*/1454`-------------------------------------------------------*/
1581yyreturn:1455yyreturn:
1582 if (yychar != YYEMPTY)1456 if (yychar != YYEMPTY)
1583 {1457 {
@@ -1594,20 +1468,18 @@ yyreturn:
1594 while (yyssp != yyss)1468 while (yyssp != yyss)
1595 {1469 {
1596 yydestruct ("Cleanup: popping",1470 yydestruct ("Cleanup: popping",
1597 yystos[*yyssp], yyvsp, result);1471 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, result);
1598 YYPOPSTACK (1);1472 YYPOPSTACK (1);
1599 }1473 }
1600#ifndef yyoverflow1474#ifndef yyoverflow
1601 if (yyss != yyssa)1475 if (yyss != yyssa)
1602 YYSTACK_FREE (yyss);1476 YYSTACK_FREE (yyss);
1603#endif1477#endif
1604#if YYERROR_VERBOSE1478
1605 if (yymsg != yymsgbuf)
1606 YYSTACK_FREE (yymsg);
1607#endif
1608 return yyresult;1479 return yyresult;
1609}1480}
1610#line 161 "cubeparse.y" /* yacc.c:1918 */1481
1482#line 161 "cubeparse.y"
16111483
16121484
1613/* This assumes the string has been normalized by productions above */1485/* This assumes the string has been normalized by productions above */
diff --git a/contrib/pageinspect/brinfuncs.c b/contrib/pageinspect/brinfuncs.c
index 13da761..dc0e039 100644
--- a/contrib/pageinspect/brinfuncs.c
+++ b/contrib/pageinspect/brinfuncs.c
@@ -18,6 +18,7 @@
18#include "access/brin_revmap.h"18#include "access/brin_revmap.h"
19#include "access/brin_tuple.h"19#include "access/brin_tuple.h"
20#include "catalog/index.h"20#include "catalog/index.h"
21#include "catalog/pg_am.h"
21#include "catalog/pg_type.h"22#include "catalog/pg_type.h"
22#include "funcapi.h"23#include "funcapi.h"
23#include "lib/stringinfo.h"24#include "lib/stringinfo.h"
@@ -33,6 +34,8 @@ PG_FUNCTION_INFO_V1(brin_page_items);
33PG_FUNCTION_INFO_V1(brin_metapage_info);34PG_FUNCTION_INFO_V1(brin_metapage_info);
34PG_FUNCTION_INFO_V1(brin_revmap_data);35PG_FUNCTION_INFO_V1(brin_revmap_data);
3536
37#define IS_BRIN(r) ((r)->rd_rel->relam == BRIN_AM_OID)
38
36typedef struct brin_column_state39typedef struct brin_column_state
37{40{
38 int nstored;41 int nstored;
@@ -47,8 +50,7 @@ Datum
47brin_page_type(PG_FUNCTION_ARGS)50brin_page_type(PG_FUNCTION_ARGS)
48{51{
49 bytea *raw_page = PG_GETARG_BYTEA_P(0);52 bytea *raw_page = PG_GETARG_BYTEA_P(0);
50 Page page = VARDATA(raw_page);53 Page page;
51 int raw_page_size;
52 char *type;54 char *type;
5355
54 if (!superuser())56 if (!superuser())
@@ -56,14 +58,19 @@ brin_page_type(PG_FUNCTION_ARGS)
56 (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),58 (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
57 (errmsg("must be superuser to use raw page functions"))));59 (errmsg("must be superuser to use raw page functions"))));
5860
59 raw_page_size = VARSIZE(raw_page) - VARHDRSZ;61 page = get_page_from_raw(raw_page);
6062
61 if (raw_page_size != BLCKSZ)63 if (PageIsNew(page))
62 ereport(ERROR,64 PG_RETURN_NULL();
63 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),65
64 errmsg("input page too small"),66 /* verify the special space has the expected size */
65 errdetail("Expected size %d, got %d",67 if (PageGetSpecialSize(page) != MAXALIGN(sizeof(BrinSpecialSpace)))
66 BLCKSZ, raw_page_size)));68 ereport(ERROR,
69 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
70 errmsg("input page is not a valid %s page", "BRIN"),
71 errdetail("Expected special size %d, got %d.",
72 (int) MAXALIGN(sizeof(BrinSpecialSpace)),
73 (int) PageGetSpecialSize(page))));
6774
68 switch (BrinPageType(page))75 switch (BrinPageType(page))
69 {76 {
@@ -91,19 +98,19 @@ brin_page_type(PG_FUNCTION_ARGS)
91static Page98static Page
92verify_brin_page(bytea *raw_page, uint16 type, const char *strtype)99verify_brin_page(bytea *raw_page, uint16 type, const char *strtype)
93{100{
94 Page page;101 Page page = get_page_from_raw(raw_page);
95 int raw_page_size;
96102
97 raw_page_size = VARSIZE(raw_page) - VARHDRSZ;103 if (PageIsNew(page))
104 return page;
98105
99 if (raw_page_size != BLCKSZ)106 /* verify the special space has the expected size */
100 ereport(ERROR,107 if (PageGetSpecialSize(page) != MAXALIGN(sizeof(BrinSpecialSpace)))
101 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),108 ereport(ERROR,
102 errmsg("input page too small"),109 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
103 errdetail("Expected size %d, got %d",110 errmsg("input page is not a valid %s page", "BRIN"),
104 BLCKSZ, raw_page_size)));111 errdetail("Expected special size %d, got %d.",
105112 (int) MAXALIGN(sizeof(BrinSpecialSpace)),
106 page = VARDATA(raw_page);113 (int) PageGetSpecialSize(page))));
107114
108 /* verify the special space says this page is what we want */115 /* verify the special space says this page is what we want */
109 if (BrinPageType(page) != type)116 if (BrinPageType(page) != type)
@@ -171,11 +178,25 @@ brin_page_items(PG_FUNCTION_ARGS)
171 MemoryContextSwitchTo(oldcontext);178 MemoryContextSwitchTo(oldcontext);
172179
173 indexRel = index_open(indexRelid, AccessShareLock);180 indexRel = index_open(indexRelid, AccessShareLock);
181
182 if (!IS_BRIN(indexRel))
183 ereport(ERROR,
184 (errcode(ERRCODE_WRONG_OBJECT_TYPE),
185 errmsg("\"%s\" is not a %s index",
186 RelationGetRelationName(indexRel), "BRIN")));
187
174 bdesc = brin_build_desc(indexRel);188 bdesc = brin_build_desc(indexRel);
175189
176 /* minimally verify the page we got */190 /* minimally verify the page we got */
177 page = verify_brin_page(raw_page, BRIN_PAGETYPE_REGULAR, "regular");191 page = verify_brin_page(raw_page, BRIN_PAGETYPE_REGULAR, "regular");
178192
193 if (PageIsNew(page))
194 {
195 brin_free_desc(bdesc);
196 index_close(indexRel, AccessShareLock);
197 PG_RETURN_NULL();
198 }
199
179 /*200 /*
180 * Initialize output functions for all indexed datatypes; simplifies201 * Initialize output functions for all indexed datatypes; simplifies
181 * calling them later.202 * calling them later.
@@ -342,6 +363,9 @@ brin_metapage_info(PG_FUNCTION_ARGS)
342363
343 page = verify_brin_page(raw_page, BRIN_PAGETYPE_META, "metapage");364 page = verify_brin_page(raw_page, BRIN_PAGETYPE_META, "metapage");
344365
366 if (PageIsNew(page))
367 PG_RETURN_NULL();
368
345 /* Build a tuple descriptor for our result type */369 /* Build a tuple descriptor for our result type */
346 if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE)370 if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE)
347 elog(ERROR, "return type must be a row type");371 elog(ERROR, "return type must be a row type");
@@ -384,15 +408,21 @@ brin_revmap_data(PG_FUNCTION_ARGS)
384 MemoryContext mctx;408 MemoryContext mctx;
385 Page page;409 Page page;
386410
387 /* minimally verify the page we got */
388 page = verify_brin_page(raw_page, BRIN_PAGETYPE_REVMAP, "revmap");
389
390 /* create a function context for cross-call persistence */411 /* create a function context for cross-call persistence */
391 fctx = SRF_FIRSTCALL_INIT();412 fctx = SRF_FIRSTCALL_INIT();
392413
393 /* switch to memory context appropriate for multiple function calls */414 /* switch to memory context appropriate for multiple function calls */
394 mctx = MemoryContextSwitchTo(fctx->multi_call_memory_ctx);415 mctx = MemoryContextSwitchTo(fctx->multi_call_memory_ctx);
395416
417 /* minimally verify the page we got */
418 page = verify_brin_page(raw_page, BRIN_PAGETYPE_REVMAP, "revmap");
419
420 if (PageIsNew(page))
421 {
422 MemoryContextSwitchTo(mctx);
423 PG_RETURN_NULL();
424 }
425
396 state = palloc(sizeof(*state));426 state = palloc(sizeof(*state));
397 state->tids = ((RevmapContents *) PageGetContents(page))->rm_tids;427 state->tids = ((RevmapContents *) PageGetContents(page))->rm_tids;
398 state->idx = 0;428 state->idx = 0;
diff --git a/contrib/pageinspect/btreefuncs.c b/contrib/pageinspect/btreefuncs.c
index 4f83467..1f5a333 100644
--- a/contrib/pageinspect/btreefuncs.c
+++ b/contrib/pageinspect/btreefuncs.c
@@ -181,8 +181,10 @@ bt_page_stats(PG_FUNCTION_ARGS)
181 rel = relation_openrv(relrv, AccessShareLock);181 rel = relation_openrv(relrv, AccessShareLock);
182182
183 if (!IS_INDEX(rel) || !IS_BTREE(rel))183 if (!IS_INDEX(rel) || !IS_BTREE(rel))
184 elog(ERROR, "relation \"%s\" is not a btree index",184 ereport(ERROR,
185 RelationGetRelationName(rel));185 (errcode(ERRCODE_WRONG_OBJECT_TYPE),
186 errmsg("\"%s\" is not a %s index",
187 RelationGetRelationName(rel), "btree")));
186188
187 /*189 /*
188 * Reject attempts to read non-local temporary relations; we would be190 * Reject attempts to read non-local temporary relations; we would be
@@ -335,8 +337,10 @@ bt_page_items(PG_FUNCTION_ARGS)
335 rel = relation_openrv(relrv, AccessShareLock);337 rel = relation_openrv(relrv, AccessShareLock);
336338
337 if (!IS_INDEX(rel) || !IS_BTREE(rel))339 if (!IS_INDEX(rel) || !IS_BTREE(rel))
338 elog(ERROR, "relation \"%s\" is not a btree index",340 ereport(ERROR,
339 RelationGetRelationName(rel));341 (errcode(ERRCODE_WRONG_OBJECT_TYPE),
342 errmsg("\"%s\" is not a %s index",
343 RelationGetRelationName(rel), "btree")));
340344
341 /*345 /*
342 * Reject attempts to read non-local temporary relations; we would be346 * Reject attempts to read non-local temporary relations; we would be
@@ -424,7 +428,6 @@ bt_page_items_bytea(PG_FUNCTION_ARGS)
424 Datum result;428 Datum result;
425 FuncCallContext *fctx;429 FuncCallContext *fctx;
426 struct user_args *uargs;430 struct user_args *uargs;
427 int raw_page_size;
428431
429 if (!superuser())432 if (!superuser())
430 ereport(ERROR,433 ereport(ERROR,
@@ -437,22 +440,30 @@ bt_page_items_bytea(PG_FUNCTION_ARGS)
437 MemoryContext mctx;440 MemoryContext mctx;
438 TupleDesc tupleDesc;441 TupleDesc tupleDesc;
439442
440 raw_page_size = VARSIZE(raw_page) - VARHDRSZ;
441
442 if (raw_page_size < SizeOfPageHeaderData)
443 ereport(ERROR,
444 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
445 errmsg("input page too small (%d bytes)", raw_page_size)));
446
447 fctx = SRF_FIRSTCALL_INIT();443 fctx = SRF_FIRSTCALL_INIT();
448 mctx = MemoryContextSwitchTo(fctx->multi_call_memory_ctx);444 mctx = MemoryContextSwitchTo(fctx->multi_call_memory_ctx);
449445
450 uargs = palloc(sizeof(struct user_args));446 uargs = palloc(sizeof(struct user_args));
451447
452 uargs->page = VARDATA(raw_page);448 uargs->page = get_page_from_raw(raw_page);
449
450 if (PageIsNew(uargs->page))
451 {
452 MemoryContextSwitchTo(mctx);
453 PG_RETURN_NULL();
454 }
453455
454 uargs->offset = FirstOffsetNumber;456 uargs->offset = FirstOffsetNumber;
455457
458 /* verify the special space has the expected size */
459 if (PageGetSpecialSize(uargs->page) != MAXALIGN(sizeof(BTPageOpaqueData)))
460 ereport(ERROR,
461 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
462 errmsg("input page is not a valid %s page", "btree"),
463 errdetail("Expected special size %d, got %d.",
464 (int) MAXALIGN(sizeof(BTPageOpaqueData)),
465 (int) PageGetSpecialSize(uargs->page))));
466
456 opaque = (BTPageOpaque) PageGetSpecialPointer(uargs->page);467 opaque = (BTPageOpaque) PageGetSpecialPointer(uargs->page);
457468
458 if (P_ISMETA(opaque))469 if (P_ISMETA(opaque))
@@ -460,6 +471,11 @@ bt_page_items_bytea(PG_FUNCTION_ARGS)
460 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),471 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
461 errmsg("block is a meta page")));472 errmsg("block is a meta page")));
462473
474 if (P_ISLEAF(opaque) && opaque->btpo.level != 0)
475 ereport(ERROR,
476 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
477 errmsg("block is not a valid btree leaf page")));
478
463 if (P_ISDELETED(opaque))479 if (P_ISDELETED(opaque))
464 elog(NOTICE, "page is deleted");480 elog(NOTICE, "page is deleted");
465481
@@ -525,8 +541,10 @@ bt_metap(PG_FUNCTION_ARGS)
525 rel = relation_openrv(relrv, AccessShareLock);541 rel = relation_openrv(relrv, AccessShareLock);
526542
527 if (!IS_INDEX(rel) || !IS_BTREE(rel))543 if (!IS_INDEX(rel) || !IS_BTREE(rel))
528 elog(ERROR, "relation \"%s\" is not a btree index",544 ereport(ERROR,
529 RelationGetRelationName(rel));545 (errcode(ERRCODE_WRONG_OBJECT_TYPE),
546 errmsg("\"%s\" is not a %s index",
547 RelationGetRelationName(rel), "btree")));
530548
531 /*549 /*
532 * Reject attempts to read non-local temporary relations; we would be550 * Reject attempts to read non-local temporary relations; we would be
diff --git a/contrib/pageinspect/expected/brin.out b/contrib/pageinspect/expected/brin.out
index 71eb190..d19cdc3 100644
--- a/contrib/pageinspect/expected/brin.out
+++ b/contrib/pageinspect/expected/brin.out
@@ -48,4 +48,43 @@ SELECT * FROM brin_page_items(get_raw_page('test1_a_idx', 2), 'test1_a_idx')
48 1 | 0 | 1 | f | f | f | {1 .. 1}48 1 | 0 | 1 | f | f | f | {1 .. 1}
49(1 row)49(1 row)
5050
51-- Failure for non-BRIN index.
52CREATE INDEX test1_a_btree ON test1 (a);
53SELECT brin_page_items(get_raw_page('test1_a_btree', 0), 'test1_a_btree');
54ERROR: "test1_a_btree" is not a BRIN index
55-- Mask DETAIL messages as these are not portable across architectures.
56\set VERBOSITY terse
57-- Invalid special area size
58SELECT brin_page_type(get_raw_page('test1', 0));
59ERROR: input page is not a valid BRIN page
60SELECT * FROM brin_metapage_info(get_raw_page('test1', 0));
61ERROR: input page is not a valid BRIN page
62SELECT * FROM brin_revmap_data(get_raw_page('test1', 0));
63ERROR: input page is not a valid BRIN page
64\set VERBOSITY default
65-- Tests with all-zero pages.
66SHOW block_size \gset
67SELECT brin_page_type(decode(repeat('00', :block_size), 'hex'));
68 brin_page_type
69----------------
70
71(1 row)
72
73SELECT brin_page_items(decode(repeat('00', :block_size), 'hex'), 'test1_a_idx');
74 brin_page_items
75-----------------
76(0 rows)
77
78SELECT brin_metapage_info(decode(repeat('00', :block_size), 'hex'));
79 brin_metapage_info
80--------------------
81
82(1 row)
83
84SELECT brin_revmap_data(decode(repeat('00', :block_size), 'hex'));
85 brin_revmap_data
86------------------
87
88(1 row)
89
51DROP TABLE test1;90DROP TABLE test1;
diff --git a/contrib/pageinspect/expected/btree.out b/contrib/pageinspect/expected/btree.out
index 67b103a..4015dad 100644
--- a/contrib/pageinspect/expected/btree.out
+++ b/contrib/pageinspect/expected/btree.out
@@ -1,5 +1,5 @@
1CREATE TABLE test1 (a int8, b text);1CREATE TABLE test1 (a int8, b int4range);
2INSERT INTO test1 VALUES (72057594037927937, 'text');2INSERT INTO test1 VALUES (72057594037927937, '[0,1)');
3CREATE INDEX test1_a_idx ON test1 USING btree (a);3CREATE INDEX test1_a_idx ON test1 USING btree (a);
4\x4\x
5SELECT * FROM bt_metap('test1_a_idx');5SELECT * FROM bt_metap('test1_a_idx');
@@ -55,4 +55,39 @@ data | 01 00 00 00 00 00 00 01
5555
56SELECT * FROM bt_page_items(get_raw_page('test1_a_idx', 2));56SELECT * FROM bt_page_items(get_raw_page('test1_a_idx', 2));
57ERROR: block number 2 is out of range for relation "test1_a_idx"57ERROR: block number 2 is out of range for relation "test1_a_idx"
58-- Failure when using a non-btree index.
59CREATE INDEX test1_a_hash ON test1 USING hash(a);
60SELECT bt_metap('test1_a_hash');
61ERROR: "test1_a_hash" is not a btree index
62SELECT bt_page_stats('test1_a_hash', 0);
63ERROR: "test1_a_hash" is not a btree index
64SELECT bt_page_items('test1_a_hash', 0);
65ERROR: "test1_a_hash" is not a btree index
66SELECT bt_page_items(get_raw_page('test1_a_hash', 0));
67ERROR: block is a meta page
68CREATE INDEX test1_b_gist ON test1 USING gist(b);
69-- Special area of GiST is the same as btree, this complains about inconsistent
70-- leaf data on the page.
71SELECT bt_page_items(get_raw_page('test1_b_gist', 0));
72ERROR: block is not a valid btree leaf page
73-- Several failure modes.
74-- Suppress the DETAIL message, to allow the tests to work across various
75-- page sizes and architectures.
76\set VERBOSITY terse
77-- invalid page size
78SELECT bt_page_items('aaa'::bytea);
79ERROR: invalid page size
80-- invalid special area size
81CREATE INDEX test1_a_brin ON test1 USING brin(a);
82SELECT bt_page_items(get_raw_page('test1', 0));
83ERROR: input page is not a valid btree page
84SELECT bt_page_items(get_raw_page('test1_a_brin', 0));
85ERROR: input page is not a valid btree page
86\set VERBOSITY default
87-- Tests with all-zero pages.
88SHOW block_size \gset
89SELECT bt_page_items(decode(repeat('00', :block_size), 'hex'));
90-[ RECORD 1 ]-+-
91bt_page_items |
92
58DROP TABLE test1;93DROP TABLE test1;
diff --git a/contrib/pageinspect/expected/gin.out b/contrib/pageinspect/expected/gin.out
index 82f63b2..5f49ff5 100644
--- a/contrib/pageinspect/expected/gin.out
+++ b/contrib/pageinspect/expected/gin.out
@@ -35,3 +35,36 @@ FROM gin_leafpage_items(get_raw_page('test1_y_idx',
35-[ RECORD 1 ]35-[ RECORD 1 ]
36?column? | t36?column? | t
3737
38-- Failure with various modes.
39-- Suppress the DETAIL message, to allow the tests to work across various
40-- page sizes and architectures.
41\set VERBOSITY terse
42-- invalid page size
43SELECT gin_leafpage_items('aaa'::bytea);
44ERROR: invalid page size
45SELECT gin_metapage_info('bbb'::bytea);
46ERROR: invalid page size
47SELECT gin_page_opaque_info('ccc'::bytea);
48ERROR: invalid page size
49-- invalid special area size
50SELECT * FROM gin_metapage_info(get_raw_page('test1', 0));
51ERROR: input page is not a valid GIN metapage
52SELECT * FROM gin_page_opaque_info(get_raw_page('test1', 0));
53ERROR: input page is not a valid GIN data leaf page
54SELECT * FROM gin_leafpage_items(get_raw_page('test1', 0));
55ERROR: input page is not a valid GIN data leaf page
56\set VERBOSITY default
57-- Tests with all-zero pages.
58SHOW block_size \gset
59SELECT gin_leafpage_items(decode(repeat('00', :block_size), 'hex'));
60-[ RECORD 1 ]------+-
61gin_leafpage_items |
62
63SELECT gin_metapage_info(decode(repeat('00', :block_size), 'hex'));
64-[ RECORD 1 ]-----+-
65gin_metapage_info |
66
67SELECT gin_page_opaque_info(decode(repeat('00', :block_size), 'hex'));
68-[ RECORD 1 ]--------+-
69gin_page_opaque_info |
70
diff --git a/contrib/pageinspect/expected/hash.out b/contrib/pageinspect/expected/hash.out
index 75d7bcf..82f1875 100644
--- a/contrib/pageinspect/expected/hash.out
+++ b/contrib/pageinspect/expected/hash.out
@@ -159,4 +159,43 @@ SELECT * FROM hash_page_items(get_raw_page('test_hash_a_idx', 4));
159159
160SELECT * FROM hash_page_items(get_raw_page('test_hash_a_idx', 5));160SELECT * FROM hash_page_items(get_raw_page('test_hash_a_idx', 5));
161ERROR: page is not a hash bucket or overflow page161ERROR: page is not a hash bucket or overflow page
162-- Failure with non-hash index
163CREATE INDEX test_hash_a_btree ON test_hash USING btree (a);
164SELECT hash_bitmap_info('test_hash_a_btree', 0);
165ERROR: "test_hash_a_btree" is not a hash index
166-- Failure with various modes.
167-- Suppress the DETAIL message, to allow the tests to work across various
168-- page sizes and architectures.
169\set VERBOSITY terse
170-- invalid page size
171SELECT hash_metapage_info('aaa'::bytea);
172ERROR: invalid page size
173SELECT hash_page_items('bbb'::bytea);
174ERROR: invalid page size
175SELECT hash_page_stats('ccc'::bytea);
176ERROR: invalid page size
177SELECT hash_page_type('ddd'::bytea);
178ERROR: invalid page size
179-- invalid special area size
180SELECT hash_metapage_info(get_raw_page('test_hash', 0));
181ERROR: input page is not a valid hash page
182SELECT hash_page_items(get_raw_page('test_hash', 0));
183ERROR: input page is not a valid hash page
184SELECT hash_page_stats(get_raw_page('test_hash', 0));
185ERROR: input page is not a valid hash page
186SELECT hash_page_type(get_raw_page('test_hash', 0));
187ERROR: input page is not a valid hash page
188\set VERBOSITY default
189-- Tests with all-zero pages.
190SHOW block_size \gset
191SELECT hash_metapage_info(decode(repeat('00', :block_size), 'hex'));
192ERROR: page is not a hash meta page
193SELECT hash_page_items(decode(repeat('00', :block_size), 'hex'));
194ERROR: page is not a hash bucket or overflow page
195SELECT hash_page_stats(decode(repeat('00', :block_size), 'hex'));
196ERROR: page is not a hash bucket or overflow page
197SELECT hash_page_type(decode(repeat('00', :block_size), 'hex'));
198-[ RECORD 1 ]--+-------
199hash_page_type | unused
200
162DROP TABLE test_hash;201DROP TABLE test_hash;
diff --git a/contrib/pageinspect/expected/page.out b/contrib/pageinspect/expected/page.out
index 8e0300a..4666d6c 100644
--- a/contrib/pageinspect/expected/page.out
+++ b/contrib/pageinspect/expected/page.out
@@ -109,3 +109,34 @@ select tuple_data_split('test8'::regclass, t_data, t_infomask, t_infomask2, t_bi
109(1 row)109(1 row)
110110
111drop table test8;111drop table test8;
112-- Failure with incorrect page size
113-- Suppress the DETAIL message, to allow the tests to work across various
114-- page sizes.
115\set VERBOSITY terse
116SELECT fsm_page_contents('aaa'::bytea);
117ERROR: invalid page size
118SELECT page_checksum('bbb'::bytea, 0);
119ERROR: invalid page size
120SELECT page_header('ccc'::bytea);
121ERROR: invalid page size
122\set VERBOSITY default
123-- Tests with all-zero pages.
124SHOW block_size \gset
125SELECT fsm_page_contents(decode(repeat('00', :block_size), 'hex'));
126 fsm_page_contents
127-------------------
128
129(1 row)
130
131SELECT page_header(decode(repeat('00', :block_size), 'hex'));
132 page_header
133-----------------------
134 (0/0,0,0,0,0,0,0,0,0)
135(1 row)
136
137SELECT page_checksum(decode(repeat('00', :block_size), 'hex'), 1);
138 page_checksum
139---------------
140
141(1 row)
142
diff --git a/contrib/pageinspect/fsmfuncs.c b/contrib/pageinspect/fsmfuncs.c
index 615dab8..4db3be4 100644
--- a/contrib/pageinspect/fsmfuncs.c
+++ b/contrib/pageinspect/fsmfuncs.c
@@ -37,6 +37,7 @@ fsm_page_contents(PG_FUNCTION_ARGS)
37{37{
38 bytea *raw_page = PG_GETARG_BYTEA_P(0);38 bytea *raw_page = PG_GETARG_BYTEA_P(0);
39 StringInfoData sinfo;39 StringInfoData sinfo;
40 Page page;
40 FSMPage fsmpage;41 FSMPage fsmpage;
41 int i;42 int i;
4243
@@ -45,7 +46,12 @@ fsm_page_contents(PG_FUNCTION_ARGS)
45 (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),46 (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
46 (errmsg("must be superuser to use raw page functions"))));47 (errmsg("must be superuser to use raw page functions"))));
4748
48 fsmpage = (FSMPage) PageGetContents(VARDATA(raw_page));49 page = get_page_from_raw(raw_page);
50
51 if (PageIsNew(page))
52 PG_RETURN_NULL();
53
54 fsmpage = (FSMPage) PageGetContents(page);
4955
50 initStringInfo(&sinfo);56 initStringInfo(&sinfo);
5157
diff --git a/contrib/pageinspect/ginfuncs.c b/contrib/pageinspect/ginfuncs.c
index f774495..f6de807 100644
--- a/contrib/pageinspect/ginfuncs.c
+++ b/contrib/pageinspect/ginfuncs.c
@@ -50,6 +50,17 @@ gin_metapage_info(PG_FUNCTION_ARGS)
5050
51 page = get_page_from_raw(raw_page);51 page = get_page_from_raw(raw_page);
5252
53 if (PageIsNew(page))
54 PG_RETURN_NULL();
55
56 if (PageGetSpecialSize(page) != MAXALIGN(sizeof(GinPageOpaqueData)))
57 ereport(ERROR,
58 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
59 errmsg("input page is not a valid GIN metapage"),
60 errdetail("Expected special size %d, got %d.",
61 (int) MAXALIGN(sizeof(GinPageOpaqueData)),
62 (int) PageGetSpecialSize(page))));
63
53 opaq = (GinPageOpaque) PageGetSpecialPointer(page);64 opaq = (GinPageOpaque) PageGetSpecialPointer(page);
54 if (opaq->flags != GIN_META)65 if (opaq->flags != GIN_META)
55 ereport(ERROR,66 ereport(ERROR,
@@ -108,6 +119,17 @@ gin_page_opaque_info(PG_FUNCTION_ARGS)
108119
109 page = get_page_from_raw(raw_page);120 page = get_page_from_raw(raw_page);
110121
122 if (PageIsNew(page))
123 PG_RETURN_NULL();
124
125 if (PageGetSpecialSize(page) != MAXALIGN(sizeof(GinPageOpaqueData)))
126 ereport(ERROR,
127 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
128 errmsg("input page is not a valid GIN data leaf page"),
129 errdetail("Expected special size %d, got %d.",
130 (int) MAXALIGN(sizeof(GinPageOpaqueData)),
131 (int) PageGetSpecialSize(page))));
132
111 opaq = (GinPageOpaque) PageGetSpecialPointer(page);133 opaq = (GinPageOpaque) PageGetSpecialPointer(page);
112134
113 /* Build a tuple descriptor for our result type */135 /* Build a tuple descriptor for our result type */
@@ -184,13 +206,19 @@ gin_leafpage_items(PG_FUNCTION_ARGS)
184206
185 page = get_page_from_raw(raw_page);207 page = get_page_from_raw(raw_page);
186208
209 if (PageIsNew(page))
210 {
211 MemoryContextSwitchTo(mctx);
212 PG_RETURN_NULL();
213 }
214
187 if (PageGetSpecialSize(page) != MAXALIGN(sizeof(GinPageOpaqueData)))215 if (PageGetSpecialSize(page) != MAXALIGN(sizeof(GinPageOpaqueData)))
188 ereport(ERROR,216 ereport(ERROR,
189 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),217 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
190 errmsg("input page is not a valid GIN data leaf page"),218 errmsg("input page is not a valid GIN data leaf page"),
191 errdetail("Special size %d, expected %d",219 errdetail("Expected special size %d, got %d.",
192 (int) PageGetSpecialSize(page),220 (int) MAXALIGN(sizeof(GinPageOpaqueData)),
193 (int) MAXALIGN(sizeof(GinPageOpaqueData)))));221 (int) PageGetSpecialSize(page))));
194222
195 opaq = (GinPageOpaque) PageGetSpecialPointer(page);223 opaq = (GinPageOpaque) PageGetSpecialPointer(page);
196 if (opaq->flags != (GIN_DATA | GIN_LEAF | GIN_COMPRESSED))224 if (opaq->flags != (GIN_DATA | GIN_LEAF | GIN_COMPRESSED))
diff --git a/contrib/pageinspect/hashfuncs.c b/contrib/pageinspect/hashfuncs.c
index 778e15d..50b0bc2 100644
--- a/contrib/pageinspect/hashfuncs.c
+++ b/contrib/pageinspect/hashfuncs.c
@@ -65,14 +65,17 @@ verify_hash_page(bytea *raw_page, int flags)
6565
66 if (PageGetSpecialSize(page) != MAXALIGN(sizeof(HashPageOpaqueData)))66 if (PageGetSpecialSize(page) != MAXALIGN(sizeof(HashPageOpaqueData)))
67 ereport(ERROR,67 ereport(ERROR,
68 (errcode(ERRCODE_INDEX_CORRUPTED),68 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
69 errmsg("index table contains corrupted page")));69 errmsg("input page is not a valid %s page", "hash"),
70 errdetail("Expected special size %d, got %d.",
71 (int) MAXALIGN(sizeof(HashPageOpaqueData)),
72 (int) PageGetSpecialSize(page))));
7073
71 pageopaque = (HashPageOpaque) PageGetSpecialPointer(page);74 pageopaque = (HashPageOpaque) PageGetSpecialPointer(page);
72 if (pageopaque->hasho_page_id != HASHO_PAGE_ID)75 if (pageopaque->hasho_page_id != HASHO_PAGE_ID)
73 ereport(ERROR,76 ereport(ERROR,
74 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),77 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
75 errmsg("page is not a hash page"),78 errmsg("input page is not a valid %s page", "hash"),
76 errdetail("Expected %08x, got %08x.",79 errdetail("Expected %08x, got %08x.",
77 HASHO_PAGE_ID, pageopaque->hasho_page_id)));80 HASHO_PAGE_ID, pageopaque->hasho_page_id)));
7881
@@ -129,7 +132,7 @@ verify_hash_page(bytea *raw_page, int flags)
129 ereport(ERROR,132 ereport(ERROR,
130 (errcode(ERRCODE_INDEX_CORRUPTED),133 (errcode(ERRCODE_INDEX_CORRUPTED),
131 errmsg("invalid version for metadata"),134 errmsg("invalid version for metadata"),
132 errdetail("Expected %d, got %d",135 errdetail("Expected %d, got %d.",
133 HASH_VERSION, metap->hashm_version)));136 HASH_VERSION, metap->hashm_version)));
134 }137 }
135138
@@ -415,8 +418,10 @@ hash_bitmap_info(PG_FUNCTION_ARGS)
415 indexRel = index_open(indexRelid, AccessShareLock);418 indexRel = index_open(indexRelid, AccessShareLock);
416419
417 if (!IS_HASH(indexRel))420 if (!IS_HASH(indexRel))
418 elog(ERROR, "relation \"%s\" is not a hash index",421 ereport(ERROR,
419 RelationGetRelationName(indexRel));422 (errcode(ERRCODE_WRONG_OBJECT_TYPE),
423 errmsg("\"%s\" is not a %s index",
424 RelationGetRelationName(indexRel), "hash")));
420425
421 if (RELATION_IS_OTHER_TEMP(indexRel))426 if (RELATION_IS_OTHER_TEMP(indexRel))
422 ereport(ERROR,427 ereport(ERROR,
diff --git a/contrib/pageinspect/rawpage.c b/contrib/pageinspect/rawpage.c
index e9d3131..c70cf61 100644
--- a/contrib/pageinspect/rawpage.c
+++ b/contrib/pageinspect/rawpage.c
@@ -214,7 +214,6 @@ Datum
214page_header(PG_FUNCTION_ARGS)214page_header(PG_FUNCTION_ARGS)
215{215{
216 bytea *raw_page = PG_GETARG_BYTEA_P(0);216 bytea *raw_page = PG_GETARG_BYTEA_P(0);
217 int raw_page_size;
218217
219 TupleDesc tupdesc;218 TupleDesc tupdesc;
220219
@@ -231,18 +230,7 @@ page_header(PG_FUNCTION_ARGS)
231 (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),230 (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
232 (errmsg("must be superuser to use raw page functions"))));231 (errmsg("must be superuser to use raw page functions"))));
233232
234 raw_page_size = VARSIZE(raw_page) - VARHDRSZ;233 page = (PageHeader) get_page_from_raw(raw_page);
235
236 /*
237 * Check that enough data was supplied, so that we don't try to access
238 * fields outside the supplied buffer.
239 */
240 if (raw_page_size < SizeOfPageHeaderData)
241 ereport(ERROR,
242 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
243 errmsg("input page too small (%d bytes)", raw_page_size)));
244
245 page = (PageHeader) VARDATA(raw_page);
246234
247 /* Build a tuple descriptor for our result type */235 /* Build a tuple descriptor for our result type */
248 if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE)236 if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE)
@@ -295,25 +283,17 @@ page_checksum(PG_FUNCTION_ARGS)
295{283{
296 bytea *raw_page = PG_GETARG_BYTEA_P(0);284 bytea *raw_page = PG_GETARG_BYTEA_P(0);
297 uint32 blkno = PG_GETARG_INT32(1);285 uint32 blkno = PG_GETARG_INT32(1);
298 int raw_page_size;286 Page page;
299 PageHeader page;
300287
301 if (!superuser())288 if (!superuser())
302 ereport(ERROR,289 ereport(ERROR,
303 (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),290 (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
304 (errmsg("must be superuser to use raw page functions"))));291 (errmsg("must be superuser to use raw page functions"))));
305292
306 raw_page_size = VARSIZE(raw_page) - VARHDRSZ;293 page = get_page_from_raw(raw_page);
307
308 /*
309 * Check that the supplied page is of the right size.
310 */
311 if (raw_page_size != BLCKSZ)
312 ereport(ERROR,
313 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
314 errmsg("incorrect size of input page (%d bytes)", raw_page_size)));
315294
316 page = (PageHeader) VARDATA(raw_page);295 if (PageIsNew(page))
296 PG_RETURN_NULL();
317297
318 PG_RETURN_INT16(pg_checksum_page((char *) page, blkno));298 PG_RETURN_INT16(pg_checksum_page((char *) page, blkno));
319}299}
diff --git a/contrib/pageinspect/sql/brin.sql b/contrib/pageinspect/sql/brin.sql
index 735bc3b..45098c1 100644
--- a/contrib/pageinspect/sql/brin.sql
+++ b/contrib/pageinspect/sql/brin.sql
@@ -15,4 +15,23 @@ SELECT * FROM brin_revmap_data(get_raw_page('test1_a_idx', 1)) LIMIT 5;
15SELECT * FROM brin_page_items(get_raw_page('test1_a_idx', 2), 'test1_a_idx')15SELECT * FROM brin_page_items(get_raw_page('test1_a_idx', 2), 'test1_a_idx')
16 ORDER BY blknum, attnum LIMIT 5;16 ORDER BY blknum, attnum LIMIT 5;
1717
18-- Failure for non-BRIN index.
19CREATE INDEX test1_a_btree ON test1 (a);
20SELECT brin_page_items(get_raw_page('test1_a_btree', 0), 'test1_a_btree');
21
22-- Mask DETAIL messages as these are not portable across architectures.
23\set VERBOSITY terse
24-- Invalid special area size
25SELECT brin_page_type(get_raw_page('test1', 0));
26SELECT * FROM brin_metapage_info(get_raw_page('test1', 0));
27SELECT * FROM brin_revmap_data(get_raw_page('test1', 0));
28\set VERBOSITY default
29
30-- Tests with all-zero pages.
31SHOW block_size \gset
32SELECT brin_page_type(decode(repeat('00', :block_size), 'hex'));
33SELECT brin_page_items(decode(repeat('00', :block_size), 'hex'), 'test1_a_idx');
34SELECT brin_metapage_info(decode(repeat('00', :block_size), 'hex'));
35SELECT brin_revmap_data(decode(repeat('00', :block_size), 'hex'));
36
18DROP TABLE test1;37DROP TABLE test1;
diff --git a/contrib/pageinspect/sql/btree.sql b/contrib/pageinspect/sql/btree.sql
index 8eac64c..75587c1 100644
--- a/contrib/pageinspect/sql/btree.sql
+++ b/contrib/pageinspect/sql/btree.sql
@@ -1,5 +1,5 @@
1CREATE TABLE test1 (a int8, b text);1CREATE TABLE test1 (a int8, b int4range);
2INSERT INTO test1 VALUES (72057594037927937, 'text');2INSERT INTO test1 VALUES (72057594037927937, '[0,1)');
3CREATE INDEX test1_a_idx ON test1 USING btree (a);3CREATE INDEX test1_a_idx ON test1 USING btree (a);
44
5\x5\x
@@ -18,4 +18,31 @@ SELECT * FROM bt_page_items(get_raw_page('test1_a_idx', 0));
18SELECT * FROM bt_page_items(get_raw_page('test1_a_idx', 1));18SELECT * FROM bt_page_items(get_raw_page('test1_a_idx', 1));
19SELECT * FROM bt_page_items(get_raw_page('test1_a_idx', 2));19SELECT * FROM bt_page_items(get_raw_page('test1_a_idx', 2));
2020
21-- Failure when using a non-btree index.
22CREATE INDEX test1_a_hash ON test1 USING hash(a);
23SELECT bt_metap('test1_a_hash');
24SELECT bt_page_stats('test1_a_hash', 0);
25SELECT bt_page_items('test1_a_hash', 0);
26SELECT bt_page_items(get_raw_page('test1_a_hash', 0));
27CREATE INDEX test1_b_gist ON test1 USING gist(b);
28-- Special area of GiST is the same as btree, this complains about inconsistent
29-- leaf data on the page.
30SELECT bt_page_items(get_raw_page('test1_b_gist', 0));
31
32-- Several failure modes.
33-- Suppress the DETAIL message, to allow the tests to work across various
34-- page sizes and architectures.
35\set VERBOSITY terse
36-- invalid page size
37SELECT bt_page_items('aaa'::bytea);
38-- invalid special area size
39CREATE INDEX test1_a_brin ON test1 USING brin(a);
40SELECT bt_page_items(get_raw_page('test1', 0));
41SELECT bt_page_items(get_raw_page('test1_a_brin', 0));
42\set VERBOSITY default
43
44-- Tests with all-zero pages.
45SHOW block_size \gset
46SELECT bt_page_items(decode(repeat('00', :block_size), 'hex'));
47
21DROP TABLE test1;48DROP TABLE test1;
diff --git a/contrib/pageinspect/sql/gin.sql b/contrib/pageinspect/sql/gin.sql
index d516ed3..b0c20c0 100644
--- a/contrib/pageinspect/sql/gin.sql
+++ b/contrib/pageinspect/sql/gin.sql
@@ -17,3 +17,23 @@ SELECT COUNT(*) > 0
17FROM gin_leafpage_items(get_raw_page('test1_y_idx',17FROM gin_leafpage_items(get_raw_page('test1_y_idx',
18 (pg_relation_size('test1_y_idx') /18 (pg_relation_size('test1_y_idx') /
19 current_setting('block_size')::bigint)::int - 1));19 current_setting('block_size')::bigint)::int - 1));
20
21-- Failure with various modes.
22-- Suppress the DETAIL message, to allow the tests to work across various
23-- page sizes and architectures.
24\set VERBOSITY terse
25-- invalid page size
26SELECT gin_leafpage_items('aaa'::bytea);
27SELECT gin_metapage_info('bbb'::bytea);
28SELECT gin_page_opaque_info('ccc'::bytea);
29-- invalid special area size
30SELECT * FROM gin_metapage_info(get_raw_page('test1', 0));
31SELECT * FROM gin_page_opaque_info(get_raw_page('test1', 0));
32SELECT * FROM gin_leafpage_items(get_raw_page('test1', 0));
33\set VERBOSITY default
34
35-- Tests with all-zero pages.
36SHOW block_size \gset
37SELECT gin_leafpage_items(decode(repeat('00', :block_size), 'hex'));
38SELECT gin_metapage_info(decode(repeat('00', :block_size), 'hex'));
39SELECT gin_page_opaque_info(decode(repeat('00', :block_size), 'hex'));
diff --git a/contrib/pageinspect/sql/hash.sql b/contrib/pageinspect/sql/hash.sql
index 87ee549..3acdc7d 100644
--- a/contrib/pageinspect/sql/hash.sql
+++ b/contrib/pageinspect/sql/hash.sql
@@ -76,5 +76,31 @@ SELECT * FROM hash_page_items(get_raw_page('test_hash_a_idx', 3));
76SELECT * FROM hash_page_items(get_raw_page('test_hash_a_idx', 4));76SELECT * FROM hash_page_items(get_raw_page('test_hash_a_idx', 4));
77SELECT * FROM hash_page_items(get_raw_page('test_hash_a_idx', 5));77SELECT * FROM hash_page_items(get_raw_page('test_hash_a_idx', 5));
7878
79-- Failure with non-hash index
80CREATE INDEX test_hash_a_btree ON test_hash USING btree (a);
81SELECT hash_bitmap_info('test_hash_a_btree', 0);
82
83-- Failure with various modes.
84-- Suppress the DETAIL message, to allow the tests to work across various
85-- page sizes and architectures.
86\set VERBOSITY terse
87-- invalid page size
88SELECT hash_metapage_info('aaa'::bytea);
89SELECT hash_page_items('bbb'::bytea);
90SELECT hash_page_stats('ccc'::bytea);
91SELECT hash_page_type('ddd'::bytea);
92-- invalid special area size
93SELECT hash_metapage_info(get_raw_page('test_hash', 0));
94SELECT hash_page_items(get_raw_page('test_hash', 0));
95SELECT hash_page_stats(get_raw_page('test_hash', 0));
96SELECT hash_page_type(get_raw_page('test_hash', 0));
97\set VERBOSITY default
98
99-- Tests with all-zero pages.
100SHOW block_size \gset
101SELECT hash_metapage_info(decode(repeat('00', :block_size), 'hex'));
102SELECT hash_page_items(decode(repeat('00', :block_size), 'hex'));
103SELECT hash_page_stats(decode(repeat('00', :block_size), 'hex'));
104SELECT hash_page_type(decode(repeat('00', :block_size), 'hex'));
79105
80DROP TABLE test_hash;106DROP TABLE test_hash;
diff --git a/contrib/pageinspect/sql/page.sql b/contrib/pageinspect/sql/page.sql
index eb50e65..7ded5ef 100644
--- a/contrib/pageinspect/sql/page.sql
+++ b/contrib/pageinspect/sql/page.sql
@@ -49,3 +49,18 @@ select t_bits, t_data from heap_page_items(get_raw_page('test8', 0));
49select tuple_data_split('test8'::regclass, t_data, t_infomask, t_infomask2, t_bits)49select tuple_data_split('test8'::regclass, t_data, t_infomask, t_infomask2, t_bits)
50 from heap_page_items(get_raw_page('test8', 0));50 from heap_page_items(get_raw_page('test8', 0));
51drop table test8;51drop table test8;
52
53-- Failure with incorrect page size
54-- Suppress the DETAIL message, to allow the tests to work across various
55-- page sizes.
56\set VERBOSITY terse
57SELECT fsm_page_contents('aaa'::bytea);
58SELECT page_checksum('bbb'::bytea, 0);
59SELECT page_header('ccc'::bytea);
60\set VERBOSITY default
61
62-- Tests with all-zero pages.
63SHOW block_size \gset
64SELECT fsm_page_contents(decode(repeat('00', :block_size), 'hex'));
65SELECT page_header(decode(repeat('00', :block_size), 'hex'));
66SELECT page_checksum(decode(repeat('00', :block_size), 'hex'), 1);
diff --git a/contrib/pgcrypto/px.c b/contrib/pgcrypto/px.c
index 0b2d890..a7c25c3 100644
--- a/contrib/pgcrypto/px.c
+++ b/contrib/pgcrypto/px.c
@@ -208,7 +208,7 @@ combo_init(PX_Combo *cx, const uint8 *key, unsigned klen,
208 memset(ivbuf, 0, ivs);208 memset(ivbuf, 0, ivs);
209 if (ivlen > ivs)209 if (ivlen > ivs)
210 memcpy(ivbuf, iv, ivs);210 memcpy(ivbuf, iv, ivs);
211 else211 else if (ivlen > 0)
212 memcpy(ivbuf, iv, ivlen);212 memcpy(ivbuf, iv, ivlen);
213 }213 }
214214
diff --git a/contrib/postgres_fdw/deparse.c b/contrib/postgres_fdw/deparse.c
index 52c18be..ccd6937 100644
--- a/contrib/postgres_fdw/deparse.c
+++ b/contrib/postgres_fdw/deparse.c
@@ -42,6 +42,7 @@
42#include "catalog/pg_collation.h"42#include "catalog/pg_collation.h"
43#include "catalog/pg_namespace.h"43#include "catalog/pg_namespace.h"
44#include "catalog/pg_operator.h"44#include "catalog/pg_operator.h"
45#include "catalog/pg_opfamily.h"
45#include "catalog/pg_proc.h"46#include "catalog/pg_proc.h"
46#include "catalog/pg_type.h"47#include "catalog/pg_type.h"
47#include "commands/defrem.h"48#include "commands/defrem.h"
@@ -175,6 +176,8 @@ static void deparseRangeTblRef(StringInfo buf, PlannerInfo *root,
175 List **params_list);176 List **params_list);
176static void deparseAggref(Aggref *node, deparse_expr_cxt *context);177static void deparseAggref(Aggref *node, deparse_expr_cxt *context);
177static void appendGroupByClause(List *tlist, deparse_expr_cxt *context);178static void appendGroupByClause(List *tlist, deparse_expr_cxt *context);
179static void appendOrderBySuffix(Oid sortop, Oid sortcoltype, bool nulls_first,
180 deparse_expr_cxt *context);
178static void appendAggOrderBy(List *orderList, List *targetList,181static void appendAggOrderBy(List *orderList, List *targetList,
179 deparse_expr_cxt *context);182 deparse_expr_cxt *context);
180static void appendFunctionName(Oid funcid, deparse_expr_cxt *context);183static void appendFunctionName(Oid funcid, deparse_expr_cxt *context);
@@ -902,6 +905,33 @@ is_foreign_param(PlannerInfo *root,
902}905}
903906
904/*907/*
908 * Returns true if it's safe to push down the sort expression described by
909 * 'pathkey' to the foreign server.
910 */
911bool
912is_foreign_pathkey(PlannerInfo *root,
913 RelOptInfo *baserel,
914 PathKey *pathkey)
915{
916 EquivalenceClass *pathkey_ec = pathkey->pk_eclass;
917 PgFdwRelationInfo *fpinfo = (PgFdwRelationInfo *) baserel->fdw_private;
918
919 /*
920 * is_foreign_expr would detect volatile expressions as well, but checking
921 * ec_has_volatile here saves some cycles.
922 */
923 if (pathkey_ec->ec_has_volatile)
924 return false;
925
926 /* can't push down the sort if the pathkey's opfamily is not shippable */
927 if (!is_shippable(pathkey->pk_opfamily, OperatorFamilyRelationId, fpinfo))
928 return false;
929
930 /* can push if a suitable EC member exists */
931 return (find_em_for_rel(root, pathkey_ec, baserel) != NULL);
932}
933
934/*
905 * Convert type OID + typmod info into a type name we can ship to the remote935 * Convert type OID + typmod info into a type name we can ship to the remote
906 * server. Someplace else had better have verified that this type name is936 * server. Someplace else had better have verified that this type name is
907 * expected to be known on the remote end.937 * expected to be known on the remote end.
@@ -2910,44 +2940,59 @@ appendAggOrderBy(List *orderList, List *targetList, deparse_expr_cxt *context)
2910 {2940 {
2911 SortGroupClause *srt = (SortGroupClause *) lfirst(lc);2941 SortGroupClause *srt = (SortGroupClause *) lfirst(lc);
2912 Node *sortexpr;2942 Node *sortexpr;
2913 Oid sortcoltype;
2914 TypeCacheEntry *typentry;
29152943
2916 if (!first)2944 if (!first)
2917 appendStringInfoString(buf, ", ");2945 appendStringInfoString(buf, ", ");
2918 first = false;2946 first = false;
29192947
2948 /* Deparse the sort expression proper. */
2920 sortexpr = deparseSortGroupClause(srt->tleSortGroupRef, targetList,2949 sortexpr = deparseSortGroupClause(srt->tleSortGroupRef, targetList,
2921 false, context);2950 false, context);
2922 sortcoltype = exprType(sortexpr);2951 /* Add decoration as needed. */
2923 /* See whether operator is default < or > for datatype */2952 appendOrderBySuffix(srt->sortop, exprType(sortexpr), srt->nulls_first,
2924 typentry = lookup_type_cache(sortcoltype,2953 context);
2925 TYPECACHE_LT_OPR | TYPECACHE_GT_OPR);2954 }
2926 if (srt->sortop == typentry->lt_opr)2955}
2927 appendStringInfoString(buf, " ASC");
2928 else if (srt->sortop == typentry->gt_opr)
2929 appendStringInfoString(buf, " DESC");
2930 else
2931 {
2932 HeapTuple opertup;
2933 Form_pg_operator operform;
2934
2935 appendStringInfoString(buf, " USING ");
2936
2937 /* Append operator name. */
2938 opertup = SearchSysCache1(OPEROID, ObjectIdGetDatum(srt->sortop));
2939 if (!HeapTupleIsValid(opertup))
2940 elog(ERROR, "cache lookup failed for operator %u", srt->sortop);
2941 operform = (Form_pg_operator) GETSTRUCT(opertup);
2942 deparseOperatorName(buf, operform);
2943 ReleaseSysCache(opertup);
2944 }
29452956
2946 if (srt->nulls_first)2957/*
2947 appendStringInfoString(buf, " NULLS FIRST");2958 * Append the ASC, DESC, USING <OPERATOR> and NULLS FIRST / NULLS LAST parts
2948 else2959 * of an ORDER BY clause.
2949 appendStringInfoString(buf, " NULLS LAST");2960 */
2961static void
2962appendOrderBySuffix(Oid sortop, Oid sortcoltype, bool nulls_first,
2963 deparse_expr_cxt *context)
2964{
2965 StringInfo buf = context->buf;
2966 TypeCacheEntry *typentry;
2967
2968 /* See whether operator is default < or > for sort expr's datatype. */
2969 typentry = lookup_type_cache(sortcoltype,
2970 TYPECACHE_LT_OPR | TYPECACHE_GT_OPR);
2971
2972 if (sortop == typentry->lt_opr)
2973 appendStringInfoString(buf, " ASC");
2974 else if (sortop == typentry->gt_opr)
2975 appendStringInfoString(buf, " DESC");
2976 else
2977 {
2978 HeapTuple opertup;
2979 Form_pg_operator operform;
2980
2981 appendStringInfoString(buf, " USING ");
2982
2983 /* Append operator name. */
2984 opertup = SearchSysCache1(OPEROID, ObjectIdGetDatum(sortop));
2985 if (!HeapTupleIsValid(opertup))
2986 elog(ERROR, "cache lookup failed for operator %u", sortop);
2987 operform = (Form_pg_operator) GETSTRUCT(opertup);
2988 deparseOperatorName(buf, operform);
2989 ReleaseSysCache(opertup);
2950 }2990 }
2991
2992 if (nulls_first)
2993 appendStringInfoString(buf, " NULLS FIRST");
2994 else
2995 appendStringInfoString(buf, " NULLS LAST");
2951}2996}
29522997
2953/*2998/*
@@ -3030,17 +3075,17 @@ appendGroupByClause(List *tlist, deparse_expr_cxt *context)
3030}3075}
30313076
3032/*3077/*
3033 * Deparse ORDER BY clause according to the given pathkeys for given base3078 * Deparse ORDER BY clause defined by the given pathkeys.
3034 * relation. From given pathkeys expressions belonging entirely to the given3079 *
3035 * base relation are obtained and deparsed.3080 * We find a suitable pathkey expression (some earlier step
3081 * should have verified that there is one) and deparse it.
3036 */3082 */
3037static void3083static void
3038appendOrderByClause(List *pathkeys, deparse_expr_cxt *context)3084appendOrderByClause(List *pathkeys, deparse_expr_cxt *context)
3039{3085{
3040 ListCell *lcell;3086 ListCell *lcell;
3041 int nestlevel;3087 int nestlevel;
3042 char *delim = " ";3088 const char *delim = " ";
3043 RelOptInfo *baserel = context->scanrel;
3044 StringInfo buf = context->buf;3089 StringInfo buf = context->buf;
30453090
3046 /* Make sure any constants in the exprs are printed portably */3091 /* Make sure any constants in the exprs are printed portably */
@@ -3050,22 +3095,47 @@ appendOrderByClause(List *pathkeys, deparse_expr_cxt *context)
3050 foreach(lcell, pathkeys)3095 foreach(lcell, pathkeys)
3051 {3096 {
3052 PathKey *pathkey = lfirst(lcell);3097 PathKey *pathkey = lfirst(lcell);
3098 EquivalenceMember *em;
3053 Expr *em_expr;3099 Expr *em_expr;
3100 Oid oprid;
30543101
3055 em_expr = find_em_expr_for_rel(pathkey->pk_eclass, baserel);3102 em = find_em_for_rel(context->root,
3056 Assert(em_expr != NULL);3103 pathkey->pk_eclass,
3104 context->scanrel);
3105
3106 /*
3107 * We don't expect any error here; it would mean that shippability
3108 * wasn't verified earlier. For the same reason, we don't recheck
3109 * shippability of the sort operator.
3110 */
3111 if (em == NULL)
3112 elog(ERROR, "could not find pathkey item to sort");
3113
3114 em_expr = em->em_expr;
3115
3116 /*
3117 * Lookup the operator corresponding to the strategy in the opclass.
3118 * The datatype used by the opfamily is not necessarily the same as
3119 * the expression type (for array types for example).
3120 */
3121 oprid = get_opfamily_member(pathkey->pk_opfamily,
3122 em->em_datatype,
3123 em->em_datatype,
3124 pathkey->pk_strategy);
3125 if (!OidIsValid(oprid))
3126 elog(ERROR, "missing operator %d(%u,%u) in opfamily %u",
3127 pathkey->pk_strategy, em->em_datatype, em->em_datatype,
3128 pathkey->pk_opfamily);
30573129
3058 appendStringInfoString(buf, delim);3130 appendStringInfoString(buf, delim);
3059 deparseExpr(em_expr, context);3131 deparseExpr(em_expr, context);
3060 if (pathkey->pk_strategy == BTLessStrategyNumber)
3061 appendStringInfoString(buf, " ASC");
3062 else
3063 appendStringInfoString(buf, " DESC");
30643132
3065 if (pathkey->pk_nulls_first)3133 /*
3066 appendStringInfoString(buf, " NULLS FIRST");3134 * Here we need to use the expression's actual type to discover
3067 else3135 * whether the desired operator will be the default or not.
3068 appendStringInfoString(buf, " NULLS LAST");3136 */
3137 appendOrderBySuffix(oprid, exprType((Node *) em_expr),
3138 pathkey->pk_nulls_first, context);
30693139
3070 delim = ", ";3140 delim = ", ";
3071 }3141 }
diff --git a/contrib/postgres_fdw/expected/postgres_fdw.out b/contrib/postgres_fdw/expected/postgres_fdw.out
index a65b3d7..ff1786c 100644
--- a/contrib/postgres_fdw/expected/postgres_fdw.out
+++ b/contrib/postgres_fdw/expected/postgres_fdw.out
@@ -3252,6 +3252,19 @@ select array_agg(c1 order by c1 using operator(public.<^)) from ft2 where c2 = 6
3252 Remote SQL: SELECT "C 1", c2 FROM "S 1"."T 1" WHERE (("C 1" < 100)) AND ((c2 = 6))3252 Remote SQL: SELECT "C 1", c2 FROM "S 1"."T 1" WHERE (("C 1" < 100)) AND ((c2 = 6))
3253(6 rows)3253(6 rows)
32543254
3255-- This should not be pushed either.
3256explain (verbose, costs off)
3257select * from ft2 order by c1 using operator(public.<^);
3258 QUERY PLAN
3259-------------------------------------------------------------------------------
3260 Sort
3261 Output: c1, c2, c3, c4, c5, c6, c7, c8
3262 Sort Key: ft2.c1 USING <^
3263 -> Foreign Scan on public.ft2
3264 Output: c1, c2, c3, c4, c5, c6, c7, c8
3265 Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1"
3266(6 rows)
3267
3255-- Add into extension3268-- Add into extension
3256alter extension postgres_fdw add operator class my_op_class using btree;3269alter extension postgres_fdw add operator class my_op_class using btree;
3257alter extension postgres_fdw add function my_op_cmp(a int, b int);3270alter extension postgres_fdw add function my_op_cmp(a int, b int);
@@ -3277,6 +3290,16 @@ select array_agg(c1 order by c1 using operator(public.<^)) from ft2 where c2 = 6
3277 {6,16,26,36,46,56,66,76,86,96}3290 {6,16,26,36,46,56,66,76,86,96}
3278(1 row)3291(1 row)
32793292
3293-- This should be pushed too.
3294explain (verbose, costs off)
3295select * from ft2 order by c1 using operator(public.<^);
3296 QUERY PLAN
3297-----------------------------------------------------------------------------------------------------------------------------
3298 Foreign Scan on public.ft2
3299 Output: c1, c2, c3, c4, c5, c6, c7, c8
3300 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
3301(3 rows)
3302
3280-- Remove from extension3303-- Remove from extension
3281alter extension postgres_fdw drop operator class my_op_class using btree;3304alter extension postgres_fdw drop operator class my_op_class using btree;
3282alter extension postgres_fdw drop function my_op_cmp(a int, b int);3305alter extension postgres_fdw drop function my_op_cmp(a int, b int);
diff --git a/contrib/postgres_fdw/postgres_fdw.c b/contrib/postgres_fdw/postgres_fdw.c
index d37530c..632ec42 100644
--- a/contrib/postgres_fdw/postgres_fdw.c
+++ b/contrib/postgres_fdw/postgres_fdw.c
@@ -17,6 +17,7 @@
17#include "access/htup_details.h"17#include "access/htup_details.h"
18#include "access/sysattr.h"18#include "access/sysattr.h"
19#include "catalog/pg_class.h"19#include "catalog/pg_class.h"
20#include "catalog/pg_opfamily.h"
20#include "commands/defrem.h"21#include "commands/defrem.h"
21#include "commands/explain.h"22#include "commands/explain.h"
22#include "commands/vacuum.h"23#include "commands/vacuum.h"
@@ -788,8 +789,6 @@ get_useful_pathkeys_for_relation(PlannerInfo *root, RelOptInfo *rel)
788 foreach(lc, root->query_pathkeys)789 foreach(lc, root->query_pathkeys)
789 {790 {
790 PathKey *pathkey = (PathKey *) lfirst(lc);791 PathKey *pathkey = (PathKey *) lfirst(lc);
791 EquivalenceClass *pathkey_ec = pathkey->pk_eclass;
792 Expr *em_expr;
793792
794 /*793 /*
795 * The planner and executor don't have any clever strategy for794 * The planner and executor don't have any clever strategy for
@@ -797,13 +796,8 @@ get_useful_pathkeys_for_relation(PlannerInfo *root, RelOptInfo *rel)
797 * getting it to be sorted by all of those pathkeys. We'll just796 * getting it to be sorted by all of those pathkeys. We'll just
798 * end up resorting the entire data set. So, unless we can push797 * end up resorting the entire data set. So, unless we can push
799 * down all of the query pathkeys, forget it.798 * down all of the query pathkeys, forget it.
800 *
801 * is_foreign_expr would detect volatile expressions as well, but
802 * checking ec_has_volatile here saves some cycles.
803 */799 */
804 if (pathkey_ec->ec_has_volatile ||800 if (!is_foreign_pathkey(root, rel, pathkey))
805 !(em_expr = find_em_expr_for_rel(pathkey_ec, rel)) ||
806 !is_foreign_expr(root, rel, em_expr))
807 {801 {
808 query_pathkeys_ok = false;802 query_pathkeys_ok = false;
809 break;803 break;
@@ -847,16 +841,19 @@ get_useful_pathkeys_for_relation(PlannerInfo *root, RelOptInfo *rel)
847 foreach(lc, useful_eclass_list)841 foreach(lc, useful_eclass_list)
848 {842 {
849 EquivalenceClass *cur_ec = lfirst(lc);843 EquivalenceClass *cur_ec = lfirst(lc);
850 Expr *em_expr;
851 PathKey *pathkey;844 PathKey *pathkey;
852845
853 /* If redundant with what we did above, skip it. */846 /* If redundant with what we did above, skip it. */
854 if (cur_ec == query_ec)847 if (cur_ec == query_ec)
855 continue;848 continue;
856849
850 /* Can't push down the sort if the EC's opfamily is not shippable. */
851 if (!is_shippable(linitial_oid(cur_ec->ec_opfamilies),
852 OperatorFamilyRelationId, fpinfo))
853 continue;
854
857 /* If no pushable expression for this rel, skip it. */855 /* If no pushable expression for this rel, skip it. */
858 em_expr = find_em_expr_for_rel(cur_ec, rel);856 if (find_em_for_rel(root, cur_ec, rel) == NULL)
859 if (em_expr == NULL || !is_foreign_expr(root, rel, em_expr))
860 continue;857 continue;
861858
862 /* Looks like we can generate a pathkey, so let's do it. */859 /* Looks like we can generate a pathkey, so let's do it. */
@@ -5247,30 +5244,35 @@ conversion_error_callback(void *arg)
5247}5244}
52485245
5249/*5246/*
5250 * Find an equivalence class member expression, all of whose Vars, come from5247 * Given an EquivalenceClass and a foreign relation, find an EC member
5251 * the indicated relation.5248 * that can be used to sort the relation remotely according to a pathkey
5249 * using this EC.
5250 *
5251 * If there is more than one suitable candidate, return an arbitrary
5252 * one of them. If there is none, return NULL.
5253 *
5254 * This checks that the EC member expression uses only Vars from the given
5255 * rel and is shippable. Caller must separately verify that the pathkey's
5256 * ordering operator is shippable.
5252 */5257 */
5253extern Expr *5258EquivalenceMember *
5254find_em_expr_for_rel(EquivalenceClass *ec, RelOptInfo *rel)5259find_em_for_rel(PlannerInfo *root, EquivalenceClass *ec, RelOptInfo *rel)
5255{5260{
5256 ListCell *lc_em;5261 ListCell *lc;
52575262
5258 foreach(lc_em, ec->ec_members)5263 foreach(lc, ec->ec_members)
5259 {5264 {
5260 EquivalenceMember *em = lfirst(lc_em);5265 EquivalenceMember *em = (EquivalenceMember *) lfirst(lc);
52615266
5267 /*
5268 * Note we require !bms_is_empty, else we'd accept constant
5269 * expressions which are not suitable for the purpose.
5270 */
5262 if (bms_is_subset(em->em_relids, rel->relids) &&5271 if (bms_is_subset(em->em_relids, rel->relids) &&
5263 !bms_is_empty(em->em_relids))5272 !bms_is_empty(em->em_relids) &&
5264 {5273 is_foreign_expr(root, rel, em->em_expr))
5265 /*5274 return em;
5266 * If there is more than one equivalence member whose Vars are
5267 * taken entirely from this relation, we'll be content to choose
5268 * any one of those.
5269 */
5270 return em->em_expr;
5271 }
5272 }5275 }
52735276
5274 /* We didn't find any suitable equivalence class expression */
5275 return NULL;5277 return NULL;
5276}5278}
diff --git a/contrib/postgres_fdw/postgres_fdw.h b/contrib/postgres_fdw/postgres_fdw.h
index 9f7f307..ecca7bc 100644
--- a/contrib/postgres_fdw/postgres_fdw.h
+++ b/contrib/postgres_fdw/postgres_fdw.h
@@ -143,6 +143,9 @@ extern bool is_foreign_expr(PlannerInfo *root,
143extern bool is_foreign_param(PlannerInfo *root,143extern bool is_foreign_param(PlannerInfo *root,
144 RelOptInfo *baserel,144 RelOptInfo *baserel,
145 Expr *expr);145 Expr *expr);
146extern bool is_foreign_pathkey(PlannerInfo *root,
147 RelOptInfo *baserel,
148 PathKey *pathkey);
146extern void deparseInsertSql(StringInfo buf, PlannerInfo *root,149extern void deparseInsertSql(StringInfo buf, PlannerInfo *root,
147 Index rtindex, Relation rel,150 Index rtindex, Relation rel,
148 List *targetAttrs, bool doNothing, List *returningList,151 List *targetAttrs, bool doNothing, List *returningList,
@@ -173,7 +176,9 @@ extern void deparseAnalyzeSizeSql(StringInfo buf, Relation rel);
173extern void deparseAnalyzeSql(StringInfo buf, Relation rel,176extern void deparseAnalyzeSql(StringInfo buf, Relation rel,
174 List **retrieved_attrs);177 List **retrieved_attrs);
175extern void deparseStringLiteral(StringInfo buf, const char *val);178extern void deparseStringLiteral(StringInfo buf, const char *val);
176extern Expr *find_em_expr_for_rel(EquivalenceClass *ec, RelOptInfo *rel);179extern EquivalenceMember *find_em_for_rel(PlannerInfo *root,
180 EquivalenceClass *ec,
181 RelOptInfo *rel);
177extern List *build_tlist_to_deparse(RelOptInfo *foreignrel);182extern List *build_tlist_to_deparse(RelOptInfo *foreignrel);
178extern void deparseSelectStmtForRel(StringInfo buf, PlannerInfo *root,183extern void deparseSelectStmtForRel(StringInfo buf, PlannerInfo *root,
179 RelOptInfo *foreignrel, List *tlist,184 RelOptInfo *foreignrel, List *tlist,
diff --git a/contrib/postgres_fdw/sql/postgres_fdw.sql b/contrib/postgres_fdw/sql/postgres_fdw.sql
index bf8cc66..d14720a 100644
--- a/contrib/postgres_fdw/sql/postgres_fdw.sql
+++ b/contrib/postgres_fdw/sql/postgres_fdw.sql
@@ -819,6 +819,10 @@ create operator class my_op_class for type int using btree family my_op_family a
819explain (verbose, costs off)819explain (verbose, costs off)
820select array_agg(c1 order by c1 using operator(public.<^)) from ft2 where c2 = 6 and c1 < 100 group by c2;820select array_agg(c1 order by c1 using operator(public.<^)) from ft2 where c2 = 6 and c1 < 100 group by c2;
821821
822-- This should not be pushed either.
823explain (verbose, costs off)
824select * from ft2 order by c1 using operator(public.<^);
825
822-- Add into extension826-- Add into extension
823alter extension postgres_fdw add operator class my_op_class using btree;827alter extension postgres_fdw add operator class my_op_class using btree;
824alter extension postgres_fdw add function my_op_cmp(a int, b int);828alter extension postgres_fdw add function my_op_cmp(a int, b int);
@@ -833,6 +837,10 @@ explain (verbose, costs off)
833select array_agg(c1 order by c1 using operator(public.<^)) from ft2 where c2 = 6 and c1 < 100 group by c2;837select array_agg(c1 order by c1 using operator(public.<^)) from ft2 where c2 = 6 and c1 < 100 group by c2;
834select array_agg(c1 order by c1 using operator(public.<^)) from ft2 where c2 = 6 and c1 < 100 group by c2;838select array_agg(c1 order by c1 using operator(public.<^)) from ft2 where c2 = 6 and c1 < 100 group by c2;
835839
840-- This should be pushed too.
841explain (verbose, costs off)
842select * from ft2 order by c1 using operator(public.<^);
843
836-- Remove from extension844-- Remove from extension
837alter extension postgres_fdw drop operator class my_op_class using btree;845alter extension postgres_fdw drop operator class my_op_class using btree;
838alter extension postgres_fdw drop function my_op_cmp(a int, b int);846alter extension postgres_fdw drop function my_op_cmp(a int, b int);
diff --git a/contrib/seg/segparse.c b/contrib/seg/segparse.c
index 4805572..43f4681 100644
--- a/contrib/seg/segparse.c
+++ b/contrib/seg/segparse.c
@@ -1,8 +1,8 @@
1/* A Bison parser, made by GNU Bison 3.3.2. */1/* A Bison parser, made by GNU Bison 3.7.5. */
22
3/* Bison implementation for Yacc-like parsers in C3/* Bison implementation for Yacc-like parsers in C
44
5 Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,5 Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
6 Inc.6 Inc.
77
8 This program is free software: you can redistribute it and/or modify8 This program is free software: you can redistribute it and/or modify
@@ -34,6 +34,10 @@
34/* C LALR(1) parser skeleton written by Richard Stallman, by34/* C LALR(1) parser skeleton written by Richard Stallman, by
35 simplifying the original so-called "semantic" parser. */35 simplifying the original so-called "semantic" parser. */
3636
37/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38 especially those whose name start with YY_ or yy_. They are
39 private implementation details that can be changed or removed. */
40
37/* All symbols defined below should begin with yy or YY, to avoid41/* All symbols defined below should begin with yy or YY, to avoid
38 infringing on user name space. This should be done even for local42 infringing on user name space. This should be done even for local
39 variables, as they might otherwise be expanded by user macros.43 variables, as they might otherwise be expanded by user macros.
@@ -41,14 +45,11 @@
41 define necessary library symbols; they are noted "INFRINGES ON45 define necessary library symbols; they are noted "INFRINGES ON
42 USER NAME SPACE" below. */46 USER NAME SPACE" below. */
4347
44/* Undocumented macros, especially those whose name start with YY_,48/* Identify Bison output, and Bison version. */
45 are private implementation details. Do not rely on them. */49#define YYBISON 30705
46
47/* Identify Bison output. */
48#define YYBISON 1
4950
50/* Bison version. */51/* Bison version string. */
51#define YYBISON_VERSION "3.3.2"52#define YYBISON_VERSION "3.7.5"
5253
53/* Skeleton name. */54/* Skeleton name. */
54#define YYSKELETON_NAME "yacc.c"55#define YYSKELETON_NAME "yacc.c"
@@ -69,12 +70,11 @@
69#define yyerror seg_yyerror70#define yyerror seg_yyerror
70#define yydebug seg_yydebug71#define yydebug seg_yydebug
71#define yynerrs seg_yynerrs72#define yynerrs seg_yynerrs
72
73#define yylval seg_yylval73#define yylval seg_yylval
74#define yychar seg_yychar74#define yychar seg_yychar
7575
76/* First part of user prologue. */76/* First part of user prologue. */
77#line 1 "segparse.y" /* yacc.c:337 */77#line 1 "segparse.y"
7878
79/* contrib/seg/segparse.y */79/* contrib/seg/segparse.y */
8080
@@ -109,7 +109,17 @@ static char strbuf[25] = {
109};109};
110110
111111
112#line 113 "segparse.c" /* yacc.c:337 */112#line 113 "segparse.c"
113
114# ifndef YY_CAST
115# ifdef __cplusplus
116# define YY_CAST(Type, Val) static_cast<Type> (Val)
117# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
118# else
119# define YY_CAST(Type, Val) ((Type) (Val))
120# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
121# endif
122# endif
113# ifndef YY_NULLPTR123# ifndef YY_NULLPTR
114# if defined __cplusplus124# if defined __cplusplus
115# if 201103L <= __cplusplus125# if 201103L <= __cplusplus
@@ -122,14 +132,6 @@ static char strbuf[25] = {
122# endif132# endif
123# endif133# endif
124134
125/* Enabling verbose error messages. */
126#ifdef YYERROR_VERBOSE
127# undef YYERROR_VERBOSE
128# define YYERROR_VERBOSE 1
129#else
130# define YYERROR_VERBOSE 0
131#endif
132
133135
134/* Debug traces. */136/* Debug traces. */
135#ifndef YYDEBUG137#ifndef YYDEBUG
@@ -139,24 +141,28 @@ static char strbuf[25] = {
139extern int seg_yydebug;141extern int seg_yydebug;
140#endif142#endif
141143
142/* Token type. */144/* Token kinds. */
143#ifndef YYTOKENTYPE145#ifndef YYTOKENTYPE
144# define YYTOKENTYPE146# define YYTOKENTYPE
145 enum yytokentype147 enum yytokentype
146 {148 {
147 SEGFLOAT = 258,149 YYEMPTY = -2,
148 RANGE = 259,150 YYEOF = 0, /* "end of file" */
149 PLUMIN = 260,151 YYerror = 256, /* error */
150 EXTENSION = 261152 YYUNDEF = 257, /* "invalid token" */
153 SEGFLOAT = 258, /* SEGFLOAT */
154 RANGE = 259, /* RANGE */
155 PLUMIN = 260, /* PLUMIN */
156 EXTENSION = 261 /* EXTENSION */
151 };157 };
158 typedef enum yytokentype yytoken_kind_t;
152#endif159#endif
153160
154/* Value type. */161/* Value type. */
155#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED162#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
156
157union YYSTYPE163union YYSTYPE
158{164{
159#line 41 "segparse.y" /* yacc.c:352 */165#line 41 "segparse.y"
160166
161 struct BND {167 struct BND {
162 float val;168 float val;
@@ -165,9 +171,9 @@ union YYSTYPE
165 } bnd;171 } bnd;
166 char * text;172 char * text;
167173
168#line 169 "segparse.c" /* yacc.c:352 */174#line 175 "segparse.c"
169};
170175
176};
171typedef union YYSTYPE YYSTYPE;177typedef union YYSTYPE YYSTYPE;
172# define YYSTYPE_IS_TRIVIAL 1178# define YYSTYPE_IS_TRIVIAL 1
173# define YYSTYPE_IS_DECLARED 1179# define YYSTYPE_IS_DECLARED 1
@@ -179,6 +185,24 @@ extern YYSTYPE seg_yylval;
179int seg_yyparse (SEG *result);185int seg_yyparse (SEG *result);
180186
181187
188/* Symbol kind. */
189enum yysymbol_kind_t
190{
191 YYSYMBOL_YYEMPTY = -2,
192 YYSYMBOL_YYEOF = 0, /* "end of file" */
193 YYSYMBOL_YYerror = 1, /* error */
194 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
195 YYSYMBOL_SEGFLOAT = 3, /* SEGFLOAT */
196 YYSYMBOL_RANGE = 4, /* RANGE */
197 YYSYMBOL_PLUMIN = 5, /* PLUMIN */
198 YYSYMBOL_EXTENSION = 6, /* EXTENSION */
199 YYSYMBOL_YYACCEPT = 7, /* $accept */
200 YYSYMBOL_range = 8, /* range */
201 YYSYMBOL_boundary = 9, /* boundary */
202 YYSYMBOL_deviation = 10 /* deviation */
203};
204typedef enum yysymbol_kind_t yysymbol_kind_t;
205
182206
183207
184208
@@ -186,28 +210,87 @@ int seg_yyparse (SEG *result);
186# undef short210# undef short
187#endif211#endif
188212
189#ifdef YYTYPE_UINT8213/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
190typedef YYTYPE_UINT8 yytype_uint8;214 <limits.h> and (if available) <stdint.h> are included
191#else215 so that the code can choose integer types of a good width. */
192typedef unsigned char yytype_uint8;216
217#ifndef __PTRDIFF_MAX__
218# include <limits.h> /* INFRINGES ON USER NAME SPACE */
219# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
220# include <stdint.h> /* INFRINGES ON USER NAME SPACE */
221# define YY_STDINT_H
222# endif
193#endif223#endif
194224
195#ifdef YYTYPE_INT8225/* Narrow types that promote to a signed type and that can represent a
196typedef YYTYPE_INT8 yytype_int8;226 signed or unsigned integer of at least N bits. In tables they can
227 save space and decrease cache pressure. Promoting to a signed type
228 helps avoid bugs in integer arithmetic. */
229
230#ifdef __INT_LEAST8_MAX__
231typedef __INT_LEAST8_TYPE__ yytype_int8;
232#elif defined YY_STDINT_H
233typedef int_least8_t yytype_int8;
197#else234#else
198typedef signed char yytype_int8;235typedef signed char yytype_int8;
199#endif236#endif
200237
201#ifdef YYTYPE_UINT16238#ifdef __INT_LEAST16_MAX__
202typedef YYTYPE_UINT16 yytype_uint16;239typedef __INT_LEAST16_TYPE__ yytype_int16;
240#elif defined YY_STDINT_H
241typedef int_least16_t yytype_int16;
203#else242#else
204typedef unsigned short yytype_uint16;243typedef short yytype_int16;
244#endif
245
246/* Work around bug in HP-UX 11.23, which defines these macros
247 incorrectly for preprocessor constants. This workaround can likely
248 be removed in 2023, as HPE has promised support for HP-UX 11.23
249 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
250 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
251#ifdef __hpux
252# undef UINT_LEAST8_MAX
253# undef UINT_LEAST16_MAX
254# define UINT_LEAST8_MAX 255
255# define UINT_LEAST16_MAX 65535
256#endif
257
258#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
259typedef __UINT_LEAST8_TYPE__ yytype_uint8;
260#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
261 && UINT_LEAST8_MAX <= INT_MAX)
262typedef uint_least8_t yytype_uint8;
263#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
264typedef unsigned char yytype_uint8;
265#else
266typedef short yytype_uint8;
205#endif267#endif
206268
207#ifdef YYTYPE_INT16269#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
208typedef YYTYPE_INT16 yytype_int16;270typedef __UINT_LEAST16_TYPE__ yytype_uint16;
271#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
272 && UINT_LEAST16_MAX <= INT_MAX)
273typedef uint_least16_t yytype_uint16;
274#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
275typedef unsigned short yytype_uint16;
209#else276#else
210typedef short yytype_int16;277typedef int yytype_uint16;
278#endif
279
280#ifndef YYPTRDIFF_T
281# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
282# define YYPTRDIFF_T __PTRDIFF_TYPE__
283# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
284# elif defined PTRDIFF_MAX
285# ifndef ptrdiff_t
286# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
287# endif
288# define YYPTRDIFF_T ptrdiff_t
289# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
290# else
291# define YYPTRDIFF_T long
292# define YYPTRDIFF_MAXIMUM LONG_MAX
293# endif
211#endif294#endif
212295
213#ifndef YYSIZE_T296#ifndef YYSIZE_T
@@ -215,7 +298,7 @@ typedef short yytype_int16;
215# define YYSIZE_T __SIZE_TYPE__298# define YYSIZE_T __SIZE_TYPE__
216# elif defined size_t299# elif defined size_t
217# define YYSIZE_T size_t300# define YYSIZE_T size_t
218# elif ! defined YYSIZE_T301# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
219# include <stddef.h> /* INFRINGES ON USER NAME SPACE */302# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
220# define YYSIZE_T size_t303# define YYSIZE_T size_t
221# else304# else
@@ -223,7 +306,20 @@ typedef short yytype_int16;
223# endif306# endif
224#endif307#endif
225308
226#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)309#define YYSIZE_MAXIMUM \
310 YY_CAST (YYPTRDIFF_T, \
311 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
312 ? YYPTRDIFF_MAXIMUM \
313 : YY_CAST (YYSIZE_T, -1)))
314
315#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
316
317
318/* Stored state numbers (used for stacks). */
319typedef yytype_int8 yy_state_t;
320
321/* State numbers in computations. */
322typedef int yy_state_fast_t;
227323
228#ifndef YY_324#ifndef YY_
229# if defined YYENABLE_NLS && YYENABLE_NLS325# if defined YYENABLE_NLS && YYENABLE_NLS
@@ -237,38 +333,37 @@ typedef short yytype_int16;
237# endif333# endif
238#endif334#endif
239335
240#ifndef YY_ATTRIBUTE
241# if (defined __GNUC__ \
242 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
243 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
244# define YY_ATTRIBUTE(Spec) __attribute__(Spec)
245# else
246# define YY_ATTRIBUTE(Spec) /* empty */
247# endif
248#endif
249336
250#ifndef YY_ATTRIBUTE_PURE337#ifndef YY_ATTRIBUTE_PURE
251# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))338# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
339# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
340# else
341# define YY_ATTRIBUTE_PURE
342# endif
252#endif343#endif
253344
254#ifndef YY_ATTRIBUTE_UNUSED345#ifndef YY_ATTRIBUTE_UNUSED
255# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))346# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
347# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
348# else
349# define YY_ATTRIBUTE_UNUSED
350# endif
256#endif351#endif
257352
258/* Suppress unused-variable warnings by "using" E. */353/* Suppress unused-variable warnings by "using" E. */
259#if ! defined lint || defined __GNUC__354#if ! defined lint || defined __GNUC__
260# define YYUSE(E) ((void) (E))355# define YY_USE(E) ((void) (E))
261#else356#else
262# define YYUSE(E) /* empty */357# define YY_USE(E) /* empty */
263#endif358#endif
264359
265#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__360#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
266/* Suppress an incorrect diagnostic about yylval being uninitialized. */361/* Suppress an incorrect diagnostic about yylval being uninitialized. */
267# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \362# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
268 _Pragma ("GCC diagnostic push") \363 _Pragma ("GCC diagnostic push") \
269 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\364 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
270 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")365 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
271# define YY_IGNORE_MAYBE_UNINITIALIZED_END \366# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
272 _Pragma ("GCC diagnostic pop")367 _Pragma ("GCC diagnostic pop")
273#else368#else
274# define YY_INITIAL_VALUE(Value) Value369# define YY_INITIAL_VALUE(Value) Value
@@ -281,8 +376,22 @@ typedef short yytype_int16;
281# define YY_INITIAL_VALUE(Value) /* Nothing. */376# define YY_INITIAL_VALUE(Value) /* Nothing. */
282#endif377#endif
283378
379#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
380# define YY_IGNORE_USELESS_CAST_BEGIN \
381 _Pragma ("GCC diagnostic push") \
382 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
383# define YY_IGNORE_USELESS_CAST_END \
384 _Pragma ("GCC diagnostic pop")
385#endif
386#ifndef YY_IGNORE_USELESS_CAST_BEGIN
387# define YY_IGNORE_USELESS_CAST_BEGIN
388# define YY_IGNORE_USELESS_CAST_END
389#endif
390
391
392#define YY_ASSERT(E) ((void) (0 && (E)))
284393
285#if ! defined yyoverflow || YYERROR_VERBOSE394#if !defined yyoverflow
286395
287/* The parser invokes alloca or malloc; define the necessary symbols. */396/* The parser invokes alloca or malloc; define the necessary symbols. */
288397
@@ -347,8 +456,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
347# endif456# endif
348# endif457# endif
349# endif458# endif
350#endif /* ! defined yyoverflow || YYERROR_VERBOSE */459#endif /* !defined yyoverflow */
351
352460
353#if (! defined yyoverflow \461#if (! defined yyoverflow \
354 && (! defined __cplusplus \462 && (! defined __cplusplus \
@@ -357,17 +465,17 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
357/* A type that is properly aligned for any stack member. */465/* A type that is properly aligned for any stack member. */
358union yyalloc466union yyalloc
359{467{
360 yytype_int16 yyss_alloc;468 yy_state_t yyss_alloc;
361 YYSTYPE yyvs_alloc;469 YYSTYPE yyvs_alloc;
362};470};
363471
364/* The size of the maximum gap between one aligned stack and the next. */472/* The size of the maximum gap between one aligned stack and the next. */
365# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)473# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
366474
367/* The size of an array large to enough to hold all stacks, each with475/* The size of an array large to enough to hold all stacks, each with
368 N elements. */476 N elements. */
369# define YYSTACK_BYTES(N) \477# define YYSTACK_BYTES(N) \
370 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \478 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
371 + YYSTACK_GAP_MAXIMUM)479 + YYSTACK_GAP_MAXIMUM)
372480
373# define YYCOPY_NEEDED 1481# define YYCOPY_NEEDED 1
@@ -380,11 +488,11 @@ union yyalloc
380# define YYSTACK_RELOCATE(Stack_alloc, Stack) \488# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
381 do \489 do \
382 { \490 { \
383 YYSIZE_T yynewbytes; \491 YYPTRDIFF_T yynewbytes; \
384 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \492 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
385 Stack = &yyptr->Stack_alloc; \493 Stack = &yyptr->Stack_alloc; \
386 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \494 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
387 yyptr += yynewbytes / sizeof (*yyptr); \495 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
388 } \496 } \
389 while (0)497 while (0)
390498
@@ -396,12 +504,12 @@ union yyalloc
396# ifndef YYCOPY504# ifndef YYCOPY
397# if defined __GNUC__ && 1 < __GNUC__505# if defined __GNUC__ && 1 < __GNUC__
398# define YYCOPY(Dst, Src, Count) \506# define YYCOPY(Dst, Src, Count) \
399 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))507 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
400# else508# else
401# define YYCOPY(Dst, Src, Count) \509# define YYCOPY(Dst, Src, Count) \
402 do \510 do \
403 { \511 { \
404 YYSIZE_T yyi; \512 YYPTRDIFF_T yyi; \
405 for (yyi = 0; yyi < (Count); yyi++) \513 for (yyi = 0; yyi < (Count); yyi++) \
406 (Dst)[yyi] = (Src)[yyi]; \514 (Dst)[yyi] = (Src)[yyi]; \
407 } \515 } \
@@ -424,17 +532,20 @@ union yyalloc
424/* YYNSTATES -- Number of states. */532/* YYNSTATES -- Number of states. */
425#define YYNSTATES 14533#define YYNSTATES 14
426534
427#define YYUNDEFTOK 2535/* YYMAXUTOK -- Last valid token kind. */
428#define YYMAXUTOK 261536#define YYMAXUTOK 261
429537
538
430/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM539/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
431 as returned by yylex, with out-of-bounds checking. */540 as returned by yylex, with out-of-bounds checking. */
432#define YYTRANSLATE(YYX) \541#define YYTRANSLATE(YYX) \
433 ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)542 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
543 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
544 : YYSYMBOL_YYUNDEF)
434545
435/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM546/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
436 as returned by yylex. */547 as returned by yylex. */
437static const yytype_uint8 yytranslate[] =548static const yytype_int8 yytranslate[] =
438{549{
439 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,550 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
440 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,551 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -473,33 +584,46 @@ static const yytype_uint8 yyrline[] =
473};584};
474#endif585#endif
475586
476#if YYDEBUG || YYERROR_VERBOSE || 0587/** Accessing symbol of state STATE. */
588#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
589
590#if YYDEBUG || 0
591/* The user-facing name of the symbol whose (internal) number is
592 YYSYMBOL. No bounds checking. */
593static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
594
477/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.595/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
478 First, the terminals, then, starting at YYNTOKENS, nonterminals. */596 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
479static const char *const yytname[] =597static const char *const yytname[] =
480{598{
481 "$end", "error", "$undefined", "SEGFLOAT", "RANGE", "PLUMIN",599 "\"end of file\"", "error", "\"invalid token\"", "SEGFLOAT", "RANGE",
482 "EXTENSION", "$accept", "range", "boundary", "deviation", YY_NULLPTR600 "PLUMIN", "EXTENSION", "$accept", "range", "boundary", "deviation", YY_NULLPTR
483};601};
602
603static const char *
604yysymbol_name (yysymbol_kind_t yysymbol)
605{
606 return yytname[yysymbol];
607}
484#endif608#endif
485609
486# ifdef YYPRINT610#ifdef YYPRINT
487/* YYTOKNUM[NUM] -- (External) token number corresponding to the611/* YYTOKNUM[NUM] -- (External) token number corresponding to the
488 (internal) symbol number NUM (which must be that of a token). */612 (internal) symbol number NUM (which must be that of a token). */
489static const yytype_uint16 yytoknum[] =613static const yytype_int16 yytoknum[] =
490{614{
491 0, 256, 257, 258, 259, 260, 261615 0, 256, 257, 258, 259, 260, 261
492};616};
493# endif617#endif
494618
495#define YYPACT_NINF -3619#define YYPACT_NINF (-3)
496620
497#define yypact_value_is_default(Yystate) \621#define yypact_value_is_default(Yyn) \
498 (!!((Yystate) == (-3)))622 ((Yyn) == YYPACT_NINF)
499623
500#define YYTABLE_NINF -1624#define YYTABLE_NINF (-1)
501625
502#define yytable_value_is_error(Yytable_value) \626#define yytable_value_is_error(Yyn) \
503 0627 0
504628
505 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing629 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -513,7 +637,7 @@ static const yytype_int8 yypact[] =
513 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.637 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
514 Performed when YYTABLE does not specify something else to do. Zero638 Performed when YYTABLE does not specify something else to do. Zero
515 means the default is an error. */639 means the default is an error. */
516static const yytype_uint8 yydefact[] =640static const yytype_int8 yydefact[] =
517{641{
518 0, 7, 0, 0, 0, 6, 5, 8, 1, 4,642 0, 7, 0, 0, 0, 6, 5, 8, 1, 4,
519 0, 3, 9, 2643 0, 3, 9, 2
@@ -528,13 +652,13 @@ static const yytype_int8 yypgoto[] =
528 /* YYDEFGOTO[NTERM-NUM]. */652 /* YYDEFGOTO[NTERM-NUM]. */
529static const yytype_int8 yydefgoto[] =653static const yytype_int8 yydefgoto[] =
530{654{
531 -1, 4, 5, 13655 0, 4, 5, 13
532};656};
533657
534 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If658 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
535 positive, shift that token. If negative, reduce the rule whose659 positive, shift that token. If negative, reduce the rule whose
536 number is the opposite. If YYTABLE_NINF, syntax error. */660 number is the opposite. If YYTABLE_NINF, syntax error. */
537static const yytype_uint8 yytable[] =661static const yytype_int8 yytable[] =
538{662{
539 6, 0, 1, 2, 7, 3, 1, 11, 8, 3,663 6, 0, 1, 2, 7, 3, 1, 11, 8, 3,
540 9, 10, 12664 9, 10, 12
@@ -548,29 +672,29 @@ static const yytype_int8 yycheck[] =
548672
549 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing673 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
550 symbol of state STATE-NUM. */674 symbol of state STATE-NUM. */
551static const yytype_uint8 yystos[] =675static const yytype_int8 yystos[] =
552{676{
553 0, 3, 4, 6, 8, 9, 9, 3, 0, 4,677 0, 3, 4, 6, 8, 9, 9, 3, 0, 4,
554 5, 9, 3, 10678 5, 9, 3, 10
555};679};
556680
557 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */681 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
558static const yytype_uint8 yyr1[] =682static const yytype_int8 yyr1[] =
559{683{
560 0, 7, 8, 8, 8, 8, 8, 9, 9, 10684 0, 7, 8, 8, 8, 8, 8, 9, 9, 10
561};685};
562686
563 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */687 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
564static const yytype_uint8 yyr2[] =688static const yytype_int8 yyr2[] =
565{689{
566 0, 2, 3, 3, 2, 2, 1, 1, 2, 1690 0, 2, 3, 3, 2, 2, 1, 1, 2, 1
567};691};
568692
569693
694enum { YYENOMEM = -2 };
695
570#define yyerrok (yyerrstatus = 0)696#define yyerrok (yyerrstatus = 0)
571#define yyclearin (yychar = YYEMPTY)697#define yyclearin (yychar = YYEMPTY)
572#define YYEMPTY (-2)
573#define YYEOF 0
574698
575#define YYACCEPT goto yyacceptlab699#define YYACCEPT goto yyacceptlab
576#define YYABORT goto yyabortlab700#define YYABORT goto yyabortlab
@@ -596,10 +720,9 @@ static const yytype_uint8 yyr2[] =
596 } \720 } \
597 while (0)721 while (0)
598722
599/* Error token number */723/* Backward compatibility with an undocumented macro.
600#define YYTERROR 1724 Use YYerror or YYUNDEF. */
601#define YYERRCODE 256725#define YYERRCODE YYUNDEF
602
603726
604727
605/* Enable debugging if requested. */728/* Enable debugging if requested. */
@@ -617,18 +740,18 @@ do { \
617} while (0)740} while (0)
618741
619/* This macro is provided for backward compatibility. */742/* This macro is provided for backward compatibility. */
620#ifndef YY_LOCATION_PRINT743# ifndef YY_LOCATION_PRINT
621# define YY_LOCATION_PRINT(File, Loc) ((void) 0)744# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
622#endif745# endif
623746
624747
625# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \748# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
626do { \749do { \
627 if (yydebug) \750 if (yydebug) \
628 { \751 { \
629 YYFPRINTF (stderr, "%s ", Title); \752 YYFPRINTF (stderr, "%s ", Title); \
630 yy_symbol_print (stderr, \753 yy_symbol_print (stderr, \
631 Type, Value, result); \754 Kind, Value, result); \
632 YYFPRINTF (stderr, "\n"); \755 YYFPRINTF (stderr, "\n"); \
633 } \756 } \
634} while (0)757} while (0)
@@ -639,18 +762,21 @@ do { \
639`-----------------------------------*/762`-----------------------------------*/
640763
641static void764static void
642yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, SEG *result)765yy_symbol_value_print (FILE *yyo,
766 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, SEG *result)
643{767{
644 FILE *yyoutput = yyo;768 FILE *yyoutput = yyo;
645 YYUSE (yyoutput);769 YY_USE (yyoutput);
646 YYUSE (result);770 YY_USE (result);
647 if (!yyvaluep)771 if (!yyvaluep)
648 return;772 return;
649# ifdef YYPRINT773# ifdef YYPRINT
650 if (yytype < YYNTOKENS)774 if (yykind < YYNTOKENS)
651 YYPRINT (yyo, yytoknum[yytype], *yyvaluep);775 YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
652# endif776# endif
653 YYUSE (yytype);777 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
778 YY_USE (yykind);
779 YY_IGNORE_MAYBE_UNINITIALIZED_END
654}780}
655781
656782
@@ -659,12 +785,13 @@ yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, SE
659`---------------------------*/785`---------------------------*/
660786
661static void787static void
662yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, SEG *result)788yy_symbol_print (FILE *yyo,
789 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, SEG *result)
663{790{
664 YYFPRINTF (yyo, "%s %s (",791 YYFPRINTF (yyo, "%s %s (",
665 yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);792 yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
666793
667 yy_symbol_value_print (yyo, yytype, yyvaluep, result);794 yy_symbol_value_print (yyo, yykind, yyvaluep, result);
668 YYFPRINTF (yyo, ")");795 YYFPRINTF (yyo, ")");
669}796}
670797
@@ -674,7 +801,7 @@ yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, SEG *res
674`------------------------------------------------------------------*/801`------------------------------------------------------------------*/
675802
676static void803static void
677yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)804yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
678{805{
679 YYFPRINTF (stderr, "Stack now");806 YYFPRINTF (stderr, "Stack now");
680 for (; yybottom <= yytop; yybottom++)807 for (; yybottom <= yytop; yybottom++)
@@ -697,21 +824,21 @@ do { \
697`------------------------------------------------*/824`------------------------------------------------*/
698825
699static void826static void
700yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, SEG *result)827yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
828 int yyrule, SEG *result)
701{829{
702 unsigned long yylno = yyrline[yyrule];830 int yylno = yyrline[yyrule];
703 int yynrhs = yyr2[yyrule];831 int yynrhs = yyr2[yyrule];
704 int yyi;832 int yyi;
705 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",833 YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
706 yyrule - 1, yylno);834 yyrule - 1, yylno);
707 /* The symbols being reduced. */835 /* The symbols being reduced. */
708 for (yyi = 0; yyi < yynrhs; yyi++)836 for (yyi = 0; yyi < yynrhs; yyi++)
709 {837 {
710 YYFPRINTF (stderr, " $%d = ", yyi + 1);838 YYFPRINTF (stderr, " $%d = ", yyi + 1);
711 yy_symbol_print (stderr,839 yy_symbol_print (stderr,
712 yystos[yyssp[yyi + 1 - yynrhs]],840 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
713 &yyvsp[(yyi + 1) - (yynrhs)]841 &yyvsp[(yyi + 1) - (yynrhs)], result);
714 , result);
715 YYFPRINTF (stderr, "\n");842 YYFPRINTF (stderr, "\n");
716 }843 }
717}844}
@@ -726,8 +853,8 @@ do { \
726 multiple parsers can coexist. */853 multiple parsers can coexist. */
727int yydebug;854int yydebug;
728#else /* !YYDEBUG */855#else /* !YYDEBUG */
729# define YYDPRINTF(Args)856# define YYDPRINTF(Args) ((void) 0)
730# define YY_SYMBOL_PRINT(Title, Type, Value, Location)857# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
731# define YY_STACK_PRINT(Bottom, Top)858# define YY_STACK_PRINT(Bottom, Top)
732# define YY_REDUCE_PRINT(Rule)859# define YY_REDUCE_PRINT(Rule)
733#endif /* !YYDEBUG */860#endif /* !YYDEBUG */
@@ -750,255 +877,31 @@ int yydebug;
750#endif877#endif
751878
752879
753#if YYERROR_VERBOSE
754
755# ifndef yystrlen
756# if defined __GLIBC__ && defined _STRING_H
757# define yystrlen strlen
758# else
759/* Return the length of YYSTR. */
760static YYSIZE_T
761yystrlen (const char *yystr)
762{
763 YYSIZE_T yylen;
764 for (yylen = 0; yystr[yylen]; yylen++)
765 continue;
766 return yylen;
767}
768# endif
769# endif
770
771# ifndef yystpcpy
772# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
773# define yystpcpy stpcpy
774# else
775/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
776 YYDEST. */
777static char *
778yystpcpy (char *yydest, const char *yysrc)
779{
780 char *yyd = yydest;
781 const char *yys = yysrc;
782
783 while ((*yyd++ = *yys++) != '\0')
784 continue;
785
786 return yyd - 1;
787}
788# endif
789# endif
790
791# ifndef yytnamerr
792/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
793 quotes and backslashes, so that it's suitable for yyerror. The
794 heuristic is that double-quoting is unnecessary unless the string
795 contains an apostrophe, a comma, or backslash (other than
796 backslash-backslash). YYSTR is taken from yytname. If YYRES is
797 null, do not copy; instead, return the length of what the result
798 would have been. */
799static YYSIZE_T
800yytnamerr (char *yyres, const char *yystr)
801{
802 if (*yystr == '"')
803 {
804 YYSIZE_T yyn = 0;
805 char const *yyp = yystr;
806
807 for (;;)
808 switch (*++yyp)
809 {
810 case '\'':
811 case ',':
812 goto do_not_strip_quotes;
813
814 case '\\':
815 if (*++yyp != '\\')
816 goto do_not_strip_quotes;
817 else
818 goto append;
819
820 append:
821 default:
822 if (yyres)
823 yyres[yyn] = *yyp;
824 yyn++;
825 break;
826
827 case '"':
828 if (yyres)
829 yyres[yyn] = '\0';
830 return yyn;
831 }
832 do_not_strip_quotes: ;
833 }
834
835 if (! yyres)
836 return yystrlen (yystr);
837880
838 return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres);
839}
840# endif
841881
842/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
843 about the unexpected token YYTOKEN for the state stack whose top is
844 YYSSP.
845
846 Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
847 not large enough to hold the message. In that case, also set
848 *YYMSG_ALLOC to the required number of bytes. Return 2 if the
849 required number of bytes is too large to store. */
850static int
851yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
852 yytype_int16 *yyssp, int yytoken)
853{
854 YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
855 YYSIZE_T yysize = yysize0;
856 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
857 /* Internationalized format string. */
858 const char *yyformat = YY_NULLPTR;
859 /* Arguments of yyformat. */
860 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
861 /* Number of reported tokens (one for the "unexpected", one per
862 "expected"). */
863 int yycount = 0;
864
865 /* There are many possibilities here to consider:
866 - If this state is a consistent state with a default action, then
867 the only way this function was invoked is if the default action
868 is an error action. In that case, don't check for expected
869 tokens because there are none.
870 - The only way there can be no lookahead present (in yychar) is if
871 this state is a consistent state with a default action. Thus,
872 detecting the absence of a lookahead is sufficient to determine
873 that there is no unexpected or expected token to report. In that
874 case, just report a simple "syntax error".
875 - Don't assume there isn't a lookahead just because this state is a
876 consistent state with a default action. There might have been a
877 previous inconsistent state, consistent state with a non-default
878 action, or user semantic action that manipulated yychar.
879 - Of course, the expected token list depends on states to have
880 correct lookahead information, and it depends on the parser not
881 to perform extra reductions after fetching a lookahead from the
882 scanner and before detecting a syntax error. Thus, state merging
883 (from LALR or IELR) and default reductions corrupt the expected
884 token list. However, the list is correct for canonical LR with
885 one exception: it will still contain any token that will not be
886 accepted due to an error action in a later state.
887 */
888 if (yytoken != YYEMPTY)
889 {
890 int yyn = yypact[*yyssp];
891 yyarg[yycount++] = yytname[yytoken];
892 if (!yypact_value_is_default (yyn))
893 {
894 /* Start YYX at -YYN if negative to avoid negative indexes in
895 YYCHECK. In other words, skip the first -YYN actions for
896 this state because they are default actions. */
897 int yyxbegin = yyn < 0 ? -yyn : 0;
898 /* Stay within bounds of both yycheck and yytname. */
899 int yychecklim = YYLAST - yyn + 1;
900 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
901 int yyx;
902
903 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
904 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
905 && !yytable_value_is_error (yytable[yyx + yyn]))
906 {
907 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
908 {
909 yycount = 1;
910 yysize = yysize0;
911 break;
912 }
913 yyarg[yycount++] = yytname[yyx];
914 {
915 YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
916 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
917 yysize = yysize1;
918 else
919 return 2;
920 }
921 }
922 }
923 }
924
925 switch (yycount)
926 {
927# define YYCASE_(N, S) \
928 case N: \
929 yyformat = S; \
930 break
931 default: /* Avoid compiler warnings. */
932 YYCASE_(0, YY_("syntax error"));
933 YYCASE_(1, YY_("syntax error, unexpected %s"));
934 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
935 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
936 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
937 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
938# undef YYCASE_
939 }
940882
941 {
942 YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
943 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
944 yysize = yysize1;
945 else
946 return 2;
947 }
948
949 if (*yymsg_alloc < yysize)
950 {
951 *yymsg_alloc = 2 * yysize;
952 if (! (yysize <= *yymsg_alloc
953 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
954 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
955 return 1;
956 }
957
958 /* Avoid sprintf, as that infringes on the user's name space.
959 Don't have undefined behavior even if the translation
960 produced a string with the wrong number of "%s"s. */
961 {
962 char *yyp = *yymsg;
963 int yyi = 0;
964 while ((*yyp = *yyformat) != '\0')
965 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
966 {
967 yyp += yytnamerr (yyp, yyarg[yyi++]);
968 yyformat += 2;
969 }
970 else
971 {
972 yyp++;
973 yyformat++;
974 }
975 }
976 return 0;
977}
978#endif /* YYERROR_VERBOSE */
979883
980/*-----------------------------------------------.884/*-----------------------------------------------.
981| Release the memory associated to this symbol. |885| Release the memory associated to this symbol. |
982`-----------------------------------------------*/886`-----------------------------------------------*/
983887
984static void888static void
985yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, SEG *result)889yydestruct (const char *yymsg,
890 yysymbol_kind_t yykind, YYSTYPE *yyvaluep, SEG *result)
986{891{
987 YYUSE (yyvaluep);892 YY_USE (yyvaluep);
988 YYUSE (result);893 YY_USE (result);
989 if (!yymsg)894 if (!yymsg)
990 yymsg = "Deleting";895 yymsg = "Deleting";
991 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);896 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
992897
993 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN898 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
994 YYUSE (yytype);899 YY_USE (yykind);
995 YY_IGNORE_MAYBE_UNINITIALIZED_END900 YY_IGNORE_MAYBE_UNINITIALIZED_END
996}901}
997902
998903
999904/* Lookahead token kind. */
1000
1001/* The lookahead symbol. */
1002int yychar;905int yychar;
1003906
1004/* The semantic value of the lookahead symbol. */907/* The semantic value of the lookahead symbol. */
@@ -1007,6 +910,8 @@ YYSTYPE yylval;
1007int yynerrs;910int yynerrs;
1008911
1009912
913
914
1010/*----------.915/*----------.
1011| yyparse. |916| yyparse. |
1012`----------*/917`----------*/
@@ -1014,43 +919,36 @@ int yynerrs;
1014int919int
1015yyparse (SEG *result)920yyparse (SEG *result)
1016{921{
1017 int yystate;922 yy_state_fast_t yystate = 0;
1018 /* Number of tokens to shift before error messages enabled. */923 /* Number of tokens to shift before error messages enabled. */
1019 int yyerrstatus;924 int yyerrstatus = 0;
1020925
1021 /* The stacks and their tools:926 /* Refer to the stacks through separate pointers, to allow yyoverflow
1022 'yyss': related to states.
1023 'yyvs': related to semantic values.
1024
1025 Refer to the stacks through separate pointers, to allow yyoverflow
1026 to reallocate them elsewhere. */927 to reallocate them elsewhere. */
1027928
1028 /* The state stack. */929 /* Their size. */
1029 yytype_int16 yyssa[YYINITDEPTH];930 YYPTRDIFF_T yystacksize = YYINITDEPTH;
1030 yytype_int16 *yyss;
1031 yytype_int16 *yyssp;
1032931
1033 /* The semantic value stack. */932 /* The state stack: array, bottom, top. */
1034 YYSTYPE yyvsa[YYINITDEPTH];933 yy_state_t yyssa[YYINITDEPTH];
1035 YYSTYPE *yyvs;934 yy_state_t *yyss = yyssa;
1036 YYSTYPE *yyvsp;935 yy_state_t *yyssp = yyss;
1037936
1038 YYSIZE_T yystacksize;937 /* The semantic value stack: array, bottom, top. */
938 YYSTYPE yyvsa[YYINITDEPTH];
939 YYSTYPE *yyvs = yyvsa;
940 YYSTYPE *yyvsp = yyvs;
1039941
1040 int yyn;942 int yyn;
943 /* The return value of yyparse. */
1041 int yyresult;944 int yyresult;
1042 /* Lookahead token as an internal (translated) token number. */945 /* Lookahead symbol kind. */
1043 int yytoken = 0;946 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
1044 /* The variables used to return semantic value and location from the947 /* The variables used to return semantic value and location from the
1045 action routines. */948 action routines. */
1046 YYSTYPE yyval;949 YYSTYPE yyval;
1047950
1048#if YYERROR_VERBOSE951
1049 /* Buffer for error messages, and its allocated size. */
1050 char yymsgbuf[128];
1051 char *yymsg = yymsgbuf;
1052 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1053#endif
1054952
1055#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))953#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1056954
@@ -1058,15 +956,8 @@ yyparse (SEG *result)
1058 Keep to zero when no symbol should be popped. */956 Keep to zero when no symbol should be popped. */
1059 int yylen = 0;957 int yylen = 0;
1060958
1061 yyssp = yyss = yyssa;
1062 yyvsp = yyvs = yyvsa;
1063 yystacksize = YYINITDEPTH;
1064
1065 YYDPRINTF ((stderr, "Starting parse\n"));959 YYDPRINTF ((stderr, "Starting parse\n"));
1066960
1067 yystate = 0;
1068 yyerrstatus = 0;
1069 yynerrs = 0;
1070 yychar = YYEMPTY; /* Cause a token to be read. */961 yychar = YYEMPTY; /* Cause a token to be read. */
1071 goto yysetstate;962 goto yysetstate;
1072963
@@ -1081,10 +972,15 @@ yynewstate:
1081972
1082973
1083/*--------------------------------------------------------------------.974/*--------------------------------------------------------------------.
1084| yynewstate -- set current state (the top of the stack) to yystate. |975| yysetstate -- set current state (the top of the stack) to yystate. |
1085`--------------------------------------------------------------------*/976`--------------------------------------------------------------------*/
1086yysetstate:977yysetstate:
1087 *yyssp = (yytype_int16) yystate;978 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
979 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
980 YY_IGNORE_USELESS_CAST_BEGIN
981 *yyssp = YY_CAST (yy_state_t, yystate);
982 YY_IGNORE_USELESS_CAST_END
983 YY_STACK_PRINT (yyss, yyssp);
1088984
1089 if (yyss + yystacksize - 1 <= yyssp)985 if (yyss + yystacksize - 1 <= yyssp)
1090#if !defined yyoverflow && !defined YYSTACK_RELOCATE986#if !defined yyoverflow && !defined YYSTACK_RELOCATE
@@ -1092,23 +988,23 @@ yysetstate:
1092#else988#else
1093 {989 {
1094 /* Get the current used size of the three stacks, in elements. */990 /* Get the current used size of the three stacks, in elements. */
1095 YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1);991 YYPTRDIFF_T yysize = yyssp - yyss + 1;
1096992
1097# if defined yyoverflow993# if defined yyoverflow
1098 {994 {
1099 /* Give user a chance to reallocate the stack. Use copies of995 /* Give user a chance to reallocate the stack. Use copies of
1100 these so that the &'s don't force the real ones into996 these so that the &'s don't force the real ones into
1101 memory. */997 memory. */
998 yy_state_t *yyss1 = yyss;
1102 YYSTYPE *yyvs1 = yyvs;999 YYSTYPE *yyvs1 = yyvs;
1103 yytype_int16 *yyss1 = yyss;
11041000
1105 /* Each stack pointer address is followed by the size of the1001 /* Each stack pointer address is followed by the size of the
1106 data in use in that stack, in bytes. This used to be a1002 data in use in that stack, in bytes. This used to be a
1107 conditional around just the two extra args, but that might1003 conditional around just the two extra args, but that might
1108 be undefined if yyoverflow is a macro. */1004 be undefined if yyoverflow is a macro. */
1109 yyoverflow (YY_("memory exhausted"),1005 yyoverflow (YY_("memory exhausted"),
1110 &yyss1, yysize * sizeof (*yyssp),1006 &yyss1, yysize * YYSIZEOF (*yyssp),
1111 &yyvs1, yysize * sizeof (*yyvsp),1007 &yyvs1, yysize * YYSIZEOF (*yyvsp),
1112 &yystacksize);1008 &yystacksize);
1113 yyss = yyss1;1009 yyss = yyss1;
1114 yyvs = yyvs1;1010 yyvs = yyvs1;
@@ -1122,14 +1018,15 @@ yysetstate:
1122 yystacksize = YYMAXDEPTH;1018 yystacksize = YYMAXDEPTH;
11231019
1124 {1020 {
1125 yytype_int16 *yyss1 = yyss;1021 yy_state_t *yyss1 = yyss;
1126 union yyalloc *yyptr =1022 union yyalloc *yyptr =
1127 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));1023 YY_CAST (union yyalloc *,
1024 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
1128 if (! yyptr)1025 if (! yyptr)
1129 goto yyexhaustedlab;1026 goto yyexhaustedlab;
1130 YYSTACK_RELOCATE (yyss_alloc, yyss);1027 YYSTACK_RELOCATE (yyss_alloc, yyss);
1131 YYSTACK_RELOCATE (yyvs_alloc, yyvs);1028 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1132# undef YYSTACK_RELOCATE1029# undef YYSTACK_RELOCATE
1133 if (yyss1 != yyssa)1030 if (yyss1 != yyssa)
1134 YYSTACK_FREE (yyss1);1031 YYSTACK_FREE (yyss1);
1135 }1032 }
@@ -1138,16 +1035,16 @@ yysetstate:
1138 yyssp = yyss + yysize - 1;1035 yyssp = yyss + yysize - 1;
1139 yyvsp = yyvs + yysize - 1;1036 yyvsp = yyvs + yysize - 1;
11401037
1141 YYDPRINTF ((stderr, "Stack size increased to %lu\n",1038 YY_IGNORE_USELESS_CAST_BEGIN
1142 (unsigned long) yystacksize));1039 YYDPRINTF ((stderr, "Stack size increased to %ld\n",
1040 YY_CAST (long, yystacksize)));
1041 YY_IGNORE_USELESS_CAST_END
11431042
1144 if (yyss + yystacksize - 1 <= yyssp)1043 if (yyss + yystacksize - 1 <= yyssp)
1145 YYABORT;1044 YYABORT;
1146 }1045 }
1147#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */1046#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
11481047
1149 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1150
1151 if (yystate == YYFINAL)1048 if (yystate == YYFINAL)
1152 YYACCEPT;1049 YYACCEPT;
11531050
@@ -1168,18 +1065,29 @@ yybackup:
11681065
1169 /* Not known => get a lookahead token if don't already have one. */1066 /* Not known => get a lookahead token if don't already have one. */
11701067
1171 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */1068 /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
1172 if (yychar == YYEMPTY)1069 if (yychar == YYEMPTY)
1173 {1070 {
1174 YYDPRINTF ((stderr, "Reading a token: "));1071 YYDPRINTF ((stderr, "Reading a token\n"));
1175 yychar = yylex ();1072 yychar = yylex ();
1176 }1073 }
11771074
1178 if (yychar <= YYEOF)1075 if (yychar <= YYEOF)
1179 {1076 {
1180 yychar = yytoken = YYEOF;1077 yychar = YYEOF;
1078 yytoken = YYSYMBOL_YYEOF;
1181 YYDPRINTF ((stderr, "Now at end of input.\n"));1079 YYDPRINTF ((stderr, "Now at end of input.\n"));
1182 }1080 }
1081 else if (yychar == YYerror)
1082 {
1083 /* The scanner already issued an error message, process directly
1084 to error recovery. But do not keep the error token as
1085 lookahead, it is too special and may lead us to an endless
1086 loop in error recovery. */
1087 yychar = YYUNDEF;
1088 yytoken = YYSYMBOL_YYerror;
1089 goto yyerrlab1;
1090 }
1183 else1091 else
1184 {1092 {
1185 yytoken = YYTRANSLATE (yychar);1093 yytoken = YYTRANSLATE (yychar);
@@ -1207,15 +1115,13 @@ yybackup:
12071115
1208 /* Shift the lookahead token. */1116 /* Shift the lookahead token. */
1209 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);1117 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1210
1211 /* Discard the shifted token. */
1212 yychar = YYEMPTY;
1213
1214 yystate = yyn;1118 yystate = yyn;
1215 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN1119 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1216 *++yyvsp = yylval;1120 *++yyvsp = yylval;
1217 YY_IGNORE_MAYBE_UNINITIALIZED_END1121 YY_IGNORE_MAYBE_UNINITIALIZED_END
12181122
1123 /* Discard the shifted token. */
1124 yychar = YYEMPTY;
1219 goto yynewstate;1125 goto yynewstate;
12201126
12211127
@@ -1250,9 +1156,9 @@ yyreduce:
1250 YY_REDUCE_PRINT (yyn);1156 YY_REDUCE_PRINT (yyn);
1251 switch (yyn)1157 switch (yyn)
1252 {1158 {
1253 case 2:1159 case 2: /* range: boundary PLUMIN deviation */
1254#line 62 "segparse.y" /* yacc.c:1652 */1160#line 62 "segparse.y"
1255 {1161 {
1256 result->lower = (yyvsp[-2].bnd).val - (yyvsp[0].bnd).val;1162 result->lower = (yyvsp[-2].bnd).val - (yyvsp[0].bnd).val;
1257 result->upper = (yyvsp[-2].bnd).val + (yyvsp[0].bnd).val;1163 result->upper = (yyvsp[-2].bnd).val + (yyvsp[0].bnd).val;
1258 sprintf(strbuf, "%g", result->lower);1164 sprintf(strbuf, "%g", result->lower);
@@ -1262,12 +1168,12 @@ yyreduce:
1262 result->l_ext = '\0';1168 result->l_ext = '\0';
1263 result->u_ext = '\0';1169 result->u_ext = '\0';
1264 }1170 }
1265#line 1266 "segparse.c" /* yacc.c:1652 */1171#line 1172 "segparse.c"
1266 break;1172 break;
12671173
1268 case 3:1174 case 3: /* range: boundary RANGE boundary */
1269#line 74 "segparse.y" /* yacc.c:1652 */1175#line 74 "segparse.y"
1270 {1176 {
1271 result->lower = (yyvsp[-2].bnd).val;1177 result->lower = (yyvsp[-2].bnd).val;
1272 result->upper = (yyvsp[0].bnd).val;1178 result->upper = (yyvsp[0].bnd).val;
1273 if ( result->lower > result->upper ) {1179 if ( result->lower > result->upper ) {
@@ -1283,12 +1189,12 @@ yyreduce:
1283 result->l_ext = ( (yyvsp[-2].bnd).ext ? (yyvsp[-2].bnd).ext : '\0' );1189 result->l_ext = ( (yyvsp[-2].bnd).ext ? (yyvsp[-2].bnd).ext : '\0' );
1284 result->u_ext = ( (yyvsp[0].bnd).ext ? (yyvsp[0].bnd).ext : '\0' );1190 result->u_ext = ( (yyvsp[0].bnd).ext ? (yyvsp[0].bnd).ext : '\0' );
1285 }1191 }
1286#line 1287 "segparse.c" /* yacc.c:1652 */1192#line 1193 "segparse.c"
1287 break;1193 break;
12881194
1289 case 4:1195 case 4: /* range: boundary RANGE */
1290#line 92 "segparse.y" /* yacc.c:1652 */1196#line 92 "segparse.y"
1291 {1197 {
1292 result->lower = (yyvsp[-1].bnd).val;1198 result->lower = (yyvsp[-1].bnd).val;
1293 result->upper = HUGE_VAL;1199 result->upper = HUGE_VAL;
1294 result->l_sigd = (yyvsp[-1].bnd).sigd;1200 result->l_sigd = (yyvsp[-1].bnd).sigd;
@@ -1296,12 +1202,12 @@ yyreduce:
1296 result->l_ext = ( (yyvsp[-1].bnd).ext ? (yyvsp[-1].bnd).ext : '\0' );1202 result->l_ext = ( (yyvsp[-1].bnd).ext ? (yyvsp[-1].bnd).ext : '\0' );
1297 result->u_ext = '-';1203 result->u_ext = '-';
1298 }1204 }
1299#line 1300 "segparse.c" /* yacc.c:1652 */1205#line 1206 "segparse.c"
1300 break;1206 break;
13011207
1302 case 5:1208 case 5: /* range: RANGE boundary */
1303#line 102 "segparse.y" /* yacc.c:1652 */1209#line 102 "segparse.y"
1304 {1210 {
1305 result->lower = -HUGE_VAL;1211 result->lower = -HUGE_VAL;
1306 result->upper = (yyvsp[0].bnd).val;1212 result->upper = (yyvsp[0].bnd).val;
1307 result->l_sigd = 0;1213 result->l_sigd = 0;
@@ -1309,22 +1215,22 @@ yyreduce:
1309 result->l_ext = '-';1215 result->l_ext = '-';
1310 result->u_ext = ( (yyvsp[0].bnd).ext ? (yyvsp[0].bnd).ext : '\0' );1216 result->u_ext = ( (yyvsp[0].bnd).ext ? (yyvsp[0].bnd).ext : '\0' );
1311 }1217 }
1312#line 1313 "segparse.c" /* yacc.c:1652 */1218#line 1219 "segparse.c"
1313 break;1219 break;
13141220
1315 case 6:1221 case 6: /* range: boundary */
1316#line 112 "segparse.y" /* yacc.c:1652 */1222#line 112 "segparse.y"
1317 {1223 {
1318 result->lower = result->upper = (yyvsp[0].bnd).val;1224 result->lower = result->upper = (yyvsp[0].bnd).val;
1319 result->l_sigd = result->u_sigd = (yyvsp[0].bnd).sigd;1225 result->l_sigd = result->u_sigd = (yyvsp[0].bnd).sigd;
1320 result->l_ext = result->u_ext = ( (yyvsp[0].bnd).ext ? (yyvsp[0].bnd).ext : '\0' );1226 result->l_ext = result->u_ext = ( (yyvsp[0].bnd).ext ? (yyvsp[0].bnd).ext : '\0' );
1321 }1227 }
1322#line 1323 "segparse.c" /* yacc.c:1652 */1228#line 1229 "segparse.c"
1323 break;1229 break;
13241230
1325 case 7:1231 case 7: /* boundary: SEGFLOAT */
1326#line 120 "segparse.y" /* yacc.c:1652 */1232#line 120 "segparse.y"
1327 {1233 {
1328 /* temp variable avoids a gcc 3.3.x bug on Sparc64 */1234 /* temp variable avoids a gcc 3.3.x bug on Sparc64 */
1329 float val = seg_atof((yyvsp[0].text));1235 float val = seg_atof((yyvsp[0].text));
13301236
@@ -1332,12 +1238,12 @@ yyreduce:
1332 (yyval.bnd).sigd = significant_digits((yyvsp[0].text));1238 (yyval.bnd).sigd = significant_digits((yyvsp[0].text));
1333 (yyval.bnd).val = val;1239 (yyval.bnd).val = val;
1334 }1240 }
1335#line 1336 "segparse.c" /* yacc.c:1652 */1241#line 1242 "segparse.c"
1336 break;1242 break;
13371243
1338 case 8:1244 case 8: /* boundary: EXTENSION SEGFLOAT */
1339#line 129 "segparse.y" /* yacc.c:1652 */1245#line 129 "segparse.y"
1340 {1246 {
1341 /* temp variable avoids a gcc 3.3.x bug on Sparc64 */1247 /* temp variable avoids a gcc 3.3.x bug on Sparc64 */
1342 float val = seg_atof((yyvsp[0].text));1248 float val = seg_atof((yyvsp[0].text));
13431249
@@ -1345,12 +1251,12 @@ yyreduce:
1345 (yyval.bnd).sigd = significant_digits((yyvsp[0].text));1251 (yyval.bnd).sigd = significant_digits((yyvsp[0].text));
1346 (yyval.bnd).val = val;1252 (yyval.bnd).val = val;
1347 }1253 }
1348#line 1349 "segparse.c" /* yacc.c:1652 */1254#line 1255 "segparse.c"
1349 break;1255 break;
13501256
1351 case 9:1257 case 9: /* deviation: SEGFLOAT */
1352#line 140 "segparse.y" /* yacc.c:1652 */1258#line 140 "segparse.y"
1353 {1259 {
1354 /* temp variable avoids a gcc 3.3.x bug on Sparc64 */1260 /* temp variable avoids a gcc 3.3.x bug on Sparc64 */
1355 float val = seg_atof((yyvsp[0].text));1261 float val = seg_atof((yyvsp[0].text));
13561262
@@ -1358,11 +1264,12 @@ yyreduce:
1358 (yyval.bnd).sigd = significant_digits((yyvsp[0].text));1264 (yyval.bnd).sigd = significant_digits((yyvsp[0].text));
1359 (yyval.bnd).val = val;1265 (yyval.bnd).val = val;
1360 }1266 }
1361#line 1362 "segparse.c" /* yacc.c:1652 */1267#line 1268 "segparse.c"
1362 break;1268 break;
13631269
13641270
1365#line 1366 "segparse.c" /* yacc.c:1652 */1271#line 1272 "segparse.c"
1272
1366 default: break;1273 default: break;
1367 }1274 }
1368 /* User semantic actions sometimes alter yychar, and that requires1275 /* User semantic actions sometimes alter yychar, and that requires
@@ -1376,11 +1283,10 @@ yyreduce:
1376 case of YYERROR or YYBACKUP, subsequent parser actions might lead1283 case of YYERROR or YYBACKUP, subsequent parser actions might lead
1377 to an incorrect destructor call or verbose syntax error message1284 to an incorrect destructor call or verbose syntax error message
1378 before the lookahead is translated. */1285 before the lookahead is translated. */
1379 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);1286 YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
13801287
1381 YYPOPSTACK (yylen);1288 YYPOPSTACK (yylen);
1382 yylen = 0;1289 yylen = 0;
1383 YY_STACK_PRINT (yyss, yyssp);
13841290
1385 *++yyvsp = yyval;1291 *++yyvsp = yyval;
13861292
@@ -1404,50 +1310,14 @@ yyreduce:
1404yyerrlab:1310yyerrlab:
1405 /* Make sure we have latest lookahead translation. See comments at1311 /* Make sure we have latest lookahead translation. See comments at
1406 user semantic actions for why this is necessary. */1312 user semantic actions for why this is necessary. */
1407 yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);1313 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
1408
1409 /* If not already recovering from an error, report this error. */1314 /* If not already recovering from an error, report this error. */
1410 if (!yyerrstatus)1315 if (!yyerrstatus)
1411 {1316 {
1412 ++yynerrs;1317 ++yynerrs;
1413#if ! YYERROR_VERBOSE
1414 yyerror (result, YY_("syntax error"));1318 yyerror (result, YY_("syntax error"));
1415#else
1416# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
1417 yyssp, yytoken)
1418 {
1419 char const *yymsgp = YY_("syntax error");
1420 int yysyntax_error_status;
1421 yysyntax_error_status = YYSYNTAX_ERROR;
1422 if (yysyntax_error_status == 0)
1423 yymsgp = yymsg;
1424 else if (yysyntax_error_status == 1)
1425 {
1426 if (yymsg != yymsgbuf)
1427 YYSTACK_FREE (yymsg);
1428 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
1429 if (!yymsg)
1430 {
1431 yymsg = yymsgbuf;
1432 yymsg_alloc = sizeof yymsgbuf;
1433 yysyntax_error_status = 2;
1434 }
1435 else
1436 {
1437 yysyntax_error_status = YYSYNTAX_ERROR;
1438 yymsgp = yymsg;
1439 }
1440 }
1441 yyerror (result, yymsgp);
1442 if (yysyntax_error_status == 2)
1443 goto yyexhaustedlab;
1444 }
1445# undef YYSYNTAX_ERROR
1446#endif
1447 }1319 }
14481320
1449
1450
1451 if (yyerrstatus == 3)1321 if (yyerrstatus == 3)
1452 {1322 {
1453 /* If just tried and failed to reuse lookahead token after an1323 /* If just tried and failed to reuse lookahead token after an
@@ -1496,13 +1366,14 @@ yyerrorlab:
1496yyerrlab1:1366yyerrlab1:
1497 yyerrstatus = 3; /* Each real token shifted decrements this. */1367 yyerrstatus = 3; /* Each real token shifted decrements this. */
14981368
1369 /* Pop stack until we find a state that shifts the error token. */
1499 for (;;)1370 for (;;)
1500 {1371 {
1501 yyn = yypact[yystate];1372 yyn = yypact[yystate];
1502 if (!yypact_value_is_default (yyn))1373 if (!yypact_value_is_default (yyn))
1503 {1374 {
1504 yyn += YYTERROR;1375 yyn += YYSYMBOL_YYerror;
1505 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)1376 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
1506 {1377 {
1507 yyn = yytable[yyn];1378 yyn = yytable[yyn];
1508 if (0 < yyn)1379 if (0 < yyn)
@@ -1516,7 +1387,7 @@ yyerrlab1:
15161387
15171388
1518 yydestruct ("Error: popping",1389 yydestruct ("Error: popping",
1519 yystos[yystate], yyvsp, result);1390 YY_ACCESSING_SYMBOL (yystate), yyvsp, result);
1520 YYPOPSTACK (1);1391 YYPOPSTACK (1);
1521 yystate = *yyssp;1392 yystate = *yyssp;
1522 YY_STACK_PRINT (yyss, yyssp);1393 YY_STACK_PRINT (yyss, yyssp);
@@ -1528,7 +1399,7 @@ yyerrlab1:
15281399
15291400
1530 /* Shift the error token. */1401 /* Shift the error token. */
1531 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);1402 YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
15321403
1533 yystate = yyn;1404 yystate = yyn;
1534 goto yynewstate;1405 goto yynewstate;
@@ -1550,20 +1421,20 @@ yyabortlab:
1550 goto yyreturn;1421 goto yyreturn;
15511422
15521423
1553#if !defined yyoverflow || YYERROR_VERBOSE1424#if !defined yyoverflow
1554/*-------------------------------------------------.1425/*-------------------------------------------------.
1555| yyexhaustedlab -- memory exhaustion comes here. |1426| yyexhaustedlab -- memory exhaustion comes here. |
1556`-------------------------------------------------*/1427`-------------------------------------------------*/
1557yyexhaustedlab:1428yyexhaustedlab:
1558 yyerror (result, YY_("memory exhausted"));1429 yyerror (result, YY_("memory exhausted"));
1559 yyresult = 2;1430 yyresult = 2;
1560 /* Fall through. */1431 goto yyreturn;
1561#endif1432#endif
15621433
15631434
1564/*-----------------------------------------------------.1435/*-------------------------------------------------------.
1565| yyreturn -- parsing is finished, return the result. |1436| yyreturn -- parsing is finished, clean up and return. |
1566`-----------------------------------------------------*/1437`-------------------------------------------------------*/
1567yyreturn:1438yyreturn:
1568 if (yychar != YYEMPTY)1439 if (yychar != YYEMPTY)
1569 {1440 {
@@ -1580,20 +1451,18 @@ yyreturn:
1580 while (yyssp != yyss)1451 while (yyssp != yyss)
1581 {1452 {
1582 yydestruct ("Cleanup: popping",1453 yydestruct ("Cleanup: popping",
1583 yystos[*yyssp], yyvsp, result);1454 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, result);
1584 YYPOPSTACK (1);1455 YYPOPSTACK (1);
1585 }1456 }
1586#ifndef yyoverflow1457#ifndef yyoverflow
1587 if (yyss != yyssa)1458 if (yyss != yyssa)
1588 YYSTACK_FREE (yyss);1459 YYSTACK_FREE (yyss);
1589#endif1460#endif
1590#if YYERROR_VERBOSE1461
1591 if (yymsg != yymsgbuf)
1592 YYSTACK_FREE (yymsg);
1593#endif
1594 return yyresult;1462 return yyresult;
1595}1463}
1596#line 150 "segparse.y" /* yacc.c:1918 */1464
1465#line 150 "segparse.y"
15971466
15981467
15991468
diff --git a/contrib/test_decoding/expected/toast.out b/contrib/test_decoding/expected/toast.out
index 91a9a1e..a8e3676 100644
--- a/contrib/test_decoding/expected/toast.out
+++ b/contrib/test_decoding/expected/toast.out
@@ -77,7 +77,7 @@ SELECT substr(data, 1, 200) FROM pg_logical_slot_get_changes('regression_slot',
77 table public.toasted_key: INSERT: id[integer]:1 toasted_key[text]:'123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012377 table public.toasted_key: INSERT: id[integer]:1 toasted_key[text]:'1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123
78 COMMIT78 COMMIT
79 BEGIN79 BEGIN
80 table public.toasted_key: UPDATE: id[integer]:1 toasted_key[text]:unchanged-toast-datum toasted_col1[text]:unchanged-toast-datum toasted_col2[text]:'98765432109876543210987654321098765432109876543210980 table public.toasted_key: UPDATE: old-key: toasted_key[text]:'123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
81 COMMIT81 COMMIT
82 BEGIN82 BEGIN
83 table public.toasted_key: UPDATE: old-key: toasted_key[text]:'12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567883 table public.toasted_key: UPDATE: old-key: toasted_key[text]:'123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
diff --git a/debian/changelog b/debian/changelog
index 52b7d77..9dd96e5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,32 @@
1postgresql-10 (10.21-0ubuntu0.18.04.1) bionic; urgency=medium
2
3 * New upstream version (LP: #1973627).
4
5 + A dump/restore is not required for those running 10.X.
6
7 + However, if you are upgrading from a version earlier than 10.19, see
8 those release notes as well please.
9
10 + Confine additional operations within "security restricted operation"
11 sandboxes (Sergey Shinderuk, Noah Misch).
12
13 Autovacuum, CLUSTER, CREATE INDEX, REINDEX, REFRESH MATERIALIZED VIEW,
14 and pg_amcheck activated the "security restricted operation" protection
15 mechanism too late, or even not at all in some code paths. A user having
16 permission to create non-temporary objects within a database could
17 define an object that would execute arbitrary SQL code with superuser
18 permissions the next time that autovacuum processed the object, or that
19 some superuser ran one of the affected commands against it.
20
21 The PostgreSQL Project thanks Alexander Lakhin for reporting this
22 problem.
23 (CVE-2022-1552)
24
25 + Details about these and many further changes can be found at:
26 https://www.postgresql.org/docs/10/release-10-21.html
27
28 -- Sergio Durigan Junior <sergio.durigan@canonical.com> Tue, 17 May 2022 21:58:23 -0400
29
1postgresql-10 (10.20-0ubuntu0.18.04.1) bionic; urgency=medium30postgresql-10 (10.20-0ubuntu0.18.04.1) bionic; urgency=medium
231
3 * New upstream version (LP: #1961127).32 * New upstream version (LP: #1961127).
diff --git a/doc/bug.template b/doc/bug.template
index 0223829..7df4c5e 100644
--- a/doc/bug.template
+++ b/doc/bug.template
@@ -27,7 +27,7 @@ System Configuration:
2727
28 Operating System (example: Linux 2.4.18) :28 Operating System (example: Linux 2.4.18) :
2929
30 PostgreSQL version (example: PostgreSQL 10.20): PostgreSQL 10.2030 PostgreSQL version (example: PostgreSQL 10.21): PostgreSQL 10.21
3131
32 Compiler used (example: gcc 3.3.5) :32 Compiler used (example: gcc 3.3.5) :
3333
diff --git a/doc/src/sgml/html/acronyms.html b/doc/src/sgml/html/acronyms.html
index 799fc63..575c912 100644
--- a/doc/src/sgml/html/acronyms.html
+++ b/doc/src/sgml/html/acronyms.html
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix K. Acronyms</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="docguide-style.html" title="J.5. Style Guide" /><link rel="next" href="appendix-obsolete.html" title="Appendix L. Obsolete or Renamed Features" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">Appendix K. Acronyms</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="docguide-style.html" title="J.5. Style Guide">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="appendixes.html" title="Part VIII. Appendixes">Up</a></td><th width="60%" align="center">Part VIII. Appendixes</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="appendix-obsolete.html" title="Appendix L. Obsolete or Renamed Features">Next</a></td></tr></table><hr></hr></div><div class="appendix" id="ACRONYMS"><div class="titlepage"><div><div><h2 class="title">Appendix K. Acronyms</h2></div></div></div><p> This is a list of acronyms commonly used in the <span class="productname">PostgreSQL</span>2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix K. Acronyms</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="docguide-style.html" title="J.5. Style Guide" /><link rel="next" href="appendix-obsolete.html" title="Appendix L. Obsolete or Renamed Features" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">Appendix K. Acronyms</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="docguide-style.html" title="J.5. Style Guide">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="appendixes.html" title="Part VIII. Appendixes">Up</a></td><th width="60%" align="center">Part VIII. Appendixes</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="appendix-obsolete.html" title="Appendix L. Obsolete or Renamed Features">Next</a></td></tr></table><hr></hr></div><div class="appendix" id="ACRONYMS"><div class="titlepage"><div><div><h2 class="title">Appendix K. Acronyms</h2></div></div></div><p> This is a list of acronyms commonly used in the <span class="productname">PostgreSQL</span>
3 documentation and in discussions about <span class="productname">PostgreSQL</span>.3 documentation and in discussions about <span class="productname">PostgreSQL</span>.
44
5 </p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><acronym class="acronym">ANSI</acronym></span></dt><dd><p> <a class="ulink" href="http://en.wikipedia.org/wiki/American_National_Standards_Institute" target="_top"> American National Standards Institute</a>5 </p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><acronym class="acronym">ANSI</acronym></span></dt><dd><p> <a class="ulink" href="http://en.wikipedia.org/wiki/American_National_Standards_Institute" target="_top"> American National Standards Institute</a>
@@ -80,7 +80,7 @@
80 Database Management System</a>80 Database Management System</a>
81 </p></dd><dt><span class="term"><acronym class="acronym">PAM</acronym></span></dt><dd><p> <a class="ulink" href="http://en.wikipedia.org/wiki/Pluggable_Authentication_Modules" target="_top">Pluggable81 </p></dd><dt><span class="term"><acronym class="acronym">PAM</acronym></span></dt><dd><p> <a class="ulink" href="http://en.wikipedia.org/wiki/Pluggable_Authentication_Modules" target="_top">Pluggable
82 Authentication Modules</a>82 Authentication Modules</a>
83 </p></dd><dt><span class="term"><acronym class="acronym">PGSQL</acronym></span></dt><dd><p> <a class="link" href="index.html" title="PostgreSQL 10.20 Documentation"><span class="productname">PostgreSQL</span></a>83 </p></dd><dt><span class="term"><acronym class="acronym">PGSQL</acronym></span></dt><dd><p> <a class="link" href="index.html" title="PostgreSQL 10.21 Documentation"><span class="productname">PostgreSQL</span></a>
84 </p></dd><dt><span class="term"><acronym class="acronym">PGXS</acronym></span></dt><dd><p> <a class="link" href="extend-pgxs.html" title="37.16. Extension Building Infrastructure"><span class="productname">PostgreSQL</span> Extension System</a>84 </p></dd><dt><span class="term"><acronym class="acronym">PGXS</acronym></span></dt><dd><p> <a class="link" href="extend-pgxs.html" title="37.16. Extension Building Infrastructure"><span class="productname">PostgreSQL</span> Extension System</a>
85 </p></dd><dt><span class="term"><acronym class="acronym">PID</acronym></span></dt><dd><p> <a class="ulink" href="http://en.wikipedia.org/wiki/Process_identifier" target="_top">Process Identifier</a>85 </p></dd><dt><span class="term"><acronym class="acronym">PID</acronym></span></dt><dd><p> <a class="ulink" href="http://en.wikipedia.org/wiki/Process_identifier" target="_top">Process Identifier</a>
86 </p></dd><dt><span class="term"><acronym class="acronym">PITR</acronym></span></dt><dd><p> <a class="link" href="continuous-archiving.html" title="25.3. Continuous Archiving and Point-in-Time Recovery (PITR)">Point-In-Time86 </p></dd><dt><span class="term"><acronym class="acronym">PITR</acronym></span></dt><dd><p> <a class="link" href="continuous-archiving.html" title="25.3. Continuous Archiving and Point-in-Time Recovery (PITR)">Point-In-Time
@@ -125,4 +125,4 @@
125 </p></dd><dt><span class="term"><acronym class="acronym">XML</acronym></span></dt><dd><p> <a class="ulink" href="http://en.wikipedia.org/wiki/XML" target="_top">Extensible Markup125 </p></dd><dt><span class="term"><acronym class="acronym">XML</acronym></span></dt><dd><p> <a class="ulink" href="http://en.wikipedia.org/wiki/XML" target="_top">Extensible Markup
126 Language</a>126 Language</a>
127 </p></dd></dl></div><p>127 </p></dd></dl></div><p>
128 </p></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="docguide-style.html" title="J.5. Style Guide">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendixes.html" title="Part VIII. Appendixes">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="appendix-obsolete.html" title="Appendix L. Obsolete or Renamed Features">Next</a></td></tr><tr><td width="40%" align="left" valign="top">J.5. Style Guide </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="40%" align="right" valign="top"> Appendix L. Obsolete or Renamed Features</td></tr></table></div></body></html>
129\ No newline at end of file128\ No newline at end of file
129 </p></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="docguide-style.html" title="J.5. Style Guide">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendixes.html" title="Part VIII. Appendixes">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="appendix-obsolete.html" title="Appendix L. Obsolete or Renamed Features">Next</a></td></tr><tr><td width="40%" align="left" valign="top">J.5. Style Guide </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="40%" align="right" valign="top"> Appendix L. Obsolete or Renamed Features</td></tr></table></div></body></html>
130\ No newline at end of file130\ No newline at end of file
diff --git a/doc/src/sgml/html/admin.html b/doc/src/sgml/html/admin.html
index 6cae99c..d37b5cc 100644
--- a/doc/src/sgml/html/admin.html
+++ b/doc/src/sgml/html/admin.html
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part III. Server Administration</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="parallel-safety.html" title="15.4. Parallel Safety" /><link rel="next" href="installation.html" title="Chapter 16.  Installation from Source Code" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">Part III. Server Administration</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="parallel-safety.html" title="15.4. Parallel Safety">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="index.html" title="PostgreSQL 10.20 Documentation">Up</a></td><th width="60%" align="center">PostgreSQL 10.20 Documentation</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="installation.html" title="Chapter 16.  Installation from Source Code">Next</a></td></tr></table><hr></hr></div><div class="part" id="ADMIN"><div class="titlepage"><div><div><h1 class="title">Part III. Server Administration</h1></div></div></div><div class="partintro" id="id-1.6.2"><div></div><p> This part covers topics that are of interest to a2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part III. Server Administration</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="parallel-safety.html" title="15.4. Parallel Safety" /><link rel="next" href="installation.html" title="Chapter 16.  Installation from Source Code" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">Part III. Server Administration</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="parallel-safety.html" title="15.4. Parallel Safety">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="index.html" title="PostgreSQL 10.21 Documentation">Up</a></td><th width="60%" align="center">PostgreSQL 10.21 Documentation</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="installation.html" title="Chapter 16.  Installation from Source Code">Next</a></td></tr></table><hr></hr></div><div class="part" id="ADMIN"><div class="titlepage"><div><div><h1 class="title">Part III. Server Administration</h1></div></div></div><div class="partintro" id="id-1.6.2"><div></div><p> This part covers topics that are of interest to a
3 <span class="productname">PostgreSQL</span> database administrator. This includes3 <span class="productname">PostgreSQL</span> database administrator. This includes
4 installation of the software, set up and configuration of the4 installation of the software, set up and configuration of the
5 server, management of users and databases, and maintenance tasks.5 server, management of users and databases, and maintenance tasks.
@@ -20,4 +20,4 @@
20 the <span class="productname">PostgreSQL</span> database system. Readers are20 the <span class="productname">PostgreSQL</span> database system. Readers are
21 encouraged to look at <a class="xref" href="tutorial.html" title="Part I. Tutorial">Part I</a> and <a class="xref" href="sql.html" title="Part II. The SQL Language">Part II</a> for additional information.21 encouraged to look at <a class="xref" href="tutorial.html" title="Part I. Tutorial">Part I</a> and <a class="xref" href="sql.html" title="Part II. The SQL Language">Part II</a> for additional information.
22 </p><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="chapter"><a href="installation.html">16. Installation from Source Code</a></span></dt><dd><dl><dt><span class="sect1"><a href="install-short.html">16.1. Short Version</a></span></dt><dt><span class="sect1"><a href="install-requirements.html">16.2. Requirements</a></span></dt><dt><span class="sect1"><a href="install-getsource.html">16.3. Getting The Source</a></span></dt><dt><span class="sect1"><a href="install-procedure.html">16.4. Installation Procedure</a></span></dt><dt><span class="sect1"><a href="install-post.html">16.5. Post-Installation Setup</a></span></dt><dt><span class="sect1"><a href="supported-platforms.html">16.6. Supported Platforms</a></span></dt><dt><span class="sect1"><a href="installation-platform-notes.html">16.7. Platform-specific Notes</a></span></dt></dl></dd><dt><span class="chapter"><a href="install-windows.html">17. Installation from Source Code on <span class="productname">Windows</span></a></span></dt><dd><dl><dt><span class="sect1"><a href="install-windows-full.html">17.1. Building with <span class="productname">Visual C++</span> or the22 </p><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="chapter"><a href="installation.html">16. Installation from Source Code</a></span></dt><dd><dl><dt><span class="sect1"><a href="install-short.html">16.1. Short Version</a></span></dt><dt><span class="sect1"><a href="install-requirements.html">16.2. Requirements</a></span></dt><dt><span class="sect1"><a href="install-getsource.html">16.3. Getting The Source</a></span></dt><dt><span class="sect1"><a href="install-procedure.html">16.4. Installation Procedure</a></span></dt><dt><span class="sect1"><a href="install-post.html">16.5. Post-Installation Setup</a></span></dt><dt><span class="sect1"><a href="supported-platforms.html">16.6. Supported Platforms</a></span></dt><dt><span class="sect1"><a href="installation-platform-notes.html">16.7. Platform-specific Notes</a></span></dt></dl></dd><dt><span class="chapter"><a href="install-windows.html">17. Installation from Source Code on <span class="productname">Windows</span></a></span></dt><dd><dl><dt><span class="sect1"><a href="install-windows-full.html">17.1. Building with <span class="productname">Visual C++</span> or the
23 <span class="productname">Microsoft Windows SDK</span></a></span></dt></dl></dd><dt><span class="chapter"><a href="runtime.html">18. Server Setup and Operation</a></span></dt><dd><dl><dt><span class="sect1"><a href="postgres-user.html">18.1. The <span class="productname">PostgreSQL</span> User Account</a></span></dt><dt><span class="sect1"><a href="creating-cluster.html">18.2. Creating a Database Cluster</a></span></dt><dt><span class="sect1"><a href="server-start.html">18.3. Starting the Database Server</a></span></dt><dt><span class="sect1"><a href="kernel-resources.html">18.4. Managing Kernel Resources</a></span></dt><dt><span class="sect1"><a href="server-shutdown.html">18.5. Shutting Down the Server</a></span></dt><dt><span class="sect1"><a href="upgrading.html">18.6. Upgrading a <span class="productname">PostgreSQL</span> Cluster</a></span></dt><dt><span class="sect1"><a href="preventing-server-spoofing.html">18.7. Preventing Server Spoofing</a></span></dt><dt><span class="sect1"><a href="encryption-options.html">18.8. Encryption Options</a></span></dt><dt><span class="sect1"><a href="ssl-tcp.html">18.9. Secure TCP/IP Connections with SSL</a></span></dt><dt><span class="sect1"><a href="ssh-tunnels.html">18.10. Secure TCP/IP Connections with <span class="application">SSH</span> Tunnels</a></span></dt><dt><span class="sect1"><a href="event-log-registration.html">18.11. Registering <span class="application">Event Log</span> on <span class="systemitem">Windows</span></a></span></dt></dl></dd><dt><span class="chapter"><a href="runtime-config.html">19. Server Configuration</a></span></dt><dd><dl><dt><span class="sect1"><a href="config-setting.html">19.1. Setting Parameters</a></span></dt><dt><span class="sect1"><a href="runtime-config-file-locations.html">19.2. File Locations</a></span></dt><dt><span class="sect1"><a href="runtime-config-connection.html">19.3. Connections and Authentication</a></span></dt><dt><span class="sect1"><a href="runtime-config-resource.html">19.4. Resource Consumption</a></span></dt><dt><span class="sect1"><a href="runtime-config-wal.html">19.5. Write Ahead Log</a></span></dt><dt><span class="sect1"><a href="runtime-config-replication.html">19.6. Replication</a></span></dt><dt><span class="sect1"><a href="runtime-config-query.html">19.7. Query Planning</a></span></dt><dt><span class="sect1"><a href="runtime-config-logging.html">19.8. Error Reporting and Logging</a></span></dt><dt><span class="sect1"><a href="runtime-config-statistics.html">19.9. Run-time Statistics</a></span></dt><dt><span class="sect1"><a href="runtime-config-autovacuum.html">19.10. Automatic Vacuuming</a></span></dt><dt><span class="sect1"><a href="runtime-config-client.html">19.11. Client Connection Defaults</a></span></dt><dt><span class="sect1"><a href="runtime-config-locks.html">19.12. Lock Management</a></span></dt><dt><span class="sect1"><a href="runtime-config-compatible.html">19.13. Version and Platform Compatibility</a></span></dt><dt><span class="sect1"><a href="runtime-config-error-handling.html">19.14. Error Handling</a></span></dt><dt><span class="sect1"><a href="runtime-config-preset.html">19.15. Preset Options</a></span></dt><dt><span class="sect1"><a href="runtime-config-custom.html">19.16. Customized Options</a></span></dt><dt><span class="sect1"><a href="runtime-config-developer.html">19.17. Developer Options</a></span></dt><dt><span class="sect1"><a href="runtime-config-short.html">19.18. Short Options</a></span></dt></dl></dd><dt><span class="chapter"><a href="client-authentication.html">20. Client Authentication</a></span></dt><dd><dl><dt><span class="sect1"><a href="auth-pg-hba-conf.html">20.1. The <code class="filename">pg_hba.conf</code> File</a></span></dt><dt><span class="sect1"><a href="auth-username-maps.html">20.2. User Name Maps</a></span></dt><dt><span class="sect1"><a href="auth-methods.html">20.3. Authentication Methods</a></span></dt><dt><span class="sect1"><a href="client-authentication-problems.html">20.4. Authentication Problems</a></span></dt></dl></dd><dt><span class="chapter"><a href="user-manag.html">21. Database Roles</a></span></dt><dd><dl><dt><span class="sect1"><a href="database-roles.html">21.1. Database Roles</a></span></dt><dt><span class="sect1"><a href="role-attributes.html">21.2. Role Attributes</a></span></dt><dt><span class="sect1"><a href="role-membership.html">21.3. Role Membership</a></span></dt><dt><span class="sect1"><a href="role-removal.html">21.4. Dropping Roles</a></span></dt><dt><span class="sect1"><a href="default-roles.html">21.5. Default Roles</a></span></dt><dt><span class="sect1"><a href="perm-functions.html">21.6. Function Security</a></span></dt></dl></dd><dt><span class="chapter"><a href="managing-databases.html">22. Managing Databases</a></span></dt><dd><dl><dt><span class="sect1"><a href="manage-ag-overview.html">22.1. Overview</a></span></dt><dt><span class="sect1"><a href="manage-ag-createdb.html">22.2. Creating a Database</a></span></dt><dt><span class="sect1"><a href="manage-ag-templatedbs.html">22.3. Template Databases</a></span></dt><dt><span class="sect1"><a href="manage-ag-config.html">22.4. Database Configuration</a></span></dt><dt><span class="sect1"><a href="manage-ag-dropdb.html">22.5. Destroying a Database</a></span></dt><dt><span class="sect1"><a href="manage-ag-tablespaces.html">22.6. Tablespaces</a></span></dt></dl></dd><dt><span class="chapter"><a href="charset.html">23. Localization</a></span></dt><dd><dl><dt><span class="sect1"><a href="locale.html">23.1. Locale Support</a></span></dt><dt><span class="sect1"><a href="collation.html">23.2. Collation Support</a></span></dt><dt><span class="sect1"><a href="multibyte.html">23.3. Character Set Support</a></span></dt></dl></dd><dt><span class="chapter"><a href="maintenance.html">24. Routine Database Maintenance Tasks</a></span></dt><dd><dl><dt><span class="sect1"><a href="routine-vacuuming.html">24.1. Routine Vacuuming</a></span></dt><dt><span class="sect1"><a href="routine-reindex.html">24.2. Routine Reindexing</a></span></dt><dt><span class="sect1"><a href="logfile-maintenance.html">24.3. Log File Maintenance</a></span></dt></dl></dd><dt><span class="chapter"><a href="backup.html">25. Backup and Restore</a></span></dt><dd><dl><dt><span class="sect1"><a href="backup-dump.html">25.1. <acronym class="acronym">SQL</acronym> Dump</a></span></dt><dt><span class="sect1"><a href="backup-file.html">25.2. File System Level Backup</a></span></dt><dt><span class="sect1"><a href="continuous-archiving.html">25.3. Continuous Archiving and Point-in-Time Recovery (PITR)</a></span></dt></dl></dd><dt><span class="chapter"><a href="high-availability.html">26. High Availability, Load Balancing, and Replication</a></span></dt><dd><dl><dt><span class="sect1"><a href="different-replication-solutions.html">26.1. Comparison of Different Solutions</a></span></dt><dt><span class="sect1"><a href="warm-standby.html">26.2. Log-Shipping Standby Servers</a></span></dt><dt><span class="sect1"><a href="warm-standby-failover.html">26.3. Failover</a></span></dt><dt><span class="sect1"><a href="log-shipping-alternative.html">26.4. Alternative Method for Log Shipping</a></span></dt><dt><span class="sect1"><a href="hot-standby.html">26.5. Hot Standby</a></span></dt></dl></dd><dt><span class="chapter"><a href="recovery-config.html">27. Recovery Configuration</a></span></dt><dd><dl><dt><span class="sect1"><a href="archive-recovery-settings.html">27.1. Archive Recovery Settings</a></span></dt><dt><span class="sect1"><a href="recovery-target-settings.html">27.2. Recovery Target Settings</a></span></dt><dt><span class="sect1"><a href="standby-settings.html">27.3. Standby Server Settings</a></span></dt></dl></dd><dt><span class="chapter"><a href="monitoring.html">28. Monitoring Database Activity</a></span></dt><dd><dl><dt><span class="sect1"><a href="monitoring-ps.html">28.1. Standard Unix Tools</a></span></dt><dt><span class="sect1"><a href="monitoring-stats.html">28.2. The Statistics Collector</a></span></dt><dt><span class="sect1"><a href="monitoring-locks.html">28.3. Viewing Locks</a></span></dt><dt><span class="sect1"><a href="progress-reporting.html">28.4. Progress Reporting</a></span></dt><dt><span class="sect1"><a href="dynamic-trace.html">28.5. Dynamic Tracing</a></span></dt></dl></dd><dt><span class="chapter"><a href="diskusage.html">29. Monitoring Disk Usage</a></span></dt><dd><dl><dt><span class="sect1"><a href="disk-usage.html">29.1. Determining Disk Usage</a></span></dt><dt><span class="sect1"><a href="disk-full.html">29.2. Disk Full Failure</a></span></dt></dl></dd><dt><span class="chapter"><a href="wal.html">30. Reliability and the Write-Ahead Log</a></span></dt><dd><dl><dt><span class="sect1"><a href="wal-reliability.html">30.1. Reliability</a></span></dt><dt><span class="sect1"><a href="wal-intro.html">30.2. Write-Ahead Logging (<acronym class="acronym">WAL</acronym>)</a></span></dt><dt><span class="sect1"><a href="wal-async-commit.html">30.3. Asynchronous Commit</a></span></dt><dt><span class="sect1"><a href="wal-configuration.html">30.4. <acronym class="acronym">WAL</acronym> Configuration</a></span></dt><dt><span class="sect1"><a href="wal-internals.html">30.5. WAL Internals</a></span></dt></dl></dd><dt><span class="chapter"><a href="logical-replication.html">31. Logical Replication</a></span></dt><dd><dl><dt><span class="sect1"><a href="logical-replication-publication.html">31.1. Publication</a></span></dt><dt><span class="sect1"><a href="logical-replication-subscription.html">31.2. Subscription</a></span></dt><dt><span class="sect1"><a href="logical-replication-conflicts.html">31.3. Conflicts</a></span></dt><dt><span class="sect1"><a href="logical-replication-restrictions.html">31.4. Restrictions</a></span></dt><dt><span class="sect1"><a href="logical-replication-architecture.html">31.5. Architecture</a></span></dt><dt><span class="sect1"><a href="logical-replication-monitoring.html">31.6. Monitoring</a></span></dt><dt><span class="sect1"><a href="logical-replication-security.html">31.7. Security</a></span></dt><dt><span class="sect1"><a href="logical-replication-config.html">31.8. Configuration Settings</a></span></dt><dt><span class="sect1"><a href="logical-replication-quick-setup.html">31.9. Quick Setup</a></span></dt></dl></dd><dt><span class="chapter"><a href="regress.html">32. Regression Tests</a></span></dt><dd><dl><dt><span class="sect1"><a href="regress-run.html">32.1. Running the Tests</a></span></dt><dt><span class="sect1"><a href="regress-evaluation.html">32.2. Test Evaluation</a></span></dt><dt><span class="sect1"><a href="regress-variant.html">32.3. Variant Comparison Files</a></span></dt><dt><span class="sect1"><a href="regress-tap.html">32.4. TAP Tests</a></span></dt><dt><span class="sect1"><a href="regress-coverage.html">32.5. Test Coverage Examination</a></span></dt></dl></dd></dl></div></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="parallel-safety.html" title="15.4. Parallel Safety">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html" title="PostgreSQL 10.20 Documentation">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="installation.html" title="Chapter 16.  Installation from Source Code">Next</a></td></tr><tr><td width="40%" align="left" valign="top">15.4. Parallel Safety </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="40%" align="right" valign="top"> Chapter 16.  Installation from Source Code</td></tr></table></div></body></html>
24\ No newline at end of file23\ No newline at end of file
24 <span class="productname">Microsoft Windows SDK</span></a></span></dt></dl></dd><dt><span class="chapter"><a href="runtime.html">18. Server Setup and Operation</a></span></dt><dd><dl><dt><span class="sect1"><a href="postgres-user.html">18.1. The <span class="productname">PostgreSQL</span> User Account</a></span></dt><dt><span class="sect1"><a href="creating-cluster.html">18.2. Creating a Database Cluster</a></span></dt><dt><span class="sect1"><a href="server-start.html">18.3. Starting the Database Server</a></span></dt><dt><span class="sect1"><a href="kernel-resources.html">18.4. Managing Kernel Resources</a></span></dt><dt><span class="sect1"><a href="server-shutdown.html">18.5. Shutting Down the Server</a></span></dt><dt><span class="sect1"><a href="upgrading.html">18.6. Upgrading a <span class="productname">PostgreSQL</span> Cluster</a></span></dt><dt><span class="sect1"><a href="preventing-server-spoofing.html">18.7. Preventing Server Spoofing</a></span></dt><dt><span class="sect1"><a href="encryption-options.html">18.8. Encryption Options</a></span></dt><dt><span class="sect1"><a href="ssl-tcp.html">18.9. Secure TCP/IP Connections with SSL</a></span></dt><dt><span class="sect1"><a href="ssh-tunnels.html">18.10. Secure TCP/IP Connections with <span class="application">SSH</span> Tunnels</a></span></dt><dt><span class="sect1"><a href="event-log-registration.html">18.11. Registering <span class="application">Event Log</span> on <span class="systemitem">Windows</span></a></span></dt></dl></dd><dt><span class="chapter"><a href="runtime-config.html">19. Server Configuration</a></span></dt><dd><dl><dt><span class="sect1"><a href="config-setting.html">19.1. Setting Parameters</a></span></dt><dt><span class="sect1"><a href="runtime-config-file-locations.html">19.2. File Locations</a></span></dt><dt><span class="sect1"><a href="runtime-config-connection.html">19.3. Connections and Authentication</a></span></dt><dt><span class="sect1"><a href="runtime-config-resource.html">19.4. Resource Consumption</a></span></dt><dt><span class="sect1"><a href="runtime-config-wal.html">19.5. Write Ahead Log</a></span></dt><dt><span class="sect1"><a href="runtime-config-replication.html">19.6. Replication</a></span></dt><dt><span class="sect1"><a href="runtime-config-query.html">19.7. Query Planning</a></span></dt><dt><span class="sect1"><a href="runtime-config-logging.html">19.8. Error Reporting and Logging</a></span></dt><dt><span class="sect1"><a href="runtime-config-statistics.html">19.9. Run-time Statistics</a></span></dt><dt><span class="sect1"><a href="runtime-config-autovacuum.html">19.10. Automatic Vacuuming</a></span></dt><dt><span class="sect1"><a href="runtime-config-client.html">19.11. Client Connection Defaults</a></span></dt><dt><span class="sect1"><a href="runtime-config-locks.html">19.12. Lock Management</a></span></dt><dt><span class="sect1"><a href="runtime-config-compatible.html">19.13. Version and Platform Compatibility</a></span></dt><dt><span class="sect1"><a href="runtime-config-error-handling.html">19.14. Error Handling</a></span></dt><dt><span class="sect1"><a href="runtime-config-preset.html">19.15. Preset Options</a></span></dt><dt><span class="sect1"><a href="runtime-config-custom.html">19.16. Customized Options</a></span></dt><dt><span class="sect1"><a href="runtime-config-developer.html">19.17. Developer Options</a></span></dt><dt><span class="sect1"><a href="runtime-config-short.html">19.18. Short Options</a></span></dt></dl></dd><dt><span class="chapter"><a href="client-authentication.html">20. Client Authentication</a></span></dt><dd><dl><dt><span class="sect1"><a href="auth-pg-hba-conf.html">20.1. The <code class="filename">pg_hba.conf</code> File</a></span></dt><dt><span class="sect1"><a href="auth-username-maps.html">20.2. User Name Maps</a></span></dt><dt><span class="sect1"><a href="auth-methods.html">20.3. Authentication Methods</a></span></dt><dt><span class="sect1"><a href="client-authentication-problems.html">20.4. Authentication Problems</a></span></dt></dl></dd><dt><span class="chapter"><a href="user-manag.html">21. Database Roles</a></span></dt><dd><dl><dt><span class="sect1"><a href="database-roles.html">21.1. Database Roles</a></span></dt><dt><span class="sect1"><a href="role-attributes.html">21.2. Role Attributes</a></span></dt><dt><span class="sect1"><a href="role-membership.html">21.3. Role Membership</a></span></dt><dt><span class="sect1"><a href="role-removal.html">21.4. Dropping Roles</a></span></dt><dt><span class="sect1"><a href="default-roles.html">21.5. Default Roles</a></span></dt><dt><span class="sect1"><a href="perm-functions.html">21.6. Function Security</a></span></dt></dl></dd><dt><span class="chapter"><a href="managing-databases.html">22. Managing Databases</a></span></dt><dd><dl><dt><span class="sect1"><a href="manage-ag-overview.html">22.1. Overview</a></span></dt><dt><span class="sect1"><a href="manage-ag-createdb.html">22.2. Creating a Database</a></span></dt><dt><span class="sect1"><a href="manage-ag-templatedbs.html">22.3. Template Databases</a></span></dt><dt><span class="sect1"><a href="manage-ag-config.html">22.4. Database Configuration</a></span></dt><dt><span class="sect1"><a href="manage-ag-dropdb.html">22.5. Destroying a Database</a></span></dt><dt><span class="sect1"><a href="manage-ag-tablespaces.html">22.6. Tablespaces</a></span></dt></dl></dd><dt><span class="chapter"><a href="charset.html">23. Localization</a></span></dt><dd><dl><dt><span class="sect1"><a href="locale.html">23.1. Locale Support</a></span></dt><dt><span class="sect1"><a href="collation.html">23.2. Collation Support</a></span></dt><dt><span class="sect1"><a href="multibyte.html">23.3. Character Set Support</a></span></dt></dl></dd><dt><span class="chapter"><a href="maintenance.html">24. Routine Database Maintenance Tasks</a></span></dt><dd><dl><dt><span class="sect1"><a href="routine-vacuuming.html">24.1. Routine Vacuuming</a></span></dt><dt><span class="sect1"><a href="routine-reindex.html">24.2. Routine Reindexing</a></span></dt><dt><span class="sect1"><a href="logfile-maintenance.html">24.3. Log File Maintenance</a></span></dt></dl></dd><dt><span class="chapter"><a href="backup.html">25. Backup and Restore</a></span></dt><dd><dl><dt><span class="sect1"><a href="backup-dump.html">25.1. <acronym class="acronym">SQL</acronym> Dump</a></span></dt><dt><span class="sect1"><a href="backup-file.html">25.2. File System Level Backup</a></span></dt><dt><span class="sect1"><a href="continuous-archiving.html">25.3. Continuous Archiving and Point-in-Time Recovery (PITR)</a></span></dt></dl></dd><dt><span class="chapter"><a href="high-availability.html">26. High Availability, Load Balancing, and Replication</a></span></dt><dd><dl><dt><span class="sect1"><a href="different-replication-solutions.html">26.1. Comparison of Different Solutions</a></span></dt><dt><span class="sect1"><a href="warm-standby.html">26.2. Log-Shipping Standby Servers</a></span></dt><dt><span class="sect1"><a href="warm-standby-failover.html">26.3. Failover</a></span></dt><dt><span class="sect1"><a href="log-shipping-alternative.html">26.4. Alternative Method for Log Shipping</a></span></dt><dt><span class="sect1"><a href="hot-standby.html">26.5. Hot Standby</a></span></dt></dl></dd><dt><span class="chapter"><a href="recovery-config.html">27. Recovery Configuration</a></span></dt><dd><dl><dt><span class="sect1"><a href="archive-recovery-settings.html">27.1. Archive Recovery Settings</a></span></dt><dt><span class="sect1"><a href="recovery-target-settings.html">27.2. Recovery Target Settings</a></span></dt><dt><span class="sect1"><a href="standby-settings.html">27.3. Standby Server Settings</a></span></dt></dl></dd><dt><span class="chapter"><a href="monitoring.html">28. Monitoring Database Activity</a></span></dt><dd><dl><dt><span class="sect1"><a href="monitoring-ps.html">28.1. Standard Unix Tools</a></span></dt><dt><span class="sect1"><a href="monitoring-stats.html">28.2. The Statistics Collector</a></span></dt><dt><span class="sect1"><a href="monitoring-locks.html">28.3. Viewing Locks</a></span></dt><dt><span class="sect1"><a href="progress-reporting.html">28.4. Progress Reporting</a></span></dt><dt><span class="sect1"><a href="dynamic-trace.html">28.5. Dynamic Tracing</a></span></dt></dl></dd><dt><span class="chapter"><a href="diskusage.html">29. Monitoring Disk Usage</a></span></dt><dd><dl><dt><span class="sect1"><a href="disk-usage.html">29.1. Determining Disk Usage</a></span></dt><dt><span class="sect1"><a href="disk-full.html">29.2. Disk Full Failure</a></span></dt></dl></dd><dt><span class="chapter"><a href="wal.html">30. Reliability and the Write-Ahead Log</a></span></dt><dd><dl><dt><span class="sect1"><a href="wal-reliability.html">30.1. Reliability</a></span></dt><dt><span class="sect1"><a href="wal-intro.html">30.2. Write-Ahead Logging (<acronym class="acronym">WAL</acronym>)</a></span></dt><dt><span class="sect1"><a href="wal-async-commit.html">30.3. Asynchronous Commit</a></span></dt><dt><span class="sect1"><a href="wal-configuration.html">30.4. <acronym class="acronym">WAL</acronym> Configuration</a></span></dt><dt><span class="sect1"><a href="wal-internals.html">30.5. WAL Internals</a></span></dt></dl></dd><dt><span class="chapter"><a href="logical-replication.html">31. Logical Replication</a></span></dt><dd><dl><dt><span class="sect1"><a href="logical-replication-publication.html">31.1. Publication</a></span></dt><dt><span class="sect1"><a href="logical-replication-subscription.html">31.2. Subscription</a></span></dt><dt><span class="sect1"><a href="logical-replication-conflicts.html">31.3. Conflicts</a></span></dt><dt><span class="sect1"><a href="logical-replication-restrictions.html">31.4. Restrictions</a></span></dt><dt><span class="sect1"><a href="logical-replication-architecture.html">31.5. Architecture</a></span></dt><dt><span class="sect1"><a href="logical-replication-monitoring.html">31.6. Monitoring</a></span></dt><dt><span class="sect1"><a href="logical-replication-security.html">31.7. Security</a></span></dt><dt><span class="sect1"><a href="logical-replication-config.html">31.8. Configuration Settings</a></span></dt><dt><span class="sect1"><a href="logical-replication-quick-setup.html">31.9. Quick Setup</a></span></dt></dl></dd><dt><span class="chapter"><a href="regress.html">32. Regression Tests</a></span></dt><dd><dl><dt><span class="sect1"><a href="regress-run.html">32.1. Running the Tests</a></span></dt><dt><span class="sect1"><a href="regress-evaluation.html">32.2. Test Evaluation</a></span></dt><dt><span class="sect1"><a href="regress-variant.html">32.3. Variant Comparison Files</a></span></dt><dt><span class="sect1"><a href="regress-tap.html">32.4. TAP Tests</a></span></dt><dt><span class="sect1"><a href="regress-coverage.html">32.5. Test Coverage Examination</a></span></dt></dl></dd></dl></div></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="parallel-safety.html" title="15.4. Parallel Safety">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html" title="PostgreSQL 10.21 Documentation">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="installation.html" title="Chapter 16.  Installation from Source Code">Next</a></td></tr><tr><td width="40%" align="left" valign="top">15.4. Parallel Safety </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="40%" align="right" valign="top"> Chapter 16.  Installation from Source Code</td></tr></table></div></body></html>
25\ No newline at end of file25\ No newline at end of file
diff --git a/doc/src/sgml/html/adminpack.html b/doc/src/sgml/html/adminpack.html
index 1cd9a5c..caddb7f 100644
--- a/doc/src/sgml/html/adminpack.html
+++ b/doc/src/sgml/html/adminpack.html
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>F.1. adminpack</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="contrib.html" title="Appendix F. Additional Supplied Modules" /><link rel="next" href="amcheck.html" title="F.2. amcheck" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">F.1. adminpack</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="contrib.html" title="Appendix F. Additional Supplied Modules">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="contrib.html" title="Appendix F. Additional Supplied Modules">Up</a></td><th width="60%" align="center">Appendix F. Additional Supplied Modules</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="amcheck.html" title="F.2. amcheck">Next</a></td></tr></table><hr></hr></div><div class="sect1" id="ADMINPACK"><div class="titlepage"><div><div><h2 class="title" style="clear: both">F.1. adminpack</h2></div></div></div><a id="id-1.11.7.10.2" class="indexterm"></a><p> <code class="filename">adminpack</code> provides a number of support functions which2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>F.1. adminpack</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="contrib.html" title="Appendix F. Additional Supplied Modules" /><link rel="next" href="amcheck.html" title="F.2. amcheck" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">F.1. adminpack</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="contrib.html" title="Appendix F. Additional Supplied Modules">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="contrib.html" title="Appendix F. Additional Supplied Modules">Up</a></td><th width="60%" align="center">Appendix F. Additional Supplied Modules</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="amcheck.html" title="F.2. amcheck">Next</a></td></tr></table><hr></hr></div><div class="sect1" id="ADMINPACK"><div class="titlepage"><div><div><h2 class="title" style="clear: both">F.1. adminpack</h2></div></div></div><a id="id-1.11.7.10.2" class="indexterm"></a><p> <code class="filename">adminpack</code> provides a number of support functions which
3 <span class="application">pgAdmin</span> and other administration and management tools can3 <span class="application">pgAdmin</span> and other administration and management tools can
4 use to provide additional functionality, such as remote management4 use to provide additional functionality, such as remote management
5 of server log files.5 of server log files.
@@ -50,4 +50,4 @@
50 by <code class="function">pg_stat_file()</code>50 by <code class="function">pg_stat_file()</code>
51 </td></tr><tr><td><code class="function">pg_catalog.pg_logfile_rotate()</code></td><td><code class="type">integer</code></td><td> Alternate name for <code class="function">pg_rotate_logfile()</code>, but note that it51 </td></tr><tr><td><code class="function">pg_catalog.pg_logfile_rotate()</code></td><td><code class="type">integer</code></td><td> Alternate name for <code class="function">pg_rotate_logfile()</code>, but note that it
52 returns integer 0 or 1 rather than <code class="type">boolean</code>52 returns integer 0 or 1 rather than <code class="type">boolean</code>
53 </td></tr></tbody></table></div></div><br class="table-break" /></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="contrib.html" title="Appendix F. Additional Supplied Modules">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="contrib.html" title="Appendix F. Additional Supplied Modules">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="amcheck.html" title="F.2. amcheck">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix F. Additional Supplied Modules </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="40%" align="right" valign="top"> F.2. amcheck</td></tr></table></div></body></html>
54\ No newline at end of file53\ No newline at end of file
54 </td></tr></tbody></table></div></div><br class="table-break" /></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="contrib.html" title="Appendix F. Additional Supplied Modules">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="contrib.html" title="Appendix F. Additional Supplied Modules">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="amcheck.html" title="F.2. amcheck">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix F. Additional Supplied Modules </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="40%" align="right" valign="top"> F.2. amcheck</td></tr></table></div></body></html>
55\ No newline at end of file55\ No newline at end of file
diff --git a/doc/src/sgml/html/amcheck.html b/doc/src/sgml/html/amcheck.html
index 2427489..b062a70 100644
--- a/doc/src/sgml/html/amcheck.html
+++ b/doc/src/sgml/html/amcheck.html
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>F.2. amcheck</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="adminpack.html" title="F.1. adminpack" /><link rel="next" href="auth-delay.html" title="F.3. auth_delay" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">F.2. amcheck</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="adminpack.html" title="F.1. adminpack">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="contrib.html" title="Appendix F. Additional Supplied Modules">Up</a></td><th width="60%" align="center">Appendix F. Additional Supplied Modules</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="auth-delay.html" title="F.3. auth_delay">Next</a></td></tr></table><hr></hr></div><div class="sect1" id="AMCHECK"><div class="titlepage"><div><div><h2 class="title" style="clear: both">F.2. amcheck</h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="sect2"><a href="amcheck.html#id-1.11.7.11.7">F.2.1. Functions</a></span></dt><dt><span class="sect2"><a href="amcheck.html#id-1.11.7.11.8">F.2.2. Using <code class="filename">amcheck</code> effectively</a></span></dt><dt><span class="sect2"><a href="amcheck.html#id-1.11.7.11.9">F.2.3. Repairing corruption</a></span></dt></dl></div><a id="id-1.11.7.11.2" class="indexterm"></a><p> The <code class="filename">amcheck</code> module provides functions that allow you to2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>F.2. amcheck</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="adminpack.html" title="F.1. adminpack" /><link rel="next" href="auth-delay.html" title="F.3. auth_delay" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">F.2. amcheck</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="adminpack.html" title="F.1. adminpack">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="contrib.html" title="Appendix F. Additional Supplied Modules">Up</a></td><th width="60%" align="center">Appendix F. Additional Supplied Modules</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="auth-delay.html" title="F.3. auth_delay">Next</a></td></tr></table><hr></hr></div><div class="sect1" id="AMCHECK"><div class="titlepage"><div><div><h2 class="title" style="clear: both">F.2. amcheck</h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="sect2"><a href="amcheck.html#id-1.11.7.11.7">F.2.1. Functions</a></span></dt><dt><span class="sect2"><a href="amcheck.html#id-1.11.7.11.8">F.2.2. Using <code class="filename">amcheck</code> effectively</a></span></dt><dt><span class="sect2"><a href="amcheck.html#id-1.11.7.11.9">F.2.3. Repairing corruption</a></span></dt></dl></div><a id="id-1.11.7.11.2" class="indexterm"></a><p> The <code class="filename">amcheck</code> module provides functions that allow you to
3 verify the logical consistency of the structure of indexes. If the3 verify the logical consistency of the structure of indexes. If the
4 structure appears to be valid, no error is raised.4 structure appears to be valid, no error is raised.
5 </p><p> The functions verify various <span class="emphasis"><em>invariants</em></span> in the5 </p><p> The functions verify various <span class="emphasis"><em>invariants</em></span> in the
@@ -165,4 +165,4 @@ ORDER BY c.relpages DESC LIMIT 10;
165 an invariant violation should be sought. <a class="xref" href="pageinspect.html" title="F.23. pageinspect">pageinspect</a> may play a useful role in diagnosing165 an invariant violation should be sought. <a class="xref" href="pageinspect.html" title="F.23. pageinspect">pageinspect</a> may play a useful role in diagnosing
166 corruption that <code class="filename">amcheck</code> detects. A <code class="command">REINDEX</code>166 corruption that <code class="filename">amcheck</code> detects. A <code class="command">REINDEX</code>
167 may not be effective in repairing corruption.167 may not be effective in repairing corruption.
168 </p></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="adminpack.html" title="F.1. adminpack">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="contrib.html" title="Appendix F. Additional Supplied Modules">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="auth-delay.html" title="F.3. auth_delay">Next</a></td></tr><tr><td width="40%" align="left" valign="top">F.1. adminpack </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="40%" align="right" valign="top"> F.3. auth_delay</td></tr></table></div></body></html>
169\ No newline at end of file168\ No newline at end of file
169 </p></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="adminpack.html" title="F.1. adminpack">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="contrib.html" title="Appendix F. Additional Supplied Modules">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="auth-delay.html" title="F.3. auth_delay">Next</a></td></tr><tr><td width="40%" align="left" valign="top">F.1. adminpack </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="40%" align="right" valign="top"> F.3. auth_delay</td></tr></table></div></body></html>
170\ No newline at end of file170\ No newline at end of file
diff --git a/doc/src/sgml/html/app-clusterdb.html b/doc/src/sgml/html/app-clusterdb.html
index 90d69c5..377f368 100644
--- a/doc/src/sgml/html/app-clusterdb.html
+++ b/doc/src/sgml/html/app-clusterdb.html
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>clusterdb</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="reference-client.html" title="PostgreSQL Client Applications" /><link rel="next" href="app-createdb.html" title="createdb" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center"><span xmlns="http://www.w3.org/1999/xhtml" class="application">clusterdb</span></th></tr><tr><td width="10%" align="left"><a accesskey="p" href="reference-client.html" title="PostgreSQL Client Applications">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-createdb.html" title="createdb">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-CLUSTERDB"><div class="titlepage"></div><a id="id-1.9.4.3.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle"><span class="application">clusterdb</span></span></h2><p>clusterdb — cluster a <span class="productname">PostgreSQL</span> database</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.3.4.1"><code class="command">clusterdb</code> [<em class="replaceable"><code>connection-option</code></em>...] [ <code class="option">--verbose</code> | <code class="option">-v</code> ] [ <code class="option">--table</code> | <code class="option">-t</code> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>clusterdb</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="reference-client.html" title="PostgreSQL Client Applications" /><link rel="next" href="app-createdb.html" title="createdb" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center"><span xmlns="http://www.w3.org/1999/xhtml" class="application">clusterdb</span></th></tr><tr><td width="10%" align="left"><a accesskey="p" href="reference-client.html" title="PostgreSQL Client Applications">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-createdb.html" title="createdb">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-CLUSTERDB"><div class="titlepage"></div><a id="id-1.9.4.3.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle"><span class="application">clusterdb</span></span></h2><p>clusterdb — cluster a <span class="productname">PostgreSQL</span> database</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.3.4.1"><code class="command">clusterdb</code> [<em class="replaceable"><code>connection-option</code></em>...] [ <code class="option">--verbose</code> | <code class="option">-v</code> ] [ <code class="option">--table</code> | <code class="option">-t</code>
3 <em class="replaceable"><code>table</code></em>3 <em class="replaceable"><code>table</code></em>
4 ]4 ]
5 ... [<em class="replaceable"><code>dbname</code></em>]</p></div><div class="cmdsynopsis"><p id="id-1.9.4.3.4.2"><code class="command">clusterdb</code> [<em class="replaceable"><code>connection-option</code></em>...] [ <code class="option">--verbose</code> | <code class="option">-v</code> ] <code class="option">--all</code> | <code class="option">-a</code> </p></div></div><div class="refsect1" id="id-1.9.4.3.5"><h2>Description</h2><p> <span class="application">clusterdb</span> is a utility for reclustering tables5 ... [<em class="replaceable"><code>dbname</code></em>]</p></div><div class="cmdsynopsis"><p id="id-1.9.4.3.4.2"><code class="command">clusterdb</code> [<em class="replaceable"><code>connection-option</code></em>...] [ <code class="option">--verbose</code> | <code class="option">-v</code> ] <code class="option">--all</code> | <code class="option">-a</code> </p></div></div><div class="refsect1" id="id-1.9.4.3.5"><h2>Description</h2><p> <span class="application">clusterdb</span> is a utility for reclustering tables
@@ -85,4 +85,4 @@
85 </p><p> To cluster a single table85 </p><p> To cluster a single table
86 <code class="literal">foo</code> in a database named86 <code class="literal">foo</code> in a database named
87 <code class="literal">xyzzy</code>:87 <code class="literal">xyzzy</code>:
88</p><pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>clusterdb --table=foo xyzzy</code></strong></pre></div><div class="refsect1" id="id-1.9.4.3.10"><h2>See Also</h2><span class="simplelist"><a class="xref" href="sql-cluster.html" title="CLUSTER"><span class="refentrytitle">CLUSTER</span></a></span></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="reference-client.html" title="PostgreSQL Client Applications">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-createdb.html" title="createdb">Next</a></td></tr><tr><td width="40%" align="left" valign="top">PostgreSQL Client Applications </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="40%" align="right" valign="top"> <span xmlns="http://www.w3.org/1999/xhtml" class="application">createdb</span></td></tr></table></div></body></html>
89\ No newline at end of file88\ No newline at end of file
89</p><pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>clusterdb --table=foo xyzzy</code></strong></pre></div><div class="refsect1" id="id-1.9.4.3.10"><h2>See Also</h2><span class="simplelist"><a class="xref" href="sql-cluster.html" title="CLUSTER"><span class="refentrytitle">CLUSTER</span></a></span></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="reference-client.html" title="PostgreSQL Client Applications">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-createdb.html" title="createdb">Next</a></td></tr><tr><td width="40%" align="left" valign="top">PostgreSQL Client Applications </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="40%" align="right" valign="top"> <span xmlns="http://www.w3.org/1999/xhtml" class="application">createdb</span></td></tr></table></div></body></html>
90\ No newline at end of file90\ No newline at end of file
diff --git a/doc/src/sgml/html/app-createdb.html b/doc/src/sgml/html/app-createdb.html
index 564b318..a533bcb 100644
--- a/doc/src/sgml/html/app-createdb.html
+++ b/doc/src/sgml/html/app-createdb.html
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>createdb</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="app-clusterdb.html" title="clusterdb" /><link rel="next" href="app-createuser.html" title="createuser" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center"><span xmlns="http://www.w3.org/1999/xhtml" class="application">createdb</span></th></tr><tr><td width="10%" align="left"><a accesskey="p" href="app-clusterdb.html" title="clusterdb">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-createuser.html" title="createuser">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-CREATEDB"><div class="titlepage"></div><a id="id-1.9.4.4.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle"><span class="application">createdb</span></span></h2><p>createdb — create a new <span class="productname">PostgreSQL</span> database</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.4.4.1"><code class="command">createdb</code> [<em class="replaceable"><code>connection-option</code></em>...] [<em class="replaceable"><code>option</code></em>...] [<em class="replaceable"><code>dbname</code></em>2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>createdb</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="app-clusterdb.html" title="clusterdb" /><link rel="next" href="app-createuser.html" title="createuser" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center"><span xmlns="http://www.w3.org/1999/xhtml" class="application">createdb</span></th></tr><tr><td width="10%" align="left"><a accesskey="p" href="app-clusterdb.html" title="clusterdb">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-createuser.html" title="createuser">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-CREATEDB"><div class="titlepage"></div><a id="id-1.9.4.4.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle"><span class="application">createdb</span></span></h2><p>createdb — create a new <span class="productname">PostgreSQL</span> database</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.4.4.1"><code class="command">createdb</code> [<em class="replaceable"><code>connection-option</code></em>...] [<em class="replaceable"><code>option</code></em>...] [<em class="replaceable"><code>dbname</code></em>
3 [<em class="replaceable"><code>description</code></em>]]</p></div></div><div class="refsect1" id="R1-APP-CREATEDB-1"><h2> Description3 [<em class="replaceable"><code>description</code></em>]]</p></div></div><div class="refsect1" id="R1-APP-CREATEDB-1"><h2> Description
4 </h2><p> <span class="application">createdb</span> creates a new <span class="productname">PostgreSQL</span>4 </h2><p> <span class="application">createdb</span> creates a new <span class="productname">PostgreSQL</span>
5 database.5 database.
@@ -100,4 +100,4 @@
100 <code class="literal">template0</code> template database, here is the100 <code class="literal">template0</code> template database, here is the
101 command-line command and the underlying SQL command:101 command-line command and the underlying SQL command:
102</p><pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>createdb -p 5000 -h eden -T template0 -e demo</code></strong>102</p><pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>createdb -p 5000 -h eden -T template0 -e demo</code></strong>
103<code class="computeroutput">CREATE DATABASE demo TEMPLATE template0;</code></pre></div><div class="refsect1" id="id-1.9.4.4.10"><h2>See Also</h2><span class="simplelist"><a class="xref" href="app-dropdb.html" title="dropdb"><span class="refentrytitle"><span class="application">dropdb</span></span></a>, <a class="xref" href="sql-createdatabase.html" title="CREATE DATABASE"><span class="refentrytitle">CREATE DATABASE</span></a></span></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="app-clusterdb.html" title="clusterdb">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-createuser.html" title="createuser">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span xmlns="http://www.w3.org/1999/xhtml" class="application">clusterdb</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="40%" align="right" valign="top"> <span xmlns="http://www.w3.org/1999/xhtml" class="application">createuser</span></td></tr></table></div></body></html>
104\ No newline at end of file103\ No newline at end of file
104<code class="computeroutput">CREATE DATABASE demo TEMPLATE template0;</code></pre></div><div class="refsect1" id="id-1.9.4.4.10"><h2>See Also</h2><span class="simplelist"><a class="xref" href="app-dropdb.html" title="dropdb"><span class="refentrytitle"><span class="application">dropdb</span></span></a>, <a class="xref" href="sql-createdatabase.html" title="CREATE DATABASE"><span class="refentrytitle">CREATE DATABASE</span></a></span></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="app-clusterdb.html" title="clusterdb">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-createuser.html" title="createuser">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span xmlns="http://www.w3.org/1999/xhtml" class="application">clusterdb</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="40%" align="right" valign="top"> <span xmlns="http://www.w3.org/1999/xhtml" class="application">createuser</span></td></tr></table></div></body></html>
105\ No newline at end of file105\ No newline at end of file
diff --git a/doc/src/sgml/html/app-createuser.html b/doc/src/sgml/html/app-createuser.html
index 9438b8f..9b3e2ce 100644
--- a/doc/src/sgml/html/app-createuser.html
+++ b/doc/src/sgml/html/app-createuser.html
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>createuser</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="app-createdb.html" title="createdb" /><link rel="next" href="app-dropdb.html" title="dropdb" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center"><span xmlns="http://www.w3.org/1999/xhtml" class="application">createuser</span></th></tr><tr><td width="10%" align="left"><a accesskey="p" href="app-createdb.html" title="createdb">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-dropdb.html" title="dropdb">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-CREATEUSER"><div class="titlepage"></div><a id="id-1.9.4.5.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle"><span class="application">createuser</span></span></h2><p>createuser — define a new <span class="productname">PostgreSQL</span> user account</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.5.4.1"><code class="command">createuser</code> [<em class="replaceable"><code>connection-option</code></em>...] [<em class="replaceable"><code>option</code></em>...] [<em class="replaceable"><code>username</code></em>]</p></div></div><div class="refsect1" id="id-1.9.4.5.5"><h2>Description</h2><p> <span class="application">createuser</span> creates a2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>createuser</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="app-createdb.html" title="createdb" /><link rel="next" href="app-dropdb.html" title="dropdb" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center"><span xmlns="http://www.w3.org/1999/xhtml" class="application">createuser</span></th></tr><tr><td width="10%" align="left"><a accesskey="p" href="app-createdb.html" title="createdb">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-dropdb.html" title="dropdb">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-CREATEUSER"><div class="titlepage"></div><a id="id-1.9.4.5.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle"><span class="application">createuser</span></span></h2><p>createuser — define a new <span class="productname">PostgreSQL</span> user account</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.5.4.1"><code class="command">createuser</code> [<em class="replaceable"><code>connection-option</code></em>...] [<em class="replaceable"><code>option</code></em>...] [<em class="replaceable"><code>username</code></em>]</p></div></div><div class="refsect1" id="id-1.9.4.5.5"><h2>Description</h2><p> <span class="application">createuser</span> creates a
3 new <span class="productname">PostgreSQL</span> user (or more precisely, a role).3 new <span class="productname">PostgreSQL</span> user (or more precisely, a role).
4 Only superusers and users with <code class="literal">CREATEROLE</code> privilege can create4 Only superusers and users with <code class="literal">CREATEROLE</code> privilege can create
5 new users, so <span class="application">createuser</span> must be5 new users, so <span class="application">createuser</span> must be
@@ -128,4 +128,4 @@
128 In the above example, the new password isn't actually echoed when typed,128 In the above example, the new password isn't actually echoed when typed,
129 but we show what was typed for clarity. As you see, the password is129 but we show what was typed for clarity. As you see, the password is
130 encrypted before it is sent to the client.130 encrypted before it is sent to the client.
131 </p></div><div class="refsect1" id="id-1.9.4.5.10"><h2>See Also</h2><span class="simplelist"><a class="xref" href="app-dropuser.html" title="dropuser"><span class="refentrytitle"><span class="application">dropuser</span></span></a>, <a class="xref" href="sql-createrole.html" title="CREATE ROLE"><span class="refentrytitle">CREATE ROLE</span></a></span></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="app-createdb.html" title="createdb">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-dropdb.html" title="dropdb">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span xmlns="http://www.w3.org/1999/xhtml" class="application">createdb</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="40%" align="right" valign="top"> <span xmlns="http://www.w3.org/1999/xhtml" class="application">dropdb</span></td></tr></table></div></body></html>
132\ No newline at end of file131\ No newline at end of file
132 </p></div><div class="refsect1" id="id-1.9.4.5.10"><h2>See Also</h2><span class="simplelist"><a class="xref" href="app-dropuser.html" title="dropuser"><span class="refentrytitle"><span class="application">dropuser</span></span></a>, <a class="xref" href="sql-createrole.html" title="CREATE ROLE"><span class="refentrytitle">CREATE ROLE</span></a></span></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="app-createdb.html" title="createdb">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-dropdb.html" title="dropdb">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span xmlns="http://www.w3.org/1999/xhtml" class="application">createdb</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="40%" align="right" valign="top"> <span xmlns="http://www.w3.org/1999/xhtml" class="application">dropdb</span></td></tr></table></div></body></html>
133\ No newline at end of file133\ No newline at end of file
diff --git a/doc/src/sgml/html/app-dropdb.html b/doc/src/sgml/html/app-dropdb.html
index 452fff5..cfd0742 100644
--- a/doc/src/sgml/html/app-dropdb.html
+++ b/doc/src/sgml/html/app-dropdb.html
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>dropdb</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="app-createuser.html" title="createuser" /><link rel="next" href="app-dropuser.html" title="dropuser" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center"><span xmlns="http://www.w3.org/1999/xhtml" class="application">dropdb</span></th></tr><tr><td width="10%" align="left"><a accesskey="p" href="app-createuser.html" title="createuser">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-dropuser.html" title="dropuser">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-DROPDB"><div class="titlepage"></div><a id="id-1.9.4.6.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle"><span class="application">dropdb</span></span></h2><p>dropdb — remove a <span class="productname">PostgreSQL</span> database</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.6.4.1"><code class="command">dropdb</code> [<em class="replaceable"><code>connection-option</code></em>...] [<em class="replaceable"><code>option</code></em>...] <em class="replaceable"><code>dbname</code></em> </p></div></div><div class="refsect1" id="id-1.9.4.6.5"><h2>Description</h2><p> <span class="application">dropdb</span> destroys an existing2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>dropdb</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="app-createuser.html" title="createuser" /><link rel="next" href="app-dropuser.html" title="dropuser" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center"><span xmlns="http://www.w3.org/1999/xhtml" class="application">dropdb</span></th></tr><tr><td width="10%" align="left"><a accesskey="p" href="app-createuser.html" title="createuser">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-dropuser.html" title="dropuser">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-DROPDB"><div class="titlepage"></div><a id="id-1.9.4.6.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle"><span class="application">dropdb</span></span></h2><p>dropdb — remove a <span class="productname">PostgreSQL</span> database</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.6.4.1"><code class="command">dropdb</code> [<em class="replaceable"><code>connection-option</code></em>...] [<em class="replaceable"><code>option</code></em>...] <em class="replaceable"><code>dbname</code></em> </p></div></div><div class="refsect1" id="id-1.9.4.6.5"><h2>Description</h2><p> <span class="application">dropdb</span> destroys an existing
3 <span class="productname">PostgreSQL</span> database.3 <span class="productname">PostgreSQL</span> database.
4 The user who executes this command must be a database4 The user who executes this command must be a database
5 superuser or the owner of the database.5 superuser or the owner of the database.
@@ -74,4 +74,4 @@
74</p><pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>dropdb -p 5000 -h eden -i -e demo</code></strong>74</p><pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>dropdb -p 5000 -h eden -i -e demo</code></strong>
75<code class="computeroutput">Database "demo" will be permanently deleted.75<code class="computeroutput">Database "demo" will be permanently deleted.
76Are you sure? (y/n) </code><strong class="userinput"><code>y</code></strong>76Are you sure? (y/n) </code><strong class="userinput"><code>y</code></strong>
77<code class="computeroutput">DROP DATABASE demo;</code></pre></div><div class="refsect1" id="id-1.9.4.6.10"><h2>See Also</h2><span class="simplelist"><a class="xref" href="app-createdb.html" title="createdb"><span class="refentrytitle"><span class="application">createdb</span></span></a>, <a class="xref" href="sql-dropdatabase.html" title="DROP DATABASE"><span class="refentrytitle">DROP DATABASE</span></a></span></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="app-createuser.html" title="createuser">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-dropuser.html" title="dropuser">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span xmlns="http://www.w3.org/1999/xhtml" class="application">createuser</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="40%" align="right" valign="top"> <span xmlns="http://www.w3.org/1999/xhtml" class="application">dropuser</span></td></tr></table></div></body></html>
78\ No newline at end of file77\ No newline at end of file
78<code class="computeroutput">DROP DATABASE demo;</code></pre></div><div class="refsect1" id="id-1.9.4.6.10"><h2>See Also</h2><span class="simplelist"><a class="xref" href="app-createdb.html" title="createdb"><span class="refentrytitle"><span class="application">createdb</span></span></a>, <a class="xref" href="sql-dropdatabase.html" title="DROP DATABASE"><span class="refentrytitle">DROP DATABASE</span></a></span></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="app-createuser.html" title="createuser">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-dropuser.html" title="dropuser">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span xmlns="http://www.w3.org/1999/xhtml" class="application">createuser</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="40%" align="right" valign="top"> <span xmlns="http://www.w3.org/1999/xhtml" class="application">dropuser</span></td></tr></table></div></body></html>
79\ No newline at end of file79\ No newline at end of file
diff --git a/doc/src/sgml/html/app-dropuser.html b/doc/src/sgml/html/app-dropuser.html
index ebb6f19..45d9d56 100644
--- a/doc/src/sgml/html/app-dropuser.html
+++ b/doc/src/sgml/html/app-dropuser.html
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>dropuser</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="app-dropdb.html" title="dropdb" /><link rel="next" href="app-ecpg.html" title="ecpg" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center"><span xmlns="http://www.w3.org/1999/xhtml" class="application">dropuser</span></th></tr><tr><td width="10%" align="left"><a accesskey="p" href="app-dropdb.html" title="dropdb">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-ecpg.html" title="ecpg">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-DROPUSER"><div class="titlepage"></div><a id="id-1.9.4.7.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle"><span class="application">dropuser</span></span></h2><p>dropuser — remove a <span class="productname">PostgreSQL</span> user account</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.7.4.1"><code class="command">dropuser</code> [<em class="replaceable"><code>connection-option</code></em>...] [<em class="replaceable"><code>option</code></em>...] [<em class="replaceable"><code>username</code></em>]</p></div></div><div class="refsect1" id="id-1.9.4.7.5"><h2>Description</h2><p> <span class="application">dropuser</span> removes an existing2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>dropuser</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="app-dropdb.html" title="dropdb" /><link rel="next" href="app-ecpg.html" title="ecpg" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center"><span xmlns="http://www.w3.org/1999/xhtml" class="application">dropuser</span></th></tr><tr><td width="10%" align="left"><a accesskey="p" href="app-dropdb.html" title="dropdb">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-ecpg.html" title="ecpg">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-DROPUSER"><div class="titlepage"></div><a id="id-1.9.4.7.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle"><span class="application">dropuser</span></span></h2><p>dropuser — remove a <span class="productname">PostgreSQL</span> user account</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.7.4.1"><code class="command">dropuser</code> [<em class="replaceable"><code>connection-option</code></em>...] [<em class="replaceable"><code>option</code></em>...] [<em class="replaceable"><code>username</code></em>]</p></div></div><div class="refsect1" id="id-1.9.4.7.5"><h2>Description</h2><p> <span class="application">dropuser</span> removes an existing
3 <span class="productname">PostgreSQL</span> user.3 <span class="productname">PostgreSQL</span> user.
4 Only superusers and users with the <code class="literal">CREATEROLE</code> privilege can4 Only superusers and users with the <code class="literal">CREATEROLE</code> privilege can
5 remove <span class="productname">PostgreSQL</span> users. (To remove a5 remove <span class="productname">PostgreSQL</span> users. (To remove a
@@ -71,4 +71,4 @@
71</p><pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>dropuser -p 5000 -h eden -i -e joe</code></strong>71</p><pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>dropuser -p 5000 -h eden -i -e joe</code></strong>
72<code class="computeroutput">Role "joe" will be permanently removed.72<code class="computeroutput">Role "joe" will be permanently removed.
73Are you sure? (y/n) </code><strong class="userinput"><code>y</code></strong>73Are you sure? (y/n) </code><strong class="userinput"><code>y</code></strong>
74<code class="computeroutput">DROP ROLE joe;</code></pre></div><div class="refsect1" id="id-1.9.4.7.10"><h2>See Also</h2><span class="simplelist"><a class="xref" href="app-createuser.html" title="createuser"><span class="refentrytitle"><span class="application">createuser</span></span></a>, <a class="xref" href="sql-droprole.html" title="DROP ROLE"><span class="refentrytitle">DROP ROLE</span></a></span></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="app-dropdb.html" title="dropdb">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-ecpg.html" title="ecpg">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span xmlns="http://www.w3.org/1999/xhtml" class="application">dropdb</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="40%" align="right" valign="top"> <span xmlns="http://www.w3.org/1999/xhtml" class="application">ecpg</span></td></tr></table></div></body></html>
75\ No newline at end of file74\ No newline at end of file
75<code class="computeroutput">DROP ROLE joe;</code></pre></div><div class="refsect1" id="id-1.9.4.7.10"><h2>See Also</h2><span class="simplelist"><a class="xref" href="app-createuser.html" title="createuser"><span class="refentrytitle"><span class="application">createuser</span></span></a>, <a class="xref" href="sql-droprole.html" title="DROP ROLE"><span class="refentrytitle">DROP ROLE</span></a></span></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="app-dropdb.html" title="dropdb">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-ecpg.html" title="ecpg">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span xmlns="http://www.w3.org/1999/xhtml" class="application">dropdb</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="40%" align="right" valign="top"> <span xmlns="http://www.w3.org/1999/xhtml" class="application">ecpg</span></td></tr></table></div></body></html>
76\ No newline at end of file76\ No newline at end of file
diff --git a/doc/src/sgml/html/app-ecpg.html b/doc/src/sgml/html/app-ecpg.html
index c4b7488..4082187 100644
--- a/doc/src/sgml/html/app-ecpg.html
+++ b/doc/src/sgml/html/app-ecpg.html
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ecpg</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="app-dropuser.html" title="dropuser" /><link rel="next" href="app-pgbasebackup.html" title="pg_basebackup" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center"><span xmlns="http://www.w3.org/1999/xhtml" class="application">ecpg</span></th></tr><tr><td width="10%" align="left"><a accesskey="p" href="app-dropuser.html" title="dropuser">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-pgbasebackup.html" title="pg_basebackup">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-ECPG"><div class="titlepage"></div><a id="id-1.9.4.8.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle"><span class="application">ecpg</span></span></h2><p><span class="application">ecpg</span> — embedded SQL C preprocessor</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.8.4.1"><code class="command">ecpg</code> [<em class="replaceable"><code>option</code></em>...] <em class="replaceable"><code>file</code></em>... </p></div></div><div class="refsect1" id="APP-ECPG-DESCRIPTION"><h2>Description</h2><p> <code class="command">ecpg</code> is the embedded SQL preprocessor for C2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ecpg</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="app-dropuser.html" title="dropuser" /><link rel="next" href="app-pgbasebackup.html" title="pg_basebackup" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center"><span xmlns="http://www.w3.org/1999/xhtml" class="application">ecpg</span></th></tr><tr><td width="10%" align="left"><a accesskey="p" href="app-dropuser.html" title="dropuser">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-pgbasebackup.html" title="pg_basebackup">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-ECPG"><div class="titlepage"></div><a id="id-1.9.4.8.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle"><span class="application">ecpg</span></span></h2><p><span class="application">ecpg</span> — embedded SQL C preprocessor</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.8.4.1"><code class="command">ecpg</code> [<em class="replaceable"><code>option</code></em>...] <em class="replaceable"><code>file</code></em>... </p></div></div><div class="refsect1" id="APP-ECPG-DESCRIPTION"><h2>Description</h2><p> <code class="command">ecpg</code> is the embedded SQL preprocessor for C
3 programs. It converts C programs with embedded SQL statements to3 programs. It converts C programs with embedded SQL statements to
4 normal C code by replacing the SQL invocations with special4 normal C code by replacing the SQL invocations with special
5 function calls. The output files can then be processed with any C5 function calls. The output files can then be processed with any C
@@ -77,4 +77,4 @@
77 program using the following sequence of commands:77 program using the following sequence of commands:
78</p><pre class="programlisting">ecpg prog1.pgc78</p><pre class="programlisting">ecpg prog1.pgc
79cc -I/usr/local/pgsql/include -c prog1.c79cc -I/usr/local/pgsql/include -c prog1.c
80cc -o prog1 prog1.o -L/usr/local/pgsql/lib -lecpg</pre></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="app-dropuser.html" title="dropuser">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-pgbasebackup.html" title="pg_basebackup">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span xmlns="http://www.w3.org/1999/xhtml" class="application">dropuser</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="40%" align="right" valign="top"> pg_basebackup</td></tr></table></div></body></html>
81\ No newline at end of file80\ No newline at end of file
81cc -o prog1 prog1.o -L/usr/local/pgsql/lib -lecpg</pre></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="app-dropuser.html" title="dropuser">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-pgbasebackup.html" title="pg_basebackup">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span xmlns="http://www.w3.org/1999/xhtml" class="application">dropuser</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="40%" align="right" valign="top"> pg_basebackup</td></tr></table></div></body></html>
82\ No newline at end of file82\ No newline at end of file
diff --git a/doc/src/sgml/html/app-initdb.html b/doc/src/sgml/html/app-initdb.html
index a20d8a9..45aec6e 100644
--- a/doc/src/sgml/html/app-initdb.html
+++ b/doc/src/sgml/html/app-initdb.html
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>initdb</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="reference-server.html" title="PostgreSQL Server Applications" /><link rel="next" href="pgarchivecleanup.html" title="pg_archivecleanup" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">initdb</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="reference-server.html" title="PostgreSQL Server Applications">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-server.html" title="PostgreSQL Server Applications">Up</a></td><th width="60%" align="center">PostgreSQL Server Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="pgarchivecleanup.html" title="pg_archivecleanup">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-INITDB"><div class="titlepage"></div><a id="id-1.9.5.3.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle">initdb</span></h2><p>initdb — create a new <span class="productname">PostgreSQL</span> database cluster</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.5.3.4.1"><code class="command">initdb</code> [<em class="replaceable"><code>option</code></em>...] [ <code class="option">--pgdata</code> | <code class="option">-D</code> ]<em class="replaceable"><code> directory</code></em> </p></div></div><div class="refsect1" id="R1-APP-INITDB-1"><h2> Description2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>initdb</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="reference-server.html" title="PostgreSQL Server Applications" /><link rel="next" href="pgarchivecleanup.html" title="pg_archivecleanup" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">initdb</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="reference-server.html" title="PostgreSQL Server Applications">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-server.html" title="PostgreSQL Server Applications">Up</a></td><th width="60%" align="center">PostgreSQL Server Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="pgarchivecleanup.html" title="pg_archivecleanup">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-INITDB"><div class="titlepage"></div><a id="id-1.9.5.3.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle">initdb</span></h2><p>initdb — create a new <span class="productname">PostgreSQL</span> database cluster</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.5.3.4.1"><code class="command">initdb</code> [<em class="replaceable"><code>option</code></em>...] [ <code class="option">--pgdata</code> | <code class="option">-D</code> ]<em class="replaceable"><code> directory</code></em> </p></div></div><div class="refsect1" id="R1-APP-INITDB-1"><h2> Description
3 </h2><p> <code class="command">initdb</code> creates a new3 </h2><p> <code class="command">initdb</code> creates a new
4 <span class="productname">PostgreSQL</span> database cluster. A database4 <span class="productname">PostgreSQL</span> database cluster. A database
5 cluster is a collection of databases that are managed by a single5 cluster is a collection of databases that are managed by a single
@@ -145,4 +145,4 @@
145 (see <a class="xref" href="libpq-envars.html" title="33.14. Environment Variables">Section 33.14</a>).145 (see <a class="xref" href="libpq-envars.html" title="33.14. Environment Variables">Section 33.14</a>).
146 </p></div><div class="refsect1" id="id-1.9.5.3.8"><h2>Notes</h2><p> <code class="command">initdb</code> can also be invoked via146 </p></div><div class="refsect1" id="id-1.9.5.3.8"><h2>Notes</h2><p> <code class="command">initdb</code> can also be invoked via
147 <code class="command">pg_ctl initdb</code>.147 <code class="command">pg_ctl initdb</code>.
148 </p></div><div class="refsect1" id="id-1.9.5.3.9"><h2>See Also</h2><span class="simplelist"><a class="xref" href="app-pg-ctl.html" title="pg_ctl"><span class="refentrytitle"><span class="application">pg_ctl</span></span></a>, <a class="xref" href="app-postgres.html" title="postgres"><span class="refentrytitle"><span class="application">postgres</span></span></a></span></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="reference-server.html" title="PostgreSQL Server Applications">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-server.html" title="PostgreSQL Server Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="pgarchivecleanup.html" title="pg_archivecleanup">Next</a></td></tr><tr><td width="40%" align="left" valign="top">PostgreSQL Server Applications </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="40%" align="right" valign="top"> <span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_archivecleanup</span></td></tr></table></div></body></html>
149\ No newline at end of file148\ No newline at end of file
149 </p></div><div class="refsect1" id="id-1.9.5.3.9"><h2>See Also</h2><span class="simplelist"><a class="xref" href="app-pg-ctl.html" title="pg_ctl"><span class="refentrytitle"><span class="application">pg_ctl</span></span></a>, <a class="xref" href="app-postgres.html" title="postgres"><span class="refentrytitle"><span class="application">postgres</span></span></a></span></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="reference-server.html" title="PostgreSQL Server Applications">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-server.html" title="PostgreSQL Server Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="pgarchivecleanup.html" title="pg_archivecleanup">Next</a></td></tr><tr><td width="40%" align="left" valign="top">PostgreSQL Server Applications </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="40%" align="right" valign="top"> <span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_archivecleanup</span></td></tr></table></div></body></html>
150\ No newline at end of file150\ No newline at end of file
diff --git a/doc/src/sgml/html/app-pg-ctl.html b/doc/src/sgml/html/app-pg-ctl.html
index 4ddc497..151c298 100644
--- a/doc/src/sgml/html/app-pg-ctl.html
+++ b/doc/src/sgml/html/app-pg-ctl.html
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>pg_ctl</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="app-pgcontroldata.html" title="pg_controldata" /><link rel="next" href="app-pgresetwal.html" title="pg_resetwal" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center"><span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_ctl</span></th></tr><tr><td width="10%" align="left"><a accesskey="p" href="app-pgcontroldata.html" title="pg_controldata">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-server.html" title="PostgreSQL Server Applications">Up</a></td><th width="60%" align="center">PostgreSQL Server Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-pgresetwal.html" title="pg_resetwal">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-PG-CTL"><div class="titlepage"></div><a id="id-1.9.5.6.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle"><span class="application">pg_ctl</span></span></h2><p>pg_ctl — initialize, start, stop, or control a <span class="productname">PostgreSQL</span> server</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.5.6.4.1"><code class="command">pg_ctl</code> <code class="option">init[db]</code> [<code class="option">-D</code> <em class="replaceable"><code>datadir</code></em>] [<code class="option">-s</code>] [<code class="option">-o</code> <em class="replaceable"><code>initdb-options</code></em>]</p></div><div class="cmdsynopsis"><p id="id-1.9.5.6.4.2"><code class="command">pg_ctl</code> <code class="option">start</code> [<code class="option">-D</code> <em class="replaceable"><code>datadir</code></em>] [<code class="option">-l</code> <em class="replaceable"><code>filename</code></em>] [<code class="option">-W</code>] [<code class="option">-t</code> <em class="replaceable"><code>seconds</code></em>] [<code class="option">-s</code>] [<code class="option">-o</code> <em class="replaceable"><code>options</code></em>] [<code class="option">-p</code> <em class="replaceable"><code>path</code></em>] [<code class="option">-c</code>]</p></div><div class="cmdsynopsis"><p id="id-1.9.5.6.4.3"><code class="command">pg_ctl</code> <code class="option">stop</code> [<code class="option">-D</code> <em class="replaceable"><code>datadir</code></em>] [<code class="option">-m</code>2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>pg_ctl</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="app-pgcontroldata.html" title="pg_controldata" /><link rel="next" href="app-pgresetwal.html" title="pg_resetwal" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center"><span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_ctl</span></th></tr><tr><td width="10%" align="left"><a accesskey="p" href="app-pgcontroldata.html" title="pg_controldata">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-server.html" title="PostgreSQL Server Applications">Up</a></td><th width="60%" align="center">PostgreSQL Server Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-pgresetwal.html" title="pg_resetwal">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-PG-CTL"><div class="titlepage"></div><a id="id-1.9.5.6.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle"><span class="application">pg_ctl</span></span></h2><p>pg_ctl — initialize, start, stop, or control a <span class="productname">PostgreSQL</span> server</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.5.6.4.1"><code class="command">pg_ctl</code> <code class="option">init[db]</code> [<code class="option">-D</code> <em class="replaceable"><code>datadir</code></em>] [<code class="option">-s</code>] [<code class="option">-o</code> <em class="replaceable"><code>initdb-options</code></em>]</p></div><div class="cmdsynopsis"><p id="id-1.9.5.6.4.2"><code class="command">pg_ctl</code> <code class="option">start</code> [<code class="option">-D</code> <em class="replaceable"><code>datadir</code></em>] [<code class="option">-l</code> <em class="replaceable"><code>filename</code></em>] [<code class="option">-W</code>] [<code class="option">-t</code> <em class="replaceable"><code>seconds</code></em>] [<code class="option">-s</code>] [<code class="option">-o</code> <em class="replaceable"><code>options</code></em>] [<code class="option">-p</code> <em class="replaceable"><code>path</code></em>] [<code class="option">-c</code>]</p></div><div class="cmdsynopsis"><p id="id-1.9.5.6.4.3"><code class="command">pg_ctl</code> <code class="option">stop</code> [<code class="option">-D</code> <em class="replaceable"><code>datadir</code></em>] [<code class="option">-m</code>
3 <code class="option">s[mart]</code> | <code class="option">f[ast]</code> | <code class="option">i[mmediate]</code> 3 <code class="option">s[mart]</code> | <code class="option">f[ast]</code> | <code class="option">i[mmediate]</code>
4 ] [<code class="option">-W</code>] [<code class="option">-t</code> <em class="replaceable"><code>seconds</code></em>] [<code class="option">-s</code>]</p></div><div class="cmdsynopsis"><p id="id-1.9.5.6.4.4"><code class="command">pg_ctl</code> <code class="option">restart</code> [<code class="option">-D</code> <em class="replaceable"><code>datadir</code></em>] [<code class="option">-m</code>4 ] [<code class="option">-W</code>] [<code class="option">-t</code> <em class="replaceable"><code>seconds</code></em>] [<code class="option">-s</code>]</p></div><div class="cmdsynopsis"><p id="id-1.9.5.6.4.4"><code class="command">pg_ctl</code> <code class="option">restart</code> [<code class="option">-D</code> <em class="replaceable"><code>datadir</code></em>] [<code class="option">-m</code>
5 <code class="option">s[mart]</code> | <code class="option">f[ast]</code> | <code class="option">i[mmediate]</code> 5 <code class="option">s[mart]</code> | <code class="option">f[ast]</code> | <code class="option">i[mmediate]</code>
@@ -217,4 +217,4 @@
217<code class="computeroutput">pg_ctl: server is running (PID: 13718)217<code class="computeroutput">pg_ctl: server is running (PID: 13718)
218/usr/local/pgsql/bin/postgres "-D" "/usr/local/pgsql/data" "-p" "5433" "-B" "128"</code></pre><p>218/usr/local/pgsql/bin/postgres "-D" "/usr/local/pgsql/data" "-p" "5433" "-B" "128"</code></pre><p>
219 The second line is the command that would be invoked in restart mode.219 The second line is the command that would be invoked in restart mode.
220 </p></div></div><div class="refsect1" id="id-1.9.5.6.10"><h2>See Also</h2><span class="simplelist"><a class="xref" href="app-initdb.html" title="initdb"><span class="refentrytitle">initdb</span></a>, <a class="xref" href="app-postgres.html" title="postgres"><span class="refentrytitle"><span class="application">postgres</span></span></a></span></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="app-pgcontroldata.html" title="pg_controldata">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-server.html" title="PostgreSQL Server Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-pgresetwal.html" title="pg_resetwal">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_controldata</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="40%" align="right" valign="top"> <span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_resetwal</span></td></tr></table></div></body></html>
221\ No newline at end of file220\ No newline at end of file
221 </p></div></div><div class="refsect1" id="id-1.9.5.6.10"><h2>See Also</h2><span class="simplelist"><a class="xref" href="app-initdb.html" title="initdb"><span class="refentrytitle">initdb</span></a>, <a class="xref" href="app-postgres.html" title="postgres"><span class="refentrytitle"><span class="application">postgres</span></span></a></span></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="app-pgcontroldata.html" title="pg_controldata">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-server.html" title="PostgreSQL Server Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-pgresetwal.html" title="pg_resetwal">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_controldata</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="40%" align="right" valign="top"> <span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_resetwal</span></td></tr></table></div></body></html>
222\ No newline at end of file222\ No newline at end of file
diff --git a/doc/src/sgml/html/app-pg-dumpall.html b/doc/src/sgml/html/app-pg-dumpall.html
index 89e5eaf..a584cfe 100644
--- a/doc/src/sgml/html/app-pg-dumpall.html
+++ b/doc/src/sgml/html/app-pg-dumpall.html
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>pg_dumpall</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="app-pgdump.html" title="pg_dump" /><link rel="next" href="app-pg-isready.html" title="pg_isready" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center"><span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_dumpall</span></th></tr><tr><td width="10%" align="left"><a accesskey="p" href="app-pgdump.html" title="pg_dump">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-pg-isready.html" title="pg_isready">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-PG-DUMPALL"><div class="titlepage"></div><a id="id-1.9.4.13.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle"><span class="application">pg_dumpall</span></span></h2><p>pg_dumpall — extract a <span class="productname">PostgreSQL</span> database cluster into a script file</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.13.4.1"><code class="command">pg_dumpall</code> [<em class="replaceable"><code>connection-option</code></em>...] [<em class="replaceable"><code>option</code></em>...]</p></div></div><div class="refsect1" id="APP-PG-DUMPALL-DESCRIPTION"><h2>Description</h2><p> <span class="application">pg_dumpall</span> is a utility for writing out2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>pg_dumpall</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="app-pgdump.html" title="pg_dump" /><link rel="next" href="app-pg-isready.html" title="pg_isready" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center"><span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_dumpall</span></th></tr><tr><td width="10%" align="left"><a accesskey="p" href="app-pgdump.html" title="pg_dump">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-pg-isready.html" title="pg_isready">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-PG-DUMPALL"><div class="titlepage"></div><a id="id-1.9.4.13.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle"><span class="application">pg_dumpall</span></span></h2><p>pg_dumpall — extract a <span class="productname">PostgreSQL</span> database cluster into a script file</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.13.4.1"><code class="command">pg_dumpall</code> [<em class="replaceable"><code>connection-option</code></em>...] [<em class="replaceable"><code>option</code></em>...]</p></div></div><div class="refsect1" id="APP-PG-DUMPALL-DESCRIPTION"><h2>Description</h2><p> <span class="application">pg_dumpall</span> is a utility for writing out
3 (<span class="quote">“<span class="quote">dumping</span>”</span>) all <span class="productname">PostgreSQL</span> databases3 (<span class="quote">“<span class="quote">dumping</span>”</span>) all <span class="productname">PostgreSQL</span> databases
4 of a cluster into one script file. The script file contains4 of a cluster into one script file. The script file contains
5 <acronym class="acronym">SQL</acronym> commands that can be used as input to <a class="xref" href="app-psql.html" title="psql"><span class="refentrytitle"><span class="application">psql</span></span></a> to restore the databases. It does this by5 <acronym class="acronym">SQL</acronym> commands that can be used as input to <a class="xref" href="app-psql.html" title="psql"><span class="refentrytitle"><span class="application">psql</span></span></a> to restore the databases. It does this by
@@ -223,4 +223,4 @@
223 databases.)223 databases.)
224 </p></div><div class="refsect1" id="id-1.9.4.13.10"><h2>See Also</h2><p> Check <a class="xref" href="app-pgdump.html" title="pg_dump"><span class="refentrytitle">pg_dump</span></a> for details on possible224 </p></div><div class="refsect1" id="id-1.9.4.13.10"><h2>See Also</h2><p> Check <a class="xref" href="app-pgdump.html" title="pg_dump"><span class="refentrytitle">pg_dump</span></a> for details on possible
225 error conditions.225 error conditions.
226 </p></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="app-pgdump.html" title="pg_dump">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-pg-isready.html" title="pg_isready">Next</a></td></tr><tr><td width="40%" align="left" valign="top">pg_dump </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="40%" align="right" valign="top"> <span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_isready</span></td></tr></table></div></body></html>
227\ No newline at end of file226\ No newline at end of file
227 </p></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="app-pgdump.html" title="pg_dump">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-pg-isready.html" title="pg_isready">Next</a></td></tr><tr><td width="40%" align="left" valign="top">pg_dump </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="40%" align="right" valign="top"> <span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_isready</span></td></tr></table></div></body></html>
228\ No newline at end of file228\ No newline at end of file
diff --git a/doc/src/sgml/html/app-pg-isready.html b/doc/src/sgml/html/app-pg-isready.html
index f6ac055..736dabf 100644
--- a/doc/src/sgml/html/app-pg-isready.html
+++ b/doc/src/sgml/html/app-pg-isready.html
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>pg_isready</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="app-pg-dumpall.html" title="pg_dumpall" /><link rel="next" href="app-pgreceivewal.html" title="pg_receivewal" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center"><span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_isready</span></th></tr><tr><td width="10%" align="left"><a accesskey="p" href="app-pg-dumpall.html" title="pg_dumpall">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-pgreceivewal.html" title="pg_receivewal">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-PG-ISREADY"><div class="titlepage"></div><a id="id-1.9.4.14.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle"><span class="application">pg_isready</span></span></h2><p>pg_isready — check the connection status of a <span class="productname">PostgreSQL</span> server</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.14.4.1"><code class="command">pg_isready</code> [<em class="replaceable"><code>connection-option</code></em>...] [<em class="replaceable"><code>option</code></em>...]</p></div></div><div class="refsect1" id="APP-PG-ISREADY-DESCRIPTION"><h2>Description</h2><p> <span class="application">pg_isready</span> is a utility for checking the connection2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>pg_isready</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="app-pg-dumpall.html" title="pg_dumpall" /><link rel="next" href="app-pgreceivewal.html" title="pg_receivewal" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center"><span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_isready</span></th></tr><tr><td width="10%" align="left"><a accesskey="p" href="app-pg-dumpall.html" title="pg_dumpall">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-pgreceivewal.html" title="pg_receivewal">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-PG-ISREADY"><div class="titlepage"></div><a id="id-1.9.4.14.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle"><span class="application">pg_isready</span></span></h2><p>pg_isready — check the connection status of a <span class="productname">PostgreSQL</span> server</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.14.4.1"><code class="command">pg_isready</code> [<em class="replaceable"><code>connection-option</code></em>...] [<em class="replaceable"><code>option</code></em>...]</p></div></div><div class="refsect1" id="APP-PG-ISREADY-DESCRIPTION"><h2>Description</h2><p> <span class="application">pg_isready</span> is a utility for checking the connection
3 status of a <span class="productname">PostgreSQL</span> database server. The exit3 status of a <span class="productname">PostgreSQL</span> database server. The exit
4 status specifies the result of the connection check.4 status specifies the result of the connection check.
5 </p></div><div class="refsect1" id="APP-PG-ISREADY-OPTIONS"><h2>Options</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term"><code class="option">-d <em class="replaceable"><code>dbname</code></em></code><br /></span><span class="term"><code class="option">--dbname=<em class="replaceable"><code>dbname</code></em></code></span></dt><dd><p> Specifies the name of the database to connect to. The5 </p></div><div class="refsect1" id="APP-PG-ISREADY-OPTIONS"><h2>Options</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term"><code class="option">-d <em class="replaceable"><code>dbname</code></em></code><br /></span><span class="term"><code class="option">--dbname=<em class="replaceable"><code>dbname</code></em></code></span></dt><dd><p> Specifies the name of the database to connect to. The
@@ -50,4 +50,4 @@
50<code class="computeroutput">someremotehost:5432 - no response</code>50<code class="computeroutput">someremotehost:5432 - no response</code>
51<code class="prompt">$</code> <strong class="userinput"><code>echo $?</code></strong>51<code class="prompt">$</code> <strong class="userinput"><code>echo $?</code></strong>
52<code class="computeroutput">2</code></pre><p>52<code class="computeroutput">2</code></pre><p>
53 </p></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="app-pg-dumpall.html" title="pg_dumpall">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-pgreceivewal.html" title="pg_receivewal">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_dumpall</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="40%" align="right" valign="top"> pg_receivewal</td></tr></table></div></body></html>
54\ No newline at end of file53\ No newline at end of file
54 </p></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="app-pg-dumpall.html" title="pg_dumpall">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-pgreceivewal.html" title="pg_receivewal">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_dumpall</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="40%" align="right" valign="top"> pg_receivewal</td></tr></table></div></body></html>
55\ No newline at end of file55\ No newline at end of file
diff --git a/doc/src/sgml/html/app-pgbasebackup.html b/doc/src/sgml/html/app-pgbasebackup.html
index f33d170..d751bc9 100644
--- a/doc/src/sgml/html/app-pgbasebackup.html
+++ b/doc/src/sgml/html/app-pgbasebackup.html
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>pg_basebackup</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="app-ecpg.html" title="ecpg" /><link rel="next" href="pgbench.html" title="pgbench" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">pg_basebackup</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="app-ecpg.html" title="ecpg">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="pgbench.html" title="pgbench">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-PGBASEBACKUP"><div class="titlepage"></div><a id="id-1.9.4.9.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle">pg_basebackup</span></h2><p>pg_basebackup — take a base backup of a <span class="productname">PostgreSQL</span> cluster</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.9.4.1"><code class="command">pg_basebackup</code> [<em class="replaceable"><code>option</code></em>...]</p></div></div><div class="refsect1" id="id-1.9.4.9.5"><h2> Description2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>pg_basebackup</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="app-ecpg.html" title="ecpg" /><link rel="next" href="pgbench.html" title="pgbench" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">pg_basebackup</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="app-ecpg.html" title="ecpg">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="pgbench.html" title="pgbench">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-PGBASEBACKUP"><div class="titlepage"></div><a id="id-1.9.4.9.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle">pg_basebackup</span></h2><p>pg_basebackup — take a base backup of a <span class="productname">PostgreSQL</span> cluster</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.9.4.1"><code class="command">pg_basebackup</code> [<em class="replaceable"><code>option</code></em>...]</p></div></div><div class="refsect1" id="id-1.9.4.9.5"><h2> Description
3 </h2><p> <span class="application">pg_basebackup</span> is used to take base backups of3 </h2><p> <span class="application">pg_basebackup</span> is used to take base backups of
4 a running <span class="productname">PostgreSQL</span> database cluster. These4 a running <span class="productname">PostgreSQL</span> database cluster. These
5 are taken without affecting other clients to the database, and can be used5 are taken without affecting other clients to the database, and can be used
@@ -304,4 +304,4 @@
304 <code class="filename">/opt/ts</code> is relocated304 <code class="filename">/opt/ts</code> is relocated
305 to <code class="filename">./backup/ts</code>:305 to <code class="filename">./backup/ts</code>:
306</p><pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>pg_basebackup -D backup/data -T /opt/ts=$(pwd)/backup/ts</code></strong></pre><p>306</p><pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>pg_basebackup -D backup/data -T /opt/ts=$(pwd)/backup/ts</code></strong></pre><p>
307 </p></div><div class="refsect1" id="id-1.9.4.9.10"><h2>See Also</h2><span class="simplelist"><a class="xref" href="app-pgdump.html" title="pg_dump"><span class="refentrytitle">pg_dump</span></a></span></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="app-ecpg.html" title="ecpg">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="pgbench.html" title="pgbench">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span xmlns="http://www.w3.org/1999/xhtml" class="application">ecpg</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="40%" align="right" valign="top"> <span xmlns="http://www.w3.org/1999/xhtml" class="application">pgbench</span></td></tr></table></div></body></html>
308\ No newline at end of file307\ No newline at end of file
308 </p></div><div class="refsect1" id="id-1.9.4.9.10"><h2>See Also</h2><span class="simplelist"><a class="xref" href="app-pgdump.html" title="pg_dump"><span class="refentrytitle">pg_dump</span></a></span></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="app-ecpg.html" title="ecpg">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="pgbench.html" title="pgbench">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span xmlns="http://www.w3.org/1999/xhtml" class="application">ecpg</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="40%" align="right" valign="top"> <span xmlns="http://www.w3.org/1999/xhtml" class="application">pgbench</span></td></tr></table></div></body></html>
309\ No newline at end of file309\ No newline at end of file
diff --git a/doc/src/sgml/html/app-pgconfig.html b/doc/src/sgml/html/app-pgconfig.html
index 64b3b61..edefd81 100644
--- a/doc/src/sgml/html/app-pgconfig.html
+++ b/doc/src/sgml/html/app-pgconfig.html
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>pg_config</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="pgbench.html" title="pgbench" /><link rel="next" href="app-pgdump.html" title="pg_dump" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">pg_config</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="pgbench.html" title="pgbench">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-pgdump.html" title="pg_dump">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-PGCONFIG"><div class="titlepage"></div><a id="id-1.9.4.11.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle">pg_config</span></h2><p>pg_config — retrieve information about the installed version of <span class="productname">PostgreSQL</span></p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.11.4.1"><code class="command">pg_config</code> [<em class="replaceable"><code>option</code></em>...]</p></div></div><div class="refsect1" id="id-1.9.4.11.5"><h2>Description</h2><p> The <span class="application">pg_config</span> utility prints configuration parameters2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>pg_config</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="pgbench.html" title="pgbench" /><link rel="next" href="app-pgdump.html" title="pg_dump" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">pg_config</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="pgbench.html" title="pgbench">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-pgdump.html" title="pg_dump">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-PGCONFIG"><div class="titlepage"></div><a id="id-1.9.4.11.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle">pg_config</span></h2><p>pg_config — retrieve information about the installed version of <span class="productname">PostgreSQL</span></p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.11.4.1"><code class="command">pg_config</code> [<em class="replaceable"><code>option</code></em>...]</p></div></div><div class="refsect1" id="id-1.9.4.11.5"><h2>Description</h2><p> The <span class="application">pg_config</span> utility prints configuration parameters
3 of the currently installed version of <span class="productname">PostgreSQL</span>. It is3 of the currently installed version of <span class="productname">PostgreSQL</span>. It is
4 intended, for example, to be used by software packages that want to interface4 intended, for example, to be used by software packages that want to interface
5 to <span class="productname">PostgreSQL</span> to facilitate finding the required header files5 to <span class="productname">PostgreSQL</span> to facilitate finding the required header files
@@ -77,4 +77,4 @@
77 shell quotation marks so arguments with spaces are represented77 shell quotation marks so arguments with spaces are represented
78 correctly. Therefore, using <code class="literal">eval</code> is required78 correctly. Therefore, using <code class="literal">eval</code> is required
79 for proper results.79 for proper results.
80 </p></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="pgbench.html" title="pgbench">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-pgdump.html" title="pg_dump">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span xmlns="http://www.w3.org/1999/xhtml" class="application">pgbench</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="40%" align="right" valign="top"> pg_dump</td></tr></table></div></body></html>
81\ No newline at end of file80\ No newline at end of file
81 </p></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="pgbench.html" title="pgbench">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-pgdump.html" title="pg_dump">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span xmlns="http://www.w3.org/1999/xhtml" class="application">pgbench</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="40%" align="right" valign="top"> pg_dump</td></tr></table></div></body></html>
82\ No newline at end of file82\ No newline at end of file
diff --git a/doc/src/sgml/html/app-pgcontroldata.html b/doc/src/sgml/html/app-pgcontroldata.html
index 184dd10..4c2a03e 100644
--- a/doc/src/sgml/html/app-pgcontroldata.html
+++ b/doc/src/sgml/html/app-pgcontroldata.html
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>pg_controldata</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="pgarchivecleanup.html" title="pg_archivecleanup" /><link rel="next" href="app-pg-ctl.html" title="pg_ctl" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center"><span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_controldata</span></th></tr><tr><td width="10%" align="left"><a accesskey="p" href="pgarchivecleanup.html" title="pg_archivecleanup">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-server.html" title="PostgreSQL Server Applications">Up</a></td><th width="60%" align="center">PostgreSQL Server Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-pg-ctl.html" title="pg_ctl">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-PGCONTROLDATA"><div class="titlepage"></div><a id="id-1.9.5.5.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle"><span class="application">pg_controldata</span></span></h2><p>pg_controldata — display control information of a <span class="productname">PostgreSQL</span> database cluster</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.5.5.4.1"><code class="command">pg_controldata</code> [<em class="replaceable"><code>option</code></em>] [[<code class="option">-D</code>] <em class="replaceable"><code>datadir</code></em>]</p></div></div><div class="refsect1" id="R1-APP-PGCONTROLDATA-1"><h2>Description</h2><p> <code class="command">pg_controldata</code> prints information initialized during2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>pg_controldata</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="pgarchivecleanup.html" title="pg_archivecleanup" /><link rel="next" href="app-pg-ctl.html" title="pg_ctl" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center"><span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_controldata</span></th></tr><tr><td width="10%" align="left"><a accesskey="p" href="pgarchivecleanup.html" title="pg_archivecleanup">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-server.html" title="PostgreSQL Server Applications">Up</a></td><th width="60%" align="center">PostgreSQL Server Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-pg-ctl.html" title="pg_ctl">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-PGCONTROLDATA"><div class="titlepage"></div><a id="id-1.9.5.5.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle"><span class="application">pg_controldata</span></span></h2><p>pg_controldata — display control information of a <span class="productname">PostgreSQL</span> database cluster</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.5.5.4.1"><code class="command">pg_controldata</code> [<em class="replaceable"><code>option</code></em>] [[<code class="option">-D</code>] <em class="replaceable"><code>datadir</code></em>]</p></div></div><div class="refsect1" id="R1-APP-PGCONTROLDATA-1"><h2>Description</h2><p> <code class="command">pg_controldata</code> prints information initialized during
3 <code class="command">initdb</code>, such as the catalog version.3 <code class="command">initdb</code>, such as the catalog version.
4 It also shows information about write-ahead logging and checkpoint4 It also shows information about write-ahead logging and checkpoint
5 processing. This information is cluster-wide, and not specific to any one5 processing. This information is cluster-wide, and not specific to any one
@@ -13,4 +13,4 @@
13 supports options <code class="option">-?</code> and <code class="option">--help</code>, which output the13 supports options <code class="option">-?</code> and <code class="option">--help</code>, which output the
14 supported arguments.14 supported arguments.
15 </p></div><div class="refsect1" id="id-1.9.5.5.6"><h2>Environment</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term"><code class="envar">PGDATA</code></span></dt><dd><p> Default data directory location15 </p></div><div class="refsect1" id="id-1.9.5.5.6"><h2>Environment</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term"><code class="envar">PGDATA</code></span></dt><dd><p> Default data directory location
16 </p></dd></dl></div></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="pgarchivecleanup.html" title="pg_archivecleanup">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-server.html" title="PostgreSQL Server Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-pg-ctl.html" title="pg_ctl">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_archivecleanup</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="40%" align="right" valign="top"> <span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_ctl</span></td></tr></table></div></body></html>
17\ No newline at end of file16\ No newline at end of file
17 </p></dd></dl></div></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="pgarchivecleanup.html" title="pg_archivecleanup">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-server.html" title="PostgreSQL Server Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-pg-ctl.html" title="pg_ctl">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_archivecleanup</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="40%" align="right" valign="top"> <span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_ctl</span></td></tr></table></div></body></html>
18\ No newline at end of file18\ No newline at end of file
diff --git a/doc/src/sgml/html/app-pgdump.html b/doc/src/sgml/html/app-pgdump.html
index 6195984..d2ae68c 100644
--- a/doc/src/sgml/html/app-pgdump.html
+++ b/doc/src/sgml/html/app-pgdump.html
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>pg_dump</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="app-pgconfig.html" title="pg_config" /><link rel="next" href="app-pg-dumpall.html" title="pg_dumpall" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">pg_dump</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="app-pgconfig.html" title="pg_config">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-pg-dumpall.html" title="pg_dumpall">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-PGDUMP"><div class="titlepage"></div><a id="id-1.9.4.12.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle">pg_dump</span></h2><p>pg_dump — extract a <span class="productname">PostgreSQL</span> database into a script file or other archive file2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>pg_dump</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="app-pgconfig.html" title="pg_config" /><link rel="next" href="app-pg-dumpall.html" title="pg_dumpall" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">pg_dump</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="app-pgconfig.html" title="pg_config">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-pg-dumpall.html" title="pg_dumpall">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-PGDUMP"><div class="titlepage"></div><a id="id-1.9.4.12.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle">pg_dump</span></h2><p>pg_dump — extract a <span class="productname">PostgreSQL</span> database into a script file or other archive file
3 </p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.12.4.1"><code class="command">pg_dump</code> [<em class="replaceable"><code>connection-option</code></em>...] [<em class="replaceable"><code>option</code></em>...] [<em class="replaceable"><code>dbname</code></em>]</p></div></div><div class="refsect1" id="PG-DUMP-DESCRIPTION"><h2> Description3 </p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.12.4.1"><code class="command">pg_dump</code> [<em class="replaceable"><code>connection-option</code></em>...] [<em class="replaceable"><code>option</code></em>...] [<em class="replaceable"><code>dbname</code></em>]</p></div></div><div class="refsect1" id="PG-DUMP-DESCRIPTION"><h2> Description
4 </h2><p> <span class="application">pg_dump</span> is a utility for backing up a4 </h2><p> <span class="application">pg_dump</span> is a utility for backing up a
5 <span class="productname">PostgreSQL</span> database. It makes consistent5 <span class="productname">PostgreSQL</span> database. It makes consistent
@@ -587,4 +587,4 @@
587 Thus, to dump a single table with a mixed-case name, you need something587 Thus, to dump a single table with a mixed-case name, you need something
588 like588 like
589589
590</p><pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>pg_dump -t "\"MixedCaseName\"" mydb &gt; mytab.sql</code></strong></pre></div><div class="refsect1" id="id-1.9.4.12.11"><h2>See Also</h2><span class="simplelist"><a class="xref" href="app-pg-dumpall.html" title="pg_dumpall"><span class="refentrytitle"><span class="application">pg_dumpall</span></span></a>, <a class="xref" href="app-pgrestore.html" title="pg_restore"><span class="refentrytitle">pg_restore</span></a>, <a class="xref" href="app-psql.html" title="psql"><span class="refentrytitle"><span class="application">psql</span></span></a></span></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="app-pgconfig.html" title="pg_config">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-pg-dumpall.html" title="pg_dumpall">Next</a></td></tr><tr><td width="40%" align="left" valign="top">pg_config </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="40%" align="right" valign="top"> <span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_dumpall</span></td></tr></table></div></body></html>
591\ No newline at end of file590\ No newline at end of file
591</p><pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>pg_dump -t "\"MixedCaseName\"" mydb &gt; mytab.sql</code></strong></pre></div><div class="refsect1" id="id-1.9.4.12.11"><h2>See Also</h2><span class="simplelist"><a class="xref" href="app-pg-dumpall.html" title="pg_dumpall"><span class="refentrytitle"><span class="application">pg_dumpall</span></span></a>, <a class="xref" href="app-pgrestore.html" title="pg_restore"><span class="refentrytitle">pg_restore</span></a>, <a class="xref" href="app-psql.html" title="psql"><span class="refentrytitle"><span class="application">psql</span></span></a></span></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="app-pgconfig.html" title="pg_config">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="app-pg-dumpall.html" title="pg_dumpall">Next</a></td></tr><tr><td width="40%" align="left" valign="top">pg_config </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="40%" align="right" valign="top"> <span xmlns="http://www.w3.org/1999/xhtml" class="application">pg_dumpall</span></td></tr></table></div></body></html>
592\ No newline at end of file592\ No newline at end of file
diff --git a/doc/src/sgml/html/app-pgreceivewal.html b/doc/src/sgml/html/app-pgreceivewal.html
index 826d6e6..25d0325 100644
--- a/doc/src/sgml/html/app-pgreceivewal.html
+++ b/doc/src/sgml/html/app-pgreceivewal.html
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>pg_receivewal</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="app-pg-isready.html" title="pg_isready" /><link rel="next" href="app-pgrecvlogical.html" title="pg_recvlogical" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">pg_receivewal</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="app-pg-isready.html" title="pg_isready">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.20 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-pgrecvlogical.html" title="pg_recvlogical">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-PGRECEIVEWAL"><div class="titlepage"></div><a id="id-1.9.4.15.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle">pg_receivewal</span></h2><p>pg_receivewal — stream write-ahead logs from a <span class="productname">PostgreSQL</span> server</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.15.4.1"><code class="command">pg_receivewal</code> [<em class="replaceable"><code>option</code></em>...]</p></div></div><div class="refsect1" id="id-1.9.4.15.5"><h2> Description2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>pg_receivewal</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="app-pg-isready.html" title="pg_isready" /><link rel="next" href="app-pgrecvlogical.html" title="pg_recvlogical" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">pg_receivewal</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="app-pg-isready.html" title="pg_isready">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="reference-client.html" title="PostgreSQL Client Applications">Up</a></td><th width="60%" align="center">PostgreSQL Client Applications</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 10.21 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="app-pgrecvlogical.html" title="pg_recvlogical">Next</a></td></tr></table><hr></hr></div><div class="refentry" id="APP-PGRECEIVEWAL"><div class="titlepage"></div><a id="id-1.9.4.15.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle">pg_receivewal</span></h2><p>pg_receivewal — stream write-ahead logs from a <span class="productname">PostgreSQL</span> server</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p id="id-1.9.4.15.4.1"><code class="command">pg_receivewal</code> [<em class="replaceable"><code>option</code></em>...]</p></div></div><div class="refsect1" id="id-1.9.4.15.5"><h2> Description
3 </h2><p> <span class="application">pg_receivewal</span> is used to stream the write-ahead log3 </h2><p> <span class="application">pg_receivewal</span> is used to stream the write-ahead log
4 from a running <span class="productname">PostgreSQL</span> cluster. The write-ahead4 from a running <span class="productname">PostgreSQL</span> cluster. The write-ahead
5 log is streamed using the streaming replication protocol, and is written5 log is streamed using the streaming replication protocol, and is written
@@ -148,4 +148,4 @@
148 </p></div><div class="refsect1" id="id-1.9.4.15.9"><h2>Examples</h2><p> To stream the write-ahead log from the server at148 </p></div><div class="refsect1" id="id-1.9.4.15.9"><h2>Examples</h2><p> To stream the write-ahead log from the server at
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches