DataGrip 2019.2の新機能

サービスツールウィンドウ

全てのIDEに新しくサービスツールウィンドウが搭載されました。DatGrip では全接続の監視および管理することができます。
すべての接続は対応するデータソース配下に自身のノードを持っています。もしアイコン上に小さい緑のライトがある場合は接続がされていることを意味しています。コンテキストメニューから容易に接続を閉じることもできます。
すべてのサービスタイプをノードとして参照することも、ビューを変更してそれらをタブとして見ることも可能です。ツールバーのShow in New Tab アクションを使うか、必要なノードをサービスツールウィンドウのタイトルバーにドラッグしてください。
クエリ結果は、サービスビューの接続配下の特定のコンソールにアタッチされるようになりました。

重要! サービス・ツールウィンドウ用のデフォルトのショートカットは Cmd+8 です。

ツリーを非表示に

Services tree を参照したくない場合(つまり以前の状態に戻したい場合)は、歯車アイコンをクリックし、非表示にしてください。

クエリライブタイマー

サービスツールウィンドウはもう一つのリクエストされていた機能であるクエリライブタイマーも提供します。実行中のあらゆる接続について、その右横にどの程度の時間を要しているかを確認できるようになりました。

Docker

Docker プラグインを使用する場合、対応するサービスもこのツールウィンドウに表示されるようになります。

Full-text 検索

ロケーションを知らなくてもデータを探すことができるようになりました。検索したいデータソースまたはデータソースのグループを選択し、コンテキストメニューから Full-text Search メニューを押下してください。ショートカットキーCmd+Opt+Shift+F でも同じことができます。

文字列を入力するためのダイアログが表示されます。検索のためのデータソースの一覧が表示され、いくつかの検索オプションを設定できます。
さらに、データ検索を実行するために DataGrip が実行する特定のステートメントを確認できます。

検索実行後、オープンできる結果が表示されます。

データエディタを開くために結果をクリックしてください。フィルターはデータが見つかった設定だけを表示するよう事前設定されます。カラムが多すぎてデータを見つけることができない場合は、Cmd+F でデータエディタのテキスト検索を行ってください。
  • PostgreSQL, MySQL, MariaDB では、インデキシングされたカラム内でのみ検索できます。このモードを利用するには、ドロップダウンメニュー内の検索で Only columns with full-text search indexes を選択してください。PostgreSQL のクエリは where col @@ plainto_tsquery('query')です。MySQL と MariaDBのクエリは、where match(col) against ('query' in natural language mode)です。
  • Oracle では context, ctxrule, ctxcat のインデックスが存在する場合、それらは使われています。
  • SQL Serverでは fulltext インデックスを持つカラムがある場合、DataGrip はWHERE CONTAINS(col, N'text').を使ってクエリを生成します。
  • Cassandra では OR 条件がデータベースでサポートされていないため DataGrip は1つのテーブルに対して複数のクエリを生成します。
  • 検索では、LIKE 演算子をサポートしていない列、たとえば JSON 型のカラムが検索されます。これらのカラムの値は事前に文字列に変換されます。

データエディタ

ページサイズの変更が簡単に

データベースから取得する行数の定義は結果のセットがあるツールバーから設定できるようになりました。

結果のタブに名前を付加

結果に関してもう1つスーパークールな改善があります。タブ名です!クエリの前にコメントを使うだけです。

特定のコメントだけをタブ名にしたい場合は、Treat text as title after 欄を使うとプレフィックスの単語を指定できます。その単語の後に来る単語だけがタイトルに使われます。

Database ツリービュー

すばやいテーブルバックアップ

ドラッグ&ドロップでテーブルをコピーすることはできましたが、同じスキーマにコピーする際はうまく動作しませんでした。実際に重要なデータの操作をする前にテーブルをすばやくバックアップする必要があるのであれば、この機能はとても便利ですのでご活用ください。

すばやいグループ作成

ドラッグ&ドロップでデータベースのエクスプローラにグループ作成もできるようになりました。
新しいグループを作成するには、データソースを他のデータソースにドラッグ&ドロップするだけです。
データソースを既存のグループに配置するには、そこにドラッグ&ドロップしてください。

ライブ接続

バージョン 2019.2 より、小さい緑のライトがデータソースへのライブ接続があるかどうかを示すようになりました。

強制リフレッシュ

Force Refresh と呼ばれる新しいアクションがデータソースまたはスキーマで利用できるようになりました。DataGrip がキャッシュしているデータソース情報をクリアし、データをロードし直してくれます。

検索とナビゲーションでのデータソースによるフィルタリング

GoTo ポップアップでオブジェクトを見つける際、リストにおいて類似のオブジェクトが多数存在する場合があります。本番環境、ステージング、テストなどの多くのミラーがある場合によく起きます。
DataGrip 2019.2 では特定のデータソース内、またはそれらのグループ内のどこを検索するのかを選択できるようになりました。

