Spec-Zone.ru › SQLite

Коды операторов ограничений виртуальной таблицы

#define SQLITE_INDEX_CONSTRAINT_EQ          2
#define SQLITE_INDEX_CONSTRAINT_GT          4
#define SQLITE_INDEX_CONSTRAINT_LE          8
#define SQLITE_INDEX_CONSTRAINT_LT         16
#define SQLITE_INDEX_CONSTRAINT_GE         32
#define SQLITE_INDEX_CONSTRAINT_MATCH      64
#define SQLITE_INDEX_CONSTRAINT_LIKE       65
#define SQLITE_INDEX_CONSTRAINT_GLOB       66
#define SQLITE_INDEX_CONSTRAINT_REGEXP     67
#define SQLITE_INDEX_CONSTRAINT_NE         68
#define SQLITE_INDEX_CONSTRAINT_ISNOT      69
#define SQLITE_INDEX_CONSTRAINT_ISNOTNULL  70
#define SQLITE_INDEX_CONSTRAINT_ISNULL     71
#define SQLITE_INDEX_CONSTRAINT_IS         72
#define SQLITE_INDEX_CONSTRAINT_LIMIT      73
#define SQLITE_INDEX_CONSTRAINT_OFFSET     74
#define SQLITE_INDEX_CONSTRAINT_FUNCTION  150

Эти макросы определяют допустимые значения для поля sqlite3_index_info.aConstraint[].op. Каждое значение представляет оператор, являющийся частью условия ограничения в предложении WHERE запроса, использующего виртуальную таблицу.

Левый операнд оператора задаётся соответствующим полем aConstraint[].iColumn. Значение iColumn, равное -1, указывает, что левым операндом является rowid. Операторы SQLITE_INDEX_CONSTRAINT_LIMIT и SQLITE_INDEX_CONSTRAINT_OFFSET не имеют левого операнда, поэтому для этих операторов соответствующее aConstraint[].iColumn не имеет смысла и не должно использоваться.

Все значения операторов от SQLITE_INDEX_CONSTRAINT_FUNCTION до значения 255 зарезервированы для представления функций, которые перегружаются методом xFindFunction реализации виртуальной таблицы.

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

Порядок сортировки, который следует использовать для сравнения, можно найти с помощью интерфейса sqlite3_vtab_collation(). Для большинства виртуальных таблиц в реальном мире порядок сортировки ограничений не имеет значения (например, потому что ограничения являются числовыми), и поэтому интерфейс sqlite3_vtab_collation() не используется часто.

См. также списки Объектов, Констант и Функций.

SQLite is in the Public Domain.
https://sqlite.org/c3ref/c_index_constraint_eq.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API