DataGrip 2019.2の新機能

Services ツールウィンドウ

当社のすべてのIDEにServicesという新しいツールウィンドウが搭載されました。 DataGripではそこですべての接続を監視したり、管理したりできます。

各接続の対応するデータソースの下に独自のノードが表示されるようになりました。 ノードアイコンに小さな緑色のライトが点灯している場合、それは接続中であることを示しています。 コンテキストメニューを使って簡単に接続を閉じることができます。

すべてのサービスタイプをノードとして表示したり、タブ表示に変更したりできます。 ツールバーからShow in New Tab(新規タブで表示)アクションを使用するか、 単に必要なノードをServicesツールウィンドウにドラッグするだけです。

クエリの結果は、Servicesビューの各コンソールの接続の下に配置されています。

重要! Servicesツールウィンドウのデフォルトショートカットは Alt+8 です。

ツリーの非表示

ツリーの非表示

Servicesツリーを表示したくない場合(以前の表示に戻したい場合)は、歯車アイコンをクリックして非表示にしてください。

クエリライブタイマー

Services ツールでは、別途要望のあったクエリライブタイマー提供しています。 クエリを実行する任意の接続で、その右側に接続時間が表示されます。

Docker

Docker

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

全文検索

データの正確な位置が分からなくても、データを検索できるようになりました。 そのためには、検索対象のデータソースやデータソースグループ、あるいは個々のテーブルを選択し、コンテキストメニューからFull-text Searchを全文検索を実行してください。 もちろん、対応するショートカット(Ctrl+Alt+Shift+F)もあります。

文字列入力用のダイアログが表示されます。 そこでは検索対象のデータソースがリスト表示され、いくつかの検索オプションを設定できます。

また、データ検索にあたってDataGripが実行する詳細なステートメントを確認することができます。

検索を実行すると結果が表示されます。結果は開くことができます。

結果をクリックするとデータエディタが開きます。 フィルタが事前に定義され、データが見つかった場所の文字列だけが表示されます。 カラムが多すぎてデータの位置を特定できない場合は、データエディタでCtrl+Fを使ってテキスト検索を使用してください。

一部のデータベースでは、インデックス化されたカラム内のみを検索できます。 このモードを使用するには、Search inドロップダウンメニューでOnly columns with full-text search indexes(全文検索インデックスのあるカラムのみ)を選択してください。

  • PostgreSQLの場合、クエリは where col @@ plainto_tsquery('text') となります。
  • MySQLMariaDBの場合、クエリは where match(col) against ('text' in natural language mode) となります。
  • Oracleの場合、インデックスcontext、ctxrule、ctxcatがあれば、それらが使用されます。
  • SQL Serverの場合、DataGripは全文インデックスのあるカラムがあればWHERE CONTAINS(col, N'text')を使ってクエリを生成します。
  • SQLiteの場合、DataGripは where col MATCH ‘text’ を使ってクエリを生成します。

All columnsモードが選択されている場合、この検索はJSON型のカラムなど、LIKE演算子をサポートしていないカラムの中を調べます。 これらのカラム内の値は、あらかじめ文字列に変換されます。

In Apache Cassandra, DataGrip creates several queries for one table, because the OR condition isn’t supported by the database.

データエディタ

ページサイズを簡単に変更可能

ページサイズを簡単に変更可能

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

結果タブに命名可能

結果タブに命名可能

結果表示には他にも非常に素晴らしい改善が行われています。タブの名前を変更できるようになりました! クエリの前でコメントを使用するだけでタブの名前を変更できます。

結果タブに命名可能

 

ある特定のコメントをタブ名にしたい場合は、設定の Treat text as title after フィールドを使って接頭語を指定ください。 これにより、指定した接頭辞より後ろの文字列だけがタイトルとして使用されます。

データベースツリービュー

簡易テーブルバックアップ

簡易テーブルバックアップ

これまでもドラッグアンドドロップでテーブルをコピーすることはできましたが、同じスキーマにコピーする際には使用できませんでした。 実際、この機能は重要なデータ操作を実行する前にテーブルの簡単なバックアップを作成したい場合に非常に役立つと思われます。 このため、この機能を使えるようにしました!

高速なグループ作成

高速なグループ作成

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

有効な接続

有効な接続

バージョン2019.2以降、データソースへの有効な接続がある場合に小さな緑色のライトが表示されるようになりました。

強制再読み込み

強制再読み込み

Force Refresh(強制再読み込み)という新しいアクションをデータソースまたはスキーマに対して使用できるようになりました。 このアクションはDataGripがキャッシュしているデータソースの情報を消去し、最初から読み込み直します。

検索および移動でのデータソースによる絞り込み

GoToポップアップでオブジェクトを指定する際、似たようなオブジェクトがリストに多数表示されることがあります。 これは、本番環境、ステージング環境、テスト環境など多数のミラーが存在する場合に発生しがちです。

DataGrip 2019.2では、検索対象(特定のデータソース内、または複数のデータソース内)を選択できます。

Find In Pathでも同様の動作をします。これは、他のオブジェクトのDDL内のソースコードを検索する際に非常に便利です。

コーディング支援

ページサイズを簡単に変更可能

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

