SQLITE3CHANGESET_OP(3) | Library Functions Manual | SQLITE3CHANGESET_OP(3)

# NAME

`sqlite3changeset_op` — obtain the current operation from a changeset iterator

# SYNOPSIS

`#include <sqlite3.h>`

int
`sqlite3changeset_op`(sqlite3_changeset_iter *pIter, const char **pzTab, int *pnCol, int *pOp, int *pbIndirect);

# DESCRIPTION

The pIter argument passed to this function may either be an iterator passed to a conflict-handler by `sqlite3changeset_apply`(), or an iterator created by `sqlite3changeset_start`(). In the latter case, the most recent call to `sqlite3changeset_next`() must have returned SQLITE_ROW. If this is not the case, this function returns SQLITE_MISUSE.

Arguments pOp, pnCol and pzTab may not be NULL. Upon return, three outputs are set through these pointers:

*pOp is set to one of SQLITE_INSERT, SQLITE_DELETE or SQLITE_UPDATE, depending on the type of change that the iterator currently points to;

*pnCol is set to the number of columns in the table affected by the change; and

*pzTab is set to point to a nul-terminated utf-8 encoded string containing the name of the table affected by the current change. The buffer remains valid until either sqlite3changeset_next() is called on the iterator or until the conflict-handler function returns.

If pbIndirect is not NULL, then *pbIndirect is set to true (1) if the change is an indirect change, or false (0) otherwise. See the documentation for `sqlite3session_indirect`() for a description of direct and indirect changes.

If no error occurs, SQLITE_OK is returned. If an error does occur, an SQLite error code is returned. The values of the output variables may not be trusted in this case.

# IMPLEMENTATION NOTES

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

    SQLITE_API int sqlite3changeset_op(
      sqlite3_changeset_iter *pIter,  /* Iterator object */
      const char **pzTab,             /* OUT: Pointer to table name */
      int *pnCol,                     /* OUT: Number of columns in table */
      int *pOp,                       /* OUT: SQLITE_INSERT, DELETE or UPDATE */
      int *pbIndirect                 /* OUT: True for an 'indirect' change */
    );

# SEE ALSO

sqlite3changeset_apply(3), sqlite3changeset_next(3), sqlite3changeset_start(3), sqlite3session_indirect(3), SQLITE_CREATE_INDEX(3), SQLITE_OK(3)

January 24, 2024 | NetBSD 11.0