Postgresql Community:

We have an Java/JDBC application that runs against a range of versions of Postgresql from 7.4 though 8.3 and are now moving to 8.4.

Because our databases will never approach 4GB in size we still use OIDs ... that is, in newer versions of Postgresql we create OIDs on all tables with:

SET default_with_oids = true;

In Postgresql 8.4, however, we are seeing the following error:

SQL error executing statement.
update status set some_column = 'some_value' where oid = 'some_string'
org.postgresql.util.PSQLException: ERROR: operator does not exist: oid = character varying Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.
 Position: 132

Because these SQL commands are generated on the fly by a Java application that opens a JDBC connection to our database, we would rather not use explicit casting and would prefer to add appropriate casts in our Postgresql 8.4 databases to match the behavior that we get in Postgresql 7.4/8.0/8.1/8.2/8.3 databases.

When I issue the command "\dC" and look for the casts that would convert an OID to character varying, in Postgresql 8.3 and earlier I find the cast:

Source type   Target type             Function   Implicit?
oid                 character_varying   text           in assignment

This cast is missing in Postgresql 8.4.

So, I thought I could resolve this by creating the appropriate cast. After checking the documentation and running as the database user postgres, I thought that the following CREATE CAST command would create the "missing" oid to character varying cast:

CREATE CAST (oid AS character varying) WITH FUNCTION text(oid) AS ASSIGNMENT;

However, this results in "ERROR: function text(oid) does not exist."

Clearly, I must have misread or misunderstood the CREATE CAST syntax in my attempts to create a pre-Postgresql-8.4 cast from oid to character varying. Does anyone with more experience using the CREATE CAST command see my problem?

Thanks for your consideration,

John




--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to