summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.com>2018-07-03 14:02:05 +0400
committerAlexander Barkov <bar@mariadb.com>2018-07-03 14:02:05 +0400
commite61568ee9305c6c93c1a9f298a7fe04532881f24 (patch)
treec80b0967460f7c4f8743831690f7369e11c73722 /client
parent4b0cedf82d8d8ba582648dcb4a2620c146862a43 (diff)
parentc3289d27eef39a47fed2ce1ff239013ed6870f39 (diff)
downloadmariadb-git-e61568ee9305c6c93c1a9f298a7fe04532881f24.tar.gz
Merge remote-tracking branch 'origin/10.3' into 10.4
Diffstat (limited to 'client')
-rw-r--r--client/mysqldump.c15
-rw-r--r--client/mysqlslap.c4
-rw-r--r--client/mysqltest.cc119
3 files changed, 128 insertions, 10 deletions
diff --git a/client/mysqldump.c b/client/mysqldump.c
index dc87338aac2..c2c1aa6fc6c 100644
--- a/client/mysqldump.c
+++ b/client/mysqldump.c
@@ -5090,6 +5090,14 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
if (opt_xml)
print_xml_tag(md_result_file, "", "\n", "database", "name=", db, NullS);
+
+ /* obtain dump of routines (procs/functions) */
+ if (opt_routines && mysql_get_server_version(mysql) >= 50009)
+ {
+ DBUG_PRINT("info", ("Dumping routines for database %s", db));
+ dump_routines_for_db(db);
+ }
+
if (opt_single_transaction && mysql_get_server_version(mysql) >= 50500)
{
verbose_msg("-- Setting savepoint...\n");
@@ -5099,7 +5107,6 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
DBUG_RETURN(1);
}
}
-
/* Dump each selected table */
for (pos= dump_tables; pos < end; pos++)
{
@@ -5161,12 +5168,6 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
DBUG_PRINT("info", ("Dumping events for database %s", db));
dump_events_for_db(db);
}
- /* obtain dump of routines (procs/functions) */
- if (opt_routines && mysql_get_server_version(mysql) >= 50009)
- {
- DBUG_PRINT("info", ("Dumping routines for database %s", db));
- dump_routines_for_db(db);
- }
free_root(&glob_root, MYF(0));
if (opt_xml)
{
diff --git a/client/mysqlslap.c b/client/mysqlslap.c
index 420dc2b94af..4cb6cbcc15b 100644
--- a/client/mysqlslap.c
+++ b/client/mysqlslap.c
@@ -850,7 +850,7 @@ build_table_string(void)
if (auto_generate_sql_guid_primary)
{
- dynstr_append(&table_string, "id varchar(32) primary key");
+ dynstr_append(&table_string, "id varchar(36) primary key");
if (num_int_cols || num_char_cols || auto_generate_sql_guid_primary)
dynstr_append(&table_string, ",");
@@ -865,7 +865,7 @@ build_table_string(void)
if (count) /* Except for the first pass we add a comma */
dynstr_append(&table_string, ",");
- if (snprintf(buf, HUGE_STRING_LENGTH, "id%d varchar(32) unique key", count)
+ if (snprintf(buf, HUGE_STRING_LENGTH, "id%d varchar(36) unique key", count)
> HUGE_STRING_LENGTH)
{
fprintf(stderr, "Memory Allocation error in create table\n");
diff --git a/client/mysqltest.cc b/client/mysqltest.cc
index b9aac043017..829ae0b95c1 100644
--- a/client/mysqltest.cc
+++ b/client/mysqltest.cc
@@ -125,7 +125,8 @@ static my_bool view_protocol= 0, view_protocol_enabled= 0;
static my_bool cursor_protocol= 0, cursor_protocol_enabled= 0;
static my_bool parsing_disabled= 0;
static my_bool display_result_vertically= FALSE, display_result_lower= FALSE,
- display_metadata= FALSE, display_result_sorted= FALSE;
+ display_metadata= FALSE, display_result_sorted= FALSE,
+ display_session_track_info= FALSE;
static my_bool disable_query_log= 0, disable_result_log= 0;
static my_bool disable_connect_log= 0;
static my_bool disable_warnings= 0, disable_column_names= 0;
@@ -153,6 +154,7 @@ static struct property prop_list[] = {
{ &abort_on_error, 0, 1, 0, "$ENABLED_ABORT_ON_ERROR" },
{ &disable_connect_log, 0, 1, 1, "$ENABLED_CONNECT_LOG" },
{ &disable_info, 0, 1, 1, "$ENABLED_INFO" },
+ { &display_session_track_info, 0, 1, 1, "$ENABLED_STATE_CHANGE_INFO" },
{ &display_metadata, 0, 0, 0, "$ENABLED_METADATA" },
{ &ps_protocol_enabled, 0, 0, 0, "$ENABLED_PS_PROTOCOL" },
{ &disable_query_log, 0, 0, 1, "$ENABLED_QUERY_LOG" },
@@ -166,6 +168,7 @@ enum enum_prop {
P_ABORT= 0,
P_CONNECT,
P_INFO,
+ P_SESSION_TRACK,
P_META,
P_PS,
P_QUERY,
@@ -362,6 +365,7 @@ enum enum_commands {
Q_WAIT_FOR_SLAVE_TO_STOP,
Q_ENABLE_WARNINGS, Q_DISABLE_WARNINGS,
Q_ENABLE_INFO, Q_DISABLE_INFO,
+ Q_ENABLE_SESSION_TRACK_INFO, Q_DISABLE_SESSION_TRACK_INFO,
Q_ENABLE_METADATA, Q_DISABLE_METADATA,
Q_ENABLE_COLUMN_NAMES, Q_DISABLE_COLUMN_NAMES,
Q_EXEC, Q_DELIMITER,
@@ -384,6 +388,7 @@ enum enum_commands {
Q_RESULT_FORMAT_VERSION,
Q_MOVE_FILE, Q_REMOVE_FILES_WILDCARD, Q_SEND_EVAL,
Q_ENABLE_PREPARE_WARNINGS, Q_DISABLE_PREPARE_WARNINGS,
+ Q_RESET_CONNECTION,
Q_UNKNOWN, /* Unknown command. */
Q_COMMENT, /* Comments, ignored. */
Q_COMMENT_WITH_COMMAND,
@@ -435,6 +440,8 @@ const char *command_names[]=
"disable_warnings",
"enable_info",
"disable_info",
+ "enable_session_track_info",
+ "disable_session_track_info",
"enable_metadata",
"disable_metadata",
"enable_column_names",
@@ -491,6 +498,7 @@ const char *command_names[]=
"send_eval",
"enable_prepare_warnings",
"disable_prepare_warnings",
+ "reset_connection",
0
};
@@ -6532,6 +6540,34 @@ void do_delimiter(struct st_command* command)
}
+/*
+ do_reset_connection
+
+ DESCRIPTION
+ Reset the current session.
+*/
+
+static void do_reset_connection()
+{
+#ifndef EMBEDDED_LIBRARY
+ MYSQL *mysql = cur_con->mysql;
+
+ DBUG_ENTER("do_reset_connection");
+ if (mysql_reset_connection(mysql))
+ die("reset connection failed: %s", mysql_error(mysql));
+ if (cur_con->stmt)
+ {
+ mysql_stmt_close(cur_con->stmt);
+ cur_con->stmt= NULL;
+ }
+ DBUG_VOID_RETURN;
+#else
+ die("reset connection failed: unsupported by embedded server client library");
+ return;
+#endif
+}
+
+
my_bool match_delimiter(int c, const char *delim, size_t length)
{
uint i;
@@ -7787,6 +7823,70 @@ void append_info(DYNAMIC_STRING *ds, ulonglong affected_rows,
}
+/**
+ @brief Append state change information (received through Ok packet) to the output.
+
+ @param [in,out] ds Dynamic string to hold the content to be printed.
+ @param [in] mysql Connection handle.
+*/
+
+static void append_session_track_info(DYNAMIC_STRING *ds, MYSQL *mysql)
+{
+#ifndef EMBEDDED_LIBRARY
+ for (unsigned int type= SESSION_TRACK_BEGIN; type <= SESSION_TRACK_END; type++)
+ {
+ const char *data;
+ size_t data_length;
+
+ if (!mysql_session_track_get_first(mysql,
+ (enum_session_state_type) type,
+ &data, &data_length))
+ {
+ dynstr_append(ds, "-- ");
+ switch (type)
+ {
+ case SESSION_TRACK_SYSTEM_VARIABLES:
+ dynstr_append(ds, "Tracker : SESSION_TRACK_SYSTEM_VARIABLES\n");
+ break;
+ case SESSION_TRACK_SCHEMA:
+ dynstr_append(ds, "Tracker : SESSION_TRACK_SCHEMA\n");
+ break;
+ case SESSION_TRACK_STATE_CHANGE:
+ dynstr_append(ds, "Tracker : SESSION_TRACK_STATE_CHANGE\n");
+ break;
+ case SESSION_TRACK_GTIDS:
+ dynstr_append(ds, "Tracker : SESSION_TRACK_GTIDS\n");
+ break;
+ case SESSION_TRACK_TRANSACTION_CHARACTERISTICS:
+ dynstr_append(ds, "Tracker : SESSION_TRACK_TRANSACTION_CHARACTERISTICS\n");
+ break;
+ case SESSION_TRACK_TRANSACTION_TYPE:
+ dynstr_append(ds, "Tracker : SESSION_TRACK_TRANSACTION_TYPE\n");
+ break;
+ default:
+ DBUG_ASSERT(0);
+ dynstr_append(ds, "\n");
+ }
+
+
+ dynstr_append(ds, "-- ");
+ dynstr_append_mem(ds, data, data_length);
+ }
+ else
+ continue;
+ while (!mysql_session_track_get_next(mysql,
+ (enum_session_state_type) type,
+ &data, &data_length))
+ {
+ dynstr_append(ds, "\n-- ");
+ dynstr_append_mem(ds, data, data_length);
+ }
+ dynstr_append(ds, "\n\n");
+ }
+#endif /* EMBEDDED_LIBRARY */
+}
+
+
/*
Display the table headings with the names tab separated
*/
@@ -7967,6 +8067,9 @@ void run_query_normal(struct st_connection *cn, struct st_command *command,
if (!disable_info)
append_info(ds, mysql_affected_rows(mysql), mysql_info(mysql));
+ if (display_session_track_info)
+ append_session_track_info(ds, mysql);
+
/*
Add all warnings to the result. We can't do this if we are in
the middle of processing results from multi-statement, because
@@ -8382,6 +8485,10 @@ void run_query_stmt(struct st_connection *cn, struct st_command *command,
if (!disable_info)
append_info(ds, mysql_stmt_affected_rows(stmt), mysql_info(mysql));
+ if (display_session_track_info)
+ append_session_track_info(ds, mysql);
+
+
if (!disable_warnings)
{
/* Get the warnings from execute */
@@ -8777,6 +8884,7 @@ void init_re(void)
"[[:space:]]*SELECT[[:space:]]|"
"[[:space:]]*CREATE[[:space:]]+TABLE[[:space:]]|"
"[[:space:]]*DO[[:space:]]|"
+ "[[:space:]]*HANDLER[[:space:]]+.*[[:space:]]+READ[[:space:]]|"
"[[:space:]]*SET[[:space:]]+OPTION[[:space:]]|"
"[[:space:]]*DELETE[[:space:]]+MULTI[[:space:]]|"
"[[:space:]]*UPDATE[[:space:]]+MULTI[[:space:]]|"
@@ -9362,6 +9470,12 @@ int main(int argc, char **argv)
case Q_DISABLE_INFO:
set_property(command, P_INFO, 1);
break;
+ case Q_ENABLE_SESSION_TRACK_INFO:
+ set_property(command, P_SESSION_TRACK, 1);
+ break;
+ case Q_DISABLE_SESSION_TRACK_INFO:
+ set_property(command, P_SESSION_TRACK, 0);
+ break;
case Q_ENABLE_METADATA:
set_property(command, P_META, 1);
break;
@@ -9572,6 +9686,9 @@ int main(int argc, char **argv)
case Q_PING:
handle_command_error(command, mysql_ping(cur_con->mysql), -1);
break;
+ case Q_RESET_CONNECTION:
+ do_reset_connection();
+ break;
case Q_SEND_SHUTDOWN:
handle_command_error(command,
mysql_shutdown(cur_con->mysql,