You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2017/04/07 13:31:17 UTC

[34/50] [abbrv] groovy git commit: GROOVY-8128: Breaking change in 2.4.9 with Sql query with GString

GROOVY-8128: Breaking change in 2.4.9 with Sql query with GString


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/a299cbaf
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/a299cbaf
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/a299cbaf

Branch: refs/heads/parrot
Commit: a299cbaffa6ba23f3b484b01b3457448ed8d3634
Parents: d1ecc17
Author: paulk <pa...@asert.com.au>
Authored: Mon Mar 27 23:19:24 2017 +1000
Committer: paulk <pa...@asert.com.au>
Committed: Mon Mar 27 23:19:24 2017 +1000

----------------------------------------------------------------------
 .../src/main/java/groovy/sql/Sql.java           | 25 ++++++++++++++------
 1 file changed, 18 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/a299cbaf/subprojects/groovy-sql/src/main/java/groovy/sql/Sql.java
----------------------------------------------------------------------
diff --git a/subprojects/groovy-sql/src/main/java/groovy/sql/Sql.java b/subprojects/groovy-sql/src/main/java/groovy/sql/Sql.java
index a896109..26d52df 100644
--- a/subprojects/groovy-sql/src/main/java/groovy/sql/Sql.java
+++ b/subprojects/groovy-sql/src/main/java/groovy/sql/Sql.java
@@ -4108,19 +4108,30 @@ public class Sql {
      */
     protected void setParameters(List<Object> params, PreparedStatement statement) throws SQLException {
         int i = 1;
-        ParameterMetaData metaData = statement.getParameterMetaData();
-        if (metaData.getParameterCount() == 0 && params.size() == 1 && params.get(0) instanceof Map) {
-            Map paramsMap = (Map) params.get(0);
-            if (paramsMap.isEmpty()) return;
-        }
-        if (metaData.getParameterCount() != params.size()) {
-            throw new IllegalArgumentException("Found " + metaData.getParameterCount() + " parameter placeholders but supplied with " + params.size() + " parameters");
+        ParameterMetaData metaData = getParameterMetaDataSafe(statement);
+        if (metaData != null) {
+            if (metaData.getParameterCount() == 0 && params.size() == 1 && params.get(0) instanceof Map) {
+                Map paramsMap = (Map) params.get(0);
+                if (paramsMap.isEmpty()) return;
+            }
+            if (metaData.getParameterCount() != params.size()) {
+                throw new IllegalArgumentException("Found " + metaData.getParameterCount() + " parameter placeholders but supplied with " + params.size() + " parameters");
+            }
         }
         for (Object value : params) {
             setObject(statement, i++, value);
         }
     }
 
+    private ParameterMetaData getParameterMetaDataSafe(PreparedStatement statement) throws SQLException {
+        try {
+            return statement.getParameterMetaData();
+        } catch(SQLException se) {
+            LOG.fine("Unable to retrieve parameter metadata - reduced checking will occur: " + se.getMessage());
+            return null;
+        }
+    }
+
     /**
      * Strategy method allowing derived classes to handle types differently
      * such as for CLOBs etc.