![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Эти макросы определяют позволенные значения для поля
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() обычно не нужен.
Choose any three.
SQLite C Interface
Виртуальные коды ограничивающего оператора таблицы
#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