quirk of array type processing

Started by Bruce Momjianover 22 years ago3 messageshackers
Jump to latest
#1Bruce Momjian
bruce@momjian.us

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

#2Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#1)
Re: quirk of array type processing

On second thought, it does cause a problem:

db=> create table aa (aa integer[]);
CREATE TABLE

db=> select distinct(array_length(aa)) from aa;
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.
CONTEXT: SQL function "array_length" during inlining

--
greg

#3Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#2)
Re: quirk of array type processing

On third though ignore this whole thread. I can't read.
sigh.

--
greg