-package org.postgresql.test.jdbc2;\r
- \r
-import org.postgresql.test.TestUtil;\r
-import junit.framework.TestCase;\r
-import java.io.*;\r
-import java.sql.*;\r
-\r
-import java.io.ByteArrayInputStream;\r
-import java.io.InputStream;\r
-import java.sql.*;\r
-\r
-/**\r
- * User: alexei\r
- * Date: 17-Dec-2003\r
- * Time: 11:01:44\r
- * @version $Id: OID74Test.java,v 1.2 2003/12/17 15:45:05 davec Exp $\r
- */\r
-public class OID74Test extends TestCase\r
-{\r
- private Connection con;\r
- \r
-\r
- public OID74Test( String name )\r
- {\r
- super(name);\r
- }\r
- public void setUp() throws Exception\r
- {\r
- }\r
- public void tearDown() throws Exception\r
- {\r
- }\r
- public void testBinaryStream()\r
- {\r
- //set up conection here\r
- Connection c = null;\r
- \r
- Statement st = null; \r
- try \r
- {\r
- c = DriverManager.getConnection("jdbc:postgresql://localhost/test?compatible=7.1&user=test");\r
- c.setAutoCommit(false);\r
- st = c.createStatement();\r
- st.execute("CREATE temp TABLE temp (col oid)");\r
- }\r
- catch (SQLException e) \r
- {\r
- //another issue: when connecting to 7.3 database and this exception occurs because the table already exists,\r
- //st.setBinaryStream throws internal error in LargeObjectManager initialisation code\r
- fail("table creating error, probably already exists, code=" + e.getErrorCode());\r
- }\r
- finally\r
- {\r
- try{ if (st != null) st.close(); }catch(SQLException ex){};\r
- }\r
- \r
- PreparedStatement pstmt = null;\r
- try \r
- {\r
- \r
- pstmt = c.prepareStatement("INSERT INTO temp VALUES (?)");\r
- //in case of 7.4 server, should block here\r
- pstmt.setBinaryStream(1, new ByteArrayInputStream(new byte[]{1, 2, 3, 4, 5}), 5);\r
- assertTrue( (pstmt.executeUpdate() == 1) );\r
- pstmt.close();\r
- \r
- pstmt = c.prepareStatement("SELECT col FROM temp LIMIT 1");\r
- ResultSet rs = pstmt.executeQuery();\r
-\r
- assertTrue("No results from query", rs.next() );\r
-\r
- //in case of 7.4 server, should block here\r
- InputStream in = rs.getBinaryStream(1);\r
- int data;\r
- while ((data = in.read()) != -1)\r
- System.out.println(data);\r
- rs.close();\r
- st.close();\r
- c.createStatement().executeUpdate("DELETE FROM temp");\r
- c.commit();\r
- }\r
- catch ( IOException ioex )\r
- {\r
- fail( ioex.getMessage() );\r
- }\r
- catch (SQLException ex)\r
- {\r
- fail( ex.getMessage() );\r
- } \r
- finally \r
- {\r
- try\r
- {\r
- if ( c!=null) c.close();\r
- }\r
- catch( SQLException e1){}\r
- }\r
- } \r
-}\r
+package org.postgresql.test.jdbc2;
+
+import org.postgresql.test.TestUtil;
+import junit.framework.TestCase;
+import java.io.*;
+import java.sql.*;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.Properties;
+import java.sql.*;
+
+/**
+ * User: alexei
+ * Date: 17-Dec-2003
+ * Time: 11:01:44
+ * @version $Id: OID74Test.java,v 1.3 2003/12/18 04:08:30 davec Exp $
+ */
+public class OID74Test extends TestCase
+{
+
+ public OID74Test( String name )
+ {
+ super(name);
+ }
+ public void setUp() throws Exception
+ {
+ }
+ public void tearDown() throws Exception
+ {
+ }
+ public void testBinaryStream() throws SQLException
+ {
+ //set up conection here
+ Properties props = new Properties();
+ props.setProperty("compatible","7.1");
+ Connection c = TestUtil.openDB(props);
+ c.setAutoCommit(false);
+
+ TestUtil.createTable(c,"temp","col oid");
+
+ Statement st = null;
+
+ PreparedStatement pstmt = null;
+ try
+ {
+
+ pstmt = c.prepareStatement("INSERT INTO temp VALUES (?)");
+ pstmt.setBinaryStream(1, new ByteArrayInputStream(new byte[]{1, 2, 3, 4, 5}), 5);
+ assertTrue( (pstmt.executeUpdate() == 1) );
+ pstmt.close();
+
+ pstmt = c.prepareStatement("SELECT col FROM temp LIMIT 1");
+ ResultSet rs = pstmt.executeQuery();
+
+ assertTrue("No results from query", rs.next() );
+
+ InputStream in = rs.getBinaryStream(1);
+ int data;
+ int i = 1;
+ while ((data = in.read()) != -1)
+ assertEquals(data,i++);
+ rs.close();
+ pstmt.close();
+ c.createStatement().executeUpdate("DELETE FROM temp");
+ c.commit();
+ }
+ catch ( IOException ioex )
+ {
+ fail( ioex.getMessage() );
+ }
+ catch (SQLException ex)
+ {
+ fail( ex.getMessage() );
+ }
+
+ TestUtil.dropTable(c,"temp");
+ TestUtil.closeDB(c);
+ }
+}