DataGrip 2018.3の新機能

Cassandra データベース

2018.2.2 で列指向データベースであるClickhouseをサポートしたのに続いてNoSQLデータベースであるCassandraをサポートしました。

クエリを書いたり、データを閲覧したり、スクリプトを生成したり、何でも好きなことが出来ます。

選択したオブジェクト向けのSQLファイルを生成

SQLジェネレータ(Cmd+Alt+G)を使ってオブジェクトのDDLを取得する際、オブジェクトのSQLファイルを生成することも出来ます。左ペインの保存(*)ボタンを押してください。ご覧の通り、出力レイアウトは2種類から選べます。SQLジェネレータの保存設定にあたり、欲しい機能があれば是非フィードバックをください。

* 訳注:リンク先はネタ – `フロッピーディスクは神のようなものです。保存の象徴となるべく召されたのです’ の意

ドロップダウンリストの右側の編集(エンピツ)ボタンをクリックしてレイアウトを編集したり、独自に作成したりもできます。これはgroovyで書かれています。

PostgreSQLのextension

PostgreSQLのextensionをサポートしました。

データソースのクイックドキュメント

データソースをフォーカスした状態でF1を押せばデータベースバージョン、含まれているオブジェクト数といった情報を確認できます。

コード補完

自動エイリアス

テーブル名を補完する際、自動的にエイリアスを追加するオプションが新設されました。デフォルトで生成されるエイリアス名が気にくわない場合はテーブル別に任意のエイリアス名を指定しておくこともできます。

実際の動作の様子は以下の通りです:

Not aggregated fields in GROUP BYで集約されないフィールド

GROUP BY ステートメントを使う際、DataGripは集約されないフィールドのリストを提示します。

セレクト時の全てのカラムリストAll columns list in SELECT

SELECTキーワードの後、全てのカラムのリストをまとめて補完できます。MERGEINSERT INTOでも利用できます。

Postfix completion

IntelliJベース IDEユーザーに好評のPostfix completion が使えるようになりました。補完をフル活用しながら、カーソルの戻りを極力抑えながらスラスラとSQLを書くことができます。

以下が実際の動作の様子です:

名前付きパラメータ

コード補完はストアドプロシージャの名前付きパラメータでも働くようになりました。

あいまいな名前のコンテクスト

名前があいまいな場合、コンテクストを表示します。

ジョインのオペランドを反転

Invert order of operands in auto-generated ON clause.という設定を新設しました。

オフの場合、 FROM で指定しているテーブルがJOIN 条件の最初に来ます。

オンの場合はその逆の動作になります:

Refactoring

テーブルエイリアスの導入

Introduce table alias アクションでテーブルのエイリアスを直接作成出来ます。またエイリアスは自動的にテーブル名を使用している箇所と置換されます。

サブクエリの抽出

– The name suggested for CTE doesn’t lead to conflicts: DBE-6496
– Context is properly defined if a statement is wrapped in another expression: DBE-6503, DBE-6517
– DataGrip won’t suggest extracting CTE when the column aliases in an as-expression for dialects that don’t support it: DBE-6490
– This refactoring is enabled for MySQL: CTEs are supported since MySQL 8
– 深いサブクエリでもリファクタリングが働くように: DBE-7332, DBE-7333

コードインサイト

安全でないステートメント

DELETE または UPDATE ステートメント WHERE 句なしに使おうとすると以下の様に警告して再考を促します:

到達しないコード

到達しないコードを見つけると警告します。

使われていないサブクエリ

Unused subquery itemという新しいインスペクションで、クエリをキレイに整えやすくなりました。

コード生成

Live TemplateのDialect

Live Templateでdialect(対象データベース)を指定出来ます。指定したdialectでのみLive Templateが働くように出来ます。

同じabbreviation(省略文字列)tに対して、dialect別に異なるテンプレートを設定しておくことができます。

例えば最初の n 行を取得するテンプレートを作りたい場合、 SQL Server と PostgreSQL では文法が異なりますが、テンプレートグループが異なれば同じabbreviation(省略文字列)を使うことが出来ます。SQL Server と PostgreSQLのグループを作成し、それぞれのグループで適切な文法でLive Templateを指定することになります。

必要なコンテクストでちゃんと起動するよう、テンプレートで適切なdialectを指定するのを忘れないでください。

SELECTでCREATE TABLE 定義

CREATE TABLE 定義をSELECT クエリから追加することが出来るようになりました。SELECTの前にINSERT 句を書いて、 Opt+Enter → Create table definition を選びます:

カラムネームヒント

INS Live Templateを使う際、カラム名のヒントが自動的に現れます:

接続

シングルコネクションモード

コンソールはそれぞれ別のコネクションを持っていますが、データソースにつき1つのコネクションを使い回すことが出来るようになりました。データベースツリーのテンポラリーオブジェクトをコンソール間で共有したり、異なるコンソールでトランザクションを共有したり出来ます。Data source properties | Options | Single connection modeより有効化できます。

自動再接続

待望の自動再接続が実装されました。タイムアウトして切断される心配はもうありません。

検索とナビゲーション

新しいどこでも検索

IntelliJプラットフォームでプロジェクト内やIDE内をなんでも検索できるどこでも検索(Search Everywhere)を改良しました。Search EverywhereFind ActionGo to table/view/procedure/Go to fileGo to symbolを1つのダイアログに統合し、タブで切り替えられるようにしました。

複数行に渡るパターンを検索

Find in Path / Replace in the Path ダイアログで複数行に渡るパターンを検索/置換出来るようになりました。複数行を検索する際に正規表現を使わなくても良くなります。

複数行のTODOコメント

TODOコメントを複数行書けます。TODOに続くコメントはエディタでハイライトされ、TODOツールウィンドウでリストアップされます。TODOコメントで2行目以降はインデントをつけることで通常のコメントと区別してマルチラインTODOコメントとして認識されます。

ユーザーインターフェース

ハイコントラストカラースキーム

2018.3では全てのIDEでハイコントラストテーマをご利用頂けます。Settings | Appearance & Behavior | Appearance | Theme よりHigh Contrastを選んでください。

色の設定

データソースの色をPropertiesダイアログでも選べるようになりました。

ページサイズ設定のUI改善

ページサイズのUIを改善し、テーブルから、結果から全ての行を手軽に確認できます。

その他の改善、修正

  • コード補完:
    • Window 関数
    • SUM() と AVG() の数値フィールド
    • FILTER (WHERE…) 句
    • SQLiteのフィールドタイプ
    • ブラケット内のアイテム
    • テーブルの値型
  • オブジェクトをドロップする際、drop cascadeを使うオプション
  • SQLフォーマッタの大幅な改善。もしまだ問題があるようでしたらYouTrackへご報告ください
  • エディタで式・宣言リストが折りたたみ可能に
  • タブ選択にショートカット割り当てが可能に IDEA-68324
  • PostgreSQL 11のストアドプロシージャサポート DBE-6863
  • SQLiteの vector valued updateサポート DBE-4449
  • JOINで条件が指定ない場合、エラーハイライトする DBE-6759
  • ‘@’をスペルチェック対象からはずし、変数名をスペルミスと誤検出しない DBE-2250
  • JSON groovy extractorで大きな数値を指定可能に DBE-7019
  • PostgreSQLでカラムをソートした際も行カウントを取得できるように DBE-2444
  • DataGrip再起動後も正しくテーブルエディタを開けるように DBE-7044
  • Redshiftでクエリプランビジュアライザが動作しなかった DBE-7129
  • SQL Serverでtemp tableのエイリアスサジェスチョンの改善 DBE-5981
  • テーブルで返ってカラム名を解決 DBE-7176
  • MySQL 5.7で同期中に例外 DBE-7234