Zapytałem o listę mailingową Postgres i byli pomocni w wyjaśnieniu. Okazuje się, że jest to odpowiedź specyficzna dla bazy danych, więc jeśli to czytasz i używasz innej bazy danych, odpowiedź może nie być taka sama.
Postgres, jawnie od wersji 9.6, logicznie wstawia w kolejności zwracanego zestawu wyników.
Zachowanie jest wyraźnie skodyfikowane w tym zatwierdzeniu:https://github.com/postgres/postgres/ zatwierdź/9118d03a8cca3d97327c56bf89a72e328e454e63
Z opisu zatwierdzenia:
tl; dr; Kolejność wstawiania jest szczegółem implementacji, ale celowo zakodowana w Postgresie 9.6 i nowszych, aby dopasować się do własnej intuicji. Przed wersją 9.6 nie było żadnych gwarancji.