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

Инвертируйте Changeset

int sqlite3changeset_invert(
  int nIn, const void *pIn,       /* Input changeset */
  int *pnOut, void **ppOut        /* OUT: Inverse of input */
);

Эта функция используется, чтобы "инвертировать" объект changeset. Применение перевернутого changeset к базе данных полностью изменяет эффекты применения неперевернутого changeset. Определенно:

  • Каждое изменение DELETE изменяется на INSERT
  • Каждое изменение INSERT изменяется на DELETE
  • Для каждого изменения UPDATE значения old.* и new.* обменены.

Эта функция не изменяет порядок, в котором изменения появляются в changeset. Это просто полностью изменяет смысл каждого отдельного изменения.

Если успешно, указатель на буфер, содержащий перевернутый changeset, сохранен в *ppOut, размер того буфера сохранен в *pnOut, и SQLITE_OK возвращен. Если ошибка происходит, *pnOut и *ppOut обнулены и возвращен код ошибки SQLite.

Обязанность вызвавшего в конечном счете вызвать sqlite3_free() для указателя *ppOut, чтобы освободить распределение буферов после успешного вызова этой функции.

WARNING/TODO: Эта функция в настоящее время предполагает, что вход это действительный changeset. Если это не так, результаты не определены.