php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #41604 Bug of transaction in interbase.
Submitted: 2007-06-06 03:53 UTC Modified: 2007-06-06 11:53 UTC
From: ebine dot yutaka at servise dot jp Assigned: abies (profile)
Status: Not a bug Package: InterBase related
PHP Version: 5.2.3 OS: Debian 4.1
Private report: No CVE-ID: None
 [2007-06-06 03:53 UTC] ebine dot yutaka at servise dot jp
Description:
------------
'INSERT' after 'CREATE TABLE' doesn't work when the transaction is used.
I think that 'INSERT' can't see the table. 

It doesn't work similarly even if various Isolation Level is passed. 

I think that this is not a so recent problem. 
php5.2.2, 5.2.1, 5.2.0, 5.1.x ... and operating systems are Ubuntu, FreeBSD, MaxOS... etc. 

Sorry, my poor english.

Reproduce code:
---------------
$conn = ibase_connect("localhost:/home/firebird/test.fdb", "user", "password");
$trans = ibase_trans(IBASE_DEFAULT, $conn);
//$trans = ibase_trans(IBASE_WRITE|IBASE_CONCURRENCY|IBASE_WAIT, $conn);
//$trans = ibase_trans(IBASE_COMMITTED|IBASE_REC_VERSION, $conn);

ibase_query($trans, "CREATE TABLE test (id INTEGER)");
ibase_query($trans, "INSERT INTO test VALUES (1)");

ibase_commit($trans);

Expected result:
----------------
I think that these two query should succeed.


Actual result:
--------------
I received error message.

ibase_query(): Dynamic SQL Error SQL error code = -204 Table unknown TEST At line 1, column 13.

But, the table was made. 

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2007-06-06 05:15 UTC] ebine dot yutaka at servise dot jp
add a postscript. sorry.

---------------------------------------------
console -> isql(isql-fb) -> 
SET TRANSACTION {Various parameters};
CREATE TABLE test (id INTEGER);
INSERT INTO test VALUES(1);
COMMIT;
---------------------------------------------

success.
 [2007-06-06 06:16 UTC] tony2001@php.net
Ard, do you think it's PHP problem?
 [2007-06-06 06:20 UTC] abies@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

You need to commit the transaction for the 'CREATE TABLE...' to take effect.
 [2007-06-06 09:25 UTC] ebine dot yutaka at servise dot jp
Other databases do not have this problem.
For instance, it is Mysql, Postgresql, and Sqlite... and console(isql).

I think this is bug.
Because, we cannot use 'CREATE TABLE' in a transaction.

If processing fails(even any one), this table is needless. -> rollback(not commit)
 [2007-06-06 10:30 UTC] ebine dot yutaka at servise dot jp
sorry. I forget open.
 [2007-06-06 11:53 UTC] johannes@php.net
Sorry, but your problem does not imply a bug in PHP itself.  For a
list of more appropriate places to ask for help using PHP, please
visit http://www.php.net/support.php as this bug system is not the
appropriate forum for asking support questions.  Due to the volume
of reports we can not explain in detail here why your report is not
a bug.  The support channels will be able to provide an explanation
for you.

Thank you for your interest in PHP.

MySQL doesn't allow DDL in Transactions, too. And anyways this is no PHP problem, PHP doesn't care/know about Transactions and the database has to do this.
 
PHP Copyright © 2001-2020 The PHP Group
All rights reserved.
Last updated: Sun Apr 05 02:01:23 2020 UTC