[Pljava-dev] Arrays support for object views

Krzysztof Nienartowicz yazuna at gmail.com
Fri Sep 26 14:02:01 UTC 2008


Hello,

By using simply:
receiver.updateObject(5, new Double[]{1.0,2.0,3.0});
I finally don't get any errors but the values are not related to the array
set and always stay the same. Seems they are not initialized properly even.

--wrapper with dummy parameters
select * from tt2(0,0.0,0.0,0.0);

gives:

1000;1;f;10;"{-1.06280184473225e-250,2.47032822920623e-323,0}";"";""
1000;1;f;10;"{-1.06291373259335e-250,2.47032822920623e-323,0}";"";""
1000;1;f;10;"{-1.06302562045446e-250,2.47032822920623e-323,0}";"";""
1000;1;f;10;"{-1.06313750831557e-250,2.47032822920623e-323,0}";"";""
1000;1;f;10;"{-1.06324939617667e-250,2.47032822920623e-323,0}";"";""

 The good thing is the size of an array is reflected properly, so if I
change the size of an array in java it gets reflected on sql side. Also, if
arrays passed are constant - i.e. values of Integer arrays are still wrong
but stay the same between the calls.
I implemented java.sql.Array but got similaar exception:

STATEMENT:  select vals,vali from tt3(1,10000.0,0.0,0.0);

java.sql.SQLException: Cannot derive a value of class [Ljava.lang.Double;
from an object of class mySqlArrayImpl
        at
org.postgresql.pljava.jdbc.SPIConnection.basicCoersion(SPIConnection.java:718)
        at
org.postgresql.pljava.jdbc.SingleRowWriter.updateObject(SingleRowWriter.java:82)
        at
org.postgresql.pljava.jdbc.ObjectResultSet.updateArray(ObjectResultSet.java:264)
        at
gaia.cu7.omimpl.TimeSeriesImplSQL.assignRowValues(TimeSeriesImplSQL.java:329)
ERROR:  java.sql.SQLException: Cannot derive a value of class
[Ljava.lang.Double; from an object of class mySqlArrayImpl

Could you please comment?



2008/9/23 Krzysztof Nienartowicz <yazuna at gmail.com>

> Hello,
> Thanks for the nice project. I encountered some traces of efforts to use
> arrays from within pljava but could not find a working example.
> I'm trying to create a function that would return a setof complex objects
> where some fields of the object are plain old dataype arrays. i.e.:
>
> CREATE TYPE tsTest2 AS
> (
>      id  bigint ,
>      tsType integer  ,
>      residuals boolean ,
>      length integer,
>      obs    float8[]
> ) ;
>
>
> then I create a mapping function:
>
> CREATE or replace FUNCTION tt2(integer ,float8 , float8 , float8 )
>   RETURNS SETOF tstest2
>   AS 'gaia.cu7.omimpl.TimeSeriesImplSQL.timeseriesReturn'
>   IMMUTABLE LANGUAGE javaU;
>
> then, whatever I try to do in a java code for   assignRowValues fails:
> i.e.: receiver.updateString(6, "{1.0,2.0,3.0}");
> would result in:
>
> -- Executing query:
> select tt2(0,0.0,0.0,0.0);
>
>
> ERROR:  java.sql.SQLException: Cannot derive a value of class
> [Ljava.lang.Double; from an object of class java.lang.String
>
> you do have updateArray but could not spot any usage example with it.
> Please help, otherwise we will have to drop pljava from the project which
> has a chance to impact astronomy community thus leverage pljava.
> Best regards,
> Krzysztof
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://pgfoundry.org/pipermail/pljava-dev/attachments/20080926/a544bde0/attachment.html 


More information about the Pljava-dev mailing list