From 9dbfcc22613379e89283282db5cd616898bf6e4f Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 4 Sep 2003 15:10:10 +0000 Subject: [PATCH] Fix some problems with dropped columns in pltcl functions. --- src/pl/tcl/pltcl.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/pl/tcl/pltcl.c b/src/pl/tcl/pltcl.c index d3dbd846b7..7489aed7f9 100644 --- a/src/pl/tcl/pltcl.c +++ b/src/pl/tcl/pltcl.c @@ -31,7 +31,7 @@ * ENHANCEMENTS, OR MODIFICATIONS. * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.76 2003/08/08 21:42:59 momjian Exp $ + * $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.77 2003/09/04 15:10:10 tgl Exp $ * **********************************************************************/ @@ -694,6 +694,7 @@ pltcl_trigger_handler(PG_FUNCTION_ARGS) pfree(stroid); /* A list of attribute names for argument TG_relatts */ + /* note: we deliberately include dropped atts here */ Tcl_DStringAppendElement(&tcl_trigtup, ""); for (i = 0; i < tupdesc->natts; i++) Tcl_DStringAppendElement(&tcl_trigtup, @@ -863,9 +864,8 @@ pltcl_trigger_handler(PG_FUNCTION_ARGS) modvalues[i] = (Datum) NULL; } - modnulls = palloc(tupdesc->natts + 1); + modnulls = palloc(tupdesc->natts); memset(modnulls, 'n', tupdesc->natts); - modnulls[tupdesc->natts] = '\0'; /************************************************************ * Care for possible elog(ERROR)'s below @@ -2312,6 +2312,10 @@ pltcl_set_tuple_values(Tcl_Interp *interp, CONST84 char *arrayname, for (i = 0; i < tupdesc->natts; i++) { + /* ignore dropped attributes */ + if (tupdesc->attrs[i]->attisdropped) + continue; + /************************************************************ * Get the attribute name ************************************************************/ @@ -2382,6 +2386,10 @@ pltcl_build_tuple_argument(HeapTuple tuple, TupleDesc tupdesc, for (i = 0; i < tupdesc->natts; i++) { + /* ignore dropped attributes */ + if (tupdesc->attrs[i]->attisdropped) + continue; + /************************************************************ * Get the attribute name ************************************************************/ -- 2.40.0