This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-csv.git
commit df3732ba2253ae35c86066d62f287a19bd14674b Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Tue Mar 12 07:24:33 2024 -0400 Use try-with-resources to manage JDBC Clob in CSVPrinter.printRecords(ResultSet) --- src/changes/changes.xml | 3 ++- src/main/java/org/apache/commons/csv/CSVPrinter.java | 10 ++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 0b854b7d..88dcaa6b 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -44,13 +44,14 @@ <!-- ADD --> <action issue="CSV-308" type="fix" dev="ggregory" due-to="Buddhi De Silva, Gary Gregory">[Javadoc] Add example to CSVFormat#setHeaderComments() #344.</action> <!-- FIX --> - <action issue="CSV-306" type="fix" dev="ggregory" due-to="Sam Ng, Bruno P. Kinoshita">Replace deprecated method in user guide, update external link #324, #325.</action> + <action type="fix" issue="CSV-306" dev="ggregory" due-to="Sam Ng, Bruno P. Kinoshita">Replace deprecated method in user guide, update external link #324, #325.</action> <action type="fix" dev="ggregory" due-to="Seth Falco, Bruno P. Kinoshita">Document duplicate header behavior #309.</action> <action type="fix" dev="ggregory" due-to="jkbkupczyk">Add missing docs #328.</action> <action type="fix" dev="ggregory" due-to="step-security-bot">[StepSecurity] CI: Harden GitHub Actions #329, #330.</action> <action type="fix" issue="CSV-147" dev="ggregory" due-to="Steven Peterson, Benedikt Ritter, Gary Gregory, Joerg Schaible, Buddhi De Silva, Elliotte Rusty Harold">Better error message during faulty CSV record read #347.</action> <action type="fix" issue="CSV-310" dev="ggregory" due-to="Buddhi De Silva">Misleading error message when QuoteMode set to None #352.</action> <action type="fix" issue="CSV-311" dev="ggregory" due-to="Christian Feuersaenger, Gary Gregory">OutOfMemory for very long rows despite using column value of type Reader.</action> + <action type="fix" dev="ggregory" due-to="Gary Gregory">Use try-with-resources to manage JDBC Clob in CSVPrinter.printRecords(ResultSet).</action> <!-- UPDATE --> <action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons-io:commons-io: from 2.11.0 to 2.15.1.</action> <action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">Bump commons-parent from 57 to 67.</action> diff --git a/src/main/java/org/apache/commons/csv/CSVPrinter.java b/src/main/java/org/apache/commons/csv/CSVPrinter.java index 239744c9..468f341b 100644 --- a/src/main/java/org/apache/commons/csv/CSVPrinter.java +++ b/src/main/java/org/apache/commons/csv/CSVPrinter.java @@ -24,6 +24,7 @@ import static org.apache.commons.csv.Constants.SP; import java.io.Closeable; import java.io.Flushable; import java.io.IOException; +import java.io.Reader; import java.sql.Clob; import java.sql.ResultSet; import java.sql.SQLException; @@ -414,8 +415,13 @@ public final class CSVPrinter implements Flushable, Closeable { while (resultSet.next()) { for (int i = 1; i <= columnCount; i++) { final Object object = resultSet.getObject(i); - // TODO Who manages the Clob? The JDBC driver or must we close it? Is it driver-dependent? - print(object instanceof Clob ? ((Clob) object).getCharacterStream() : object); + if (object instanceof Clob) { + try (Reader reader = ((Clob) object).getCharacterStream()) { + print(reader); + } + } else { + print(object); + } } println(); }