[pgpool-general: 2377] Re: Error when use pgpool2 with JDBC

Tatsuo Ishii ishii at postgresql.org
Tue Jan 7 17:54:20 JST 2014


I don't know where "SET extra_float_digits = 3" comes from. Pgpool-II
never issues the query. Mabe Spring does something?

Best regards,
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese: http://www.sraoss.co.jp

> Hi,
> 
> I want use pgpool2 to create a PostgreSQL cluster in master slave
> configuration, streaming replication and load balancing. That
> correctly works when I connect to pgpool with psql, but when I try to
> connect with Java and Jdbc, I get exception.  My program perfectly
> works if it connects directly to master. I searched on Google, I saw
> many results for approaching errors (SET extra_float_digits = 3), but
> none could be help me.
> 
> I use pgpool version 3.3.2 (I tried also 3.1.1 before), PostgreSQL
> 9.1.11, Ubuntu 12.04, Java 7 and PostgreSQL JDBC 9.2-1002-jdbc4 (but
> the error is the same with versions 9.1-901-1.jdbc4 and
> 9.3-1100-jdbc41).
> 
> Here my exception :
> 
>     org.springframework.jdbc.CannotGetJdbcConnectionException: Could not
>     get JDBC Connection; nested exception is
>     org.apache.commons.dbcp.SQLNestedException: Cannot create
>     PoolableConnectionFactory (ERROR: kind mismatch among
>     backends. Possible last query was: "SET extra_float_digits = 3" kind
>     details are: 0[N: execute <unnamed>: SET extra_float_digits = 3] 1[C]
>   Indice : check data consistency among db nodes)
>     at
>     org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
>     at
>     org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:628)
>     at
>     org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:907)
>     at
>     org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:931)
>     at
>     org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:311)
>     at
>     fr.telecomdesign.testcluster.dao.jdbc.ProbeDaoJdbc.insert(ProbeDaoJdbc.java:80)
> 
> In pgpool log, I see then following lines :
> 
>     Jan  2 16:35:45 pool pgpool[16915]: Execute: portal name <>
>     Jan 2 16:35:45 pool pgpool[16915]: Execute: query string = <SET
>     extra_float_digits = 3>
>     Jan 2 16:35:45 pool pgpool[16915]: DB node id: 0 backend pid: 6885
>     statement: Execute: SET extra_float_digits = 3
>     Jan 2 16:35:45 pool pgpool[16915]: wait_for_query_response: waiting
>     for backend 0 completing the query
>     Jan 2 16:35:45 pool pgpool[16915]: pool_send_and_wait: Error or notice
>     message from backend: : DB node id: 0 backend pid: 6885 statement: SET
>     extra_float_digits = 3 message: execute <unnamed>: SET
>     extra_float_digits = 3
>     Jan 2 16:35:45 pool pgpool[16915]: DB node id: 1 backend pid: 16178
>     statement: Execute: SET extra_float_digits = 3
>     Jan 2 16:35:45 pool pgpool[16915]: wait_for_query_response: waiting
>     for backend 1 completing the query
>     Jan 2 16:35:45 pool pgpool[16915]: read_kind_from_one_backend: read
>     kind from 0 th backend N
>     Jan 2 16:35:45 pool pgpool[16915]: read_kind_from_backend: kind: N
>     from 0 th backend
>     Jan 2 16:35:45 pool pgpool[16915]: read_kind_from_backend: read kind
>     from 0 th backend N NUM_BACKENDS: 2
>     Jan 2 16:35:45 pool pgpool[16915]: read_kind_from_backend: kind: C
>     from 1 th backend
>     Jan 2 16:35:45 pool pgpool[16915]: read_kind_from_backend: read kind
>     from 1 th backend C NUM_BACKENDS: 2
>     Jan 2 16:35:45 pool pgpool[16915]: read_kind_from_backend: 1 th kind C
>     does not match with master or majority connection kind N
>     Jan 2 16:35:45 pool pgpool[16915]: kind mismatch among
>     backends. Possible last query was: "SET extra_float_digits = 3" kind
>     details are: 0[N: execute <unnamed>: SET extra_float_digits = 3] 1[C]
> 
> On master and slave logs, I see the query SET extra_float_digits =
> 3. What is this query ? I never sent it to pool. With psql on master,
> I manage to execute this query. If I am connected to pool with psql, I
> get the following error :
>     ERROR: kind mismatch among backends. Possible last query was: "SET
>     extra_float_digits = 3;" kind details are: 0[N: statement: SET
>     extra_float_digits = 3;] 1[C]
>     ASTUCE : check data consistency among db nodes
>     ERROR: kind mismatch among backends. Possible last query was: "SET
>     extra_float_digits = 3;" kind details are: 0[N: statement: SET
>     extra_float_digits = 3;] 1[C]
>     ASTUCE : check data consistency among db nodes
> 
> Why pgpool2 send this query to master and slave ? How do for that
> pgpool do not send it to backends ?
> 
> Thanks for your help.
> 
> _______________________________________________
> pgpool-general mailing list
> pgpool-general at pgpool.net
> http://www.pgpool.net/mailman/listinfo/pgpool-general


More information about the pgpool-general mailing list