[pgpool-hackers: 299] postgres_fdw set schema to pg_catalog
Tatsuo Ishii
ishii at postgresql.org
Mon Jun 24 10:31:16 JST 2013
Recently a user wants to use postgres_fdw which pgpool as a SERVER. I
don't know why but postgres_fdw set the schema search path to
pg_catalog. Pgpool wants to execute has_pgpool_regclass() against
PostgreSQL with the schema search path specified by postgres_fdw, and
the query fails because pgpool_regclass() is registered in public
schema. I'm not sure if we want to fix this or how to fix it:
1) If the use case (postgres_fdw accesses pgpool) is extremely rare,
it's not worth the trouble. Also there's a workaround (register
pgpool_regclass() to pg_catalog).
2) It's worth to fix. Because users may want to disable the schema
pgpool_regclass() lives.
3) If #1 or #2 is true, how to fix it.
a) register pgpool_regclass in pg_catalog.
b) modify the query used in has_pgpool_regclass(). Below is the
proposed change. This does not help the case #1 or #2, but
properly tells that pgpool_regclass() is not available, rather
than throwing an error.
SELECT count(*) from (SELECT has_function_privilege('%s',
'pgpool_regclass(cstring)', 'execute') WHERE EXISTS(SELECT 1
FROM pg_catalog.pg_proc AS p, pg_catalog.pg_namespace AS n WHERE
p.proname = 'pgpool_regclass' AND n.nspname = 'public' AND
p.pronamespace = n.oid)) AS s;
Opinions?
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese: http://www.sraoss.co.jp
More information about the pgpool-hackers
mailing list