Skip to content

Commit 84dc130

Browse files
Accommodate very large dshash tables.
If a dshash table grows very large (e.g., the dshash table for cumulative statistics when there are millions of tables), resizing it may fail with an error like: ERROR: invalid DSA memory alloc request size 1073741824 To fix, permit dshash resizing to allocate more than 1 GB by providing the DSA_ALLOC_HUGE flag. Reported-by: Andreas Scherbaum Author: Matthias van de Meent Reviewed-by: Cédric Villemain, Michael Paquier, Andres Freund Discussion: https://postgr.es/m/80a12d59-0d5e-4c54-866c-e69cd6536471%40pgug.de Backpatch-through: 13
1 parent f5f5e7b commit 84dc130

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/backend/lib/dshash.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -692,8 +692,10 @@ resize(dshash_table *hash_table, size_t new_size_log2)
692692
Assert(new_size_log2 == hash_table->control->size_log2 + 1);
693693

694694
/* Allocate the space for the new table. */
695-
new_buckets_shared = dsa_allocate0(hash_table->area,
696-
sizeof(dsa_pointer) * new_size);
695+
new_buckets_shared =
696+
dsa_allocate_extended(hash_table->area,
697+
sizeof(dsa_pointer) * new_size,
698+
DSA_ALLOC_HUGE | DSA_ALLOC_ZERO);
697699
new_buckets = dsa_get_address(hash_table->area, new_buckets_shared);
698700

699701
/*

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy