You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by km...@apache.org on 2007/04/25 18:46:17 UTC
svn commit: r532404 - in /db/derby/code/trunk/java:
client/org/apache/derby/client/am/ColumnMetaData.java
testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/ResultSetMiscTest.java
Author: kmarsden
Date: Wed Apr 25 09:46:16 2007
New Revision: 532404
URL: http://svn.apache.org/viewvc?view=rev&rev=532404
Log:
DERBY-2425 ResultSetMetaData.getColumnDisplaySize() returns a negative value for BLOB columns for client
After multiplication (by 2 ) if the display size overflows int range, then assign Int.MAX_SIZE to display size.
This behavior is same as that in Embedded mode.
Contributed by Mayuresh Nirhali (Mayuresh.Nirhali@Sun.COM)
Modified:
db/derby/code/trunk/java/client/org/apache/derby/client/am/ColumnMetaData.java
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/ResultSetMiscTest.java
Modified: db/derby/code/trunk/java/client/org/apache/derby/client/am/ColumnMetaData.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/client/org/apache/derby/client/am/ColumnMetaData.java?view=diff&rev=532404&r1=532403&r2=532404
==============================================================================
--- db/derby/code/trunk/java/client/org/apache/derby/client/am/ColumnMetaData.java (original)
+++ db/derby/code/trunk/java/client/org/apache/derby/client/am/ColumnMetaData.java Wed Apr 25 09:46:16 2007
@@ -313,7 +313,13 @@
case Types.VARBINARY:
case Types.LONGVARBINARY:
case Types.BLOB:
- return (int) (2 * sqlLength_[column - 1]); // eg. "FF" represents just one byte
+ // Derby-2425. For long length values, size overflows the int
+ // range. In such cases, the size is limited to the max. int value
+ // This behavior is consistent with the same in Embedded mode.
+ int size = (int) (2 * sqlLength_[column - 1]); // eg. "FF" represents just one byte
+ if ( size < 0 )
+ size = Integer.MAX_VALUE;
+ return size;
default:
throw new SqlException(logWriter_,
new ClientMessageId (SQLState.UNSUPPORTED_TYPE));
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/ResultSetMiscTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/ResultSetMiscTest.java?view=diff&rev=532404&r1=532403&r2=532404
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/ResultSetMiscTest.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/ResultSetMiscTest.java Wed Apr 25 09:46:16 2007
@@ -436,11 +436,8 @@
assertTrue(met.isSearchable(16));
assertFalse(met.isCurrency(16));
assertEquals(ResultSetMetaData.columnNullable, met.isNullable(16));
- assertFalse(met.isSigned(16));
- // DERBY-2425 Client returns negative value for getColumnDisplaySize()
- // enable for client once fixed.
- if (usingEmbedded())
- assertEquals(2147483647, met.getColumnDisplaySize(16));
+ assertFalse(met.isSigned(16));
+ assertEquals(2147483647, met.getColumnDisplaySize(16));
assertEquals("BL", met.getColumnLabel(16));
assertEquals("BL", met.getColumnName(16));
// beetle 5323