Thread: Documentation Chapter 16: 8.21
The following documentation comment has been logged on the website: Page: https://www.postgresql.org/docs/16/datatype-pseudo.html Description: I tryed to implement a safe_cast function with 2 parameters and a return of type "any" but it failed. I get a syntax error, if I use "any" as a data type, because it is a sql function (similar to array contains) and not a data type. And if there is a data type "any" in postgres too, how should it work as parameter and wheres the difference to "anyelement"?
On 2024-04-20 14:22 +0200, PG Doc comments form wrote: > The following documentation comment has been logged on the website: > > Page: https://www.postgresql.org/docs/16/datatype-pseudo.html > Description: > > I tryed to implement a safe_cast function with 2 parameters and a return of > type "any" but it failed. I get a syntax error, if I use "any" as a data > type, because it is a sql function (similar to array contains) and not a > data type. You have to use a double-quoted identifier, i.e. "any" instead of ANY. But it won't work with PL languages: => create function f() returns "any" as 'select 1' language sql; ERROR: SQL functions cannot return type "any" You have to code a C function for that. > And if there is a data type "any" in postgres too, how should it work as > parameter and wheres the difference to "anyelement"? "any" is like "anyelement" just without the polymorphic[1] behavior. So an argument of type "any" does not determine the result type for "anyarray" as "anyelement" would. [1] https://www.postgresql.org/docs/current/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC -- Erik
Erik Wienhold <ewie@ewie.name> writes: > On 2024-04-20 14:22 +0200, PG Doc comments form wrote: >> I tryed to implement a safe_cast function with 2 parameters and a return of >> type "any" but it failed. >> And if there is a data type "any" in postgres too, how should it work as >> parameter and wheres the difference to "anyelement"? > "any" is like "anyelement" just without the polymorphic[1] behavior. > So an argument of type "any" does not determine the result type for > "anyarray" as "anyelement" would. By the same token, there is just about no use-case for a function declared to return "any". The parser will not infer some other data type the way it would do for "anyelement", so you'll end up with an object that you can't do anything with. regards, tom lane