diff options
Diffstat (limited to 'src/backend/access/gin/ginget.c')
-rw-r--r-- | src/backend/access/gin/ginget.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/backend/access/gin/ginget.c b/src/backend/access/gin/ginget.c index 11f034bb213..2366f3f727e 100644 --- a/src/backend/access/gin/ginget.c +++ b/src/backend/access/gin/ginget.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gin/ginget.c,v 1.5 2007/01/05 22:19:21 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/gin/ginget.c,v 1.6 2007/01/31 15:09:45 teodor Exp $ *------------------------------------------------------------------------- */ @@ -420,6 +420,7 @@ scanGetItem(IndexScanDesc scan, ItemPointerData *item) } #define GinIsNewKey(s) ( ((GinScanOpaque) scan->opaque)->keys == NULL ) +#define GinIsVoidRes(s) ( ((GinScanOpaque) scan->opaque)->isVoidRes == true ) Datum gingetmulti(PG_FUNCTION_ARGS) @@ -432,10 +433,13 @@ gingetmulti(PG_FUNCTION_ARGS) if (GinIsNewKey(scan)) newScanKey(scan); - startScan(scan); - *returned_tids = 0; + if (GinIsVoidRes(scan)) + PG_RETURN_BOOL(false); + + startScan(scan); + do { if (scanGetItem(scan, tids + *returned_tids)) @@ -462,6 +466,9 @@ gingettuple(PG_FUNCTION_ARGS) if (GinIsNewKey(scan)) newScanKey(scan); + if (GinIsVoidRes(scan)) + PG_RETURN_BOOL(false); + startScan(scan); res = scanGetItem(scan, &scan->xs_ctup.t_self); stopScan(scan); |