Thread: Object types and ResultSets (java.sql.Struct)

Object types and ResultSets (java.sql.Struct)

From
Thomas Kellerer
Date:
Hi,

I noticed that "object types" are not treated in a consistent manner

Taking the following table:

CREATE TYPE person_type AS
(
   first_name VARCHAR(20),
   last_name VARCHAR(25)
)

CREATE TABLE contacts
(
    id integer,
    contact person_type
)

DatabaseMetaData.getColumns() will return a java.sql.Types.STRUCT for the column "contact".
That seems to be correct to me - at least this is what I expected ;)

When running a "SELECT * FROM contacts", ResultSetMetaData.getColumnType() will return java.sql.Types.OTHER  (for the
contactcolumn) 

This seems to be inconsistent to me.

My expectation was that ResultSetMetaData.getColumnType() should also return java.sql.Types.STRUCT and that the object
returnedby getObject() on the ResultSet should implement java.sql.Struct (which it doesn't) 


Regards
Thomas

Re: Object types and ResultSets (java.sql.Struct)

From
Kris Jurka
Date:

On Sat, 23 Jan 2010, Thomas Kellerer wrote:

> DatabaseMetaData.getColumns() will return a java.sql.Types.STRUCT for the
> column "contact".
> That seems to be correct to me - at least this is what I expected ;)
>
> When running a "SELECT * FROM contacts", ResultSetMetaData.getColumnType()
> will return java.sql.Types.OTHER  (for the contact column)
>
> This seems to be inconsistent to me.
>
> My expectation was that ResultSetMetaData.getColumnType() should also return
> java.sql.Types.STRUCT

That should be easy enough to fix.  I'll take a look.

>  and that the object returned by getObject() on the
> ResultSet should implement java.sql.Struct (which it doesn't)
>

That one will take some more work.  I wouldn't hold my breath on that one.

Kris Jurka

Re: Object types and ResultSets (java.sql.Struct)

From
Kris Jurka
Date:

On Fri, 29 Jan 2010, Kris Jurka wrote:

> On Sat, 23 Jan 2010, Thomas Kellerer wrote:
>
>> DatabaseMetaData.getColumns() will return a java.sql.Types.STRUCT for the
>> column "contact".
>> That seems to be correct to me - at least this is what I expected ;)
>>
>> When running a "SELECT * FROM contacts", ResultSetMetaData.getColumnType()
>> will return java.sql.Types.OTHER  (for the contact column)
>>
>> This seems to be inconsistent to me.
>>
>> My expectation was that ResultSetMetaData.getColumnType() should also
>> return java.sql.Types.STRUCT
>
> That should be easy enough to fix.  I'll take a look.

I've applied a fix to this for 8.3, 8.4, and 9.0 in CVS.

Kris Jurka

Re: Object types and ResultSets (java.sql.Struct)

From
Andreas Joseph Krogh
Date:
On 08/10/2010 10:00 PM, Kris Jurka wrote:


On Fri, 29 Jan 2010, Kris Jurka wrote:

On Sat, 23 Jan 2010, Thomas Kellerer wrote:

DatabaseMetaData.getColumns() will return a java.sql.Types.STRUCT for the column "contact".
That seems to be correct to me - at least this is what I expected ;)

When running a "SELECT * FROM contacts", ResultSetMetaData.getColumnType() will return java.sql.Types.OTHER  (for the contact column)

This seems to be inconsistent to me.

My expectation was that ResultSetMetaData.getColumnType() should also return java.sql.Types.STRUCT

That should be easy enough to fix.  I'll take a look.

I've applied a fix to this for 8.3, 8.4, and 9.0 in CVS.


What about this?
>>  and that the object returned by getObject() on the
>> ResultSet should implement java.sql.Struct (which it doesn't)
>
>That one will take some more work.  I wouldn't hold my breath on that one.

Without proper support for Struct returning custom-types (i.e. arrays of arrays) becomes a pain. Any word on this?
-- 
Andreas Joseph Krogh <andreak@officenet.no>
Senior Software Developer / CTO
------------------------+---------------------------------------------+
OfficeNet AS            | The most difficult thing in the world is to |
Rosenholmveien 25       | know how to do a thing and to watch         |
1414 Trollåsen          | somebody else doing it wrong, without       |
NORWAY                  | comment.                                    |                       |                                             |
Tlf:    +47 24 15 38 90 |                                             |
Fax:    +47 24 15 38 91 |                                             |
Mobile: +47 909  56 963 |                                             |
------------------------+---------------------------------------------+

Re: Object types and ResultSets (java.sql.Struct)

From
Kris Jurka
Date:

On Tue, 10 Aug 2010, Andreas Joseph Krogh wrote:

> Without proper support for Struct returning custom-types (i.e. arrays of
> arrays) becomes a pain. Any word on this?
>

Composite type support is a big job that's not going to happen for 9.0.

Kris Jurka

Re: Object types and ResultSets (java.sql.Struct)

From
Andreas Joseph Krogh
Date:
On 08/10/2010 11:05 PM, Kris Jurka wrote:
>
>
> On Tue, 10 Aug 2010, Andreas Joseph Krogh wrote:
>
>> Without proper support for Struct returning custom-types (i.e. arrays of
>> arrays) becomes a pain. Any word on this?
>>
>
> Composite type support is a big job that's not going to happen for 9.0.

For what it's worth I hope it will be a priority for 9.1 as PG+JAVA
provides pretty much everything else I need, except returning more
complex structures to JAVA.

--
Andreas Joseph Krogh<andreak@officenet.no>
Senior Software Developer / CTO
------------------------+---------------------------------------------+
OfficeNet AS            | The most difficult thing in the world is to |
Rosenholmveien 25       | know how to do a thing and to watch         |
1414 Trollåsen          | somebody else doing it wrong, without       |
NORWAY                  | comment.                                    |
                         |                                             |
Tlf:    +47 24 15 38 90 |                                             |
Fax:    +47 24 15 38 91 |                                             |
Mobile: +47 909  56 963 |                                             |
------------------------+---------------------------------------------+