ほぼすべてのデータベースにシステムカタログはあります。そこには、リレーショナルデータベース管理システムが テーブル、カラム、ビルトイン関数などに関するスキーマメタデータを保管しています。

これらのカタログのオブジェクトは、コーディング支援を提供するのに必要です。 このようなオブジェクトをコード補完の対象に含めるのは良い事です。そうすれば、それらを使用しているコードが赤く強調されることはありません。

これまでは、システムカタログをコーディング支援の対象に含めるには、それらをデータベースエクスプローラーに追加するしかありませんでした。 DataGripは、これらのカタログに関する情報を(そう、常に同じ情報を)時間をかけてデータベースから実際に取得していました。 また、それらはデータベースエクスプローラーに表示されていましたが、常に必要なものではありません。

スキーマ選択ツールでは、この種のスキーマに雷アイコンが表示されます。 これらのスキーマにチェックを付けなかった場合、DataGripはそれらをイントロスペクションと表示の対象から外しますが、それらのオブジェクト情報はコーディング支援で使用されます。 この機能を実現するため、DataGripは各データベースのシステムカタログに関する内部データを使用しています。

以下にいくつかのデータベースのシステムカタログの例を挙げます。

  • PostgreSQLpg_catalog、information_schema
  • SQL ServerINFORMATION_SCHEMA
  • OracleSYS、SYSTEM
  • MySQLinformation_schema
  • DB2SYSCAT、SYSFUN、SYSIBM、SYSIBMADM、SYSPROC、SYSPUBLIC、SYSSTAT、SYSTOOLS
ページサイズを簡単に変更可能

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

まず、クイックフィックスをインスペクションツールチップに統合しました。 DataGripで問題を解決できる場合、警告にマウスオーバーするだけでその方法を確認できます。 問題を解決するには、ツールチップ左下のリンクをクリックするか、Alt+Shift+Enterを押すだけです。

これまでと同様、Alt+Enterで使用可能なすべてのクイックフィックスのリストを取得することもできます。

また、複数の新しいインスペクションを導入しました。

不要なCASEの使用箇所

CASE構文を使用している場合、DataGripはそれらをより可読性の高い構文に変換できるかどうかを解析します。

IFに変換:

 

COALESCEに変換:

GROUP BYからDISTINCTへの変換

GROUP BYからDISTINCTへの変換

もう1つインテンションアクションを追加しました。SELECT句のすべてのカラムがGROUP BY句の中にある場合、GROUP BYDISTINCTに変換できるようになりました。

文字が切り捨てられる可能性

文字が切り捨てられる可能性

このIDEは値を変数に割り当てる際に文字列の長さを検出し、その文字列が切り捨てられる場合に警告を表示します。

SQLエディタ

Move Caret to Next Word(キャレットを次の単語に移動)の動作を制御するための新しいオプション

Move Caret to Next Word(キャレットを次の単語に移動)の動作を制御するための新しいオプション

Move Caret to Next Wordアクションのデフォルトの動作が変更されました。DataGripはキャレットを現在の単語の終了位置に移動します。

キャレット移動アクションの動作を変更するには、Preferences/Settings | Editor | Generalに移動してください。

通常、このアクションはCtrl+矢印キーWindowsおよびLinux)およびOpt+矢印キーMac)を押して実行します。 オペレーティングシステムによってデフォルトの動作は異なります。 DataGripでは、Windows風の動作をMac風の動作に変更しました。

こちらが以前の動作です:

今回はこのように動作します:

GROUP BYからDISTINCTへの変換

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

新しいアクション、Select current statementを使用できるようになりました。 このアクションはFind Action(Ctrl+Shift+A)からアクセスできます。あるいは、専用のショートカットを割り当ててください。

文字が切り捨てられる可能性

大きな数字の桁区切り

大きな数字の可読性を可読性を向上させたい場合は、それらをCtrl+マイナスのショートカットで区切ることができます。

その他の変更

  • DataGrip 2019.2は、デフォルトではOpenJDK 11の未認証フォークであるJetBrains Runtime 11上で動作します。
  • ツリービューにテーブルのコメントを表示したい場合は、View | Appearance and toggle the Descriptions in Tree Views オプションに移動してください。
  • [Apache Cassandra] You can now edit these types of columns: set, list, map, tuple, udt, inet, uuid, and timeuuid.
  • コード補完に次の結合項目が含まれるようになりました:IS NULLおよびIS NOT NULL
  • Jump outside closing bracket/quote with Tab(Tabで閉じ括弧/引用符の外側にジャンプ)オプションはデフォルトで有効になっています。
  • Surround a selection with a quote or brace(選択範囲を引用符または中括弧で囲む)オプションはデフォルトで有効になっています。
  • Introduce alias(エイリアスの導入)がリファクタリングメニューに追加されました。
  • DataGripはPostgreSQL 12に対応しています:DBE-8384.
  • 読み取り専用モードで作業する際、一部不整合が発生していました。読み取り専用モードで更新クエリを実行する際、IDEはIDEレベルモードのみをオフにしていましたが、JDBCモードをオフにしていませんでした:DBE-8145. 現在はこれら両方をオフにしましたので、本当に必要な場合にクエリを実行できるようになりました。