[Pgpool-general] Build bug with 3.0.4 and 9.1b3

Tatsuo Ishii ishii at sraoss.co.jp
Fri Jul 22 00:54:25 UTC 2011


> Tatsuo,
> 
>> No way. The problem was caused by the fact that PostgreSQL 9.1 started
>> to export get_namespace_oid. What pgpool-II actually want is,
>> non-error-raising regclass. Once I proposed that, but Tom
>> rejected. His answer was "use PL/pgSQL", which I don't want to accept
>> because it's slow. So I had to make this tricky, ugly coding.
> 
> Well, I can build 3.0.3's regclass against 9.1, but I can't build
> 3.0.4's regclass. So it's not only ugly, it doesn't work.
Well, from cvs log:

-----------------------------------------------------------------
Fix pgpool-regclass().
It appeared that using PG_TRY/CATCH is not safe, sometimes backend
dies with PANIC:  ERRORDATA_STACK_SIZE exceeded.
The only solution is stealing some functions from PostgreSQL
and modify it not to throw errors.
This is not elegant at all but PostgreSQL developers do not allow
to add such that built-in functions. Sigh.
-----------------------------------------------------------------

So in reality 3.0.3 had not worked. 3.0.4 works at least for 9.0 or
before.
> 
> BTW, is regclass required for load balancing, or just for pgpool
> replication?

In most cases you don't need pgpool_regclass if you use streaming
replication mode.

The exception is following case.

1) you have a temporary table called "t1"
2) you have "public.pg_class"
3) you want execute a query "SELECT * FROM pg_class WHERE relname = 't1'"

Without pgpool_regclass, the query might be sent to standby and may
return incorrect result.
--
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-general mailing list