BUG #11381: Inherited NOT NULL to NULLABLE column: backup restore error. - Mailing list pgsql-bugs

From m.winkel@w2solutions.nl
Subject BUG #11381: Inherited NOT NULL to NULLABLE column: backup restore error.
Date
Msg-id 20140908144913.2936.63756@wrigleys.postgresql.org
Whole thread Raw
Responses Re: BUG #11381: Inherited NOT NULL to NULLABLE column: backup restore error.
List pgsql-bugs
The following bug has been logged on the website:

Bug reference:      11381
Logged by:          Martin Winkel
Email address:      m.winkel@w2solutions.nl
PostgreSQL version: 9.3.5
Operating system:   Ubuntu 14.04 X64
Description:

Dummy case to reproduce the error:

Create tables:

CREATE TABLE base
(
  id serial NOT NULL,
  name character varying(127) NOT NULL,
  nickname character varying(127) NOT NULL,
  email_address character varying(512) NOT NULL,
  useless_but_required_field text NOT NULL,
  CONSTRAINT base_pkey PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);

CREATE TABLE inherited
(
  CONSTRAINT inherited_pkey PRIMARY KEY (id)
)
INHERITS (base)
WITH (
  OIDS=FALSE
);

ALTER TABLE inherited
   ALTER COLUMN useless_but_required_field DROP NOT NULL;


According to the documentation, it is not clear if this should work. But it
is allowed by version 9.3.5 on ubuntu X64.

In the inherited colum I can insert columns with
"useless_but_required_field" NULL.

The problem is, when I back-up this database using the pg_dump command, I
cannot restore it using pg_restore (or the PgAdmin GUI).

It gives me the following error:

DETAIL:  Failing row contains (1, Martin W, storeman, xx, null).
CONTEXT:  COPY inherited, line 1: "1    Martin W    storeman    xx    \N

Two solutions possible (as far as i can see):
1. Don't allow for children to be nullable if parent isn't
2. Update pg_dump/pg_restore to work with the nullable child columns

pgsql-bugs by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Re: BUG #10329: Could not read block 0 in file "base/56100265/57047884": read only 0 of 8192 bytes
Next
From: Tom Lane
Date:
Subject: Re: BUG #11381: Inherited NOT NULL to NULLABLE column: backup restore error.