Re: What do people use for connection pooling with PostgreSQL JDBC

From: Hannu Krosing <hannu(at)2ndQuadrant(dot)com>
To: Dave Cramer <pg(at)fastcrypt(dot)com>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: What do people use for connection pooling with PostgreSQL JDBC
Date: 2009-04-07 14:02:53
Message-ID: 1239112973.7647.23.camel@huvostro
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

On Tue, 2009-04-07 at 09:39 -0400, Dave Cramer wrote:
>
>
> On Tue, Apr 7, 2009 at 9:23 AM, Hannu Krosing <hannu(at)2ndquadrant(dot)com>
> wrote:
>
> On Tue, 2009-04-07 at 06:24 -0400, Dave Cramer wrote:
> >
> >
> > On Tue, Apr 7, 2009 at 4:35 AM, Hannu Krosing
> <hannu(at)2ndquadrant(dot)com>
> > wrote:
> > On Mon, 2009-04-06 at 07:43 -0400, Dave Cramer
> wrote:
> > > huh ? What makes you think it doesn't deal with
> arrays ?
> >
> >
> > I have a sample function, whit takes an array
> argument
> >
> > CREATE OR REPLACE FUNCTION arraySum(
> > multiplier bigint,
> > valuelist bigint[],
> > OUT result int
> > ) AS
> > $$
> > BEGIN
> > result = 0;
> > FOR idx IN array_lower(valuelist,
> > 1)..array_upper(valuelist, 1) LOOP
> > result = result + multiplier *
> valuelist[idx];
> > END LOOP;
> > RETURN;
> > END;
> > $$ LANGUAGE plpgsql SECURITY DEFINER;
> >
> >
> > When I call this function directly via JDBC or using
> proxool I
> > get a
> > result, when doing it via c3p0 or dbcp I get an
> exception -
> >
> > Long[] array = { 1L, 2L };
> > PreparedStatement ps = conn.prepareStatement(
> > "SELECT * FROM arraySum(?, ?)");
> > ps.setLong(1, 3L);
> > ps.setArray(2, conn.createArrayOf("bigint",
> array));
> > ps.execute();
> >
> > OK, createArrayOf is a relatively new method. So .... you
> have a few
> > ways around this.
> >
> > 1) don't use it, create your own arrays.
> > 2) fix the dbcp code
> > 3) complain to dbcp people
>
>
> It's both dbcp and c3po.
>
> I understand that dbcp and c3po work on some other databases
> jdbc
> drivers, so maybe I could also do
>
> 4) fix jdbc code to provide required createArrayOf support
>
> no ?
>
> Well, the newer drivers support createArray, so perhaps you need a
> newer driver ?

As I said, yhis works when I use JDBC directly, or proxool connection
proxy

> As well as showing us the exception.

for dbcp -

java.lang.AbstractMethodError:
org.apache.tomcat.dbcp.dbcp.PoolingDataSource
$PoolGuardConnectionWrapper.createArrayOf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/sql/Array;

for c3p0 -

java.lang.AbstractMethodError:
com.mchange.v2.c3p0.impl.NewProxyConnection.createArrayOf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/sql/Array;

Servlet code to test direct, proxool, c3po and dbcp attached

--
Hannu Krosing http://www.2ndQuadrant.com
PostgreSQL Scalability and Availability
Services, Consulting and Training

Attachment Content-Type Size
MyServlet.java text/x-java 4.0 KB

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Brad Milne 2009-04-07 14:04:19 Re: BLOB help - yes I've read around!
Previous Message Achilleas Mantzios 2009-04-07 13:57:07 Re: BLOB help - yes I've read around!