postgresql/src/backend
Peter Geoghegan be14f884d5 Fix deduplication "single value" strategy bug.
It was possible for deduplication's single value strategy to mistakenly
believe that a very small duplicate tuple counts as one of the six large
tuples that it aims to leave behind after the page finally splits.  This
could cause slightly suboptimal space utilization with very low
cardinality indexes, though only under fairly narrow conditions.

To fix, be particular about what kind of tuple counts as a
maxpostingsize-capped tuple.  This avoids confusion in the event of a
small tuple that gets "wedged" between two large tuples, where all
tuples on the page are duplicates of the same value.

Discussion: https://postgr.es/m/CAH2-Wz=Y+sgSFc-O3LpiZX-POx2bC+okec2KafERHuzdVa7-rQ@mail.gmail.com
Backpatch: 13-, where deduplication was introduced (by commit 0d861bbb)
2020-06-19 08:57:24 -07:00
..
access Fix deduplication "single value" strategy bug. 2020-06-19 08:57:24 -07:00
bootstrap Skip WAL for new relfilenodes, under wal_level=minimal. 2020-04-04 12:25:34 -07:00
catalog Replace superuser check by ACLs for replication origin functions 2020-06-14 12:40:37 +09:00
commands Fix EXPLAIN ANALYZE for parallel HashAgg plans 2020-06-19 17:24:27 +12:00
executor Fix EXPLAIN ANALYZE for parallel HashAgg plans 2020-06-19 17:24:27 +12:00
foreign Update copyrights for 2020 2020-01-01 12:21:45 -05:00
jit pgindent run prior to branching v13. 2020-06-07 16:57:08 -04:00
lib Move src/backend/utils/hash/hashfn.c to src/common 2020-02-27 09:25:41 +05:30
libpq Fix comment in be-secure-openssl.c 2020-06-04 13:02:59 +09:00
main Clean up includes of s_lock.h. 2020-06-18 19:41:05 -07:00
nodes Avoid using a cursor in plpgsql's RETURN QUERY statement. 2020-06-12 12:14:32 -04:00
optimizer Rework HashAgg GUCs. 2020-06-11 12:57:43 -07:00
parser Refactor AlterExtensionContentsStmt grammar 2020-06-13 09:19:30 +02:00
partitioning Fix two typos in a comment 2020-05-22 17:39:16 -04:00
po Translation updates 2020-05-18 12:49:30 +02:00
port Spelling adjustments 2020-06-07 15:06:51 +02:00
postmaster Improve server code to read files as part of a base backup. 2020-06-17 11:39:17 -04:00
regex Dial back -Wimplicit-fallthrough to level 3 2020-05-13 15:31:14 -04:00
replication Fix issues in invalidation of obsolete replication slots. 2020-06-19 17:15:52 +09:00
rewrite Add missing invocations to object access hooks 2020-05-23 14:03:04 +09:00
snowball Update snowball 2020-06-08 08:07:15 +02:00
statistics Run pgindent with new pg_bsd_indent version 2.1.1. 2020-05-16 11:54:51 -04:00
storage Fix deadlock danger when atomic ops are done under spinlock. 2020-06-18 14:08:32 -07:00
tcop Avoid using a cursor in plpgsql's RETURN QUERY statement. 2020-06-12 12:14:32 -04:00
tsearch Further cleanup of ts_headline code. 2020-04-09 15:38:43 -04:00
utils Disallow factorial of negative numbers 2020-06-18 08:41:31 +02:00
.gitignore Add .gitignore entries for AIX-specific intermediate build artifacts. 2015-07-08 20:44:22 -04:00
common.mk Remove PARTIAL_LINKING build mode. 2018-03-30 17:33:04 -07:00
Makefile Update copyrights for 2020 2020-01-01 12:21:45 -05:00
nls.mk Add missing gettext triggers 2020-04-28 13:35:40 +02:00