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