Re: [HACKERS] Lost a function overloading capability in v6.3

Thomas Lockhart <lockhart@alumni.caltech.edu>

From: "Thomas G. Lockhart" <lockhart@alumni.caltech.edu>
To: Jan Wieck <jwieck@debis.com>
Cc: meskes@topsystem.de, pgsql-hackers@postgresql.org
Date: 1998-03-04T13:53:13Z
Lists: pgsql-hackers
> > > > When I run this same thing on v6.3, I get a date sometime in 1974 which
> > > > I think might actually be derived from a pointer interpreted as an
> > > > integer :(
>
>     The  bug  is  that  when  the  language  is  internal but the
>     function isn't in the builtin table, fmgr_info() (in  fmgr.c)
>     doesn't  set  fn_nargs.  So fmgr_c() calls abstime_datetime()
>     without arguments.
>
>     Add
>
>     finfo->fn_nargs = procedureStruct->pronargs;
>
>     in the INTERNALlanguageId arm of the switch in  fmgr.c  (line
>     198).

THANKS JAN! I was just getting started doing a binary search of the source trees
trying to find when the problem was introduced. This saved me a _lot_ of time...

I just tried it and it works! I added the line just below the elog(ERROR) check
in that same block of code.

Now, should this be done conditionally or is it OK to set this all the time? I
looked back at the v6.2.1 code and this field was not explicitly set in this
area, so has the behavior of something else changed? What would you suggest??

                                             - Tom