![]() |
|
|||
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". |