DataGrip 2022.1 の新機能

2022 年初のメジャーアップデートである DataGrip 2022.1 がリリースされました。 ユーザビリティの向上につながるさまざまな強化機能と改善が満載です。 では、その内容を見てみましょう。

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

複数オブジェクトのコピー

これは紛れもなく、このリリースのハイライトです。 複数のテーブルを選択して、別のスキーマにコピーできるようになりました。

コピーするテーブルを選択して F5 を押すと、エクスポートダイアログが開きます。

単一のテーブルをエクスポートする場合と同様に、列をマッピングできるだけでなく、新しいテーブルの DDL 表示や変更を行うことができます。

 

ご存知かもしれませんが、DataGrip では cross-DBMS(DBMSをまたぐ) エクスポートがサポートされているため、ターゲットスキーマをプロジェクト内のあらゆるデータベースに属させることができます。 PostgreSQL データベースから SQL Server へすべてのテーブルを簡単にコピーできます。

また、新しいテーブルの代わりに既存のテーブルをターゲットに指定することも可能です。 この場合、ソーステーブルのデータがターゲットテーブルに追加されます。

品質の改善

  • DBE-5200: Edit as table(テーブルとして編集)アクションが、ソースファイルの行の列数が異なる場合でも正しく機能するようになりました。
  • DBE-14541: 1 列のみの CSV ファイルに行を正しく追加できるようになりました。
  • DBE-14735: タイムスタンプを含むテーブルの同時エクスポートに関するバグが修正されました。

データエディター

バイナリセルのデフォルト表示形式

Automatically detect binary values(バイナリ値を自動的に検出)という新しい設定を追加しました。UUIDText(テキスト)の 2 つのオプションを使用できます。 UUID の検出を無効にできるようになりました。

クエリ結果内のフィールド編集 MongoDB

MongoDB コレクションい対するクエリの結果をコンソールで直接編集できるようになりました。 これは、.find() の後に sort()limit() などのメソッドが続く場合でも機能します。

バッチモードでのエディター内結果のサポート SQL Server

Transact SQL で複数のステートメントを同時に実行する場合、バッチモードで実行されます。 以前はこれが原因で各クエリのエディター内結果を表示することが困難でしたが、DataGrip がこの状況に対処できるようになりました。

また、バッチモードでクエリを実行する際に、DataGrip がすべての SQLCMD ステートメントを除去するようになりました(詳細は DBE-14920 をご覧ください)。

品質の改善

  • DBE-8561: 日付ピッカーの外をクリックしても、変更内容が失われなくなりました。
  • DBE-9632: Enter キーで、日付ピッカーの値を保存できるようになりました。
  • DBE-11706: 日付ピッカーで Tab キーを使用できるようになりました。
  • DBE-9974: ‘View as Table’(テーブルとして表示)から .csv ファイルの関連付けを解除できるようになりました。
  • DBE-13040: 非表示の列をより簡単に表示できるようになりました。列リストで非表示の列をクリックするだけです。
  • DBE-14516: 完全にロードされた値にはセルサイズのインジケーターが表示されなくなりました。インジケーターに等幅フォントが使用されるようになったため、内容がきちんと整列されるようになりました。
  • DBE-14670: Geo ビューアーが正しく同期するようになりました。
  • DBE-10851: ツリービューモードでフォント関連の問題を修正しました。
  • DBE-9710: Oracle タイムスタンプ値でタイムゾーンが考慮されるようになりました。
  • DBE-14852: MariaDB、Aurora MySQL データエディターで空の日付が正しく表示されるようになりました。
  • DBE-15009: Sybase ASE 結果ビューにすべての列が表示されるようになりました。
  • DBE-15031: Snowflake DEFAULT 値が設定されたテーブルに対する UPDATE クエリが正しく生成されるようになりました。
  • 列のコンテキストメニューが転置表示でも表示されるようになりました。

イントロスペクション

イントロスペクションのセッションテンプレート

イントロスペクションには、特別なユーザーに付与される特別な権限が必要となる場合があります。 イントロスペクションで専用の資格情報を使用できるようになりました。 これを行うには、先に Options(オプション)タブで専用のセッションテンプレートを作成してください。

 

次に、Introspection(イントロスペクション)セクションの Use session template(セッションテンプレートを使用)フィールドでこのイントロスペクション用テンプレートの名前を選択して使用します。

断片的イントロスペクション Oracle

データベース内にある 1 つのオブジェクトをその他すべてのオブジェクトとは個別に更新できるようになりました。

 

これは、特に新しいイントロスペクションレベル機能を使用している場合に役立ちます。 1 つのオブジェクトのみのソースコードを表示する必要がある場合は、データベースエクスプローラーの Refresh Object(オブジェクトのリフレッシュ)ボタンをクリックするだけで簡単に更新できます。

また、オブジェクトのソースエディターを開くと、DataGrip が選択されたオブジェクトをイントロスペクトするオプションを表示します。

バージョン 2.x のサポート H2

