LoginSignup
1
1

More than 5 years have passed since last update.

psql経由でpg_bigm簡単セットアップ

Posted at

PostgreSQL Advent Calendar 2015 Day2のテクニックを応用して、全文検索モジュールpg_bigmをpsql経由でセットアップ(ダウンロードからDB登録まで)します。

-- シェルのソースを保存するテーブルを作成します。
CREATE TABLE shell (num serial, line TEXT);

-- pg_bigmのダウンロードとコンパイルを行うシェルをテーブルに保存します。
COPY shell (line) FROM stdin;
#!/bin/sh

cd /tmp
wget 'http://osdn.jp/frs/redir.php?m=jaist&f=%2Fpgbigm%2F63792%2Fpg_bigm-1.1-20150910.tar.gz'
tar zxf pg_bigm-1.1-20150910.tar.gz
cd pg_bigm-1.1-20150910
make USE_PGXS=1
make USE_PGXS=1 install
\.

-- テーブルからシェルの実行ファイルを作成して実行します。
-- これにより、pg_bigmのソースがダウンロードされ、コンパイルされます。
COPY (SELECT line FROM shell ORDER BY num) TO PROGRAM 'tee /tmp/inst_bigm.sh; chmod 744 /tmp/inst_bigm.sh; /tmp/inst_bigm.sh';

-- pg_bigmをDBに登録します。
CREATE EXTENSION pg_bigm;

-- ALTER SYSTEM SETで、pg_bigmをshared_preload_librariesに設定します。
ALTER SYSTEM SET shared_preload_libraries TO 'pg_bigm';

-- shared_preload_librariesの設定変更を反映するために、PostgreSQLを再起動します。
-- まずはPostgreSQLを再起動するシェルをテーブルに保存します。
TRUNCATE shell;

COPY shell (line) FROM stdin;
#!/bin/sh

pg_ctl -m f stop
pg_ctl start
\.

-- テーブルからシェルの実行ファイルを作成して実行します。
-- これにより、PostgreSQLが再起動され、shared_preload_librariesのpg_bigmの設定が有効になります。
COPY (SELECT line FROM shell ORDER BY num) TO PROGRAM 'tee /tmp/restart_pg.sh; chmod 744 /tmp/restart_pg.sh; /tmp/restart_pg.sh &';
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1