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

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

但对于SQL,它只适用于大写输入.例如,’SEL’适用于’SELECT’,但’sel’不适用.

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

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

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

使用来源,卢克

虽然我不是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 database,create table,show databases,show fields from使用小写字母列出.由于此生成列表中的SQL关键字都是大写的,因此当以小写字母键入SQL关键字时,完成不起作用.

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

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

TLDR:答案似乎是否定的.

点赞