"UPDATE table_name SET w = $1, x = $2, z = $4 WHERE y = $3 RETURNING *",
does not do the same as
"UPDATE table_name SET w = $1, x = $2, y = $3, z = $4 RETURNING *",
It’s 2 am and my mind blanked out the WHERE, and just wanted the numbers neatly in order of 1234.
idiot.
FML.
Depending on the database used, the data might still be there, just really hard to recover (as in, its presence is a side-effect, not the intent).
https://stackoverflow.com/a/12472582 takes a look at Postgres case, for example.