php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #34624 mysqli_rpl_query_type always returns MYSQLI_RPL_MASTER for CALL statements
Submitted: 2005-09-24 06:32 UTC Modified: 2005-09-27 10:47 UTC
From: jasper at bryant-greene dot name Assigned:
Status: Not a bug Package: MySQLi related
PHP Version: 5.0.5 OS: Gentoo Linux x86
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: jasper at bryant-greene dot name
New email:
PHP Version: OS:

 

 [2005-09-24 06:32 UTC] jasper at bryant-greene dot name
Description:
------------
Calling mysqli_rpl_query_type() for a CALL statement should return MYSQLI_RPL_SLAVE for CALL statements where the stored procedure is defined as READS SQL DATA, and MYSQLI_RPL_MASTER for other SPs.

The way it is now (always returning MYSQLI_RPL_MASTER) makes replication useless when stored procedures are being used.

Reproduce code:
---------------
Where getUser is a stored procedure taking one INT argument and defined as READS SQL DATA:

<?php

$query_type = $myDatabaseConnection->rpl_query_type('CALL getUser(7)');

if($query_type == MYSQLI_RPL_SLAVE) {
print('Execute on slave');
} else {
print('Execute on master');
}

?>

Expected result:
----------------
"Execute on slave"

Actual result:
--------------
"Execute on master"

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-09-24 13:37 UTC] sniper@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip


 [2005-09-27 07:32 UTC] jasper at bryant-greene dot name
Same behaviour
 [2005-09-27 10:47 UTC] georg@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

The client isn't able to detect the type of call statement. Cause a call of a stored procedure can both retrieve and modify data, it will send statement always to the server.

As a workaround in your case , you should use the call mysqli_slave_query instead of using mysql_send_query.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Dec 21 13:01:31 2024 UTC