Thread: Procedures cannot take more than 16 arguments

Procedures cannot take more than 16 arguments

From
"Andrey"
Date:
Good day.
Does anyone know the way of sending more than 16 parameters to function?
 
Best regards.
Andrey

Re: Procedures cannot take more than 16 arguments

From
Bruce Momjian
Date:
[ Charset KOI8-R unsupported, converting... ]
> Good day.
> Does anyone know the way of sending more than 16 parameters to function?

In 7.0, I could have sworn I had an #ifdef to go up to 32, but I don't
see it anymore.

--  Bruce Momjian                        |  http://www.op.net/~candle pgman@candle.pha.pa.us               |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


Re: Procedures cannot take more than 16 arguments

From
Tom Lane
Date:
>> Does anyone know the way of sending more than 16 parameters to function?

Change the relevant parameters in config.h (there are two), rebuild,
reinstall, initdb.

Bruce Momjian <pgman@candle.pha.pa.us> writes:
> In 7.0, I could have sworn I had an #ifdef to go up to 32, but I don't
> see it anymore.

If you're talking about that switch statement in fmgr.c, I don't think
it needs to support more than 16 in the new fmgr --- there certainly is
no reason to tie it directly to FUNC_MAX_ARGS.  The switch only applies
to calling old-style builtin or dynamically-loaded old-style C functions.
There aren't any old-style builtin functions left with more than 3 args,
and if there's someone out there with a C function that takes more
than 16 he'd be well advised to convert it to newstyle anyway.
(He could only have written such a function since 7.0 release ...
the historical limit was just 8, so I think the oldstyle cases beyond 8
are likely to be dead code anyhow ... not much point in cluttering the
backend with more cases.)

I think I need to change the config.h comment that goes with
MAX_FUNC_ARGS.
        regards, tom lane