今年初のメジャーリリースであり、DataGrip の歴史上最も注目に値するリリースとなる可能性のある 2021.1 バージョンをご紹介します。 バージョン 2021.1 が皆さんの技術的課題や不便をより多く解決できること、そして、新機能を気に入ってもらえることを期待しています。 それでは始めましょう!
この UI は、PostgreSQL / Redshift / Greenplum / MySQL / MariaDB / DB2 / SQL Server / Sybase に対応しています。
オブジェクトを変更する際に権限を編集するための UI を追加しました。
データベースエクスプローラーのユーザーに対して Cmd/Ctrl+F6 で呼び出せる Modify user(ユーザーの変更)ウィンドウに、オブジェクトに対する権限を付与するための UI が実装されました。
これは、単純なステートメントをデータベースエクスプローラーから直接生成できるソリューションです。 一般的な Live Templates(ライブテンプレート)は、単純なクエリをすばやく記述する必要のあるさまざまなケースに対応しています。 しかし、JetBrains はデータベースエクスプローラーを使用している時点ですでに目的のオブジェクトに注目している場合があることを理解しているため、対象のオブジェクトから単純なクエリを取得できる便利な仕組みを用意しています。
また、この仕組みは他の多くのツールも反復作業を削減するために利用しており、多くのユーザーにとってなじみ深いものとなっています。
こちらの短い動画で実際の動作を確認できます。
このリストにある各コードスニペットは実際にはライブテンプレートですが、選択したオブジェクトのコンテキストで生成できる特殊なものです。 例えば、「Select first N rows from a table」(テーブルから最初の N 行を選択)テンプレートを見てみましょう。
ライブテンプレートの設定ページを開き、目的のテンプレートを見つけます。
Select first N rows from a table は一般的なテンプレートのように見えます(実際、同様の使い方ができます)。 この特殊な構文をすべてのデータベースで使用することはできないため、専用のダイアレクトがテンプレートに設定されています。 主な違いは、特殊な式 dbObjectName を $table$ 変数に使用することで、このテンプレートをデータベースエクスプローラーで使用できるようにしていることです。
また、独自テンプレートの追加や既存テンプレートの編集もできます。
Settings/Preferences | Database | General では、スクリプトの生成先を現在使用中のコンソールにするか、新規コンソールにするかを選択できます。
このバージョンでは、MongoDB の操作に必要不可欠である MongoDB コレクションのデータを編集する機能を追加しました。 ステートメントのプレビューも使用できます。
より柔軟な編集を行えるよう、UI からフィールドの型を変更する機能を導入しています。 この機能は、フィールドのコンテキストメニューか、値エディターのいずれかで使用できます。
データのソート処理を改善しました。
ORDER BY
フィールドは、WHERE
フィールド(以前は フィルター と呼ばれていたもの)と同様の動きをします。使用する句を入力して、それをグリッドのクエリに適用します。 クライアント側でソート処理を使用したい場合は(この場合、DataGrip はクエリを再実行しませんが、代わりに現在のページ内のデータをソートします)、Sort via ORDER BY(ORDER BY でソート)のチェックを外してください。
数値型の主キーを基準にした定義済みの条件を使用してテーブルを開くこともできます。 この設定は、Settings/Preferences | Database | Data Views にあります。
データエディターのツールバーを改修しました。 今後、自動トランザクションモードでは Roll-back(ロールバック)および Commit(コミット)ボタンは表示されません。代わりに、Revert changes(変更を元に戻す)および Find(検索)の 2 つのボタンが新たに追加されています。
Settings/Preferences | Database | Data Views に、単一行の結果セットを常に転置するためのオプションが追加されています。
ナビゲーションを単純化し、次の設定を廃止しました。
この設定を今まで使用したことがなく、デフォルトでチェックボックスをオンにしていた方にとっての変化は次のとおりです。2021.1 では、SQL のオブジェクトに対して Go to declaration(宣言に移動、Ctrl/Cmd+B)を呼び出すと、データベースツリーではなく DDL にジャンプするようになりました。
また、Select in database tree(データベースツリーで選択)アクションのショートカットを追加しました(Windows/Linux 用は Alt+Shift+B、macOS 用は Opt+Shift+B)。
この変更は主にロジックをより単純明快にし、どの操作でも期待どおりの場所に正確に遷移できるようにすることを目的に行われました。
まとめると今回のバージョン以降、オブジェクトにカーソルを合わせた状態で次の操作を実行できます。
なお、この変更によって、これまで使い慣れた操作が利用できなくなる可能性があるため、以前の操作感を維持できる方法を用意しています。 いくつかのヒントをご紹介します。
database.legacy.navigate.to.code.from.tree
の値を変更することで、この動作を復元することができます。 当社が把握しているデータによると、このようなフローで作業しているユーザーはごく少数です。 また、オブジェクトの DDL を開くショートカットを使用することをお勧めします。 この新しいフローで対応できないユースケースがある場合は、お知らせください。
Azure Active Directory の双方向認証がサポートされています。 この認証を有効にすると、ブラウザーを自動的に開いてログインできます。
このバージョンから、DataGrip のユーザーは Redshift 2.x の JDBC ドライバーを使用できるようになりました。 最も重要な機能強化は、クエリのキャンセル機能です。
Google BigQuery ダイアレクトのサポートは、旧リリースで追加されていました。 このリリースでは、このサポートを拡張しました。その結果、データベースのイントロスペクションとコード生成が適切に動作するようになり、JDBC ドライバーの機能に依存しなくなりました。
CockroachDB スクリプトの編集や同データベースの SQL クエリを記述すると、コードが適切にハイライトされ、クエリを実行する前にエラーが表示されるようになりました。 この対応は、今後のリリースで CockroachDB の完全サポートを行うための最初の一歩となるものです。
接続ウィンドウを改修し、よりわかりやすくしました。
URL フィールドを展開できるようになったため、長い URL を楽に扱えるようになりました。
データソースのコピーと貼り付けの機能は、かなり前に導入されていました。 しかし、2021.1 からは世界一有名なショートカット(Ctrl/Cmd+C/V/X)でデータソースのコピー、切り取り、貼り付けを行えるようになりました。
データベースエクスプローラーのデフォルトレイアウトを変更し、重要でないオブジェクトを専用ノードの下に表示するようにしました。 ユーザーはテーブル、ビュー、ルーチンの操作にほとんどの時間を費やしていますが、ユーザー、ロール、表領域、外部データラッパー、その他多くのオブジェクトの表示はあまり優先度が高くありません。 そのため、これらの従属的なオブジェクトを Server Objects(サーバーオブジェクト)および Database Objects(データベースオブジェクト)の 2 つのノードの下に隠しました。
旧レイアウトに戻したい場合は、歯車アイコンの下にある設定で Group Database and Schemas(データベースとスキーマをグループ化)を選択するだけです。
Oracle を使用している場合、以下のような自動生成されたオブジェクトをツリーに表示するかどうかを切り替えるオプションが表示されます。
SQLite で関数、モジュール、仮想列に対してイントロスペクションを実行できます。
2021.1 からはサポート対象外のデータベースのデータソースをより簡単に追加できるようになりました。 現在、AWS Athena / Informix / Presto / SAP HANA / Google Cloud Spanner その他に対応した JDBC ドライバーを提供しています。 これらのデータベースは、データベースリストの Other(その他)セクションで確認できます。
以下の改善を追加で行いました。
これらのデータベースに対するサポートには制限があることにご注意ください。 サポートの可否は、主に JDBC ドライバーの機能と DataGrip の SQL エディターによる SQL:2016 ダイアレクトのサポート状況に依存しています。
サポート対象外データベースを使用するための新しい設定を導入しました。 これらのデータベースを DataGrip で操作する際は、SQL:2016 ダイアレクトか Generic ダイアレクトを使用する必要があります。 Generic は SQL:2016 とほぼ同じですが、DataGrip が検出したエラーをハイライトしないという点だけが異なります。
設定にアクセスするには、Settings/Preferences | Database | General | Split a script for execution in Generic and ANSI SQL dialects(Generic/ANSI SQL のダイアレクトで実行するためのスクリプトを分割)を開いてください。 以下の値を選択できます。
以下のような問題を解決しています。
あいまいな列名を報告するインスペクションが改善され、共通テーブル式(CTE)内のカラムを考慮するようになりました。
システム関数とプロシージャを修飾子なしで使用している場合にエラーとしてハイライトしないようになりました。 ナビゲーションと補完がこれらに対しても機能するようになりました。
Thanks to the IntelliJ Platform, DataGrip now has support for the newline-delimited JSON Lines format used for working with structured data and logs. IDE は .jsonl、.jslines、.ldjson、.ndjson のファイルタイプを認識します。
新しいタイポグラフィ設定を使用してフォントスタイルを微調整できます。 バージョン 2021.1 では、主なフォントスタイルと太字のフォントスタイルの太さを Settings/Preferences | Editor | Fonts で選択できます。
完全にロードされていないバイナリデータをコピーすると、次のような通知が表示されます。
データを切り捨てたくない場合は、Settings/Preferences | Database | Data Views | Maximum number of bytes loaded per value で値を増やしてください。
Excel にエクスポートすると、クエリが出力ファイル内の独立したシートに埋め込まれます。
以下のように、CSV ファイルをインポートする際には最初の行がヘッダーであることを明確にするオプションをコンテキストメニューから使用できます。
フォルダーをドラッグアンドドロップでプロジェクトに接続できるようになりました。
エディターを縦に分割するタブが複数開いている場合、これらのタブをダブルクリックするとエディターのウィンドウを各タブに対して最大化できます。 ウィンドウをもう一度ダブルクリックすると、元のサイズに戻ります。
少し前にタブの名前が短縮されました。 それでは都合の悪いユーザーもいますので、お好みの設定を行えるようにしました。