DataGrip 2021.2 の新機能

DataGrip 2021.2 がリリースされました! 2021 年の 2 回目となるメジャーアップデートでは、さまざまな機能改善が行われています。 その内容を詳しく見てみましょう!

DDL データソース

DDL データソースの生成は、データベースのシームレスなバージョン管理を実現するための長期的な開発ステップの 1 つです。 この機能を使用すると、DDL ファイルを VCS システムに保管できるため、データベース構造が更新されるたびに再生成できます。

DDL データソースは、実際のデータソースを基に生成できるようになりました。 DDL ファイルはローカルで作成され、新しいデータソースは同ファイルに基づいて作成されます。 こうすることで、同ファイルの再生成および DDL データソースの更新がいつでも行えます。

それでは、その手順を説明します。

SQL Scripts コンテキストメニューに新しいメニューアイテム Dump to DDL data source を追加しました。

ダイアログが開くと、新しく作成されるファイルを格納するフォルダーを指定する必要があります。

Generation タブで、こうした DDL ファイルを生成する方法を指定します。

最後に、「OK」をクリックして DDL データソースを作成します。

新しいファイルが格納されたフォルダーが自動的にプロジェクトにアタッチされます。

オブジェクトを作成

v2021.2 では、UI を使って DDL データソースにオブジェクトを作成できます。 対応するファイルはローカルで作成されます。

ダイアグラム

ダイアグラムには、以下の重要な機能が追加されました。

  • テーブルのコメントが表示される
  • ダイアグラムにテーブルの色が表示される
  • エッジのマージをオフにできる

品質の改善

DBE-13057: ダイアグラムを描くアルゴリズムを改善し、オブジェクトの名前が関係線と重ならないようにしました。

DBE-13264: メモが保存時に失われることはなくなりました。

コードエディター

ローカル履歴の検索

ローカル履歴内で特定のリビジョンを探している場合は、テキスト検索が便利です!

ソースのローカル履歴

DataGrip は、オブジェクトのソースコードのローカルでの変更を追跡するようになりました。 プロシージャや関数を使用するときに重宝します。

オブジェクトのソースはファイルに保存されるため、外部での変更もすべてローカルでの変更として扱われます。 データベースを解析すると、このファイルは更新されます。

関数やプロシージャに加えられる変更内容を追跡するには、ローカル履歴のポップアップを使用します。 外部での変更は、2 つのイントロスペクションが実行される間に起るものであれば、1 つの変更として扱われます。

タブの長い名前が復活

タブの短い名前が一部のユーザーに好評でなかったことを受け、長い名前に戻せるオプションを導入しました。 タブの長い名前を好まれる方は、Shorten Tab Titles オプションからチェックを外してください。

選択範囲の縮小

Maximize Editor / Normalize Splits アクション

長い間、Hide All Tool Windows アクションを使用してきました (呼び出すときはタブをダブルクリックするか、Shift+Ctrl+F12 を押す)。 多くのユーザーは、それを Maximize Editor アクションとして扱い、またそれは同じ動作をしていました。

split メカニズムを導入した後、状況はさらに複雑化しました。 「このアクションは split タブを非表示にするべきかどうか」を検討した後、 以下の変更を加えました。

  • Hide All Tool Windows アクションを実行しても split タブは非表示にならない。
  • 新しい Maximize Editor / Normalize Splits アクションを実行すると、現在のタブは最大化されるが、ツールウィンドウは非表示にならない。

コード補完

表示する補完の範囲

コード補完の一覧に表示するオブジェクトを定義できるようになりました (スキーマスイッチャー (または検索パス) のオブジェクトのみ、現在のスコープのオブジェクト、またはすべてのスキーマのオブジェクト)。

  • Suggest only search path objects: スキーマスイッチャーで選択されるスキーマのオブジェクトのみが提案される。
  • Suggest objects from current scope (デフォルト): DataGrip が修飾せずに正しく解決できるオブジェクトでリストが作成される (スキーマスイッチャー、USE ステートメント、およびデフォルトスキーマの一連のオブジェクト)。
  • Suggest objects from all available schemas: リストはすべての使用できるスキーマのすべてのオブジェクトが含まれる。

