Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit8af3ae0

Browse files
committed
Add pairingheap_initialize() for shared memory usage
The existing pairingheap_allocate() uses palloc(), which allocatesfrom process-local memory. For shared memory use cases, the pairingheapstructure must be allocated via ShmemAlloc() or embedded in a sharedmemory struct. Add pairingheap_initialize() to initialize an already-allocated pairingheap structure in-place, enabling shared memory usage.Discussion:https://www.postgresql.org/message-id/flat/CAPpHfdsjtZLVzxjGT8rJHCYbM0D5dwkO+BBjcirozJ6nYbOW8Q@mail.gmail.comDiscussion:https://www.postgresql.org/message-id/flat/CABPTF7UNft368x-RgOXkfj475OwEbp%2BVVO-wEXz7StgjD_%3D6sw%40mail.gmail.comAuthor: Kartyshov Ivan <i.kartyshov@postgrespro.ru>Author: Alexander Korotkov <aekorotkov@gmail.com>Reviewed-by: Michael Paquier <michael@paquier.xyz>Reviewed-by: Peter Eisentraut <peter.eisentraut@enterprisedb.com>Reviewed-by: Dilip Kumar <dilipbalaut@gmail.com>Reviewed-by: Amit Kapila <amit.kapila16@gmail.com>Reviewed-by: Alexander Lakhin <exclusion@gmail.com>Reviewed-by: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>Reviewed-by: Euler Taveira <euler@eulerto.com>Reviewed-by: Heikki Linnakangas <hlinnaka@iki.fi>Reviewed-by: Kyotaro Horiguchi <horikyota.ntt@gmail.com>Reviewed-by: Xuneng Zhou <xunengzhou@gmail.com>
1 parent0ea5eee commit8af3ae0

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

‎src/backend/lib/pairingheap.c‎

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,26 @@ pairingheap_allocate(pairingheap_comparator compare, void *arg)
4444
pairingheap*heap;
4545

4646
heap= (pairingheap*)palloc(sizeof(pairingheap));
47+
pairingheap_initialize(heap,compare,arg);
48+
49+
returnheap;
50+
}
51+
52+
/*
53+
* pairingheap_initialize
54+
*
55+
* Same as pairingheap_allocate(), but initializes the pairing heap in-place
56+
* rather than allocating a new chunk of memory. Useful to store the pairing
57+
* heap in a shared memory.
58+
*/
59+
void
60+
pairingheap_initialize(pairingheap*heap,pairingheap_comparatorcompare,
61+
void*arg)
62+
{
4763
heap->ph_compare=compare;
4864
heap->ph_arg=arg;
4965

5066
heap->ph_root=NULL;
51-
52-
returnheap;
5367
}
5468

5569
/*

‎src/include/lib/pairingheap.h‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ typedef struct pairingheap
7777

7878
externpairingheap*pairingheap_allocate(pairingheap_comparatorcompare,
7979
void*arg);
80+
externvoidpairingheap_initialize(pairingheap*heap,
81+
pairingheap_comparatorcompare,
82+
void*arg);
8083
externvoidpairingheap_free(pairingheap*heap);
8184
externvoidpairingheap_add(pairingheap*heap,pairingheap_node*node);
8285
externpairingheap_node*pairingheap_first(pairingheap*heap);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp