summaryrefslogtreecommitdiff
path: root/ext/pdo_mysql/mysql_driver.c
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-10-28 11:58:07 +0100
committerNikita Popov <nikita.ppv@gmail.com>2020-10-28 12:18:02 +0100
commit68dcaa29d8a2d51f0fed5fde9f3543a1338bfe44 (patch)
tree21d33ac6e34583436d5c39ce03f27df919883c16 /ext/pdo_mysql/mysql_driver.c
parent68f80be9d1380de731930187250a7ed6b55ae196 (diff)
downloadphp-git-68dcaa29d8a2d51f0fed5fde9f3543a1338bfe44.tar.gz
Fixed bug #66528
Report errors in commit, rollback and autocommit handlers.
Diffstat (limited to 'ext/pdo_mysql/mysql_driver.c')
-rw-r--r--ext/pdo_mysql/mysql_driver.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/ext/pdo_mysql/mysql_driver.c b/ext/pdo_mysql/mysql_driver.c
index 656c598758..344b6fe637 100644
--- a/ext/pdo_mysql/mysql_driver.c
+++ b/ext/pdo_mysql/mysql_driver.c
@@ -351,7 +351,11 @@ static int mysql_handle_commit(pdo_dbh_t *dbh)
{
PDO_DBG_ENTER("mysql_handle_commit");
PDO_DBG_INF_FMT("dbh=%p", dbh);
- PDO_DBG_RETURN(0 == mysql_commit(((pdo_mysql_db_handle *)dbh->driver_data)->server));
+ if (mysql_commit(((pdo_mysql_db_handle *)dbh->driver_data)->server)) {
+ pdo_mysql_error(dbh);
+ PDO_DBG_RETURN(0);
+ }
+ PDO_DBG_RETURN(1);
}
/* }}} */
@@ -360,7 +364,11 @@ static int mysql_handle_rollback(pdo_dbh_t *dbh)
{
PDO_DBG_ENTER("mysql_handle_rollback");
PDO_DBG_INF_FMT("dbh=%p", dbh);
- PDO_DBG_RETURN(0 <= mysql_rollback(((pdo_mysql_db_handle *)dbh->driver_data)->server));
+ if (mysql_rollback(((pdo_mysql_db_handle *)dbh->driver_data)->server)) {
+ pdo_mysql_error(dbh);
+ PDO_DBG_RETURN(0);
+ }
+ PDO_DBG_RETURN(1);
}
/* }}} */
@@ -370,7 +378,11 @@ static inline int mysql_handle_autocommit(pdo_dbh_t *dbh)
PDO_DBG_ENTER("mysql_handle_autocommit");
PDO_DBG_INF_FMT("dbh=%p", dbh);
PDO_DBG_INF_FMT("dbh->autocommit=%d", dbh->auto_commit);
- PDO_DBG_RETURN(0 <= mysql_autocommit(((pdo_mysql_db_handle *)dbh->driver_data)->server, dbh->auto_commit));
+ if (mysql_autocommit(((pdo_mysql_db_handle *)dbh->driver_data)->server, dbh->auto_commit)) {
+ pdo_mysql_error(dbh);
+ PDO_DBG_RETURN(0);
+ }
+ PDO_DBG_RETURN(1);
}
/* }}} */
@@ -387,7 +399,9 @@ static int pdo_mysql_set_attribute(pdo_dbh_t *dbh, zend_long attr, zval *val)
/* ignore if the new value equals the old one */
if (dbh->auto_commit ^ bval) {
dbh->auto_commit = bval;
- mysql_handle_autocommit(dbh);
+ if (!mysql_handle_autocommit(dbh)) {
+ PDO_DBG_RETURN(0);
+ }
}
PDO_DBG_RETURN(1);