From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Amit Langote <amitlangote09(at)gmail(dot)com> |
Cc: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: unsupportable composite type partition keys |
Date: | 2019-12-22 21:51:15 |
Message-ID: | 7782.1577051475@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
I wrote:
> Now as far as point 1 goes, I think it's not really that awful to use
> CheckAttributeType() with a dummy attribute name. The attached
> incomplete patch uses "partition key" which causes it to emit errors
> like
> regression=# create table fool (a int, b int) partition by list ((row(a, b)));
> ERROR: column "partition key" has pseudo-type record
> I don't think that that's unacceptable. But if we wanted to improve it,
> we could imagine adding another flag, say CHKATYPE_IS_PARTITION_KEY,
> that doesn't affect CheckAttributeType's semantics, just the wording of
> the error messages it throws.
Here's a fleshed-out patch that does it like that.
While poking at this, I also started to wonder why CheckAttributeType
wasn't recursing into ranges, since those are our other kind of
container type. And the answer is that it must, because we allow
creation of ranges over composite types:
regression=# create table foo (f1 int, f2 int);
CREATE TABLE
regression=# create type foorange as range (subtype = foo);
CREATE TYPE
regression=# alter table foo add column r foorange;
ALTER TABLE
Simple things still work on table foo, but surely this is exactly
what CheckAttributeType is supposed to be preventing. With the
second attached patch you get
regression=# alter table foo add column r foorange;
ERROR: composite type foo cannot be made a member of itself
The second patch needs to go back all the way, the first one
only as far as we have partitions.
regards, tom lane
Attachment | Content-Type | Size |
---|---|---|
disallow-pseudotype-partition-keys.patch | text/x-diff | 6.6 KB |
recurse-into-ranges-too.patch | text/x-diff | 611 bytes |
From | Date | Subject | |
---|---|---|---|
Next Message | Jeff Davis | 2019-12-22 23:05:46 | Re: Memory-Bounded Hash Aggregation |
Previous Message | Noah Misch | 2019-12-22 20:47:24 | Re: mdclose() does not cope w/ FileClose() failure |