他のオブジェクトの DDL 内部のソースコードを検索する際、非常に便利なFind In Path でも同じことを行えます。

コーディング支援

システムカタログからのオブジェクト

ほぼすべてのデータベースにはシステムカタログがあります。  システムカタログとはリレーショナルデータベース管理システムが、テーブルやカラム、ビルトインの関数等の情報のようなスキーマのメタデータを格納している場所です。

これらのカタログからのオブジェクトはコーディング支援を提供するために必要です。それらをコード補完にするのはいいことですし、それらを使うコードは赤くすべきではありません。

以前はコーディング支援でシステムカタログを持つ唯一の方法は、それらをデータベースエクスプローラに追加することでした。 時間はかかりましたが、DataGrip は実際にデータベースからそれらに関する情報を取得しました(いつも通りですが)。また、それらはデータベースエクスプローラに表示されていましたが、常に必要なわけではありませんでした。

この種類のスキーマは、スキーマ選択肢の中に稲妻アイコンがあります。それらをチェックしない場合、DataGrip はそれらをイントロスペクトして表示はしませんが、それらのオブジェクトに関する情報をコーディング支援に使用します。これを可能にするために、DataGrip は各データベースのシステムカタログに関する内部データを使用します。

いくつかのデータベースのシステムからログのサンプルです。

PostgreSQL: pg_catalog, information_schema
SQL Server: INFORMATION_SCHEMA
Oracle: SYS, SYSTEM
MySQL: information_schema
DB2: SYSCAT, SYSFUN, SYSIBM, SYSIBMADM, SYSPROC, SYSPUBLIC, SYSSTAT, SYSTOOLS

インテンションアクションとクイックフィックス

まず、インスペクションのツールチップにクイックフィックスを統合しました。DataGrip が問題を解決する方法を分かっている場合、警告にマウスをホバーするだけでその内容を知ることができます。問題を解決するには、ツールチップの左下の角にあるリンクをクリック、または Opt+Shift+Enterを押下してください。
Opt+Enter は可能性のあるクイックフィックスの全リストを取得するよう動作します。
いくつかの新しいインスペクションも導入しました。

不要なCASEの利用

CASE 文を使う際、DataGrip はそれらがより読みやすいものに変換できるどうかを分析します。

IF へ:

COALESCEへ:

GROUP BY から DISTINCT への変換

もう一つ、インテンションアクションを追加しました。SELECT 節の全カラムが GROUP BY 節に存在する場合、GROUP BY を DISTINCT に変換できるようになりました。

文字の切り捨て

IDE な値を変数に割り当てる際に文字数を検出し、切り捨てられる場合は警告します。

SQL エディタ

Move Caret to Next Word の動作を管理する新しいオプション

Move Caret to Next Word アクションのデフォルトの動作が変わり、DataGrip はキャレットを現在の単語の最後に移動するようになりました。
キャレット移動のアクションの動作を変更するには、Preferences/Settings | Editor | General で行ってください。
このアクションを実行するには、通常 Windows と Linux では Ctrl+Arrows、Mac では Opt+Arrows を押下します。異なる OS で異なるデフォルトの動作です。DataGrip では Windows ライクな動作を Mac ライクに変更しました。

以前の状態:

現在はこのような感じです:

現在のステートメントの選択

新しいアクションである Select current statement が利用可能になりました。検索のアクション Cmd+Shift+A で実行するか、または ショートカットをアサインすることもできます。

大きい数字の折りたたみ

大きい数字の可読性を向上したい場合は、ショートカット Cmd+マイナス を使って折りたたんでください。

その他

  • DataGrip 2019.2 はデフォルトで OpenJDK 11 の独自フォークである JetBrains Runtime 11 配下で動作します。
  • ツリービューでテーブルのコメントを見たい場合は、 View | Appearance and toggle the Descriptions in Tree Views オプションで行ってください。
  • [Cassandra] set, list, map, tuple, udt, inet, uuid, timeuuid といった種類のカラムを編集できるようになりました 。
  • 新しい結合のアイテム IS NULL と IS NOT NULL がコード補完に含まれるようになりました。
  • オプション Jump outside closing bracket/quote with Tab がデフォルトで有効になりました。
  • オプション Surround a selection with a quote or brace がデフォルトで有効になりました。
  • Introduce alias がリファクタリングメニューに追加されました。
  • DataGrip は PostgreSQL 12 と連携するようになりました。: DBE-8384
  • read-only モードで動作している際、いくつかの矛盾がありました。read-only モードから update クエリを実行したい場合、IDE は IDE-level モードのみオフし、JDBC のはオフしていませんでした: DBE-8145。両方ともにオフするようにしたので、本当に必要な場合にのみクエリを実行できるようになりました。