2010-05-06 Aaron S. Hawley * Zend/Db/Adapter/Db2.php (describeTable): Improve performance of i5/OS query by avoiding UPPER() and DISTINCT. It's not uncommon for AS/400 machines to have distinct columns numbering in the tens of millions. --- Zend/Db/Adapter/Db2.php 2010-04-29 12:37:50.021322300 -0400 +++ Zend/Db/Adapter/Db2.php 2010-05-06 11:44:19.584306100 -0400 @@ -399,7 +399,7 @@ } else { // DB2 On I5 specific query - $sql = "SELECT DISTINCT C.TABLE_SCHEMA, C.TABLE_NAME, C.COLUMN_NAME, C.ORDINAL_POSITION, + $sql = "SELECT C.TABLE_SCHEMA, C.TABLE_NAME, C.COLUMN_NAME, C.ORDINAL_POSITION, C.DATA_TYPE, C.COLUMN_DEFAULT, C.NULLS ,C.LENGTH, C.SCALE, LEFT(C.IDENTITY,1), LEFT(tc.TYPE, 1) AS tabconsttype, k.COLSEQ FROM QSYS2.SYSCOLUMNS C @@ -411,10 +411,10 @@ AND C.TABLE_NAME = k.TABLE_NAME AND C.COLUMN_NAME = k.COLUMN_NAME) WHERE " - . $this->quoteInto('UPPER(C.TABLE_NAME) = UPPER(?)', $tableName); + . $this->quoteInto('C.TABLE_NAME = ?', $tableName); if ($schemaName) { - $sql .= $this->quoteInto(' AND UPPER(C.TABLE_SCHEMA) = UPPER(?)', $schemaName); + $sql .= $this->quoteInto(' AND C.TABLE_SCHEMA = ?', $schemaName); } $sql .= " ORDER BY C.ORDINAL_POSITION FOR FETCH ONLY";