Generate A Patchset From A Session Object (original) (raw)

SQLite

Small. Fast. Reliable.
Choose any three.

Session Module C Interface

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

The differences between a patchset and a changeset are that:

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 omitted, no SQLITE_CHANGESET_DATA conflicts can be detected or reported if a patchset is passed to the sqlite3changeset_apply() API. Other conflict types work in the same way as for changesets.

Changes within a patchset are ordered in the same way as for changesets generated by the sqlite3session_changeset() function (i.e. all changes for a single table are grouped together, tables appear in the order in which they were attached to the session object).

See also lists ofObjects,Constants, andFunctions.