I am seeing following warning with this set of patches. gram.y:4734:24: warning: assignment from incompatible pointer type [enabled by default]
On Tue, Jul 5, 2016 at 10:18 AM, Amit Langote <langote_amit...@lab.ntt.co.jp > wrote: > 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 > > > -- Best Wishes, Ashutosh Bapat EnterpriseDB Corporation The Postgres Database Company