@@ -760,31 +760,6 @@ scan_entry_cmp(const void *p1, const void *p2, void *arg)
760760return - cmpEntries (arg ,e1 ,e2 );
761761}
762762
763- /*
764- * The entryGetItem() function from rumget.c write the results to curItem
765- * in a specific order. The functions below allow you to understand the order
766- * in which the results will be returned. This is important in a multi-column
767- * RUM index, when the results will be returned in different order for
768- * different subquery conditions.
769- */
770- static bool
771- isEntryOrderedByAddInfo (RumState * rumstate ,RumScanEntry entry )
772- {
773- if (rumstate -> useAlternativeOrder )
774- return (rumstate -> attrnAddToColumn == entry -> attnumOrig );
775- else
776- return false;
777- }
778-
779- static bool
780- isKeyOrderedByAddInfo (RumState * rumstate ,RumScanKey key )
781- {
782- if (rumstate -> useAlternativeOrder )
783- return (rumstate -> attrnAddToColumn == key -> attnumOrig );
784- else
785- return false;
786- }
787-
788763static bool
789764isScanWithAltOrderKeys (RumScanOpaque so )
790765{
@@ -798,7 +773,8 @@ isScanWithAltOrderKeys(RumScanOpaque so)
798773
799774for (int i = 0 ;i < so -> nkeys ;i ++ )
800775{
801- if (isKeyOrderedByAddInfo (rumstate ,so -> keys [i ]))
776+ if (rumstate -> useAlternativeOrder &&
777+ rumstate -> attrnAddToColumn == so -> keys [i ]-> attnumOrig )
802778withAltKeys = true;
803779else
804780withUsualKeys = true;
@@ -861,7 +837,7 @@ startScan(IndexScanDesc scan)
861837 */
862838if (isScanWithAltOrderKeys (so ))
863839{
864- so -> scanWithAltOrderKeys = true;
840+ so -> scanWithAltOrderKeys = true;
865841so -> tbm = rum_tbm_create (work_mem * 1024L ,NULL );
866842}
867843
@@ -1611,7 +1587,7 @@ scanGetItemRegular(IndexScanDesc scan, RumItem *advancePast,
16111587for (int i = 0 ;i < so -> nkeys ;i ++ )
16121588{
16131589if (so -> keys [i ]-> orderBy ||
1614- isKeyOrderedByAddInfo ( rumstate , so -> keys [i ]) )
1590+ rumstate -> attrnAddToColumn == so -> keys [i ]-> attnumOrig )
16151591continue ;
16161592
16171593cur_key_tbm = rum_tbm_create (work_mem * 1024L ,NULL );
@@ -1648,7 +1624,7 @@ scanGetItemRegular(IndexScanDesc scan, RumItem *advancePast,
16481624
16491625/* In the case of scanning with altOrderKeys, skip the usual keys */
16501626if (so -> scanWithAltOrderKeys &&
1651- isEntryOrderedByAddInfo ( rumstate , entry ) == false )
1627+ rumstate -> attrnAddToColumn != entry -> attnumOrig )
16521628continue ;
16531629
16541630while (entry -> isFinished == false&&
@@ -1687,7 +1663,7 @@ scanGetItemRegular(IndexScanDesc scan, RumItem *advancePast,
16871663
16881664/* In the case of scanning with altOrderKeys, skip the usual keys */
16891665if (key -> orderBy || (so -> scanWithAltOrderKeys &&
1690- isKeyOrderedByAddInfo ( rumstate , key ) == false ))
1666+ rumstate -> attrnAddToColumn != so -> keys [ i ] -> attnumOrig ))
16911667continue ;
16921668
16931669keyGetItem (& so -> rumstate ,so -> tempCtx ,key );
@@ -1718,7 +1694,7 @@ scanGetItemRegular(IndexScanDesc scan, RumItem *advancePast,
17181694
17191695/* In the case of scanning with altOrderKeys, skip the usual keys */
17201696if (key -> orderBy || (so -> scanWithAltOrderKeys &&
1721- isKeyOrderedByAddInfo ( rumstate , key ) == false ))
1697+ rumstate -> attrnAddToColumn != so -> keys [ i ] -> attnumOrig ))
17221698continue ;
17231699
17241700if (key -> curItemMatches )