Re: WIP: Covering + unique indexes.

Anastasia Lubennikova <a.lubennikova@postgrespro.ru>

From: Anastasia Lubennikova <a.lubennikova@postgrespro.ru>
To: pgsql-hackers@postgresql.org
Date: 2016-01-22T15:19:33Z
Lists: pgsql-hackers

Attachments

22.01.2016 01:47, David Rowley:
> On 20 January 2016 at 06:08, Anastasia Lubennikova
> <a.lubennikova@postgrespro.ru> wrote:
>>
>>
>> 18.01.2016 01:02, David Rowley пишет:
>>
>> On 14 January 2016 at 08:24, David Rowley <david.rowley@2ndquadrant.com> wrote:
>>> I will try to review the omit_opclass_4.0.patch soon.
>>
>> Hi, as promised, here's my review of the omit_opclass_4.0.patch patch.
>>
>> Thank you again. All mentioned points are fixed and patches are merged.
>> I hope it's all right now. Please check comments one more time. I rather doubt that I wrote everything correctly.
>
> Thanks for updating.
>
> +        for the searching or ordering of records can defined in the
>
> should be:
>
> +        for the searching or ordering of records can be defined in the
>
> but perhaps "defined" should be "included".
>
> The following is still quite wasteful. CopyIndexTuple() does a
> palloc() and memcpy(), and then you throw that away if
> rel->rd_index->indnatts != rel->rd_index->indnkeyatts. I think you
> just need to add an "else" and move the CopyIndexTuple() below the if.
>
> item = (IndexTuple) PageGetItem(lpage, itemid);
>    right_item = CopyIndexTuple(item);
> + if (rel->rd_index->indnatts != rel->rd_index->indnkeyatts)
> + right_item = index_reform_tuple(rel, right_item,
> rel->rd_index->indnatts, rel->rd_index->indnkeyatts);
Fixed. Thank you for reminding me.
> Tom also commited
> http://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=65c5fcd353a859da9e61bfb2b92a99f12937de3b
> So it looks like you'll need to update your pg_am.h changes. Looks
> like you'll need a new struct member in IndexAmRoutine and just
> populate that new member in each of the *handler functions listed in
> pg_am.h
>
> -#define Natts_pg_am 30
> +#define Natts_pg_am 31
Done. I hope that my patch is close to the commit too.

Thank you again for review.

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