Re: [HACKERS] Lost a function overloading capability in v6.3
От | jwieck@debis.com (Jan Wieck) |
---|---|
Тема | Re: [HACKERS] Lost a function overloading capability in v6.3 |
Дата | |
Msg-id | m0yAFoK-000BFRC@orion.SAPserv.Hamburg.dsh.de обсуждение исходный текст |
Ответ на | Re: [HACKERS] Lost a function overloading capability in v6.3 ("Thomas G. Lockhart" <lockhart@alumni.caltech.edu>) |
Список | pgsql-hackers |
Tom wrote: > > > > > > 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?? I think it's O.K. to set it all the time. As far as I can see, the declarations for the builtin functions have the correct nargs settings (varcharin 3 args). And this is what they have in the pg_proc's pronargs attribute. Adding the above line only touches overloading builtin functions. Since the call of such an overload goes through fmgr_c(), it MUST be done (fmgr_c must know how many arguments to pass). Jan -- #======================================================================# # It's easier to get forgiveness for being wrong than for being right. # # Let's break this rule - forgive me. # #======================================== jwieck@debis.com (Jan Wieck) #
В списке pgsql-hackers по дате отправления: