mirror of
https://github.com/postgres/postgres.git
synced 2025-11-13 16:22:44 +03:00
Make number of args to a function configurable.
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_aggregate.c,v 1.26 1999/11/22 17:55:58 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_aggregate.c,v 1.27 2000/01/10 17:14:31 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -71,11 +71,11 @@ AggregateCreate(char *aggName,
|
||||
Oid xret1 = InvalidOid;
|
||||
Oid xret2 = InvalidOid;
|
||||
Oid fret = InvalidOid;
|
||||
Oid fnArgs[8];
|
||||
Oid fnArgs[FUNC_MAX_ARGS];
|
||||
NameData aname;
|
||||
TupleDesc tupDesc;
|
||||
|
||||
MemSet(fnArgs, 0, 8 * sizeof(Oid));
|
||||
MemSet(fnArgs, 0, FUNC_MAX_ARGS * sizeof(Oid));
|
||||
|
||||
/* sanity checks */
|
||||
if (!aggName)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_operator.c,v 1.46 2000/01/05 18:23:45 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_operator.c,v 1.47 2000/01/10 17:14:31 momjian Exp $
|
||||
*
|
||||
* NOTES
|
||||
* these routines moved here from commands/define.c and somewhat cleaned up.
|
||||
@@ -482,7 +482,7 @@ OperatorDef(char *operatorName,
|
||||
bool rightDefined = false;
|
||||
bool selfCommutator = false;
|
||||
char *name[4];
|
||||
Oid typeId[8];
|
||||
Oid typeId[FUNC_MAX_ARGS];
|
||||
int nargs;
|
||||
NameData oname;
|
||||
TupleDesc tupDesc;
|
||||
@@ -556,7 +556,7 @@ OperatorDef(char *operatorName,
|
||||
* have to worry about deleting them later.
|
||||
* ----------------
|
||||
*/
|
||||
MemSet(typeId, 0, 8 * sizeof(Oid));
|
||||
MemSet(typeId, 0, FUNC_MAX_ARGS * sizeof(Oid));
|
||||
if (!leftTypeName)
|
||||
{
|
||||
typeId[0] = rightTypeId;
|
||||
@@ -592,7 +592,7 @@ OperatorDef(char *operatorName,
|
||||
*/
|
||||
if (restrictionName)
|
||||
{ /* optional */
|
||||
MemSet(typeId, 0, 8 * sizeof(Oid));
|
||||
MemSet(typeId, 0, FUNC_MAX_ARGS * sizeof(Oid));
|
||||
typeId[0] = OIDOID; /* operator OID */
|
||||
typeId[1] = OIDOID; /* relation OID */
|
||||
typeId[2] = INT2OID; /* attribute number */
|
||||
@@ -617,7 +617,7 @@ OperatorDef(char *operatorName,
|
||||
*/
|
||||
if (joinName)
|
||||
{ /* optional */
|
||||
MemSet(typeId, 0, 8 * sizeof(Oid));
|
||||
MemSet(typeId, 0, FUNC_MAX_ARGS * sizeof(Oid));
|
||||
typeId[0] = OIDOID; /* operator OID */
|
||||
typeId[1] = OIDOID; /* relation OID 1 */
|
||||
typeId[2] = INT2OID; /* attribute number 1 */
|
||||
@@ -923,11 +923,11 @@ OperatorUpd(Oid baseId, Oid commId, Oid negId)
|
||||
setheapoverride(true);
|
||||
heap_update(pg_operator_desc, &tup->t_self, tup, NULL);
|
||||
setheapoverride(false);
|
||||
|
||||
|
||||
if (RelationGetForm(pg_operator_desc)->relhasindex)
|
||||
{
|
||||
Relation idescs[Num_pg_operator_indices];
|
||||
|
||||
|
||||
CatalogOpenIndices(Num_pg_operator_indices, Name_pg_operator_indices, idescs);
|
||||
CatalogIndexInsert(idescs, Num_pg_operator_indices, pg_operator_desc, tup);
|
||||
CatalogCloseIndices(Num_pg_operator_indices, idescs);
|
||||
@@ -961,7 +961,7 @@ OperatorUpd(Oid baseId, Oid commId, Oid negId)
|
||||
if (RelationGetForm(pg_operator_desc)->relhasindex)
|
||||
{
|
||||
Relation idescs[Num_pg_operator_indices];
|
||||
|
||||
|
||||
CatalogOpenIndices(Num_pg_operator_indices, Name_pg_operator_indices, idescs);
|
||||
CatalogIndexInsert(idescs, Num_pg_operator_indices, pg_operator_desc, tup);
|
||||
CatalogCloseIndices(Num_pg_operator_indices, idescs);
|
||||
@@ -1001,7 +1001,7 @@ OperatorUpd(Oid baseId, Oid commId, Oid negId)
|
||||
if (RelationGetForm(pg_operator_desc)->relhasindex)
|
||||
{
|
||||
Relation idescs[Num_pg_operator_indices];
|
||||
|
||||
|
||||
CatalogOpenIndices(Num_pg_operator_indices, Name_pg_operator_indices, idescs);
|
||||
CatalogIndexInsert(idescs, Num_pg_operator_indices, pg_operator_desc, tup);
|
||||
CatalogCloseIndices(Num_pg_operator_indices, idescs);
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.36 1999/11/22 17:55:58 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.37 2000/01/10 17:14:31 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -61,7 +61,7 @@ ProcedureCreate(char *procedureName,
|
||||
List *x;
|
||||
List *querytree_list;
|
||||
List *plan_list;
|
||||
Oid typev[8];
|
||||
Oid typev[FUNC_MAX_ARGS];
|
||||
Oid relid;
|
||||
Oid toid;
|
||||
NameData procname;
|
||||
@@ -75,13 +75,13 @@ ProcedureCreate(char *procedureName,
|
||||
Assert(PointerIsValid(probin));
|
||||
|
||||
parameterCount = 0;
|
||||
MemSet(typev, 0, 8 * sizeof(Oid));
|
||||
MemSet(typev, 0, FUNC_MAX_ARGS * sizeof(Oid));
|
||||
foreach(x, argList)
|
||||
{
|
||||
Value *t = lfirst(x);
|
||||
|
||||
if (parameterCount == 8)
|
||||
elog(ERROR, "Procedures cannot take more than 8 arguments");
|
||||
if (parameterCount == FUNC_MAX_ARGS)
|
||||
elog(ERROR, "Procedures cannot take more than %d arguments",FUNC_MAX_ARGS);
|
||||
|
||||
if (strcmp(strVal(t), "opaque") == 0)
|
||||
{
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.44 1999/12/16 22:19:39 wieck Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.45 2000/01/10 17:14:31 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -305,7 +305,7 @@ TypeCreate(char *typeName,
|
||||
bool defined;
|
||||
NameData name;
|
||||
TupleDesc tupDesc;
|
||||
Oid argList[8];
|
||||
Oid argList[FUNC_MAX_ARGS];
|
||||
|
||||
static ScanKeyData typeKey[1] = {
|
||||
{0, Anum_pg_type_typname, F_NAMEEQ}
|
||||
@@ -393,7 +393,7 @@ TypeCreate(char *typeName,
|
||||
* First look for a 1-argument func with all argtypes 0. This is
|
||||
* valid for all four kinds of procedure.
|
||||
*/
|
||||
MemSet(argList, 0, 8 * sizeof(Oid));
|
||||
MemSet(argList, 0, FUNC_MAX_ARGS * sizeof(Oid));
|
||||
|
||||
tup = SearchSysCacheTuple(PROCNAME,
|
||||
PointerGetDatum(procname),
|
||||
|
||||
Reference in New Issue
Block a user