Fix pg_dump for better handling of inherited columns.
Revise pg_dump's handling of inherited columns, which was last looked at
seriously in 2001, to eliminate several misbehaviors associated with
inherited default expressions and NOT NULL flags. In particular make sure
that a column is printed in a child table's CREATE TABLE command if and
only if it has attislocal = true; the former behavior would sometimes cause
a column to become marked attislocal when it was not so marked in the
source database. Also, stop relying on textual comparison of default
expressions to decide if they're inherited; instead, don't use
default-expression inheritance at all, but just install the default
explicitly at each level of the hierarchy. This fixes the
search-path-related misbehavior recently exhibited by Chester Young, and
also removes some dubious assumptions about the order in which ALTER TABLE
SET DEFAULT commands would be executed.
Back-patch to all supported branches.
Branch
------
REL8_4_STABLE
Details
-------
http://git.postgresql.org/pg/commitdiff/0951f4d1f5849ff3d868452debf4ced1a736efd0
Modified Files
--------------
src/bin/pg_dump/common.c | 153 ++++++++++++++-------------------------------
src/bin/pg_dump/pg_dump.c | 129 ++++++++++++++++++++++++++++----------
src/bin/pg_dump/pg_dump.h | 15 +---
3 files changed, 147 insertions(+), 150 deletions(-)