Using Ecto upsert’s (with Postgres) can you use on_conflict: :replace_all but still keep the same primary key (when the primary key isn’t in the :conflict_target)?
Additionally, :replace_all appears to be ignoring values that are NULL in the newly inserted row, and instead keeping the old value from the previous row. Perhaps because it isn’t listed as a change?