BLOB support is broken in the 7.2/7.3 JDBC driver, works in 7.1 driver

From: Marc Lavergne <mlavergn(at)richlava(dot)com>
To: pgsql-jdbc(at)postgresql(dot)org, pgsql-bugs(at)postgresql(dot)org
Cc: mlavergn <mlavergn(at)openwave(dot)com>
Subject: BLOB support is broken in the 7.2/7.3 JDBC driver, works in 7.1 driver
Date: 2002-02-13 07:12:49
Message-ID: 3C6A11F1.2030008@richlava.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

(NOTE: This is a report ... my cut-and-paste went a little haywire on
the last one.)

BLOB support is broken in the 7.2/7.3 JDBC driver, works in 7.1 driver
though. Basically, returns an error like the following on executeUpdate():

java.sql.SQLException: ERROR: oidin: error in "x": can't parse "x"

Fails on any file. In this case, I created a 1 byte file with the
character 'x' in it. I'm on Linux 2.4.16 using JDK 1.4.0 but it fails in
1.3.1 as well. Here's a quick reproducible test case:

-- start --

package sample.java.jdbc;

import java.sql.*;

import java.io.*;
import java.util.*;

class testBlob
{
public static void main(String args[])
{
new testBlob();
System.exit(0);
}

public testBlob()
{
System.out.println("Let's begin the test ...");

String v_username = "postgre";
String v_password = "postgre";
String v_database = "jdbc:postgresql://127.0.0.1/TEST";

PreparedStatement v_pstmt = null;

try
{
DriverManager.registerDriver(new org.postgresql.Driver());
Connection v_conn = DriverManager.getConnection(
v_database, v_username, v_password);

v_conn.setAutoCommit(false);

File v_file = new File("/home/postgre/something.jpg");
FileInputStream v_fis = new FileInputStream(v_file);
v_pstmt = v_conn.prepareStatement(
"insert into lob_test (id,data) values (?,?)");

v_pstmt.setInt(1,2);
v_pstmt.setBinaryStream(2,v_fis,(int)v_file.length());

System.out.println("now you see me");
v_pstmt.executeUpdate();
System.out.println("now you don't");

v_conn.commit();

v_fis.close();
v_pstmt.close();
}
catch (IOException e_io)
{
System.out.println(e_io);
}
catch (SQLException e_sql)
{
System.out.println(e_sql);
}
System.out.println("You'll only get here with the 7.1 driver!");
}
}

-- end --

01010101010101010101010101010101010101010101010101

Marc P. Lavergne [wk:407-648-6996]
Product Development
richLAVA Corporation

--

"Anyone who slaps a 'this page is best viewed with
Browser X' label on a Web page appears to be
yearning for the bad old days, before the Web,
when you had very little chance of reading a
document written on another computer, another word
processor, or another network."
-Tim Berners-Lee (Technology Review, July 1996)

01010101010101010101010101010101010101010101010101

Browse pgsql-bugs by date

  From Date Subject
Next Message pgsql-bugs 2002-02-13 21:09:48 Bug #587: Postgresql will not build on HP-UX 11.0 in debug mode
Previous Message Marc Lavergne 2002-02-13 07:08:46 [Fwd: BLOB support is broken in the 7.2/7.3 JDBC driver, works in 7.1 driver java.sql.SQLException: ERROR: oidin: error in "\377\330\377\340... I'm on Linux 2.4.16 using JDK 1.4.0 but it fails in 1.3.1 as well. Here's a quick reproducible test case: -- start -- package sample.java.jdbc; import java.sql.*; import java.io.*; import java.util.*; class testBlob { public static void main(String args[]) { new testBlob(); System.exit(0); } public testBlob() { System.out.println("Let's begin the test ..."); String v_username = "postgre"; String v_password = "postgre"; String v_database = "jdbc:postgresql://127.0.0.1/TEST"; PreparedStatement v_pstmt = null; try { DriverManager.registerDriver(new org.postgresql.Driver()); Connection v_conn = DriverManager.getConnection( v_database, v_username, v_password); v_conn.setAutoCommit(false); File v_file = new File("/home/postgre/someth! ing.jpg"); FileInputStream v_fis = new FileInputStream(v_file); v_pstmt = v_conn.prepareStatement( "insert into lob_test (id,data) values (?,?)"); v_pstmt.setInt(1,2); v_pstmt.setBinaryStream(2,v_fis,(int)v_file.length()); System.out.println("now you see me"); v_pstmt.executeUpdate(); System.out.println("now you don't"); v_conn.commit(); v_fis.close(); v_pstmt.close(); } catch (IOException e_io) { System.out.println(e_io); } catch (SQLException e_sql) { System.out.println(e_sql); } System.out.println("You'll only get here with the 7.1 driver!"); } } -- end -- 01010101010101010101010101010101010101010101010101 Marc P. Lavergne [wk:407-648-6996] Product Development richLAVA Corporation -- "Anyone who slaps a 'this page is best viewed with Browser X' label on a Web page appears to be yearning for the bad old days, before the Web, when you had v! ery little chance of reading a document written on another computer, a