From 6da3b76a94bffb90b8edbd86963fb4d15b6c6b43 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 15 Feb 2001 21:57:43 +0000 Subject: [PATCH] Add some notes about memory management of RI plans. --- src/backend/utils/adt/ri_triggers.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/backend/utils/adt/ri_triggers.c b/src/backend/utils/adt/ri_triggers.c index 77d5c79fea..94d9b7313a 100644 --- a/src/backend/utils/adt/ri_triggers.c +++ b/src/backend/utils/adt/ri_triggers.c @@ -4,9 +4,21 @@ * Generic trigger procedures for referential integrity constraint * checks. * - * 1999 Jan Wieck + * Note about memory management: the private hashtables kept here live + * across query and transaction boundaries, in fact they live as long as + * the backend does. This works because the hashtable structures + * themselves are allocated by dynahash.c in its permanent DynaHashCxt, + * and the parse/plan node trees they point to are copied into + * TopMemoryContext using SPI_saveplan(). This is pretty ugly, since there + * is no way to free a no-longer-needed plan tree, but then again we don't + * yet have any bookkeeping that would allow us to detect that a plan isn't + * needed anymore. Improve it someday. * - * $Header: /cvsroot/pgsql/src/backend/utils/adt/ri_triggers.c,v 1.20 2000/12/22 18:35:09 tgl Exp $ + * + * Portions Copyright (c) 2000-2001, PostgreSQL Global Development Group + * Copyright 1999 Jan Wieck + * + * $Header: /cvsroot/pgsql/src/backend/utils/adt/ri_triggers.c,v 1.21 2001/02/15 21:57:43 tgl Exp $ * * ---------- */