[Pgpool-general] Problem with DBI and Load Balancing
Tatsuo Ishii
ishii at sraoss.co.jp
Mon Dec 19 03:12:44 GMT 2005
> I've been trying out master-slave and load-balancing mode with DBI, the Perl
> database interface (and DBD::Pg). All queries seem to go to the master.
>
> The problem seems to be that DBI (or DBD::Pg, I don't know which), inserts
> whitespace before the query:
>
> Dec 18 12:14:56 kutta postgres[29981]: [4-1] LOG: statement: SELECT
> version()
> Dec 18 12:14:56 kutta postgres[29981]: [5-1] LOG: statement:
> SELECT host from host
> Dec 18 12:14:56 kutta postgres[29981]: [6-1] LOG: statement: RESET ALL
> Dec 18 12:14:56 kutta postgres[29981]: [7-1] LOG: statement: SET SESSION
> AUTHORIZATION DEFAULT
>
> Note the spaces before my statement, "SELECT host from host", which I didn't
> introduce. I imagine that's what's causing pgpool to send the query only to
> the master. The significance of leading whitespace is clearly documented on
> the pgpool page and is obvious from the code.
>
> /*
> * return non 0 if load balance is possible
> */
> static int load_balance_enabled(POOL_CONNECTION_POOL *backend, char *sql)
> {
> if (pool_config.load_balance_mode &&
> DUAL_MODE &&
> MAJOR(backend) == PROTO_MAJOR_V3 &&
> TSTATE(backend) == 'I' &&
> !strncasecmp(sql, "SELECT", 6))
> return 1;
> return 0;
> }
>
> Would it be possible to have an ignore_leading_whitespace option (or even
> default to ignoring leading whitespace) for compatibility please?
I will add ignore_leading_whitespace option to next version (probably
V2.7).
--
Tatsuo Ishii
SRA OSS, Inc. Japan
More information about the Pgpool-general
mailing list