Je cast is verkeerd, je kunt text
niet uit elkaar halen .
Probeer
INSERT INTO mytable (x, y)
SELECT
unnest('{x1, x2, x3}' :: TEXT []),
unnest('{y1, y2, y3}' :: TEXT []);
Merk op dat deze vorm van select zich vreemd gedraagt als beide arrays niet dezelfde lengte hebben.
Met de unnest-functie in postgres 9.4+ kunt u meerdere arrays uitbreiden met één array per uitvoerkolom:
INSERT INTO mytable
SELECT *
FROM unnest('{x1, x2, x3}' :: TEXT [], '{y1, y2, y3, y4}' :: TEXT [])