]> granicus.if.org Git - postgresql/blobdiff - src/backend/access/gin/ginget.c
Use a separate memory context for GIN scan keys.
[postgresql] / src / backend / access / gin / ginget.c
index 9d73142ee93897d82f77d21a37e79f5b17604bc2..3e2b8b5fedf05a68be4368d78a3d87ddc5cf679d 100644 (file)
@@ -497,7 +497,7 @@ startScanKey(GinState *ginstate, GinScanOpaque so, GinScanKey key)
                }
                /* i is now the last required entry. */
 
-               MemoryContextSwitchTo(oldCtx);
+               MemoryContextSwitchTo(so->keyCtx);
 
                key->nrequired = i + 1;
                key->nadditional = key->nentries - key->nrequired;
@@ -515,11 +515,14 @@ startScanKey(GinState *ginstate, GinScanOpaque so, GinScanKey key)
        }
        else
        {
+               MemoryContextSwitchTo(so->keyCtx);
+
                key->nrequired = 1;
                key->nadditional = 0;
                key->requiredEntries = palloc(1 * sizeof(GinScanEntry));
                key->requiredEntries[0] = key->scanEntry[0];
        }
+       MemoryContextSwitchTo(oldCtx);
 }
 
 static void