While I can
SELECT elem, elem FROM ( VALUES ('1,2'::TEXT) ) AS q(arr), LATERAL CAST(String_To_Array(q.arr, ',') AS INT) AS elem ;
using an explicit call to
CAST, I can't
SELECT elem, elem FROM ( VALUES ('1,2'::TEXT) ) AS q(arr), LATERAL String_To_Array(q.arr, ',')::INT AS elem ;
using the implicitly calling
ERROR: syntax error at or near "::"
One other location at which an explicit
CAST is required:
CREATE INDEX ON ... ( CAST(<straw> AS <gold>) );
I doubt there is a syntactical reason, e.g. using extra enclosing parenthesis - which is incorrect here.
Is the explicit function call simply needed at this point as part of the low level implementation? Or does it follow any language rules?