MySQL shell中不区分大小写的完成

时间:2012-08-10 03:04:16

标签: mysql autocomplete

MySQL可以选项卡完成shell命令和SQL声明。

但对于SQL,它只对大写输入完成。例如,'SEL'适用于'SELECT''sel'不适用。

是否有类似于.inputrc的MySQL,我可以将其配置为不区分大小写完成?

1 个答案:

答案 0 :(得分:2)

我来到StackOverflow寻找这个问题的答案,但由于没有,我想我自己会研究答案。

MySQL命令行客户端链接到GNU Readline库以提供选项卡完成,因为MySQL客户端解析.inputrc(从使用strace可以看出来检查系统调用MySQL客户端),我认为它会关注set completion-ignore-case On等选项。不幸的是,事实并非如此。

使用来源,Luke

虽然我不是C ++开发人员,但我检查了source code for the command line client

您可以看到build_completion_hash()函数添加了诸如的名称 SQL关键字,表名和字段名称到哈希(快速有效的形式 数据结构)用于提供完成。但是,part which adds SQL commands to the hash只会添加以下list of SQL commands

大多数这些SQL命令都以大写字母列出,但有一些例外情况,如create databasecreate tableshow databasesshow fields from列出使用较低的 - 案件。由于此生成列表中的SQL关键字都是大写的,因此当以小写字母键入SQL关键字时,完成不起作用。

此列表曾用于包含SQL命令的简短列表(小写),例如selectdropinsert。但是,在January 2008中,这个短列表被MySQL支持的生成的SQL命令列表所取代。

注意:我链接到MySQL的MariaDB分支源,因为它更易于访问。 MariaDB是一个二进制兼容的分支,来自现在由Oracle拥有的MySQL代码库(该项目由MySQL AB背后的同一个人运行)。从检查版本控制历史记录开始,我提到的客户端代码部分在过去几年中没有太大变化。

TLDR:答案似乎是否定。