COMPLETION 扩展实现了一个名为“completion”的表值函数,可用于在交互式 SQL 输入期间建议部分输入单词的补全。例如,completion 表可用于帮助实现 Tab 补全。
设计的查询接口为
SELECT DISTINCT candidate COLLATE nocase FROM completion($prefix, $wholeline) ORDER BY 1;
上述查询将返回以 $prefix 开头的整个输入单词的建议。$wholeline 参数是从行首到插入点的所有文本。$wholeline 参数用于上下文。
$prefix 参数可以为 NULL,在这种情况下,前缀将从 $wholeline 推断。或者,如果上下文信息不可用或不需要上下文感知补全,则 $wholeline 参数可以为 NULL 或省略。
completion 表可能会多次返回相同的候选项,并且会以任意顺序返回候选项。上述示例查询中的 DISTINCT 关键字和 ORDER BY 用于使答案唯一并按字典顺序排列。
completion 表与 unix 的 readline 或 linenoise 输入行编辑软件包结合使用,用于在命令行 shell 中实现 Tab 补全。有关示例代码,请参阅https://sqlite.ac.cn/src/file/src/shell.c.in 源文件。搜索“FROM completion”以查找相关代码段。
由于 completion 表内置于命令行 shell 中以提供 Tab 补全功能,因此您可以在命令行 shell 中直接对 completion 表运行测试查询。只需键入类似于上面所示的示例查询,为 $prefix 和 $wholeline 填充适当的值,然后观察输出即可。
completion 表专为交互式使用而设计。它将以适合人类打字的速度返回答案。只要响应时间在用户界面中几乎是即时的,就不会努力提高效率。
在撰写本文时(2017-07-13),completion 虚拟表仅查找 SQL 关键字以及模式、表和列名称。$wholeline 中包含的上下文将完全被忽略。未来的增强功能将尝试从函数和 pragma 名称以及其他来源返回新的补全,并考虑更多上下文。completion 表应被视为正在开发中。
此页面上次修改于 2022-01-08 05:02:57 UTC