2014-12-22 11:05:57 +01:00
|
|
|
This directory contains a general purpose data structures, for use anywhere
|
|
|
|
in the backend:
|
|
|
|
|
|
|
|
binaryheap.c - a binary heap
|
|
|
|
|
2018-05-22 12:17:33 +02:00
|
|
|
bipartite_match.c - Hopcroft-Karp maximum cardinality algorithm for bipartite graphs
|
|
|
|
|
2018-04-01 02:49:41 +02:00
|
|
|
bloomfilter.c - probabilistic, space-efficient set membership testing
|
|
|
|
|
2018-05-22 12:17:33 +02:00
|
|
|
dshash.c - concurrent hash tables backed by dynamic shared memory areas
|
|
|
|
|
2015-01-23 21:06:29 +01:00
|
|
|
hyperloglog.c - a streaming cardinality estimator
|
|
|
|
|
2018-05-22 12:17:33 +02:00
|
|
|
ilist.c - single and double-linked lists
|
|
|
|
|
Add IntegerSet, to hold large sets of 64-bit ints efficiently.
The set is implemented as a B-tree, with a compact representation at leaf
items, using Simple-8b algorithm, so that clusters of nearby values use
less memory.
The IntegerSet isn't used for anything yet, aside from the test code, but
we have two patches in the works that would benefit from this: A patch to
allow GiST vacuum to delete empty pages, and a patch to reduce heap
VACUUM's memory usage, by storing the list of dead TIDs more efficiently
and lifting the 1 GB limit on its size.
This includes a unit test module, in src/test/modules/test_integerset.
It can be used to verify correctness, as a regression test, but if you run
it manully, it can also print memory usage and execution time of some of
the tests.
Author: Heikki Linnakangas, Andrey Borodin
Reviewed-by: Julien Rouhaud
Discussion: https://www.postgresql.org/message-id/b5e82599-1966-5783-733c-1a947ddb729f@iki.fi
2019-03-22 12:21:19 +01:00
|
|
|
integerset.c - a data structure for holding large set of integers
|
|
|
|
|
2018-05-22 12:17:33 +02:00
|
|
|
knapsack.c - knapsack problem solver
|
|
|
|
|
2014-12-22 11:05:57 +01:00
|
|
|
pairingheap.c - a pairing heap
|
|
|
|
|
2014-12-22 16:52:08 +01:00
|
|
|
rbtree.c - a red-black tree
|
|
|
|
|
2014-12-22 11:05:57 +01:00
|
|
|
stringinfo.c - an extensible string type
|
|
|
|
|
|
|
|
|
|
|
|
Aside from the inherent characteristics of the data structures, there are a
|
|
|
|
few practical differences between the binary heap and the pairing heap. The
|
|
|
|
binary heap is fully allocated at creation, and cannot be expanded beyond the
|
|
|
|
allocated size. The pairing heap on the other hand has no inherent maximum
|
|
|
|
size, but the caller needs to allocate each element being stored in the heap,
|
|
|
|
while the binary heap works with plain Datums or pointers.
|
|
|
|
|
|
|
|
The linked-lists in ilist.c can be embedded directly into other structs, as
|
|
|
|
opposed to the List interface in nodes/pg_list.h.
|