Embora a documentação não seja totalmente clara, ela afirma que:
Se o comando INSERT contiver uma cláusula RETURNING, o resultado será semelhante ao de uma instrução SELECT contendo as colunas e valores definidos na lista RETURNING, calculados sobre a(s) linha(s) inserida(s) pelo comando.
Agora "semelhante a" não é uma garantia absoluta, e eu levantei isso para discussão na lista de discussão ... mas na prática, o PostgreSQL não vai mexer com a ordem dos valores em
RETURNING
. É improvável que consigamos, mesmo que queiramos, para otimização, porque muitos aplicativos dependem de ser ordenados da mesma forma que a entrada. Então... para
INSERT INTO ... VALUES (...), (...), ... RETURNING ...
e para INSERT INTO ... SELECT ... ORDER BY ... RETURNING ...
deve ser seguro assumir que a relação de resultado está na mesma ordem que a entrada.