H2 バージョン 2.x のサポートを追加しました。 変更内容は以下の通りです。

  • DataGrip が型を正しくイントロスペクトするようになりました。 ほとんどの問題は、ARRAYROW の複合型に関連していました。
  • 組み込みシーケンスのある列(auto_incrementgenerated always as identity など)が正しくイントロスペクトされるようになりました。
  • チェック制約と外部キーが失われることがなくなりました。
  • ビュー、トリガー、ルーチンにソースがロードされるようになりました。
  • ドメインのチェック述語に関する情報が表示されるようになりました。

基本サポート対象に追加 YugabyteDB

YugabyteDB 用 JDBC ドライバーの配布を開始しました。ワンクリックで YugabyteDB データソースを作成できるようになっています。

品質の改善

  • DBE-13521: ClickHouse マテリアライズドビューのソースコードがイントロスペクトされるようになりました。

コード生成

新バージョンの Modify Table(テーブルの変更)

Modify Table(テーブルの変更)ウィンドウに若干の改良を加えています。 新しいバージョンの UI はイントロスペクションのプロパティに基づいて完全に生成されます。これにより、データベース固有のさまざまなパラメーターを設定できるようになりました。

現時点では、この更新のごく一部のみをリリースしていますが、それでも十分に役立ちます。 新しい Modify Table(テーブルの変更)ウィンドウでは、以前では不可能であった列チェック制約の追加と編集を行えます! また、DataGrip のイントロスペクション対象になっているテーブルと列のすべてのプロパティを編集できるようになりました。

多くのユーザーがストレスを感じていた列の折りたたみや展開がなくなるため、この新しい列の UI は特に気に入っていただけると思っています。

品質の改善

  • DBE-15000DBE-15001: PostgreSQL 権限を編集する際に、正しいコードが生成されるようになりました。
  • DBE-5136: SQL Server Modify Table(テーブルの変更)を使用して制約のある列を除去する際に、正しいスクリプトが得られるようになりました。
  • DBE-14760: MySQL Modify Table(テーブルの変更)ウィンドウで関数インデックスが破損しなくなりました。
  • DBE-2827: MySQL AUTO_INCREMENT 属性を変更できるようになりました。
  • DBE-14801: Snowflake 生成される DDL スクリプトに、デフォルトのシーケンスを作成するステートメントが含まれるようになりました。

データベース差分ビューアー

ソースとターゲットの入れ替え

オブジェクトまたはスキーマを比較する際に、ソースとターゲットを入れ替えられるボタンを導入しました。

品質の改善

最近導入されたデータベース差分ビューアーウィンドウの品質改善は継続的に行われています。 一部の修正はバージョン 2021.3 でリリースされていましたが、以下を含むその他の修正は 2022.1 で新たに提供されたものです。

  • DBE-15063: 文字列比較用の新しいスマートアルゴリズムによって、差分ウィンドウでキーワードの大文字と小文字が区別されていた問題が解決しました。
  • DBE-14686: Reformat generated code(生成コードを整形)オプションが考慮されるようになりました。
  • DBE-14782: 差分ビューアーが名前が異なっていても同じ可能性があるオブジェクトを検出できるようになりました。
  • DBE-14431: Oracle Array index out of bounds(配列インデックスが範囲外)の例外が発生しなくなりました。

コードエディター

Convert To Subquery(サブクエリに変換)インテンション

Convert To Subquery(サブクエリに変換)という新しい便利なインテンションを導入しました。 サブクエリの変換に Surround Live Template(囲みライブテンプレート)を使用する必要がなくなりました。 実際、クエリを選択する必要すらありません。 Alt+Enter | Convert To Subquery(サブクエリに変換)を押すだけです。

自動インデントアルゴリズムの改善

自動インデントアルゴリズムを改善しました。 この件に関する 2 つのチケット(DBE-14825DBE-8742)はありましたが、それらにとどまらず、想定されるすべての状況を考慮し、ほぼすべての場所で自動インデントが正しく機能するようになっています。

マルチ範囲型のサポート PostgreSQL

PostgreSQL 14 で導入されたマルチ範囲型に対して、DataGrip は組み込み型のサポートを追加しました。

将来的には、カスタムのマルチ範囲型がサポートされるようになります。

品質の改善

  • DBE-11683: PostgreSQL ROWS FROM 構文のサポートを追加しました。
  • DBE-11868: PostgreSQL 未解決の共通テーブル式となっていた問題が修正されました。
  • DBE-15061: PostgreSQL JSONB 構文のインジェクションが不正となっていた問題が修正されました。
  • DBE-14888: PostgreSQL BEGIN ATOMIC のサポートが追加されました。
  • DBE-15052: Redshift ALTER MATERIALIZED VIEW のサポートが追加されました。
  • DBE-11830: Oracle USING INDEX ENABLE 構文のサポートが追加されました。
  • DBE-6548: Oracle CREATE MATERIALIZED VIEW LOG ステートメントでの列の解決が修正されました。
  • DBE-15095: Snowflake CREATE STAGE ステートメントで WITH TAG オプションのサポートが追加されました。
  • DBE-14793: Snowflake EXECUTE ステートメントのサポートが追加されました。
  • DBE-11247: Snowflake ステートメント内で JSON が正しくハイライトされるようになりました。
  • DBE-14843: BigQuery QUALIFY がサポートされました。
  • DBE-13995: BigQuery UNNEST 列がサポートされました。
  • DBE-14504: ClickHouse マップリテラルがサポートされました。
  • DBE-15013: ClickHouse UNION DISTINCT がサポートされました。

