メタデータとイントロスペクション
メタデータには、データベースオブジェクト、その構造、データベースオブジェクトのソースコードなどに関する情報が含まれます。 RustRover はこの情報を使用して、 データベース ツールウィンドウ内にオブジェクトを表示し、その DDL を表示し、補完時に候補として提案し、他のコーディング支援、ナビゲーション、検索機能にも利用します。
RustRover では、データベースのメタデータを取得するには 2 つの方法があります: ミニカタログと イントロスペクションです。
- ミニカタログ
システムスキーマのミニカタログを使用すると、システムスキーマのメタデータが事前にイントロスペクトされ、IDE 自体に提供されます。 これにより、システムスキーマをイントロスペクトする前に、データベースに接続することなく、システムメタデータを使用するスクリプトを作成できます。
イントロスペクション
イントロスペクションとは、データベースのメタデータを読み込むプロセスです。 イントロスペクションを実行すると、データソース内の構造情報がインスペクションされ、テーブル、列、ルーチン、その他のデータベースオブジェクトとその属性が検出されます。
イントロスペクションは、データ構造とカタログを持つデータベースでのみサポートされます。
デフォルトでは、 データベース ツールウィンドウに表示するように選択されたスキーマとデータベースのみがイントロスペクトされます。
データベース ツールウィンドウで選択するか、 データソースおよびドライバー ダイアログ (Shift+Enter) ダイアログでデータソースプロパティを編集することで、どのスキーマとデータベースをイントロスペクトして表示するかを選択できます。
イントロスペクションのスキーマとデータベースを選択する
データベース ツールウィンドウの場合:
データベース ツールウィンドウを開くには、メインメニューから を選択します。 または、 ⌘ 1 を押します。
データベース ツールウィンドウで、データソース、データベース、スキーマ名の横にある N/M ボタンをクリックします。

スキーマ選択ポップアップウィンドウで、データベースまたはスキーマを選択し、 Enter を押します。
データソースおよびドライバー ダイアログの場合:
ダイアログを開くには、 データベース ツールウィンドウでデータソースを右クリックし、
プロパティ を選択します。 または、ツールバーの
データソースプロパティ アイコンをクリックします。
データソースおよびドライバー ダイアログの スキーマ タブで、データベースまたはスキーマを選択します。

オブジェクトフィルター フィールドは、 データベース ツールウィンドウに表示されるオブジェクトのみを定義し、イントロスペクションスコープには影響しないことに注意してください。
変更を適用してダイアログを閉じます。
必要なデータベースとスキーマがイントロスペクトされると、IDE はスクリプト内のデータベースオブジェクトを適切なコンテキストに解決できるようになります。 以下の例は、イントロスペクトされたスキーマとイントロスペクトされていないスキーマのデータベースオブジェクトの解決方法を示しています。

イントロスペクトされていない
MySQLデータソース。PostgreSQLデータソースのうち、唯一イントロスペクトされたゲストデータベース。 このデータベースには 4 つのスキーマが含まれており、publicスキーマのみがイントロスペクトされています。クエリコンソール におけるデータベースオブジェクトの解決: イントロスペクトされた
ゲストスキーマでは成功し、イントロスペクトされていないtestsスキーマでは失敗します。
データソースごとに、データベースオブジェクトのソースコードがロードされるスキーマのカテゴリを選択することもできます。
異なるスキーマのデータベースオブジェクトのソースをロードする
データベースオブジェクトのソースがロードされるスキーマを選択するには、 データソースおよびドライバー ダイアログ (Shift+Enter) を開き、データソースを選択します。
オプション タブで、 ソースのロード 設定に移動し、スキーマのカテゴリを選択します。
変更を適用してダイアログを閉じます。

すべてのオブジェクトが処理されている場合、データベースユーザーはイントロスペクションに長い時間がかかることがありますが、日常業務やコーディング支援では通常、イントロスペクションは必要ありません。 イントロスペクトされるオブジェクトの数を減らすため、RustRover には追加の イントロスペクションタイプと、一部のサポート対象データベース向けに イントロスペクションレベルが実装されています。
イントロスペクションの種類
イントロスペクションの種類は、イントロスペクション中にリフレッシュされるデータベースオブジェクトを定義します。 一部のデータベースでは、このイントロスペクションの範囲を特定のオブジェクトに絞り込むことができます。 RustRover では、ご利用のデータベースによって、 フルイントロスペクション、 フラグメントイントロスペクション、 増分イントロスペクションなどのイントロスペクションタイプが利用できます。
- フルイントロスペクション
データベース ツールウィンドウ (スキーマセレクター) または データソースおよびドライバー ダイアログ (スキーマ タブ) でイントロスペクション用に選択されたスキーマとデータベースがリフレッシュされます。
- 増分イントロスペクション
前回のイントロスペクション実行後にデータベース内で変更されたデータベースオブジェクトのみがリフレッシュされます。
- フラグメントイントロスペクション
リフレッシュ アクションを呼び出すと、 データベース ツールウィンドウで選択されたデータベースオブジェクトのみがリフレッシュされます。

クエリコンソール でステートメントを実行すると、 スマートリフレッシュの仕組みが適用されます。 RustRover は、このステートメントによって変更される可能性のあるオブジェクトを分析し、その特定セットのみをリフレッシュします。
サポートされている一部のデータベースでは、 イントロスペクションレベルごとにイントロスペクションを実行できます。
- レベル別イントロスペクション
イントロスペクションレベルは、データベースオブジェクトについて取得される詳細の量を定義します。
レベル 1: データベースオブジェクト名のみがロードされます。
レベル 2: データベースオブジェクトのソースコードを除くすべてがロードされます。
レベル 3: すべてがロードされました。
イントロスペクションレベルの詳細については、 イントロスペクションレベル トピックを参照してください。

データベースで特定のイントロスペクションタイプがサポートされていない場合、RustRover はフルイントロスペクションを実行します。 以下のデータベースでは、特定のイントロスペクションタイプとイントロスペクションレベルがサポートされています。
データベース | 増分イントロスペクション | フラグメントイントロスペクション | イントロスペクションレベル |
|---|---|---|---|
はい | はい | はい | |
はい | はい | - | |
はい | - | - | |
はい | はい | はい | |
はい | はい | はい | |
はい | はい | はい | |
はい | はい | はい | |
はい | はい | はい |