Rod Taylor <rbt@rbt.ca> writes:
>> I did something about this --- as of CVS tip, you can do
>>
>> regression=# create table foo (f1 int);
>> CREATE TABLE
>> regression=# alter table foo drop column f1;
>> ALTER TABLE
>> regression=# select * from foo;
> Which of course would dump as 'create table foo ();'.
True. I didn't say that everything would be happy with it ;-). I think
that a zero-column table is only useful as a transient state, and so I'm
happy as long as the backend doesn't core dump.
> I don't think relcache would like a table without any columns, which is
> why the above is rejected.
Relcache doesn't seem to have a problem with it.
> Anyway, should pg_dump ignore the table entirely? Or do we try to allow
> create table () without any attributes?
I feel no strong need to do either. But it likely would only take
removal of this error check:
regression=# create table foo ();
ERROR: DefineRelation: please inherit from a relation or define an attribute
at least as far as the backend goes.
regards, tom lane