dshash: Add sequential scan support.
authorAndres Freund <andres@anarazel.de>
Thu, 10 Mar 2022 20:54:54 +0000 (12:54 -0800)
committerAndres Freund <andres@anarazel.de>
Thu, 10 Mar 2022 20:57:05 +0000 (12:57 -0800)
commit352d297dc74feb0bf0dcb255cc0dfaaed2b96c1e
treed8ac19ac9cd2a768605919bec4df52c8b133321c
parentadb5c28adc59415b54c087507dd84c71368c289c
dshash: Add sequential scan support.

Add ability to scan all entries sequentially to dshash. The interface is
similar but a bit different both from that of dynahash and simple dshash
search functions. The most significant differences is that dshash's interfac
always needs a call to dshash_seq_term when scan ends. Another is
locking. Dshash holds partition lock when returning an entry,
dshash_seq_next() also holds lock when returning an entry but callers
shouldn't release it, since the lock is essential to continue a scan. The
seqscan interface allows entry deletion while a scan is in progress using
dshash_delete_current().

Reviewed-By: Andres Freund <andres@anarazel.de>
Author: Kyotaro Horiguchi <horikyoga.ntt@gmail.com>
src/backend/lib/dshash.c
src/include/lib/dshash.h
src/tools/pgindent/typedefs.list