=== modified file 'include/mysql_com.h' --- include/mysql_com.h 2007-12-13 10:53:24 +0000 +++ include/mysql_com.h 2008-09-10 15:25:23 +0000 @@ -323,7 +323,9 @@ enum enum_cursor_type enum enum_mysql_set_option { MYSQL_OPTION_MULTI_STATEMENTS_ON, - MYSQL_OPTION_MULTI_STATEMENTS_OFF + MYSQL_OPTION_MULTI_STATEMENTS_OFF, + MYSQL_OPTION_USE_TEXT_PROTOCOL, + MYSQL_OPTION_USE_BINARY_PROTOCOL }; #define net_new_transaction(net) ((net)->pkt_nr=0) === modified file 'sql/sql_parse.cc' --- sql/sql_parse.cc 2008-08-26 08:32:43 +0000 +++ sql/sql_parse.cc 2008-09-10 15:58:35 +0000 @@ -2178,6 +2178,14 @@ bool dispatch_command(enum enum_server_c thd->client_capabilities&= ~CLIENT_MULTI_STATEMENTS; send_eof(thd); break; + case (int) MYSQL_OPTION_USE_TEXT_PROTOCOL: + thd->protocol= (Protocol *) &thd->protocol_simple; + send_eof(thd); + break; + case (int) MYSQL_OPTION_USE_BINARY_PROTOCOL: + thd->protocol= (Protocol *) &thd->protocol_prep; + send_eof(thd); + break; default: my_message(ER_UNKNOWN_COM_ERROR, ER(ER_UNKNOWN_COM_ERROR), MYF(0)); break; Index: mysqlnd.c =================================================================== RCS file: /repository/php-src/ext/mysqlnd/mysqlnd.c,v retrieving revision 1.5.2.26 diff -u -r1.5.2.26 mysqlnd.c --- mysqlnd.c 19 Aug 2008 10:42:11 -0000 1.5.2.26 +++ mysqlnd.c 10 Sep 2008 17:01:11 -0000 @@ -433,6 +433,12 @@ char buffer[2]; DBG_ENTER("mysqlnd_conn::set_server_option"); + if (option == MYSQL_OPTION_USE_BINARY_PROTOCOL) { + conn->use_binary_protocol_during_query_data_rx = TRUE; + } else if (option == MYSQL_OPTION_USE_TEXT_PROTOCOL) { + conn->use_binary_protocol_during_query_data_rx = FALSE; + } + int2store(buffer, (uint) option); ret = mysqlnd_simple_command(conn, COM_SET_OPTION, buffer, sizeof(buffer), PROT_EOF_PACKET, FALSE TSRMLS_CC); @@ -746,6 +752,8 @@ PACKET_FREE(auth_packet); PACKET_FREE_ALLOCA(ok_packet); + conn->use_binary_protocol_during_query_data_rx = FALSE; + conn->zval_cache = mysqlnd_palloc_get_thd_cache_reference(zval_cache); conn->net.cmd_buffer.length = 128L*1024L; conn->net.cmd_buffer.buffer = mnd_pemalloc(conn->net.cmd_buffer.length, conn->persistent); @@ -1837,7 +1845,7 @@ result = conn->current_result; conn->current_result = NULL; - result = result->m.store_result(result, conn, FALSE TSRMLS_CC); + result = result->m.store_result(result, conn, conn->use_binary_protocol_during_query_data_rx TSRMLS_CC); DBG_RETURN(result); } /* }}} */ Index: mysqlnd_enum_n_def.h =================================================================== RCS file: /repository/php-src/ext/mysqlnd/mysqlnd_enum_n_def.h,v retrieving revision 1.2.2.9 diff -u -r1.2.2.9 mysqlnd_enum_n_def.h --- mysqlnd_enum_n_def.h 7 May 2008 15:14:26 -0000 1.2.2.9 +++ mysqlnd_enum_n_def.h 10 Sep 2008 17:01:11 -0000 @@ -181,7 +181,9 @@ typedef enum mysqlnd_server_option { MYSQL_OPTION_MULTI_STATEMENTS_ON, - MYSQL_OPTION_MULTI_STATEMENTS_OFF + MYSQL_OPTION_MULTI_STATEMENTS_OFF, + MYSQL_OPTION_USE_TEXT_PROTOCOL, + MYSQL_OPTION_USE_BINARY_PROTOCOL } enum_mysqlnd_server_option; Index: mysqlnd_structs.h =================================================================== RCS file: /repository/php-src/ext/mysqlnd/mysqlnd_structs.h,v retrieving revision 1.2.2.13 diff -u -r1.2.2.13 mysqlnd_structs.h --- mysqlnd_structs.h 24 Apr 2008 14:22:19 -0000 1.2.2.13 +++ mysqlnd_structs.h 10 Sep 2008 17:01:17 -0000 @@ -440,6 +440,8 @@ /* persistent connection */ zend_bool persistent; + zend_bool use_binary_protocol_during_query_data_rx; + /* options */ MYSQLND_OPTION options; Index: mysqli.c =================================================================== RCS file: /repository/php-src/ext/mysqli/mysqli.c,v retrieving revision 1.72.2.16.2.17.2.29 diff -u -r1.72.2.16.2.17.2.29 mysqli.c --- mysqli.c 25 Jul 2008 08:23:06 -0000 1.72.2.16.2.17.2.29 +++ mysqli.c 10 Sep 2008 17:03:04 -0000 @@ -839,6 +839,9 @@ REGISTER_LONG_CONSTANT("MYSQLI_ON_UPDATE_NOW_FLAG", ON_UPDATE_NOW_FLAG, CONST_CS | CONST_PERSISTENT); #endif + REGISTER_LONG_CONSTANT("MYSQLI_OPTION_USE_TEXT_PROTOCOL", MYSQL_OPTION_USE_TEXT_PROTOCOL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_OPTION_USE_BINARY_PROTOCOL", MYSQL_OPTION_USE_BINARY_PROTOCOL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_DECIMAL", FIELD_TYPE_DECIMAL, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("MYSQLI_TYPE_TINY", FIELD_TYPE_TINY, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("MYSQLI_TYPE_SHORT", FIELD_TYPE_SHORT, CONST_CS | CONST_PERSISTENT); Index: mysqli_api.c =================================================================== RCS file: /repository/php-src/ext/mysqli/mysqli_api.c,v retrieving revision 1.118.2.22.2.16.2.20 diff -u -r1.118.2.22.2.16.2.20 mysqli_api.c --- mysqli_api.c 2 Aug 2008 04:46:06 -0000 1.118.2.22.2.16.2.20 +++ mysqli_api.c 10 Sep 2008 17:03:09 -0000 @@ -1440,6 +1440,26 @@ #endif /* }}} */ + +/* {{{ proto bool mysqli_set_server_option(object link, int option) + Get number of affected rows in previous MySQL operation */ +PHP_FUNCTION(mysqli_set_server_option) +{ + MY_MYSQL *mysql; + zval *mysql_link; + long option; + + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_link, mysqli_link_class_entry, &option) == FAILURE) { + return; + } + + MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID); + + RETURN_BOOL(!mysql_set_server_option(mysql->mysql, option)); +} +/* }}} */ + + /* {{{ proto bool mysqli_more_results(object link) check if there any more query results from a multi query */ PHP_FUNCTION(mysqli_more_results) Index: mysqli_fe.c =================================================================== RCS file: /repository/php-src/ext/mysqli/mysqli_fe.c,v retrieving revision 1.49.2.5.2.1.2.7 diff -u -r1.49.2.5.2.1.2.7 mysqli_fe.c --- mysqli_fe.c 24 Apr 2008 14:22:19 -0000 1.49.2.5.2.1.2.7 +++ mysqli_fe.c 10 Sep 2008 17:03:11 -0000 @@ -127,6 +127,7 @@ #ifdef HAVE_MYSQLI_SET_CHARSET PHP_FE(mysqli_set_charset, NULL) #endif + PHP_FE(mysqli_set_server_option, NULL) PHP_FE(mysqli_stmt_attr_get, NULL) PHP_FE(mysqli_stmt_attr_set, NULL) PHP_FE(mysqli_stmt_field_count, NULL) @@ -212,6 +213,7 @@ PHP_FALIAS(set_local_infile_default,mysqli_set_local_infile_default,NULL) PHP_FALIAS(set_local_infile_handler,mysqli_set_local_infile_handler,NULL) #endif + PHP_FALIAS(set_server_option,mysqli_set_server_option,NULL) PHP_FALIAS(multi_query,mysqli_multi_query,NULL) PHP_FALIAS(mysqli,mysqli_link_construct,NULL) PHP_FALIAS(more_results,mysqli_more_results, NULL) Index: php_mysqli_structs.h =================================================================== RCS file: /repository/php-src/ext/mysqli/php_mysqli_structs.h,v retrieving revision 1.4.2.15 diff -u -r1.4.2.15 php_mysqli_structs.h --- php_mysqli_structs.h 21 Jul 2008 12:58:51 -0000 1.4.2.15 +++ php_mysqli_structs.h 10 Sep 2008 17:03:13 -0000 @@ -444,6 +444,7 @@ PHP_FUNCTION(mysqli_rollback); PHP_FUNCTION(mysqli_row_seek); PHP_FUNCTION(mysqli_select_db); +PHP_FUNCTION(mysqli_set_server_option); PHP_FUNCTION(mysqli_stmt_attr_get); PHP_FUNCTION(mysqli_stmt_attr_set); PHP_FUNCTION(mysqli_stmt_bind_param);