postgresql-jdbc.git / summary / log / commit / refs
commit 83023f3c2ae98dc69df00a560dbbe386afafe3b1
Author: Vladimir Sitnikov <sitnikov.vladimir@gmail.com>
Date: Sat Jan 03 09:26:52 2026 +0000
fix: close temporary lob descriptors that are used internally in PreparedStatement#setBlob
Fixes https://github.com/pgjdbc/pgjdbc/issues/3902
.../main/java/org/postgresql/jdbc/PgPreparedStatement.java | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/pgjdbc/src/main/java/org/postgresql/jdbc/PgPreparedStatement.java b/pgjdbc/src/main/java/org/postgresql/jdbc/PgPreparedStatement.java
index ab3f8b99..3ebd0c62 100644
--- a/pgjdbc/src/main/java/org/postgresql/jdbc/PgPreparedStatement.java
+++ b/pgjdbc/src/main/java/org/postgresql/jdbc/PgPreparedStatement.java
@@ -713,7 +713,7 @@ class PgPreparedStatement extends PgStatement implements PreparedStatement {
if (in instanceof Blob) {
setBlob(parameterIndex, (Blob) in);
} else if (in instanceof InputStream) {
- long oid = createBlob(parameterIndex, (InputStream) in, Long.MAX_VALUE);
+ long oid = createBlob((InputStream) in, Long.MAX_VALUE);
setLong(parameterIndex, oid);
} else {
throw new PSQLException(
@@ -1251,12 +1251,12 @@ class PgPreparedStatement extends PgStatement implements PreparedStatement {
setString(i, x.toString(), oid);
}
- protected long createBlob(int i, InputStream inputStream,
+ protected long createBlob(InputStream inputStream,
@NonNegative long length) throws SQLException {
LargeObjectManager lom = connection.getLargeObjectAPI();
long oid = lom.createLO();
- LargeObject lob = lom.open(oid);
- try (OutputStream outputStream = lob.getOutputStream()) {
+ try (LargeObject lob = lom.open(oid);
+ OutputStream outputStream = lob.getOutputStream()) {
// The actual buffer size does not matter much, see benchmarks
// https://github.com/pgjdbc/pgjdbc/pull/3044#issuecomment-1838057929
// BlobOutputStream would gradually increase the buffer, so it will level the number of
@@ -1294,7 +1294,7 @@ class PgPreparedStatement extends PgStatement implements PreparedStatement {
// See https://github.com/pgjdbc/pgjdbc/issues/3134
maxLength = Long.MAX_VALUE;
}
- long oid = createBlob(i, inStream, maxLength);
+ long oid = createBlob(inStream, maxLength);
setLong(i, oid);
} catch (IOException e) {
throw new PSQLException(GT.tr("Unexpected error when closing Blob binary stream"),
@@ -1704,7 +1704,7 @@ class PgPreparedStatement extends PgStatement implements PreparedStatement {
PSQLState.INVALID_PARAMETER_VALUE);
}
- long oid = createBlob(parameterIndex, inputStream, length);
+ long oid = createBlob(inputStream, length);
setLong(parameterIndex, oid);
}
@@ -1718,7 +1718,7 @@ class PgPreparedStatement extends PgStatement implements PreparedStatement {
return;
}
- long oid = createBlob(parameterIndex, inputStream, Long.MAX_VALUE);
+ long oid = createBlob(inputStream, Long.MAX_VALUE);
setLong(parameterIndex, oid);
}
[parent: 62c9805ef860]