diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2005-07-10 21:14:00 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2005-07-10 21:14:00 +0000 |
commit | d78397d301172cccce14d5d789f296c47dd47c5e (patch) | |
tree | 4104dc887976aee14286c0c0a7be03f84af43b7d /src/backend/tcop/fastpath.c | |
parent | 2e330699fae72c40f5237ce0f4fc210c483d2816 (diff) | |
download | postgresql-d78397d301172cccce14d5d789f296c47dd47c5e.tar.gz postgresql-d78397d301172cccce14d5d789f296c47dd47c5e.zip |
Change typreceive function API so that receive functions get the same
optional arguments as text input functions, ie, typioparam OID and
atttypmod. Make all the datatypes that use typmod enforce it the same
way in typreceive as they do in typinput. This fixes a problem with
failure to enforce length restrictions during COPY FROM BINARY.
Diffstat (limited to 'src/backend/tcop/fastpath.c')
-rw-r--r-- | src/backend/tcop/fastpath.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/backend/tcop/fastpath.c b/src/backend/tcop/fastpath.c index bd9b4903785..a870f2c9c88 100644 --- a/src/backend/tcop/fastpath.c +++ b/src/backend/tcop/fastpath.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/tcop/fastpath.c,v 1.80 2005/05/01 18:56:18 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/tcop/fastpath.c,v 1.81 2005/07/10 21:13:58 tgl Exp $ * * NOTES * This cruft is the server side of PQfn. @@ -493,9 +493,10 @@ parse_fcall_arguments(StringInfo msgBuf, struct fp_info * fip, /* Call the argument type's binary input converter */ getTypeBinaryInputInfo(fip->argtypes[i], &typreceive, &typioparam); - fcinfo->arg[i] = OidFunctionCall2(typreceive, + fcinfo->arg[i] = OidFunctionCall3(typreceive, PointerGetDatum(&abuf), - ObjectIdGetDatum(typioparam)); + ObjectIdGetDatum(typioparam), + Int32GetDatum(-1)); /* Trouble if it didn't eat the whole buffer */ if (abuf.cursor != abuf.len) @@ -579,9 +580,10 @@ parse_fcall_arguments_20(StringInfo msgBuf, struct fp_info * fip, /* Call the argument type's binary input converter */ getTypeBinaryInputInfo(fip->argtypes[i], &typreceive, &typioparam); - fcinfo->arg[i] = OidFunctionCall2(typreceive, + fcinfo->arg[i] = OidFunctionCall3(typreceive, PointerGetDatum(&abuf), - ObjectIdGetDatum(typioparam)); + ObjectIdGetDatum(typioparam), + Int32GetDatum(-1)); /* Trouble if it didn't eat the whole buffer */ if (abuf.cursor != abuf.len) |