![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Создайте iterator, используемый, чтобы пройти
через содержание changeset. Если успешно, *pp указывает
на обработчик iterator, и SQLITE_OK возвращен. Иначе, если ошибка происходит,
*pp = 0 и код ошибки SQLite возвращен. Следующие функции могут использоваться, чтобы продвинуть и запросить
changeset iterator, созданный этой функцией: Обязанность вызывающего в конечном счете разрушить iterator, передавая его
sqlite3changeset_finalize().
Буфер, содержащий changeset (pChangeset),
должен остаться действительным, пока iterator не будет разрушен. Предположим, что changeset blob создан одной из функций
sqlite3session_changeset(),
sqlite3changeset_concat() или
sqlite3changeset_invert(), все
изменения в changeset, которые относятся к единственной таблице,
группируются. Это означает, что, когда применение повторяет через changeset
с использованием iterator, созданного этой функцией, все изменения, которые
касаются единственной таблицы, посещают последовательно.
Нет никакого шанса, что iterator посетит изменение для таблицы X, затем для
Y и снова для X. Поведение sqlite3changeset_start_v2() может быть изменено, передав
комбинацию
поддержанных флагов как 4-й параметр. Обратите внимание на то, что sqlite3changeset_start_v2() API
все еще экспериментален и поэтому подлежит изменению.
Choose any three.
Session Module C Interface
Создайте Iterator, чтобы пересечь Changeset
int sqlite3changeset_start(
sqlite3_changeset_iter **pp, /* OUT: New changeset iterator handle */
int nChangeset, /* Size of changeset blob in bytes */
void *pChangeset /* Pointer to blob containing changeset */
);
int sqlite3changeset_start_v2(
sqlite3_changeset_iter **pp, /* OUT: New changeset iterator handle */
int nChangeset, /* Size of changeset blob in bytes */
void *pChangeset, /* Pointer to blob containing changeset */
int flags /* SESSION_CHANGESETSTART_* flags */
);