[
https://issues.apache.org/jira/browse/GROOVY-7751?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15146215#comment-15146215
]
ASF GitHub Bot commented on GROOVY-7751:
GitHub user jwagenleitner opened a pull request:
https://github.com/apache/groovy/pull/263
GROOVY-7751 - CallableStatement leak in Sql.call() method
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/jwagenleitner/groovy GROOVY-7751
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/groovy/pull/263.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #263
commit 0b628560afaa56de550ee2bc5d076851612a8363
Author: John Wagenleitner
Date: 2016-02-13T20:57:04Z
GROOVY-7751 - CallableStatement leak in Sql.call() method
> CallableStatement leak in Sql.call() method
> ---
>
> Key: GROOVY-7751
> URL: https://issues.apache.org/jira/browse/GROOVY-7751
> Project: Groovy
> Issue Type: Bug
> Components: SQL processing
>Affects Versions: 2.4.5
>Reporter: Alexey Vladykin
>
> All {{Sql.call(...)}} methods ultimately delegate to
> {{Sql.callWithRows(...)}} method where we have:
> {code:java}
> try {
> statement = connection.prepareCall(sql);
> // ...
> } finally {
> // ...
> closeResources(connection, statement);
> }
> {code}
> The problem is that statement is unconditionally parsed and compiled each
> time, but the {{closeResources()}} method only closes it when statement
> caching is disabled. So with statement caching enabled we end up allocating
> and leaking a new CallableStatement instance per {{Sql.call()}} invocation.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)