[libpostgresql-jdbc-java] 09/14: Backpatch the fix for incorrect parameter indexes on CallableStatements that do not return values to 8.1

Emmanuel Bourg ebourg-guest at moszumanska.debian.org
Mon Jan 9 10:19:51 UTC 2017


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

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

commit f74b6741b62ecbdbca514992d213a3d47118175f
Author: Kris Jurka <books at ejurka.com>
Date:   Mon Jan 30 20:10:41 2006 +0000

    Backpatch the fix for incorrect parameter indexes on
    CallableStatements that do not return values to 8.1
---
 org/postgresql/jdbc2/AbstractJdbc2Statement.java   | 11 +++++++++--
 org/postgresql/jdbc2/Jdbc2CallableStatement.java   |  6 ++++--
 org/postgresql/jdbc3/Jdbc3CallableStatement.java   |  6 ++++--
 org/postgresql/jdbc3g/Jdbc3gCallableStatement.java |  6 ++++--
 org/postgresql/test/jdbc2/CallableStmtTest.java    | 15 ++++++++++++++-
 5 files changed, 35 insertions(+), 9 deletions(-)

diff --git a/org/postgresql/jdbc2/AbstractJdbc2Statement.java b/org/postgresql/jdbc2/AbstractJdbc2Statement.java
index 83e4c4d..365786a 100644
--- a/org/postgresql/jdbc2/AbstractJdbc2Statement.java
+++ b/org/postgresql/jdbc2/AbstractJdbc2Statement.java
@@ -3,7 +3,7 @@
 * Copyright (c) 2004-2005, PostgreSQL Global Development Group
 *
 * IDENTIFICATION
-*   $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java,v 1.84 2005/10/03 17:27:31 jurka Exp $
+*   $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java,v 1.84.2.1 2005/12/04 21:41:21 jurka Exp $
 *
 *-------------------------------------------------------------------------
 */
@@ -68,9 +68,16 @@ public abstract class AbstractJdbc2Statement implements BaseStatement
      * logic and old function call logic
      * will be set to true if the server is < 8.1 or 
      * if we are using v2 protocol
+     * There is an exception to this where we are using v3, and the
+     * call does not have an out parameter before the call
      */
     protected boolean adjustIndex = false;
     
+    /*
+     * Used to set adjustIndex above
+     */
+    protected boolean outParmBeforeFunc=false;
+    
     // Static variables for parsing SQL when replaceProcessing is true.
     private static final short IN_SQLCODE = 0;
     private static final short IN_STRING = 1;
@@ -2098,7 +2105,7 @@ public abstract class AbstractJdbc2Statement implements BaseStatement
         int len = p_sql.length();
         int state = 1;
         boolean inQuotes = false, inEscape = false;
-        boolean outParmBeforeFunc = false;
+        outParmBeforeFunc = false;
         int startIndex = -1, endIndex = -1;
         boolean syntaxError = false;
         int i = 0;
diff --git a/org/postgresql/jdbc2/Jdbc2CallableStatement.java b/org/postgresql/jdbc2/Jdbc2CallableStatement.java
index df01e38..bc25bf1 100644
--- a/org/postgresql/jdbc2/Jdbc2CallableStatement.java
+++ b/org/postgresql/jdbc2/Jdbc2CallableStatement.java
@@ -3,7 +3,7 @@
 * Copyright (c) 2004-2005, PostgreSQL Global Development Group
 *
 * IDENTIFICATION
-*   $PostgreSQL: pgjdbc/org/postgresql/jdbc2/Jdbc2CallableStatement.java,v 1.11 2005/01/11 08:25:46 jurka Exp $
+*   $PostgreSQL: pgjdbc/org/postgresql/jdbc2/Jdbc2CallableStatement.java,v 1.12 2005/07/08 17:38:30 davec Exp $
 *
 *-------------------------------------------------------------------------
 */
@@ -24,7 +24,9 @@ class Jdbc2CallableStatement extends Jdbc2PreparedStatement implements CallableS
         super(connection, sql, true, rsType, rsConcurrency);
         if ( !connection.haveMinimumServerVersion("8.1") || connection.getProtocolVersion() == 2)
         {
-            adjustIndex = true;
+            // if there is no out parameter before the function determined by modifyJdbcCall then do not
+            // set adjustIndex to true
+            adjustIndex = outParmBeforeFunc;
         }
     }
     public void registerOutParameter( int parameterIndex, int sqlType ) throws SQLException
diff --git a/org/postgresql/jdbc3/Jdbc3CallableStatement.java b/org/postgresql/jdbc3/Jdbc3CallableStatement.java
index f0e9b0d..165c3d2 100644
--- a/org/postgresql/jdbc3/Jdbc3CallableStatement.java
+++ b/org/postgresql/jdbc3/Jdbc3CallableStatement.java
@@ -3,7 +3,7 @@
 * Copyright (c) 2004-2005, PostgreSQL Global Development Group
 *
 * IDENTIFICATION
-*   $PostgreSQL: pgjdbc/org/postgresql/jdbc3/Jdbc3CallableStatement.java,v 1.12 2005/07/08 17:38:30 davec Exp $
+*   $PostgreSQL: pgjdbc/org/postgresql/jdbc3/Jdbc3CallableStatement.java,v 1.13 2005/07/16 12:17:48 davec Exp $
 *
 *-------------------------------------------------------------------------
 */
