From: | Amit Langote <Langote_Amit_f8(at)lab(dot)ntt(dot)co(dot)jp> |
---|---|
To: | Ashutosh Bapat <ashutosh(dot)bapat(at)enterprisedb(dot)com> |
Cc: | Ildar Musin <i(dot)musin(at)postgrespro(dot)ru>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Declarative partitioning |
Date: | 2016-07-05 04:48:10 |
Message-ID: | a8ffae48-a9ed-9f65-8bad-f42a6aa3b623@lab.ntt.co.jp |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 2016/07/04 21:31, Ashutosh Bapat wrote:
> Hi Amit,
> I observed that the ChangeVarNodes call at line 1229 in
> get_relation_constraints() (code below) changes the varno in the cached
> copy of partition key expression, which is undesirable. The reason for this
> seems to be that the RelationGetPartitionCheckQual() returns the copy of
> partition key expression directly from the cache. This is mostly because
> get_check_qual_for_range() directly works on cached copy of partition key
> expressions, which it should never.
Yes, a copyObject() on key->partexprs items seems necessary. Will fix that.
> 1223 /* Append partition check quals, if any */
> 1224 pcqual = RelationGetPartitionCheckQual(relation);
> 1225 if (pcqual)
> 1226 {
> 1227 /* Fix Vars to have the desired varno */
> 1228 if (varno != 1)
> 1229 ChangeVarNodes((Node *) pcqual, 1, varno, 0);
> 1230
> 1231 result = list_concat(result, pcqual);
> 1232 }
>
> Because of this, the first time through the partition key expressions are
> valid, but then onwards they are restamped with the varno of the first
> partition.
>
> Please add testcases to your patch to catch such types of issues.
I will integrate tests into the patch(es) and add some more.
Thanks,
Amit
From | Date | Subject | |
---|---|---|---|
Next Message | Michael Paquier | 2016-07-05 05:06:46 | Re: Renaming more clearly SHA functions in pgcrypto/ |
Previous Message | Michael Paquier | 2016-07-05 04:44:08 | Re: [CF2016-9] Allow spaces in working path on tap-tests |