FYI: ``` SQLite version 3.36.0 2021-03-30 02:12:20 Enter ".help" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database. sqlite> create table x(x); sqlite> insert into x values (1) returning old.*; Error: RETURNING may not use "TABLE.*" wildcards sqlite> insert into x values (1) returning old.rowid, new.rowid; ┌───────────┬───────────┐ │ old.rowid │ new.rowid │ ├───────────┼───────────┤ │ 1 │ 1 │ └───────────┴───────────┘ sqlite> insert into x values (1) returning old.rowid, old.x, new.rowid, new.x, *; ┌───────────┬───────┬───────────┬───────┬───┐ │ old.rowid │ old.x │ new.rowid │ new.x │ x │ ├───────────┼───────┼───────────┼───────┼───┤ │ 2 │ 1 │ 2 │ 1 │ 1 │ └───────────┴───────┴───────────┴───────┴───┘ sqlite> update x set x = 5 where rowid = 2 returning old.rowid, old.x, new.rowid, new.x, *; ┌───────────┬───────┬───────────┬───────┬───┐ │ old.rowid │ old.x │ new.rowid │ new.x │ x │ ├───────────┼───────┼───────────┼───────┼───┤ │ 2 │ 1 │ 2 │ 5 │ 5 │ └───────────┴───────┴───────────┴───────┴───┘ sqlite> insert into x (rowid, x) values (1,10) on conflict (rowid) do update set x = excluded.x returning old.rowid, new.rowid, old.x, new.x, *; ┌───────────┬───────────┬───────┬───────┬────┐ │ old.rowid │ new.rowid │ old.x │ new.x │ x │ ├───────────┼───────────┼───────┼───────┼────┤ │ 1 │ 1 │ 10 │ 10 │ 10 │ └───────────┴───────────┴───────┴───────┴────┘ sqlite> select rowid, x from x; ┌───────┬────┐ │ rowid │ x │ ├───────┼────┤ │ 1 │ 10 │ │ 2 │ 5 │ └───────┴────┘ sqlite> update x set x=20 where rowid=1 returning old.x, new.x; ┌───────┬───────┐ │ old.x │ new.x │ ├───────┼───────┤ │ 10 │ 20 │ └───────┴───────┘ sqlite> ``` This corresponds to checkin [3039bcaff9] on trunk.