From bf95a9c03604a6bdc12eced27001627e790e328a Mon Sep 17 00:00:00 2001 From: hns Date: Tue, 5 Jun 2007 18:28:39 +0000 Subject: [PATCH] * Always use stream interface for retrieving BLOB and LONGVARBINARY columns. * Check for null reader in streamy LONGVARCHAR code. --- src/helma/objectmodel/db/NodeManager.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/helma/objectmodel/db/NodeManager.java b/src/helma/objectmodel/db/NodeManager.java index d0088c74..6a6a05cb 100644 --- a/src/helma/objectmodel/db/NodeManager.java +++ b/src/helma/objectmodel/db/NodeManager.java @@ -1747,11 +1747,9 @@ public final class NodeManager { case Types.NUMERIC: BigDecimal num = rs.getBigDecimal(columnNumber); - if (num == null) { break; } - if (num.scale() > 0) { newprop.setFloatValue(num.doubleValue()); } else { @@ -1768,10 +1766,11 @@ public final class NodeManager { case Types.BLOB: case Types.LONGVARBINARY: - try { - newprop.setJavaObjectValue(rs.getBytes(columnNumber)); - } catch (SQLException x) { + { InputStream in = rs.getBinaryStream(columnNumber); + if (in == null) { + break; + } ByteArrayOutputStream bout = new ByteArrayOutputStream(); byte[] buffer = new byte[2048]; int read; @@ -1788,6 +1787,10 @@ public final class NodeManager { newprop.setStringValue(rs.getString(columnNumber)); } catch (SQLException x) { Reader in = rs.getCharacterStream(columnNumber); + if (in == null) { + newprop.setStringValue(null); + break; + } StringBuffer out = new StringBuffer(); char[] buffer = new char[2048]; int read; @@ -1820,7 +1823,7 @@ public final class NodeManager { case Types.CLOB: Clob cl = rs.getClob(columnNumber); - if (cl==null) { + if (cl == null) { newprop.setStringValue(null); break; }