[ 
https://issues.apache.org/jira/browse/DDLUTILS-161?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12479308
 ] 

Richard Bounds commented on DDLUTILS-161:
-----------------------------------------

I'm actually using Hibernate to access the database, but I think the attached 
unit test reproduces the problem more simply with plain JDBC - it creates a 
table, inserts a row with a blob, copies the blob to a new row, then deletes 
the table. When the table has a column of type OID, everything seems fine. When 
it is BYTEA I get the following exception:
org.postgresql.util.PSQLException: ERROR: column "photo" is of type bytea but 
expression is of type integer
        at 
org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1525)
        at 
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1309)
        at 
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:188)
        at 
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)
        at 
org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:354)
        at 
org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:308)
        at TestPostgresBlob.testBlob(TestPostgresBlob.java:69)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at junit.framework.TestCase.runTest(TestCase.java:164)
        at junit.framework.TestCase.runBare(TestCase.java:130)
        at junit.framework.TestResult$1.protect(TestResult.java:106)
        at junit.framework.TestResult.runProtected(TestResult.java:124)
        at junit.framework.TestResult.run(TestResult.java:109)
        at junit.framework.TestCase.run(TestCase.java:120)
        at junit.framework.TestSuite.runTest(TestSuite.java:230)
        at junit.framework.TestSuite.run(TestSuite.java:225)

For some reason I can reproduce this with either set of Drivers - I guess 
perhaps Hibernate is doing something to detect the V7 drivers.

> PostgreSQL Blob type mapping should be OID in v8
> ------------------------------------------------
>
>                 Key: DDLUTILS-161
>                 URL: https://issues.apache.org/jira/browse/DDLUTILS-161
>             Project: DdlUtils
>          Issue Type: Bug
>          Components: Core - PostgreSql
>         Environment: PostgreSQL 8.1.8 on Fedora core 6 (i386).
>            Reporter: Richard Bounds
>         Assigned To: Thomas Dudziak
>
> For PostgreSQL v8 JDBC drivers the blob type maps to OID, not BYTEA:
> from here: http://doc.postgresintl.com/jdbc/ch08.html
>  "....To use the Large Object functionality you can use either the 
> LargeObject class provided by the PostgreSQLâ„¢ JDBC driver, or by using the 
> getBLOB() and setBLOB() methods...." 
> When using PostgreSQL (v7 or v8) with the v7 JDBC drivers BYTEA works fine, 
> but with the v8 drivers you get an error message:
> ERROR: column "binvalue" is of type bytea but expression is of type oid

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to