SOURCE_CHANGES¶
注釈
このストアドプロシージャは非推奨であり、Denodo Platform の次のメジャーバージョンでは削除される可能性があります。このプロシージャの代わりに GET_SOURCE_CHANGES プロシージャを使用してください。「GET_SOURCE_CHANGES」は、接続しているデータベースだけではなく、任意のデータベースを検索して同じ情報を返すことができます。
非推奨のすべての機能のリストについては、「 Denodo Platform 8.0 で非推奨となった機能 」のセクションを参照してください。
説明
ストアドプロシージャ SOURCE_CHANGES
は、基本ビューとその基盤となるデータソースとのスキーマの違いを検出します。
たとえば、JDBC 基本ビューの場合、このプロシージャはデータベース内のテーブルのスキーマと基本ビューのスキーマとの違いを検出します。
注釈
このプロシージャの代わりに GET_SOURCE_CHANGES プロシージャを使用することをお勧めします。任意のデータベースの基本ビューの変更を検索できるからです。「SOURCE_CHANGES」は、現在のデータベースの基本ビューに対してのみ機能します。
構文
SOURCE_CHANGES (
table_name : text
)
table_name
: 基本ビューの名前。このビューが存在しないか、派生ビューではない場合、このプロシージャはエラーを返します。
このプロシージャは、ビューのフィールドごとに 1 つの行と、ソースに存在しても、基本ビューには存在しないフィールドごとに 1 つの行を返します。
フィールドが配列またはレジスターである場合は、そのサブフィールドごとに 1 つの行も返されます。
このプロシージャの出力スキーマには以下のフィールドがあります。
field
: ビュー内のフィールドの名前。行が新しいフィールドを表している場合、これはソース内のフィールドの名前と同じです。type
: フィールドの新しい型。フィールドが変更されない場合、この値は「old_type」と同じです。フィールドがソースから削除された場合、この値は空です。old_type
: フィールドの古い型。フィールドの型が変更されない場合、この値は「type」と同じです。行が新しいフィールドを表している場合、この値は空です。modification
: 空の場合、フィールドは変更されていません。そうでない場合、値は以下のいずれかです。「New field」: 行はソースに追加されたフィールドを表しています。
「Deleted field」: 行はソースから削除されたフィールドを表しています。
「Type has changed」: フィールドの型が変更されました。
「Compound structure has changed」: このフィールドのサブフィールドの 1 つが変更されました。
level
: 第 1 レベルのフィールドの場合、この値は1
です。
注意
デフォルトでは、ソースを検出しなかった場合、このプロシージャはエラーを返します。たとえば、
table_name
が JDBC 基本ビューであり、データベースからテーブル/ビューが削除された場合、このプロシージャはエラーを返します。また、table_name
が JSON 基本ビューであり、JSON ファイルが存在しない場合も同様です。ソースが存在しない場合にこのプロシージャが失敗しないようにするには、VQL シェルから以下のステートメントを実行します (管理者である必要があります)。
SET 'com.denodo.vdb.contrib.storedprocedure.SourceChangesProcedure.errorsAsResults'='true'
Virtual DataPort サーバーを再起動して変更を適用します。
この変更により、このプロシージャはフィールドごとに 1 つではなく、1 つの行のみを返すようになり、
modification
フィールドにエラーが保持されます。
必要な権限
このプロシージャを実行できるのは、基本ビューに対する Metadata 権限を持ち、データソースに対する Execute 権限を持つユーザーのみです。つまり、以下のユーザーはこのプロシージャを実行できます。
管理者またはこのデータベースの管理者
このデータベースに対する Connect 権限、基本ビューに対する Metadata 権限、およびデータソースに対する Execute 権限を持つユーザー
例
internet_inc
は JDBC 基本ビューであり、そのテーブルの現在のスキーマが基本ビューの作成後に以下のように変更されたとします。
テーブルに新しいフィールド
CUSTOMER_ID
が追加されたフィールド
SPECIFIC_FIELD1
がテーブルから削除されたフィールド
TTIME
の型が text に変更された
SELECT field, type, old_type, modification, depth
FROM SOURCE_CHANGES()
WHERE table_name = 'internet_inc';
上記のクエリを呼び出した結果は以下のとおりです。
field |
type |
old_type |
modification |
depth |
---|---|---|---|---|
IINC_ID |
long |
long |
1 |
|
SUMMARY |
text |
text |
1 |
|
TTIME |
text |
date |
Type has changed |
1 |
TAXID |
text |
text |
1 |
|
SPECIFIC_FIEL D1 |
text |
Deleted Field |
1 |
|
CUSTOMER_ID |
long |
New Field |
1 |