Hi,

On 12/06/2015 11:48 PM, Tomas Vondra wrote:
   /*
    * Frequently, there will be no partial indexes, so first check to
    * make sure there's something useful to do here.
    */
   have_partial = false;
   foreach(lc, rel->indexlist)
   {
     IndexOptInfo *index = (IndexOptInfo *) lfirst(lc);

     /*
      * index rinfos are the same to baseristrict infos for non-partial
      * indexes
      */
     index->indrinfos = rel->baserestrictinfo;

     if (index->indpred == NIL)
       continue;      /* ignore non-partial indexes */

     if (index->predOK)
       continue;      /* don't repeat work if already proven OK */

     have_partial = true;
     break;
   }

Attached is a v6 of the patch, which is actually the version submitted by Kyotaro-san on 2015/10/8 rebased to current master and with two additional changes.

Firstly, I've removed the "break" from the initial foreach loop in check_partial_indexes(). As explained in the previous message, I believe this was a bug in the patch.

Secondly, I've tried to improve the comments to explain a bit better what the code is doing.

regards

--
Tomas Vondra                  http://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Attachment: partial-index-only-scan-v6.patch
Description: binary/octet-stream

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to