RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Small. Fast. Reliable.
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 */
);

Создайте 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 все еще экспериментален и поэтому подлежит изменению.