Коды операторов ограничений виртуальной таблицы
#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