On 07/13/2012 11:33 AM, Markus Wanner wrote: > As another minor improvement, it doesn't seem necessary to repeatedly > set the rootBlkno.
Sorry, my mail program delivered an older version of the patch, which didn't reflect that change. Here's what I intended to send. Regards Markus Wanner
# # Minor cleanup of ginInsertValue with additional asserts and # a tighter loop for finding the root in the GinBtreeStack. # ============================================================ *** src/backend/access/gin/ginbtree.c 2d3e63387737b4034fc25ca3cb128d9ac57f4f01 --- src/backend/access/gin/ginbtree.c f6dc88ae5716275e62a6f6715aa7204abd430089 *************** ginInsertValue(GinBtree btree, GinBtreeS *** 276,294 **** ginInsertValue(GinBtree btree, GinBtreeStack *stack, GinStatsData *buildStats) { GinBtreeStack *parent = stack; ! BlockNumber rootBlkno = InvalidBuffer; Page page, rpage, lpage; ! /* remember root BlockNumber */ ! while (parent) ! { ! rootBlkno = parent->blkno; parent = parent->parent; - } ! while (stack) { XLogRecData *rdata; BlockNumber savedRightLink; --- 276,296 ---- ginInsertValue(GinBtree btree, GinBtreeStack *stack, GinStatsData *buildStats) { GinBtreeStack *parent = stack; ! BlockNumber rootBlkno; Page page, rpage, lpage; ! /* extract root BlockNumber from stack */ ! Assert(stack != NULL); ! parent = stack; ! while (parent->parent) parent = parent->parent; ! rootBlkno = parent->blkno; ! Assert(BlockNumberIsValid(rootBlkno)); ! ! for (;;) { XLogRecData *rdata; BlockNumber savedRightLink; *************** ginInsertValue(GinBtree btree, GinBtreeS *** 469,474 **** --- 471,477 ---- UnlockReleaseBuffer(stack->buffer); pfree(stack); + Assert(parent != NULL); /* parent == NULL case is handled above */ stack = parent; } }
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers