You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ddlutils-dev@db.apache.org by to...@apache.org on 2006/06/15 19:43:10 UTC
svn commit: r414641 -
/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PlatformImplBase.java
Author: tomdz
Date: Thu Jun 15 10:43:09 2006
New Revision: 414641
URL: http://svn.apache.org/viewvc?rev=414641&view=rev
Log:
Added special handling of Clobs/Blobs of size 0 as suggested by Kathey Marsden
Modified:
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PlatformImplBase.java
Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PlatformImplBase.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PlatformImplBase.java?rev=414641&r1=414640&r2=414641&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PlatformImplBase.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PlatformImplBase.java Thu Jun 15 10:43:09 2006
@@ -1952,26 +1952,58 @@
case Types.CLOB:
Clob clob = resultSet.getClob(columnName);
- if ((clob == null) || (clob.length() > Integer.MAX_VALUE))
- {
- value = clob;
- }
- else
- {
- value = clob.getSubString(1l, (int)clob.length());
- }
+ if (clob == null)
+ {
+ value = null;
+ }
+ else
+ {
+ long length = clob.length();
+
+ if (length > Integer.MAX_VALUE)
+ {
+ value = clob;
+ }
+ else if (length == 0)
+ {
+ // the javadoc is not clear about whether Clob.getSubString
+ // can be used with a substring length of 0
+ // thus we do the safe thing and handle it ourselves
+ value = "";
+ }
+ else
+ {
+ value = clob.getSubString(1l, (int)length);
+ }
+ }
break;
case Types.BLOB:
Blob blob = resultSet.getBlob(columnName);
- if ((blob == null) || (blob.length() > Integer.MAX_VALUE))
- {
- value = blob;
- }
- else
- {
- value = blob.getBytes(1l, (int)blob.length());
- }
+ if (blob == null)
+ {
+ value = null;
+ }
+ else
+ {
+ long length = blob.length();
+
+ if (length > Integer.MAX_VALUE)
+ {
+ value = blob;
+ }
+ else if (length == 0)
+ {
+ // the javadoc is not clear about whether Blob.getBytes
+ // can be used with for 0 bytes to be copied
+ // thus we do the safe thing and handle it ourselves
+ value = new byte[0];
+ }
+ else
+ {
+ value = blob.getBytes(1l, (int)length);
+ }
+ }
break;
case Types.ARRAY:
value = resultSet.getArray(columnName);