4

シンプルな base36 PostgreSQL 拡張機能を作成する例をテストしています。

ただし、単体テスト ケース ( REGRESS =) を記述して使用するときに問題が発生します。を使用すると、次sudo make installcheckのエラーが表示されます

... ============== データベース「contrib_regression」を削除 ==============

psql: FATAL: ロール "root" が存在しません ... ...

PostgreSQL は現在のログイン ユーザーを使用してテストを実行しようとしているようですが、この場合は存在しません。を省略しsudoて単に行うmake installcheckと、別のエラーが生成さpermission deniedれます。

CREATE DATABASE ERROR: パラメーター "lc_messages" を設定する許可が拒否されました コマンドが失敗しました: "/usr/lib/postgresql/9.5/bin/psql" -X -c "ALTER DATABASE \"contrib_regression\" SET lc_messages TO 'C';ALTER DATABASE \"contrib_regression\" SET lc_monetary TO 'C';ALTER DATABASE \"contrib_regression\" SET lc_numeric TO 'C';ALTER DATABASE \"contrib_regression\" SET lc_time TO 'C';ALTER DATABASE \"contrib_regression\" SET timezone_abbreviations TO 'デフォルト';" "contrib_regression" /usr/lib/postgresql/9.5/lib/pgxs/src/makefiles/pgxs.mk:272: ターゲット 'installcheck' のレシピが作成に失敗しました: *** [installcheck] エラー 2

私の質問は次のとおりです。

MakefilePostgreSQL 拡張機能で別のユーザー (スーパーユーザーなど) を指定できますか?

または、スーパーユーザー以外が実行できるように問題を解決できますinstallcheckか?

注:Makefileは:

EXTENSION = base36        # the extensions name
DATA = base36--0.0.1.sql  # script files to install
REGRESS = base36_test     # our test script file (without extension)

# postgres build stuff
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
4

1 に答える 1