これはスマート補完によって管理することもできます。 スマート補完は、補完ホットキー (通常 Ctrl+Space) を数回押すと呼び出されます。

  • 一回押した場合、または自動的に呼び出された場合: 上述のとおり。
  • 2 回 押した場合: イントロスペクションでオフになっているスキーマ以外のすべてのスキーマ。
  • 3 回押した場合: すべての使用できるスキーマとデータベースのオブジェクト。

フィールドと演算子の補完 MongoDB

MongoDB のコード補完でフィールドと演算子を使用できるようになりました。 詳しくは、こちらの記事をお読みください。

複数のデータベース間で類義語の補完 SQL Server

複数のデータベース間で使用される類義語のコード補完を使用できるようになりました。

INSERT 文の補完と計算列

計算列は INSERT 文を補完する際に考慮されますが、提案されるアイテムには含まれません。

品質の改善

DBE-10515DBE-2212: 現在のコンテキストのスキーマのオブジェクトにはコード補完の一覧の中で高い優先度が与えられます。

DBE-7781DBE-10650: 自動エイリアスは必要なときだけ表示されます。

DBE-12018: JOIN の補完におけるテーブルの修飾は期待どおりに機能しています。

DBE-12479: ORDER BY 句内の ASC/DESC の優先度をアップしました。

DBE-13341: GRANT/REVOKE 文における PostgreSQL の補完は期待どおりに機能しています。

コードハイライト

再帰 CTE のサポート Redshift

再帰共通テーブル式 (CTE) を使用するクエリは、適切にハイライトされるようになり、選択しなくても実行できるようになりました。

CTE サポートの改善 ClickHouse

CTE 名が AS キーワードの前に記述される共通テーブル式の構文がサポートされるようになりました。

品質の改善

DBE-3759DBE-13364DBE-13365: Inspections for aggregates がより正確に動作するようになりました。

DBE-10782: ClickHouse における COALESCE の Null 以外の引数を報告するインスペクションの誤検出によるアラートが出ないようにしました。

DBE-13188: Oracle PL/SQL におけるレコード型のフィールドが正しく解決されるようになりました。

DBE-10550: DB2 のテーブルエイリアスが正しく解決されるようになりました。

データベースエクスプローラー

関数とプロシージャに別のフォルダーを用意

データベースのエクスプローラー設定 (歯車アイコン) にある Separate Procedures and Function オプションをオンにすると、ゆぐに有効化されます。

SQL Server には、scalar 関数とテーブル関数に専用のノードが用意されています。 PostgreSQL には、トリガー関数用のノードが用意されています。

トリガー、キー、インデックスに別のノードを用意

新しいデータベースツリーのオプション Show Constraints and Triggers in the Schema を実行すると、データベースのエクスプローラーの中でトリガー、キー、インデックスのそれぞれに専用のノードが割り当てられます。

 

これが便利な理由

  • クイック検索を使って、1 つのスキーマ内にあるオブジェクトを見つけられる。
  • テーブルノードの下にある列を確認できる。 これをするには、Show Empty Groups オプションがオフになっていることを確認してください。

データベースオブジェクトの自然なソート順

データベースのエクスプローラー設定で Sort Alphabetically オプションをオフにすると、オブジェクトの自然なソートが適用されます。

こちらは、Sort Alphabetically がオフになっている場合。

こちらは、Sort Alphabetically がオフになっている場合。

そして、Sort Alphabetically がオンになっている場合。

イントロスペクション

ネイティブイントロスペクション CockroachDB

このリリースでは Cockroach DB が完全にサポートされます。 DataGrip は JDBC ベースのイントロスペクションではなく、ネイティブのイントロスペクションを使用するようになります。

 

