4

MySQL 可以制表符完成 shell 命令和 SQL 声明。

但是对于 SQL,它只完成大写输入。例如,'SEL'将工作'SELECT''sel'不会。

有没有类似.inputrcMySQL 的东西,我可以将其配置为不区分大小写的完成?

4

1 回答 1

2

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

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

使用来源,卢克

虽然我不是 C++ 开发人员,但我检查了命令行客户端的源代码

您可以看到该build_completion_hash()函数将 SQL 关键字、表名和字段名等名称添加到用于提供补全的哈希(快速有效的数据结构形式)中。但是,将 SQL 命令添加到散列的部分只是添加了以下SQL 命令列表

这些 SQL 命令中的大多数都以大写字母列出,但也有一些例外,例如create database, create table, show databases,show fields from使用小写字母列出。由于这个生成的列表中的 SQL 关键字都是大写的,所以当 SQL 关键字以小写形式输入时,补全不起作用。

此列表用于包含 SQL 命令的简短列表(小写),例如select, drop, insert。然而,在2008 年1 月,这个简短的列表被 MySQL 支持的 SQL 命令的生成列表所取代。

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

TLDR:答案似乎是否定的。

于 2015-03-25T15:47:29.650 回答