ID: 26555 User updated by: jkaufman at wamnetgov dot com Reported By: jkaufman at wamnetgov dot com Status: Open Bug Type: Informix related Operating System: Mandrake 9.1 PHP Version: 4CVS-2003-12-9 New Comment:
Forgot to mention that the informix sdk is: IBM INFORMIX-Client SDK 2.81.UC1 PRODUCT RELEASE INFORMIX-ESQL/C Version 9.53 DATE: 04 Feb 2003 Previous Comments: ------------------------------------------------------------------------ [2003-12-10 12:53:51] jkaufman at wamnetgov dot com I don't *know* that the interpretation of lvarchar in ifx.c is wrong just because I see a void type, but I do know this. I modified my db schema and changed the lvarchar(1000) to char(500) and the query works fine. I would prefer the lvarchar approach (it uses less db space and I 500 characters is not enough for my app), but it does demonstrate that there is something amiss in the way php handles lvarchar. ------------------------------------------------------------------------ [2003-12-09 14:41:20] [EMAIL PROTECTED] What informix sdk do you have installed? (and if your c-client, the imap thing, is linked with ssl, you need to use --with-imap-ssl) ------------------------------------------------------------------------ [2003-12-09 12:40:35] jkaufman at wamnetgov dot com I built using the snapshot. First problem is that '--with-imap' did not include '-lssl', though php-4.3.3 did. I removed that option from my configure statement and rebuilt. The problem is still present. ifx.c shows: #line 1768 "/usr/src/php4-STABLE-200312091430/ext/informix/ifx.ec" ifx_int8_t int8_var; #line 1769 "/usr/src/php4-STABLE-200312091430/ext/informix/ifx.ec" void *lvar_tmp = 0; ------------------------------------------------------------------------ [2003-12-08 18:47:32] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php4-STABLE-latest.tar.gz For Windows: http://snaps.php.net/win32/php4-win32-STABLE-latest.zip ------------------------------------------------------------------------ [2003-12-08 14:35:07] jkaufman at wamnetgov dot com Description: ------------ Perhaps I have something misconfigured, but I discovered that doing a fetchInto after a query that retrieves a field that is defined as 'lvarchar 1000' causes PHP to die. Looking at ext/ifx.ec near line 1732, I see this: $ifdef HAVE_IFX_IUS; ifx_int8_t int8_var; lvarchar *lvar_tmp; $endif; The compiled code in ifx.c has this: #line 1733 "/usr/src/php-4.3.3/ext/informix/ifx.ec" ifx_int8_t int8_var; #line 1734 "/usr/src/php-4.3.3/ext/informix/ifx.ec" void *lvar_tmp = 0; To me, this looks like the system understands 'ifx_int8_t' as a datatype, but doesn't understand 'lvarchar'. Reproduce code: --------------- This is my code: // Get status updates $sql = "select * from dmm_status "; $sql .= "where dmm_status_master_id=$recordno"; $res = $dbh->query($sql); if (DB::isError($res)) { die ($res->getDebugInfo() . " at line " . __line__ ); } // Get the data. Will be 0+ rows. while ($row = $res->fetchRow(DB_FETCHMODE_ASSOC)) { $status_note[] = $row['dmm_status_notes']; $status_date[] = $row['dmm_status_date']; } Table: create table dmm_status( dmm_status_id serial primary key, dmm_status_master_id integer, dmm_status_user_id integer, dmm_status_date datetime year to minute, dmm_status_notes lvarchar(1000) ) in appdbs extent size 20000 next size 5000 lock mode row; Expected result: ---------------- I expect to see data in the $status_note and $status_date arrays. Actual result: -------------- PHP exits, w/o any error message. This happens in DB/ifx.php in the fetchInto routine: if (!$row = @ifx_fetch_row($result, $rownum)) { return null; } It never returns from the ifx_fetch_row instruction. I tried removing the '@' sign, but still no error message. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=26555&edit=1