会话模块 C 接口
从变更组中获取复合变更集
int sqlite3changegroup_output( sqlite3_changegroup*, int *pnData, /* OUT: Size of output buffer in bytes */ void **ppData /* OUT: Pointer to output buffer */ );
获取包含代表变更组当前内容的变更集(或补丁集)的缓冲区。如果变更组的输入本身就是变更集,那么输出就是一个变更集。或者,如果输入是补丁集,则输出也是补丁集。
与 sqlite3session_changeset() 和 sqlite3session_patchset() 函数的输出一样,与单个表相关的所有更改都在此函数的输出中组合在一起。表的出现顺序与添加到变更组的第一个变更集的顺序相同。如果添加到变更组的第二个或后续变更集包含未出现在第一个变更集中的表的变更,则它们将附加到输出变更集的末尾,同样按照它们第一次遇到的顺序。
如果发生错误,则返回 SQLite 错误代码并将输出变量 (*pnData) 和 (*ppData) 设置为 0。否则,返回 SQLITE_OK 并将输出变量设置为输出的大小和指向输出的指针缓冲区,分别。在这种情况下,调用者有责任使用对 sqlite3_free() 的调用最终释放缓冲区。