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