I'm not sure if this should be considered a bug or not. At least in my case it doesn't cause a problem. I think it could always be worked around with explicit casts in any case, it just seems... wrong:
db=> create or replace function array_length(integer[]) returns integer as 'SELECT array_upper($1)-array_lower($1)+1' language sql strict immutable; ERROR: function array_upper(integer[]) does not exist HINT: No function matches the given name and argument types. You may need to add explicit typecasts. db=> create or replace function array_length(anyarray) returns integer as 'SELECT array_upper($1)-array_lower($1)+1' language sql strict immutable; CREATE FUNCTION -- greg ---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://archives.postgresql.org