JDBC ベースのイントロスペクションと比べて大幅に速度がアップします。 また、以前のバージョンでは、roledeftype、および check constraint のイントロスペクションは全く行えませんでした。 イントロスペクションの対象となったオブジェクトの完全な一覧には、databaseroleprivilegeschemasequencedeftypetableviewmat viewindexcolumn、および constraints が含まれます。 partitions のイントロスペクションが行われない問題は認識されています。

pg_catalog のバーチャル外部キー PostgreSQL

以前、当社はバーチャル外部キーを作成するメカニズムを発表しました。 今回はそのメカニズムを使って、バーチャル外部キー付きの pg_catalog をカバーしました。 これにより、以下の 2 点を改善しました。

1 点目: システムテーブルに対してクエリを実行する際に JOIN の補完を活用できる。

2 点目: システムテーブル内をデータによりナビゲートできる。

表領域 Oracle

表領域、データファイル、一時ファイルのサポートを追加しました。 これらは、イントロスペクションが行われるようになりました。

 

DDL の生成にも含まれます。

リンクサーバー SQL Server

これは現時点では完全なサポートではありません。リンクサーバーではオブジェクトのメタデータが使用できないためです。 リンクサーバーはデータベースのエクスプローラーに表示され、それらを作成するための DDL が生成されます。

データエディター

選択範囲の縮小

データエディターから使用できるコンテキストライブテンプレート

前のリリースに導入されたコンテキストライブテンプレートがデータエディターから使用できるようになりました。 テーブルを操作しているときに、そのテーブルに対してクエリを実行する場合は、SQL スクリプトのアクションを利用すれば、簡単に行えます。

追加ソートのオプション

最近、追加ソート用に Alt+Click を導入しましたが、 マウスクリックで操作したい方は、この動作をカスタマイズできます。

選択範囲の縮小

列の追加 / 削除 MongoDB

MongoDB のコレクションに列を追加できるようになりました。 このアクションにより、コレクションのあらゆるドキュメントに新しいフィールドを追加できます。

 

Delete column を実行すると、表示されているページのデータだけでなく、コレクション全体のデータが削除されます。

選択範囲の縮小

CSV ファイルに列を追加 / 列の名前を変更

UI データエディターを使用することにより、CSV ファイル内で列を追加・削除できるようになりました。

コンソールにクエリをコピー

データエディターで作業しているときは、WHERE フィールドと ORDER BY フィールドに複雑な句を使用する場合があるかもしれません。 結果的に生成されるクエリを引き続き使用する場合は、歯車アイコンの下にある新しいアクション Copy Query to Console をご利用ください。 クエリがデフォルトのコンソールに開かれます。

選択範囲の縮小

外部キーによるナビゲーションの First row オプションを廃止

スピーディにナビゲートできるよう、First row オプションを除去しました。 ポップアップは表示されず、すべての参照する行または参照される行を表示するテーブルに移動します。

外部キーによるナビゲーションにおける修飾

別のスキーマのオブジェクトにポイントする外部キーがあり、同オブジェクトが同じ名前を持つ場合は、外部キーナビゲーションの UI に修飾された名前が表示されます。

品質の改善

DBE-12545: ORDER BY フィールドのサイズが保存されるようになりました。

DBE-13055: タイムゾーン付きの値には常にタイムゾーンが表示されるようになりました。

DBE-9814: Oracle DATE 型の値は、時刻が設定されていなければ、時刻を表示しなくなりました。

DBE-12679: Oracle DATE フィールドによるフィルタリングを実行できるようになりました。

DBE-12716: DB2 binaryblobchar for bit data、および varchar for bit data フィールドによるフィルタリングを実行できるようになりました。

インポート/エクスポート

インポートの後のテーブルリンク

インポートが終了すると、通知に新しいテーブルへのリンクが表示されます。

品質の改善

DBE-13259: 数値以外の値が含まれている場合でも、数値フィールドのエクスポートは失敗しなくなりました。

DBE-11370DBE-13139DBE-12536: PostgreSQL、Redshift、Exasol、Hive、Clickhouse、DB2、HSQL でのインポートがよりすばやく実行されるようになりました。

