はじめに
本記事では、vs_procedure_columnsシステムテーブルを参照することによって、関数利用時に指定するパラメータを確認する方法についてご紹介します。
以前のバージョンまで、vs_procedure_columnsのcolumn_name列は空欄でしたが、9.3.1から関数利用時に指定するパラメータを確認できるようになりました。
それにより、マニュアルを参照せずとも、対象の関数を利用する際に指定が必要なパラメータについて参照することが可能です。
関数利用時の指定パラメータを確認する
確認例
以下にexport_catalog関数(※)を対象とした確認例を記載します。
(※)Verticaのオブジェクト定義をエクスポートする関数です。
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つを指定して関数を実行するパターンを指しています。
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のみを指定して関数を実行するパターンを指しています。
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が空欄のレコードのみです。
これは、引数に何も指定せずに関数を実行するパターンを指します。
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のマニュアルには、構文が以下のように記載されています。
EXPORT_CATALOG ( '[destination]' [, 'scope' ] )[ ]内は指定は任意であり、[ ]の外にあるものは指定が必須です。
つまりこの構文では、第1引数'[destination]’は指定が必須であり、第2引数[, ‘scope‘ ]の指定は任意であるといえます。
このことを踏まえ、[パラメータの確認方法]項を再度ご確認いただくとより理解が深まるかと存じます。
参考情報
SQL Functions and Statements
https://www.vertica.com/docs/9.3.x/HTML/Content/Authoring/NewFeatures/9.3/9.3.1/SQLandFunctions.htm
検証バージョンについて
この記事の内容はVertica 9.3で確認しています。
更新履歴
2020/06/26 本記事を公開