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.