83 lines
3.7 KiB
Groff
83 lines
3.7 KiB
Groff
.Dd March 11, 2017
|
|
.Dt SQLITE3CHANGEGROUP_ADD 3
|
|
.Os
|
|
.Sh NAME
|
|
.Nm sqlite3changegroup_add
|
|
.Nd Add A Changeset To A Changegroup
|
|
.Sh SYNOPSIS
|
|
.Ft int
|
|
.Fo sqlite3changegroup_add
|
|
.Fa "sqlite3_changegroup*"
|
|
.Fa "int nData"
|
|
.Fa "void *pData"
|
|
.Fc
|
|
.Sh DESCRIPTION
|
|
Add all changes within the changeset (or patchset) in buffer pData
|
|
(size nData bytes) to the changegroup.
|
|
.Pp
|
|
If the buffer contains a patchset, then all prior calls to this function
|
|
on the same changegroup object must also have specified patchsets.
|
|
Or, if the buffer contains a changeset, so must have the earlier calls
|
|
to this function.
|
|
Otherwise, SQLITE_ERROR is returned and no changes are added to the
|
|
changegroup.
|
|
.Pp
|
|
Rows within the changeset and changegroup are identified by the values
|
|
in their PRIMARY KEY columns.
|
|
A change in the changeset is considered to apply to the same row as
|
|
a change already present in the changegroup if the two rows have the
|
|
same primary key.
|
|
.Pp
|
|
Changes to rows that do not already appear in the changegroup are simply
|
|
copied into it.
|
|
Or, if both the new changeset and the changegroup contain changes that
|
|
apply to a single row, the final contents of the changegroup depends
|
|
on the type of each change, as follows:
|
|
.Pp
|
|
<table border=1 style="margin-left:8ex;margin-right:8ex"> <tr><th style="white-space:pre">Existing
|
|
Change </th> <th style="white-space:pre">New Change </th> <th>Output
|
|
Change <tr><td>INSERT <td>INSERT <td> The new change is ignored.
|
|
This case does not occur if the new changeset was recorded immediately
|
|
after the changesets already added to the changegroup.
|
|
<tr><td>INSERT <td>UPDATE <td> The INSERT change remains in the changegroup.
|
|
The values in the INSERT change are modified as if the row was inserted
|
|
by the existing change and then updated according to the new change.
|
|
<tr><td>INSERT <td>DELETE <td> The existing INSERT is removed from
|
|
the changegroup.
|
|
The DELETE is not added.
|
|
<tr><td>UPDATE <td>INSERT <td> The new change is ignored.
|
|
This case does not occur if the new changeset was recorded immediately
|
|
after the changesets already added to the changegroup.
|
|
<tr><td>UPDATE <td>UPDATE <td> The existing UPDATE remains within the
|
|
changegroup.
|
|
It is amended so that the accompanying values are as if the row was
|
|
updated once by the existing change and then again by the new change.
|
|
<tr><td>UPDATE <td>DELETE <td> The existing UPDATE is replaced by the
|
|
new DELETE within the changegroup.
|
|
<tr><td>DELETE <td>INSERT <td> If one or more of the column values
|
|
in the row inserted by the new change differ from those in the row
|
|
deleted by the existing change, the existing DELETE is replaced by
|
|
an UPDATE within the changegroup.
|
|
Otherwise, if the inserted row is exactly the same as the deleted row,
|
|
the existing DELETE is simply discarded.
|
|
<tr><td>DELETE <td>UPDATE <td> The new change is ignored.
|
|
This case does not occur if the new changeset was recorded immediately
|
|
after the changesets already added to the changegroup.
|
|
<tr><td>DELETE <td>DELETE <td> The new change is ignored.
|
|
This case does not occur if the new changeset was recorded immediately
|
|
after the changesets already added to the changegroup.
|
|
</table>
|
|
.Pp
|
|
If the new changeset contains changes to a table that is already present
|
|
in the changegroup, then the number of columns and the position of
|
|
the primary key columns for the table must be consistent.
|
|
If this is not the case, this function fails with SQLITE_SCHEMA.
|
|
If the input changeset appears to be corrupt and the corruption is
|
|
detected, SQLITE_CORRUPT is returned.
|
|
Or, if an out-of-memory condition occurs during processing, this function
|
|
returns SQLITE_NOMEM.
|
|
In all cases, if an error occurs the final contents of the changegroup
|
|
is undefined.
|
|
.Pp
|
|
If no error occurs, SQLITE_OK is returned.
|