From 21f0db98ea83025bb77928741af05f15ab4b0cba Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 16 Jan 2000 00:45:33 +0000 Subject: [PATCH] Back-patch critical fixes for NUMERIC values in plpgsql functions. --- src/pl/plpgsql/src/pl_exec.c | 16 ++++++++-------- src/pl/plpgsql/src/plpgsql.h | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/pl/plpgsql/src/pl_exec.c b/src/pl/plpgsql/src/pl_exec.c index 02bdf6caa1..79e741c0af 100644 --- a/src/pl/plpgsql/src/pl_exec.c +++ b/src/pl/plpgsql/src/pl_exec.c @@ -3,7 +3,7 @@ * procedural language * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_exec.c,v 1.12 1999/07/04 01:03:01 tgl Exp $ + * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_exec.c,v 1.12.2.1 2000/01/16 00:45:33 tgl Exp $ * * This software is copyrighted by Jan Wieck - Hamburg. * @@ -130,7 +130,7 @@ static void exec_move_row(PLpgSQL_execstate * estate, static Datum exec_cast_value(Datum value, Oid valtype, Oid reqtype, FmgrInfo *reqinput, - int16 reqtypmod, + int32 reqtypmod, bool *isnull); static void exec_set_found(PLpgSQL_execstate * estate, bool state); @@ -1561,7 +1561,7 @@ exec_stmt_raise(PLpgSQL_execstate * estate, PLpgSQL_stmt_raise * stmt) typeStruct = (Form_pg_type) GETSTRUCT(typetup); fmgr_info(typeStruct->typoutput, &finfo_output); - extval = (char *) (*fmgr_faddr(&finfo_output)) (var->value, &(var->isnull), var->datatype->atttypmod); + extval = (char *) (*fmgr_faddr(&finfo_output)) (var->value, InvalidOid, var->datatype->atttypmod); } plpgsql_dstring_append(&ds, extval); break; @@ -1874,7 +1874,7 @@ exec_assign_value(PLpgSQL_execstate * estate, char *nulls; bool attisnull; Oid atttype; - int4 atttypmod; + int32 atttypmod; HeapTuple typetup; Form_pg_type typeStruct; FmgrInfo finfo_input; @@ -2373,7 +2373,7 @@ static Datum exec_cast_value(Datum value, Oid valtype, Oid reqtype, FmgrInfo *reqinput, - int16 reqtypmod, + int32 reqtypmod, bool *isnull) { if (!*isnull) @@ -2383,7 +2383,7 @@ exec_cast_value(Datum value, Oid valtype, * that of the variable, convert it. * ---------- */ - if (valtype != reqtype || reqtypmod > 0) + if (valtype != reqtype || reqtypmod != -1) { HeapTuple typetup; Form_pg_type typeStruct; @@ -2397,8 +2397,8 @@ exec_cast_value(Datum value, Oid valtype, typeStruct = (Form_pg_type) GETSTRUCT(typetup); fmgr_info(typeStruct->typoutput, &finfo_output); - extval = (char *) (*fmgr_faddr(&finfo_output)) (value, &isnull, -1); - value = (Datum) (*fmgr_faddr(reqinput)) (extval, &isnull, reqtypmod); + extval = (char *) (*fmgr_faddr(&finfo_output)) (value, InvalidOid, -1); + value = (Datum) (*fmgr_faddr(reqinput)) (extval, InvalidOid, reqtypmod); } } diff --git a/src/pl/plpgsql/src/plpgsql.h b/src/pl/plpgsql/src/plpgsql.h index 2d0a57cd2d..4f3c8af2c2 100644 --- a/src/pl/plpgsql/src/plpgsql.h +++ b/src/pl/plpgsql/src/plpgsql.h @@ -3,7 +3,7 @@ * procedural language * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/plpgsql.h,v 1.3 1999/01/27 16:15:22 wieck Exp $ + * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/plpgsql.h,v 1.3.2.1 2000/01/16 00:45:33 tgl Exp $ * * This software is copyrighted by Jan Wieck - Hamburg. * @@ -126,7 +126,7 @@ typedef struct Oid typoid; FmgrInfo typinput; bool typbyval; - int16 atttypmod; + int32 atttypmod; } PLpgSQL_type;