]> granicus.if.org Git - php/commitdiff
don't replace with ?, just skip it
authorAndrey Hristov <andrey@php.net>
Thu, 20 Mar 2014 10:11:16 +0000 (12:11 +0200)
committerAndrey Hristov <andrey@php.net>
Thu, 20 Mar 2014 10:11:16 +0000 (12:11 +0200)
ext/mysqli/mysqli_api.c
ext/mysqlnd/mysqlnd.c

index d9e52b3d3ac2f519a1254e06dbae52d55903cfab..3911202066aebdcec3d173a8a2958f7a9fd7f339 100644 (file)
 #include "php_mysqli_structs.h"
 #include "mysqli_priv.h"
 
+
+#if !defined(MYSQLI_USE_MYSQLND)
+/* {{{ mysqli_tx_cor_options_to_string */
+static void mysqli_tx_cor_options_to_string(const MYSQL * const conn, smart_str * str, const unsigned int mode)
+{
+       if (mode & TRANS_COR_AND_CHAIN && !(mode & TRANS_COR_AND_NO_CHAIN)) {
+               if (str->len) {
+                       smart_str_appendl(str, " ", sizeof(" ") - 1);
+               }
+               smart_str_appendl(str, "AND CHAIN", sizeof("AND CHAIN") - 1);
+       } else if (mode & TRANS_COR_AND_NO_CHAIN && !(mode & TRANS_COR_AND_CHAIN)) {
+               if (str->len) {
+                       smart_str_appendl(str, " ", sizeof(" ") - 1);
+               }
+               smart_str_appendl(str, "AND NO CHAIN", sizeof("AND NO CHAIN") - 1);
+       }
+
+       if (mode & TRANS_COR_RELEASE && !(mode & TRANS_COR_NO_RELEASE)) {
+               if (str->len) {
+                       smart_str_appendl(str, " ", sizeof(" ") - 1);
+               }
+               smart_str_appendl(str, "RELEASE", sizeof("RELEASE") - 1);
+       } else if (mode & TRANS_COR_NO_RELEASE && !(mode & TRANS_COR_RELEASE)) {
+               if (str->len) {
+                       smart_str_appendl(str, " ", sizeof(" ") - 1);
+               }
+               smart_str_appendl(str, "NO RELEASE", sizeof("NO RELEASE") - 1);
+       }
+       smart_str_0(str);
+}
+/* }}} */
+
+
+
+/* {{{ proto bool mysqli_commit_or_rollback_libmysql */
+static int mysqli_commit_or_rollback_libmysql(MYSQL * conn, zend_bool commit, const unsigned int mode, const char * const name)
+{
+       int ret;
+       smart_str tmp_str = {0, 0, 0};
+       mysqli_tx_cor_options_to_string(conn, &tmp_str, mode);
+       smart_str_0(&tmp_str);
+
+       {
+               char * query;
+               char * name_esc = NULL;
+               size_t query_len;
+               
+               if (name) {     
+                       const char * p_orig = name;
+                       char * p_copy;
+                       p_copy = name_esc = emalloc(strlen(name) + 1 + 2 + 2 + 1); /* space, open, close, NullS */
+                       *p_copy++ = ' ';
+                       *p_copy++ = '/';
+                       *p_copy++ = '*';
+                       while (1) {
+                               register char v = *p_orig;
+                               if (v == 0) {
+                                       break;
+                               }
+                               if ((v >= '0' && v <= '9') ||
+                                       (v >= 'a' && v <= 'z') ||
+                                       (v >= 'A' && v <= 'Z') ||
+                                       v == '-' ||
+                                       v == '_' ||
+                                       v == ' ' ||
+                                       v == '=')
+                               {
+                                       *p_copy++ = v;
+                               }
+                               ++p_orig;
+                       }
+                       *p_copy++ = '*';
+                       *p_copy++ = '/';
+                       *p_copy++ = 0;
+               }
+
+               query_len = spprintf(&query, 0, (commit? "COMMIT%s %s":"ROLLBACK%s %s"),
+                                                                                 name_esc? name_esc:"", tmp_str.c? tmp_str.c:"");
+               smart_str_free(&tmp_str);
+               if (name_esc) {
+                       efree(name_esc);
+                       name_esc = NULL;
+               }
+
+               ret = mysql_real_query(conn, query, query_len);
+               efree(query);
+       }
+       return ret;
+}
+/* }}} */
+#endif
+
+
 /* {{{ proto mixed mysqli_affected_rows(object link)
    Get number of affected rows in previous MySQL operation */
 PHP_FUNCTION(mysqli_affected_rows)