@@ -20,7 +20,9 @@ class Jdbc3CallableStatement extends Jdbc3PreparedStatement implements CallableS
         super(connection, sql, true, rsType, rsConcurrency, rsHoldability);
         if ( !connection.haveMinimumServerVersion("8.1") || connection.getProtocolVersion() == 2)
         {
-            adjustIndex = true;
+            // if there is no out parameter before the function determined by modifyJdbcCall then do not
+            // set adjustIndex to true
+            adjustIndex = outParmBeforeFunc;
         }
     }
    
diff --git a/org/postgresql/jdbc3g/Jdbc3gCallableStatement.java b/org/postgresql/jdbc3g/Jdbc3gCallableStatement.java
index 5a8b22c..6cf4a82 100644
--- a/org/postgresql/jdbc3g/Jdbc3gCallableStatement.java
+++ b/org/postgresql/jdbc3g/Jdbc3gCallableStatement.java
@@ -3,7 +3,7 @@
 * Copyright (c) 2004-2005, PostgreSQL Global Development Group
 *
 * IDENTIFICATION
-*   $PostgreSQL: pgjdbc/org/postgresql/jdbc3g/Jdbc3gCallableStatement.java,v 1.4 2005/01/11 08:25:47 jurka Exp $
+*   $PostgreSQL: pgjdbc/org/postgresql/jdbc3g/Jdbc3gCallableStatement.java,v 1.5 2005/08/12 18:09:02 jurka Exp $
 *
 *-------------------------------------------------------------------------
 */
@@ -19,7 +19,9 @@ class Jdbc3gCallableStatement extends Jdbc3gPreparedStatement implements Callabl
         super(connection, sql, true, rsType, rsConcurrency, rsHoldability);
         if ( !connection.haveMinimumServerVersion("8.1") || connection.getProtocolVersion() == 2)
         {
-            adjustIndex = true;
+            // if there is no out parameter before the function determined by modifyJdbcCall then do not
+            // set adjustIndex to true
+            adjustIndex = outParmBeforeFunc;
         }
     }
 
diff --git a/org/postgresql/test/jdbc2/CallableStmtTest.java b/org/postgresql/test/jdbc2/CallableStmtTest.java
index 976ad8e..bc362ab 100644
--- a/org/postgresql/test/jdbc2/CallableStmtTest.java
+++ b/org/postgresql/test/jdbc2/CallableStmtTest.java
@@ -3,7 +3,7 @@
 * Copyright (c) 2004-2005, PostgreSQL Global Development Group
 *
 * IDENTIFICATION
-*   $PostgreSQL: pgjdbc/org/postgresql/test/jdbc2/CallableStmtTest.java,v 1.16 2005/06/21 18:07:08 davec Exp $
+*   $PostgreSQL: pgjdbc/org/postgresql/test/jdbc2/CallableStmtTest.java,v 1.17 2005/07/04 18:50:29 davec Exp $
 *
 *-------------------------------------------------------------------------
 */
@@ -37,6 +37,9 @@ public class CallableStmtTest extends TestCase
         stmt.execute ("CREATE OR REPLACE FUNCTION testspg__getDouble (float) " +
                       "RETURNS float AS ' DECLARE inString alias for $1; begin " +
                       "return 42.42; end; ' LANGUAGE 'plpgsql';");
+        stmt.execute ("CREATE OR REPLACE FUNCTION testspg__getVoid (float) " +
+                "RETURNS void AS ' DECLARE inString alias for $1; begin " +
+                " return; end; ' LANGUAGE 'plpgsql';");
         stmt.execute ("CREATE OR REPLACE FUNCTION testspg__getInt (int) RETURNS int " +
                       " AS 'DECLARE inString alias for $1; begin " +
                       "return 42; end;' LANGUAGE 'plpgsql';");      
@@ -60,6 +63,7 @@ public class CallableStmtTest extends TestCase
         Statement stmt = con.createStatement ();
         stmt.execute ("drop FUNCTION testspg__getString (varchar);");
         stmt.execute ("drop FUNCTION testspg__getDouble (float);");
+        stmt.execute( "drop FUNCTION testspg__getVoid(float);");
         stmt.execute ("drop FUNCTION testspg__getInt (int);");
         stmt.execute ("drop FUNCTION testspg__getShort(int2)");
         stmt.execute ("drop FUNCTION testspg__getNumeric (numeric);");
@@ -85,6 +89,15 @@ public class CallableStmtTest extends TestCase
         call.registerOutParameter (1, Types.DOUBLE);
         call.execute ();
         assertEquals(42.42, call.getDouble(1), 0.00001);
+        
+        // test without an out parameter
+        call = con.prepareCall( "{ call " + pkgName + "getDouble(?) }");
+        call.setDouble( 1, (double)3.04 );
+        call.execute();
+        
+        call = con.prepareCall( "{ call " + pkgName + "getVoid(?) }");
+        call.setDouble( 1, (double)3.04 );
+        call.execute();
     }
 
     public void testGetInt () throws Throwable

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



More information about the pkg-java-commits mailing list