Skip to content

Commit 9269a09

Browse files
committed
[bugfix] SQLXML JDBC resources must be free'd after use to prevent a memory/resource leak
1 parent 11eefe8 commit 9269a09

1 file changed

Lines changed: 7 additions & 1 deletion

File tree

extensions/modules/sql/src/main/java/org/exist/xquery/modules/sql/ExecuteFunction.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,8 +428,9 @@ private ElementImpl resultAsElement(final boolean makeNodeFromColumnName, final
428428
//get the content
429429
if (rsmd.getColumnType(i + 1) == Types.SQLXML) {
430430
//parse sqlxml value
431+
@Nullable SQLXML sqlXml = null;
431432
try {
432-
final SQLXML sqlXml = rs.getSQLXML(i + 1);
433+
sqlXml = rs.getSQLXML(i + 1);
433434

434435
if (rs.wasNull()) {
435436
// Add a null indicator attribute if the value was SQL Null
@@ -455,7 +456,12 @@ private ElementImpl resultAsElement(final boolean makeNodeFromColumnName, final
455456
}
456457
} catch (final Exception e) {
457458
throw new XPathException(this, "Could not parse column of type SQLXML: " + e.getMessage(), e);
459+
} finally {
460+
if (sqlXml != null) {
461+
sqlXml.free();
462+
}
458463
}
464+
459465
} else {
460466
//otherwise assume string value
461467
final String colValue = rs.getString(i + 1);

0 commit comments

Comments
 (0)