Din rollbesättning är fel, du kan inte ångra text
.
Försök med
INSERT INTO mytable (x, y)
SELECT
unnest('{x1, x2, x3}' :: TEXT []),
unnest('{y1, y2, y3}' :: TEXT []);
Observera att denna form av urval beter sig konstigt om båda arrayerna inte är lika långa.
Unnest-funktionen i postgres 9.4+ låter dig utöka flera arrayer med en array per utdatakolumn:
INSERT INTO mytable
SELECT *
FROM unnest('{x1, x2, x3}' :: TEXT [], '{y1, y2, y3, y4}' :: TEXT [])