Generate A Patchset From A Session Object

Generate A Patchset From A Session Object

int sqlite3session_patchset(
  sqlite3_session *pSession,      /* Session object */
  int *pnPatchset,                /* OUT: Size of buffer at *ppChangeset */
  void **ppPatchset               /* OUT: Buffer containing changeset */
);

The differences between a patchset and a changeset are that:

  • DELETE records consist of the primary key fields only. The original values of other fields are omitted.
  • The original values of any modified fields are omitted from UPDATE records.

A patchset blob may be used with up to date versions of all sqlite3changeset_xxx API functions except for sqlite3changeset_invert(), which returns SQLITE_CORRUPT if it is passed a patchset. Similarly, attempting to use a patchset blob with old versions of the sqlite3changeset_xxx APIs also provokes an SQLITE_CORRUPT error.

Because the non-primary key "old.*" fields are o