Функция с табличными значениями COMPLETION()
1. Обзор
Расширение COMPLETION реализует функцию с табличными значениями с именем «completion», которая может использоваться для предложений завершения частично введённых слов во время интерактивного ввода SQL. Таблица completion может использоваться для реализации автодополнения, например.
2. Подробности
Проектируемый интерфейс запроса:
SELECT DISTINCT candidate COLLATE nocase FROM completion($prefix, $wholeline) ORDER BY 1;
Приведённый выше запрос вернёт предложения для всего введённого слова, начинающегося с $prefix. Параметр $wholeline содержит весь текст с начала строки до точки вставки. Параметр $wholeline используется для контекста.
Параметр $prefix может быть NULL, в этом случае префикс определяется из $wholeline. Или параметр $wholeline может быть NULL или опущен, если информация о контексте недоступна или если контекстно-зависимое завершение нежелательно.
Таблица completion может возвращать один и тот же кандидат более одного раза, и она будет возвращать кандидатов в произвольном порядке. Ключевое слово DISTINCT и ORDER BY в приведённом выше образце запроса добавлены для получения уникальных ответов и их сортировки в лексикографическом порядке.
2.1. Пример использования
Таблица completion используется для реализации автодополнения в командной оболочке с использованием пакетов редактирования строк readline или linenoise для Unix. Обратитесь к файлу исходного кода командной строки https://sqlite.org/src/file/src/shell.c.in для примера кода. Поищите «FROM completion», чтобы найти соответствующие разделы кода.
Поскольку таблица completion интегрирована в командную оболочку для предоставления автодополнения, вы можете запускать тестовые запросы к таблице completion непосредственно в командной оболочке. Просто введите запрос, например, как показано выше, заполнив соответствующие значения для $prefix и $wholeline, и посмотрите результат.
3. Ограничения
Таблица completion предназначена для интерактивного использования. Она будет возвращать ответы со скоростью, соответствующей скорости набора текста человеком. Не предпринимается никаких усилий для необычайной эффективности, пока время ответа практически мгновенно в пользовательском интерфейсе.
На момент написания этой статьи (2017-07-13) виртуальная таблица completion ищет только ключевые слова SQL и имена схем, таблиц и столбцов. Контекст, содержащийся в $wholeline, полностью игнорируется. Будущие улучшения будут стремиться возвращать новые предложения, взятые из имён функций и псевдонимов, а также из других источников, а также учитывать больше контекста. Таблица completion следует рассматривать как работу в процессе.
Эта страница была в последний раз изменена 08.01.2022 05:02:57 UTC
SQLite is in the Public Domain.
https://sqlite.org/completion.html