db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Army <qoz...@sbcglobal.net>
Subject [PATCH] DERBY-319: Derby returns incorrect values for "LENGTH" column of DatabaseMetaData.getProcedureColumns() result set
Date Sat, 04 Jun 2005 17:45:30 GMT
[ http://issues.apache.org/jira/browse/DERBY-319 ]

Attached is a patch for DERBY-319.

The JDBC API documents say that the LENGTH field of the result set returned by 
DatabaseMetaData.getProcedureColumns(...) is the "length in bytes" of the 
column.  However, the API doesn't say exactly what the "length in bytes" is for 
the various SQL datatypes.

Currently, the values that Derby returns for this field are inconsistent--for 
some types it's the length in bytes and for others it's the length in characters.

In the discussion thread here:

http://article.gmane.org/gmane.comp.apache.db.derby.devel/2585

it was decided that the intent of JDBC was to match ODBC behavior in this 
regard, and luckily the ODBC specification clearly states what the "length in 
bytes" is for each SQL datatype.  Thus this patch creates a new method on the 
TypeDescriptor interface that returns the max length in bytes as defined in the 
ODBC specification.  This method is then used by the DatabaseMetaData methods 
where needed, such as in the getProcedureColumns() method.

The ODBC definition of "length in bytes" for the SQL types can be found here:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbc/htm/odbctransfer_octet_length.asp

I have run derbyall on a Windows 2000 machine with Sun JDK 1.4.2 and all tests 
passed.

Could a committer please review/commit this patch?

Thanks,
Army


Mime
View raw message