クエリの実行

実行中ステートメントのキャンセル

Cancel statement(ステートメントをキャンセル)ボタンを複数回クリックした場合、これまではクエリが終了したかのように見えていても、実際にはデータベース内でリクエストが実行され続けていました。

この動作を実現するロジックに若干の不備があったためです。 DataGrip は最初のクリックでデータベースにキャンセルリクエストを送信していましたが、その次のクリックでは JDBC ドライバーのプロセスをキャンセルしてデータソースへのすべての接続を終了していました(この動作をデータソースの解放と呼ぶことにします)。 その結果、DataGrip が 2 つ目のキャンセルリクエストに対してエラーを受け取っていました。キャンセルが実際に完了していたからではなく、接続が失われていたことが原因です。

このキャンセルロジックをより分かりやすく改善しました。 これにより、リクエストがキャンセルされていることがより明確になればと願っています。

  • リクエストがキャンセルされている過程では、ガターの進捗インジケーターに赤い四角が表示されます。
  • キャンセルの進捗バーが表示されます。 データソースとセッションが識別されます。

複数のプロセスが同時に発生して場合はデータソースを解放すると危険な可能性があるため、警告を表示せずに解放しないようにしました。 そのため、Cancel(キャンセル)アイコンを 2 回目にクリックすると、DataGrip からリモートプロセスを本当に停止するのか、待機し続けるのかを確認されます。 データソースを解放するように選択した場合、クエリは DataGrip では停止しますが、データベースでは引き続き実行されます。

キャンセルのアイドル状態が 10 秒間続くと、データソースを解放するオプションが提示されます。

クエリがキャンセルされると、「禁止」マークに似たガターアイコンがその左に表示されます。

接続のキャンセル

接続を作成中にリクエストを中止しようとした場合、これまではデータソースが解除されていました。

このリリースでは、リクエストの実行だけでなく、接続の作成も中断できるようになりました。 これは、コンソールで一番最初の接続を作成するクエリに特に関連しています。

データソースを解放せずに接続を作成するプロセスを停止できるようになりました。接続が作成されている過程で Cancel(キャンセル)ボタンをクリックすると、接続の作成が停止され、「接続がキャンセルされました」というメッセージが表示されます。

クエリコンソールのクエリ以外にも関連性のある機能です。 たとえば、イントロスペクションを開始する前に接続を作成する場合、イントロスペクションを中断すると、データソースを解放せずに接続の作成がキャンセルされます。

IDE 全般

設定の改良

Database(データベース)セクションの Preferences(環境設定)設定の構造は、DataGrip の最初のバージョンから変更されていませんでした。 そこで、このセクションの構造を更新することで、ユーザビリティを向上させることにしました。 次のように改良しています。

General(全般)セクションの Track databases/schemas creation and deletion(データベース/スキーマの作成と削除を追跡する)設定を Data Source Properties(データソースのプロパティ)| Options(オプション)に移動し、特定のデータソースを参照するようにしました。 この設定は、クエリコンソールでスキーマを作成または削除した後にスキーマリストを更新する必要があるかどうかを決めるものです。

他の設定は全般に残っていますが、より適切なセクションに配置するようにしました。

このアップデートの一環で、以下の設定がデフォルト値にリセットされますのでご注意ください。

  • Data Source properties(データソースのプロパティ)| Track databases/schemas creation and deletion(データベース/スキーマの作成と削除を追跡する)– True
  • Editor(エディター)| General(全般)| Editor Tabs(エディタータブ)| Database(データベース)| Always show qualified names for database objects in tab titles(タブのタイトルにデータベースオブジェクトの修飾名を常に表示する)– False
  • Editor(エディター)| General(全般)| Editor Tabs(エディタータブ)| Database(データベース)| Shorten datasource and object names in tab titles(タブのタイトルでデータソースとオブジェクト名を短縮する)– True

タブの均等分割

作業スペースをエディターの同じ幅のタブに分散できるようになりました。 この設定を行うには、Settings(設定)/ Preferences(環境設定)| Advanced Settings(高度な設定)| Editor Tabs(エディタータブ)| Equalize proportions in nested splits(ネストした分割の比率を揃える)に移動します。

UML ダイアグラムを別のフォーマットにエクスポート

ダイアグラムを yEd の .graphml、JGraph の .drawio、Graphviz の .dot、Graphviz の位置情報付きの .dot、Mermaid の .md、Plantuml、および IDEA の .uml ファイルとしてエクスポートすることが可能になり、サードパーティツールとの互換性が確保されました。

品質の改善

  • DBE-15043: ブックマークのナビゲーションがデータベースエクスプローラーの項目と同じように動作するようになりました。
  • DEA-129631: 少数指定のフォントサイズがサポートされました。