Re: WIP: Covering + unique indexes.

Teodor Sigaev <teodor@sigaev.ru>

From: Teodor Sigaev <teodor@sigaev.ru>
To: Peter Geoghegan <pg@bowt.ie>
Cc: Jeff Janes <jeff.janes@gmail.com>, Alexander Korotkov <a.korotkov@postgrespro.ru>, Anastasia Lubennikova <a.lubennikova@postgrespro.ru>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2018-04-10T16:03:11Z
Lists: pgsql-hackers
> * There is no pfree() within _bt_buildadd() for truncated tuples, even
> though that's a context where it's clearly not okay.
Agree

> 
> * It might be a good idea to also pfree() the truncated tuple for most
> other _bt_buildadd() callers. Even though it's arguably okay in other
> cases, it seems worth being consistent about it (consistent with old
> nbtree code).
Seems, I don't see other calls to pfree after.

> * There should probably be some documentation around why it's okay
> that we call index_truncate_tuple() with an exclusive buffer lock held
> (during a page split). For example, there should probably be a comment
> on the VARATT_IS_EXTERNAL() situation.
I havn't objection to improve docs/comments.

> 
> * Not sure that all calls to BTreeInnerTupleGetDownLink() are limited
> to inner tuples, which might be worth doing something about (perhaps
> just renaming the macro).
What is suspicious place for you opinion?

> 
> I do not have the time to write a patch right away, but I should be
> able to post one in a few days. I want to avoid sending several small
> patches.
no problem, we can wait


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


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