From 337b60ed2e3e64ec229641c8d72d55b818c3db31 Mon Sep 17 00:00:00 2001 From: mkharitonov Date: Wed, 23 Apr 2025 10:37:05 +0300 Subject: [PATCH] [PGPRO-11557] Fix infinite loop with multiple ORDER BY in RUM scan --- src/rumget.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/rumget.c b/src/rumget.c index ca5d83ee00..84b3697dc7 100644 --- a/src/rumget.c +++ b/src/rumget.c @@ -1741,7 +1741,11 @@ entryFindItem(RumState * rumstate, RumScanEntry entry, RumItem * item, Snapshot { if (compareRumItemScanDirection(rumstate, entry->attnumOrig, entry->scanDirection, - &entry->curItem, item) >= 0) + &entry->curItem, item) >= 0 && + entry->offset >= 0 && + entry->offset < entry->nlist && + rumCompareItemPointers(&entry->curItem.iptr, + &entry->list[entry->offset].iptr) == 0) return; while (entry->offset >= 0 && entry->offset < entry->nlist) {