Re: Partitioned tables and covering indexes

Teodor Sigaev <teodor@sigaev.ru>

From: Teodor Sigaev <teodor@sigaev.ru>
To: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>, Alexander Korotkov <a.korotkov@postgrespro.ru>
Cc: Jaime Casanova <jaime.casanova@2ndquadrant.com>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2018-04-11T19:30:21Z
Lists: pgsql-hackers

Attachments

> Actually, discovered bug is not related to patch except new test faces 
> with it,
> problem is: CompareIndexInfo() checks rd_opfamily for equality for all 
> attributes, not only for key attribute.

Patch attached. But it seems to me, field's names of
IndexInfo structure are a bit confused now:
     int         ii_NumIndexAttrs;   /* total number of columns in index */
     int         ii_NumIndexKeyAttrs;    /* number of key columns in 
index */
     AttrNumber  ii_KeyAttrNumbers[INDEX_MAX_KEYS];


ii_KeyAttrNumbers contains all columns, i.e. it contains 
ii_NumIndexAttrs number of columns, not a ii_NumIndexKeyAttrs number as 
easy to think.

I suggest rename ii_KeyAttrNumbers to ii_AttrNumbers or 
ii_IndexAttrNumbers. Opinions?


>      for (i = 0; i < info1->ii_NumIndexAttrs; i++)
>      {
>          if (maplen < info2->ii_KeyAttrNumbers[i])
> 


-- 
Teodor Sigaev                      E-mail: teodor@sigaev.ru
                                       WWW: http://www.sigaev.ru/

Commits

  1. Fix interference between covering indexes and partitioned tables

  2. Cleanup covering infrastructure

  3. Rename IndexInfo.ii_KeyAttrNumbers array