4

MySQL は、シェル コマンドと SQL 宣言をタブで補完できます。

ただし、SQL の場合、大文字の入力に対してのみ完了します。たとえば、'SEL'は機能し'SELECT'ますが、機能し'sel'ません。

.inputrc大文字と小文字を区別しない補完として構成できるMySQLのようなものはありますか?

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 databasecreate tableshow databases、などのいくつかの例外があり、show fields from小文字を使用してリストされています。この生成されたリストの SQL キーワードはすべて大文字であるため、SQL キーワードが小文字で入力されている場合、補完は機能しません。

このリストには、SQL コマンドの短いリスト (小文字) が含まれていましselectた。ただし、2008 年 1 月に、この短いリストは、MySQL でサポートされる SQL コマンドの生成されたリストに置き換えられました。dropinsert

注: MySQL の MariaDB フォークのソースにリンクしました。Web からアクセスしやすいためです。MariaDB は、現在 Oracle が所有する MySQL コードベースからのバイナリ互換フォークです (このプロジェクトは、MySQL AB の背後で同じ人々によって運営されています)。バージョン管理履歴を確認したところ、私が参照したクライアント コードの部分は、ここ数年あまり変更されていません。

TLDR: 答えはノーのようです。

于 2015-03-25T15:47:29.650 に答える