ナビゲーション

ナビゲーションバーにある [Enter] キーの動作

ナビゲーションバーの動作がわかりやすくなりました ([Enter] キーは常にノードを拡張します)。

 

以前は、[Enter] キーを押すと、テーブルの場合はデータが、データソースの場合はコンソールが開いていました。

ナビゲーションバーでオブジェクトのノードを開くのではなく、オブジェクトからナビゲートする場合は、以下のナビゲーションショートカットが便利です。

  • DDL を開く場合: Ctrl+B
  • データを開く場合: F4
  • データベースツリー内で選択する場合: Alt+Shift+B

Go To ポップアップのシグネチャー

関数やプロシージャ、演算子を検索する場合、DataGrip では Go To ウィンドウにシグネチャーが表示されるようになりました。 これは、オーバーロードを多用する場合に便利です。

一般

ローカライズされた UI

本バージョンより、DataGrip の UI が中国語韓国語、および日本語に完全にローカライズされています。 ローカライゼーションは、DataGrip へのインストールが簡単なバンドルされていない言語パックプラグインとして使用していただけます。 すでに 150 万人以上のユーザーが言語パックの一部ローカライズされた EAP バージョンを使用しています。 今回のリリースからは完全なローカライズ環境をご利用いただけます!

プロジェクトの新しい場所

DataGrip では、プロジェクトがデフォルトで他のすべての IntelliJ ベースの IDE と同じ場所に配置されるようになりました (DataGripProjects サブフォルダー内にあるユーザーのホームフォルダー)。

 

DataGrip のプロジェクトは、データソース、コンソール、スクラッチファイル、および添付されるフォルダーを集めた複合体です。 以前は、構成フォルダーに保管されていたため、IDE を更新するたびに、プロジェクトは IDE 設定と一緒にコピーされていました。

これが原因で、データソースの一覧が空になってしまう場合がありました。 この問題は解決され、DataGrip は他の IDE との一貫性を維持しながら動作するようになりました。

プロジェクトを移行する際に起こるエラーが原因で、最初の EAP ビルドを使用していたユーザーの方は、お気に入りやブックマーク、実行構成、バーチャル外部キーに関するデータを失っていた可能性があります。 これらを復元するには、もう一度以前のバージョンから移行し直してください。 詳細は、DBE-13410 を参照してください。

設定

[戻る] ボタンと [進む] ボタン

これらのボタンを使用すると、Settings ウィンドウ内を簡単にかつスムーズに移動できます。

高度な設定

Advanced SettingsPreferences/Settings に新しいノードとして追加しました。 各ユースケースを対象としたオプションが利便性を考慮して IDE ツール別にグループ化されています。 設定の多くが Registry から移行されていますが、新しい設定も一部含まれています。

重要な設定

  • Distraction-free モードで左側のマージン調整。
  • Comment with Line Comment アクションを使用した後にキャレットを下に移動させる設定。
  • タブをダブルクリックしたときの動作をカスタマイズする設定。

Show scratch files アクション

Find Action (Cmd+Shift+A) によりアクセスできる新しい Show Scratch Files アクションを実行すると、スニペット付きのスクラッチの一覧がポップアップに表示されます。 スピード検索と削除機能付きの Recent Locations ポップアップと同じ UI が設けられています。

Services ツールウィンドウポップアップの管理

クエリに対してデータが返されないときは、すでに非表示となっている Services ツールウィンドウをわざわざ表示する必要はありません。 今回のリリースより、Services ツールウィンドウを表示させる操作を定義できるようになりました。

品質の改善

DBE-12079: PostgreSQL イントロスペクターを改良しました。 ユーザーの皆さまにとっては、オブジェクトが重複しなくなったことが新しいイントロスペクターの一番の効果だと思います!

DBE-13164: バーチャル外部キーを使いながら JOIN 文を入力するときにフリーズしなくなりました。

DBE-194931: 空のスクラッチファイルは自動的に除去されるようになりました。