here is patch, that enables using a variadic parameter modifier for variadic "any" function.
Motivation for this patch is consistent behave of "format" function, but it fixes behave of all this class variadic functions.
postgres=> -- check pass variadic argument postgres=> select format('%s, %s', variadic array['Hello','World']); format ────────────── Hello, World (1 row)
postgres=> -- multidimensional array is supported postgres=> select format('%s, %s', variadic array[['Nazdar','Svete'],['Hello','World']]); format ─────────────────────────────── {Nazdar,Svete}, {Hello,World} (1 row)
It respect Tom's comments - it is based on short-lived FmgrInfo structures, that are created immediately before function invocation.
Note: there is unsolved issue - reusing transformed arguments - so it is little bit suboptimal for VARIADIC RETURNING MultiFuncCall functions, where we don't need to repeat a unpacking of array value.
Regards Pavel
Hi Pavel.
I am trying to review this patch and on my work computer everything compiles and tests perfectly. However, on my laptop, the regression tests don't pass with "cache lookup failed for type XYZ" where XYZ is some number that does not appear to be any type oid.
I don't really know where to go from here. I am asking that other people try this patch to see if they get errors as well.
Vik
PS: I won't be able to answer this thread until Tuesday.