![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
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".
Choose any three.
SQLite C Interface
Ограничение значений в xBestIndex()
int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **ppVal);