Go to file
Tom Lane 8272749e8c Record dependencies of a cast on other casts that it requires.
When creating a cast that uses a conversion function, we've
historically allowed the input and result types to be
binary-compatible with the function's input and result types,
rather than necessarily being identical.  This means that the new
cast is logically dependent on the binary-compatible cast or casts
that it references: if those are defined by pg_cast entries, and you
try to restore the new cast without having defined them, it'll fail.
Hence, we should make pg_depend entries to record these dependencies
so that pg_dump knows that there is an ordering requirement.

This is not the only place where we allow such shortcuts; aggregate
functions for example are similarly lax, and in principle should gain
similar dependencies.  However, for now it seems sufficient to fix
the cast-versus-cast case, as pg_dump's other ordering heuristics
should keep it out of trouble for other object types.

Per report from David Turoň; thanks also to Robert Haas for
preliminary investigation.  I considered back-patching, but
seeing that this issue has existed for many years without
previous reports, it's not clear it's worth the trouble.
Moreover, back-patching wouldn't be enough to ensure that the
new pg_depend entries exist in existing databases anyway.

Discussion: https://postgr.es/m/OF0A160F3E.578B15D1-ONC12588DA.003E4857-C12588DA.0045A428@notes.linuxbox.cz
2022-10-17 14:02:05 -04:00
config meson: Add initial version of meson based build system 2022-09-21 22:37:17 -07:00
contrib Fix calculation related to temporary WAL segment name in basic_archive 2022-10-17 11:40:14 +09:00
doc pgstat: Track time of the last scan of a relation 2022-10-14 11:11:34 -07:00
src Record dependencies of a cast on other casts that it requires. 2022-10-17 14:02:05 -04:00
.cirrus.yml meson: Add support for building with precompiled headers 2022-10-06 17:19:30 -07:00
.dir-locals.el
.editorconfig
.git-blame-ignore-revs Add b2e6e7682 to .git-blame-ignore-revs 2022-09-08 14:06:59 +07:00
.gitattributes
.gitignore
aclocal.m4
configure autoconf: Rely on ar supporting index creation 2022-10-07 11:53:39 -07:00
configure.ac autoconf: Rely on ar supporting index creation 2022-10-07 11:53:39 -07:00
COPYRIGHT
GNUmakefile.in
HISTORY
Makefile
meson_options.txt meson: Add initial version of meson based build system 2022-09-21 22:37:17 -07:00
meson.build meson: macos: Use -Wl,-undefined,error for modules 2022-10-15 17:02:32 -07:00
README
README.git

PostgreSQL Database Management System
=====================================

This directory contains the source code distribution of the PostgreSQL
database management system.

PostgreSQL is an advanced object-relational database management system
that supports an extended subset of the SQL standard, including
transactions, foreign keys, subqueries, triggers, user-defined types
and functions.  This distribution also contains C language bindings.

PostgreSQL has many language interfaces, many of which are listed here:

	https://www.postgresql.org/download/

See the file INSTALL for instructions on how to build and install
PostgreSQL.  That file also lists supported operating systems and
hardware platforms and contains information regarding any other
software packages that are required to build or run the PostgreSQL
system.  Copyright and license information can be found in the
file COPYRIGHT.  A comprehensive documentation set is included in this
distribution; it can be read as described in the installation
instructions.

The latest version of this software may be obtained at
https://www.postgresql.org/download/.  For more information look at our
web site located at https://www.postgresql.org/.