Re: sql type reported for enum

From: "Hudson, Derrick" <dhudson(at)redcom(dot)com>
To: "rcohen(at)e1b(dot)org" <rcohen(at)e1b(dot)org>, "pgsql-jdbc(at)postgresql(dot)org" <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: sql type reported for enum
Date: 2015-08-19 13:11:37
Message-ID: 401084E5E73F4241A44F3C9E6FD79428011BBAC39B@exch-01
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

There is the following change, which may be related:

https://jdbc.postgresql.org/documentation/changelog.html#version_9.2-1003

Author: Tom Dunstan Date: Sun Jul 7 16:20:41 2013 +0930
Make PreparedStatement.getObject() for an enum type return a string rather than a PGObject

________________________________________
From: pgsql-jdbc-owner(at)postgresql(dot)org [pgsql-jdbc-owner(at)postgresql(dot)org] On Behalf Of rcohen(at)e1b(dot)org [rcohen(at)e1b(dot)org]
Sent: Tuesday, August 18, 2015 5:21 PM
To: pgsql-jdbc(at)postgresql(dot)org
Subject: [JDBC] sql type reported for enum

I have some metadata utilities that query jdbc column metadata,
and I'm fairly certain that my enum colums, which used to be reported at
Type.OTHER, are now being reported as Type.VARCHAR.

That is,
rs.getInt("DATA_TYPE")
returns Type.OTHER

The type names, however, seem to be correct. Thus,
rs.getString("TYPE_NAME")
returns the actual enum name.

Not only does my code now behave differently, but I also
see that 3rd party libraries (DBUnit) are also now missing
enum columns.

Thus, DBUnit's PostgresqlDataTypeFactory code for returning enums never
gets hits because the sqlType is never Types.OTHER:

if (sqlType == Types.OTHER)
if ("uuid".equals(sqlTypeName))
return new UuidType();
else if ("interval".equals(sqlTypeName))
return new IntervalType();
else if ("inet".equals(sqlTypeName))
return new InetType();
else
{
// Finally check whether the user defined a custom datatype
if(isEnumType(sqlTypeName))
{
if(logger.isDebugEnabled())
return new GenericEnumType(sqlTypeName);
}
}

So did something change recently in the drivers? I've recently upgraded my database from
9.1 to 9.4, along with my jdbc drivers.

Thanks,
Ross

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Dave Cramer 2015-08-19 13:18:27 Re: sql type reported for enum
Previous Message Victor Wagner 2015-08-19 12:41:20 Re: Proposal: Implement failover on libpq connect level.