Re: WIP: Covering + unique indexes.

Anastasia Lubennikova <a.lubennikova@postgrespro.ru>

From: Anastasia Lubennikova <a.lubennikova@postgrespro.ru>
To: David Rowley <david.rowley@2ndquadrant.com>
Cc: Jeff Janes <jeff.janes@gmail.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2016-01-13T13:58:32Z
Lists: pgsql-hackers
13.01.2016 04:27, David Rowley:
> I've also done some testing:
>
> create table ab (a int, b int);
> insert into ab select a,b from generate_Series(1,10) a(a), 
> generate_series(1,10000) b(b);
> set enable_bitmapscan=off;
> set enable_indexscan=off;
>
> select * from ab where a = 1 and b=1;
>  a | b
> ---+---
>  1 | 1
> (1 row)
>
> set enable_indexscan = on;
> select * from ab where a = 1 and b=1;
>  a | b
> ---+---
> (0 rows)
>
> This is broken. I've not looked into why yet, but from looking at the 
> EXPLAIN output I was a bit surprised to see b=1 as an index condition. 
> I'd have expected a Filter maybe, but I've not looked at the EXPLAIN 
> code to see how those are determined yet.

Hmm... Do you use both patches?
And could you provide index definition, I can't reproduce the problem 
assuming that index is created by the statement
CREATE INDEX idx ON ab (a) INCLUDING (b);

-- 
Anastasia Lubennikova
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company



Commits

  1. Adjust INCLUDE index truncation comments and code.

  2. Add commentary explaining why MaxIndexTuplesPerPage calculation is safe.

  3. Indexes with INCLUDE columns and their support in B-tree

  4. Add amcheck verification of heap relations belonging to btree indexes.

  5. Doc: move info for btree opclass implementors into main documentation.

  6. Doc: mention that you can't PREPARE TRANSACTION after NOTIFY.

  7. Remove dedicated B-tree root-split record types.

  8. Restructure index access method API to hide most of it at the C level.

  9. Split _bt_insertonpg to two functions.

  10. Major overhaul of btree index code. Eliminate special BTP_CHAIN logic for