]> granicus.if.org Git - php/commitdiff
Switch from a single flag to a flag byte
authorAndrey Hristov <andrey@php.net>
Mon, 10 Mar 2014 15:25:53 +0000 (17:25 +0200)
committerAndrey Hristov <andrey@php.net>
Mon, 10 Mar 2014 15:25:53 +0000 (17:25 +0200)
ext/mysqli/mysqli_warning.c
ext/mysqlnd/mysqlnd.c
ext/mysqlnd/mysqlnd.h
ext/mysqlnd/mysqlnd_enum_n_def.h
ext/mysqlnd/mysqlnd_result.c
ext/mysqlnd/mysqlnd_structs.h

index e100319e6187c6ff39a7953ee8690ce39568db3e..7a35a7e8ce3ece34c3d1a0a84ad263c3e3d8d624 100644 (file)
@@ -133,7 +133,7 @@ MYSQLI_WARNING * php_get_warnings(MYSQLND_CONN_DATA * mysql TSRMLS_DC)
                return NULL;
        }
 
-       result = mysql->m->use_result(mysql TSRMLS_CC);
+       result = mysql->m->use_result(mysql, 0 TSRMLS_CC);
 
        for (;;) {
                zval **entry;
index ab386837861aace83339913ec5428705a5618f02..3c1bc82f442d68e52a75b80200711527b15c2864 100644 (file)
@@ -689,7 +689,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, execute_init_commands)(MYSQLND_CONN_DATA * con
                                        break;
                                }
                                if (conn->last_query_type == QUERY_SELECT) {
-                                       MYSQLND_RES * result = conn->m->use_result(conn TSRMLS_CC);
+                                       MYSQLND_RES * result = conn->m->use_result(conn, 0 TSRMLS_CC);
                                        if (result) {
                                                result->m.free_result(result, TRUE TSRMLS_CC);
                                        }
@@ -1522,7 +1522,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, list_method)(MYSQLND_CONN_DATA * conn, const c
                }
 
                if (PASS == conn->m->query(conn, show_query, show_query_len TSRMLS_CC)) {
-                       result = conn->m->store_result(conn TSRMLS_CC);
+                       result = conn->m->store_result(conn, MYSQLND_STORE_NO_COPY TSRMLS_CC);
                }
                if (show_query != query) {
                        mnd_sprintf_free(show_query);
@@ -2518,7 +2518,7 @@ end:
 
 /* {{{ mysqlnd_conn_data::use_result */
 static MYSQLND_RES *
-MYSQLND_METHOD(mysqlnd_conn_data, use_result)(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
+MYSQLND_METHOD(mysqlnd_conn_data, use_result)(MYSQLND_CONN_DATA * const conn, const unsigned int flags TSRMLS_DC)
 {
        size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_data_methods, use_result);
        MYSQLND_RES * result = NULL;
@@ -2560,7 +2560,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, use_result)(MYSQLND_CONN_DATA * const conn TSR
 
 /* {{{ mysqlnd_conn_data::store_result */
 static MYSQLND_RES *
-MYSQLND_METHOD(mysqlnd_conn_data, store_result)(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
+MYSQLND_METHOD(mysqlnd_conn_data, store_result)(MYSQLND_CONN_DATA * const conn, const unsigned int flags TSRMLS_DC)
 {
        size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_data_methods, store_result);
        MYSQLND_RES * result = NULL;
@@ -2583,7 +2583,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, store_result)(MYSQLND_CONN_DATA * const conn T
 
                        MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_BUFFERED_SETS);
 
-                       result = conn->current_result->m.store_result(conn->current_result, conn, FALSE TSRMLS_CC);
+                       result = conn->current_result->m.store_result(conn->current_result, conn, 0 TSRMLS_CC);
                        if (!result) {
                                conn->current_result->m.free_result(conn->current_result, TRUE TSRMLS_CC);
                        }
index 99f6fa48d18aaecbeff7216e4591e035f50d66f2..551c5f34ac9412d6b8ef10575425da9a45e7ba1f 100644 (file)
@@ -119,8 +119,9 @@ PHPAPI void _mysqlnd_debug(const char *mode TSRMLS_DC);
 
 PHPAPI enum_func_status _mysqlnd_poll(MYSQLND **r_array, MYSQLND **e_array, MYSQLND ***dont_poll, long sec, long usec, int * desc_num TSRMLS_DC);
 
-#define mysqlnd_use_result(conn)               ((conn)->data)->m->use_result((conn)->data TSRMLS_CC)
-#define mysqlnd_store_result(conn)             ((conn)->data)->m->store_result((conn)->data TSRMLS_CC)
+#define mysqlnd_use_result(conn)               ((conn)->data)->m->use_result((conn)->data, 0 TSRMLS_CC)
+#define mysqlnd_store_result(conn)             ((conn)->data)->m->store_result((conn)->data, MYSQLND_STORE_NO_COPY TSRMLS_CC)
+#define mysqlnd_store_result_ofs(conn) ((conn)->data)->m->store_result((conn)->data, MYSQLND_STORE_COPY TSRMLS_CC)
 #define mysqlnd_next_result(conn)              ((conn)->data)->m->next_result((conn)->data TSRMLS_CC)
 #define mysqlnd_more_results(conn)             ((conn)->data)->m->more_results((conn)->data TSRMLS_CC)
 #define mysqlnd_free_result(r,e_or_i)  ((MYSQLND_RES*)r)->m.free_result(((MYSQLND_RES*)(r)), (e_or_i) TSRMLS_CC)
index 60ce28dbf222996b537604a0be84d0dfdc864182..d771998577797ac2333239dae06690e016c120f2 100644 (file)
@@ -615,6 +615,11 @@ enum php_mysqlnd_server_command
 #define MYSQLND_REFRESH_MASTER         128     /* Remove all bin logs in the index */
 #define MYSQLND_REFRESH_BACKUP_LOG     0x200000L
 
+
+#define MYSQLND_STORE_PS               1
+#define MYSQLND_STORE_NO_COPY  2
+#define MYSQLND_STORE_COPY             4
+
 #endif /* MYSQLND_ENUM_N_DEF_H */
 
 
index 75e745665a2c52a204ebc81649322553363a6e3e..2ed6acf3ab425847c2ac787fb44b7497b9101ca7 100644 (file)
@@ -1258,7 +1258,7 @@ end:
 static MYSQLND_RES *
 MYSQLND_METHOD(mysqlnd_res, store_result)(MYSQLND_RES * result,
                                                                                  MYSQLND_CONN_DATA * const conn,
-                                                                                 zend_bool ps_protocol TSRMLS_DC)
+                                                                                 const unsigned int flags TSRMLS_DC)
 {
        enum_func_status ret;
 
@@ -1271,7 +1271,7 @@ MYSQLND_METHOD(mysqlnd_res, store_result)(MYSQLND_RES * result,
 
        CONN_SET_STATE(conn, CONN_FETCHING_DATA);
 
-       ret = result->m.store_result_fetch_data(conn, result, result->meta, ps_protocol TSRMLS_CC);
+       ret = result->m.store_result_fetch_data(conn, result, result->meta, flags & MYSQLND_STORE_PS TSRMLS_CC);
        if (FAIL == ret) {
                if (result->stored_data) {
                        COPY_CLIENT_ERROR(*conn->error_info, result->stored_data->error_info);
index 5c035a593492d5f87175b986e1813e1e22d11b2e..65f1c57a002d775e293024a055684c90e843a326 100644 (file)
@@ -418,8 +418,8 @@ typedef enum_func_status    (*func_mysqlnd_conn_data__set_charset)(MYSQLND_CONN_DAT
 typedef enum_func_status       (*func_mysqlnd_conn_data__query)(MYSQLND_CONN_DATA * conn, const char * query, unsigned int query_len TSRMLS_DC);
 typedef enum_func_status       (*func_mysqlnd_conn_data__send_query)(MYSQLND_CONN_DATA * conn, const char *query, unsigned int query_len TSRMLS_DC);
 typedef enum_func_status       (*func_mysqlnd_conn_data__reap_query)(MYSQLND_CONN_DATA * conn TSRMLS_DC);
-typedef MYSQLND_RES *          (*func_mysqlnd_conn_data__use_result)(MYSQLND_CONN_DATA * const conn TSRMLS_DC);
-typedef MYSQLND_RES *          (*func_mysqlnd_conn_data__store_result)(MYSQLND_CONN_DATA * const conn TSRMLS_DC);
+typedef MYSQLND_RES *          (*func_mysqlnd_conn_data__use_result)(MYSQLND_CONN_DATA * const conn, const unsigned int flags TSRMLS_DC);
+typedef MYSQLND_RES *          (*func_mysqlnd_conn_data__store_result)(MYSQLND_CONN_DATA * const conn, const unsigned int flags TSRMLS_DC);
 typedef enum_func_status       (*func_mysqlnd_conn_data__next_result)(MYSQLND_CONN_DATA * const conn TSRMLS_DC);
 typedef zend_bool                      (*func_mysqlnd_conn_data__more_results)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC);
 
@@ -614,7 +614,7 @@ typedef enum_func_status    (*func_mysqlnd_res__row_decoder)(MYSQLND_MEMORY_POOL_CH
 
 
 typedef MYSQLND_RES *          (*func_mysqlnd_res__use_result)(MYSQLND_RES * const result, zend_bool ps_protocol TSRMLS_DC);
-typedef MYSQLND_RES *          (*func_mysqlnd_res__store_result)(MYSQLND_RES * result, MYSQLND_CONN_DATA * const conn, zend_bool ps TSRMLS_DC);
+typedef MYSQLND_RES *          (*func_mysqlnd_res__store_result)(MYSQLND_RES * result, MYSQLND_CONN_DATA * const conn, const unsigned int flags TSRMLS_DC);
 typedef void                           (*func_mysqlnd_res__fetch_into)(MYSQLND_RES *result, unsigned int flags, zval *return_value, enum_mysqlnd_extension ext TSRMLS_DC ZEND_FILE_LINE_DC);
 typedef MYSQLND_ROW_C          (*func_mysqlnd_res__fetch_row_c)(MYSQLND_RES *result TSRMLS_DC);
 typedef void                           (*func_mysqlnd_res__fetch_all)(MYSQLND_RES *result, unsigned int flags, zval *return_value TSRMLS_DC ZEND_FILE_LINE_DC);