diff --git a/extensions/modules/sql/src/main/java/org/exist/xquery/modules/sql/ExecuteFunction.java b/extensions/modules/sql/src/main/java/org/exist/xquery/modules/sql/ExecuteFunction.java index 34d721e773..dbb17ccb9b 100644 --- a/extensions/modules/sql/src/main/java/org/exist/xquery/modules/sql/ExecuteFunction.java +++ b/extensions/modules/sql/src/main/java/org/exist/xquery/modules/sql/ExecuteFunction.java @@ -428,8 +428,9 @@ private ElementImpl resultAsElement(final boolean makeNodeFromColumnName, final //get the content if (rsmd.getColumnType(i + 1) == Types.SQLXML) { //parse sqlxml value + @Nullable SQLXML sqlXml = null; try { - final SQLXML sqlXml = rs.getSQLXML(i + 1); + sqlXml = rs.getSQLXML(i + 1); if (rs.wasNull()) { // Add a null indicator attribute if the value was SQL Null @@ -455,7 +456,12 @@ private ElementImpl resultAsElement(final boolean makeNodeFromColumnName, final } } catch (final Exception e) { throw new XPathException(this, "Could not parse column of type SQLXML: " + e.getMessage(), e); + } finally { + if (sqlXml != null) { + sqlXml.free(); + } } + } else { //otherwise assume string value final String colValue = rs.getString(i + 1);