代码之家  ›  专栏  ›  技术社区  ›  Ness

在MySQL CLI中,是否有自动完成过程的方法?

  •  1
  • Ness  · 技术社区  · 2 年前

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

    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 (或 \# )重新刷新自动完成列表的命令似乎只适用于表名和列名。

    1 回复  |  直到 2 年前
        1
  •  1
  •   Bill Karwin    2 年前

    更正 mysql 客户端散列模式、表和列,但不散列其他对象(过程、触发器、函数、事件)。

    您可以通过阅读 build_completion_hash() mysql.c中的函数。

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

    您可以在bugs.mysql.com上提交一个功能请求。或者更好的是,您自己实现它并提供一个补丁。

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