Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.


SQLITE3CHANGEGROUP_ADD(3)  Library Functions Manual  SQLITE3CHANGEGROUP_ADD(3)

NAME
     sqlite3changegroup_add - Add A Changeset To A Changegroup

SYNOPSIS
     int
     sqlite3changegroup_add(sqlite3_changegroup*, int nData, void *pData);

DESCRIPTION
     Add all changes within the changeset (or patchset) in buffer pData (size
     nData bytes) to the changegroup.

     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.

     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.

     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:

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

     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.

     If no error occurs, SQLITE_OK is returned.

NetBSD 9.99                    December 19, 2018                   NetBSD 9.99