[BUGS] BUG #7583: Problem using INHERITS and LIKE

2012-10-04 Thread bryan . love
The following bug has been logged on the website:

Bug reference:  7583
Logged by:  Bryan Love
Email address:  bryan.l...@iovation.com
PostgreSQL version: 9.2.1
Operating system:   Centos 6
Description:

After creating a table using LIKE and INHERITS, if you drop a column from
the parent table that existed prior to creation of the child table, the
column will not be dropped from the child table.

Test Case:

=# create table foo(col1 int, col2 int);
=# create table bar (like foo) inherits (foo);
NOTICE:  merging column "col1" with inherited definition
NOTICE:  merging column "col2" with inherited definition
CREATE TABLE
=# alter table foo drop col1;
ALTER TABLE
=# \d bar
  Table "public.bar"
 Column |  Type   | Modifiers
+-+---
 col1   | integer |
 col2   | integer |
Inherits: foo

--- copy/paste block commands 
drop table bar;
drop table foo;
create table foo(col1 int, col2 int);
create table bar (like foo) inherits (foo);
alter table foo drop col1;
\d bar



-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs


Re: [BUGS] BUG #7583: Problem using INHERITS and LIKE

2012-10-04 Thread Bryan Love
Understood, thanks.

Our use case is that we want to copy the indexes from the parent table as
well, so we have to use (like ... including indexes).

On Thu, Oct 4, 2012 at 7:38 AM, Tom Lane  wrote:

> bryan.l...@iovation.com writes:
> > After creating a table using LIKE and INHERITS, if you drop a column from
> > the parent table that existed prior to creation of the child table, the
> > column will not be dropped from the child table.
>
> This is not a bug.  LIKE says the column isn't inherited, so it exists
> in the child independently of whether it exists in the parent.
>
> Or, if you want to add it up: the child starts out with one local
> definition of the column (from LIKE) and one inherited (from INHERITS).
> Dropping the column from the parent removes the latter, but you still
> have the former, so the column stays.
>
> > =# create table bar (like foo) inherits (foo);
>
> Just out of curiosity, is there any actual use-case for such a silly
> thing?
>
> regards, tom lane
>