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

Small. Fast. Reliable.
Choose any three.

SQLite C Interface

Ограничение значений в xBestIndex()

int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **ppVal);

API может использоваться только из метода xBestIndex виртуальной таблицы. Результат запроса этого интерфейса за пределами метода xBestIndex не определен и вероятно вреден.

Когда sqlite3_vtab_rhs_value(P,J,V) вызван из метода xBestIndex виртуальной таблицы, P должен копией указателя на объект sqlite3_index_info, переданного xBestIndex, а J это индекс на основе 0 в P->aConstraint[], тогда это пытается установить *V в значение правого операнда того ограничения, если правый операнд известен. Если правый операнд неизвестен, то *V установлен в NULL. sqlite3_vtab_rhs_value(P,J,V) вернет SQLITE_OK если и только если *V установлен в значение. sqlite3_vtab_rhs_value(P,J,V) вернет SQLITE_NOTFOUND, если правая сторона J-го ограничения недоступна. sqlite3_vtab_rhs_value() может возвратить код результата кроме SQLITE_OK или SQLITE_NOTFOUND, если что-то идет не так, как надо.

sqlite3_vtab_rhs_value() обычно успешен только, если правый операнд ограничения это литеральное значение в оригинальном SQL-операторе. Если правый операнд будет выражением или ссылкой на некоторую другую колонку или a параметром хоста, sqlite3_vtab_rhs_value(), вероятно, возвратит SQLITE_NOTFOUND.

У некоторых ограничений, таких как SQLITE_INDEX_CONSTRAINT_ISNULL и SQLITE_INDEX_CONSTRAINT_ISNOTNULL, нет правого операнда. Для таких ограничений sqlite3_vtab_rhs_value() всегда вернет SQLITE_NOTFOUND.

Объект sqlite3_value, возвращенный в *V, является защищенным sqlite3_value и остается действительным на время вызова метода xBestIndex. Когда xBestIndex возвращается, объект sqlite3_value, возвращенный sqlite3_vtab_rhs_value(), автоматически освобожден.

"_rhs_" в имени это сокращение для "Right-Hand Side".