postgresql/contrib/pg_stat_statements
Tom Lane b3817f5f77 Improve hash_create()'s API for some added robustness.
Invent a new flag bit HASH_STRINGS to specify C-string hashing, which
was formerly the default; and add assertions insisting that exactly
one of the bits HASH_STRINGS, HASH_BLOBS, and HASH_FUNCTION be set.
This is in hopes of preventing recurrences of the type of oversight
fixed in commit a1b8aa1e4 (i.e., mistakenly omitting HASH_BLOBS).

Also, when HASH_STRINGS is specified, insist that the keysize be
more than 8 bytes.  This is a heuristic, but it should catch
accidental use of HASH_STRINGS for integer or pointer keys.
(Nearly all existing use-cases set the keysize to NAMEDATALEN or
more, so there's little reason to think this restriction should
be problematic.)

Tweak hash_create() to insist that the HASH_ELEM flag be set, and
remove the defaults it had for keysize and entrysize.  Since those
defaults were undocumented and basically useless, no callers
omitted HASH_ELEM anyway.

Also, remove memset's zeroing the HASHCTL parameter struct from
those callers that had one.  This has never been really necessary,
and while it wasn't a bad coding convention it was confusing that
some callers did it and some did not.  We might as well save a few
cycles by standardizing on "not".

Also improve the documentation for hash_create().

In passing, improve reinit.c's usage of a hash table by storing
the key as a binary Oid rather than a string; and, since that's
a temporary hash table, allocate it in CurrentMemoryContext for
neatness.

Discussion: https://postgr.es/m/590625.1607878171@sss.pgh.pa.us
2020-12-15 11:38:53 -05:00
..
expected pg_stat_statements: Track number of times pgss entries were deallocated. 2020-11-26 21:18:05 +09:00
sql pg_stat_statements: Track number of times pgss entries were deallocated. 2020-11-26 21:18:05 +09:00
.gitignore
Makefile pg_stat_statements: Track number of times pgss entries were deallocated. 2020-11-26 21:18:05 +09:00
pg_stat_statements--1.0--1.1.sql
pg_stat_statements--1.1--1.2.sql
pg_stat_statements--1.2--1.3.sql
pg_stat_statements--1.3--1.4.sql
pg_stat_statements--1.4--1.5.sql
pg_stat_statements--1.4.sql
pg_stat_statements--1.5--1.6.sql
pg_stat_statements--1.6--1.7.sql
pg_stat_statements--1.7--1.8.sql Change the display of WAL usage statistics in Explain. 2020-05-05 08:00:53 +05:30
pg_stat_statements--1.8--1.9.sql pg_stat_statements: Track number of times pgss entries were deallocated. 2020-11-26 21:18:05 +09:00
pg_stat_statements.c Improve hash_create()'s API for some added robustness. 2020-12-15 11:38:53 -05:00
pg_stat_statements.conf
pg_stat_statements.control pg_stat_statements: Track number of times pgss entries were deallocated. 2020-11-26 21:18:05 +09:00