| From: | Chris Bitmead <chrisb(at)nimrod(dot)itg(dot)telstra(dot)com(dot)au> |
|---|---|
| To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
| Cc: | pgsql-hackers(at)postgreSQL(dot)org |
| Subject: | Re: Last call for comments: fmgr rewrite [LONG] |
| Date: | 2000-05-21 23:54:46 |
| Message-ID: | 39287745.193A5521@nimrod.itg.telecom.com.au |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Tom Lane wrote:
> typedef struct
> {
> FmgrInfo *flinfo; /* ptr to lookup info used for this call */
> Node *context; /* pass info about context of call */
> Node *resultinfo; /* pass or return extra info about result */
> bool isnull; /* function must set true if result is NULL */
> short nargs; /* # arguments actually passed */
> Datum arg[FUNC_MAX_ARGS]; /* Arguments passed to function */
> bool argnull[FUNC_MAX_ARGS]; /* T if arg[i] is actually NULL */
> } FunctionCallInfoData;
Just wondering what the implications of FUNC_MAX_ARGS is, and whether
something like...
struct FuncArg
{
Datum arg;
bool argnull;
};
typedef struct
{
FmgrInfo *flinfo; /* ptr to lookup info used for this call
*/
Node *context; /* pass info about context of call */
Node *resultinfo; /* pass or return extra info about
result */
bool isnull; /* function must set true if result is
NULL */
short nargs; /* # arguments actually passed */
struct FuncArg args[];
} FunctionCallInfoData;
might remove an arbitrary argument limit?
> int32
> int4pl(int32 arg1, int32 arg2)
> {
> return arg1 + arg2;
> }
> to new-style
> Datum
> int4pl(FunctionCallInfo fcinfo)
> {
> /* we assume the function is marked "strict", so we can ignore
> * NULL-value handling */
>
> return Int32GetDatum(DatumGetInt32(fcinfo->arg[0]) +
> DatumGetInt32(fcinfo->arg[1]));
> }
Wondering if some stub code generator might be appropriate so that
functions can can continue to look as readable as before?
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Bruce Momjian | 2000-05-22 00:03:57 | Re: Last call for comments: fmgr rewrite [LONG] |
| Previous Message | Chris Bitmead | 2000-05-21 23:27:32 | Re: OO Patch |