mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
SHOW EXPLAIN: merge to 10.0-base.
This commit is contained in:
@@ -84,6 +84,8 @@ static my_bool non_blocking_api_enabled= 0;
|
||||
#define QUERY_SEND_FLAG 1
|
||||
#define QUERY_REAP_FLAG 2
|
||||
|
||||
#define QUERY_PRINT_ORIGINAL_FLAG 4
|
||||
|
||||
#ifndef HAVE_SETENV
|
||||
static int setenv(const char *name, const char *value, int overwrite);
|
||||
#endif
|
||||
@@ -344,7 +346,8 @@ enum enum_commands {
|
||||
Q_ERROR,
|
||||
Q_SEND, Q_REAP,
|
||||
Q_DIRTY_CLOSE, Q_REPLACE, Q_REPLACE_COLUMN,
|
||||
Q_PING, Q_EVAL,
|
||||
Q_PING, Q_EVAL,
|
||||
Q_EVALP,
|
||||
Q_EVAL_RESULT,
|
||||
Q_ENABLE_QUERY_LOG, Q_DISABLE_QUERY_LOG,
|
||||
Q_ENABLE_RESULT_LOG, Q_DISABLE_RESULT_LOG,
|
||||
@@ -410,6 +413,7 @@ const char *command_names[]=
|
||||
"replace_column",
|
||||
"ping",
|
||||
"eval",
|
||||
"evalp",
|
||||
"eval_result",
|
||||
/* Enable/disable that the _query_ is logged to result file */
|
||||
"enable_query_log",
|
||||
@@ -8316,7 +8320,8 @@ void run_query(struct st_connection *cn, struct st_command *command, int flags)
|
||||
/*
|
||||
Evaluate query if this is an eval command
|
||||
*/
|
||||
if (command->type == Q_EVAL || command->type == Q_SEND_EVAL)
|
||||
if (command->type == Q_EVAL || command->type == Q_SEND_EVAL ||
|
||||
command->type == Q_EVALP)
|
||||
{
|
||||
init_dynamic_string(&eval_query, "", command->query_len+256, 1024);
|
||||
do_eval(&eval_query, command->query, command->end, FALSE);
|
||||
@@ -8348,10 +8353,20 @@ void run_query(struct st_connection *cn, struct st_command *command, int flags)
|
||||
*/
|
||||
if (!disable_query_log && (flags & QUERY_SEND_FLAG))
|
||||
{
|
||||
replace_dynstr_append_mem(ds, query, query_len);
|
||||
char *print_query= query;
|
||||
int print_len= query_len;
|
||||
if (flags & QUERY_PRINT_ORIGINAL_FLAG)
|
||||
{
|
||||
print_query= command->query;
|
||||
print_len= command->end - command->query;
|
||||
}
|
||||
replace_dynstr_append_mem(ds, print_query, print_len);
|
||||
dynstr_append_mem(ds, delimiter, delimiter_length);
|
||||
dynstr_append_mem(ds, "\n", 1);
|
||||
}
|
||||
|
||||
/* We're done with this flag */
|
||||
flags &= ~QUERY_PRINT_ORIGINAL_FLAG;
|
||||
|
||||
/*
|
||||
Write the command to the result file before we execute the query
|
||||
@@ -9212,6 +9227,7 @@ int main(int argc, char **argv)
|
||||
case Q_EVAL_RESULT:
|
||||
die("'eval_result' command is deprecated");
|
||||
case Q_EVAL:
|
||||
case Q_EVALP:
|
||||
case Q_QUERY_VERTICAL:
|
||||
case Q_QUERY_HORIZONTAL:
|
||||
if (command->query == command->query_buf)
|
||||
@@ -9239,6 +9255,9 @@ int main(int argc, char **argv)
|
||||
flags= QUERY_REAP_FLAG;
|
||||
}
|
||||
|
||||
if (command->type == Q_EVALP)
|
||||
flags |= QUERY_PRINT_ORIGINAL_FLAG;
|
||||
|
||||
/* Check for special property for this query */
|
||||
display_result_vertically|= (command->type == Q_QUERY_VERTICAL);
|
||||
|
||||
|
Reference in New Issue
Block a user