在MySQL CLI中,有没有办法自动完成过程?

In a MySQL CLI, is there a way to autocomplete procedures?

提问人:Ness 提问时间:11/8/2023 更新时间:11/8/2023 访问量:21

问:

例如,自动完成允许您键入以下内容:

select cu<TAB> from o<TAB> where nu<TAB> = 42;

结果可能是这样的:

select customer_name from orders where number = 42;

我希望能够使用创建的过程(和函数)来做到这一点,这些过程(和函数)往往具有很长的名称:

call getCustomerByOrderNumber(42);

我找不到任何关于如何做到这一点的答案。我在 SSH 连接上使用 MySQL CLI。运行(或)命令来重新散列自动完成列表似乎仅适用于表名和列名。rehash\#

MySQL 自动完成 命令行界面 过程

评论


答:

1赞 Bill Karwin 11/8/2023 #1

正确 — 客户端中的重新哈希功能对架构、表和列进行哈希处理,但不对其他对象(过程、触发器、函数、事件)进行哈希处理。mysql

您可以通过阅读 mysql.cc 中函数的源代码来确认这一点。build_completion_hash()

参考: https://github.com/mysql/mysql-server/blob/trunk/client/mysql.cc#L3142-L3250

请随时在 bugs.mysql.com 提交功能请求。或者更好的是,自己实现它并贡献一个补丁。

另一方面,MySQL开发人员可能会拒绝功能请求,因为他们希望新的开发专注于MySQL Shell而不是旧客户端。mysql