diff options
author | Vladislav Vaintroub <wlad@mariadb.com> | 2016-07-14 19:40:50 +0000 |
---|---|---|
committer | Vladislav Vaintroub <wlad@mariadb.com> | 2016-07-14 19:40:50 +0000 |
commit | 49a5faa1c215044eec860f6ec15a22b57bdb0d5c (patch) | |
tree | 51fe50561b04776c42c1c8977ce7fdb0304860f0 /sql/sys_vars.cc | |
parent | 90a3eeba76835962fc39f5c4e398d1c921640520 (diff) | |
download | mariadb-git-10.2-wlad-batch-mode.tar.gz |
Dump skip_flush, queries get stuck. Instead, just allow to switch on Nagle's algorithm temporarily10.2-wlad-batch-mode
Diffstat (limited to 'sql/sys_vars.cc')
-rw-r--r-- | sql/sys_vars.cc | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index 913e1c8bdc7..d3a1fd7d68c 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -5236,29 +5236,28 @@ static Sys_var_mybool Sys_query_cache_strip_comments( DEFAULT(FALSE)); +extern "C" int vio_set_nodelay(Vio *vio, int nodelay); static bool fix_batch_mode(sys_var *self, THD *thd, enum_var_type type) { +#ifndef EMBEDDED_SERVER if (type == OPT_SESSION) { - my_bool set_batch_mode= thd->variables.batch_mode; - if (set_batch_mode) + int err = vio_set_nodelay(thd->net.vio, thd->variables.batch_mode ? 0:1); + if (err) { - my_bool has_more_data - = (my_bool) vio_io_wait(thd->net.vio, VIO_IO_EVENT_READ, 0) > 0; - thd->get_stmt_da()->set_skip_flush(has_more_data); - } - else - { - thd->get_stmt_da()->set_skip_flush(FALSE); + push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN, ER_UNKNOWN_ERROR, + "Could not %s Nagle's algorithm, socket error %d", + thd->variables.batch_mode?"enable":"disable", socket_errno); } } +#endif return false; } static Sys_var_mybool Sys_batch_mode( "batch_mode", - "Client sends multiple queries without waiting for response", - SESSION_VAR(batch_mode), CMD_LINE(OPT_ARG), + "Improve the efficiency of TCP/IP networks by reducing the number of packets that need to be sent over the network via Nagle's algoritm", + SESSION_ONLY(batch_mode), CMD_LINE(OPT_ARG), DEFAULT(FALSE), NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0), ON_UPDATE(fix_batch_mode)); |