David Fetter and I were just looking at something on IRC...

decibel=# select most_common_vals[1] from pg_stats where tablename='pg_depend' 
and attname='classid';
ERROR:  cannot subscript type anyarray because it is not an array
decibel=# select most_common_freqs[1] from pg_stats where tablename='pg_depend' 
and attname='classid';
 most_common_freqs 
-------------------
             0.566
(1 row)

ISTM you'd want to be able to reference an individual element of an
ANYARRAY... but this gets even more odd...

decibel=# CREATE OR REPLACE FUNCTION array_to_set(anyarray) RETURNS SETOF 
anyelement LANGUAGE SQL AS $$
    SELECT $1[i] from generate_series(array_lower($1, 1), array_upper($1, 1)) i
$$;
CREATE FUNCTION
decibel=# select array_to_set(most_common_vals) from pg_stats where 
tablename='pg_depend' and attname='classid';
ERROR:  argument declared "anyarray" is not an array but type anyarray

I expected that not to work, but the error is somewhat interesting...

I didn't expect the following to work:

decibel=# select array_to_set(most_common_freqs) from pg_stats where 
tablename='pg_depend' and attname='classid';
 array_to_set 
--------------
        0.566
     0.235667
     0.126333
    0.0343333
         0.02
    0.0163333
  0.000666667
  0.000666667
(8 rows)

decibel=# 

ISTM you should be able to call an anyarray function with an anyarray,
and that you should be able to reference individual elements of an
anyarray...
-- 
Decibel!, aka Jim Nasby                        [EMAIL PROTECTED]
EnterpriseDB      http://enterprisedb.com      512.569.9461 (cell)

Attachment: pgpm6S6a0F82i.pgp
Description: PGP signature

Reply via email to