Update fmgr to allow 32 arguments.

This commit is contained in:
Bruce Momjian 2000-01-10 18:18:30 +00:00
parent 8a093d0ae3
commit 0bdd0cdd98
2 changed files with 248 additions and 3 deletions

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/fmgr/fmgr.c,v 1.34 2000/01/10 17:14:39 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/fmgr/fmgr.c,v 1.35 2000/01/10 18:18:30 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@ -233,6 +233,238 @@ fmgr_c(FmgrInfo *finfo,
values->data[14], values->data[15]);
break;
case 17:
returnValue = (*user_fn) (values->data[0], values->data[1],
values->data[2], values->data[3],
values->data[4], values->data[5],
values->data[6], values->data[7],
values->data[8], values->data[9],
values->data[10], values->data[11],
values->data[12], values->data[13],
values->data[14], values->data[15],
values->data[16]);
break;
case 18:
returnValue = (*user_fn) (values->data[0], values->data[1],
values->data[2], values->data[3],
values->data[4], values->data[5],
values->data[6], values->data[7],
values->data[8], values->data[9],
values->data[10], values->data[11],
values->data[12], values->data[13],
values->data[14], values->data[15],
values->data[16], values->data[17]);
break;
case 19:
returnValue = (*user_fn) (values->data[0], values->data[1],
values->data[2], values->data[3],
values->data[4], values->data[5],
values->data[6], values->data[7],
values->data[8], values->data[9],
values->data[10], values->data[11],
values->data[12], values->data[13],
values->data[14], values->data[15],
values->data[16], values->data[17],
values->data[18]);
break;
case 20:
returnValue = (*user_fn) (values->data[0], values->data[1],
values->data[2], values->data[3],
values->data[4], values->data[5],
values->data[6], values->data[7],
values->data[8], values->data[9],
values->data[10], values->data[11],
values->data[12], values->data[13],
values->data[14], values->data[15],
values->data[16], values->data[17],
values->data[18], values->data[19]);
break;
case 21:
returnValue = (*user_fn) (values->data[0], values->data[1],
values->data[2], values->data[3],
values->data[4], values->data[5],
values->data[6], values->data[7],
values->data[8], values->data[9],
values->data[10], values->data[11],
values->data[12], values->data[13],
values->data[14], values->data[15],
values->data[16], values->data[17],
values->data[18], values->data[19],
values->data[20]);
break;
case 22:
returnValue = (*user_fn) (values->data[0], values->data[1],
values->data[2], values->data[3],
values->data[4], values->data[5],
values->data[6], values->data[7],
values->data[8], values->data[9],
values->data[10], values->data[11],
values->data[12], values->data[13],
values->data[14], values->data[15],
values->data[16], values->data[17],
values->data[18], values->data[19],
values->data[20], values->data[21]);
break;
case 23:
returnValue = (*user_fn) (values->data[0], values->data[1],
values->data[2], values->data[3],
values->data[4], values->data[5],
values->data[6], values->data[7],
values->data[8], values->data[9],
values->data[10], values->data[11],
values->data[12], values->data[13],
values->data[14], values->data[15],
values->data[16], values->data[17],
values->data[18], values->data[19],
values->data[20], values->data[21],
values->data[22]);
break;
case 24:
returnValue = (*user_fn) (values->data[0], values->data[1],
values->data[2], values->data[3],
values->data[4], values->data[5],
values->data[6], values->data[7],
values->data[8], values->data[9],
values->data[10], values->data[11],
values->data[12], values->data[13],
values->data[14], values->data[15],
values->data[16], values->data[17],
values->data[18], values->data[19],
values->data[20], values->data[21],
values->data[22], values->data[23]);
break;
case 25:
returnValue = (*user_fn) (values->data[0], values->data[1],
values->data[2], values->data[3],
values->data[4], values->data[5],
values->data[6], values->data[7],
values->data[8], values->data[9],
values->data[10], values->data[11],
values->data[12], values->data[13],
values->data[14], values->data[15],
values->data[16], values->data[17],
values->data[18], values->data[19],
values->data[20], values->data[21],
values->data[22], values->data[23],
values->data[24]);
break;
case 26:
returnValue = (*user_fn) (values->data[0], values->data[1],
values->data[2], values->data[3],
values->data[4], values->data[5],
values->data[6], values->data[7],
values->data[8], values->data[9],
values->data[10], values->data[11],
values->data[12], values->data[13],
values->data[14], values->data[15],
values->data[16], values->data[17],
values->data[18], values->data[19],
values->data[20], values->data[21],
values->data[22], values->data[23],
values->data[24], values->data[25]);
break;
case 27:
returnValue = (*user_fn) (values->data[0], values->data[1],
values->data[2], values->data[3],
values->data[4], values->data[5],
values->data[6], values->data[7],
values->data[8], values->data[9],
values->data[10], values->data[11],
values->data[12], values->data[13],
values->data[14], values->data[15],
values->data[16], values->data[17],
values->data[18], values->data[19],
values->data[20], values->data[21],
values->data[22], values->data[23],
values->data[24], values->data[25],
values->data[26]);
break;
case 28:
returnValue = (*user_fn) (values->data[0], values->data[1],
values->data[2], values->data[3],
values->data[4], values->data[5],
values->data[6], values->data[7],
values->data[8], values->data[9],
values->data[10], values->data[11],
values->data[12], values->data[13],
values->data[14], values->data[15],
values->data[16], values->data[17],
values->data[18], values->data[19],
values->data[20], values->data[21],
values->data[22], values->data[23],
values->data[24], values->data[25],
values->data[26], values->data[27]);
break;
case 29:
returnValue = (*user_fn) (values->data[0], values->data[1],
values->data[2], values->data[3],
values->data[4], values->data[5],
values->data[6], values->data[7],
values->data[8], values->data[9],
values->data[10], values->data[11],
values->data[12], values->data[13],
values->data[14], values->data[15],
values->data[16], values->data[17],
values->data[18], values->data[19],
values->data[20], values->data[21],
values->data[22], values->data[23],
values->data[24], values->data[25],
values->data[26], values->data[27],
values->data[28]);
break;
case 30:
returnValue = (*user_fn) (values->data[0], values->data[1],
values->data[2], values->data[3],
values->data[4], values->data[5],
values->data[6], values->data[7],
values->data[8], values->data[9],
values->data[10], values->data[11],
values->data[12], values->data[13],
values->data[14], values->data[15],
values->data[16], values->data[17],
values->data[18], values->data[19],
values->data[20], values->data[21],
values->data[22], values->data[23],
values->data[24], values->data[25],
values->data[26], values->data[27],
values->data[28], values->data[29]);
break;
case 31:
returnValue = (*user_fn) (values->data[0], values->data[1],
values->data[2], values->data[3],
values->data[4], values->data[5],
values->data[6], values->data[7],
values->data[8], values->data[9],
values->data[10], values->data[11],
values->data[12], values->data[13],
values->data[14], values->data[15],
values->data[16], values->data[17],
values->data[18], values->data[19],
values->data[20], values->data[21],
values->data[22], values->data[23],
values->data[24], values->data[25],
values->data[26], values->data[27],
values->data[28], values->data[29],
values->data[30]);
break;
case 32:
returnValue = (*user_fn) (values->data[0], values->data[1],
values->data[2], values->data[3],
values->data[4], values->data[5],
values->data[6], values->data[7],
values->data[8], values->data[9],
values->data[10], values->data[11],
values->data[12], values->data[13],
values->data[14], values->data[15],
values->data[16], values->data[17],
values->data[18], values->data[19],
values->data[20], values->data[21],
values->data[22], values->data[23],
values->data[24], values->data[25],
values->data[26], values->data[27],
values->data[28], values->data[29],
values->data[30], values->data[31]);
break;
default:
/*
* XXX Note that functions with >FUNC_MAX_ARGS arguments can only be
@ -247,7 +479,15 @@ fmgr_c(FmgrInfo *finfo,
values->data[8], values->data[9],
values->data[10], values->data[11],
values->data[12], values->data[13],
values->data[14], values->data[15]);
values->data[14], values->data[15],
values->data[16], values->data[17],
values->data[18], values->data[19],
values->data[20], values->data[21],
values->data[22], values->data[23],
values->data[24], values->data[25],
values->data[26], values->data[27],
values->data[28], values->data[29],
values->data[30], values->data[31]);
break;
default:
elog(ERROR, "fmgr_c: function %u: too many arguments (%d > %d)",

View File

@ -93,8 +93,13 @@
#define INDEXSCAN_PATCH
/*
* Maximum number of columns in an index and maximum number of args
* Maximum number of columns in an index and maximum number of arguments
* to a function. They must be the same value.
*
* There is no maximum value, though if you want to pass more than 32
* arguments to a function, you will have to modify
* pgsql/src/backend/utils/fmgr/fmgr.c and add additional entries
* to the 'case' statement for the additional arguments.
*/
#define INDEX_MAX_KEYS 8
#define FUNC_MAX_ARGS INDEX_MAX_KEYS