ID: 8811 User Update by: [EMAIL PROTECTED] Status: Open Bug Type: ODBC related Description: DB2 SQLColumns() doens't work by default. The data coming back from SQLColumns() is working correctly at the odbc_columns() level. However, you cannot run odbc_fetch_row() or odbc_fetch_array() against the resources returned by odbc_columns(). The docs for odbc_fetch_row() says that it is only valid after odbc_do/odbc_exe. How do you iterate over the rows returned from odbc_columns() in a PHP script? There doesn't appear to be any way to do it...everything I try SegFaults. -Szii Previous Comments: --------------------------------------------------------------------------- [2001-01-19 15:56:08] [EMAIL PROTECTED] After more research, please disregard this report. the odbc_columns() is not working against DB2 7.1, but there's something else going on. (It SIGSEGVs on multiple passes) I'll have to do some more digging. Apologies for the noise. -Szii --------------------------------------------------------------------------- [2001-01-19 15:45:56] [EMAIL PROTECTED] The workaround posted is incorrect as it'll change the action of the cat/schema/table/etc values and not the SIZE of the values. Please ignore the workaround - the SQLColumns() bugreport is still correct otherwise. --------------------------------------------------------------------------- [2001-01-19 15:42:51] [EMAIL PROTECTED] In ext/php_odbc.c function odbc_columns() has an incorrect SQLColumns() set of parameters for DB2 databases. Currently: rc = SQLColumns(result->stmt, cat, SAFE_SQL_NTS(cat), schema, SAFE_SQL_NTS(schema), table, SAFE_SQL_NTS(table), column, SAFE_SQL_NTS(column)); it should be something more along the lines of rc = SQLColumns(result->stmt, cat, 0, schema, strnlen(schema), table, strnlen(table), column, strnlen(column)); DB2 Documentation link http://nscpcw.physics.upenn.edu/db2_docs/db2l0/sqll1311.htm#HDRFNCOLN Currently it follows the SQLColumns as described by the MSDN, which says: "If the SQL_ATTR_METADATA_ID statement attribute is set to SQL_TRUE, ColumnName is treated as an identifier, and its case is not significant. If it is SQL_FALSE, ColumnName is a pattern value argument; it is treated literally, and its case is significant." By default, DB2 has SQL_ATTR_METADATA_ID set to SQL_FALSE and doesn't work with the current code. Can we get at least a check and warning message for SQL_FALSE? I don't know about Oracle. Workaround: set SQL_ATTR_METADATA_ID to SQL_TRUE Thanks. -Szii [EMAIL PROTECTED] --------------------------------------------------------------------------- Full Bug description available at: http://bugs.php.net/?id=8811 -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]