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
     #include <sqlite3.h>

     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:

       Existing Change New Change Output Change
       INSERT  INSERT   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.
       INSERT  UPDATE   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.
       INSERT  DELETE   The existing INSERT is removed from the changegroup.
     The DELETE is not added.
       UPDATE  INSERT   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.
       UPDATE  UPDATE   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.
       UPDATE  DELETE   The existing UPDATE is replaced by the new DELETE
     within the changegroup.
       DELETE  INSERT   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.
       DELETE  UPDATE   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.
       DELETE  DELETE   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.

     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
     state of the final contents of the changegroup is undefined.

     If no error occurs, SQLITE_OK is returned.

IMPLEMENTATION NOTES
     These declarations were extracted from the interface documentation at
     line 11727.

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

NetBSD 10.99                    August 24, 2023                   NetBSD 10.99