[libpostgresql-jdbc-java] 05/06: backpatched to deal with callable batch statements

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


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

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

commit c143cec5c9ca4bbc874b1cc878d26e240e7d4909
Author: Dave Cramer <davec at fastcrypt.com>
Date:   Wed Jan 30 12:49:00 2008 +0000

    backpatched to deal with callable batch statements
---
 org/postgresql/jdbc2/AbstractJdbc2Statement.java | 77 +++++++++++++++++++++++-
 1 file changed, 75 insertions(+), 2 deletions(-)

diff --git a/org/postgresql/jdbc2/AbstractJdbc2Statement.java b/org/postgresql/jdbc2/AbstractJdbc2Statement.java
index 237eb62..c237234 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.96.2.4 2007/06/22 21:37:40 jurka Exp $
+*   $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java,v 1.96.2.5 2007/07/27 09:01:53 jurka Exp $
 *
 *-------------------------------------------------------------------------
 */
@@ -2546,6 +2546,72 @@ public abstract class AbstractJdbc2Statement implements BaseStatement
         }
     }
 
+    private class CallableBatchResultHandler implements ResultHandler {
+        private BatchUpdateException batchException = null;
+        private int resultIndex = 0;
+
+        private final Query[] queries;
+        private final ParameterList[] parameterLists;
+        private final int[] updateCounts;
+
+        CallableBatchResultHandler(Query[] queries, ParameterList[] parameterLists, int[] updateCounts) {
+            this.queries = queries;
+            this.parameterLists = parameterLists;
+            this.updateCounts = updateCounts;
+        }
+
+        public void handleResultRows(Query fromQuery, Field[] fields, Vector tuples, ResultCursor cursor) 
+        {
+            
+        }
+
+        public void handleCommandStatus(String status, int updateCount, long insertOID) {
+            if (resultIndex >= updateCounts.length)
+            {
+                handleError(new PSQLException(GT.tr("Too many update results were returned."),
+                                              PSQLState.TOO_MANY_RESULTS));
+                return ;
+            }
+
+            updateCounts[resultIndex++] = updateCount;
+        }
+
+        public void handleWarning(SQLWarning warning) {
+            AbstractJdbc2Statement.this.addWarning(warning);
+        }
+
+        public void handleError(SQLException newError) {
+            if (batchException == null)
+            {
+                int[] successCounts;
+
+                if (resultIndex >= updateCounts.length)
+                    successCounts = updateCounts;
+                else
+                {
+                    successCounts = new int[resultIndex];
+                    System.arraycopy(updateCounts, 0, successCounts, 0, resultIndex);
+                }
+
+                String queryString = "<unknown>";
+                if (resultIndex < queries.length)
+                    queryString = queries[resultIndex].toString(parameterLists[resultIndex]);
+
+                batchException = new BatchUpdateException(GT.tr("Batch entry {0} {1} was aborted.  Call getNextException to see the cause.",
+                                 new Object[]{ new Integer(resultIndex),
+                                               queryString}),
+                                 successCounts);
+            }
+
+            batchException.setNextException(newError);
+        }
+
+        public void handleCompletion() throws SQLException {
+            if (batchException != null)
+                throw batchException;
+        }
+    }
+
     public int[] executeBatch() throws SQLException
     {
         checkClosed();
@@ -2592,7 +2658,14 @@ public abstract class AbstractJdbc2Statement implements BaseStatement
             flags |= QueryExecutor.QUERY_SUPPRESS_BEGIN;
 
         result = null;
-        BatchResultHandler handler = new BatchResultHandler(queries, parameterLists, updateCounts);
+
+		ResultHandler handler;
+		if (isFunction) {
+			handler = new CallableBatchResultHandler(queries, parameterLists, updateCounts );
+		} else {
+			handler = new BatchResultHandler(queries, parameterLists, updateCounts);
+		}
+		
         connection.getQueryExecutor().execute(queries,
                                               parameterLists,
                                               handler,

-- 
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