aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/gist/gistscan.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/access/gist/gistscan.c')
-rw-r--r--src/backend/access/gist/gistscan.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/backend/access/gist/gistscan.c b/src/backend/access/gist/gistscan.c
index 97f4d264d1a..3604debba0f 100644
--- a/src/backend/access/gist/gistscan.c
+++ b/src/backend/access/gist/gistscan.c
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/access/gist/gistscan.c,v 1.61 2005/09/22 20:44:36 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/access/gist/gistscan.c,v 1.61.2.1 2008/08/23 10:43:58 teodor Exp $
*
*-------------------------------------------------------------------------
*/
@@ -98,6 +98,7 @@ gistrescan(PG_FUNCTION_ARGS)
ReleaseBuffer(so->markbuf);
so->markbuf = InvalidBuffer;
}
+
}
else
{
@@ -113,6 +114,8 @@ gistrescan(PG_FUNCTION_ARGS)
scan->opaque = so;
}
+ so->nPageData = so->curPageData = 0;
+
/* Update scan key, if a new one is given */
if (key && scan->numberOfKeys > 0)
{
@@ -179,6 +182,11 @@ gistmarkpos(PG_FUNCTION_ARGS)
so->markbuf = so->curbuf;
}
+ so->markNPageData = so->nPageData;
+ so->markCurPageData = so->curPageData;
+ if ( so->markNPageData > 0 )
+ memcpy( so->markPageData, so->pageData, sizeof(ItemPointerData) * so->markNPageData );
+
PG_RETURN_VOID();
}
@@ -228,6 +236,11 @@ gistrestrpos(PG_FUNCTION_ARGS)
so->curbuf = so->markbuf;
}
+ so->nPageData = so->markNPageData;
+ so->curPageData = so->markNPageData;
+ if ( so->markNPageData > 0 )
+ memcpy( so->pageData, so->markPageData, sizeof(ItemPointerData) * so->markNPageData );
+
PG_RETURN_VOID();
}