summaryrefslogtreecommitdiff
path: root/ext/mysqlnd/mysqlnd_connection.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/mysqlnd/mysqlnd_connection.c')
-rw-r--r--ext/mysqlnd/mysqlnd_connection.c30
1 files changed, 14 insertions, 16 deletions
diff --git a/ext/mysqlnd/mysqlnd_connection.c b/ext/mysqlnd/mysqlnd_connection.c
index 2822672da5..1afcc48b2b 100644
--- a/ext/mysqlnd/mysqlnd_connection.c
+++ b/ext/mysqlnd/mysqlnd_connection.c
@@ -2134,23 +2134,16 @@ MYSQLND_METHOD(mysqlnd_conn_data, tx_begin)(MYSQLND_CONN_DATA * conn, const unsi
}
smart_str_appendl(&tmp_str, "WITH CONSISTENT SNAPSHOT", sizeof("WITH CONSISTENT SNAPSHOT") - 1);
}
- if (mode & (TRANS_START_READ_WRITE | TRANS_START_READ_ONLY)) {
- zend_ulong server_version = conn->m->get_server_version(conn);
- if (server_version < 50605L) {
- php_error_docref(NULL, E_WARNING, "This server version doesn't support 'READ WRITE' and 'READ ONLY'. Minimum 5.6.5 is required");
- smart_str_free(&tmp_str);
- break;
- } else if (mode & TRANS_START_READ_WRITE) {
- if (tmp_str.s && ZSTR_LEN(tmp_str.s)) {
- smart_str_appendl(&tmp_str, ", ", sizeof(", ") - 1);
- }
- smart_str_appendl(&tmp_str, "READ WRITE", sizeof("READ WRITE") - 1);
- } else if (mode & TRANS_START_READ_ONLY) {
- if (tmp_str.s && ZSTR_LEN(tmp_str.s)) {
- smart_str_appendl(&tmp_str, ", ", sizeof(", ") - 1);
- }
- smart_str_appendl(&tmp_str, "READ ONLY", sizeof("READ ONLY") - 1);
+ if (mode & TRANS_START_READ_WRITE) {
+ if (tmp_str.s && ZSTR_LEN(tmp_str.s)) {
+ smart_str_appendl(&tmp_str, ", ", sizeof(", ") - 1);
}
+ smart_str_appendl(&tmp_str, "READ WRITE", sizeof("READ WRITE") - 1);
+ } else if (mode & TRANS_START_READ_ONLY) {
+ if (tmp_str.s && ZSTR_LEN(tmp_str.s)) {
+ smart_str_appendl(&tmp_str, ", ", sizeof(", ") - 1);
+ }
+ smart_str_appendl(&tmp_str, "READ ONLY", sizeof("READ ONLY") - 1);
}
smart_str_0(&tmp_str);
@@ -2169,6 +2162,11 @@ MYSQLND_METHOD(mysqlnd_conn_data, tx_begin)(MYSQLND_CONN_DATA * conn, const unsi
}
ret = conn->m->query(conn, query, query_len);
mnd_sprintf_free(query);
+ if (ret && mode & (TRANS_START_READ_WRITE | TRANS_START_READ_ONLY) &&
+ mysqlnd_stmt_errno(conn) == 1064) {
+ php_error_docref(NULL, E_WARNING, "This server version doesn't support 'READ WRITE' and 'READ ONLY'. Minimum 5.6.5 is required");
+ break;
+ }
}
} while (0);
conn->m->local_tx_end(conn, this_func, ret);