ID:               26777
 Updated by:       [EMAIL PROTECTED]
 Reported By:      al at forest dot akadem dot ru
-Status:           Closed
+Status:           Bogus
 Bug Type:         InterBase related
 Operating System: *
 PHP Version:      4CVS, 5CVS
 Assigned To:      abies
 New Comment:

Reverted in CVS HEAD:



The client API requires every non-null field to have a value, even if a
trigger can provide a value as well. [The NULL flag of a NOT NULL field
is not even tested by the client lib, causing PHP to crash if you try
to insert null into it]



Please note that this restriction is imposed by the client API, not by
PHP.


Previous Comments:
------------------------------------------------------------------------

[2004-01-07 04:41:06] [EMAIL PROTECTED]

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.

------------------------------------------------------------------------

[2004-01-06 18:26:18] [EMAIL PROTECTED]

Assigned to Ard who touched this part the last time.



------------------------------------------------------------------------

[2004-01-03 09:35:12] al at forest dot akadem dot ru

Description:
------------
Having Windows 2000 SP4, 

PHP 4.3.4, php_interbase latest checked from CVS (Revision 1.91.2.26).
Firebird SS 1.0.3



Having a table in db (dialect 3):



CREATE TABLE T_TEST (

    F1  TIMESTAMP NOT NULL,

    F2  INTEGER

);



and a trigger associated with it:



CREATE TRIGGER T_TEST_BI0 FOR T_TEST

ACTIVE BEFORE INSERT POSITION 0

AS

begin

  if (new.f1 IS null) then

    new.f1 = current_timestamp;

end



This mean that no record will be inserted with F1 set to NULL. Having
code reproduced below I get a message:

Warning: ibase_query(): Parameter 90206904 must have a value in
c:\g2\htdocs\ibase_not_null.php on line 7



The problem seems to lie around lines 1199-1202 in interbase.c

Reproduce code:
---------------
<?php

$G2db = ibase_connect( '/path/to/db', 

                       'user', 'passw', 

                       'WIN1251', 0, 3, 'role');

$G2tr = ibase_trans(IBASE_NOWAIT, $G2db);



$qry = ibase_query($G2tr, 'insert into t_test (f1, f2) values (?, ?)',
NULL, '33');



ibase_commit($G2tr);

ibase_close($G2db);

?>

Expected result:
----------------
PHP shouldn't complain at all.



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=26777&edit=1

Reply via email to