2022 年初のメジャーアップデートである DataGrip 2022.1 がリリースされました。 ユーザビリティの向上につながるさまざまな強化機能と改善が満載です。 では、その内容を見てみましょう。
これは紛れもなく、このリリースのハイライトです。 複数のテーブルを選択して、別のスキーマにコピーできるようになりました。
コピーするテーブルを選択して F5 を押すと、エクスポートダイアログが開きます。
単一のテーブルをエクスポートする場合と同様に、列をマッピングできるだけでなく、新しいテーブルの DDL 表示や変更を行うことができます。
ご存知かもしれませんが、DataGrip では cross-DBMS(DBMSをまたぐ) エクスポートがサポートされているため、ターゲットスキーマをプロジェクト内のあらゆるデータベースに属させることができます。 PostgreSQL データベースから SQL Server へすべてのテーブルを簡単にコピーできます。
また、新しいテーブルの代わりに既存のテーブルをターゲットに指定することも可能です。 この場合、ソーステーブルのデータがターゲットテーブルに追加されます。
Automatically detect binary values(バイナリ値を自動的に検出)という新しい設定を追加しました。UUID と Text(テキスト)の 2 つのオプションを使用できます。 UUID の検出を無効にできるようになりました。
MongoDB コレクションい対するクエリの結果をコンソールで直接編集できるようになりました。 これは、.find() の後に sort() や limit() などのメソッドが続く場合でも機能します。
Transact SQL で複数のステートメントを同時に実行する場合、バッチモードで実行されます。 以前はこれが原因で各クエリのエディター内結果を表示することが困難でしたが、DataGrip がこの状況に対処できるようになりました。
また、バッチモードでクエリを実行する際に、DataGrip がすべての SQLCMD ステートメントを除去するようになりました(詳細は DBE-14920 をご覧ください)。
DEFAULT
値が設定されたテーブルに対する UPDATE クエリが正しく生成されるようになりました。 イントロスペクションには、特別なユーザーに付与される特別な権限が必要となる場合があります。 イントロスペクションで専用の資格情報を使用できるようになりました。 これを行うには、先に Options(オプション)タブで専用のセッションテンプレートを作成してください。
次に、Introspection(イントロスペクション)セクションの Use session template(セッションテンプレートを使用)フィールドでこのイントロスペクション用テンプレートの名前を選択して使用します。
データベース内にある 1 つのオブジェクトをその他すべてのオブジェクトとは個別に更新できるようになりました。
これは、特に新しいイントロスペクションレベル機能を使用している場合に役立ちます。 1 つのオブジェクトのみのソースコードを表示する必要がある場合は、データベースエクスプローラーの Refresh Object(オブジェクトのリフレッシュ)ボタンをクリックするだけで簡単に更新できます。
また、オブジェクトのソースエディターを開くと、DataGrip が選択されたオブジェクトをイントロスペクトするオプションを表示します。
H2 バージョン 2.x のサポートを追加しました。 変更内容は以下の通りです。
ARRAY
と ROW
の複合型に関連していました。 YugabyteDB 用 JDBC ドライバーの配布を開始しました。ワンクリックで YugabyteDB データソースを作成できるようになっています。
Modify Table(テーブルの変更)ウィンドウに若干の改良を加えています。 新しいバージョンの UI はイントロスペクションのプロパティに基づいて完全に生成されます。これにより、データベース固有のさまざまなパラメーターを設定できるようになりました。
現時点では、この更新のごく一部のみをリリースしていますが、それでも十分に役立ちます。 新しい Modify Table(テーブルの変更)ウィンドウでは、以前では不可能であった列チェック制約の追加と編集を行えます! また、DataGrip のイントロスペクション対象になっているテーブルと列のすべてのプロパティを編集できるようになりました。
多くのユーザーがストレスを感じていた列の折りたたみや展開がなくなるため、この新しい列の UI は特に気に入っていただけると思っています。
AUTO_INCREMENT
属性を変更できるようになりました。 オブジェクトまたはスキーマを比較する際に、ソースとターゲットを入れ替えられるボタンを導入しました。
最近導入されたデータベース差分ビューアーウィンドウの品質改善は継続的に行われています。 一部の修正はバージョン 2021.3 でリリースされていましたが、以下を含むその他の修正は 2022.1 で新たに提供されたものです。
Convert To Subquery(サブクエリに変換)という新しい便利なインテンションを導入しました。 サブクエリの変換に Surround Live Template(囲みライブテンプレート)を使用する必要がなくなりました。 実際、クエリを選択する必要すらありません。 Alt+Enter | Convert To Subquery(サブクエリに変換)を押すだけです。
PostgreSQL 14 で導入されたマルチ範囲型に対して、DataGrip は組み込み型のサポートを追加しました。
将来的には、カスタムのマルチ範囲型がサポートされるようになります。
ROWS FROM
構文のサポートを追加しました。 JSONB
構文のインジェクションが不正となっていた問題が修正されました。 BEGIN ATOMIC
のサポートが追加されました。 ALTER MATERIALIZED VIEW
のサポートが追加されました。 USING INDEX ENABLE
構文のサポートが追加されました。 CREATE MATERIALIZED VIEW LOG
ステートメントでの列の解決が修正されました。 CREATE STAGE
ステートメントで WITH TAG
オプションのサポートが追加されました。 EXECUTE
ステートメントのサポートが追加されました。 JSON
が正しくハイライトされるようになりました。 QUALIFY
がサポートされました。 UNNEST
列がサポートされました。 UNION DISTINCT
がサポートされました。 Cancel statement(ステートメントをキャンセル)ボタンを複数回クリックした場合、これまではクエリが終了したかのように見えていても、実際にはデータベース内でリクエストが実行され続けていました。
この動作を実現するロジックに若干の不備があったためです。 DataGrip は最初のクリックでデータベースにキャンセルリクエストを送信していましたが、その次のクリックでは JDBC ドライバーのプロセスをキャンセルしてデータソースへのすべての接続を終了していました(この動作をデータソースの解放と呼ぶことにします)。 その結果、DataGrip が 2 つ目のキャンセルリクエストに対してエラーを受け取っていました。キャンセルが実際に完了していたからではなく、接続が失われていたことが原因です。
このキャンセルロジックをより分かりやすく改善しました。 これにより、リクエストがキャンセルされていることがより明確になればと願っています。
複数のプロセスが同時に発生して場合はデータソースを解放すると危険な可能性があるため、警告を表示せずに解放しないようにしました。 そのため、Cancel(キャンセル)アイコンを 2 回目にクリックすると、DataGrip からリモートプロセスを本当に停止するのか、待機し続けるのかを確認されます。 データソースを解放するように選択した場合、クエリは DataGrip では停止しますが、データベースでは引き続き実行されます。
キャンセルのアイドル状態が 10 秒間続くと、データソースを解放するオプションが提示されます。
クエリがキャンセルされると、「禁止」マークに似たガターアイコンがその左に表示されます。
接続を作成中にリクエストを中止しようとした場合、これまではデータソースが解除されていました。
このリリースでは、リクエストの実行だけでなく、接続の作成も中断できるようになりました。 これは、コンソールで一番最初の接続を作成するクエリに特に関連しています。
データソースを解放せずに接続を作成するプロセスを停止できるようになりました。接続が作成されている過程で Cancel(キャンセル)ボタンをクリックすると、接続の作成が停止され、「接続がキャンセルされました」というメッセージが表示されます。
クエリコンソールのクエリ以外にも関連性のある機能です。 たとえば、イントロスペクションを開始する前に接続を作成する場合、イントロスペクションを中断すると、データソースを解放せずに接続の作成がキャンセルされます。
Database(データベース)セクションの Preferences(環境設定)設定の構造は、DataGrip の最初のバージョンから変更されていませんでした。 そこで、このセクションの構造を更新することで、ユーザビリティを向上させることにしました。 次のように改良しています。
General(全般)セクションの Track databases/schemas creation and deletion(データベース/スキーマの作成と削除を追跡する)設定を Data Source Properties(データソースのプロパティ)| Options(オプション)に移動し、特定のデータソースを参照するようにしました。 この設定は、クエリコンソールでスキーマを作成または削除した後にスキーマリストを更新する必要があるかどうかを決めるものです。
他の設定は全般に残っていますが、より適切なセクションに配置するようにしました。
このアップデートの一環で、以下の設定がデフォルト値にリセットされますのでご注意ください。
作業スペースをエディターの同じ幅のタブに分散できるようになりました。 この設定を行うには、Settings(設定)/ Preferences(環境設定)| Advanced Settings(高度な設定)| Editor Tabs(エディタータブ)| Equalize proportions in nested splits(ネストした分割の比率を揃える)に移動します。
ダイアグラムを yEd の .graphml、JGraph の .drawio、Graphviz の .dot、Graphviz の位置情報付きの .dot、Mermaid の .md、Plantuml、および IDEA の .uml ファイルとしてエクスポートすることが可能になり、サードパーティツールとの互換性が確保されました。