And this is sample script to play the feature of this patch.
It includes: - create foreign data wrapper and foreign server(PG at localhost) - select foreign PostgreSQL table. *Important* This script initializes your database cluster(specified by $PGDATA). Run with care.... Regards, SAKAMOTO Masahiko NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center e-mail: sakamoto.masah...@oss.ntt.co.jp
#!/bin/sh export PGDATABASE=postgres export PGUSER=postgres # re-create database cluster pg_ctl stop -m immediate rm -rf $PGDATA initdb -U postgres # FDW for PostgreSQL requires password authentiaction on non-superuser access mv $PGDATA/pg_hba.conf $PGDATA/pg_hba.conf.org cat > $PGDATA/pg_hba.conf <<EOF local all all trust host all user1 127.0.0.1/32 md5 host all all 127.0.0.1/32 trust host all all ::1/128 md5 EOF pg_ctl start -w # install FDW for PostgreSQL with dblink functions psql -f `pg_config --sharedir`/contrib/dblink.sql psql<<EOF CREATE USER user1 ENCRYPTED PASSWORD 'pass1'; CREATE FOREIGN DATA WRAPPER postgresql_fdw VALIDATOR postgresql_fdw_validator HANDLER postgresql_fdw_handler; CREATE SERVER loopback FOREIGN DATA WRAPPER postgresql_fdw OPTIONS (host 'localhost', port '5432', dbname 'postgres'); CREATE USER MAPPING FOR postgres SERVER loopback OPTIONS (user 'postgres'); CREATE USER MAPPING FOR user1 SERVER loopback OPTIONS (user 'user1', password 'pass1'); -- create local (normal) table which will be accessed via FDW and load data CREATE TABLE local_table ( c1 int not null, c2 text ); INSERT INTO local_table SELECT id, id::text FROM generate_series(1, 3) id; -- create foreign table which references local_ta...@loopback CREATE FOREIGN TABLE foreign_table ( c1 int not null, c2 text ) SERVER loopback OPTIONS (relname 'local_table'); -- grant privileges to non-superuser GRANT SELECT ON local_table TO user1; GRANT SELECT ON foreign_table TO user1; -- execute query by superuser, password authentication is not required -- DEBUG1 shows deparsed SQL which will be executed in foreign server. SET client_min_messages = debug1; SELECT * FROM local_table ORDER BY c1; SELECT * FROM foreign_table ORDER BY c1; SELECT * FROM foreign_table WHERE c2 = '2'; -- execute query by non-superuser, password authentication is required \c postgres user1 SELECT * FROM foreign_table ORDER BY c1; EOF
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers