This is an automated email from the git hooks/post-receive script.

ebourg-guest pushed a commit to tag REL7_4_1
in repository libpostgresql-jdbc-java.

commit 02929d62fda0cd2352c8b65a7e739bd8b6cc717c
Author: Dave Cramer <[email protected]>
Date:   Wed Dec 17 15:48:40 2003 +0000

    back patching fix for compat 7.1 binary stream issues with the new protocol
    added test for same
---
 org/postgresql/fastpath/Fastpath.java              |  2 +-
 org/postgresql/largeobject/LargeObjectManager.java |  6 +-
 org/postgresql/test/jdbc2/Jdbc2TestSuite.java      |  1 +
 org/postgresql/test/jdbc2/OID74Test.java           | 99 ++++++++++++++++++++++
 4 files changed, 106 insertions(+), 2 deletions(-)

diff --git a/org/postgresql/fastpath/Fastpath.java 
b/org/postgresql/fastpath/Fastpath.java
index b88fbba..1427a45 100644
--- a/org/postgresql/fastpath/Fastpath.java
+++ b/org/postgresql/fastpath/Fastpath.java
@@ -63,7 +63,7 @@ public class Fastpath
         */
        public Object fastpath(int fnid, boolean resulttype, FastpathArg[] 
args) throws SQLException
        {
-               if (conn.haveMinimumServerVersion("7.4")) {
+               if (conn.haveMinimumCompatibleVersion("7.4")) {
                        return fastpathV3(fnid, resulttype, args);
                } else {
                        return fastpathV2(fnid, resulttype, args);
diff --git a/org/postgresql/largeobject/LargeObjectManager.java 
b/org/postgresql/largeobject/LargeObjectManager.java
index 7abfd7f..5f22367 100644
--- a/org/postgresql/largeobject/LargeObjectManager.java
+++ b/org/postgresql/largeobject/LargeObjectManager.java
@@ -116,7 +116,7 @@ public class LargeObjectManager
                if (conn.getMetaData().supportsSchemasInTableDefinitions()) {
                        sql = "SELECT p.proname,p.oid "+
                                " FROM pg_catalog.pg_proc p, 
pg_catalog.pg_namespace n "+
-                               " WHERE p.pronamespace=n.oid AND 
n.nspname='pg_catalog' AND ";
+                               " WHERE p.pronamespace=n.oid AND 
n.nspname='pg_catalog' AND (";
                } else {
                        sql = "SELECT proname,oid FROM pg_proc WHERE ";
                }
@@ -129,6 +129,10 @@ public class LargeObjectManager
                        " or proname = 'loread'" +
                        " or proname = 'lowrite'";
 
+               if (conn.getMetaData().supportsSchemasInTableDefinitions()) {
+                       sql += ")";
+               }
+
                ResultSet res = conn.createStatement().executeQuery(sql);
 
                if (res == null)
diff --git a/org/postgresql/test/jdbc2/Jdbc2TestSuite.java 
b/org/postgresql/test/jdbc2/Jdbc2TestSuite.java
index 31af0c5..7a5acab 100644
--- a/org/postgresql/test/jdbc2/Jdbc2TestSuite.java
+++ b/org/postgresql/test/jdbc2/Jdbc2TestSuite.java
@@ -57,6 +57,7 @@ public class Jdbc2TestSuite extends TestSuite
 
                // Fastpath/LargeObject
                suite.addTestSuite(BlobTest.class);
+               suite.addTestSuite(OID74Test.class);
 
                suite.addTestSuite(UpdateableResultTest.class );
 
diff --git a/org/postgresql/test/jdbc2/OID74Test.java 
b/org/postgresql/test/jdbc2/OID74Test.java
new file mode 100644
index 0000000..3aacedc
--- /dev/null
+++ b/org/postgresql/test/jdbc2/OID74Test.java
@@ -0,0 +1,99 @@
+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.sql.*;
+
+/**
+ * User: alexei
+ * Date: 17-Dec-2003
+ * Time: 11:01:44
+ * @version $Id$
+ */
+public class OID74Test  extends TestCase
+{
+       private Connection con;
+    
+
+       public OID74Test( String name )
+       {
+               super(name);
+       }
+       public void setUp() throws Exception
+       {
+       }
+       public void tearDown() throws Exception
+       {
+       }
+       public void testBinaryStream()
+       {
+               //set up conection here
+               Connection c = null;
+               
+               Statement st = null; 
+               try 
+               {
+                       c =  
DriverManager.getConnection("jdbc:postgresql://localhost/test?compatible=7.1&user=test");
+                       c.setAutoCommit(false);
+                       st = c.createStatement();
+                       st.execute("CREATE temp TABLE temp (col oid)");
+               }
+                catch (SQLException e) 
+               {
+                       //another issue: when connecting to 7.3 database and 
this exception occurs because the table already exists,
+                       //st.setBinaryStream throws internal error in 
LargeObjectManager initialisation code
+                       fail("table creating error, probably already exists, 
code=" + e.getErrorCode());
+               }
+               finally
+               {
+                       try{ if (st != null) st.close(); }catch(SQLException 
ex){};
+               }
+               
+               PreparedStatement pstmt = null;
+               try 
+               {
+               
+                       pstmt = c.prepareStatement("INSERT INTO temp VALUES 
(?)");
+                       //in case of 7.4 server, should block here
+                       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() );
+
+                       //in case of 7.4 server, should block here
+                       InputStream in = rs.getBinaryStream(1);
+                       int data;
+                       while ((data = in.read()) != -1)
+                               System.out.println(data);
+                       rs.close();
+                       st.close();
+                       c.createStatement().executeUpdate("DELETE FROM temp");
+                       c.commit();
+               }
+               catch ( IOException ioex )
+               {
+                       fail( ioex.getMessage() );
+               }
+               catch (SQLException ex)
+               {
+                       fail( ex.getMessage() );
+               } 
+               finally 
+               {
+                       try
+                       {
+                               if ( c!=null) c.close();
+                       }
+                       catch( SQLException e1){}
+               }
+       }       
+}

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-java/libpostgresql-jdbc-java.git

_______________________________________________
pkg-java-commits mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

Reply via email to