| Bug #41269 | DatabaseMetadata.getProcedureColumns() returns wrong value for column length | ||
|---|---|---|---|
| Submitted: | 5 Dec 2008 20:28 | Modified: | 23 Jun 12:07 |
| Reporter: | David Van Couvering | ||
| Status: | Closed | ||
| Category: | Connector/J | Severity: | S3 (Non-critical) |
| Version: | 5.1.6 | OS: | Any |
| Assigned to: | Bugs System | Target Version: | |
| Triage: | D3 (Medium) | ||
[5 Dec 2008 20:28]
David Van Couvering
[8 Dec 2008 23:06]
Jess Balint
=== modified file 'src/com/mysql/jdbc/DatabaseMetaData.java'
--- src/com/mysql/jdbc/DatabaseMetaData.java 2008-09-09 18:49:12 +0000
+++ src/com/mysql/jdbc/DatabaseMetaData.java 2008-12-08 22:02:27 +0000
@@ -858,7 +858,7 @@
row[5] = s2b(Short.toString(typeDesc.dataType)); // DATA_TYPE
row[6] = s2b(typeDesc.typeName); // TYPE_NAME
row[7] = typeDesc.columnSize == null ? null :
s2b(typeDesc.columnSize.toString()); // PRECISION
- row[8] = s2b(Integer.toString(typeDesc.bufferLength)); // LENGTH
+ row[8] = row[7]; // LENGTH
row[9] = typeDesc.decimalDigits == null ? null :
s2b(typeDesc.decimalDigits.toString()); // SCALE
row[10] = s2b(Integer.toString(typeDesc.numPrecRadix)); // RADIX
// Map 'column****' to 'procedure****'
=== modified file 'src/testsuite/regression/MetaDataRegressionTest.java'
--- src/testsuite/regression/MetaDataRegressionTest.java 2008-09-09 18:49:12
+0000
+++ src/testsuite/regression/MetaDataRegressionTest.java 2008-12-08 22:04:37
+0000
@@ -2250,6 +2250,22 @@
}
}
+ public void testBug41269() throws Exception {
+ createProcedure("bug41269",
+ "(in param1 int, out result varchar(197)) BEGIN select 1,
''; END");
+ try {
+ ResultSet procMD = this.conn.getMetaData()
+ .getProcedureColumns(null, null,
"bug41269", "%");
+ assertTrue(procMD.next());
+ assertEquals("Int param length", 10, procMD.getInt(9));
+ assertTrue(procMD.next());
+ assertEquals("String param length", 197, procMD.getInt(9));
+ assertFalse(procMD.next());
+ } finally {
+ closeMemberJDBCResources();
+ }
+ }
+
public void testNoSystemTablesReturned() throws Exception {
if (!versionMeetsMinimum(5, 0)) {
return; // no information schema
[8 Dec 2008 23:45]
David Van Couvering
Wow, fast work, thanks!
[2 Jun 7:59]
Jess Balint
Pushed for release in 5.1.8
[23 Jun 12:07]
Tony Bedford
An entry was added to the 5.1.8 changelog: When DatabaseMetaData.getProcedureColumns() was called, the value for LENGTH was always returned as 65535, regardless of the column type (fixed or variable) or the actual length of the column. However, if you obtained the PRECISION value, this was correct for both fixed and variable length columns.
