Re: Report error position in partition bound check
Amit Langote <amitlangote09@gmail.com>
From: Amit Langote <amitlangote09@gmail.com>
To: Ashutosh Bapat <ashutosh.bapat@2ndquadrant.com>
Cc: Alexandra Wang <alexandra.wanglei@gmail.com>,
Daniel Gustafsson <daniel@yesql.se>, Tom Lane <tgl@sss.pgh.pa.us>,
PostgreSQL mailing lists <pgsql-hackers@postgresql.org>, "Ashwin Agrawal (Pivotal)" <aagrawal@pivotal.io>
Date: 2020-09-17T07:35:58Z
Lists: pgsql-hackers
Attachments
- v4-0001-Improve-check-new-partition-bound-error-position-.patch (application/octet-stream) patch v4-0001
Hi Ashutosh, I had forgotten about this thread, but Michael's ping email brought it to my attention. On Fri, Sep 4, 2020 at 11:12 PM Ashutosh Bapat <ashutosh.bapat@2ndquadrant.com> wrote: > Thanks for rebasing patch. It applies cleanly still. Here are some comments Thanks for the review. > @@ -3320,7 +3338,9 @@ make_one_partition_rbound(PartitionKey key, int index, List *datums, bool lower) > * partition_rbound_cmp > * > * Return for two range bounds whether the 1st one (specified in datums1, > > I think it's better to reword it as. "For two range bounds decide whether ... > > - * kind1, and lower1) is <, =, or > the bound specified in *b2. > + * kind1, and lower1) is <, =, or > the bound specified in *b2. 0 is returned if > + * equal and the 1-based index of the first mismatching bound if unequal; > + * multiplied by -1 if the 1st bound is smaller. > > This sentence makes sense after the above correction. I liked this change, > requires very small changes in other parts. +1 to your suggested rewording, although I wrote: "For two range bounds this decides whether..." > /* > @@ -3495,7 +3518,7 @@ static int > partition_range_bsearch(int partnatts, FmgrInfo *partsupfunc, > Oid *partcollation, > PartitionBoundInfo boundinfo, > - PartitionRangeBound *probe, bool *is_equal) > + PartitionRangeBound *probe, bool *is_equal, int32 *cmpval) > > Please update the prologue explaining the new argument. Done. Actually, I noticed that *is_equal was unused in this function's only caller. *cmpval == 0 already gives that, so removed is_equal parameter. Attached updated version. -- Amit Langote EnterpriseDB: http://www.enterprisedb.com
Commits
-
Assign collations in partition bound expressions.
- 72647ac3bf0f 14.0 landed
- 61a78c71a656 13.1 landed
- 29f20db85ed2 12.5 landed
-
Remove complaints about COLLATE clauses in partition bound values.
- 2dfa3fea88bc 14.0 landed
-
Improve error cursor positions for problems with partition bounds.
- 6b2c4e59d016 14.0 landed