SQLITE3SESSION_PATCHSET(3)

SQLITE3SESSION_PATCHSET(3) | Library Functions Manual | SQLITE3SESSION_PATCHSET(3)

# NAME

`sqlite3session_patchset` — generate a patchset from a session object

# SYNOPSIS

`#include <sqlite3.h>`

int
`sqlite3session_patchset`(sqlite3_session *pSession, int *pnPatchset, void **ppPatchset);

# DESCRIPTION

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 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).

# IMPLEMENTATION NOTES

These declarations were extracted from the interface documentation at line 11375.

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

January 24, 2024 | NetBSD 11.0