@@ -637,99 +730,6 @@ PHP_FUNCTION(mysqli_close)
 /* }}} */
 
 
-#if !defined(MYSQLI_USE_MYSQLND)
-/* {{{ mysqli_tx_cor_options_to_string */
-static void mysqli_tx_cor_options_to_string(const MYSQL * const conn, smart_str * str, const unsigned int mode)
-{
-       if (mode & TRANS_COR_AND_CHAIN && !(mode & TRANS_COR_AND_NO_CHAIN)) {
-               if (str->len) {
-                       smart_str_appendl(str, " ", sizeof(" ") - 1);
-               }
-               smart_str_appendl(str, "AND CHAIN", sizeof("AND CHAIN") - 1);
-       } else if (mode & TRANS_COR_AND_NO_CHAIN && !(mode & TRANS_COR_AND_CHAIN)) {
-               if (str->len) {
-                       smart_str_appendl(str, " ", sizeof(" ") - 1);
-               }
-               smart_str_appendl(str, "AND NO CHAIN", sizeof("AND NO CHAIN") - 1);
-       }
-
-       if (mode & TRANS_COR_RELEASE && !(mode & TRANS_COR_NO_RELEASE)) {
-               if (str->len) {
-                       smart_str_appendl(str, " ", sizeof(" ") - 1);
-               }
-               smart_str_appendl(str, "RELEASE", sizeof("RELEASE") - 1);
-       } else if (mode & TRANS_COR_NO_RELEASE && !(mode & TRANS_COR_RELEASE)) {
-               if (str->len) {
-                       smart_str_appendl(str, " ", sizeof(" ") - 1);
-               }
-               smart_str_appendl(str, "NO RELEASE", sizeof("NO RELEASE") - 1);
-       }
-       smart_str_0(str);
-}
-/* }}} */
-
-
-
-/* {{{ proto bool mysqli_commit_or_rollback_libmysql */
-static int mysqli_commit_or_rollback_libmysql(MYSQL * conn, zend_bool commit, const unsigned int mode, const char * const name)
-{
-       int ret;
-       smart_str tmp_str = {0, 0, 0};
-       mysqli_tx_cor_options_to_string(conn, &tmp_str, mode);
-       smart_str_0(&tmp_str);
-
-       {
-               char * query;
-               char * name_esc = NULL;
-               size_t query_len;
-               
-               if (name) {     
-                       const char * p_orig = name;
-                       char * p_copy;
-                       p_copy = name_esc = emalloc(strlen(name) + 1 + 2 + 2 + 1); /* space, open, close, NullS */
-                       *p_copy++ = ' ';
-                       *p_copy++ = '/';
-                       *p_copy++ = '*';
-                       while (1) {
-                               register char v = *p_orig;
-                               if (v == 0) {
-                                       break;
-                               }
-                               if ((v >= '0' && v <= '9') ||
-                                       (v >= 'a' && v <= 'z') ||
-                                       (v >= 'A' && v <= 'Z') ||
-                                       v == '-' ||
-                                       v == '_' ||
-                                       v == ' ' ||
-                                       v == '=')
-                               {
-                                       *p_copy = v;
-                               } else {
-                                       *p_copy = '?';
-                               }
-                               ++p_orig;
-                               ++p_copy;
-                       }
-                       *p_copy++ = '*';
-                       *p_copy++ = '/';
-                       *p_copy++ = 0;
-               }
-
-               query_len = spprintf(&query, 0, (commit? "COMMIT%s %s":"ROLLBACK%s %s"),
-                                                                                 name_esc? name_esc:"", tmp_str.c? tmp_str.c:"");
-               smart_str_free(&tmp_str);
-               if (name_esc) {
-                       efree(name_esc);
-                       name_esc = NULL;
-               }
-
-               ret = mysql_real_query(conn, query, query_len);
-               efree(query);
-       }
-       return ret;
-}
-/* }}} */
-#endif
 
 
 /* {{{ proto bool mysqli_commit(object link[, int flags [, string name ]])
index bbfc4568966e8480c39180cbe8c5900fe6b1cade..c138c50ed9c50977507b87f8039b57d1d3511f76 100644 (file)
@@ -2718,12 +2718,9 @@ MYSQLND_METHOD(mysqlnd_conn_data, tx_commit_or_rollback)(MYSQLND_CONN_DATA * con
                                                        v == ' ' ||
                                                        v == '=')
                                                {
-                                                       *p_copy = v;
-                                               } else {
-                                                       *p_copy = '?';
+                                                       *p_copy++ = v;
                                                }
                                                ++p_orig;
-                                               ++p_copy;
                                        }
                                        *p_copy++ = '*';
                                        *p_copy++ = '/';