40 lines
1.4 KiB
Groff
40 lines
1.4 KiB
Groff
.Dd March 11, 2017
|
|
.Dt SQLITE3SESSION_PATCHSET 3
|
|
.Os
|
|
.Sh NAME
|
|
.Nm sqlite3session_patchset
|
|
.Nd Generate A Patchset From A Session Object
|
|
.Sh SYNOPSIS
|
|
.Ft int
|
|
.Fo sqlite3session_patchset
|
|
.Fa "sqlite3_session *pSession"
|
|
.Fa "int *pnPatchset"
|
|
.Fa "void **ppPatchset "
|
|
.Fc
|
|
.Sh DESCRIPTION
|
|
The differences between a patchset and a changeset are that:
|
|
.Bl -bullet
|
|
.It
|
|
DELETE records consist of the primary key fields only.
|
|
The original values of other fields are omitted.
|
|
.It
|
|
The original values of any modified fields are omitted from UPDATE
|
|
records.
|
|
.El
|
|
.Pp
|
|
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.
|
|
.Pp
|
|
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.
|
|
.Pp
|
|
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).
|