Search Postgresql Archives

valid casts to anyarray

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi list

I've been down a rabbit hole today trying to understand what exactly makes a type a valid candidate for an ANYARRAY function argument (e.g., something you can 'unnest()').

My reading has led me across such functions as 'get_promoted_array_type',  'IsTrueArrayType', 'can_coerce_type', and 'check_generic_type_consistency', and this has led me to believe that any type which has a valid (i.e., non-zero?) pg_type.typelem defined should be applicable.

However, I cannot seem to be able to call 'unnest' on a 'point':

postgres=# select unnest(point(1,2));
ERROR:  function unnest(point) does not exist

... even though according to 'pg_catalog.pg_type' the type 'point' does indeed look very array-like (it should be equivalent to an float8 array). The only difference I can spot is that it has 'typsubscript=raw_array_subscript_handler', as opposed to typsubscript=array_subscript_handler' which is what 'IsTrueArrayType' checks for.

Can anyone here perhaps enlighten me as to how I can tell if a type is a valid ANYARRAY (and bonus points to point out the check I must have missed in the (parser?) source code)?

-Philip

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux