From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Robert Haas <robertmhaas(at)gmail(dot)com> |
Cc: | Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, Amit Langote <Langote_Amit_f8(at)lab(dot)ntt(dot)co(dot)jp>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: hyrax vs. RelationBuildPartitionDesc |
Date: | 2019-04-12 19:47:19 |
Message-ID: | 389.1555098439@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Robert Haas <robertmhaas(at)gmail(dot)com> writes:
> As a parenthetical note, I observe that relcache.c seems to know
> almost nothing about rd_partcheck. rd_partkey and rd_partdesc both
> have handling in RelationClearRelation(), but rd_partcheck does not,
> and I suspect that's wrong. So the problems are probably not confined
> to the relcache-drop-time problem that you observed.
I concluded that that's not parenthetical but pretty relevant...
Attached is a revised version of Amit's patch at [1] that makes these
data structures be treated more similarly. I also added some Asserts
and comment improvements to address the complaints I made upthread about
under-documentation of all this logic.
I also cleaned up the problem the code had with failing to distinguish
"partcheck list is NIL" from "partcheck list hasn't been computed yet".
For a relation with no such constraints, generate_partition_qual would do
the full pushups every time. I'm not sure if the case actually occurs
commonly enough that that's a performance problem, but failure to account
for it made my added assertions fall over :-( and I thought fixing it
was better than weakening the assertions.
I haven't made back-patch versions yet. I'd expect they could be
substantially the same, except the two new fields have to go at the
end of struct RelationData to avoid ABI breaks.
Oh: we might also need some change in RelationCacheInitializePhase3,
depending on the decision about [2].
regards, tom lane
[1] https://www.postgresql.org/message-id/036852f2-ba7f-7a1f-21c6-00bc3515eda3@lab.ntt.co.jp
[2] https://www.postgresql.org/message-id/5706.1555093031@sss.pgh.pa.us
Attachment | Content-Type | Size |
---|---|---|
fix-rd_partcheck-management-2.patch | text/x-diff | 9.5 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Andres Freund | 2019-04-12 20:13:30 | Re: Useless code in RelationCacheInitializePhase3 |
Previous Message | Tom Lane | 2019-04-12 19:33:01 | Re: PANIC: could not flush dirty data: Operation not permitted power8, Redhat Centos |