Avoid type cheats for invalid dsa_handles and dshash_table_handles.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 25 Jan 2023 16:48:38 +0000 (11:48 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 25 Jan 2023 16:48:38 +0000 (11:48 -0500)
commit3b4ac33254e1291f0b3c94f1cb770137c418ce2e
tree9219e24682a484c34c4d2af241db9300be5727cd
parentd7c4830abb1867ca4fb83add2a5fac558f778b6a
Avoid type cheats for invalid dsa_handles and dshash_table_handles.

Invent separate macros for "invalid" values of these types, so that
we needn't embed knowledge of their representations into calling code.
These are all zeroes anyway ATM, so this is not fixing any live bug,
but it makes the code cleaner and more future-proof.

I (tgl) also chose to move DSM_HANDLE_INVALID into dsm_impl.h,
since it seems like it should live beside the typedef for dsm_handle.

Hou Zhijie, Nathan Bossart, Kyotaro Horiguchi, Tom Lane

Discussion: https://postgr.es/m/OS0PR01MB5716860B1454C34E5B179B6694C99@OS0PR01MB5716.jpnprd01.prod.outlook.com
src/backend/replication/logical/launcher.c
src/backend/storage/ipc/dsm.c
src/backend/utils/mmgr/dsa.c
src/include/lib/dshash.h
src/include/storage/dsm.h
src/include/storage/dsm_impl.h
src/include/utils/dsa.h