The COMPLETION() Table-Valued Function
The COMPLETION() Table-Valued Function
1.概述
COMPLETION扩展实现了一个名为“completion”的表值函数,可用于在交互式SQL输入期间提示部分输入词的完成。例如,完成表可用于帮助实现制表符完成。
2.细节
设计的查询界面是:
SELECT DISTINCT candidate COLLATE nocase
FROM completion($prefix, $wholeline)
ORDER BY 1;
上面的查询将返回以$前缀开头的整个输入单词的建议。$ wholeline参数是从行首到插入点的所有文本。$ wholeline参数用于上下文。
$ prefix参数可能为NULL,在这种情况下,前缀是从$ wholeline中推导出来的。或者,如果上下文信息不可用或者不需要上下文感知完成,则$ wholeline参数可以为NULL或省略。
完成表可能会多次返回同一个候选人,并且会以任意顺序返回候选人。添加上面示例查询中的DISTINCT关键字和ORDER BY以使答案唯一并按照字典顺序排列。
2.1.使用示例
完成表用于在命令行shell中实现制表符完成,与unix的readline或linenoise输入行编辑包一起使用。有关示例代码,请参阅https://sqlite.org/src/file/src/shell.c.in源文件。搜索“FROM completion”以查找相关的代码部分。
由于完成表内置于命令行shell中以提供制表符完成,因此可以直接在命令行shell中针对完成表运行测试查询。只需键入一个查询(如上面所示的示例),为$ prefix和$ wholeline填充适当的值,然后观察输出。
3.限制
完成表是为交互式使用而设计的。它将以适合人类打字的速度返回答案。只要在用户界面中的响应时间几乎是瞬时的,就不会做出非常高效的努力。
截至撰写本文时(2017-07-13),完成虚拟表仅查找SQL关键字,以及架构,表和列名。$ wholeline中包含的上下文完全被忽略。未来的增强将尝试返回来自函数和编译指示名称和其他来源的新完成,并考虑更多上下文。完成表应被视为正在进行中的工作。
SQLite在公共领域。