RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Small. Fast. Reliable.
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

Эти макросы определяют позволенные значения для поля 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() обычно не нужен.