![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
![]()
Small. Fast. Reliable.
Choose any three.
Табличные функции Bytecode() и Tables_Used() 1. ОбзорBytecode и tables_used это виртуальные таблицы, встроенные в SQLite для доступа к информации о подготовленных запросах. bytecode и tables_used работают как табличные функции. Они берут единственный обязательный аргумент, который является или текстом SQL-оператора или указателем на существующий подготовленный запрос. Функция bytecode возвращает одну строку результата для каждой операции bytecode в подготовленном запросе. Функция tables_used возвращает одну строку для каждого постоянного btree (таблица или индекс), к которому обращается запрос. 2. ИспользованиеТаблицы bytecode и tables_used доступны, если SQLite был собран с -DSQLITE_ENABLE_BYTECODE_VTAB. CLI собран именно так и таким образом можно использовать стандартный CLI в качестве испытательной платформы. Обе виртуальных таблицы только для чтения. Вы используете их, упоминая их непосредственно в пункте FROM оператора SELECT. Они обе требуют отдельного аргумента, который является SQL-оператором, который будет проанализирован. Например: SELECT * FROM bytecode('SELECT * FROM bytecode(?1)'); Аргумент может быть текстом SQL-оператора, в этом случае bytecode (или tables_used) для него вернется, или аргумент может быть параметром вроде "1" или $stmt, который позже связан с объектом prepared statement через интерфейс sqlite3_bind_pointer(). Используйте тип указателя "stmt-pointer" для интерфейса sqlite3_bind_pointer(). 2.1. СхемаСхема таблицы bytecode: CREATE TABLE bytecode(addr INT, opcode TEXT, p1 INT, p2 INT, p3 INT, p4 TEXT, p5 INT, comment TEXT, subprog TEXT, stmt HIDDEN); Первые восемь колонок это адрес, код операции и операнды для единственного bytecode в виртуальной машине, которая осуществляет запрос. Эти колонки тот же самый вывод колонок, используя EXPLAIN. Виртуальные таблицы показывают все операции в подготовленном запросе, и основная часть подготовленного запроса и в подпрограммах раньше осуществляла действия внешнего ключа или триггера. Поле "subprog" = NULL для основной части подготовленного запроса или является именем триггера trigger (или строкой "(FK)") для триггеров и действий внешнего ключа. Схема таблицы tables_used: CREATE TABLE tables_used(type TEXT, schema TEXT, name TEXT, wr INT, subprog TEXT, stmt HIDDEN); Таблица tables_used предназначается, чтобы показать, какие btree файла базы данных прочитаны или написаны подготовленным запросом, раздельно самим главным запросом, а также связанными триггерами и действиями внешнего ключа. Колонки следующие:
|