Re: [HACKERS] WIP: Covering + unique indexes.

Anastasia Lubennikova <a.lubennikova@postgrespro.ru>

From: Anastasia Lubennikova <a.lubennikova@postgrespro.ru>
To: Andrey Borodin <x4mmm@yandex-team.ru>
Cc: pgsql-hackers@lists.postgresql.org
Date: 2018-01-18T13:57:06Z
Lists: pgsql-hackers

Attachments

17.01.2018 11:45, Andrey Borodin:
> Hi!
>> 16 янв. 2018 г., в 21:50, Anastasia Lubennikova <a.lubennikova@postgrespro.ru> написал(а):
>>
>> Updated patches are attached.
>>
> Cool, thanks!
>
> I've looked into the code, but haven't found anything broken.
> Since I've tried to rebase patch myself and failed on parse utils, I've spend some cycles trying to break parsing.
> One minor complain (no need to fix).
> This is fine
> x4mmm=# create index on pgbench_accounts (bid) include (aid,filler,upper(filler));
> ERROR:  expressions are not supported in included columns
> But why not same error here? Previous message is very descriptive.
> x4mmm=# create index on pgbench_accounts (bid) include (aid,filler,aid+1);
> ERROR:  syntax error at or near "+"
> This works. But should not, IMHO
> x4mmm=# create index on pgbench_accounts (bid) include (aid,aid,aid);
> CREATE INDEX
> Do not know what's that...
> # create index on pgbench_accounts (bid) include (aid desc, aid asc);
> CREATE INDEX
>
> All these things allow foot-shooting with a small caliber, but do not break big things.
>
> Unfortunately, amcheck_next does not work currently on HEAD (there are problems with AllocSetContextCreate() signature), but I've tested bt_index_check() before, during and after pgbench, on primary and on slave. Also, I've checked bt_index_parent_check() on master.

What is amcheck_next ?
> During bt_index_check()  test from time to time I was observing
> ERROR:  canceling statement due to conflict with recovery
> DETAIL:  User query might have needed to see row versions that must be removed.
>

Sorry, I forgot  to attach the amcheck fix to the previous message.
Now all the patches are in attachment.
Could you recheck if the error is still there?



-- 
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