Hi Andy,

A small thing I found:

+static List *
+get_exprs_from_uniqueindex(IndexOptInfo *unique_index,
+                                                                               
                 List *const_exprs,
+                                                                               
                 List *const_expr_opfamilies,
+                                                                               
                 Bitmapset *used_varattrs,
+                                                                               
                 bool *useful,
+                                                                               
                 bool *multi_nullvals)
…
+             indexpr_item = list_head(unique_index->indexprs);
+             for(c = 0; c < unique_index->ncolumns; c++)
+             {

I believe the for loop must be over unique_index->nkeycolumns, rather than 
columns. It shouldn’t include the extra non-key columns. This can currently 
lead to invalid memory accesses as well a few lines later when it does an array 
access of unique_index->opfamily[c] – this array only has nkeycolumns entries.

-Floris


From: Andy Fan <[email protected]>
Sent: Sunday 19 July 2020 5:03 AM
To: Dmitry Dolgov <[email protected]>
Cc: David Rowley <[email protected]>; PostgreSQL Hackers 
<[email protected]>; Tom Lane <[email protected]>; Ashutosh 
Bapat <[email protected]>; [email protected]
Subject: Re: [PATCH] Keeps tracking the uniqueness with UniqueKey [External]

Fixed a test case in v10.

--
Best Regards
Andy Fan

Reply via email to