8
8
*
9
9
*
10
10
* IDENTIFICATION
11
- * $Header: /cvsroot/pgsql/src/backend/libpq/Attic/be-pqexec.c,v 1.28 2000/01/11 03:33:12 momjian Exp $
11
+ * $Header: /cvsroot/pgsql/src/backend/libpq/Attic/be-pqexec.c,v 1.29 2000/01/12 05:27:20 tgl Exp $
12
12
*
13
13
*-------------------------------------------------------------------------
14
14
*/
@@ -58,12 +58,16 @@ PQfn(int fnid,
58
58
{
59
59
char * retval ;/* XXX - should be datum, maybe ? */
60
60
char * arg [FUNC_MAX_ARGS ];
61
+ bool isNull ;
61
62
int i ;
62
63
63
64
/* ----------------
64
65
*fill args[] array
65
66
* ----------------
66
67
*/
68
+ if (nargs > FUNC_MAX_ARGS )
69
+ elog (ERROR ,"functions cannot have more than %d arguments" ,
70
+ FUNC_MAX_ARGS );
67
71
for (i = 0 ;i < nargs ;i ++ )
68
72
{
69
73
if (args [i ].len == VAR_LENGTH_ARG )
@@ -78,18 +82,14 @@ PQfn(int fnid,
78
82
*call the postgres function manager
79
83
* ----------------
80
84
*/
81
- retval = (char * )
82
- fmgr (fnid ,arg [0 ],arg [1 ],arg [2 ],arg [3 ],
83
- arg [4 ],arg [5 ],arg [6 ],arg [7 ],
84
- arg [8 ],arg [9 ],arg [10 ],arg [11 ],
85
- arg [12 ],arg [13 ],arg [14 ],arg [15 ]);
85
+ retval = fmgr_array_args (fnid ,nargs ,arg ,& isNull );
86
86
87
87
/* ----------------
88
88
*put the result in the buffer the user specified and
89
89
*return the proper code.
90
90
* ----------------
91
91
*/
92
- if (retval == ( char * ) NULL ) /* void retval */
92
+ if (isNull ) /* void retval */
93
93
return "0" ;
94
94
95
95
if (result_is_int )