はじめに
本記事では、vs_procedure_columnsシステムテーブルを参照することによって、関数利用時に指定するパラメータを確認する方法についてご紹介します。
以前のバージョンまで、vs_procedure_columnsのcolumn_name列は空欄でしたが、9.3.1から関数利用時に指定するパラメータを確認できるようになりました。
それにより、マニュアルを参照せずとも、対象の関数を利用する際に指定が必要なパラメータについて参照することが可能です。
関数利用時の指定パラメータを確認する
確認例
以下にexport_catalog関数(※)を対象とした確認例を記載します。
(※)Verticaのオブジェクト定義をエクスポートする関数です。
1 2 3 4 5 6 7 8 9 10 |
dbadmin=> SELECT * FROM vs_procedure_columns WHERE proc_name = 'export_tables'; proc_oid | proc_schema | proc_name | column_name | column_type | type_oid | column_remarks | ordinal_position | column_isuserdefined ----------+-------------+---------------+-------------+-------------+----------+----------------+------------------+---------------------- 8059 | | export_tables | destination | 1 | 9 | | 1 | 0 8059 | | export_tables | scope | 1 | 9 | | 2 | 0 8059 | | export_tables | | 5 | 9 | | 0 | 0 8060 | | export_tables | destination | 1 | 9 | | 1 | 0 8060 | | export_tables | | 5 | 9 | | 0 | 0 8061 | | export_tables | | 5 | 9 | | 0 | 0 (6 rows) |
結果の見方についてご案内します。
この例では、export_catalog関数に対し、「proc_oid =8059」,「proc_oid =8060」,「proc_oid =8061」の3種類のレコードが存在します。
これは、export_catalog関数の利用時に、パラメータの指定方法が以下の3パターンあることを意味します。
「proc_oid =8059」の場合
column_nameから、destinationとscopeの2つの値が確認できます。これは、destinationとscopeの2つを指定して関数を実行するパターンを指しています。
1 2 3 4 5 |
dbadmin=> SELECT export_catalog('/home/dbadmin/tables.txt','tables'); export_catalog ------------------------------------- Catalog data exported successfully (1 row) |
※「/home/dbadmin/all.txtファイルに、実行ユーザーがアクセス権を持つ全てのオブジェクト定義をエクスポートする」という処理が行われています。
「proc_oid =8060」の場合
column_nameから、destinationの値のみが確認できます。これは、destinationのみを指定して関数を実行するパターンを指しています。
1 2 3 4 5 |
dbadmin=> SELECT export_catalog('/home/dbadmin/all.txt'); export_catalog ------------------------------------- Catalog data exported successfully (1 row) |
※「/home/dbadmin/tables.txtファイルに、テーブルのDDLをエクスポートする」という処理が行われています。
「proc_oid =8061」の場合
column_nameが空欄のレコードのみです。これは、引数に何も指定せずに関数を実行するパターンを指します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
dbadmin=> SELECT export_tables(); export_tables ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- CREATE SEQUENCE v_dbd_design2_design2.vs_design_queries_seq CACHE 1 ; (省略) CREATE TABLE public.t1 ( col1 int, col2 varchar(80) ); (1 row) |
※エクスポート結果を、ファイルではなく画面上に出力しています。
マニュアル記載の構文との対応
EXPORT_CATALOGのマニュアルには、構文が以下のように記載されています。
1 |
EXPORT_CATALOG ( '[destination]' [, 'scope' ] ) |
[ ]内は指定は任意であり、[ ]の外にあるものは指定が必須です。
つまりこの構文では、第1引数'[destination]’は指定が必須であり、第2引数[, ‘scope‘ ]の指定は任意であるといえます。
このことを踏まえ、[パラメータの確認方法]項を再度ご確認いただくとより理解が深まるかと存じます。
参考情報
SQL Functions and Statementshttps://www.vertica.com/docs/9.3.x/HTML/Content/Authoring/NewFeatures/9.3/9.3.1/SQLandFunctions.htm
検証バージョンについて
この記事の内容はVertica 9.3で確認しています。
更新履歴
2020/06/26 本記事を公開
- 投稿タグ
- システムテーブル, vs_procedure_columns, 関数