Re: WIP: Covering + unique indexes.
Peter Geoghegan <pg@bowt.ie>
On Fri, Mar 30, 2018 at 6:24 AM, Alexander Korotkov <a.korotkov@postgrespro.ru> wrote: >> With an extreme enough case, this could result in a failure to find a >> split point. Or at least, if that isn't true then it's not clear why, >> and I think it needs to be explained. > > > I don't think this could result in a failure to find a split point. > So, it finds a split point without taking into account that hikey > will be shorter. If such split point exists then split point with > truncated hikey should also exists. If not, then it would be > failure even without covering indexes. I've updated comment > accordingly. You're right. We're going to truncate the unneeded trailing attributes from whatever tuple is to the immediate right of the final split point that we choose (that's the tuple that we'll copy to make a new high key for the left page). Truncation already has to result in a tuple that is less than or equal to the original tuple. I also agree that it isn't worth trying harder to make sure that space is distributed evenly when truncation will go ahead. It will only matter in very rare cases, but the computational overhead of having an accurate high key size for every candidate split point would be significant. -- Peter Geoghegan
Commits
-
Adjust INCLUDE index truncation comments and code.
- 075aade4361b 11.0 landed
-
Add commentary explaining why MaxIndexTuplesPerPage calculation is safe.
- 2a67d6440db4 11.0 cited
-
Indexes with INCLUDE columns and their support in B-tree
- 8224de4f42cc 11.0 landed
-
Add amcheck verification of heap relations belonging to btree indexes.
- 7f563c09f890 11.0 cited
-
Doc: move info for btree opclass implementors into main documentation.
- 3785f7eee3d9 11.0 cited
-
Doc: mention that you can't PREPARE TRANSACTION after NOTIFY.
- e4fbf22831c2 11.0 cited
-
Remove dedicated B-tree root-split record types.
- 0c504a80cf2e 11.0 cited
-
Restructure index access method API to hide most of it at the C level.
- 65c5fcd353a8 9.6.0 cited
-
Split _bt_insertonpg to two functions.
- bc292937ae6a 8.3.0 cited
-
Major overhaul of btree index code. Eliminate special BTP_CHAIN logic for
- 9e85183bfc31 7.1.1 cited