Commit 9dbfcc22 authored by Tom Lane's avatar Tom Lane

Fix some problems with dropped columns in pltcl functions.

parent 6d239ee4
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
* ENHANCEMENTS, OR MODIFICATIONS. * ENHANCEMENTS, OR MODIFICATIONS.
* *
* IDENTIFICATION * 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) ...@@ -694,6 +694,7 @@ pltcl_trigger_handler(PG_FUNCTION_ARGS)
pfree(stroid); pfree(stroid);
/* A list of attribute names for argument TG_relatts */ /* A list of attribute names for argument TG_relatts */
/* note: we deliberately include dropped atts here */
Tcl_DStringAppendElement(&tcl_trigtup, ""); Tcl_DStringAppendElement(&tcl_trigtup, "");
for (i = 0; i < tupdesc->natts; i++) for (i = 0; i < tupdesc->natts; i++)
Tcl_DStringAppendElement(&tcl_trigtup, Tcl_DStringAppendElement(&tcl_trigtup,
...@@ -863,9 +864,8 @@ pltcl_trigger_handler(PG_FUNCTION_ARGS) ...@@ -863,9 +864,8 @@ pltcl_trigger_handler(PG_FUNCTION_ARGS)
modvalues[i] = (Datum) NULL; modvalues[i] = (Datum) NULL;
} }
modnulls = palloc(tupdesc->natts + 1); modnulls = palloc(tupdesc->natts);
memset(modnulls, 'n', tupdesc->natts); memset(modnulls, 'n', tupdesc->natts);
modnulls[tupdesc->natts] = '\0';
/************************************************************ /************************************************************
* Care for possible elog(ERROR)'s below * Care for possible elog(ERROR)'s below
...@@ -2312,6 +2312,10 @@ pltcl_set_tuple_values(Tcl_Interp *interp, CONST84 char *arrayname, ...@@ -2312,6 +2312,10 @@ pltcl_set_tuple_values(Tcl_Interp *interp, CONST84 char *arrayname,
for (i = 0; i < tupdesc->natts; i++) for (i = 0; i < tupdesc->natts; i++)
{ {
/* ignore dropped attributes */
if (tupdesc->attrs[i]->attisdropped)
continue;
/************************************************************ /************************************************************
* Get the attribute name * Get the attribute name
************************************************************/ ************************************************************/
...@@ -2382,6 +2386,10 @@ pltcl_build_tuple_argument(HeapTuple tuple, TupleDesc tupdesc, ...@@ -2382,6 +2386,10 @@ pltcl_build_tuple_argument(HeapTuple tuple, TupleDesc tupdesc,
for (i = 0; i < tupdesc->natts; i++) for (i = 0; i < tupdesc->natts; i++)
{ {
/* ignore dropped attributes */
if (tupdesc->attrs[i]->attisdropped)
continue;
/************************************************************ /************************************************************
* Get the attribute name * Get the attribute name
************************************************************/ ************************************************************/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment