adminpack
は、pgAdminやその他の管理・運用ツールがサーバログファイルの遠隔管理を行うなどの、追加的な機能を提供できるようにするための数多くのサポート関数を提供します。
デフォルトでは、この関数の使用はすべてデータベーススーパーユーザに限定されていますが、GRANT
コマンドを使用して他のユーザーに許可されている場合があります。
表 F.1に示す関数はサーバをホスティングしているマシン上のファイルに対して書き込みアクセスを提供します。
(表 9.101の関数も参照してください。そちらは読み取り専用アクセスを提供します。)
ユーザがスーパーユーザか、関数に応じたpg_read_server_files
、またはpg_write_server_files
ロールのいずれかの権限を与えられていない限り、データベースクラスタディレクトリ内のファイルにのみアクセス可能です。
ただし、相対パスと絶対パスのどちらも利用できます。
表F.1 adminpack
関数
関数 説明 |
---|
テキストファイルに書き込む、または追記する |
ファイルまたはディレクトリをディスクにフラッシュする |
ファイル名を変更する |
ファイルを削除する |
|
pg_file_write
は指定されたdata
をfilename
で指定されたファイルに書き込みます
append
が偽であれば、ファイルは既に存在していてはいけません。
append
が真であれば、ファイルが既に存在していても構いません。その場合、追記されます。
書き込んだバイト数を返します。
pg_file_sync
はfilename
で指定されたファイルまたはディレクトリをfsyncします。
(例えば、指定されたファイルが存在しないなど)失敗するとエラーを発生します。
data_sync_retryはこの関数には影響しませんので、データベースファイルのフラッシュの失敗であってもPANICレベルのエラーは起こらないことに注意してください。
pg_file_rename
はファイルの名前を変更します。
archivename
が省略されたり、NULLである場合は、単純にoldname
をnewname
(既に存在していてはいけません)に変更します。
archivename
が指定されていれば、まずnewname
をarchivename
(既に存在していてはいけません)に変更し、それからoldname
をnewname
に変更します。
第2段階の名前の変更が失敗した場合には、エラーを報告する前にarchivename
をnewname
に戻そうとします。
成功した場合には真を、元のファイルが存在しなかったり、書き込みできなかった場合には偽を返します。その他の場合にはエラーを発生します。
pg_file_unlink
は指定されたファイルを削除します。
成功した場合には真を、指定されたファイルが存在しなかったり、unlink()
の呼出しが失敗した場合には偽を返します。その他の場合にはエラーを発生します。
pg_logdir_ls
はlog_directoryディレクトリ内にあるログファイルすべての開始時のタイムスタンプとパス名を返します。
この関数を使うには、log_filenameパラメータはデフォルト設定(postgresql-%Y-%m-%d_%H%M%S.log
)でなければなりません。