hi. I played around with the 2023-Apr 4 latest patch. + <literal>lower(ARRAY[numrange(1.1,2.2),numrange(3.3,4.4)])</literal> should be + <literal>ranges_lower(ARRAY[numrange(1.1,2.2),numrange(3.3,4.4)])</literal>
+ <literal>upper(ARRAY[numrange(1.1,2.2),numrange(3.3,4.4)])</literal> should be + <literal>ranges_upper(ARRAY[numrange(1.1,2.2),numrange(3.3,4.4)])</literal> https://www.postgresql.org/docs/current/catalog-pg-type.html there is no association between numrange and their base type numeric. so for template: anyarray ranges_lower(anyarray). I don't think we can input numrange array and return a numeric array. https://www.postgresql.org/docs/current/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC >> When the return value of a function is declared as a polymorphic type, there >> must be at least one argument position that is also >> polymorphic, and the >> actual data type(s) supplied for the polymorphic arguments determine the >> actual result type for that call. regression=# select ranges_lower(ARRAY[numrange(1.1,2.2),numrange(3.3,4.4), numrange(5.5,6.6)]); ranges_lower --------------- {1.1,3.3,5.5} (1 row) regression=# \gdesc Column | Type --------------+------------ ranges_lower | numrange[] (1 row) I don't think you can cast literal ' {1.1,3.3,5.5}' to numrange[].