After all the INSERT upfront work, UPSERT should be relatively straightforward.
- Modify Query object to have an UPSERT statement, and implement UpsertClause.
- Modify QueryProfile to choose columns to be upserted
- Modify QueryGenerator to generate UPSERT statements
- Modify SqlWriter to write UPSERT SQL in Impala
- Modify SqlWriter to write UPSERT SQL in PostgresQL. Note this is really “INSERT ... ON CONFLICT DO UPDATE”.
- Hook in the same DB comparison after UPSERT that is used for INSERT