aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/gist/gistscan.c
diff options
context:
space:
mode:
authorVadim B. Mikheev <vadim4o@yahoo.com>1997-05-22 16:01:33 +0000
committerVadim B. Mikheev <vadim4o@yahoo.com>1997-05-22 16:01:33 +0000
commit737ab85cc08c888d8f8817073909ec0ecdf62d18 (patch)
tree64965d1eb4d2ed245a9ed9fd1719c629c5466615 /src/backend/access/gist/gistscan.c
parent4800abc7c16150485ef39f52f63fd588373c9911 (diff)
downloadpostgresql-737ab85cc08c888d8f8817073909ec0ecdf62d18.tar.gz
postgresql-737ab85cc08c888d8f8817073909ec0ecdf62d18.zip
1. Pass GISTENTRYs to giststate->penaltyFn by pointers, not by vals.
2. Re-initialize keys in gistrescan (if gist used in inner scan).
Diffstat (limited to 'src/backend/access/gist/gistscan.c')
-rw-r--r--src/backend/access/gist/gistscan.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/backend/access/gist/gistscan.c b/src/backend/access/gist/gistscan.c
index 4629de12922..c877538472c 100644
--- a/src/backend/access/gist/gistscan.c
+++ b/src/backend/access/gist/gistscan.c
@@ -118,6 +118,13 @@ gistrescan(IndexScanDesc s, bool fromEnd, ScanKey key)
gistfreestack(p->s_markstk);
p->s_stack = p->s_markstk = (GISTSTACK *) NULL;
p->s_flags = 0x0;
+ for (i = 0; i < s->numberOfKeys; i++)
+ {
+ s->keyData[i].sk_procedure
+ = RelationGetGISTStrategy(s->relation, s->keyData[i].sk_attno,
+ s->keyData[i].sk_procedure);
+ s->keyData[i].sk_func = p->giststate->consistentFn;
+ }
} else {
/* initialize opaque data */
p = (GISTScanOpaque) palloc(sizeof(GISTScanOpaqueData));