shm_toc_insert() silently accepts duplicate keys. Since shm_toc_lookup()
returns the first matching entry, any later entry with the same key
would be unreachable. Add an assertion to catch this.
Author: Melanie Plageman <melanieplageman@gmail.com>
Discussion: https://postgr.es/m/flat/
a177a6dd-240b-455a-8f25-
aca0b1c08c6e%40vondra.me
total_bytes = vtoc->toc_total_bytes;
allocated_bytes = vtoc->toc_allocated_bytes;
nentry = vtoc->toc_nentry;
+
+#ifdef USE_ASSERT_CHECKING
+ /* Verify no duplicate keys */
+ for (Size i = 0; i < nentry; i++)
+ Assert(vtoc->toc_entry[i].key != key);
+#endif
+
toc_bytes = offsetof(shm_toc, toc_entry) + nentry * sizeof(shm_toc_entry)
+ allocated_bytes;