Thread: TypeInfoCache.getPGArrayElement - determine if array

TypeInfoCache.getPGArrayElement - determine if array

From
Radosław Smogura
Date:
Hi,

In TypeInfo.getPGArrayElement it is written "Returns: the base type's OID,
or 0 if unknown", but if given oid isn't array exception is thrown (empty
result set), if unknown doesn't means unspecified then following patch

        ResultSet rs = _getArrayElementOidStatement.getResultSet();
        if (!rs.next()) {
            pgType = Integer.valueOf(0);
            _pgArrayToPgType.put(new Integer(oid), pgType);
        }else {
            pgType = Integer.valueOf((int)rs.getLong(1));
            _pgArrayToPgType.put(new Integer(oid), pgType);
            _pgNameToOid.put(rs.getString(2), pgType);
            _oidToPgName.put(pgType, rs.getString(2));
        }

--
----------
Radosław Smogura
http://www.softperience.eu

Re: TypeInfoCache.getPGArrayElement - determine if array

From
Kris Jurka
Date:

On Mon, 22 Nov 2010, Rados?aw Smogura wrote:

>
> In TypeInfo.getPGArrayElement it is written "Returns: the base type's OID,
> or 0 if unknown", but if given oid isn't array exception is thrown (empty
> result set), if unknown doesn't means unspecified then following patch

Yes, it does have the assumption that the oid passes is an array type, but
I'm not sure that's a problem.  Is there a case that you want to use this
for a type that may or may not be an array and don't want an exception
thrown?  If not, I think updating the documentation is the way to go.

Kris Jurka

Re: TypeInfoCache.getPGArrayElement - determine if array

From
Radosław Smogura
Date:
Hi,

Yes, I works on binary read/write (more read) and I search simple way to
determine if given type is array type. But I think I've found good solution
getSQLType() == Java.ARRAY, is it OK?

By the way I've passed almost 85% of JDBC test in binary mode, arrays,
unknown types and few procedure meta data test left. Few fails are for
discussion, as binary PG doesn't give information available in text mode.

Kind regards,
Radek

On Tue, 23 Nov 2010 02:28:02 -0500 (EST), Kris Jurka <books@ejurka.com>
wrote:
> On Mon, 22 Nov 2010, Rados?aw Smogura wrote:
>
>>
>> In TypeInfo.getPGArrayElement it is written "Returns: the base type's
>> OID,
>> or 0 if unknown", but if given oid isn't array exception is thrown
(empty
>> result set), if unknown doesn't means unspecified then following patch
>
> Yes, it does have the assumption that the oid passes is an array type,
but
> I'm not sure that's a problem.  Is there a case that you want to use
this
> for a type that may or may not be an array and don't want an exception
> thrown?  If not, I think updating the documentation is the way to go.
>
> Kris Jurka

--
----------
Radosław Smogura
http://www.softperience.eu