On Tue, Apr 7, 2009 at 4:35 AM, Hannu Krosing
<hannu@2ndquadrant.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
--