ID: 29013
User updated by: cjbj at hotmail dot com
Reported By: cjbj at hotmail dot com
Status: Open
Bug Type: OCI8 related
-Operating System: Windows 2000
+Operating System: Windows, Linus
-PHP Version: 4.3.7
+PHP Version: 4.3.7, 5.0.0 Dev
New Comment:
The given testcase has an extra semi-colon in the second query. The
new testcase below shows that the initial connection is getting
associated with the second user.
Testcase:
<?php
function qry(&$c, $s) {
echo "===>BEGIN<br>";
$rSth = OCIParse($c, $s);
$rRet = OCIExecute($rSth);
echo "<br>";
while ($succ = OCIFetchInto($rSth, $row)) {
foreach ($row as $item) {
echo ($item?htmlentities($item):' ')." ";
}
echo "<br>\n";
}
echo "===>CLOSE<br><br>";
ocifreestatement($rSth);
}
$statement1 = "select user from dual";
echo "===>OCINLogin #1: Connect as SCOTT<br>";
$c1 = OCINlogon('scott', 'tiger', 'F10D' );
echo "===>Query first connection<br>";
qry($c1, $statement1);
echo "===>OCINLogin #2: Connect as HR<br>";
$c2 = OCINlogon('hr', 'hr', 'F10D');
echo "===>Re-query first connection<br>";
qry($c1, $statement1);
?>
Actual Output:
===>OCINLogin #1: Connect as SCOTT
===>Query first connection
===>BEGIN
SCOTT
===>CLOSE
===>OCINLogin #2: Connect as HR
===>Re-query first connection
===>BEGIN
HR
===>CLOSE
Expected output is similar with the usernames in this order: SCOTT,
SCOTT
Previous Comments:
------------------------------------------------------------------------
[2004-07-05 09:38:01] cjbj at hotmail dot com
Description:
------------
Multiple logons within the same request cause handles to become invalid
and queries to fail.
Also see:
http://forums.oracle.com/forums/thread.jsp?forum=178&thread=251141
To reproduce, restart Apache and run the following file.
The same incorrect output occurs with ocilogon() inplace of
ocinlogon().
Reproduce code:
---------------
<?php
ociinternaldebug(1);
function qry(&$c, $s) {
echo "<br>===>BEGIN<br><br>";
$rSth = OCIParse($c, $s);
$rRet = OCIExecute($rSth);
echo "<br>";
while ($succ = OCIFetchInto($rSth, $row)) {
foreach ($row as $item) {
echo ($item?htmlentities($item):' ')." ";
}
echo "<br>\n";
}
echo "<br>===>CLOSE<br><br>";
ocifreestatement($rSth);
}
$statement1 = "select dname from dept";
$statement2 = "select user from dual;";
echo "<br>===>OCINLogin #1<br><br>";
$c1 = OCINlogon('scott', 'tiger', 'MYDB' );
echo "<br>===>Query first connection<br><br>";
qry($c1, $statement1);
echo "<br>===>OCINLogin #2<br><br>";
$c2 = OCINlogon('hr', 'hr', 'MYDB');
echo "<br>===>Re-query first connection<br><br>";
qry($c1, $statement1);
echo "<br>===>Re-query first connection<br><br>";
qry($c1, $statement2);
?>
Expected result:
----------------
Three queries are successfully completed.
Actual result:
--------------
===>OCINLogin #1
OCIDebug: _oci_open_server new conn=0 dname=MYDB
OCIDebug: _oci_open_session new sess=3 user=scott
OCIDebug: oci_do_connect: id=4
===>Query first connection
===>BEGIN
OCIDebug: oci_parse "select dname from dept" id=5 conn=4
ACCOUNTING
RESEARCH
SALES
OPERATIONS
===>CLOSE
OCIDebug: START _oci_stmt_list_dtor: id=5 last_query="select dname
from dept"
OCIDebug: START _oci_column_hash_dtor: DNAME
OCIDebug: END _oci_column_hash_dtor: DNAME
OCIDebug: END _oci_stmt_list_dtor: id=5
===>OCINLogin #2
OCIDebug: _oci_open_session new sess=6 user=hr
OCIDebug: oci_do_connect: id=7
===>Re-query first connection
===>BEGIN
OCIDebug: oci_parse "select dname from dept" id=8 conn=4
Warning: ociexecute(): OCIStmtExecute: ORA-00942: table or view does
not exist in c:\cj\php\cj\contest.php on line 13
Warning: ocifetchinto(): OCIFetchInto: ORA-24374: define not done
before fetch or execute and fetch in c:\cj\php\cj\contest.php on line
15
===>CLOSE
OCIDebug: START _oci_stmt_list_dtor: id=8 last_query="select dname
from dept"
OCIDebug: END _oci_stmt_list_dtor: id=8
===>Re-query first connection
===>BEGIN
OCIDebug: oci_parse "select user from dual;" id=9 conn=4
Warning: ociexecute(): OCIStmtExecute: ORA-00911: invalid character
in c:\cj\php\cj\contest.php on line 13
Warning: ocifetchinto(): OCIFetchInto: ORA-24374: define not done
before fetch or execute and fetch in c:\cj\php\cj\contest.php on line
15
===>CLOSE
OCIDebug: START _oci_stmt_list_dtor: id=9 last_query="select user
from dual;"
OCIDebug: END _oci_stmt_list_dtor: id=9
OCIDebug: START php_rshutdown_oci
OCIDebug: END php_rshutdown_oci
OCIDebug: START _oci_conn_list_dtor: id=4
OCIDebug: nothing to do..
OCIDebug: START _oci_close_session: logging-off sess=3
OCIDebug: END _oci_conn_list_dtor: id=4
OCIDebug: START _oci_conn_list_dtor: id=7
OCIDebug: nothing to do..
OCIDebug: START _oci_close_session: logging-off sess=6
OCIDebug: END _oci_conn_list_dtor: id=7
OCIDebug: START _oci_close_server: detaching conn=2 dbname=MYDB
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=29013&edit=1