gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 07:37:42 27 4
gpt4 key购买 nike

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

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

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

最佳答案

我来到 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 关键字、表名和字段名到哈希(快速高效的形式数据结构),用于提供补全。但是,partwhich adds SQL commands to the hash只需添加以下 list of SQL commands .

大部分 SQL 命令都以大写形式列出,但也有少数异常(exception),例如 create databasecreate tableshow databases, show fields from 使用小写字母列出。由于这个生成的列表中的 SQL 关键字都是大写的,所以当 SQL 关键字是小写时,补全不起作用。

这个列表曾经包含一个简短的 SQL 命令列表(小写),例如 selectdropinsert。然而,在 January 2008 ,这个简短的列表被 MySQL 支持的 SQL 命令的生成列表所取代。

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

TLDR:答案似乎是否定的。

关于mysql - MySQL shell 中不区分大小写的完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11894911/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com