diff -Nru percona-xtrabackup-2.2.3/client/client_priv.h percona-xtrabackup-2.3.7/client/client_priv.h --- percona-xtrabackup-2.2.3/client/client_priv.h 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/client/client_priv.h 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -99,6 +99,7 @@ OPT_CONFIG_ALL, OPT_SERVER_PUBLIC_KEY, OPT_ENABLE_CLEARTEXT_PLUGIN, + OPT_CONNECTION_SERVER_ID, OPT_MAX_CLIENT_OPTION }; diff -Nru percona-xtrabackup-2.2.3/client/mysqladmin.cc percona-xtrabackup-2.3.7/client/mysqladmin.cc --- percona-xtrabackup-2.2.3/client/mysqladmin.cc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/client/mysqladmin.cc 2017-02-27 07:47:02.000000000 +0000 @@ -75,6 +75,7 @@ char *argument); static my_bool sql_connect(MYSQL *mysql, uint wait); static int execute_commands(MYSQL *mysql,int argc, char **argv); +static char **mask_password(int argc, char ***argv); static int drop_db(MYSQL *mysql,const char *db); extern "C" sig_handler endprog(int signal_number); static void nice_time(ulong sec,char *buff); @@ -314,11 +315,11 @@ int main(int argc,char *argv[]) { - int error= 0, ho_error; + int error= 0, ho_error, temp_argc; int first_command; my_bool can_handle_passwords; MYSQL mysql; - char **commands, **save_argv; + char **commands, **save_argv, **temp_argv; MY_INIT(argv[0]); mysql_init(&mysql); @@ -333,6 +334,9 @@ free_defaults(save_argv); exit(ho_error); } + temp_argv= mask_password(argc, &argv); + temp_argc= argc; + if (debug_info_flag) my_end_arg= MY_CHECK_ERROR | MY_GIVE_INFO; if (debug_check_flag) @@ -343,7 +347,7 @@ usage(); exit(1); } - commands = argv; + commands = temp_argv; if (tty_password) opt_password = get_tty_password(NullS); @@ -509,6 +513,13 @@ my_free(shared_memory_base_name); #endif free_defaults(save_argv); + temp_argc--; + while(temp_argc >= 0) + { + my_free(temp_argv[temp_argc]); + temp_argc--; + } + my_free(temp_argv); my_end(my_end_arg); exit(error ? 1 : 0); return 0; @@ -982,7 +993,10 @@ } } else + { + print_cmdline_password_warning(); typed_password= argv[1]; + } if (typed_password[0]) { @@ -1166,6 +1180,47 @@ return 0; } +/** + @brief Masking the password if it is passed as command line argument. + + @details It works in Linux and changes cmdline in ps and /proc/pid/cmdline, + but it won't work for history file of shell. + The command line arguments are copied to another array and the + password in the argv is masked. This function is called just after + "handle_options" because in "handle_options", the agrv pointers + are altered which makes freeing of dynamically allocated memory + difficult. The password masking is done before all other operations + in order to minimise the time frame of password visibility via cmdline. + + @param argc command line options (count) + @param argv command line options (values) + + @return temp_argv copy of argv +*/ + +static char **mask_password(int argc, char ***argv) +{ + char **temp_argv; + temp_argv= (char **)(my_malloc(sizeof(char *) * argc, MYF(MY_WME))); + argc--; + while (argc > 0) + { + temp_argv[argc]= my_strdup((*argv)[argc], MYF(MY_FAE)); + if (find_type((*argv)[argc - 1],&command_typelib, FIND_TYPE_BASIC) == ADMIN_PASSWORD || + find_type((*argv)[argc - 1],&command_typelib, FIND_TYPE_BASIC) == ADMIN_OLD_PASSWORD) + { + char *start= (*argv)[argc]; + while (*start) + *start++= 'x'; + start= (*argv)[argc]; + if (*start) + start[1]= 0; /* Cut length of argument */ + } + argc--; + } + temp_argv[argc]= my_strdup((*argv)[argc], MYF(MY_FAE)); + return(temp_argv); +} static void print_version(void) { diff -Nru percona-xtrabackup-2.2.3/client/mysqlbinlog.cc percona-xtrabackup-2.3.7/client/mysqlbinlog.cc --- percona-xtrabackup-2.2.3/client/mysqlbinlog.cc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/client/mysqlbinlog.cc 2017-02-27 07:47:02.000000000 +0000 @@ -69,7 +69,7 @@ #define CLIENT_CAPABILITIES (CLIENT_LONG_PASSWORD | CLIENT_LONG_FLAG | CLIENT_LOCAL_FILES) char server_version[SERVER_VERSION_LENGTH]; -ulong server_id = 0; +ulong filter_server_id = 0; /* One statement can result in a sequence of several events: Intvar_log_events, User_var_log_events, and Rand_log_events, followed by one @@ -125,7 +125,10 @@ static my_bool to_last_remote_log= 0, stop_never= 0; static my_bool opt_verify_binlog_checksum= 1; static ulonglong offset = 0; -static uint stop_never_server_id= 1; +static int64 stop_never_slave_server_id= -1; +#ifndef DBUG_OFF +static int64 connection_server_id= -1; +#endif //DBUG_OFF static char* host = 0; static int port= 0; static uint my_end_arg; @@ -150,7 +153,6 @@ static char *start_datetime_str, *stop_datetime_str; static my_time_t start_datetime= 0, stop_datetime= MY_TIME_T_MAX; static ulonglong rec_count= 0; -static ushort binlog_flags = 0; static MYSQL* mysql = NULL; static char* dirname_for_local_load= 0; static uint opt_server_id_bits = 0; @@ -196,7 +198,9 @@ const char* logname); static Exit_status dump_remote_log_entries(PRINT_EVENT_INFO *print_event_info, const char* logname); -static Exit_status dump_log_entries(const char* logname); +static Exit_status dump_single_log(PRINT_EVENT_INFO *print_event_info, + const char* logname); +static Exit_status dump_multiple_logs(int argc, char **argv); static Exit_status safe_connect(); /* @@ -869,7 +873,7 @@ events. */ if (ev_type != ROTATE_EVENT && - server_id && (server_id != ev->server_id)) + filter_server_id && (filter_server_id != ev->server_id)) goto end; } if (((my_time_t) (ev->when.tv_sec) >= stop_datetime) @@ -945,9 +949,20 @@ { in_transaction= false; print_event_info->skipped_event_in_transaction= false; + if (print_event_info->is_gtid_next_set) + print_event_info->is_gtid_next_valid= false; } else if (starts_group) in_transaction= true; + else + { + /* + We are not in a transaction and are not seeing a BEGIN or + COMMIT. So this is an implicitly committing DDL. + */ + if (print_event_info->is_gtid_next_set && !in_transaction) + print_event_info->is_gtid_next_valid= false; + } ev->print(result_file, print_event_info); if (head->error == -1) @@ -1284,6 +1299,8 @@ case GTID_LOG_EVENT: { seen_gtids= true; + print_event_info->is_gtid_next_set= true; + print_event_info->is_gtid_next_valid= true; if (print_event_info->skipped_event_in_transaction == true) fprintf(result_file, "COMMIT /* added by mysqlbinlog */%s\n", print_event_info->delimiter); print_event_info->skipped_event_in_transaction= false; @@ -1297,6 +1314,8 @@ { in_transaction= false; print_event_info->skipped_event_in_transaction= false; + if (print_event_info->is_gtid_next_set) + print_event_info->is_gtid_next_valid= false; ev->print(result_file, print_event_info); if (head->error == -1) goto err; @@ -1319,9 +1338,11 @@ since there may be no gtids on the next one. */ seen_gtids= false; - fprintf(result_file, "SET @@SESSION.GTID_NEXT= 'AUTOMATIC' " - "/* added by mysqlbinlog */ %s\n", - print_event_info->delimiter); + fprintf(result_file, "%sAUTOMATIC' /* added by mysqlbinlog */ %s\n", + Gtid_log_event::SET_STRING_PREFIX, + print_event_info->delimiter); + print_event_info->is_gtid_next_set= false; + print_event_info->is_gtid_next_valid= true; } } ev->print(result_file, print_event_info); @@ -1478,7 +1499,7 @@ &opt_secure_auth, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"server-id", OPT_SERVER_ID, "Extract only binlog entries created by the server having the given id.", - &server_id, &server_id, 0, GET_ULONG, + &filter_server_id, &filter_server_id, 0, GET_ULONG, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"server-id-bits", 0, "Set number of significant bits in server-id", @@ -1533,9 +1554,15 @@ &stop_never, &stop_never, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"stop-never-slave-server-id", OPT_WAIT_SERVER_ID, - "The slave server ID used for stop-never", - &stop_never_server_id, &stop_never_server_id, 0, - GET_UINT, REQUIRED_ARG, 65535, 1, 65535, 0, 0, 0}, + "The slave server_id used for --read-from-remote-server --stop-never.", + &stop_never_slave_server_id, &stop_never_slave_server_id, 0, + GET_LL, REQUIRED_ARG, -1, -1, 0xFFFFFFFFLL, 0, 0, 0}, +#ifndef DBUG_OFF + {"connection-server-id", OPT_CONNECTION_SERVER_ID, + "The slave server_id used for --read-from-remote-server.", + &connection_server_id, &connection_server_id, 0, + GET_LL, REQUIRED_ARG, -1, -1, 0xFFFFFFFFLL, 0, 0, 0}, +#endif {"stop-position", OPT_STOP_POSITION, "Stop reading the binlog at position N. Applies to the last binlog " "passed on the command line.", @@ -1870,11 +1897,35 @@ @retval OK_STOP No error, but the end of the specified range of events to process has been reached and the program should terminate. */ -static Exit_status dump_log_entries(const char* logname) +static Exit_status dump_single_log(PRINT_EVENT_INFO *print_event_info, + const char* logname) { - DBUG_ENTER("dump_log_entries"); + DBUG_ENTER("dump_single_log"); + + Exit_status rc= OK_CONTINUE; + + switch (opt_remote_proto) + { + case BINLOG_LOCAL: + rc= dump_local_log_entries(print_event_info, logname); + break; + case BINLOG_DUMP_NON_GTID: + case BINLOG_DUMP_GTID: + rc= dump_remote_log_entries(print_event_info, logname); + break; + default: + DBUG_ASSERT(0); + break; + } + DBUG_RETURN(rc); +} + +static Exit_status dump_multiple_logs(int argc, char **argv) +{ + DBUG_ENTER("dump_multiple_logs"); Exit_status rc= OK_CONTINUE; + PRINT_EVENT_INFO print_event_info; if (!print_event_info.init_ok()) DBUG_RETURN(ERROR_STOP); @@ -1890,18 +1941,18 @@ print_event_info.verbose= short_form ? 0 : verbose; - switch (opt_remote_proto) + // Dump all logs. + my_off_t save_stop_position= stop_position; + stop_position= ~(my_off_t)0; + for (int i= 0; i < argc; i++) { - case BINLOG_LOCAL: - rc= dump_local_log_entries(&print_event_info, logname); - break; - case BINLOG_DUMP_NON_GTID: - case BINLOG_DUMP_GTID: - rc= dump_remote_log_entries(&print_event_info, logname); - break; - default: - DBUG_ASSERT(0); - break; + if (i == argc - 1) // last log, --stop-position applies + stop_position= save_stop_position; + if ((rc= dump_single_log(&print_event_info, argv[i])) != OK_CONTINUE) + break; + + // For next log, --start-position does not apply + start_position= BIN_LOG_HEADER_SIZE; } if (buff_ev.elements > 0) @@ -1928,6 +1979,14 @@ if (print_event_info.skipped_event_in_transaction) fprintf(result_file, "COMMIT /* added by mysqlbinlog */%s\n", print_event_info.delimiter); + if (!print_event_info.is_gtid_next_valid) + { + fprintf(result_file, "%sAUTOMATIC' /* added by mysqlbinlog */%s\n", + Gtid_log_event::SET_STRING_PREFIX, + print_event_info.delimiter); + print_event_info.is_gtid_next_set= false; + print_event_info.is_gtid_next_valid= true; + } fprintf(result_file, "DELIMITER ;\n"); strmov(print_event_info.delimiter, ";"); } @@ -2022,6 +2081,12 @@ } +static int get_dump_flags() +{ + return stop_never ? 0 : BINLOG_DUMP_NON_BLOCK; +} + + /** Requests binlog dump from a remote server and prints the events it receives. @@ -2070,7 +2135,21 @@ Fake a server ID to log continously. This will show as a slave on the mysql server. */ - server_id= ((to_last_remote_log && stop_never) ? stop_never_server_id : 0); + if (to_last_remote_log && stop_never) + { + if (stop_never_slave_server_id == -1) + server_id= 1; + else + server_id= stop_never_slave_server_id; + } + else + server_id= 0; +#ifndef DBUG_OFF + if (connection_server_id != -1) + server_id= connection_server_id; + +#endif + size_t tlen = strlen(logname); if (tlen > UINT_MAX) { @@ -2098,7 +2177,7 @@ */ int4store(ptr_buffer, (uint32) start_position); ptr_buffer+= ::BINLOG_POS_OLD_INFO_SIZE; - int2store(ptr_buffer, binlog_flags); + int2store(ptr_buffer, get_dump_flags()); ptr_buffer+= ::BINLOG_FLAGS_INFO_SIZE; int4store(ptr_buffer, server_id); ptr_buffer+= ::BINLOG_SERVER_ID_INFO_SIZE; @@ -2129,7 +2208,7 @@ } uchar* ptr_buffer= command_buffer; - int2store(ptr_buffer, binlog_flags); + int2store(ptr_buffer, get_dump_flags()); ptr_buffer+= ::BINLOG_FLAGS_INFO_SIZE; int4store(ptr_buffer, server_id); ptr_buffer+= ::BINLOG_SERVER_ID_INFO_SIZE; @@ -2292,8 +2371,14 @@ error("Could not create log file '%s'", log_file_name); DBUG_RETURN(ERROR_STOP); } - my_fwrite(result_file, (const uchar*) BINLOG_MAGIC, - BIN_LOG_HEADER_SIZE, MYF(0)); + DBUG_EXECUTE_IF("simulate_result_file_write_error_for_FD_event", + DBUG_SET("+d,simulate_fwrite_error");); + if (my_fwrite(result_file, (const uchar*) BINLOG_MAGIC, + BIN_LOG_HEADER_SIZE, MYF(MY_NABP))) + { + error("Could not write into log file '%s'", log_file_name); + DBUG_RETURN(ERROR_STOP); + } /* Need to handle these events correctly in raw mode too or this could get messy @@ -2316,7 +2401,13 @@ if (raw_mode) { - my_fwrite(result_file, net->read_pos + 1 , len - 1, MYF(0)); + DBUG_EXECUTE_IF("simulate_result_file_write_error", + DBUG_SET("+d,simulate_fwrite_error");); + if (my_fwrite(result_file, net->read_pos + 1 , len - 1, MYF(MY_NABP))) + { + error("Could not write into log file '%s'", log_file_name); + retval= ERROR_STOP; + } if (ev) { ev->temp_buf=0; @@ -2769,6 +2860,15 @@ global_sid_lock->unlock(); +#ifndef DBUG_OFF + if (connection_server_id == 0 && stop_never) + error("Cannot set --server-id=0 when --stop-never is specified."); + if (connection_server_id != -1 && stop_never_slave_server_id != -1) + error("Cannot set --connection-server-id= %lld and " + "--stop-never-slave-server-id= %lld. ", connection_server_id, + stop_never_slave_server_id); +#endif + DBUG_RETURN(OK_CONTINUE); } @@ -2812,22 +2912,22 @@ { char **defaults_argv; Exit_status retval= OK_CONTINUE; - ulonglong save_stop_position; MY_INIT(argv[0]); DBUG_ENTER("main"); DBUG_PROCESS(argv[0]); my_init_time(); // for time functions - /* + tzset(); // set tzname + /* A pointer of type Log_event can point to INTVAR USER_VAR RANDOM - events, when we allocate a element of sizeof(Log_event*) + events, when we allocate a element of sizeof(Log_event*) for the DYNAMIC_ARRAY. */ - if((my_init_dynamic_array(&buff_ev, sizeof(buff_event_info), + if((my_init_dynamic_array(&buff_ev, sizeof(buff_event_info), INTVAR_DYNAMIC_INIT, INTVAR_DYNAMIC_INCR))) exit(1); @@ -2853,6 +2953,7 @@ exit(1); } + umask(((~my_umask) & 0666)); /* Check for argument conflicts and do any post-processing */ if (args_post_process() == ERROR_STOP) exit(1); @@ -2908,17 +3009,7 @@ "\n/*!40101 SET NAMES %s */;\n", charset); } - for (save_stop_position= stop_position, stop_position= ~(my_off_t)0 ; - (--argc >= 0) ; ) - { - if (argc == 0) // last log, --stop-position applies - stop_position= save_stop_position; - if ((retval= dump_log_entries(*argv++)) != OK_CONTINUE) - break; - - // For next log, --start-position does not apply - start_position= BIN_LOG_HEADER_SIZE; - } + retval= dump_multiple_logs(argc, argv); if (!raw_mode) { diff -Nru percona-xtrabackup-2.2.3/client/mysql.cc percona-xtrabackup-2.3.7/client/mysql.cc --- percona-xtrabackup-2.2.3/client/mysql.cc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/client/mysql.cc 2017-02-27 07:47:02.000000000 +0000 @@ -1404,6 +1404,17 @@ sig_handler mysql_end(int sig) { +#ifndef _WIN32 + /* + Ingnoring SIGQUIT, SIGINT and SIGHUP signals when cleanup process starts. + This will help in resolving the double free issues, which occures in case + the signal handler function is started in between the clean up function. + */ + signal(SIGQUIT, SIG_IGN); + signal(SIGINT, SIG_IGN); + signal(SIGHUP, SIG_IGN); +#endif + mysql_close(&mysql); #ifdef HAVE_READLINE if (!status.batch && !quick && !opt_html && !opt_xml && diff -Nru percona-xtrabackup-2.2.3/client/mysql_config_editor.cc percona-xtrabackup-2.3.7/client/mysql_config_editor.cc --- percona-xtrabackup-2.2.3/client/mysql_config_editor.cc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/client/mysql_config_editor.cc 2017-02-27 07:47:02.000000000 +0000 @@ -49,8 +49,8 @@ excluding the header part. */ static size_t file_size; -static char *opt_user= NULL, *opt_password= NULL, *opt_host=NULL, - *opt_login_path= NULL, *opt_socket= NULL, *opt_port= NULL; +static const char *opt_user= NULL, *opt_password= NULL, *opt_host=NULL, + *opt_login_path= "client", *opt_socket= NULL, *opt_port= NULL; static char my_login_file[FN_REFLEN]; static char my_key[LOGIN_KEY_LEN]; @@ -140,11 +140,11 @@ {"password", 'p', "Prompt for password to be entered into the login file.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"user", 'u', "User name to be entered into the login file.", &opt_user, - &opt_user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + &opt_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"socket", 'S', "Socket path to be entered into login file.", &opt_socket, - &opt_socket, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + &opt_socket, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"port", 'P', "Port number to be entered into login file.", &opt_port, - &opt_port, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + &opt_port, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"warn", 'w', "Warn and ask for confirmation if set command attempts to " "overwrite an existing login path (enabled by default).", &opt_warn, &opt_warn, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, @@ -454,10 +454,6 @@ if ( argc_cmd > 1) goto error; - /* If NULL, set it to 'client' (default) */ - if (!opt_login_path) - opt_login_path= my_strdup("client", MYF(MY_WME)); - done: my_free(ptr); DBUG_RETURN(command); @@ -1046,7 +1042,7 @@ DBUG_ENTER("remove_login_path"); char *start=NULL, *end= NULL; - int tot_len, len, diff; + int to_move, len, diff; if((start= locate_login_path(file_buf, path_name)) == NULL) /* login path was not found, skip.. */ @@ -1058,7 +1054,7 @@ { end ++; /* Move past '\n' */ len= ((diff= (start - end)) > 0) ? diff : - diff; - tot_len= file_buf->length - len ; + to_move= file_buf->length - (end - file_buf->str); } else { @@ -1067,7 +1063,7 @@ goto done; } - while(tot_len --) + while(to_move --) *(start ++)= *(end ++); *start= '\0'; diff -Nru percona-xtrabackup-2.2.3/client/mysqldump.c percona-xtrabackup-2.3.7/client/mysqldump.c --- percona-xtrabackup-2.2.3/client/mysqldump.c 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/client/mysqldump.c 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -614,7 +614,7 @@ void check_io(FILE *file) { - if (ferror(file)) + if (ferror(file) || errno == 5) die(EX_EOF, "Got errno %d on write", errno); } @@ -1907,7 +1907,7 @@ const char *str_create) { uint i; - my_bool body_found= 0; + my_bool body_found __attribute__((unused)) = 0; char *create_stmt_ptr= NULL; ulong create_stmt_len= 0; MYSQL_FIELD *field; @@ -2574,7 +2574,7 @@ if (strcmp (table_type, "VIEW") == 0) /* view */ print_comment(sql_file, 0, - "\n--\n-- Temporary table structure for view %s\n--\n\n", + "\n--\n-- Temporary view structure for view %s\n--\n\n", result_table); else print_comment(sql_file, 0, @@ -2601,7 +2601,7 @@ char *scv_buff= NULL; my_ulonglong n_cols; - verbose_msg("-- It's a view, create dummy table for view\n"); + verbose_msg("-- It's a view, create dummy view\n"); /* save "show create" statement for later */ if ((row= mysql_fetch_row(result)) && (scv_buff=row[1])) @@ -2674,7 +2674,7 @@ fprintf(sql_file, "SET @saved_cs_client = @@character_set_client;\n" "SET character_set_client = utf8;\n" - "/*!50001 CREATE TABLE %s (\n", + "/*!50001 CREATE VIEW %s AS SELECT \n", result_table); /* @@ -2683,31 +2683,24 @@ there should be a _trailing_ comma. */ + row= mysql_fetch_row(result); /* - The actual column type doesn't matter anyway, since the table will - be dropped at run time. - We do tinyint to avoid hitting the row size limit. + A temporary view is created to resolve the view interdependencies. + This temporary view is dropped when the actual view is created. */ - fprintf(sql_file, " %s tinyint NOT NULL", + + fprintf(sql_file, " 1 AS %s", quote_name(row[0], name_buff, 0)); while((row= mysql_fetch_row(result))) { - /* col name, col type */ - fprintf(sql_file, ",\n %s tinyint NOT NULL", + fprintf(sql_file, ",\n 1 AS %s", quote_name(row[0], name_buff, 0)); } - /* - Stand-in tables are always MyISAM tables as the default - engine might have a column-limit that's lower than the - number of columns in the view, and MyISAM support is - guaranteed to be in the server anyway. - */ - fprintf(sql_file, - "\n) ENGINE=MyISAM */;\n" + fprintf(sql_file,"*/;\n" "SET character_set_client = @saved_cs_client;\n"); check_io(sql_file); @@ -3635,7 +3628,8 @@ field->type == MYSQL_TYPE_BLOB || field->type == MYSQL_TYPE_LONG_BLOB || field->type == MYSQL_TYPE_MEDIUM_BLOB || - field->type == MYSQL_TYPE_TINY_BLOB)) ? 1 : 0; + field->type == MYSQL_TYPE_TINY_BLOB || + field->type == MYSQL_TYPE_GEOMETRY)) ? 1 : 0; if (extended_insert && !opt_xml) { if (i == 0) @@ -5586,15 +5580,8 @@ "\n--\n-- Final view structure for view %s\n--\n\n", result_table); - /* Table might not exist if this view was dumped with --tab. */ - fprintf(sql_file, "/*!50001 DROP TABLE IF EXISTS %s*/;\n", opt_quoted_table); - if (opt_drop) - { - fprintf(sql_file, "/*!50001 DROP VIEW IF EXISTS %s*/;\n", - opt_quoted_table); - check_io(sql_file); - } - + verbose_msg("-- Dropping the temporary view structure created\n"); + fprintf(sql_file, "/*!50001 DROP VIEW IF EXISTS %s*/;\n", opt_quoted_table); my_snprintf(query, sizeof(query), "SELECT CHECK_OPTION, DEFINER, SECURITY_TYPE, " @@ -5768,7 +5755,7 @@ int main(int argc, char **argv) { char bin_log_name[FN_REFLEN]; - int exit_code; + int exit_code, md_result_fd; MY_INIT("mysqldump"); compatible_mode_normal_str[0]= 0; @@ -5867,19 +5854,36 @@ dump_all_tablespaces(); dump_all_databases(); } - else if (argc > 1 && !opt_databases) - { - /* Only one database and selected table(s) */ - if (!opt_alltspcs && !opt_notspcs) - dump_tablespaces_for_tables(*argv, (argv + 1), (argc -1)); - dump_selected_tables(*argv, (argv + 1), (argc - 1)); - } else { - /* One or more databases, all tables */ - if (!opt_alltspcs && !opt_notspcs) - dump_tablespaces_for_databases(argv); - dump_databases(argv); + // Check all arguments meet length condition. Currently database and table + // names are limited to NAME_LEN bytes and stack-based buffers assumes + // that escaped name will be not longer than NAME_LEN*2 + 2 bytes long. + int argument; + for (argument= 0; argument < argc; argument++) + { + size_t argument_length= strlen(argv[argument]); + if (argument_length > NAME_LEN) + { + die(EX_CONSCHECK, "[ERROR] Argument '%s' is too long, it cannot be " + "name for any table or database.\n", argv[argument]); + } + } + + if (argc > 1 && !opt_databases) + { + /* Only one database and selected table(s) */ + if (!opt_alltspcs && !opt_notspcs) + dump_tablespaces_for_tables(*argv, (argv + 1), (argc - 1)); + dump_selected_tables(*argv, (argv + 1), (argc - 1)); + } + else + { + /* One or more databases, all tables */ + if (!opt_alltspcs && !opt_notspcs) + dump_tablespaces_for_databases(argv); + dump_databases(argv); + } } /* if --dump-slave , start the slave sql thread */ @@ -5896,8 +5900,19 @@ if (opt_slave_apply && add_slave_statements()) goto err; - /* ensure dumped data flushed */ - if (md_result_file && fflush(md_result_file)) + if (md_result_file) + md_result_fd= my_fileno(md_result_file); + + /* + Ensure dumped data flushed. + First we will flush the file stream data to kernel buffers with fflush(). + Second we will flush the kernel buffers data to physical disk file with + my_sync(), this will make sure the data succeessfully dumped to disk file. + fsync() fails with EINVAL if stdout is not redirected to any file, hence + MY_IGNORE_BADFD is passed to ingnore that error. + */ + if (md_result_file && + (fflush(md_result_file) || my_sync(md_result_fd, MYF(MY_IGNORE_BADFD)))) { if (!first_error) first_error= EX_MYSQLERR; diff -Nru percona-xtrabackup-2.2.3/cmake/build_configurations/compiler_options.cmake percona-xtrabackup-2.3.7/cmake/build_configurations/compiler_options.cmake --- percona-xtrabackup-2.2.3/cmake/build_configurations/compiler_options.cmake 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/cmake/build_configurations/compiler_options.cmake 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -43,47 +43,16 @@ SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${COMMON_CXX_FLAGS}") ENDIF() - # HPUX flags - IF(CMAKE_SYSTEM_NAME MATCHES "HP-UX") - IF(CMAKE_C_COMPILER_ID MATCHES "HP") - IF(CMAKE_SYSTEM_PROCESSOR MATCHES "ia64") - SET(COMMON_C_FLAGS "+DSitanium2 -mt -AC99") - SET(COMMON_CXX_FLAGS "+DSitanium2 -mt -Aa") - SET(CMAKE_C_FLAGS_DEBUG "+O0 -g ${COMMON_C_FLAGS}") - SET(CMAKE_CXX_FLAGS_DEBUG "+O0 -g ${COMMON_CXX_FLAGS}") - # We have seen compiler bugs with optimisation and -g, so disabled for now - SET(CMAKE_C_FLAGS_RELWITHDEBINFO "+O2 ${COMMON_C_FLAGS}") - SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "+O2 ${COMMON_CXX_FLAGS}") - ENDIF() - ENDIF() - SET(WITH_SSL no) - ENDIF() - - # Linux flags - IF(CMAKE_SYSTEM_NAME MATCHES "Linux") - IF(CMAKE_C_COMPILER_ID MATCHES "Intel") - SET(COMMON_C_FLAGS "-static-intel -static-libgcc -g -mp -restrict") - SET(COMMON_CXX_FLAGS "-static-intel -static-libgcc -g -mp -restrict") - IF(CMAKE_SYSTEM_PROCESSOR MATCHES "ia64") - SET(COMMON_C_FLAGS "${COMMON_C_FLAGS} -no-ftz -no-prefetch") - SET(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -no-ftz -no-prefetch") - ENDIF() - SET(CMAKE_C_FLAGS_DEBUG "${COMMON_C_FLAGS}") - SET(CMAKE_CXX_FLAGS_DEBUG "${COMMON_CXX_FLAGS}") - SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 -unroll2 -ip ${COMMON_C_FLAGS}") - SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -unroll2 -ip ${COMMON_CXX_FLAGS}") - SET(WITH_SSL no) - ENDIF() + # Default Clang flags + IF(CMAKE_C_COMPILER_ID MATCHES "Clang") + SET(COMMON_C_FLAGS "-g -fno-omit-frame-pointer -fno-strict-aliasing") + SET(CMAKE_C_FLAGS_DEBUG "${COMMON_C_FLAGS}") + SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 ${COMMON_C_FLAGS}") ENDIF() - - # OSX flags - IF(APPLE) - SET(COMMON_C_FLAGS "-g -fno-strict-aliasing") - SET(COMMON_CXX_FLAGS "-g -fno-strict-aliasing") - SET(CMAKE_C_FLAGS_DEBUG "${COMMON_C_FLAGS}") + IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + SET(COMMON_CXX_FLAGS "-g -fno-omit-frame-pointer -fno-strict-aliasing") SET(CMAKE_CXX_FLAGS_DEBUG "${COMMON_CXX_FLAGS}") - SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-Os ${COMMON_C_FLAGS}") - SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-Os ${COMMON_CXX_FLAGS}") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${COMMON_CXX_FLAGS}") ENDIF() # Solaris flags @@ -93,9 +62,15 @@ SET(WITH_MYSQLD_LDFLAGS "-lmtmalloc" CACHE STRING "") ENDIF() IF(CMAKE_C_COMPILER_ID MATCHES "SunPro") + + SET(SUNPRO_CXX_LIBRARY "stlport4" CACHE STRING + "What C++ library to use. The server needs stlport4. It is possible to build the client libraries with -DWITHOUT_SERVER=1 -DSUNPRO_CXX_LIBRARY=Cstd") + + MESSAGE(STATUS "SUNPRO_CXX_LIBRARY ${SUNPRO_CXX_LIBRARY}") + IF(CMAKE_SYSTEM_PROCESSOR MATCHES "i386") SET(COMMON_C_FLAGS "-g -mt -fsimple=1 -ftrap=%none -nofstore -xbuiltin=%all -xlibmil -xlibmopt -xtarget=generic") - SET(COMMON_CXX_FLAGS "-g0 -mt -fsimple=1 -ftrap=%none -nofstore -xbuiltin=%all -xlibmil -xlibmopt -xtarget=generic -library=stlport4") + SET(COMMON_CXX_FLAGS "-g0 -mt -fsimple=1 -ftrap=%none -nofstore -xbuiltin=%all -xlibmil -xlibmopt -xtarget=generic -library=${SUNPRO_CXX_LIBRARY}") # We have to specify "-xO1" for DEBUG flags here, # see http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6879978 SET(CMAKE_C_FLAGS_DEBUG "-xO1 ${COMMON_C_FLAGS}") @@ -110,7 +85,7 @@ ELSE() # Assume !x86 is SPARC SET(COMMON_C_FLAGS "-g -Xa -xstrconst -mt") - SET(COMMON_CXX_FLAGS "-g0 -mt -library=stlport4") + SET(COMMON_CXX_FLAGS "-g0 -mt -library=${SUNPRO_CXX_LIBRARY}") IF(32BIT) SET(COMMON_C_FLAGS "${COMMON_C_FLAGS} -xarch=sparc") SET(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -xarch=sparc") diff -Nru percona-xtrabackup-2.2.3/cmake/build_configurations/feature_set.cmake percona-xtrabackup-2.3.7/cmake/build_configurations/feature_set.cmake --- percona-xtrabackup-2.2.3/cmake/build_configurations/feature_set.cmake 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/cmake/build_configurations/feature_set.cmake 2017-02-27 07:47:02.000000000 +0000 @@ -77,6 +77,5 @@ ENDFOREACH() ENDIF() -OPTION(ENABLED_LOCAL_INFILE "" ON) SET(WITH_SSL bundled CACHE STRING "") -SET(WITH_ZLIB bundled CACHE STRING "") +SET(WITH_ZLIB system CACHE STRING "") diff -Nru percona-xtrabackup-2.2.3/cmake/build_configurations/mysql_release.cmake percona-xtrabackup-2.3.7/cmake/build_configurations/mysql_release.cmake --- percona-xtrabackup-2.2.3/cmake/build_configurations/mysql_release.cmake 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/cmake/build_configurations/mysql_release.cmake 2017-02-27 07:47:02.000000000 +0000 @@ -19,6 +19,7 @@ INCLUDE(CheckLibraryExists) OPTION(DEBUG_EXTNAME "" ON) +OPTION(ENABLED_LOCAL_INFILE "" ON) IF(NOT COMPILATION_COMMENT) SET(COMPILATION_COMMENT "MySQL Community Server (GPL)") diff -Nru percona-xtrabackup-2.2.3/cmake/build_configurations/xtrabackup_release.cmake percona-xtrabackup-2.3.7/cmake/build_configurations/xtrabackup_release.cmake --- percona-xtrabackup-2.2.3/cmake/build_configurations/xtrabackup_release.cmake 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/cmake/build_configurations/xtrabackup_release.cmake 2017-02-27 07:47:02.000000000 +0000 @@ -18,7 +18,7 @@ INCLUDE(CheckLibraryExists) SET(WITH_INNOBASE_STORAGE_ENGINE ON) -SET(WITH_ZLIB bundled) +SET(WITH_ZLIB system) IF(WIN32) IF(NOT CMAKE_USING_VC_FREE_TOOLS) @@ -52,6 +52,8 @@ # Enable fast mutexes on Linux OPTION(WITH_FAST_MUTEXES "" ON) + # Enable building man pages on Linux by default + OPTION(WITH_MAN_PAGES "" ON) ENDIF() ENDIF() diff -Nru percona-xtrabackup-2.2.3/cmake/compile_flags.cmake percona-xtrabackup-2.3.7/cmake/compile_flags.cmake --- percona-xtrabackup-2.2.3/cmake/compile_flags.cmake 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/cmake/compile_flags.cmake 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,44 @@ +# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +## ADD_COMPILE_FLAGS( COMPILE_FLAGS ) +MACRO(ADD_COMPILE_FLAGS) + SET(FILES "") + SET(FLAGS "") + SET(COMPILE_FLAGS_SEEN) + FOREACH(ARG ${ARGV}) + IF(ARG STREQUAL "COMPILE_FLAGS") + SET(COMPILE_FLAGS_SEEN 1) + ELSEIF(COMPILE_FLAGS_SEEN) + LIST(APPEND FLAGS ${ARG}) + ELSE() + LIST(APPEND FILES ${ARG}) + ENDIF() + ENDFOREACH() + FOREACH(FILE ${FILES}) + FOREACH(FLAG ${FLAGS}) + GET_SOURCE_FILE_PROPERTY(PROP ${FILE} COMPILE_FLAGS) + IF(NOT PROP) + SET(PROP ${FLAG}) + ELSE() + SET(PROP "${PROP} ${FLAG}") + ENDIF() + SET_SOURCE_FILES_PROPERTIES( + ${FILE} PROPERTIES COMPILE_FLAGS "${PROP}" + ) + ENDFOREACH() + ENDFOREACH() +ENDMACRO() diff -Nru percona-xtrabackup-2.2.3/cmake/cpack_source_ignore_files.cmake percona-xtrabackup-2.3.7/cmake/cpack_source_ignore_files.cmake --- percona-xtrabackup-2.2.3/cmake/cpack_source_ignore_files.cmake 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/cmake/cpack_source_ignore_files.cmake 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -14,9 +14,6 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA SET(CPACK_SOURCE_IGNORE_FILES -\\\\.bzr/ -\\\\.bzr-mysql -\\\\.bzrignore CMakeCache\\\\.txt cmake_dist\\\\.cmake CPackSourceConfig\\\\.cmake diff -Nru percona-xtrabackup-2.2.3/cmake/curl.cmake percona-xtrabackup-2.3.7/cmake/curl.cmake --- percona-xtrabackup-2.2.3/cmake/curl.cmake 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/cmake/curl.cmake 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,26 @@ +# Copyright (c) 2014 Percona LLC and/or its affiliates +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +MACRO(FIND_CURL) + +FIND_PACKAGE(CURL) +IF(CURL_FOUND) + MESSAGE(STATUS "CURL libraries found at: ${CURL_LIBRARIES}") + MESSAGE(STATUS "CURL includes found at: ${CURL_INCLUDE_DIRS}") +ELSE() + MESSAGE(SEND_ERROR "Could not find cURL on your system") +ENDIF(CURL_FOUND) + +ENDMACRO() diff -Nru percona-xtrabackup-2.2.3/cmake/dtrace.cmake percona-xtrabackup-2.3.7/cmake/dtrace.cmake --- percona-xtrabackup-2.2.3/cmake/dtrace.cmake 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/cmake/dtrace.cmake 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -40,7 +40,16 @@ SET(ENABLE_DTRACE ON CACHE BOOL "Enable dtrace") ENDIF() SET(HAVE_DTRACE ${ENABLE_DTRACE}) - IF(CMAKE_SYSTEM_NAME MATCHES "SunOS") + EXECUTE_PROCESS( + COMMAND ${DTRACE} -V + OUTPUT_VARIABLE out) + IF(out MATCHES "Sun D" OR out MATCHES "Oracle D") + IF(NOT CMAKE_SYSTEM_NAME MATCHES "FreeBSD" AND + NOT CMAKE_SYSTEM_NAME MATCHES "Darwin") + SET(HAVE_REAL_DTRACE_INSTRUMENTING ON CACHE BOOL "Real DTrace detected") + ENDIF() + ENDIF() + IF(HAVE_REAL_DTRACE_INSTRUMENTING) IF(CMAKE_SIZEOF_VOID_P EQUAL 4) SET(DTRACE_FLAGS -32 CACHE INTERNAL "DTrace architecture flags") ELSE() @@ -93,7 +102,7 @@ ADD_DEPENDENCIES(${target} gen_dtrace_header) # Invoke dtrace to generate object file and link it together with target. - IF(CMAKE_SYSTEM_NAME MATCHES "SunOS") + IF(HAVE_REAL_DTRACE_INSTRUMENTING) SET(objdir ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${target}.dir) SET(outfile ${objdir}/${target}_dtrace.o) GET_TARGET_PROPERTY(target_type ${target} TYPE) @@ -110,12 +119,22 @@ WORKING_DIRECTORY ${objdir} ) ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Linux") + # dtrace on Linux runs gcc and uses flags from environment + SET(CFLAGS_SAVED $ENV{CFLAGS}) + # We want to strip off all warning flags, including -Werror=xxx-xx, + # but keep flags like + # -Wp,-D_FORTIFY_SOURCE=2 + STRING(REGEX REPLACE "-W[A-Za-z0-9][-A-Za-z0-9=]+" "" + C_FLAGS "${CMAKE_C_FLAGS}") + + SET(ENV{CFLAGS} ${C_FLAGS}) SET(outfile "${CMAKE_BINARY_DIR}/probes_mysql.o") # Systemtap object EXECUTE_PROCESS( COMMAND ${DTRACE} -G -s ${CMAKE_SOURCE_DIR}/include/probes_mysql.d.base -o ${outfile} ) + SET(ENV{CFLAGS} ${CFLAGS_SAVED}) ENDIF() # Do not try to extend the library if we have not built the .o file @@ -151,7 +170,7 @@ # run them again through dtrace -G to generate an ELF file that links # to mysqld. MACRO (DTRACE_INSTRUMENT_STATIC_LIBS target libs) -IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND ENABLE_DTRACE) +IF(HAVE_REAL_DTRACE_INSTRUMENTING AND ENABLE_DTRACE) # Filter out non-static libraries in the list, if any SET(static_libs) FOREACH(lib ${libs}) diff -Nru percona-xtrabackup-2.2.3/cmake/FindLibEv.cmake percona-xtrabackup-2.3.7/cmake/FindLibEv.cmake --- percona-xtrabackup-2.2.3/cmake/FindLibEv.cmake 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/cmake/FindLibEv.cmake 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,49 @@ +# Copyright (c) 2014 Percona LLC and/or its affiliates +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +# This module defines +# LIBEV_INCLUDE_DIRS, where to find LibEv headers +# LIBEV_LIBRARIES, LibEv libraries +# LIBEV_FOUND, If false, do not try to use ant + +find_path(LIBEV_INCLUDE_DIRS ev.h PATHS + /usr/include + /usr/local/include + /opt/local/include + /usr/include/libev + ) + +set(LIBEV_LIB_PATHS /usr/lib /usr/local/lib /opt/local/lib) +find_library(LIBEV_LIB NAMES ev PATHS ${LIBEV_LIB_PATHS}) + +if (LIBEV_LIB AND LIBEV_INCLUDE_DIRS) + set(LIBEV_FOUND TRUE) + set(LIBEV_LIBRARIES ${LIBEV_LIB}) +else () + set(LIBEV_FOUND FALSE) +endif () + +if (LIBEV_FOUND) + if (NOT LIBEV_FIND_QUIETLY) + message(STATUS "Found libev: ${LIBEV_LIBRARIES}") + endif () +else () + message(STATUS "libev NOT found.") +endif () + +mark_as_advanced( + LIBEV_LIB + LIBEV_INCLUDE_DIRS + ) diff -Nru percona-xtrabackup-2.2.3/cmake/info_macros.cmake.in percona-xtrabackup-2.3.7/cmake/info_macros.cmake.in --- percona-xtrabackup-2.2.3/cmake/info_macros.cmake.in 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/cmake/info_macros.cmake.in 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -23,11 +23,14 @@ # If further variables are used in this file, add them to this list. SET(VERSION "@VERSION@") +SET(MAJOR_VERSION "@MAJOR_VERSION@") +SET(MINOR_VERSION "@MINOR_VERSION@") +SET(PATCH_VERSION "@PATCH_VERSION@") SET(CMAKE_SOURCE_DIR "@CMAKE_SOURCE_DIR@") SET(CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@") SET(CMAKE_GENERATOR "@CMAKE_GENERATOR@") SET(CMAKE_SIZEOF_VOID_P "@CMAKE_SIZEOF_VOID_P@") -SET(BZR_EXECUTABLE "@BZR_EXECUTABLE@") +SET(GIT_EXECUTABLE "@GIT_EXECUTABLE@") SET(CMAKE_CROSSCOMPILING "@CMAKE_CROSSCOMPILING@") SET(CMAKE_HOST_SYSTEM "@CMAKE_HOST_SYSTEM@") SET(CMAKE_HOST_SYSTEM_PROCESSOR "@CMAKE_HOST_SYSTEM_PROCESSOR@") @@ -36,34 +39,51 @@ # Create an "INFO_SRC" file with information about the source (only). -# We use "bzr version-info", if possible, and the "VERSION" contents. +# We use "git log", if possible, and the "VERSION" contents. # -# Outside development (BZR tree), the "INFO_SRC" file will not be modified +# Outside development (git tree), the "INFO_SRC" file will not be modified # provided it exists (from "make dist" or a source tarball creation). MACRO(CREATE_INFO_SRC target_dir) SET(INFO_SRC "${target_dir}/INFO_SRC") - IF(BZR_EXECUTABLE AND EXISTS ${CMAKE_SOURCE_DIR}/.bzr) - # Sources are in a BZR repository: Always update. - # Add a timeout in case BZR hangs forever ... + SET(PERLSCRIPT + "use warnings; use POSIX qw(strftime); " + "print strftime \"%F %T %z\", localtime;") + EXECUTE_PROCESS( + COMMAND perl -e "${PERLSCRIPT}" + RESULT_VARIABLE result + OUTPUT_VARIABLE bdate + ERROR_VARIABLE error + ) + IF(error) + MESSAGE(STATUS "Could not determine build-date: <${error}>") + ENDIF() + + IF(GIT_EXECUTABLE AND EXISTS ${CMAKE_SOURCE_DIR}/.git) + # Sources are in a GIT repository: Always update. EXECUTE_PROCESS( - COMMAND ${BZR_EXECUTABLE} version-info ${CMAKE_SOURCE_DIR} + COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE bname + ) + + EXECUTE_PROCESS( + COMMAND ${GIT_EXECUTABLE} log -1 + --pretty="commit: %H%ndate: %ci%nbuild-date: ${bdate} %nshort: %h%nbranch: ${bname}" + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE VERSION_INFO - RESULT_VARIABLE RESULT - ERROR_VARIABLE ERROR - TIMEOUT 10 ) - IF(NOT RESULT EQUAL 0) - MESSAGE(STATUS "Error from ${BZR_EXECUTABLE}: ${ERROR}") - SET(BZR_EXECUTABLE) - ENDIF() + + ## Output from git is quoted with "", remove them. + STRING(REPLACE "\"" "" VERSION_INFO "${VERSION_INFO}") FILE(WRITE ${INFO_SRC} "${VERSION_INFO}\n") # to debug, add: FILE(APPEND ${INFO_SRC} "\nResult ${RESULT}\n") # For better readability ... - FILE(APPEND ${INFO_SRC} "\nMySQL source ${VERSION}\n") + FILE(APPEND ${INFO_SRC} + "MySQL source ${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}\n") ELSEIF(EXISTS ${INFO_SRC}) - # Outside a BZR tree, there is no need to change an existing "INFO_SRC", + # Outside a git tree, there is no need to change an existing "INFO_SRC", # it cannot be improved. ELSEIF(EXISTS ${CMAKE_SOURCE_DIR}/Docs/INFO_SRC) # If we are building from a source distribution, it also contains "INFO_SRC". diff -Nru percona-xtrabackup-2.2.3/cmake/info_src.cmake percona-xtrabackup-2.3.7/cmake/info_src.cmake --- percona-xtrabackup-2.2.3/cmake/info_src.cmake 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/cmake/info_src.cmake 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -16,11 +16,11 @@ # The sole purpose of this cmake control file is to create the "INFO_SRC" file. -# As long as and "bzr pull" (or "bzr commit") is followed by a "cmake", +# As long as and "git pull" (or "git commit") is followed by a "cmake", # the call in top level "CMakeLists.txt" is sufficient. # This file is to provide a separate target for the "make" phase, -# to ensure the BZR revision-id is correct even after a sequence -# cmake ; make ; bzr pull ; make +# to ensure the git commit hash is correct even after a sequence +# cmake ; make ; git pull ; make # Get the macros which handle the "INFO_*" files. diff -Nru percona-xtrabackup-2.2.3/cmake/install_macros.cmake percona-xtrabackup-2.3.7/cmake/install_macros.cmake --- percona-xtrabackup-2.2.3/cmake/install_macros.cmake 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/cmake/install_macros.cmake 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -21,26 +21,35 @@ GET_TARGET_PROPERTY(location ${target} LOCATION) GET_TARGET_PROPERTY(type ${target} TYPE) IF(NOT INSTALL_LOCATION) - IF(type MATCHES "STATIC_LIBRARY" OR type MATCHES "MODULE_LIBRARY" OR type MATCHES "SHARED_LIBRARY") + IF(type MATCHES "STATIC_LIBRARY" + OR type MATCHES "MODULE_LIBRARY" + OR type MATCHES "SHARED_LIBRARY") SET(INSTALL_LOCATION "lib") ELSEIF(type MATCHES "EXECUTABLE") SET(INSTALL_LOCATION "bin") ELSE() - MESSAGE(FATAL_ERROR "cannot determine type of ${target}. Don't now where to install") + MESSAGE(FATAL_ERROR + "cannot determine type of ${target}. Don't now where to install") ENDIF() ENDIF() STRING(REPLACE ".exe" ".pdb" pdb_location ${location}) STRING(REPLACE ".dll" ".pdb" pdb_location ${pdb_location}) STRING(REPLACE ".lib" ".pdb" pdb_location ${pdb_location}) IF(CMAKE_GENERATOR MATCHES "Visual Studio") - STRING(REPLACE "${CMAKE_CFG_INTDIR}" "\${CMAKE_INSTALL_CONFIG_NAME}" pdb_location ${pdb_location}) + STRING(REPLACE + "${CMAKE_CFG_INTDIR}" "\${CMAKE_INSTALL_CONFIG_NAME}" + pdb_location ${pdb_location}) ENDIF() IF(target STREQUAL "mysqld") SET(comp Server) ELSE() SET(comp Debuginfo) ENDIF() - INSTALL(FILES ${pdb_location} DESTINATION ${INSTALL_LOCATION} COMPONENT ${comp}) + # No .pdb file for static libraries. + IF(NOT type MATCHES "STATIC_LIBRARY") + INSTALL(FILES ${pdb_location} + DESTINATION ${INSTALL_LOCATION} COMPONENT ${comp}) + ENDIF() ENDFOREACH() ENDIF() ENDMACRO() diff -Nru percona-xtrabackup-2.2.3/cmake/libev.cmake percona-xtrabackup-2.3.7/cmake/libev.cmake --- percona-xtrabackup-2.2.3/cmake/libev.cmake 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/cmake/libev.cmake 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,26 @@ +# Copyright (c) 2014 Percona LLC and/or its affiliates +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +MACRO(FIND_EV) + +FIND_PACKAGE(LibEv) +IF(LIBEV_FOUND) + MESSAGE(STATUS "libev libraries found at: ${LIBEV_LIBRARIES}") + MESSAGE(STATUS "libev includes found at: ${LIBEV_INCLUDE_DIRS}") +ELSE() + MESSAGE(SEND_ERROR "Could not find libev on your system") +ENDIF(LIBEV_FOUND) + +ENDMACRO() diff -Nru percona-xtrabackup-2.2.3/cmake/maintainer.cmake percona-xtrabackup-2.3.7/cmake/maintainer.cmake --- percona-xtrabackup-2.2.3/cmake/maintainer.cmake 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/cmake/maintainer.cmake 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,44 +13,39 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -INCLUDE(CheckCCompilerFlag) - -# Setup GCC (GNU C compiler) warning options. -MACRO(SET_MYSQL_MAINTAINER_GNU_C_OPTIONS) - SET(MY_MAINTAINER_WARNINGS - "-Wall -Wextra -Wunused -Wwrite-strings -Wno-strict-aliasing -Werror") - - CHECK_C_COMPILER_FLAG("-Wdeclaration-after-statement" - HAVE_DECLARATION_AFTER_STATEMENT) - IF(HAVE_DECLARATION_AFTER_STATEMENT) - SET(MY_MAINTAINER_DECLARATION_AFTER_STATEMENT - "-Wdeclaration-after-statement") - ENDIF() - SET(MY_MAINTAINER_C_WARNINGS - "${MY_MAINTAINER_WARNINGS} ${MY_MAINTAINER_DECLARATION_AFTER_STATEMENT}" - CACHE STRING "C warning options used in maintainer builds.") - # Do not make warnings in checks into errors. - SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -Wno-error") -ENDMACRO() - - -# Setup G++ (GNU C++ compiler) warning options. -MACRO(SET_MYSQL_MAINTAINER_GNU_CXX_OPTIONS) - SET(MY_MAINTAINER_CXX_WARNINGS - "${MY_MAINTAINER_WARNINGS} -Wno-unused-parameter -Woverloaded-virtual" - CACHE STRING "C++ warning options used in maintainer builds.") -ENDMACRO() - -# Setup ICC (Intel C Compiler) warning options. -MACRO(SET_MYSQL_MAINTAINER_INTEL_C_OPTIONS) - SET(MY_MAINTAINER_WARNINGS "-Wcheck") - SET(MY_MAINTAINER_C_WARNINGS "${MY_MAINTAINER_WARNINGS}" - CACHE STRING "C warning options used in maintainer builds.") -ENDMACRO() - -# Setup ICPC (Intel C++ Compiler) warning options. -MACRO(SET_MYSQL_MAINTAINER_INTEL_CXX_OPTIONS) - SET(MY_MAINTAINER_CXX_WARNINGS "${MY_MAINTAINER_WARNINGS}" - CACHE STRING "C++ warning options used in maintainer builds.") -ENDMACRO() - +# Common warning flags for GCC, G++, Clang and Clang++ +SET(MY_WARNING_FLAGS "-Wall -Wextra -Wformat-security") +MY_CHECK_C_COMPILER_FLAG("-Wvla" HAVE_WVLA) # Requires GCC 4.3+ or Clang +IF(HAVE_WVLA) + SET(MY_WARNING_FLAGS "${MY_WARNING_FLAGS} -Wvla") +ENDIF() + +# Common warning flags for GCC and Clang +SET(MY_C_WARNING_FLAGS + "${MY_WARNING_FLAGS} -Wwrite-strings -Wdeclaration-after-statement") + +# Common warning flags for G++ and Clang++ +SET(MY_CXX_WARNING_FLAGS + "${MY_WARNING_FLAGS} -Woverloaded-virtual -Wno-unused-parameter") + +# Extra warning flags for Clang++ +IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + SET(MY_CXX_WARNING_FLAGS + "${MY_CXX_WARNING_FLAGS} -Wno-null-conversion -Wno-unused-private-field") +ENDIF() + +# Turn on Werror (warning => error) when using maintainer mode. +IF(MYSQL_MAINTAINER_MODE) + SET(MY_C_WARNING_FLAGS "${MY_C_WARNING_FLAGS} -Werror") + SET(MY_CXX_WARNING_FLAGS "${MY_CXX_WARNING_FLAGS} -Werror") + SET(COMPILE_FLAG_WERROR 1) +ENDIF() + +# Set warning flags for GCC/Clang +IF(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MY_C_WARNING_FLAGS}") +ENDIF() +# Set warning flags for G++/Clang++ +IF(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MY_CXX_WARNING_FLAGS}") +ENDIF() diff -Nru percona-xtrabackup-2.2.3/cmake/make_dist.cmake.in percona-xtrabackup-2.3.7/cmake/make_dist.cmake.in --- percona-xtrabackup-2.2.3/cmake/make_dist.cmake.in 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/cmake/make_dist.cmake.in 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -14,7 +14,7 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # Make source distribution -# If bzr is present, run bzr export. +# If git is present, run git archive. # Otherwise, just run cpack with source configuration. SET(CMAKE_SOURCE_DIR "@CMAKE_SOURCE_DIR@") @@ -22,13 +22,12 @@ SET(CPACK_SOURCE_PACKAGE_FILE_NAME "@CPACK_SOURCE_PACKAGE_FILE_NAME@") SET(CMAKE_CPACK_COMMAND "@CMAKE_CPACK_COMMAND@") SET(CMAKE_COMMAND "@CMAKE_COMMAND@") -SET(BZR_EXECUTABLE "@BZR_EXECUTABLE@") +SET(GIT_EXECUTABLE "@GIT_EXECUTABLE@") SET(GTAR_EXECUTABLE "@GTAR_EXECUTABLE@") SET(TAR_EXECUTABLE "@TAR_EXECUTABLE@") SET(CMAKE_GENERATOR "@CMAKE_GENERATOR@") SET(CMAKE_MAKE_PROGRAM "@CMAKE_MAKE_PROGRAM@") SET(CMAKE_SYSTEM_NAME "@CMAKE_SYSTEM_NAME@") -SET(PLUGIN_REPOS "@PLUGIN_REPOS@") SET(VERSION "@VERSION@") @@ -40,38 +39,54 @@ FILE(REMOVE_RECURSE ${PACKAGE_DIR}) FILE(REMOVE ${PACKAGE_DIR}.tar.gz ) -IF(BZR_EXECUTABLE) - MESSAGE(STATUS "Running bzr export") +# Only allow git if source dir itself is a git repository +IF(GIT_EXECUTABLE) EXECUTE_PROCESS( - COMMAND "${BZR_EXECUTABLE}" export - ${PACKAGE_DIR} + COMMAND "${GIT_EXECUTABLE}" rev-parse --show-toplevel + OUTPUT_VARIABLE GIT_ROOT + ERROR_VARIABLE GIT_ROOT_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} RESULT_VARIABLE RESULT ) - IF(NOT RESULT EQUAL 0) - SET(BZR_EXECUTABLE) + IF(NOT RESULT EQUAL 0 OR NOT GIT_ROOT STREQUAL ${CMAKE_SOURCE_DIR}) + MESSAGE(STATUS "This is not a git repository") + SET(GIT_EXECUTABLE) ENDIF() ENDIF() -IF(BZR_EXECUTABLE) - FOREACH(REPO ${PLUGIN_REPOS}) - GET_FILENAME_COMPONENT(PLUGIN_NAME ${REPO} NAME) - SET(DEST ${PACKAGE_DIR}/plugin/${PLUGIN_NAME}) - MESSAGE(STATUS "Running bzr export for plugin/${PLUGIN_NAME}") +IF(GIT_EXECUTABLE) + MESSAGE(STATUS "Running git archive -o ${PACKAGE_DIR}.tar") + EXECUTE_PROCESS( + COMMAND "${GIT_EXECUTABLE}" archive --format=tar + --prefix=${CPACK_SOURCE_PACKAGE_FILE_NAME}/ -o ${PACKAGE_DIR}.tar HEAD + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + RESULT_VARIABLE RESULT + ) + IF(NOT RESULT EQUAL 0) + SET(GIT_EXECUTABLE) + ELSE() + # Unpack tarball EXECUTE_PROCESS( - COMMAND "${BZR_EXECUTABLE}" export ${DEST} - WORKING_DIRECTORY ${REPO} - RESULT_VARIABLE RESULT + COMMAND ${CMAKE_COMMAND} -E tar xf ${PACKAGE_DIR}.tar + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + RESULT_VARIABLE TAR_RESULT ) - IF(NOT RESULT EQUAL 0) - MESSAGE(STATUS "bzr export failed") + IF(NOT TAR_RESULT EQUAL 0) + SET(GIT_EXECUTABLE) + ELSE() + # Remove tarball after unpacking + EXECUTE_PROCESS( + COMMAND ${CMAKE_COMMAND} -E remove ${PACKAGE_DIR}.tar + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + ) ENDIF() - ENDFOREACH() + ENDIF() ENDIF() -IF(NOT BZR_EXECUTABLE) - MESSAGE(STATUS "bzr not found or source dir is not a repo, use CPack") +IF(NOT GIT_EXECUTABLE) + MESSAGE(STATUS "git not found or source dir is not a repo, use CPack") IF(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR) # In-source build is the worst option, we have to cleanup source tree. diff -Nru percona-xtrabackup-2.2.3/cmake/mysql_version.cmake percona-xtrabackup-2.3.7/cmake/mysql_version.cmake --- percona-xtrabackup-2.2.3/cmake/mysql_version.cmake 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/cmake/mysql_version.cmake 2017-02-27 07:47:02.000000000 +0000 @@ -82,19 +82,31 @@ SET(CPACK_PACKAGE_VERSION_MINOR ${XB_MINOR_VERSION}) SET(CPACK_PACKAGE_VERSION_PATCH ${XB_PATCH_VERSION}) - IF (EXISTS ${CMAKE_SOURCE_DIR}/.bzr) + IF (EXISTS ${CMAKE_SOURCE_DIR}/.git) EXECUTE_PROCESS( - COMMAND ${BZR_EXECUTABLE} version-info --custom --template "{revno}" ${CMAKE_SOURCE_DIR} + COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE XB_REVISION RESULT_VARIABLE RESULT ERROR_VARIABLE ERROR TIMEOUT 10 + OUTPUT_STRIP_TRAILING_WHITESPACE ) IF(NOT RESULT EQUAL 0) - MESSAGE(STATUS "Error from ${BZR_EXECUTABLE}: ${ERROR}") - SET(BZR_EXECUTABLE) + MESSAGE(STATUS "Error from ${GIT_EXECUTABLE}: ${ERROR}") + SET(GIT_EXECUTABLE) ENDIF() - + ELSEIF (EXISTS ${CMAKE_SOURCE_DIR}/Docs/INFO_SRC) + EXECUTE_PROCESS( + COMMAND grep "^short: " Docs/INFO_SRC + COMMAND sed -e "s/short: //" + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE XB_REVISION + RESULT_VARIABLE RESULT + ERROR_VARIABLE ERROR + TIMEOUT 10 + OUTPUT_STRIP_TRAILING_WHITESPACE + ) ENDIF() ENDMACRO() diff -Nru percona-xtrabackup-2.2.3/cmake/os/Darwin.cmake percona-xtrabackup-2.3.7/cmake/os/Darwin.cmake --- percona-xtrabackup-2.2.3/cmake/os/Darwin.cmake 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/cmake/os/Darwin.cmake 2017-02-27 07:47:02.000000000 +0000 @@ -15,24 +15,6 @@ # This file includes OSX specific options and quirks, related to system checks -# Workaround for CMake bug#9051 -# (CMake does not pass CMAKE_OSX_SYSROOT and CMAKE_OSX_DEPLOYMENT_TARGET when -# running TRY_COMPILE) - -IF(CMAKE_OSX_SYSROOT) - SET(ENV{CMAKE_OSX_SYSROOT} ${CMAKE_OSX_SYSROOT}) -ENDIF() -IF(CMAKE_OSX_SYSROOT) - SET(ENV{MACOSX_DEPLOYMENT_TARGET} ${OSX_DEPLOYMENT_TARGET}) -ENDIF() - -IF(CMAKE_OSX_DEPLOYMENT_TARGET) - # Workaround linker problems on OSX 10.4 - IF(CMAKE_OSX_DEPLOYMENT_TARGET VERSION_LESS "10.5") - ADD_DEFINITIONS(-fno-common) - ENDIF() -ENDIF() - # This is used for the version_compile_machine variable. IF(CMAKE_SIZEOF_VOID_P MATCHES 8) SET(MYSQL_MACHINE_TYPE "x86_64") diff -Nru percona-xtrabackup-2.2.3/cmake/os/Linux.cmake percona-xtrabackup-2.3.7/cmake/os/Linux.cmake --- percona-xtrabackup-2.2.3/cmake/os/Linux.cmake 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/cmake/os/Linux.cmake 2017-02-27 07:47:02.000000000 +0000 @@ -20,7 +20,6 @@ # Something that needs to be set on legacy reasons SET(TARGET_OS_LINUX 1) -SET(HAVE_NPTL 1) SET(_GNU_SOURCE 1) # Fix CMake (< 2.8) flags. -rdynamic exports too many symbols. diff -Nru percona-xtrabackup-2.2.3/cmake/os/WindowsCache.cmake percona-xtrabackup-2.3.7/cmake/os/WindowsCache.cmake --- percona-xtrabackup-2.2.3/cmake/os/WindowsCache.cmake 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/cmake/os/WindowsCache.cmake 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -20,6 +20,7 @@ # different results. IF(MSVC) +SET(HAVE_LLVM_LIBCPP CACHE INTERNAL "") SET(HAVE_ACCESS 1 CACHE INTERNAL "") SET(HAVE_AIO_H CACHE INTERNAL "") SET(HAVE_AIO_READ CACHE INTERNAL "") @@ -44,7 +45,6 @@ SET(HAVE_CXXABI_H CACHE INTERNAL "") SET(HAVE_DECL_MADVISE CACHE INTERNAL "") SET(HAVE_DIRECTIO CACHE INTERNAL "") -SET(HAVE_DIRENT_H CACHE INTERNAL "") SET(HAVE_DLERROR CACHE INTERNAL "") SET(HAVE_DLFCN_H CACHE INTERNAL "") SET(HAVE_DLOPEN CACHE INTERNAL "") @@ -87,7 +87,7 @@ SET(HAVE_GETRUSAGE CACHE INTERNAL "") SET(HAVE_GETTIMEOFDAY CACHE INTERNAL "") SET(HAVE_GETWD CACHE INTERNAL "") -SET(HAVE_GMTIME_R CACHE INTERNAL "") +SET(HAVE_GMTIME_R 1 CACHE INTERNAL "") SET(HAVE_GRP_H CACHE INTERNAL "") SET(HAVE_IA64INTRIN_H CACHE INTERNAL "") SET(HAVE_IEEEFP_H CACHE INTERNAL "") @@ -110,7 +110,7 @@ SET(HAVE_LDIV 1 CACHE INTERNAL "") SET(HAVE_LIMITS_H 1 CACHE INTERNAL "") SET(HAVE_LOCALE_H 1 CACHE INTERNAL "") -SET(HAVE_LOCALTIME_R CACHE INTERNAL "") +SET(HAVE_LOCALTIME_R 1 CACHE INTERNAL "") SET(HAVE_LOG2 CACHE INTERNAL "") SET(HAVE_LONGJMP 1 CACHE INTERNAL "") SET(HAVE_LRAND48 CACHE INTERNAL "") @@ -162,7 +162,6 @@ SET(HAVE_PUTENV 1 CACHE INTERNAL "") SET(HAVE_PWD_H CACHE INTERNAL "") SET(HAVE_RDTSCLL CACHE INTERNAL "") -SET(HAVE_READDIR_R CACHE INTERNAL "") SET(HAVE_READLINK CACHE INTERNAL "") SET(HAVE_READ_REAL_TIME CACHE INTERNAL "") SET(HAVE_REALPATH CACHE INTERNAL "") diff -Nru percona-xtrabackup-2.2.3/cmake/os/Windows.cmake percona-xtrabackup-2.3.7/cmake/os/Windows.cmake --- percona-xtrabackup-2.2.3/cmake/os/Windows.cmake 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/cmake/os/Windows.cmake 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -63,28 +63,37 @@ ENDIF() IF(MSVC) - # Enable debug info also in Release build, and create PDB to be able to analyze - # crashes - FOREACH(lang C CXX) - SET(CMAKE_${lang}_FLAGS_RELEASE "${CMAKE_${lang}_FLAGS_RELEASE} /Zi") - ENDFOREACH() + # Enable debug info also in Release build, + # and create PDB to be able to analyze crashes. FOREACH(type EXE SHARED MODULE) - SET(CMAKE_{type}_LINKER_FLAGS_RELEASE "${CMAKE_${type}_LINKER_FLAGS_RELEASE} /debug") + SET(CMAKE_{type}_LINKER_FLAGS_RELEASE + "${CMAKE_${type}_LINKER_FLAGS_RELEASE} /debug") ENDFOREACH() - # Force static runtime libraries - # Choose C++ exception handling: - # If /EH is not specified, the compiler will catch structured and - # C++ exceptions, but will not destroy C++ objects that will go out of - # scope as a result of the exception. - # /EHsc catches C++ exceptions only and tells the compiler to assume that - # extern C functions never throw a C++ exception. + # For release types Debug Release RelWithDebInfo (but not MinSizeRel): + # - Force static runtime libraries + # - Choose C++ exception handling: + # If /EH is not specified, the compiler will catch structured and + # C++ exceptions, but will not destroy C++ objects that will go out of + # scope as a result of the exception. + # /EHsc catches C++ exceptions only and tells the compiler to assume that + # extern C functions never throw a C++ exception. + # - Choose debugging information: + # /Z7 + # Produces an .obj file containing full symbolic debugging + # information for use with the debugger. The symbolic debugging + # information includes the names and types of variables, as well as + # functions and line numbers. No .pdb file is produced by the compiler. + FOREACH(lang C CXX) + SET(CMAKE_${lang}_FLAGS_RELEASE "${CMAKE_${lang}_FLAGS_RELEASE} /Z7") + ENDFOREACH() FOREACH(flag - CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO - CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_DEBUG_INIT + CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO + CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_DEBUG_INIT CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELWITHDEBINFO - CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_DEBUG_INIT) + CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_DEBUG_INIT) STRING(REPLACE "/MD" "/MT" "${flag}" "${${flag}}") + STRING(REPLACE "/Zi" "/Z7" "${flag}" "${${flag}}") SET("${flag}" "${${flag}} /EHsc") ENDFOREACH() diff -Nru percona-xtrabackup-2.2.3/cmake/plugin.cmake percona-xtrabackup-2.3.7/cmake/plugin.cmake --- percona-xtrabackup-2.2.3/cmake/plugin.cmake 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/cmake/plugin.cmake 2017-02-27 07:47:02.000000000 +0000 @@ -231,11 +231,4 @@ ADD_SUBDIRECTORY(${dir}) ENDIF() ENDFOREACH() - FOREACH(dir ${dirs_plugin}) - IF (EXISTS ${dir}/.bzr) - MESSAGE(STATUS "Found repo ${dir}/.bzr") - LIST(APPEND PLUGIN_BZR_REPOS "${dir}") - ENDIF() - ENDFOREACH() - SET(PLUGIN_REPOS "${PLUGIN_BZR_REPOS}" CACHE INTERNAL "") ENDMACRO() diff -Nru percona-xtrabackup-2.2.3/cmake/ssl.cmake percona-xtrabackup-2.3.7/cmake/ssl.cmake --- percona-xtrabackup-2.2.3/cmake/ssl.cmake 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/cmake/ssl.cmake 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -52,6 +52,9 @@ ${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/include ) SET(SSL_LIBRARIES yassl taocrypt) + IF(CMAKE_SYSTEM_NAME MATCHES "SunOS") + SET(SSL_LIBRARIES ${SSL_LIBRARIES} ${LIBSOCKET}) + ENDIF() SET(SSL_INCLUDE_DIRS ${INC_DIRS}) SET(SSL_INTERNAL_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/mySTL) SET(SSL_DEFINES "-DHAVE_YASSL -DYASSL_PREFIX -DHAVE_OPENSSL -DMULTI_THREADED") @@ -163,7 +166,7 @@ # Encoded as MNNFFPPS: major minor fix patch status FILE(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" OPENSSL_VERSION_NUMBER - REGEX "^#define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x[0-9].*" + REGEX "^#[ ]*define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x[0-9].*" ) STRING(REGEX REPLACE "^.*OPENSSL_VERSION_NUMBER[\t ]+0x([0-9]).*$" "\\1" @@ -172,8 +175,7 @@ IF(OPENSSL_INCLUDE_DIR AND OPENSSL_LIBRARY AND - CRYPTO_LIBRARY AND - OPENSSL_MAJOR_VERSION STREQUAL "1" + CRYPTO_LIBRARY ) SET(OPENSSL_FOUND TRUE) ELSE() @@ -227,14 +229,29 @@ SET(SSL_INTERNAL_INCLUDE_DIRS "") SET(SSL_DEFINES "-DHAVE_OPENSSL") ELSE() - IF(WITH_SSL STREQUAL "system") - MESSAGE(SEND_ERROR "Cannot find appropriate system libraries for SSL. Use WITH_SSL=bundled to enable SSL support") - ENDIF() - MYSQL_USE_BUNDLED_SSL() + + UNSET(WITH_SSL_PATH) + UNSET(WITH_SSL_PATH CACHE) + UNSET(OPENSSL_ROOT_DIR) + UNSET(OPENSSL_ROOT_DIR CACHE) + UNSET(OPENSSL_INCLUDE_DIR) + UNSET(OPENSSL_INCLUDE_DIR CACHE) + UNSET(OPENSSL_APPLINK_C) + UNSET(OPENSSL_APPLINK_C CACHE) + UNSET(OPENSSL_LIBRARY) + UNSET(OPENSSL_LIBRARY CACHE) + UNSET(CRYPTO_LIBRARY) + UNSET(CRYPTO_LIBRARY CACHE) + + MESSAGE(SEND_ERROR + "Cannot find appropriate system libraries for SSL. " + "Make sure you've specified a supported SSL version. " + "Consult the documentation for WITH_SSL alternatives") ENDIF() ELSE() MESSAGE(SEND_ERROR - "Wrong option for WITH_SSL. Valid values are: " ${WITH_SSL_DOC}) + "Wrong option or path for WITH_SSL. " + "Valid options are : ${WITH_SSL_DOC}") ENDIF() ENDMACRO() diff -Nru percona-xtrabackup-2.2.3/CMakeLists.txt percona-xtrabackup-2.3.7/CMakeLists.txt --- percona-xtrabackup-2.2.3/CMakeLists.txt 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/CMakeLists.txt 2017-02-27 07:47:02.000000000 +0000 @@ -19,8 +19,27 @@ CMAKE_POLICY(VERSION 2.8) endif() +# We use PROPERTIES LINK_INTERFACE_LIBRARIES. See cmake --help-policy CMP0022 +IF(CMAKE_VERSION VERSION_EQUAL "2.8.12" OR + CMAKE_VERSION VERSION_GREATER "2.8.12") + CMAKE_POLICY(SET CMP0022 OLD) +ENDIF() + +# We use the LOCATION target property (CMP0026) +# and get_target_property() for non-existent targets (CMP0045) +# and INSTALL_NAME_DIR (CMP0042) +IF(CMAKE_VERSION VERSION_EQUAL "3.0.0" OR + CMAKE_VERSION VERSION_GREATER "3.0.0") + CMAKE_POLICY(SET CMP0026 OLD) + CMAKE_POLICY(SET CMP0045 OLD) + CMAKE_POLICY(SET CMP0042 OLD) +ENDIF() + MESSAGE(STATUS "Running cmake version ${CMAKE_VERSION}") +# Will set GIT_EXECUTABLE and GIT_FOUND +FIND_PACKAGE(Git) + SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake) # First, decide about build type (debug or release) @@ -60,15 +79,8 @@ "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel") -# Possibly temporary fix: Clang on 32 bit causes non-debug server to crash -IF(CMAKE_OSX_ARCHITECTURES MATCHES "i386") - SET(CMAKE_CXX_COMPILER g++) -ENDIF() - IF(WITH_DEBUG) SET(CMAKE_BUILD_TYPE "Debug" CACHE STRING ${BUILDTYPE_DOCSTRING} FORCE) - SET(MYSQL_MAINTAINER_MODE ON CACHE BOOL - "MySQL maintainer-specific development environment") IF(UNIX AND NOT APPLE) # Compiling with PIC speeds up embedded build, on PIC sensitive systems # Predefine it to ON, in case user chooses to build embedded. @@ -98,6 +110,15 @@ ENDIF() PROJECT(${MYSQL_PROJECT_NAME}) +# Maintainer mode is default on only for Linux debug builds using GCC/G++ +IF(CMAKE_BUILD_TYPE MATCHES "Debug" OR WITH_DEBUG) + IF(CMAKE_SYSTEM_NAME MATCHES "Linux" AND + CMAKE_COMPILER_IS_GNUCC AND CMAKE_COMPILER_IS_GNUCXX) + SET(MYSQL_MAINTAINER_MODE ON CACHE BOOL + "MySQL maintainer-specific development environment") + ENDIF() +ENDIF() + OPTION(WITH_DEFAULT_COMPILER_OPTIONS "Use flags from cmake/build_configurations/compiler_options.cmake" ON) @@ -154,31 +175,6 @@ INCLUDE(${CMAKE_SOURCE_DIR}/cmake/build_configurations/feature_set.cmake) ENDIF() -# -# Control aspects of the development environment which are -# specific to MySQL maintainers and developers. -# -INCLUDE(maintainer) - -OPTION(MYSQL_MAINTAINER_MODE - "MySQL maintainer-specific development environment" OFF) - -# Whether the maintainer mode compiler options should be enabled. -IF(MYSQL_MAINTAINER_MODE) - IF(CMAKE_C_COMPILER_ID MATCHES "GNU") - SET_MYSQL_MAINTAINER_GNU_C_OPTIONS() - ENDIF() - IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU") - SET_MYSQL_MAINTAINER_GNU_CXX_OPTIONS() - ENDIF() - IF(CMAKE_C_COMPILER_ID MATCHES "Intel") - SET_MYSQL_MAINTAINER_INTEL_C_OPTIONS() - ENDIF() - IF(CMAKE_CXX_COMPILER_ID MATCHES "Intel") - SET_MYSQL_MAINTAINER_INTEL_CXX_OPTIONS() - ENDIF() -ENDIF() - # Add macros INCLUDE(character_sets) INCLUDE(cpu_info) @@ -207,13 +203,17 @@ IF(UNIX) OPTION(WITH_VALGRIND "Valgrind instrumentation" OFF) ENDIF() -OPTION (WITH_UNIT_TESTS "Compile MySQL with unit tests" OFF) +IF(NOT WITHOUT_SERVER) + OPTION (WITH_UNIT_TESTS "Compile MySQL with unit tests" OFF) +ENDIF() MARK_AS_ADVANCED(CYBOZU BACKUP_TEST WITHOUT_SERVER DISABLE_SHARED) OPTION(WITH_XTRABACKUP "Build XtraBackup" ON) # Disallow WITH_XTRABACKUP=OFF builds IF(NOT WITH_XTRABACKUP) MESSAGE(FATAL_ERROR "This branch does not support -DWITH_XTRABACKUP=OFF configuration.") +ELSE() + ADD_DEFINITIONS(-DXTRABACKUP) ENDIF() # Disallow WITHOUT_SERVER=ON builds IF(WITHOUT_SERVER) @@ -433,30 +433,22 @@ # Why doesn't these flags affect the entire build? # Because things may already have been included with ADD_SUBDIRECTORY # -IF(MYSQL_MAINTAINER_MODE) - # Set compiler flags required under maintainer mode. - MESSAGE(STATUS "C warning options: ${MY_MAINTAINER_C_WARNINGS}") - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MY_MAINTAINER_C_WARNINGS}") - MESSAGE(STATUS "C++ warning options: ${MY_MAINTAINER_CXX_WARNINGS}") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MY_MAINTAINER_CXX_WARNINGS}") -ENDIF() +OPTION(MYSQL_MAINTAINER_MODE + "MySQL maintainer-specific development environment" OFF) -IF(CMAKE_COMPILER_IS_GNUCXX) - STRING(REGEX MATCH "-Werror" - BUILD_WITH_WERROR ${CMAKE_CXX_FLAGS}) - IF(BUILD_WITH_WERROR) - SET("COMPILE_FLAG_WERROR" 1) - ENDIF() -ENDIF() +INCLUDE(maintainer) IF(WITH_UNIT_TESTS) ENABLE_TESTING() ENDIF() IF(NOT WITHOUT_SERVER) -SET (MYSQLD_STATIC_PLUGIN_LIBS "" CACHE INTERNAL "") - # Add storage engines and plugins. - CONFIGURE_PLUGINS() + SET (MYSQLD_STATIC_PLUGIN_LIBS "" CACHE INTERNAL "") + # Add storage engines and plugins. + CONFIGURE_PLUGINS() +ELSE() + # We may still want Cluster client libraries, use -DWITH_NDBCLUSTER=1 + ADD_SUBDIRECTORY(storage/ndb) ENDIF() ADD_SUBDIRECTORY(include) @@ -477,21 +469,21 @@ IF(WIN32) ADD_DEFINITIONS( /D _VARIADIC_MAX=10 ) ENDIF() + # libc++ doesn't have tuple in tr1 + IF(HAVE_LLVM_LIBCPP) + ADD_DEFINITIONS(-DGTEST_USE_OWN_TR1_TUPLE=1) + ENDIF() ADD_SUBDIRECTORY(unittest/gunit) ENDIF() +ADD_SUBDIRECTORY(sql/share) ADD_SUBDIRECTORY(extra) IF(NOT WITHOUT_SERVER) ADD_SUBDIRECTORY(sql) - ADD_SUBDIRECTORY(sql/share) OPTION (WITH_EMBEDDED_SERVER "Compile MySQL with embedded server" OFF) IF(WITH_EMBEDDED_SERVER) ADD_SUBDIRECTORY(libmysqld) ENDIF(WITH_EMBEDDED_SERVER) - - IF(EXISTS ${CMAKE_SOURCE_DIR}/internal/CMakeLists.txt) - ADD_SUBDIRECTORY(internal) - ENDIF() ENDIF() INCLUDE(cmake/abi_check.cmake) @@ -504,13 +496,14 @@ CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc.in ${CMAKE_BINARY_DIR}/sql/sql_builtin.cc) CONFIGURE_FILE( - ${CMAKE_SOURCE_DIR}/cmake/info_macros.cmake.in ${CMAKE_BINARY_DIR}/info_macros.cmake @ONLY) + ${CMAKE_SOURCE_DIR}/cmake/info_macros.cmake.in + ${CMAKE_BINARY_DIR}/info_macros.cmake @ONLY) # Handle the "INFO_*" files. INCLUDE(${CMAKE_BINARY_DIR}/info_macros.cmake) # Source: This can be done during the cmake phase, all information is # available, but should be repeated on each "make" just in case someone -# does "cmake ; make ; bzr pull ; make". +# does "cmake ; make ; git pull ; make". CREATE_INFO_SRC(${CMAKE_BINARY_DIR}/Docs) ADD_CUSTOM_TARGET(INFO_SRC ALL COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake/info_src.cmake @@ -540,3 +533,37 @@ ENDIF() INCLUDE(CPack) + +# C compiler flags consist of: +# CPPFLAGS Taken from environment, see above. +# ADD_DEFINITIONS In each individual CMakeLists.txt +# CMAKE_C_FLAGS From command line. +# We extend these in maintainer.cmake +# ENV{CFLAGS} From environment, but environment is ignored if +# CMAKE_C_FLAGS is also given on command line +# CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE} +# We extend these in compiler_options.cmake +# +# Note that CMakeCache.txt contains cmake builtins for these variables, +# *not* the values that will actually be used: + +IF(CMAKE_GENERATOR MATCHES "Makefiles") + MESSAGE(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}") +ENDIF() +GET_PROPERTY(cwd_definitions DIRECTORY PROPERTY COMPILE_DEFINITIONS) +MESSAGE(STATUS "COMPILE_DEFINITIONS: ${cwd_definitions}") +MESSAGE(STATUS "CMAKE_C_FLAGS: ${CMAKE_C_FLAGS}") +MESSAGE(STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}") +IF(CMAKE_BUILD_TYPE AND CMAKE_GENERATOR MATCHES "Makefiles") + STRING(TOUPPER "${CMAKE_BUILD_TYPE}" CMAKEBT) + MESSAGE(STATUS "CMAKE_C_FLAGS_${CMAKEBT}: ${CMAKE_C_FLAGS_${CMAKEBT}}") + MESSAGE(STATUS "CMAKE_CXX_FLAGS_${CMAKEBT}: ${CMAKE_CXX_FLAGS_${CMAKEBT}}") +ENDIF() +IF(NOT CMAKE_GENERATOR MATCHES "Makefiles") + MESSAGE(STATUS "CMAKE_C_FLAGS_DEBUG: ${CMAKE_C_FLAGS_DEBUG}") + MESSAGE(STATUS "CMAKE_CXX_FLAGS_DEBUG: ${CMAKE_CXX_FLAGS_DEBUG}") + MESSAGE(STATUS + "CMAKE_C_FLAGS_RELWITHDEBINFO: ${CMAKE_C_FLAGS_RELWITHDEBINFO}") + MESSAGE(STATUS + "CMAKE_CXX_FLAGS_RELWITHDEBINFO: ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") +ENDIF() diff -Nru percona-xtrabackup-2.2.3/config.h.cmake percona-xtrabackup-2.3.7/config.h.cmake --- percona-xtrabackup-2.2.3/config.h.cmake 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/config.h.cmake 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,6 +19,7 @@ /* Headers we may want to use. */ #cmakedefine STDC_HEADERS 1 #cmakedefine _GNU_SOURCE 1 +#cmakedefine HAVE_LLVM_LIBCPP 1 #cmakedefine HAVE_ALLOCA_H 1 #cmakedefine HAVE_AIO_H 1 #cmakedefine HAVE_ARPA_INET_H 1 @@ -30,7 +31,6 @@ #cmakedefine HAVE_CXXABI_H 1 #cmakedefine HAVE_NCURSES_H 1 #cmakedefine HAVE_NDIR_H 1 -#cmakedefine HAVE_DIRENT_H 1 #cmakedefine HAVE_DLFCN_H 1 #cmakedefine HAVE_EXECINFO_H 1 #cmakedefine HAVE_FCNTL_H 1 @@ -187,7 +187,6 @@ #cmakedefine HAVE_LSTAT 1 #cmakedefine HAVE_MEMALIGN 1 /* #cmakedefine HAVE_MLOCK 1 see Bug#54662 */ -#cmakedefine HAVE_NPTL 1 #cmakedefine HAVE_NL_LANGINFO 1 #cmakedefine HAVE_MADVISE 1 #cmakedefine HAVE_DECL_MADVISE 1 @@ -233,7 +232,6 @@ #cmakedefine HAVE_PUTENV 1 #cmakedefine HAVE_RE_COMP 1 #cmakedefine HAVE_REGCOMP 1 -#cmakedefine HAVE_READDIR_R 1 #cmakedefine HAVE_READLINK 1 #cmakedefine HAVE_REALPATH 1 #cmakedefine HAVE_RENAME 1 diff -Nru percona-xtrabackup-2.2.3/configure.cmake percona-xtrabackup-2.3.7/configure.cmake --- percona-xtrabackup-2.2.3/configure.cmake 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/configure.cmake 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -21,6 +21,7 @@ INCLUDE (CheckFunctionExists) INCLUDE (CheckCCompilerFlag) INCLUDE (CheckCSourceRuns) +INCLUDE (CheckCXXSourceRuns) INCLUDE (CheckSymbolExists) @@ -57,40 +58,39 @@ # other threads. SET(SIGNAL_WITH_VIO_SHUTDOWN 1) -# Always enable -Wall for gnu C/C++ -# Remember to strip off these in scripts/CMakeLists.txt -IF(CMAKE_COMPILER_IS_GNUCXX) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-unused-parameter") -ENDIF() -IF(CMAKE_COMPILER_IS_GNUCC) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") -ENDIF() - -# Remember to strip off these in scripts/CMakeLists.txt -IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang") - SET(CMAKE_CXX_FLAGS - "${CMAKE_CXX_FLAGS} -Wall -Wno-null-conversion -Wno-unused-private-field") -ENDIF() -IF(CMAKE_C_COMPILER_ID MATCHES "Clang") - SET(CMAKE_C_FLAGS - "${CMAKE_C_FLAGS} -Wall -Wno-null-conversion -Wno-unused-private-field") -ENDIF() - # The default C++ library for SunPro is really old, and not standards compliant. -# http://developers.sun.com/solaris/articles/cmp_stlport_libCstd.html +# http://www.oracle.com/technetwork/server-storage/solaris10/cmp-stlport-libcstd-142559.html # Use stlport rather than Rogue Wave. IF(CMAKE_SYSTEM_NAME MATCHES "SunOS") IF(CMAKE_CXX_COMPILER_ID MATCHES "SunPro") - SET(CMAKE_CXX_FLAGS - "${CMAKE_CXX_FLAGS} -library=stlport4") + IF(SUNPRO_CXX_LIBRARY) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -library=${SUNPRO_CXX_LIBRARY}") + ELSE() + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -library=stlport4") + ENDIF() ENDIF() ENDIF() +# Check to see if we are using LLVM's libc++ rather than e.g. libstd++ +# Can then check HAVE_LLBM_LIBCPP later without including e.g. ciso646. +CHECK_CXX_SOURCE_RUNS(" +#include +int main() +{ +#ifdef _LIBCPP_VERSION + return 0; +#else + return 1; +#endif +}" HAVE_LLVM_LIBCPP) + MACRO(DIRNAME IN OUT) GET_FILENAME_COMPONENT(${OUT} ${IN} PATH) ENDMACRO() -IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND CMAKE_C_COMPILER_ID MATCHES "SunPro") +IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND + CMAKE_C_COMPILER_ID MATCHES "SunPro" AND + CMAKE_CXX_FLAGS MATCHES "stlport4") DIRNAME(${CMAKE_CXX_COMPILER} CXX_PATH) SET(STLPORT_SUFFIX "lib/stlport4") IF(CMAKE_SIZEOF_VOID_P EQUAL 8 AND CMAKE_SYSTEM_PROCESSOR MATCHES "sparc") @@ -245,6 +245,7 @@ # Tests for header files # INCLUDE (CheckIncludeFiles) +INCLUDE (CheckIncludeFileCXX) CHECK_INCLUDE_FILES ("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS) CHECK_INCLUDE_FILES (sys/types.h HAVE_SYS_TYPES_H) @@ -252,8 +253,7 @@ CHECK_INCLUDE_FILES (aio.h HAVE_AIO_H) CHECK_INCLUDE_FILES (arpa/inet.h HAVE_ARPA_INET_H) CHECK_INCLUDE_FILES (crypt.h HAVE_CRYPT_H) -CHECK_INCLUDE_FILES (cxxabi.h HAVE_CXXABI_H) -CHECK_INCLUDE_FILES (dirent.h HAVE_DIRENT_H) +CHECK_INCLUDE_FILE_CXX (cxxabi.h HAVE_CXXABI_H) CHECK_INCLUDE_FILES (dlfcn.h HAVE_DLFCN_H) CHECK_INCLUDE_FILES (execinfo.h HAVE_EXECINFO_H) CHECK_INCLUDE_FILES (fcntl.h HAVE_FCNTL_H) @@ -474,7 +474,6 @@ CHECK_FUNCTION_EXISTS (pthread_threadmask HAVE_PTHREAD_THREADMASK) CHECK_FUNCTION_EXISTS (pthread_yield_np HAVE_PTHREAD_YIELD_NP) CHECK_FUNCTION_EXISTS (putenv HAVE_PUTENV) -CHECK_FUNCTION_EXISTS (readdir_r HAVE_READDIR_R) CHECK_FUNCTION_EXISTS (readlink HAVE_READLINK) CHECK_FUNCTION_EXISTS (re_comp HAVE_RE_COMP) CHECK_FUNCTION_EXISTS (regcomp HAVE_REGCOMP) diff -Nru percona-xtrabackup-2.2.3/debian/changelog percona-xtrabackup-2.3.7/debian/changelog --- percona-xtrabackup-2.2.3/debian/changelog 2016-05-20 03:42:55.000000000 +0000 +++ percona-xtrabackup-2.3.7/debian/changelog 2017-03-06 16:27:42.000000000 +0000 @@ -1,3 +1,15 @@ +percona-xtrabackup (2.3.7-0ubuntu0.16.04.1) xenial-security; urgency=medium + + * SECURITY UPDATE: Update to 2.3.7 to fix security issue and to + support update of percona-xtradb-cluster-5.6 to 5.6.34-26.19 + (LP: #1668934): + - CVE-2016-6225 + * Updates for new release: + - d/control: Add new BD's on libcurl4-openssl-dev, libev-dev, + python-docutils, python-sphinx and vim-common. + + -- James Page Mon, 06 Mar 2017 10:42:42 +0000 + percona-xtrabackup (2.2.3-2.1build1.1) xenial; urgency=medium * Recompile to resolve miscompilation on s390x architecture. LP: diff -Nru percona-xtrabackup-2.2.3/debian/control percona-xtrabackup-2.3.7/debian/control --- percona-xtrabackup-2.2.3/debian/control 2014-07-23 21:53:17.000000000 +0000 +++ percona-xtrabackup-2.3.7/debian/control 2017-03-06 16:02:17.000000000 +0000 @@ -1,7 +1,8 @@ Source: percona-xtrabackup Section: database Priority: extra -Maintainer: Debian MySQL Maintainers +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: Debian MySQL Maintainers Uploaders: George Ormond Lorch III , Alexey Bychko , Tomislav Plavcic @@ -11,12 +12,17 @@ cmake, debhelper (>= 7.3), libaio-dev, + libcurl4-openssl-dev, + libev-dev, libgcrypt-dev, libncurses-dev, libssl-dev, libtool, libz-dev, - lsb-release + lsb-release, + python-docutils, + python-sphinx, + vim-common Standards-Version: 3.9.5 Homepage: http://www.percona.com/software/percona-xtrabackup diff -Nru percona-xtrabackup-2.2.3/debian/gbp.conf percona-xtrabackup-2.3.7/debian/gbp.conf --- percona-xtrabackup-2.2.3/debian/gbp.conf 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/debian/gbp.conf 2017-03-06 16:27:37.000000000 +0000 @@ -0,0 +1,3 @@ +[DEFAULT] +debian-branch = ubuntu/xenial +pristine-tar = True diff -Nru percona-xtrabackup-2.2.3/Docs/INFO_SRC percona-xtrabackup-2.3.7/Docs/INFO_SRC --- percona-xtrabackup-2.2.3/Docs/INFO_SRC 2014-07-22 17:14:03.000000000 +0000 +++ percona-xtrabackup-2.3.7/Docs/INFO_SRC 2017-02-27 07:49:21.000000000 +0000 @@ -1,8 +1,8 @@ -revision-id: george.lorch@percona.com-20140722165031-rru2w122wuri2ldn -date: 2014-07-22 09:50:31 -0700 -build-date: 2014-07-22 13:14:03 -0400 -revno: 4983 -branch-nick: percona-xtrabackup-2.2-debian-source-for-inclusion +commit: 40f611ffc8761b47552d04ed5bb26c49b688db51 +date: 2017-02-27 09:47:02 +0200 +build-date: 2017-02-27 07:49:21 +0000 +short: 40f611f +branch: HEAD -MySQL source 5.6.17 +MySQL source 5.6.24 diff -Nru percona-xtrabackup-2.2.3/extra/charset2html.c percona-xtrabackup-2.3.7/extra/charset2html.c --- percona-xtrabackup-2.2.3/extra/charset2html.c 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/charset2html.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,179 +0,0 @@ -/* Copyright (c) 2000, 2002-2004, 2007, 2008 MySQL AB - Use is subject to license terms - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - */ - -/* - Written by Alexander Barkov to check what - a charset is in your favorite web browser -*/ - -#include -#include -#include -#include - -#include - -typedef struct char_info_st -{ - int cod; - int srt; - int uni; - int low; - int upp; - int ctp; -} MY_CH; - -static int chcmp(const void *vf, const void *vs) -{ - const MY_CH *f=vf; - const MY_CH *s=vs; - - return f->srt-s->srt ? f->srt-s->srt : f->uni-s->uni; -} - -static void print_cs(CHARSET_INFO *cs) -{ - uint i; - int srt; - int clr=0; - MY_CH ch[256]; - - printf("\n"); - printf("\n"); - printf("\n"); - printf("
\n");
-  printf("Charset %s\n",cs->name);
-
-  printf("\n");
-  printf("");
-  
-  for (i=0; i<256; i++)
-  {
-    ch[i].cod=i;
-    ch[i].srt=cs->sort_order ? cs->sort_order[i] : i;
-    ch[i].uni=cs->tab_to_uni[i];
-    ch[i].low=cs->tab_to_uni[cs->to_lower[i]];
-    ch[i].upp=cs->tab_to_uni[cs->to_upper[i]];
-    ch[i].ctp=cs->ctype[i+1];
-  }
-  
-  qsort(ch,256,sizeof(MY_CH),&chcmp);
-  srt=ch[0].srt;
-  
-  for (i=0; i<256; i++)
-  {
-    clr = (srt!=ch[i].srt) ? !clr : clr;
-    
-    printf("",clr ? "DDDDDD" : "EEEE99");
-    printf("\n");
-    srt=ch[i].srt;
-  }
-  printf("
CodeUniSortCtypeChLoUp
%02X",ch[i].cod); - printf("%04X",ch[i].uni); - printf("%02X",ch[i].srt); - - printf("%s%s%s%s%s%s%s%s", - ch[i].ctp & _MY_U ? "U" : "", - ch[i].ctp & _MY_L ? "L" : "", - ch[i].ctp & _MY_NMR ? "N" : "", - ch[i].ctp & _MY_SPC ? "S" : "", - ch[i].ctp & _MY_PNT ? "P" : "", - ch[i].ctp & _MY_CTR ? "C" : "", - ch[i].ctp & _MY_B ? "B" : "", - ch[i].ctp & _MY_X ? "X" : ""); - - if ((ch[i].uni >= 0x80) && (ch[i].uni <= 0x9F)) - { - /* - Control characters 0x0080..0x009F are dysplayed by some - browers as if they were letters. Don't print them to - avoid confusion. - */ - printf("ctrlctrlctrl"); - } - else - { - printf("&#%d;",ch[i].uni); - printf("&#%d;",ch[i].low); - printf("&#%d;",ch[i].upp); - } - printf("
\n"); - printf("
\n"); - printf("\n"); -} - -static void print_index() -{ - CHARSET_INFO **cs; - int clr=0; - - get_charset_by_name("",MYF(0)); /* To execute init_available_charsets */ - - printf("All charsets\n"); - printf("\n"); - printf("
IDCharsetCollationDefBinComComment\n"); - for (cs=all_charsets ; cs < all_charsets+256; cs++) - { - if (!cs[0]) - continue; - printf("
%d%s%s%s%s%s%s\n", - (clr= !clr) ? "DDDDDD" : "EEEE99", - cs[0]->name,cs[0]->number,cs[0]->csname, - cs[0]->name, - (cs[0]->state & MY_CS_PRIMARY) ? "def " : " ", - (cs[0]->state & MY_CS_BINSORT) ? "bin " : " ", - (cs[0]->state & MY_CS_COMPILED) ? "com " : " ", - cs[0]->comment); - } - printf("
\n"); -} - -int main(int argc, char **argv) { - const char *the_set = NULL; - int argcnt = 1; - CHARSET_INFO *cs; - - if (getenv("SCRIPT_NAME")) - { - printf("Content-Type: text/html\r\n\r\n"); - } - my_init(); - - if (argc > argcnt && argv[argcnt][0] == '-' && argv[argcnt][1] == '#') - { - DBUG_PUSH(argv[argcnt++]+2); - } - - if (argc > argcnt) - the_set = argv[argcnt++]; - - if (argc > argcnt) - charsets_dir = argv[argcnt++]; - - if (!the_set) - { - print_index(); - return 0; - } - - if (!(cs= get_charset_by_name(the_set, MYF(MY_WME)))) - return 1; - - print_cs(cs); - - return 0; -} diff -Nru percona-xtrabackup-2.2.3/extra/mysql_waitpid.c percona-xtrabackup-2.3.7/extra/mysql_waitpid.c --- percona-xtrabackup-2.2.3/extra/mysql_waitpid.c 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/mysql_waitpid.c 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -64,6 +64,10 @@ progname= argv[0]; + fprintf(stderr, + "Warning: %s is deprecated and will be removed in a future version.\n", + progname); + if (handle_options(&argc, &argv, my_long_options, get_one_option)) exit(-1); if (!argv[0] || !argv[1] || (pid= atoi(argv[0])) <= 0 || diff -Nru percona-xtrabackup-2.2.3/extra/replace.c percona-xtrabackup-2.3.7/extra/replace.c --- percona-xtrabackup-2.2.3/extra/replace.c 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/replace.c 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License @@ -1020,7 +1020,7 @@ updated=retain=0; reset_buffer(); - while ((error=fill_buffer_retaining(fileno(in),retain)) > 0) + while ((error=fill_buffer_retaining(my_fileno(in),retain)) > 0) { end_of_line=buffer ; buffer[bufbytes]=0; /* Sentinel */ diff -Nru percona-xtrabackup-2.2.3/extra/yassl/certs/ca-cert.pem percona-xtrabackup-2.3.7/extra/yassl/certs/ca-cert.pem --- percona-xtrabackup-2.2.3/extra/yassl/certs/ca-cert.pem 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/certs/ca-cert.pem 2017-02-27 07:47:02.000000000 +0000 @@ -1,45 +1,45 @@ -----BEGIN CERTIFICATE----- -MIIEnjCCA4agAwIBAgIJAOnQp195JfQ8MA0GCSqGSIb3DQEBBQUAMIGQMQswCQYD -VQQGEwJVUzEQMA4GA1UECBMHTW9udGFuYTEQMA4GA1UEBxMHQm96ZW1hbjERMA8G -A1UEChMIU2F3dG9vdGgxEzARBgNVBAsTCkNvbnN1bHRpbmcxFjAUBgNVBAMTDXd3 -dy55YXNzbC5jb20xHTAbBgkqhkiG9w0BCQEWDmluZm9AeWFzc2wuY29tMB4XDTEx -MTAyNDE4MTgxNVoXDTE0MDcyMDE4MTgxNVowgZAxCzAJBgNVBAYTAlVTMRAwDgYD -VQQIEwdNb250YW5hMRAwDgYDVQQHEwdCb3plbWFuMREwDwYDVQQKEwhTYXd0b290 -aDETMBEGA1UECxMKQ29uc3VsdGluZzEWMBQGA1UEAxMNd3d3Lnlhc3NsLmNvbTEd -MBsGCSqGSIb3DQEJARYOaW5mb0B5YXNzbC5jb20wggEiMA0GCSqGSIb3DQEBAQUA -A4IBDwAwggEKAoIBAQC/DMotFLIehEJbzTgfSvJNdRDxtjWf38p9A5jTrN4DZu4q -8diwfW4HVAsQmCFNgMsSIOfMT95FfclydzLqypC7aVIQAy+o85XF8YtiVhvvZ2+k -EEGVrQqb46XAsNJwdlAwW6joCCx87aeieo04KRysx+3yfJWwlYJ9SVw4zXcl772A -dVOUPD3KY1ufFbXTHRMvGdE823Y6zLh9yeXC19pAb9gh3HMbQi1TnP4a/H2rejY/ -mN6EfAVnzmoUOIep8Yy1aMtof3EgK/WgY/VWL6Mm0rdvsVoX1ziZCP6TWG/+wxNJ -CBYLp01nAFIxZyNOmO1RRR25BNkL7Ngos0u97TZ5AgMBAAGjgfgwgfUwHQYDVR0O -BBYEFCeOZxF0wyYdP+0zY7Ok2B0w5ejVMIHFBgNVHSMEgb0wgbqAFCeOZxF0wyYd -P+0zY7Ok2B0w5ejVoYGWpIGTMIGQMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHTW9u -dGFuYTEQMA4GA1UEBxMHQm96ZW1hbjERMA8GA1UEChMIU2F3dG9vdGgxEzARBgNV -BAsTCkNvbnN1bHRpbmcxFjAUBgNVBAMTDXd3dy55YXNzbC5jb20xHTAbBgkqhkiG -9w0BCQEWDmluZm9AeWFzc2wuY29tggkA6dCnX3kl9DwwDAYDVR0TBAUwAwEB/zAN -BgkqhkiG9w0BAQUFAAOCAQEAX4YU9FGLvKVOMNperJr4bNkmS5P54xyJb57us513 -PokgdqPm6IYVIdviM7I01dCf88Gkh5Jc+dH/MC+OA7yzPAwyo5BfGpAer53zntcH -Aql9J2ZjL68Y16wYmIyDjzjzC6w2EHX7ynYTUFsCj3O/46Dug1IlVM4mzpy9L3mr -G2C4kvEDwPw7CNnArdVyCCWAYS3cn6eDYgdH4AdMSwcwBKmHHFV/BxLQy0Jdy89m -ARoX7vkPYLfbb2jlTkFibtNvYE9LJ97PGAfxE13LP6klRNpSXMgE4VYS9SqQTtHi -rwG1I6HsMdp7Y2nEuPPnzqE9wNtt87LZRsifw7hwWh9/yg== +MIIEqjCCA5KgAwIBAgIJAJpBR82hFGKMMA0GCSqGSIb3DQEBBQUAMIGUMQswCQYD +VQQGEwJVUzEQMA4GA1UECAwHTW9udGFuYTEQMA4GA1UEBwwHQm96ZW1hbjERMA8G +A1UECgwIU2F3dG9vdGgxEzARBgNVBAsMCkNvbnN1bHRpbmcxGDAWBgNVBAMMD3d3 +dy53b2xmc3NsLmNvbTEfMB0GCSqGSIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTAe +Fw0xNDA3MTEwMzIwMDhaFw0xNzA0MDYwMzIwMDhaMIGUMQswCQYDVQQGEwJVUzEQ +MA4GA1UECAwHTW9udGFuYTEQMA4GA1UEBwwHQm96ZW1hbjERMA8GA1UECgwIU2F3 +dG9vdGgxEzARBgNVBAsMCkNvbnN1bHRpbmcxGDAWBgNVBAMMD3d3dy53b2xmc3Ns +LmNvbTEfMB0GCSqGSIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAL8Myi0Ush6EQlvNOB9K8k11EPG2NZ/fyn0D +mNOs3gNm7irx2LB9bgdUCxCYIU2AyxIg58xP3kV9yXJ3MurKkLtpUhADL6jzlcXx +i2JWG+9nb6QQQZWtCpvjpcCw0nB2UDBbqOgILHztp6J6jTgpHKzH7fJ8lbCVgn1J +XDjNdyXvvYB1U5Q8PcpjW58VtdMdEy8Z0TzbdjrMuH3J5cLX2kBv2CHccxtCLVOc +/hr8fat6Nj+Y3oR8BWfOahQ4h6nxjLVoy2h/cSAr9aBj9VYvoybSt2+xWhfXOJkI +/pNYb/7DE0kIFgunTWcAUjFnI06Y7VFFHbkE2Qvs2CizS73tNnkCAwEAAaOB/DCB ++TAdBgNVHQ4EFgQUJ45nEXTDJh0/7TNjs6TYHTDl6NUwgckGA1UdIwSBwTCBvoAU +J45nEXTDJh0/7TNjs6TYHTDl6NWhgZqkgZcwgZQxCzAJBgNVBAYTAlVTMRAwDgYD +VQQIDAdNb250YW5hMRAwDgYDVQQHDAdCb3plbWFuMREwDwYDVQQKDAhTYXd0b290 +aDETMBEGA1UECwwKQ29uc3VsdGluZzEYMBYGA1UEAwwPd3d3LndvbGZzc2wuY29t +MR8wHQYJKoZIhvcNAQkBFhBpbmZvQHdvbGZzc2wuY29tggkAmkFHzaEUYowwDAYD +VR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAeXgMbXmIkfw6FZz5J2IW8CEf ++n0/oqgyHvfyEal0FnRe3BjK8AAq1QMGJjDxR4P9Mm787apPfQxjYDEvfAy/mWaH +7ScIhi3EM+iYIxz+o9uaSU78WkLvccM/rdxKqNKjHQmsMwR7hvNtAFmjyNvRPHP2 +DpDWXkngvzZjCHulsI81O1aMETVJBBzQ57pWxQ0KkY3Wt2IZNBJSTNJtfMU9DxiB +VMv2POWE0tZxFewaNAvwoCF0Q8ijsN/ZZ9rirZNI+KCHvXkU4GIK3/cxLjF70TIq +Cv5dFO/ZZFDkg5G8cA3XiI3ZvIQOxRqzv2QCTlGRpKKFFYOv8FubKElfsrMD2A== -----END CERTIFICATE----- Certificate: Data: Version: 3 (0x2) Serial Number: - e9:d0:a7:5f:79:25:f4:3c - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.yassl.com/emailAddress=info@yassl.com + 9a:41:47:cd:a1:14:62:8c + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.wolfssl.com/emailAddress=info@wolfssl.com Validity - Not Before: Oct 24 18:18:15 2011 GMT - Not After : Jul 20 18:18:15 2014 GMT - Subject: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.yassl.com/emailAddress=info@yassl.com + Not Before: Jul 11 03:20:08 2014 GMT + Not After : Apr 6 03:20:08 2017 GMT + Subject: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.wolfssl.com/emailAddress=info@wolfssl.com Subject Public Key Info: Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): + Public-Key: (2048 bit) + Modulus: 00:bf:0c:ca:2d:14:b2:1e:84:42:5b:cd:38:1f:4a: f2:4d:75:10:f1:b6:35:9f:df:ca:7d:03:98:d3:ac: de:03:66:ee:2a:f1:d8:b0:7d:6e:07:54:0b:10:98: @@ -64,24 +64,24 @@ 27:8E:67:11:74:C3:26:1D:3F:ED:33:63:B3:A4:D8:1D:30:E5:E8:D5 X509v3 Authority Key Identifier: keyid:27:8E:67:11:74:C3:26:1D:3F:ED:33:63:B3:A4:D8:1D:30:E5:E8:D5 - DirName:/C=US/ST=Montana/L=Bozeman/O=Sawtooth/OU=Consulting/CN=www.yassl.com/emailAddress=info@yassl.com - serial:E9:D0:A7:5F:79:25:F4:3C + DirName:/C=US/ST=Montana/L=Bozeman/O=Sawtooth/OU=Consulting/CN=www.wolfssl.com/emailAddress=info@wolfssl.com + serial:9A:41:47:CD:A1:14:62:8C X509v3 Basic Constraints: CA:TRUE Signature Algorithm: sha1WithRSAEncryption - 5f:86:14:f4:51:8b:bc:a5:4e:30:da:5e:ac:9a:f8:6c:d9:26: - 4b:93:f9:e3:1c:89:6f:9e:ee:b3:9d:77:3e:89:20:76:a3:e6: - e8:86:15:21:db:e2:33:b2:34:d5:d0:9f:f3:c1:a4:87:92:5c: - f9:d1:ff:30:2f:8e:03:bc:b3:3c:0c:32:a3:90:5f:1a:90:1e: - af:9d:f3:9e:d7:07:02:a9:7d:27:66:63:2f:af:18:d7:ac:18: - 98:8c:83:8f:38:f3:0b:ac:36:10:75:fb:ca:76:13:50:5b:02: - 8f:73:bf:e3:a0:ee:83:52:25:54:ce:26:ce:9c:bd:2f:79:ab: - 1b:60:b8:92:f1:03:c0:fc:3b:08:d9:c0:ad:d5:72:08:25:80: - 61:2d:dc:9f:a7:83:62:07:47:e0:07:4c:4b:07:30:04:a9:87: - 1c:55:7f:07:12:d0:cb:42:5d:cb:cf:66:01:1a:17:ee:f9:0f: - 60:b7:db:6f:68:e5:4e:41:62:6e:d3:6f:60:4f:4b:27:de:cf: - 18:07:f1:13:5d:cb:3f:a9:25:44:da:52:5c:c8:04:e1:56:12: - f5:2a:90:4e:d1:e2:af:01:b5:23:a1:ec:31:da:7b:63:69:c4: - b8:f3:e7:ce:a1:3d:c0:db:6d:f3:b2:d9:46:c8:9f:c3:b8:70: - 5a:1f:7f:ca + 79:78:0c:6d:79:88:91:fc:3a:15:9c:f9:27:62:16:f0:21:1f: + fa:7d:3f:a2:a8:32:1e:f7:f2:11:a9:74:16:74:5e:dc:18:ca: + f0:00:2a:d5:03:06:26:30:f1:47:83:fd:32:6e:fc:ed:aa:4f: + 7d:0c:63:60:31:2f:7c:0c:bf:99:66:87:ed:27:08:86:2d:c4: + 33:e8:98:23:1c:fe:a3:db:9a:49:4e:fc:5a:42:ef:71:c3:3f: + ad:dc:4a:a8:d2:a3:1d:09:ac:33:04:7b:86:f3:6d:00:59:a3: + c8:db:d1:3c:73:f6:0e:90:d6:5e:49:e0:bf:36:63:08:7b:a5: + b0:8f:35:3b:56:8c:11:35:49:04:1c:d0:e7:ba:56:c5:0d:0a: + 91:8d:d6:b7:62:19:34:12:52:4c:d2:6d:7c:c5:3d:0f:18:81: + 54:cb:f6:3c:e5:84:d2:d6:71:15:ec:1a:34:0b:f0:a0:21:74: + 43:c8:a3:b0:df:d9:67:da:e2:ad:93:48:f8:a0:87:bd:79:14: + e0:62:0a:df:f7:31:2e:31:7b:d1:32:2a:0a:fe:5d:14:ef:d9: + 64:50:e4:83:91:bc:70:0d:d7:88:8d:d9:bc:84:0e:c5:1a:b3: + bf:64:02:4e:51:91:a4:a2:85:15:83:af:f0:5b:9b:28:49:5f: + b2:b3:03:d8 Binary files /tmp/tmpDsbHOr/KYyEySuP7r/percona-xtrabackup-2.2.3/extra/yassl/certs/client-cert.der and /tmp/tmpDsbHOr/dNxW0q5roZ/percona-xtrabackup-2.3.7/extra/yassl/certs/client-cert.der differ diff -Nru percona-xtrabackup-2.2.3/extra/yassl/certs/client-cert.pem percona-xtrabackup-2.3.7/extra/yassl/certs/client-cert.pem --- percona-xtrabackup-2.2.3/extra/yassl/certs/client-cert.pem 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/certs/client-cert.pem 2017-02-27 07:47:02.000000000 +0000 @@ -2,17 +2,17 @@ Data: Version: 3 (0x2) Serial Number: - 87:4a:75:be:91:66:d8:3d - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, ST=Oregon, L=Portland, O=yaSSL, OU=Programming, CN=www.yassl.com/emailAddress=info@yassl.com + b6:63:af:8f:5d:62:57:a0 + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, ST=Montana, L=Bozeman, O=wolfSSL, OU=Programming, CN=www.wolfssl.com/emailAddress=info@wolfssl.com Validity - Not Before: Oct 24 18:21:55 2011 GMT - Not After : Jul 20 18:21:55 2014 GMT - Subject: C=US, ST=Oregon, L=Portland, O=yaSSL, OU=Programming, CN=www.yassl.com/emailAddress=info@yassl.com + Not Before: Jul 11 17:39:44 2014 GMT + Not After : Apr 6 17:39:44 2017 GMT + Subject: C=US, ST=Montana, L=Bozeman, O=wolfSSL, OU=Programming, CN=www.wolfssl.com/emailAddress=info@wolfssl.com Subject Public Key Info: Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): + Public-Key: (2048 bit) + Modulus: 00:c3:03:d1:2b:fe:39:a4:32:45:3b:53:c8:84:2b: 2a:7c:74:9a:bd:aa:2a:52:07:47:d6:a6:36:b2:07: 32:8e:d0:ba:69:7b:c6:c3:44:9e:d4:81:48:fd:2d: @@ -37,51 +37,51 @@ 33:D8:45:66:D7:68:87:18:7E:54:0D:70:27:91:C7:26:D7:85:65:C0 X509v3 Authority Key Identifier: keyid:33:D8:45:66:D7:68:87:18:7E:54:0D:70:27:91:C7:26:D7:85:65:C0 - DirName:/C=US/ST=Oregon/L=Portland/O=yaSSL/OU=Programming/CN=www.yassl.com/emailAddress=info@yassl.com - serial:87:4A:75:BE:91:66:D8:3D + DirName:/C=US/ST=Montana/L=Bozeman/O=wolfSSL/OU=Programming/CN=www.wolfssl.com/emailAddress=info@wolfssl.com + serial:B6:63:AF:8F:5D:62:57:A0 X509v3 Basic Constraints: CA:TRUE Signature Algorithm: sha1WithRSAEncryption - 1c:7c:42:81:29:9e:21:cf:d0:d8:c1:54:6f:cc:ae:14:09:38: - ff:68:98:9a:95:53:76:18:7b:e6:30:76:ec:28:0d:75:a7:de: - e0:cd:8e:d5:55:23:6a:47:2b:4e:8d:fc:7d:06:a3:d8:0f:ad: - 5e:d6:04:c9:00:33:fb:77:27:d3:b5:03:b3:7b:21:74:31:0b: - 4a:af:2d:1a:b3:93:8e:cc:f3:5f:3d:90:3f:cc:e3:55:19:91: - 7b:78:24:2e:4a:09:bb:18:4e:61:2d:9c:c6:0a:a0:34:91:88: - 70:6b:3b:48:47:bc:79:94:a2:a0:4d:32:47:54:c2:a3:dc:2e: - d2:51:4c:29:39:11:ff:e2:15:5e:58:97:36:f6:e9:06:06:86: - 0e:8d:9d:95:03:72:b2:8b:19:7c:e9:14:6e:a1:88:73:68:58: - 6d:71:5e:c2:d5:d3:13:d2:5f:de:ea:03:be:e2:00:40:e5:ce: - fd:e6:92:31:57:c3:eb:bb:66:ac:cb:2f:1a:fa:e0:62:a2:47: - f4:93:43:2a:4b:6c:5e:0a:2f:f9:e7:e6:4a:63:86:b0:ac:2a: - a1:eb:b4:5b:67:cd:32:e4:b6:11:4b:9a:72:66:0d:a2:4a:76: - 8f:fe:22:bc:83:fd:db:b7:d5:a9:ee:05:c9:b1:71:7e:1b:2b: - e1:e3:af:c0 + 85:10:90:c5:5d:de:25:8c:f2:57:7b:2d:14:1c:05:f9:71:63: + 40:b0:e3:c1:c1:2e:13:2a:7a:b7:d6:24:58:87:eb:03:fb:0d: + af:e0:f4:d0:c8:bc:51:36:10:4f:79:cc:4f:66:7d:af:99:cb: + 7b:ce:68:94:c6:36:aa:42:6e:8c:78:5b:b2:85:ca:d1:e1:a8: + 31:d1:81:d9:f9:c1:a3:9e:34:43:ef:0a:79:7d:3e:83:61:fc: + 14:5c:d1:dd:bc:0e:d7:51:b7:71:6e:41:7e:8b:2c:5a:9a:cb: + 77:4b:6a:f5:06:ff:02:af:1e:e6:63:4f:bc:44:d9:3f:56:9e: + 09:9c:43:f9:55:21:32:46:82:09:86:a9:7b:74:1c:9e:5a:2a: + bf:03:79:91:cb:f2:29:7f:c9:15:82:89:b9:53:cd:7e:07:90: + a9:5d:76:e1:19:5e:0d:58:b8:59:d5:0d:df:23:ab:6b:63:76: + 19:9e:9c:df:b0:57:49:6c:d0:86:97:c3:6c:3c:fa:e0:56:c2: + 1b:e3:a1:42:1a:58:62:85:9d:74:19:83:08:af:59:90:f8:99: + bd:67:d3:4a:ea:0e:c9:ca:61:8a:0d:8a:42:cc:90:e9:2e:c2: + 54:73:7f:5e:af:8d:e2:32:cb:45:20:d6:19:4d:5b:77:31:cc: + 0f:2d:c0:7e -----BEGIN CERTIFICATE----- -MIIEmDCCA4CgAwIBAgIJAIdKdb6RZtg9MA0GCSqGSIb3DQEBBQUAMIGOMQswCQYD -VQQGEwJVUzEPMA0GA1UECBMGT3JlZ29uMREwDwYDVQQHEwhQb3J0bGFuZDEOMAwG -A1UEChMFeWFTU0wxFDASBgNVBAsTC1Byb2dyYW1taW5nMRYwFAYDVQQDEw13d3cu -eWFzc2wuY29tMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHlhc3NsLmNvbTAeFw0xMTEw -MjQxODIxNTVaFw0xNDA3MjAxODIxNTVaMIGOMQswCQYDVQQGEwJVUzEPMA0GA1UE -CBMGT3JlZ29uMREwDwYDVQQHEwhQb3J0bGFuZDEOMAwGA1UEChMFeWFTU0wxFDAS -BgNVBAsTC1Byb2dyYW1taW5nMRYwFAYDVQQDEw13d3cueWFzc2wuY29tMR0wGwYJ -KoZIhvcNAQkBFg5pbmZvQHlhc3NsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAMMD0Sv+OaQyRTtTyIQrKnx0mr2qKlIHR9amNrIHMo7Quml7xsNE -ntSBSP0taKKLZ7uhdcg2LErSG/eLus8N+e/s8YEee5sDR5q/Zcx/ZSRppugUiVvk -NPfFsBST9Wd7Onp44QFWVpGmE0KN0jxAnEzv0YbfN1EbDKE79fGjSjXk4c6W3xt+ -v06X0BDoqAgwga8gC0MUxXRntDKCb42GwohAmTaDuh5AciIX11JlJHOwzu8Zza7/ -eGx7wBID1E5yDVBtO6M7o5lencjZDIWz2YrZVCbbbfqsu/8lTMTRefRx04ZAGBOw -Y7VyTjDEl4SGLVYv1xX3f8Cu9fxb5fuhutMCAwEAAaOB9jCB8zAdBgNVHQ4EFgQU -M9hFZtdohxh+VA1wJ5HHJteFZcAwgcMGA1UdIwSBuzCBuIAUM9hFZtdohxh+VA1w -J5HHJteFZcChgZSkgZEwgY4xCzAJBgNVBAYTAlVTMQ8wDQYDVQQIEwZPcmVnb24x -ETAPBgNVBAcTCFBvcnRsYW5kMQ4wDAYDVQQKEwV5YVNTTDEUMBIGA1UECxMLUHJv -Z3JhbW1pbmcxFjAUBgNVBAMTDXd3dy55YXNzbC5jb20xHTAbBgkqhkiG9w0BCQEW -DmluZm9AeWFzc2wuY29tggkAh0p1vpFm2D0wDAYDVR0TBAUwAwEB/zANBgkqhkiG -9w0BAQUFAAOCAQEAHHxCgSmeIc/Q2MFUb8yuFAk4/2iYmpVTdhh75jB27CgNdafe -4M2O1VUjakcrTo38fQaj2A+tXtYEyQAz+3cn07UDs3shdDELSq8tGrOTjszzXz2Q -P8zjVRmRe3gkLkoJuxhOYS2cxgqgNJGIcGs7SEe8eZSioE0yR1TCo9wu0lFMKTkR -/+IVXliXNvbpBgaGDo2dlQNysosZfOkUbqGIc2hYbXFewtXTE9Jf3uoDvuIAQOXO -/eaSMVfD67tmrMsvGvrgYqJH9JNDKktsXgov+efmSmOGsKwqoeu0W2fNMuS2EUua -cmYNokp2j/4ivIP927fVqe4FybFxfhsr4eOvwA== +MIIEqjCCA5KgAwIBAgIJALZjr49dYlegMA0GCSqGSIb3DQEBBQUAMIGUMQswCQYD +VQQGEwJVUzEQMA4GA1UECAwHTW9udGFuYTEQMA4GA1UEBwwHQm96ZW1hbjEQMA4G +A1UECgwHd29sZlNTTDEUMBIGA1UECwwLUHJvZ3JhbW1pbmcxGDAWBgNVBAMMD3d3 +dy53b2xmc3NsLmNvbTEfMB0GCSqGSIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTAe +Fw0xNDA3MTExNzM5NDRaFw0xNzA0MDYxNzM5NDRaMIGUMQswCQYDVQQGEwJVUzEQ +MA4GA1UECAwHTW9udGFuYTEQMA4GA1UEBwwHQm96ZW1hbjEQMA4GA1UECgwHd29s +ZlNTTDEUMBIGA1UECwwLUHJvZ3JhbW1pbmcxGDAWBgNVBAMMD3d3dy53b2xmc3Ns +LmNvbTEfMB0GCSqGSIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAMMD0Sv+OaQyRTtTyIQrKnx0mr2qKlIHR9am +NrIHMo7Quml7xsNEntSBSP0taKKLZ7uhdcg2LErSG/eLus8N+e/s8YEee5sDR5q/ +Zcx/ZSRppugUiVvkNPfFsBST9Wd7Onp44QFWVpGmE0KN0jxAnEzv0YbfN1EbDKE7 +9fGjSjXk4c6W3xt+v06X0BDoqAgwga8gC0MUxXRntDKCb42GwohAmTaDuh5AciIX +11JlJHOwzu8Zza7/eGx7wBID1E5yDVBtO6M7o5lencjZDIWz2YrZVCbbbfqsu/8l +TMTRefRx04ZAGBOwY7VyTjDEl4SGLVYv1xX3f8Cu9fxb5fuhutMCAwEAAaOB/DCB ++TAdBgNVHQ4EFgQUM9hFZtdohxh+VA1wJ5HHJteFZcAwgckGA1UdIwSBwTCBvoAU +M9hFZtdohxh+VA1wJ5HHJteFZcChgZqkgZcwgZQxCzAJBgNVBAYTAlVTMRAwDgYD +VQQIDAdNb250YW5hMRAwDgYDVQQHDAdCb3plbWFuMRAwDgYDVQQKDAd3b2xmU1NM +MRQwEgYDVQQLDAtQcm9ncmFtbWluZzEYMBYGA1UEAwwPd3d3LndvbGZzc2wuY29t +MR8wHQYJKoZIhvcNAQkBFhBpbmZvQHdvbGZzc2wuY29tggkAtmOvj11iV6AwDAYD +VR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAhRCQxV3eJYzyV3stFBwF+XFj +QLDjwcEuEyp6t9YkWIfrA/sNr+D00Mi8UTYQT3nMT2Z9r5nLe85olMY2qkJujHhb +soXK0eGoMdGB2fnBo540Q+8KeX0+g2H8FFzR3bwO11G3cW5BfossWprLd0tq9Qb/ +Aq8e5mNPvETZP1aeCZxD+VUhMkaCCYape3QcnloqvwN5kcvyKX/JFYKJuVPNfgeQ +qV124RleDVi4WdUN3yOra2N2GZ6c37BXSWzQhpfDbDz64FbCG+OhQhpYYoWddBmD +CK9ZkPiZvWfTSuoOycphig2KQsyQ6S7CVHN/Xq+N4jLLRSDWGU1bdzHMDy3Afg== -----END CERTIFICATE----- Binary files /tmp/tmpDsbHOr/KYyEySuP7r/percona-xtrabackup-2.2.3/extra/yassl/certs/client-key.der and /tmp/tmpDsbHOr/dNxW0q5roZ/percona-xtrabackup-2.3.7/extra/yassl/certs/client-key.der differ diff -Nru percona-xtrabackup-2.2.3/extra/yassl/certs/client-keyEnc.pem percona-xtrabackup-2.3.7/extra/yassl/certs/client-keyEnc.pem --- percona-xtrabackup-2.2.3/extra/yassl/certs/client-keyEnc.pem 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/certs/client-keyEnc.pem 2017-02-27 07:47:02.000000000 +0000 @@ -1,30 +1,12 @@ -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED -DEK-Info: DES-CBC,B9D8FB94E38635AB +DEK-Info: DES-EDE3-CBC,BDE979D13CCC0ABD -3OTcffWLy2Ddlu2oUwnMWkvIb3e9wLL1jrKOpC0aeb//uiawgw50+KuU4pewB5fN -lfEJwpX4NjfPL+Nk+B1VAVrv5gwk5/SY9SwIJluutzmGS4TfVOhqi2SVd0mc9kOD -cSWQ9ltAohFu67jdx36j2u+eghDTOjls1lM8EpzL5cu3Bp4G+ST0nXAdnGtSZdV6 -eToLWjIHiC/JqeRSsKAlG0M5verw14sbb5MO4ZQF4Tdu0fCFgFvDSUM2V4ZLtS1N -VysLEkHoF56YKZ5H2FYLxOVDpn5lSiLnOgRbteEzsysyJ1zLxXWFFwJPCpLVNL0e -P7OoEoCR+oAdzGkkPF+EdMoULtQP+n6U7jGx3oFVS17NORIFvyxyP0hD4pGTGLnl -qAEk30lhKGAE5GgvA2itxZIno/sxPKr5T5Sc2yWh9RdQuLWYNrOb8Kz8J1iXV5l6 -/5TLGu5XVWIlBnUtjMFUe5M54tqGQ6SuDUlL2ud5YeLVN0T+RU/bqV2fXGoBUqKb -Oe8PECm62Ls0wjv27BIOXXV32WSXwsywSzBqq2YXZ5zc9Q0+Mf1Zl6jKwcr8rXhv -rA2kcpicONryggsPZnn/us1bVuWKndsCbm7A5om6HowpamNMPuxhISigzzE59L6X -X6Sl2F0N0zhrfUVlAAlfYTrwcQVtyBDj1xp2nzJFocurJt9EylLaT0Sw3nxWtuOg -yQuF05UPCzxqow/7dMVqtQKng0ptpsn/E+Kr/Egk1YaTpUUxref6mD3R1S+qWML8 -uqTa3y1CWd4u+aJZH2oZU3gmEd8GvuWnmhsw8iTyq1bzYIga1rQZqh4W5Ok9V+jR -GioT/x3mTIhtuEZ1Cmhne5qM3gWYgM3rC3D4+RnUFeThOC5lHtOYHtIEpg66cs7g -QYAn75ghEkyfG7ZvdxAU9Ngn6hckux9tFu3GmeEtdqhVOHaOMaYi60uGSk6uBnTv -P1sUqi70kMrIBWU7TgldKlTqVdReM87Nkb2O5v1xqtoswLWIi65hFWTqt/H65c1H -aEBG1cBqnqBMYuFk8b4TzZbuU9o1UKj0/6N5mpm//BmW65B0htEDP7IYpGF0mt0H -LkU+4ISmuLfPfQeviYio6/yASaFkHpxfK7N8CQvmyAG9U8FHRio2QCGSb2EO+BnT -Bti6L9oMiQbAsCLWTbvBhCVxdncFw1ncq8gkPMXjEEVUsqAo5Kg+903pRHUyHLzS -R6R3C6tTJnNtucJ0zqQMF3K1FHS1m8GrOm+hskJLTHgZLdz6tFTYkXfZBSCwIl7s -plg0wq9CrNC2B8MczWn/j3/h7qSI3wBNqADHMdoiOHECffCeyGEYjW3+0iMoj1m1 -wY0DIym4DDRzk6wsEesxVi8iiCVpYwWnjJAvWYECEO+hWuwCez+eGVkhCT/5g3xW -hPSRhivNuJT05tdR5o+yqONHn1eAQH7Ar3cj+neY5WC0iS5FK9axTqbHXotofD1e -pJX17ZVWsmIIpRvAWGD+LOcfTMZsaB9DJbkrPSWlMW3lC2S5JOq8OgfMNWIDDUN1 -guwpK5Z/lWV1qMMnaWeDVgPH/G0FssECXlCU5+/Ol654h8tm2bRXYAYHPM+OoW67 +N7yz2JV13EmQ7MZPL5wamid5+G1V1gp8FKqMemAC5JDxonS/W9oViMLUcxbfPTDx +FznKdYSVTIQ7vv3ofmDG4MEyV/2C568N2kdtAw+jTfrZFN+IU9CI+W+In/nacirF +02sAcvDMofustnooKNOO7/iyb5+3vRvEt5vSSRQn5WuSQ9sUKjuzoLs/lbf7fyAt +4NeqfI3rYBZXxiUOLITOGXzGNRuFoY+o2uDCfelLAJ8uhiVG6ME3LeJEo1dT5lZ8 +CSJOLPasKg0iG4V7olM4j9FvAfZr48RRsSfUen756Jo2HpI4bad8LKhFYIdNs2Au +WwKLmjpo6QB9hBmRshR04rEXPdrgTqLBExCE08PyaGYnWU8ggWritCeBzDQFj/n4 +sI+NO0Mymuvg98e5RpO52lg3Xnqv9RIK3guLFOmI6aEHC0PS4WwOEQ== -----END RSA PRIVATE KEY----- Binary files /tmp/tmpDsbHOr/KYyEySuP7r/percona-xtrabackup-2.2.3/extra/yassl/certs/dsa1024.der and /tmp/tmpDsbHOr/dNxW0q5roZ/percona-xtrabackup-2.3.7/extra/yassl/certs/dsa1024.der differ diff -Nru percona-xtrabackup-2.2.3/extra/yassl/certs/dsa1024.pem percona-xtrabackup-2.3.7/extra/yassl/certs/dsa1024.pem --- percona-xtrabackup-2.2.3/extra/yassl/certs/dsa1024.pem 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/certs/dsa1024.pem 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,12 @@ +-----BEGIN DSA PRIVATE KEY----- +MIIBvAIBAAKBgQC9Ue5KMuCKx+rG4epwxFFDzyoH4ccSwlglXsRdvqswDRK/oQvT +NNNoWiVxTn3kvQ8qDlhWy9KjGTrqr/ttgmh56FFpe6tz4yTgCNyR9D+eGclD7lNf +dPUc4E3SA6efopG6+ymI55bS+9xUFTG402UCrYSKT59zI2HBfuI6dltsxQIVAJHJ +7WDQ+jBn/nmMyCQzdi+0qJx1AoGBAJJacRK36s5yGY1b6qhxWqvpoAC+SfEKylZn +YWGYf2PM+Iwo6AgPKEw6BSsX+7Nmc4Gjyr4JWhComKi6onPamO/A2CbMM0DCxb47 +BeLBWfqWAgXVj0CODT4MQos5yugnviR/YpEgbzLxvrXr469lKWsAyB19/gFmGmQW +cCgAwGm6AoGBAJ3LY89yHyvQ/TsQ6zlYbovjbk/ogndsMqPdNUvL4RuPTgJP/caa +DDa0XJ7ak6A7TJ+QheLNwOXoZPYJC4EGFSDAXpYniGhbWIrVTCGe6lmZDfnx40WX +S0kk3m/DHaC03ElLAiybxVGxyqoUfbT3Zv1JwftWMuiqHH5uADhdXuXVAhQ01VXa +Rr8IPem35lKghVKnq/kGQw== +-----END DSA PRIVATE KEY----- Binary files /tmp/tmpDsbHOr/KYyEySuP7r/percona-xtrabackup-2.2.3/extra/yassl/certs/dsa512.der and /tmp/tmpDsbHOr/dNxW0q5roZ/percona-xtrabackup-2.3.7/extra/yassl/certs/dsa512.der differ diff -Nru percona-xtrabackup-2.2.3/extra/yassl/certs/dsa512.pem percona-xtrabackup-2.3.7/extra/yassl/certs/dsa512.pem --- percona-xtrabackup-2.2.3/extra/yassl/certs/dsa512.pem 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/certs/dsa512.pem 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ ------BEGIN DSA PRIVATE KEY----- -MIH3AgEAAkEAmSlpgMk8mGhFqYL+Z+uViMW0DNYmRZUZLKAgW37faencww/zYQol -m/IhAWrNqow358pm21b0D3160Ri5Qv0bEQIVAK0lKasKnwkcwa0DIHZ/prfdTQMJ -AkASiJna59ALk5vm7jwhf5yztI2ljOI3gD8X0YFPvfBxtjIIVN2/AeKzdwZkdYoE -1nk5sQIDA8YGdOWQBQoQRhkxAkAEhKAmMXIM6E9dUxdisYDKwBZfwx7qxdmYOPm+ -VlNHaM4IIlccuw13kc9bNu3zJIKQis2QfNt3+Rctc3Pvu7mCAhQjg+e+aqykxwwc -E2V27tjDFY02uA== ------END DSA PRIVATE KEY----- diff -Nru percona-xtrabackup-2.2.3/extra/yassl/certs/server-cert.pem percona-xtrabackup-2.3.7/extra/yassl/certs/server-cert.pem --- percona-xtrabackup-2.2.3/extra/yassl/certs/server-cert.pem 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/certs/server-cert.pem 2017-02-27 07:47:02.000000000 +0000 @@ -1,17 +1,17 @@ Certificate: Data: - Version: 1 (0x0) - Serial Number: 2 (0x2) - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.yassl.com/emailAddress=info@yassl.com + Version: 3 (0x2) + Serial Number: 1 (0x1) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.wolfssl.com/emailAddress=info@wolfssl.com Validity - Not Before: Oct 24 18:27:13 2011 GMT - Not After : Jul 20 18:27:13 2014 GMT - Subject: C=US, ST=Montana, L=Bozeman, O=yaSSL, OU=Support, CN=www.yassl.com/emailAddress=info@yassl.com + Not Before: Jul 11 17:20:14 2014 GMT + Not After : Apr 6 17:20:14 2017 GMT + Subject: C=US, ST=Montana, L=Bozeman, O=wolfSSL, OU=Support, CN=www.wolfssl.com/emailAddress=info@wolfssl.com Subject Public Key Info: Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): + Public-Key: (2048 bit) + Modulus: 00:c0:95:08:e1:57:41:f2:71:6d:b7:d2:45:41:27: 01:65:c6:45:ae:f2:bc:24:30:b8:95:ce:2f:4e:d6: f6:1c:88:bc:7c:9f:fb:a8:67:7f:fe:5c:9c:51:75: @@ -31,59 +31,74 @@ a7:aa:eb:c4:e1:e6:61:83:c5:d2:96:df:d9:d0:4f: ad:d7 Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Subject Key Identifier: + B3:11:32:C9:92:98:84:E2:C9:F8:D0:3B:6E:03:42:CA:1F:0E:8E:3C + X509v3 Authority Key Identifier: + keyid:27:8E:67:11:74:C3:26:1D:3F:ED:33:63:B3:A4:D8:1D:30:E5:E8:D5 + DirName:/C=US/ST=Montana/L=Bozeman/O=Sawtooth/OU=Consulting/CN=www.wolfssl.com/emailAddress=info@wolfssl.com + serial:9A:41:47:CD:A1:14:62:8C + + X509v3 Basic Constraints: + CA:TRUE Signature Algorithm: sha1WithRSAEncryption - 71:4e:d3:62:df:cc:4c:f7:cd:b7:6e:52:0b:6c:6e:e0:bd:c2: - 2d:07:d7:c0:b0:6e:43:1e:35:bc:30:01:50:f0:ff:99:23:6c: - 18:1a:41:b6:11:d6:d4:19:61:fd:e4:77:97:1c:39:e1:57:ab: - c5:15:63:77:11:36:5e:74:e2:24:0b:1f:41:78:ad:b7:81:e7: - b4:40:66:80:f0:4b:91:a0:6d:a8:6e:3d:53:d9:8b:ce:2a:e1: - 0b:45:65:87:a1:96:ae:ee:3e:88:d5:12:1f:78:17:ae:2c:c5: - 73:44:d8:dc:f4:af:d8:cc:ae:4c:e1:0c:be:55:a4:99:f7:6e: - 96:c0:c8:45:87:bf:dc:51:57:ff:9e:73:37:6a:18:9c:c3:f9: - 22:7a:f4:b0:52:bd:fc:21:30:f8:c5:ff:1e:87:7d:ad:a2:5a: - 35:f5:22:a8:b4:0a:76:38:e6:76:b0:98:af:1b:ec:8a:0a:43: - 74:d2:85:34:37:84:07:e1:f6:23:b2:29:de:a6:b6:b7:4c:57: - 7e:96:06:cb:a9:16:25:29:3a:03:2d:55:7d:a6:8c:a4:f7:9e: - 81:c9:95:b6:7c:c1:4a:ce:94:66:0c:ca:88:eb:d2:09:f5:5b: - 19:58:82:df:27:fd:67:95:78:b7:02:06:d5:a7:61:bd:ef:3a: - fc:b2:61:cd + 3d:8c:70:05:5b:62:4b:bf:6c:b6:48:61:01:10:1d:5e:05:ba: + 55:94:2c:ae:59:6f:97:80:5d:6c:86:ec:9a:eb:15:45:44:e4: + 56:f8:75:ca:8a:45:32:f4:c7:e1:fa:f2:98:1c:91:d3:3f:e8: + 0e:c9:1b:fa:e1:79:99:67:0e:0d:6b:8a:ec:1a:2c:59:c4:34: + 04:8d:39:77:cd:b5:e9:60:5b:82:bf:34:ce:ed:c6:4f:3f:b4: + 5c:4d:8a:b4:f4:0a:04:12:a0:56:c1:e1:33:37:a1:54:87:48: + e9:81:c2:0f:8f:6f:d3:52:4c:4c:32:4c:6b:9f:3a:04:8f:77: + 5d:ad:dc:3d:2b:f2:c9:df:3c:60:5d:d8:fc:86:72:7c:3d:d0: + 84:4b:8c:df:26:43:fe:c0:cc:5b:e1:36:b3:3d:32:28:a3:ef: + 0c:20:d6:b1:50:39:d6:67:a9:8b:84:bc:92:34:eb:19:23:e8: + 10:8f:ea:bd:18:8c:93:27:3c:74:75:8e:58:04:fa:2a:74:44: + 7d:fc:4d:39:df:54:17:ba:78:e1:5d:6a:70:d3:7c:a2:80:81: + e6:19:51:91:c3:44:51:ec:bb:88:a9:53:e1:d7:a9:8c:28:f4: + 21:1c:42:51:09:b4:12:6d:a0:d6:25:09:85:c6:2a:0c:af:a7: + 58:e6:52:8b -----BEGIN CERTIFICATE----- -MIIDkDCCAngCAQIwDQYJKoZIhvcNAQEFBQAwgZAxCzAJBgNVBAYTAlVTMRAwDgYD -VQQIEwdNb250YW5hMRAwDgYDVQQHEwdCb3plbWFuMREwDwYDVQQKEwhTYXd0b290 -aDETMBEGA1UECxMKQ29uc3VsdGluZzEWMBQGA1UEAxMNd3d3Lnlhc3NsLmNvbTEd -MBsGCSqGSIb3DQEJARYOaW5mb0B5YXNzbC5jb20wHhcNMTExMDI0MTgyNzEzWhcN -MTQwNzIwMTgyNzEzWjCBijELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB01vbnRhbmEx -EDAOBgNVBAcTB0JvemVtYW4xDjAMBgNVBAoTBXlhU1NMMRAwDgYDVQQLEwdTdXBw -b3J0MRYwFAYDVQQDEw13d3cueWFzc2wuY29tMR0wGwYJKoZIhvcNAQkBFg5pbmZv -QHlhc3NsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMCVCOFX -QfJxbbfSRUEnAWXGRa7yvCQwuJXOL07W9hyIvHyf+6hnf/5cnFF194rKB+c1L4/h -vXvAL3yrZKgX/Mpde7rgIeVyLm8uhtiVc9qsG1O5Xz/XGQ0lT+FjY1GLC2Q/rUO4 -pRxcNLOuAKBjxfZ/C1loeHOmjBipAm2vwxkBLrgQ48bMQLRpo0YzaYduxLsXpvPo -3a1zvHsvIbX9ZlEMvVSz4W1fHLwjc9EJA4kU0hC5ZMMq0KGWSrzh1Bpbx6DAwWN4 -D0Q3MDKWgDIjlaF3uhPSl3PiXSXJag3DOWCktLBpQkIJ6dgIvDMgs1gip6rrxOHm -YYPF0pbf2dBPrdcCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAcU7TYt/MTPfNt25S -C2xu4L3CLQfXwLBuQx41vDABUPD/mSNsGBpBthHW1Blh/eR3lxw54VerxRVjdxE2 -XnTiJAsfQXitt4HntEBmgPBLkaBtqG49U9mLzirhC0Vlh6GWru4+iNUSH3gXrizF -c0TY3PSv2MyuTOEMvlWkmfdulsDIRYe/3FFX/55zN2oYnMP5Inr0sFK9/CEw+MX/ -Hod9raJaNfUiqLQKdjjmdrCYrxvsigpDdNKFNDeEB+H2I7Ip3qa2t0xXfpYGy6kW -JSk6Ay1VfaaMpPeegcmVtnzBSs6UZgzKiOvSCfVbGViC3yf9Z5V4twIG1adhve86 -/LJhzQ== +MIIEnjCCA4agAwIBAgIBATANBgkqhkiG9w0BAQUFADCBlDELMAkGA1UEBhMCVVMx +EDAOBgNVBAgMB01vbnRhbmExEDAOBgNVBAcMB0JvemVtYW4xETAPBgNVBAoMCFNh +d3Rvb3RoMRMwEQYDVQQLDApDb25zdWx0aW5nMRgwFgYDVQQDDA93d3cud29sZnNz +bC5jb20xHzAdBgkqhkiG9w0BCQEWEGluZm9Ad29sZnNzbC5jb20wHhcNMTQwNzEx +MTcyMDE0WhcNMTcwNDA2MTcyMDE0WjCBkDELMAkGA1UEBhMCVVMxEDAOBgNVBAgM +B01vbnRhbmExEDAOBgNVBAcMB0JvemVtYW4xEDAOBgNVBAoMB3dvbGZTU0wxEDAO +BgNVBAsMB1N1cHBvcnQxGDAWBgNVBAMMD3d3dy53b2xmc3NsLmNvbTEfMB0GCSqG +SIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAMCVCOFXQfJxbbfSRUEnAWXGRa7yvCQwuJXOL07W9hyIvHyf+6hn +f/5cnFF194rKB+c1L4/hvXvAL3yrZKgX/Mpde7rgIeVyLm8uhtiVc9qsG1O5Xz/X +GQ0lT+FjY1GLC2Q/rUO4pRxcNLOuAKBjxfZ/C1loeHOmjBipAm2vwxkBLrgQ48bM +QLRpo0YzaYduxLsXpvPo3a1zvHsvIbX9ZlEMvVSz4W1fHLwjc9EJA4kU0hC5ZMMq +0KGWSrzh1Bpbx6DAwWN4D0Q3MDKWgDIjlaF3uhPSl3PiXSXJag3DOWCktLBpQkIJ +6dgIvDMgs1gip6rrxOHmYYPF0pbf2dBPrdcCAwEAAaOB/DCB+TAdBgNVHQ4EFgQU +sxEyyZKYhOLJ+NA7bgNCyh8OjjwwgckGA1UdIwSBwTCBvoAUJ45nEXTDJh0/7TNj +s6TYHTDl6NWhgZqkgZcwgZQxCzAJBgNVBAYTAlVTMRAwDgYDVQQIDAdNb250YW5h +MRAwDgYDVQQHDAdCb3plbWFuMREwDwYDVQQKDAhTYXd0b290aDETMBEGA1UECwwK +Q29uc3VsdGluZzEYMBYGA1UEAwwPd3d3LndvbGZzc2wuY29tMR8wHQYJKoZIhvcN +AQkBFhBpbmZvQHdvbGZzc2wuY29tggkAmkFHzaEUYowwDAYDVR0TBAUwAwEB/zAN +BgkqhkiG9w0BAQUFAAOCAQEAPYxwBVtiS79stkhhARAdXgW6VZQsrllvl4BdbIbs +musVRUTkVvh1yopFMvTH4frymByR0z/oDskb+uF5mWcODWuK7BosWcQ0BI05d821 +6WBbgr80zu3GTz+0XE2KtPQKBBKgVsHhMzehVIdI6YHCD49v01JMTDJMa586BI93 +Xa3cPSvyyd88YF3Y/IZyfD3QhEuM3yZD/sDMW+E2sz0yKKPvDCDWsVA51mepi4S8 +kjTrGSPoEI/qvRiMkyc8dHWOWAT6KnREffxNOd9UF7p44V1qcNN8ooCB5hlRkcNE +Uey7iKlT4depjCj0IRxCUQm0Em2g1iUJhcYqDK+nWOZSiw== -----END CERTIFICATE----- Certificate: Data: Version: 3 (0x2) Serial Number: - e9:d0:a7:5f:79:25:f4:3c - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.yassl.com/emailAddress=info@yassl.com + 9a:41:47:cd:a1:14:62:8c + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.wolfssl.com/emailAddress=info@wolfssl.com Validity - Not Before: Oct 24 18:18:15 2011 GMT - Not After : Jul 20 18:18:15 2014 GMT - Subject: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.yassl.com/emailAddress=info@yassl.com + Not Before: Jul 11 03:20:08 2014 GMT + Not After : Apr 6 03:20:08 2017 GMT + Subject: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.wolfssl.com/emailAddress=info@wolfssl.com Subject Public Key Info: Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): + Public-Key: (2048 bit) + Modulus: 00:bf:0c:ca:2d:14:b2:1e:84:42:5b:cd:38:1f:4a: f2:4d:75:10:f1:b6:35:9f:df:ca:7d:03:98:d3:ac: de:03:66:ee:2a:f1:d8:b0:7d:6e:07:54:0b:10:98: @@ -104,54 +119,55 @@ 36:79 Exponent: 65537 (0x10001) X509v3 extensions: - X509v3 Subject Key Identifier: + X509v3 Subject Key Identifier: 27:8E:67:11:74:C3:26:1D:3F:ED:33:63:B3:A4:D8:1D:30:E5:E8:D5 - X509v3 Authority Key Identifier: + X509v3 Authority Key Identifier: keyid:27:8E:67:11:74:C3:26:1D:3F:ED:33:63:B3:A4:D8:1D:30:E5:E8:D5 - DirName:/C=US/ST=Montana/L=Bozeman/O=Sawtooth/OU=Consulting/CN=www.yassl.com/emailAddress=info@yassl.com - serial:E9:D0:A7:5F:79:25:F4:3C + DirName:/C=US/ST=Montana/L=Bozeman/O=Sawtooth/OU=Consulting/CN=www.wolfssl.com/emailAddress=info@wolfssl.com + serial:9A:41:47:CD:A1:14:62:8C - X509v3 Basic Constraints: + X509v3 Basic Constraints: CA:TRUE Signature Algorithm: sha1WithRSAEncryption - 5f:86:14:f4:51:8b:bc:a5:4e:30:da:5e:ac:9a:f8:6c:d9:26: - 4b:93:f9:e3:1c:89:6f:9e:ee:b3:9d:77:3e:89:20:76:a3:e6: - e8:86:15:21:db:e2:33:b2:34:d5:d0:9f:f3:c1:a4:87:92:5c: - f9:d1:ff:30:2f:8e:03:bc:b3:3c:0c:32:a3:90:5f:1a:90:1e: - af:9d:f3:9e:d7:07:02:a9:7d:27:66:63:2f:af:18:d7:ac:18: - 98:8c:83:8f:38:f3:0b:ac:36:10:75:fb:ca:76:13:50:5b:02: - 8f:73:bf:e3:a0:ee:83:52:25:54:ce:26:ce:9c:bd:2f:79:ab: - 1b:60:b8:92:f1:03:c0:fc:3b:08:d9:c0:ad:d5:72:08:25:80: - 61:2d:dc:9f:a7:83:62:07:47:e0:07:4c:4b:07:30:04:a9:87: - 1c:55:7f:07:12:d0:cb:42:5d:cb:cf:66:01:1a:17:ee:f9:0f: - 60:b7:db:6f:68:e5:4e:41:62:6e:d3:6f:60:4f:4b:27:de:cf: - 18:07:f1:13:5d:cb:3f:a9:25:44:da:52:5c:c8:04:e1:56:12: - f5:2a:90:4e:d1:e2:af:01:b5:23:a1:ec:31:da:7b:63:69:c4: - b8:f3:e7:ce:a1:3d:c0:db:6d:f3:b2:d9:46:c8:9f:c3:b8:70: - 5a:1f:7f:ca + 79:78:0c:6d:79:88:91:fc:3a:15:9c:f9:27:62:16:f0:21:1f: + fa:7d:3f:a2:a8:32:1e:f7:f2:11:a9:74:16:74:5e:dc:18:ca: + f0:00:2a:d5:03:06:26:30:f1:47:83:fd:32:6e:fc:ed:aa:4f: + 7d:0c:63:60:31:2f:7c:0c:bf:99:66:87:ed:27:08:86:2d:c4: + 33:e8:98:23:1c:fe:a3:db:9a:49:4e:fc:5a:42:ef:71:c3:3f: + ad:dc:4a:a8:d2:a3:1d:09:ac:33:04:7b:86:f3:6d:00:59:a3: + c8:db:d1:3c:73:f6:0e:90:d6:5e:49:e0:bf:36:63:08:7b:a5: + b0:8f:35:3b:56:8c:11:35:49:04:1c:d0:e7:ba:56:c5:0d:0a: + 91:8d:d6:b7:62:19:34:12:52:4c:d2:6d:7c:c5:3d:0f:18:81: + 54:cb:f6:3c:e5:84:d2:d6:71:15:ec:1a:34:0b:f0:a0:21:74: + 43:c8:a3:b0:df:d9:67:da:e2:ad:93:48:f8:a0:87:bd:79:14: + e0:62:0a:df:f7:31:2e:31:7b:d1:32:2a:0a:fe:5d:14:ef:d9: + 64:50:e4:83:91:bc:70:0d:d7:88:8d:d9:bc:84:0e:c5:1a:b3: + bf:64:02:4e:51:91:a4:a2:85:15:83:af:f0:5b:9b:28:49:5f: + b2:b3:03:d8 -----BEGIN CERTIFICATE----- -MIIEnjCCA4agAwIBAgIJAOnQp195JfQ8MA0GCSqGSIb3DQEBBQUAMIGQMQswCQYD -VQQGEwJVUzEQMA4GA1UECBMHTW9udGFuYTEQMA4GA1UEBxMHQm96ZW1hbjERMA8G -A1UEChMIU2F3dG9vdGgxEzARBgNVBAsTCkNvbnN1bHRpbmcxFjAUBgNVBAMTDXd3 -dy55YXNzbC5jb20xHTAbBgkqhkiG9w0BCQEWDmluZm9AeWFzc2wuY29tMB4XDTEx -MTAyNDE4MTgxNVoXDTE0MDcyMDE4MTgxNVowgZAxCzAJBgNVBAYTAlVTMRAwDgYD -VQQIEwdNb250YW5hMRAwDgYDVQQHEwdCb3plbWFuMREwDwYDVQQKEwhTYXd0b290 -aDETMBEGA1UECxMKQ29uc3VsdGluZzEWMBQGA1UEAxMNd3d3Lnlhc3NsLmNvbTEd -MBsGCSqGSIb3DQEJARYOaW5mb0B5YXNzbC5jb20wggEiMA0GCSqGSIb3DQEBAQUA -A4IBDwAwggEKAoIBAQC/DMotFLIehEJbzTgfSvJNdRDxtjWf38p9A5jTrN4DZu4q -8diwfW4HVAsQmCFNgMsSIOfMT95FfclydzLqypC7aVIQAy+o85XF8YtiVhvvZ2+k -EEGVrQqb46XAsNJwdlAwW6joCCx87aeieo04KRysx+3yfJWwlYJ9SVw4zXcl772A -dVOUPD3KY1ufFbXTHRMvGdE823Y6zLh9yeXC19pAb9gh3HMbQi1TnP4a/H2rejY/ -mN6EfAVnzmoUOIep8Yy1aMtof3EgK/WgY/VWL6Mm0rdvsVoX1ziZCP6TWG/+wxNJ -CBYLp01nAFIxZyNOmO1RRR25BNkL7Ngos0u97TZ5AgMBAAGjgfgwgfUwHQYDVR0O -BBYEFCeOZxF0wyYdP+0zY7Ok2B0w5ejVMIHFBgNVHSMEgb0wgbqAFCeOZxF0wyYd -P+0zY7Ok2B0w5ejVoYGWpIGTMIGQMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHTW9u -dGFuYTEQMA4GA1UEBxMHQm96ZW1hbjERMA8GA1UEChMIU2F3dG9vdGgxEzARBgNV -BAsTCkNvbnN1bHRpbmcxFjAUBgNVBAMTDXd3dy55YXNzbC5jb20xHTAbBgkqhkiG -9w0BCQEWDmluZm9AeWFzc2wuY29tggkA6dCnX3kl9DwwDAYDVR0TBAUwAwEB/zAN -BgkqhkiG9w0BAQUFAAOCAQEAX4YU9FGLvKVOMNperJr4bNkmS5P54xyJb57us513 -PokgdqPm6IYVIdviM7I01dCf88Gkh5Jc+dH/MC+OA7yzPAwyo5BfGpAer53zntcH -Aql9J2ZjL68Y16wYmIyDjzjzC6w2EHX7ynYTUFsCj3O/46Dug1IlVM4mzpy9L3mr -G2C4kvEDwPw7CNnArdVyCCWAYS3cn6eDYgdH4AdMSwcwBKmHHFV/BxLQy0Jdy89m -ARoX7vkPYLfbb2jlTkFibtNvYE9LJ97PGAfxE13LP6klRNpSXMgE4VYS9SqQTtHi -rwG1I6HsMdp7Y2nEuPPnzqE9wNtt87LZRsifw7hwWh9/yg== +MIIEqjCCA5KgAwIBAgIJAJpBR82hFGKMMA0GCSqGSIb3DQEBBQUAMIGUMQswCQYD +VQQGEwJVUzEQMA4GA1UECAwHTW9udGFuYTEQMA4GA1UEBwwHQm96ZW1hbjERMA8G +A1UECgwIU2F3dG9vdGgxEzARBgNVBAsMCkNvbnN1bHRpbmcxGDAWBgNVBAMMD3d3 +dy53b2xmc3NsLmNvbTEfMB0GCSqGSIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTAe +Fw0xNDA3MTEwMzIwMDhaFw0xNzA0MDYwMzIwMDhaMIGUMQswCQYDVQQGEwJVUzEQ +MA4GA1UECAwHTW9udGFuYTEQMA4GA1UEBwwHQm96ZW1hbjERMA8GA1UECgwIU2F3 +dG9vdGgxEzARBgNVBAsMCkNvbnN1bHRpbmcxGDAWBgNVBAMMD3d3dy53b2xmc3Ns +LmNvbTEfMB0GCSqGSIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAL8Myi0Ush6EQlvNOB9K8k11EPG2NZ/fyn0D +mNOs3gNm7irx2LB9bgdUCxCYIU2AyxIg58xP3kV9yXJ3MurKkLtpUhADL6jzlcXx +i2JWG+9nb6QQQZWtCpvjpcCw0nB2UDBbqOgILHztp6J6jTgpHKzH7fJ8lbCVgn1J +XDjNdyXvvYB1U5Q8PcpjW58VtdMdEy8Z0TzbdjrMuH3J5cLX2kBv2CHccxtCLVOc +/hr8fat6Nj+Y3oR8BWfOahQ4h6nxjLVoy2h/cSAr9aBj9VYvoybSt2+xWhfXOJkI +/pNYb/7DE0kIFgunTWcAUjFnI06Y7VFFHbkE2Qvs2CizS73tNnkCAwEAAaOB/DCB ++TAdBgNVHQ4EFgQUJ45nEXTDJh0/7TNjs6TYHTDl6NUwgckGA1UdIwSBwTCBvoAU +J45nEXTDJh0/7TNjs6TYHTDl6NWhgZqkgZcwgZQxCzAJBgNVBAYTAlVTMRAwDgYD +VQQIDAdNb250YW5hMRAwDgYDVQQHDAdCb3plbWFuMREwDwYDVQQKDAhTYXd0b290 +aDETMBEGA1UECwwKQ29uc3VsdGluZzEYMBYGA1UEAwwPd3d3LndvbGZzc2wuY29t +MR8wHQYJKoZIhvcNAQkBFhBpbmZvQHdvbGZzc2wuY29tggkAmkFHzaEUYowwDAYD +VR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAeXgMbXmIkfw6FZz5J2IW8CEf ++n0/oqgyHvfyEal0FnRe3BjK8AAq1QMGJjDxR4P9Mm787apPfQxjYDEvfAy/mWaH +7ScIhi3EM+iYIxz+o9uaSU78WkLvccM/rdxKqNKjHQmsMwR7hvNtAFmjyNvRPHP2 +DpDWXkngvzZjCHulsI81O1aMETVJBBzQ57pWxQ0KkY3Wt2IZNBJSTNJtfMU9DxiB +VMv2POWE0tZxFewaNAvwoCF0Q8ijsN/ZZ9rirZNI+KCHvXkU4GIK3/cxLjF70TIq +Cv5dFO/ZZFDkg5G8cA3XiI3ZvIQOxRqzv2QCTlGRpKKFFYOv8FubKElfsrMD2A== +-----END CERTIFICATE----- diff -Nru percona-xtrabackup-2.2.3/extra/yassl/certs/server-keyEnc.pem percona-xtrabackup-2.3.7/extra/yassl/certs/server-keyEnc.pem --- percona-xtrabackup-2.2.3/extra/yassl/certs/server-keyEnc.pem 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/certs/server-keyEnc.pem 2017-02-27 07:47:02.000000000 +0000 @@ -1,30 +1,30 @@ -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED -DEK-Info: DES-CBC,08132C1FFF5BC8CC +DEK-Info: DES-CBC,136C7D8A69656668 -W+krChiFlNU+koE0Bep+U45OG4V4IFZv67ex6yJHgcsPd+HQ692A/h+5dYc8rdlW -2LDgSODHHIMTt6RVJDxXxXs3qFmJQbnVXeXxV209X8EfaRarh+yiMKeUP6K8hIvj -+IYRma6iKOs+d4KlcZZudGs2f/x8nhxXbmQtrLhGd4h91mnJk2sKmiz7UkUy6Qng -gOHnT2dfF4Qk2ZYsjisRHjpWZiqh40GO1LuTgUjZoH+LGhMwMwOAE6+ss5xa+yE+ -Xd9Yljm0/QW68JILkCJQjLDRvPGxDJyvYq6TT/kSElsRlI/AuRrZH1YVD3hn/xjx -tDoEB+JEbH6iu9ne2srxnGSKLzoUbb4XPaCjLIW9BJf7oANmmFQpZZQiRTyIUVWi -IE5hJciqF7ra7IwfZAW/PeWGXpzNOVN9QAvyAMsmvUCzJdxd1ySUatjhZ+mSFYGk -rDVtyrgt4ZQgV0EdJV0Yn1ZWMOk1qEKXT0JAnI+9S6Y+QEdwXmdz3xlVuq61Jvub -iJUVepnD/1QeFfWy8JwlscWpWFrkr569f3SNG+FGb6fufnUP7K6sX3urj+pj1QET -f9NmmvLBsVsbj1Egg3wnxbVHIUPky64LY04wtNJaAwhuG6mKCvaClKYMTmTCyrzP -aRwghhMQ3yHUbo2A1ZppYsXXg8lX30eW+5O77N9Q3xfP0phODHXsnXhBH09ml1JQ -MmiCaL5n6sIVcjtFmN/kyaEuz/1VrBSaDCPeW88n61UXUidXrGOZN/2c/2xFir8B -2rdE82lQLl07SJxzQQ6aJVvrc5tnbV/ENDySS5dG6Yl/w89/nuu0RFHmAweKqfGC -8m0XOkmonIk6h3YT7XrkE0b/2jkf1mMaMKrGGfRmxqNt1nGxMCJHAO/Sn9v+I9rU -W7HCZ04RTnRp1BXcqDxdwlveDKJRVfiKOSSEOpEXXlexS5R1vikmxrCwK5YVUTkT -3tgahVtHJkFHnBHBzXyHUDwWahxZaU9TO43z0JFxs0zINWUWppldf0oyWjP1FSrI -a9tXBs7aoykUY9Av9K0p4UJJU005qzD/tuegZFX34wRETJO0BJnlZHTTZSqLSVX+ -KZg4nPq8Xii1VHta3tgw7up2z1tpepsBerTsRQ1+IDpxLaIxgt9am0hXVTiMLex/ -DD9UvQC/eBUmpmWraK/Mqeq/UrPl+lmeoXsG6LWIvEp9d19rJ/3OhIJf2pDh9dC8 -NzJoNP9qOrDajAwzeeF5dbQxCaG+X8am9s4wryC0p+NrQ0tzv8efey0zBodDIOgo -F1G7+ADgHy+V565q8sdL52xx0xB9Ty5p9IOfOUbxa3K65TJf/I/QAQjl4LyTbkfr -kzpYAG2uF55EB3Eq3aMrj47pzZy0ELXXN2qYJ9Oelgl+h6MzYbmd+Wm+A2Cofv3u -7ANAyjAYN7/Lo3lTFAt7sXAXGKnqw62JNSSMkIqZVrG5dn7Jxj5AJCVyYxTrm6Y+ -DDcblX47XrWxVoVJN/dLJZ8FzWs4o/8w9Yn8U54Ci7F0g+j2f+OpDy9PGFYT9pKw -xWG8chkYE6QPilEYvdi26ZnZ3u236q9PMtyRP87NmBN2sLkj/rbBTzBxWIaGS+Mt +jvNTyPaztxPIoAzbdmZnD0Zw2+60tMxNc0GMHNmeOyG25aHP/dT+TWiKFpFVkkkY +uoCIhYUyw7gmpw+CnRJwWd+ans4nrvAjwy5oWJvarvsyUpjqvnPoIlAqd+d4TDKN +eESzcI76+gHdisAtCrQD+fGqgTZhli5TgDbnpasL/QnY2qDlutvakkVw7gPXe156 +2Phy8WN+efr65J6wt3K/dj7Datl9u4JeHQK81gYyWBVX+EagEjPGDzkFQCj9Z0q7 +8K3iB5GW1JAqJS0IfZPB40AnSTF/n1TL1SN3qfU3l7hTGNrx9o7580bgDEoAR7pI +F8eZlS15KHtZmh11AnU1KTKZ6kmgnNqeMTGMN6N0ct2wMKW1dV87eTDlF0oiR2ol +XwtFgKmrIjfpmzkdWjbJmWnGMjD56KdiFZga/ZyKMsPrVoYLgfJEpn36iQspfygx +HCGNTf0PjIsjEWU0WyQiF86t+c45W3wNFsv/AxVyfMl+su02yrd6u2ecuQDir3Cs +b2k8IKtQgVe/NIpEWLKuiHG5oedIPPQyDYK5uq+gHxCGeOoKnWlsWFEHZRiza4X5 +tbgTrJB8Sw0ENWrvVGGmQZN4pSImlsMwzQ2qik5CQ00N1b3+56/obn0z75I3bUSb +tC5g8DRjl6oclAenNgh/MYMT287y5W2dD4npxHcekX4O3J2CDXNfg4vV2j5GRxtg +LVJdYE2p7bpYePCDHrYng8b9ubBprx0CrEnkIvvtUjzNPf6VDL0+MBKl+XgR2/nz +iRqTuZnlGGOyM+KYDwXpgwfs/HfvFGksxTAlO/40GkGh+WGPaIoNyCK0SgQKhyb4 +JIkR0vd2/yLg3lWMJrGwh7A0Gm07Z/781oURP3uWd+PaCOgGcd5ipcAjcEyuxNly +AthipWqmQWUcbf6Z2N9j3OA22Hv2Uzk8HSfi9VOZtL9svdEEZ0NnOekJgnc6stQp +bXiknlK/T5WdrWxSyCfgUq68Vf6DFfIRAVuFdJ3WHT2wVXHrDfft6D+Ne/XCxPoE +8zGmkyusaph33UHQ1oNyUbLbwcDCDSmOo8gYoedD3IwxtMA3wJRugomqosItwV8X +vkgmcy8eSE/+gZUxJEN2gnLcfKFhCkC80J6oFhmoDD6vuUnPHcFdKZgVPw2rzPk5 +Vb1kX+gpORplYmKpq1vz/ujscL4T0TmYLz02hkIS4edpW55ncTTv7JWefpRiTB1J +RB3td3me4htqR+YIDWJ+emrOmqsCG2WvpAS+MTw2mj1jYk9LL/ZYobTjSCEWmuwT +yVK6m303irR7HQDauxhslRFgoK21w63viOyj5NKIU1gQtaAANGDxcgORC1XLjjgt +oNutSQA+7P42vfHSHK4cnTBXl6V32H/GyVpdHQOZqSrqIjgLmUZodSmRPROxosZF +a46B1O7m/rJFxkiKW4vod+/WqjoE0Hhfrb8rRrkRjzGeCqqSSnQ3vrunVkvF8hlA +b6FOv4ZBJL4piC1GKH+rscqke9NEiDqXN8C3iYz86jbck/Ha21yUS8T3X7N52sg+ +B3AmOGnLK6BebYeto9vZxQjacChJZSixSxLV+l9/nVQ0+mW42azHdzk0ru59TGAj -----END RSA PRIVATE KEY----- diff -Nru percona-xtrabackup-2.2.3/extra/yassl/CMakeLists.txt percona-xtrabackup-2.3.7/extra/yassl/CMakeLists.txt --- percona-xtrabackup-2.2.3/extra/yassl/CMakeLists.txt 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/CMakeLists.txt 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -33,7 +33,6 @@ ADD_CONVENIENCE_LIBRARY(yassl ${YASSL_SOURCES}) RESTRICT_SYMBOL_EXPORTS(yassl) -INSTALL_DEBUG_SYMBOLS(yassl) IF(MSVC) INSTALL_DEBUG_TARGET(yassl DESTINATION ${INSTALL_LIBDIR}/debug) ENDIF() diff -Nru percona-xtrabackup-2.2.3/extra/yassl/examples/client/client.cpp percona-xtrabackup-2.3.7/extra/yassl/examples/client/client.cpp --- percona-xtrabackup-2.2.3/extra/yassl/examples/client/client.cpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/examples/client/client.cpp 2017-02-27 07:47:02.000000000 +0000 @@ -18,6 +18,10 @@ /* client.cpp */ +// takes an optional command line argument of cipher list to make scripting +// easier + + #include "../../testsuite/test.hpp" //#define TEST_RESUME @@ -73,11 +77,16 @@ #ifdef NON_BLOCKING tcp_set_nonblocking(sockfd); #endif - SSL_METHOD* method = TLSv1_client_method(); SSL_CTX* ctx = SSL_CTX_new(method); set_certs(ctx); + if (argc >= 2) { + printf("setting cipher list to %s\n", argv[1]); + if (SSL_CTX_set_cipher_list(ctx, argv[1]) != SSL_SUCCESS) { + ClientError(ctx, NULL, sockfd, "set_cipher_list error\n"); + } + } SSL* ssl = SSL_new(ctx); SSL_set_fd(ssl, sockfd); diff -Nru percona-xtrabackup-2.2.3/extra/yassl/examples/server/server.cpp percona-xtrabackup-2.3.7/extra/yassl/examples/server/server.cpp --- percona-xtrabackup-2.2.3/extra/yassl/examples/server/server.cpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/examples/server/server.cpp 2017-02-27 07:47:02.000000000 +0000 @@ -18,6 +18,9 @@ /* server.cpp */ +// takes 2 optional command line argument to make scripting +// if the first command line argument is 'n' client auth is disabled +// if the second command line argument is 'd' DSA certs are used instead of RSA #include "../../testsuite/test.hpp" @@ -69,6 +72,9 @@ char** argv = 0; set_args(argc, argv, *static_cast(args)); +#ifdef SERVER_READY_FILE + set_file_ready("server_ready", *static_cast(args)); +#endif tcp_accept(sockfd, clientfd, *static_cast(args)); tcp_close(sockfd); @@ -77,8 +83,21 @@ SSL_CTX* ctx = SSL_CTX_new(method); //SSL_CTX_set_cipher_list(ctx, "RC4-SHA:RC4-MD5"); - SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, 0); - set_serverCerts(ctx); + + // should we disable client auth + if (argc >= 2 && argv[1][0] == 'n') + printf("disabling client auth\n"); + else + SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, 0); + + // are we using DSA certs + if (argc >= 3 && argv[2][0] == 'd') { + printf("using DSA certs\n"); + set_dsaServerCerts(ctx); + } + else { + set_serverCerts(ctx); + } DH* dh = set_tmpDH(ctx); SSL* ssl = SSL_new(ctx); diff -Nru percona-xtrabackup-2.2.3/extra/yassl/include/buffer.hpp percona-xtrabackup-2.3.7/extra/yassl/include/buffer.hpp --- percona-xtrabackup-2.2.3/extra/yassl/include/buffer.hpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/include/buffer.hpp 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -48,7 +48,11 @@ struct NoCheck { - void check(uint, uint); + int check(uint, uint); +}; + +struct Check { + int check(uint, uint); }; /* input_buffer operates like a smart c style array with a checking option, @@ -60,11 +64,13 @@ * write to the buffer bulk wise and have the correct size */ -class input_buffer : public NoCheck { +class input_buffer : public Check { uint size_; // number of elements in buffer uint current_; // current offset position in buffer byte* buffer_; // storage for buffer byte* end_; // end of storage marker + int error_; // error number + byte zero_; // for returning const reference to zero byte public: input_buffer(); @@ -93,6 +99,10 @@ uint get_remaining() const; + int get_error() const; + + void set_error(); + void set_current(uint i); // read only access through [], advance current @@ -103,7 +113,7 @@ bool eof(); // peek ahead - byte peek() const; + byte peek(); // write function, should use at/near construction void assign(const byte* t, uint s); diff -Nru percona-xtrabackup-2.2.3/extra/yassl/include/openssl/ssl.h percona-xtrabackup-2.3.7/extra/yassl/include/openssl/ssl.h --- percona-xtrabackup-2.2.3/extra/yassl/include/openssl/ssl.h 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/include/openssl/ssl.h 2017-02-27 07:47:02.000000000 +0000 @@ -34,7 +34,7 @@ #include "rsa.h" -#define YASSL_VERSION "2.3.0" +#define YASSL_VERSION "2.3.7" #if defined(__cplusplus) diff -Nru percona-xtrabackup-2.2.3/extra/yassl/include/yassl_int.hpp percona-xtrabackup-2.3.7/extra/yassl/include/yassl_int.hpp --- percona-xtrabackup-2.2.3/extra/yassl/include/yassl_int.hpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/include/yassl_int.hpp 2017-02-27 07:47:02.000000000 +0000 @@ -107,6 +107,25 @@ }; +// track received messages to explicitly disallow duplicate messages +struct RecvdMessages { + uint8 gotClientHello_; + uint8 gotServerHello_; + uint8 gotCert_; + uint8 gotServerKeyExchange_; + uint8 gotCertRequest_; + uint8 gotServerHelloDone_; + uint8 gotCertVerify_; + uint8 gotClientKeyExchange_; + uint8 gotFinished_; + RecvdMessages() : gotClientHello_(0), gotServerHello_(0), gotCert_(0), + gotServerKeyExchange_(0), gotCertRequest_(0), + gotServerHelloDone_(0), gotCertVerify_(0), + gotClientKeyExchange_(0), gotFinished_(0) + {} +}; + + // combines all states class States { RecordLayerState recordLayer_; @@ -115,6 +134,7 @@ ServerState serverState_; ConnectState connectState_; AcceptState acceptState_; + RecvdMessages recvdMessages_; char errorString_[MAX_ERROR_SZ]; YasslError what_; public: @@ -137,6 +157,7 @@ AcceptState& UseAccept(); char* useString(); void SetError(YasslError); + int SetMessageRecvd(HandShakeType); private: States(const States&); // hide copy States& operator=(const States&); // and assign diff -Nru percona-xtrabackup-2.2.3/extra/yassl/README percona-xtrabackup-2.3.7/extra/yassl/README --- percona-xtrabackup-2.2.3/extra/yassl/README 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/README 2017-02-27 07:47:02.000000000 +0000 @@ -12,15 +12,50 @@ *** end Note *** -yaSSL Release notes, version 2.3.0 (12/5/2013) +yaSSL Release notes, version 2.3.7 (12/10/2014) + This release of yaSSL fixes the potential to process duplicate handshake + messages by explicitly marking/checking received handshake messages. - This release of yaSSL updates asm for newer GCC versions. +yaSSL Release notes, version 2.3.6 (11/25/2014) + + This release of yaSSL fixes some valgrind warnings/errors including + uninitialized reads and off by one index errors induced from fuzzing + the handshake. These were reported by Oracle. + +yaSSL Release notes, version 2.3.5 (9/29/2014) + + This release of yaSSL fixes an RSA Padding check vulnerability reported by + Intel Security Advanced Threat Research team + +See normal build instructions below under 1.0.6. +See libcurl build instructions below under 1.3.0 and note in 1.5.8. + + +yaSSL Release notes, version 2.3.4 (8/15/2014) + + This release of yaSSL adds checking to the input_buffer class itself. + +See normal build instructions below under 1.0.6. +See libcurl build instructions below under 1.3.0 and note in 1.5.8. + + +yaSSL Release notes, version 2.3.2 (7/25/2014) + + This release of yaSSL updates test certs. + +See normal build instructions below under 1.0.6. +See libcurl build instructions below under 1.3.0 and note in 1.5.8. + + +*****************yaSSL Release notes, version 2.3.0 (12/5/2013) + + This release of yaSSL updates asm for newer GCC versions. See normal build instructions below under 1.0.6. See libcurl build instructions below under 1.3.0 and note in 1.5.8. -*****************yaSSL Release notes, version 2.2.3b (4/23/2013) +*****************yaSSL Release notes, version 2.2.3 (4/23/2013) This release of yaSSL updates the test certificates as they were expired diff -Nru percona-xtrabackup-2.2.3/extra/yassl/src/buffer.cpp percona-xtrabackup-2.3.7/extra/yassl/src/buffer.cpp --- percona-xtrabackup-2.2.3/extra/yassl/src/buffer.cpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/src/buffer.cpp 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -34,8 +34,19 @@ -void NoCheck::check(uint, uint) +/* return 0 on check success, always true for NoCheck policy */ +int NoCheck::check(uint, uint) { + return 0; +} + +/* return 0 on check success */ +int Check::check(uint i, uint max) +{ + if (i < max) + return 0; + + return -1; } @@ -50,18 +61,20 @@ input_buffer::input_buffer() - : size_(0), current_(0), buffer_(0), end_(0) + : size_(0), current_(0), buffer_(0), end_(0), error_(0), zero_(0) {} input_buffer::input_buffer(uint s) - : size_(0), current_(0), buffer_(NEW_YS byte[s]), end_(buffer_ + s) + : size_(0), current_(0), buffer_(NEW_YS byte[s]), end_(buffer_ + s), + error_(0), zero_(0) {} // with assign input_buffer::input_buffer(uint s, const byte* t, uint len) - : size_(0), current_(0), buffer_(NEW_YS byte[s]), end_(buffer_ + s) + : size_(0), current_(0), buffer_(NEW_YS byte[s]), end_(buffer_ + s), + error_(0), zero_(0) { assign(t, len); } @@ -76,8 +89,10 @@ // users can pass defualt zero length buffer and then allocate void input_buffer::allocate(uint s) { - buffer_ = NEW_YS byte[s]; - end_ = buffer_ + s; + if (error_ == 0) { + buffer_ = NEW_YS byte[s]; + end_ = buffer_ + s; + } } @@ -92,40 +107,67 @@ // if you know the size before the write use assign() void input_buffer::add_size(uint i) { - check(size_ + i-1, get_capacity()); - size_ += i; + if (error_ == 0 && check(size_ + i-1, get_capacity()) == 0) + size_ += i; + else + error_ = -1; } uint input_buffer::get_capacity() const { - return (uint) (end_ - buffer_); + if (error_ == 0) + return end_ - buffer_; + + return 0; } uint input_buffer::get_current() const { - return current_; + if (error_ == 0) + return current_; + + return 0; } uint input_buffer::get_size() const { - return size_; + if (error_ == 0) + return size_; + + return 0; } uint input_buffer::get_remaining() const { - return size_ - current_; + if (error_ == 0) + return size_ - current_; + + return 0; +} + + +int input_buffer::get_error() const +{ + return error_; +} + + +void input_buffer::set_error() +{ + error_ = -1; } void input_buffer::set_current(uint i) { - if (i) - check(i - 1, size_); - current_ = i; + if (error_ == 0 && i && check(i - 1, size_) == 0) + current_ = i; + else + error_ = -1; } @@ -133,40 +175,59 @@ // user passes in AUTO index for ease of use const byte& input_buffer::operator[](uint i) { - check(current_, size_); - return buffer_[current_++]; + if (error_ == 0 && check(current_, size_) == 0) + return buffer_[current_++]; + + error_ = -1; + return zero_; } // end of input test bool input_buffer::eof() { + if (error_ != 0) + return true; + return current_ >= size_; } // peek ahead -byte input_buffer::peek() const +byte input_buffer::peek() { - return buffer_[current_]; + if (error_ == 0 && check(current_, size_) == 0) + return buffer_[current_]; + + error_ = -1; + return 0; } // write function, should use at/near construction void input_buffer::assign(const byte* t, uint s) { - check(current_, get_capacity()); - add_size(s); - memcpy(&buffer_[current_], t, s); + if (t && error_ == 0 && check(current_, get_capacity()) == 0) { + add_size(s); + if (error_ == 0) { + memcpy(&buffer_[current_], t, s); + return; // success + } + } + + error_ = -1; } // use read to query input, adjusts current void input_buffer::read(byte* dst, uint length) { - check(current_ + length - 1, size_); - memcpy(dst, &buffer_[current_], length); - current_ += length; + if (dst && error_ == 0 && check(current_ + length - 1, size_) == 0) { + memcpy(dst, &buffer_[current_], length); + current_ += length; + } else { + error_ = -1; + } } diff -Nru percona-xtrabackup-2.2.3/extra/yassl/src/handshake.cpp percona-xtrabackup-2.3.7/extra/yassl/src/handshake.cpp --- percona-xtrabackup-2.2.3/extra/yassl/src/handshake.cpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/src/handshake.cpp 2017-02-27 07:47:02.000000000 +0000 @@ -522,7 +522,7 @@ // some clients still send sslv2 client hello void ProcessOldClientHello(input_buffer& input, SSL& ssl) { - if (input.get_remaining() < 2) { + if (input.get_error() || input.get_remaining() < 2) { ssl.SetError(bad_input); return; } @@ -549,20 +549,24 @@ byte len[2]; - input.read(len, sizeof(len)); + len[0] = input[AUTO]; + len[1] = input[AUTO]; ato16(len, ch.suite_len_); - input.read(len, sizeof(len)); + len[0] = input[AUTO]; + len[1] = input[AUTO]; uint16 sessionLen; ato16(len, sessionLen); ch.id_len_ = sessionLen; - input.read(len, sizeof(len)); + len[0] = input[AUTO]; + len[1] = input[AUTO]; uint16 randomLen; ato16(len, randomLen); - if (ch.suite_len_ > MAX_SUITE_SZ || sessionLen > ID_LEN || - randomLen > RAN_LEN) { + if (input.get_error() || ch.suite_len_ > MAX_SUITE_SZ || + ch.suite_len_ > input.get_remaining() || + sessionLen > ID_LEN || randomLen > RAN_LEN) { ssl.SetError(bad_input); return; } @@ -580,13 +584,12 @@ ch.suite_len_ = j; if (ch.id_len_) - input.read(ch.session_id_, ch.id_len_); + input.read(ch.session_id_, ch.id_len_); // id_len_ from sessionLen if (randomLen < RAN_LEN) memset(ch.random_, 0, RAN_LEN - randomLen); input.read(&ch.random_[RAN_LEN - randomLen], randomLen); - ch.Process(input, ssl); } @@ -783,6 +786,9 @@ ssl.verifyState(hdr); } + if (ssl.GetError()) + return 0; + // make sure we have enough input in buffer to process this record if (needHdr || hdr.length_ > buffer.get_remaining()) { // put header in front for next time processing @@ -795,6 +801,9 @@ while (buffer.get_current() < hdr.length_ + RECORD_HEADER + offset) { // each message in record, can be more than 1 if not encrypted + if (ssl.GetError()) + return 0; + if (ssl.getSecurity().get_parms().pending_ == false) { // cipher on // sanity check for malicious/corrupted/illegal input if (buffer.get_remaining() < hdr.length_) { diff -Nru percona-xtrabackup-2.2.3/extra/yassl/src/ssl.cpp percona-xtrabackup-2.3.7/extra/yassl/src/ssl.cpp --- percona-xtrabackup-2.2.3/extra/yassl/src/ssl.cpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/src/ssl.cpp 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -790,7 +790,10 @@ strncpy(name, path, MAX_PATH - 1 - HALF_PATH); strncat(name, "/", 1); strncat(name, entry->d_name, HALF_PATH); - if (stat(name, &buf) < 0) return SSL_BAD_STAT; + if (stat(name, &buf) < 0) { + closedir(dir); + return SSL_BAD_STAT; + } if (S_ISREG(buf.st_mode)) ret = read_file(ctx, name, SSL_FILETYPE_PEM, CA); diff -Nru percona-xtrabackup-2.2.3/extra/yassl/src/yassl_imp.cpp percona-xtrabackup-2.3.7/extra/yassl/src/yassl_imp.cpp --- percona-xtrabackup-2.2.3/extra/yassl/src/yassl_imp.cpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/src/yassl_imp.cpp 2017-02-27 07:47:02.000000000 +0000 @@ -220,18 +220,29 @@ // read PreMaster secret and decrypt, server side void EncryptedPreMasterSecret::read(SSL& ssl, input_buffer& input) { + if (input.get_error()) { + ssl.SetError(bad_input); + return; + } + const CertManager& cert = ssl.getCrypto().get_certManager(); RSA rsa(cert.get_privateKey(), cert.get_privateKeyLength(), false); uint16 cipherLen = rsa.get_cipherLength(); if (ssl.isTLS()) { byte len[2]; - input.read(len, sizeof(len)); + len[0] = input[AUTO]; + len[1] = input[AUTO]; ato16(len, cipherLen); } alloc(cipherLen); input.read(secret_, length_); + if (input.get_error()) { + ssl.SetError(bad_input); + return; + } opaque preMasterSecret[SECRET_LEN]; + memset(preMasterSecret, 0, sizeof(preMasterSecret)); rsa.decrypt(preMasterSecret, secret_, length_, ssl.getCrypto().get_random()); @@ -277,6 +288,11 @@ // read client's public key, server side void ClientDiffieHellmanPublic::read(SSL& ssl, input_buffer& input) { + if (input.get_error() || input.get_remaining() < (uint)LENGTH_SZ) { + ssl.SetError(bad_input); + return; + } + DiffieHellman& dh = ssl.useCrypto().use_dh(); uint16 keyLength; @@ -285,8 +301,17 @@ tmp[1] = input[AUTO]; ato16(tmp, keyLength); + if (keyLength < dh.get_agreedKeyLength()/2) { + ssl.SetError(bad_input); + return; + } + alloc(keyLength); input.read(Yc_, keyLength); + if (input.get_error()) { + ssl.SetError(bad_input); + return; + } dh.makeAgreement(Yc_, keyLength); // because of encoding, first byte might be 0, don't use for preMaster @@ -331,6 +356,10 @@ // read server's p, g, public key and sig, client side void DH_Server::read(SSL& ssl, input_buffer& input) { + if (input.get_error() || input.get_remaining() < (uint)LENGTH_SZ) { + ssl.SetError(bad_input); + return; + } uint16 length, messageTotal = 6; // pSz + gSz + pubSz byte tmp[2]; @@ -341,6 +370,10 @@ messageTotal += length; input.read(parms_.alloc_p(length), length); + if (input.get_error() || input.get_remaining() < (uint)LENGTH_SZ) { + ssl.SetError(bad_input); + return; + } // g tmp[0] = input[AUTO]; @@ -349,6 +382,10 @@ messageTotal += length; input.read(parms_.alloc_g(length), length); + if (input.get_error() || input.get_remaining() < (uint)LENGTH_SZ) { + ssl.SetError(bad_input); + return; + } // pub tmp[0] = input[AUTO]; @@ -357,20 +394,36 @@ messageTotal += length; input.read(parms_.alloc_pub(length), length); + if (input.get_error() || input.get_remaining() < (uint)LENGTH_SZ) { + ssl.SetError(bad_input); + return; + } // save message for hash verify input_buffer message(messageTotal); input.set_current(input.get_current() - messageTotal); input.read(message.get_buffer(), messageTotal); message.add_size(messageTotal); + if (input.get_error() || input.get_remaining() < (uint)LENGTH_SZ) { + ssl.SetError(bad_input); + return; + } // signature tmp[0] = input[AUTO]; tmp[1] = input[AUTO]; ato16(tmp, length); + if (length == 0) { + ssl.SetError(bad_input); + return; + } signature_ = NEW_YS byte[length]; input.read(signature_, length); + if (input.get_error()) { + ssl.SetError(bad_input); + return; + } // verify signature byte hash[FINISHED_SZ]; @@ -645,6 +698,10 @@ { ssl.verifyState(*this); if (ssl.GetError()) return; + if (input.get_error()) { + ssl.SetError(bad_input); + return; + } const HandShakeFactory& hsf = ssl.getFactory().getHandShake(); mySTL::auto_ptr hs(hsf.CreateObject(type_)); if (!hs.get()) { @@ -810,8 +867,19 @@ // CipherSpec processing handler -void ChangeCipherSpec::Process(input_buffer&, SSL& ssl) +void ChangeCipherSpec::Process(input_buffer& input, SSL& ssl) { + if (input.get_error()) { + ssl.SetError(bad_input); + return; + } + + // detect duplicate change_cipher + if (ssl.getSecurity().get_parms().pending_ == false) { + ssl.order_error(); + return; + } + ssl.useSecurity().use_parms().pending_ = false; if (ssl.getSecurity().get_resuming()) { if (ssl.getSecurity().get_parms().entity_ == client_end) @@ -873,6 +941,11 @@ // Alert processing handler void Alert::Process(input_buffer& input, SSL& ssl) { + if (input.get_error()) { + ssl.SetError(bad_input); + return; + } + if (ssl.getSecurity().get_parms().pending_ == false) { // encrypted alert int aSz = get_length(); // alert size already read on input opaque verify[SHA_LEN]; @@ -890,12 +963,19 @@ if (ssl.getSecurity().get_parms().cipher_type_ == block) { int ivExtra = 0; + opaque fill; if (ssl.isTLSv1_1()) ivExtra = ssl.getCrypto().get_cipher().get_blockSize(); int padSz = ssl.getSecurity().get_parms().encrypt_size_ - ivExtra - aSz - digestSz; - input.set_current(input.get_current() + padSz); + for (int i = 0; i < padSz; i++) + fill = input[AUTO]; + } + + if (input.get_error()) { + ssl.SetError(bad_input); + return; } // verify @@ -1112,6 +1192,11 @@ // Process handler for Data void Data::Process(input_buffer& input, SSL& ssl) { + if (input.get_error()) { + ssl.SetError(bad_input); + return; + } + int msgSz = ssl.getSecurity().get_parms().encrypt_size_; int pad = 0, padSz = 0; int ivExtra = 0; @@ -1154,7 +1239,7 @@ int dataSz = msgSz - ivExtra - digestSz - pad - padSz; - if (dataSz < 0) { + if (dataSz < 0 || dataSz > (MAX_RECORD_SIZE + COMPRESS_EXTRA)) { ssl.SetError(bad_input); return; } @@ -1180,6 +1265,10 @@ // advance past mac and fill input.set_current(input.get_current() + digestSz + pad + padSz); + if (input.get_error()) { + ssl.SetError(bad_input); + return; + } } @@ -1244,6 +1333,11 @@ // certificate processing handler void Certificate::Process(input_buffer& input, SSL& ssl) { + if (input.get_error()) { + ssl.SetError(bad_input); + return; + } + CertManager& cm = ssl.useCrypto().use_certManager(); uint32 list_sz; @@ -1412,6 +1506,10 @@ // Session hello.id_len_ = input[AUTO]; + if (hello.id_len_ > ID_LEN) { + input.set_error(); + return input; + } if (hello.id_len_) input.read(hello.session_id_, hello.id_len_); @@ -1452,8 +1550,13 @@ // Server Hello processing handler -void ServerHello::Process(input_buffer&, SSL& ssl) +void ServerHello::Process(input_buffer& input, SSL& ssl) { + if (input.get_error()) { + ssl.SetError(bad_input); + return; + } + if (ssl.GetMultiProtocol()) { // SSLv23 support if (ssl.isTLS() && server_version_.minor_ < 1) // downgrade to SSLv3 @@ -1547,8 +1650,12 @@ // Server Hello Done processing handler -void ServerHelloDone::Process(input_buffer&, SSL& ssl) +void ServerHelloDone::Process(input_buffer& input, SSL& ssl) { + if (input.get_error()) { + ssl.SetError(bad_input); + return; + } ssl.useStates().useClient() = serverHelloDoneComplete; } @@ -1667,8 +1774,13 @@ // Client Hello processing handler -void ClientHello::Process(input_buffer&, SSL& ssl) +void ClientHello::Process(input_buffer& input, SSL& ssl) { + if (input.get_error()) { + ssl.SetError(bad_input); + return; + } + // store version for pre master secret ssl.useSecurity().use_connection().chVersion_ = client_version_; @@ -1800,9 +1912,17 @@ // Server Key Exchange processing handler void ServerKeyExchange::Process(input_buffer& input, SSL& ssl) { + if (input.get_error()) { + ssl.SetError(bad_input); + return; + } createKey(ssl); if (ssl.GetError()) return; server_key_->read(ssl, input); + if (input.get_error()) { + ssl.SetError(bad_input); + return; + } ssl.useStates().useClient() = serverKeyExchangeComplete; } @@ -1924,27 +2044,32 @@ { // types request.typeTotal_ = input[AUTO]; + if (request.typeTotal_ > CERT_TYPES) { + input.set_error(); + return input; + } for (int i = 0; i < request.typeTotal_; i++) request.certificate_types_[i] = ClientCertificateType(input[AUTO]); - byte tmp[REQUEST_HEADER]; - input.read(tmp, sizeof(tmp)); + byte tmp[2]; + tmp[0] = input[AUTO]; + tmp[1] = input[AUTO]; uint16 sz; ato16(tmp, sz); // authorities while (sz) { uint16 dnSz; - input.read(tmp, sizeof(tmp)); + tmp[0] = input[AUTO]; + tmp[1] = input[AUTO]; ato16(tmp, dnSz); - - DistinguishedName dn; - request.certificate_authorities_.push_back(dn = NEW_YS - byte[REQUEST_HEADER + dnSz]); - memcpy(dn, tmp, REQUEST_HEADER); - input.read(&dn[REQUEST_HEADER], dnSz); + + input.set_current(input.get_current() + dnSz); sz -= dnSz + REQUEST_HEADER; + + if (input.get_error()) + break; } return input; @@ -1983,8 +2108,12 @@ // CertificateRequest processing handler -void CertificateRequest::Process(input_buffer&, SSL& ssl) +void CertificateRequest::Process(input_buffer& input, SSL& ssl) { + if (input.get_error()) { + ssl.SetError(bad_input); + return; + } CertManager& cm = ssl.useCrypto().use_certManager(); cm.setSendVerify(); @@ -2067,12 +2196,18 @@ input_buffer& operator>>(input_buffer& input, CertificateVerify& request) { byte tmp[VERIFY_HEADER]; - input.read(tmp, sizeof(tmp)); + tmp[0] = input[AUTO]; + tmp[1] = input[AUTO]; uint16 sz = 0; ato16(tmp, sz); request.set_length(sz); + if (sz == 0) { + input.set_error(); + return input; + } + request.signature_ = NEW_YS byte[sz]; input.read(request.signature_, sz); @@ -2091,8 +2226,13 @@ // CertificateVerify processing handler -void CertificateVerify::Process(input_buffer&, SSL& ssl) +void CertificateVerify::Process(input_buffer& input, SSL& ssl) { + if (input.get_error()) { + ssl.SetError(bad_input); + return; + } + const Hashes& hashVerify = ssl.getHashes().get_certVerify(); const CertManager& cert = ssl.getCrypto().get_certManager(); @@ -2131,9 +2271,17 @@ // Client Key Exchange processing handler void ClientKeyExchange::Process(input_buffer& input, SSL& ssl) { + if (input.get_error()) { + ssl.SetError(bad_input); + return; + } createKey(ssl); if (ssl.GetError()) return; client_key_->read(ssl, input); + if (input.get_error()) { + ssl.SetError(bad_input); + return; + } if (ssl.getCrypto().get_certManager().verifyPeer()) build_certHashes(ssl, ssl.useHashes().use_certVerify()); @@ -2220,11 +2368,19 @@ // Finished processing handler void Finished::Process(input_buffer& input, SSL& ssl) { + if (input.get_error()) { + ssl.SetError(bad_input); + return; + } // verify hashes const Finished& verify = ssl.getHashes().get_verify(); uint finishedSz = ssl.isTLS() ? TLS_FINISHED_SZ : FINISHED_SZ; input.read(hashes_.md5_, finishedSz); + if (input.get_error()) { + ssl.SetError(bad_input); + return; + } if (memcmp(&hashes_, &verify.hashes_, finishedSz)) { ssl.SetError(verify_error); @@ -2246,19 +2402,23 @@ opaque mac[SHA_LEN]; // max size int digestSz = ssl.getCrypto().get_digest().get_digestSize(); input.read(mac, digestSz); + if (input.get_error()) { + ssl.SetError(bad_input); + return; + } uint ivExtra = 0; if (ssl.getSecurity().get_parms().cipher_type_ == block) if (ssl.isTLSv1_1()) ivExtra = ssl.getCrypto().get_cipher().get_blockSize(); + opaque fill; int padSz = ssl.getSecurity().get_parms().encrypt_size_ - ivExtra - HANDSHAKE_HEADER - finishedSz - digestSz; - input.set_current(input.get_current() + padSz); - - // verify mac - if (memcmp(mac, verifyMAC, digestSz)) { - ssl.SetError(verify_error); + for (int i = 0; i < padSz; i++) + fill = input[AUTO]; + if (input.get_error()) { + ssl.SetError(bad_input); return; } diff -Nru percona-xtrabackup-2.2.3/extra/yassl/src/yassl_int.cpp percona-xtrabackup-2.3.7/extra/yassl/src/yassl_int.cpp --- percona-xtrabackup-2.2.3/extra/yassl/src/yassl_int.cpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/src/yassl_int.cpp 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -256,6 +256,77 @@ } +// mark message recvd, check for duplicates, return 0 on success +int States::SetMessageRecvd(HandShakeType hst) +{ + switch (hst) { + case hello_request: + break; // could send more than one + + case client_hello: + if (recvdMessages_.gotClientHello_) + return -1; + recvdMessages_.gotClientHello_ = 1; + break; + + case server_hello: + if (recvdMessages_.gotServerHello_) + return -1; + recvdMessages_.gotServerHello_ = 1; + break; + + case certificate: + if (recvdMessages_.gotCert_) + return -1; + recvdMessages_.gotCert_ = 1; + break; + + case server_key_exchange: + if (recvdMessages_.gotServerKeyExchange_) + return -1; + recvdMessages_.gotServerKeyExchange_ = 1; + break; + + case certificate_request: + if (recvdMessages_.gotCertRequest_) + return -1; + recvdMessages_.gotCertRequest_ = 1; + break; + + case server_hello_done: + if (recvdMessages_.gotServerHelloDone_) + return -1; + recvdMessages_.gotServerHelloDone_ = 1; + break; + + case certificate_verify: + if (recvdMessages_.gotCertVerify_) + return -1; + recvdMessages_.gotCertVerify_ = 1; + break; + + case client_key_exchange: + if (recvdMessages_.gotClientKeyExchange_) + return -1; + recvdMessages_.gotClientKeyExchange_ = 1; + break; + + case finished: + if (recvdMessages_.gotFinished_) + return -1; + recvdMessages_.gotFinished_ = 1; + break; + + + default: + return -1; + + } + + return 0; +} + + sslFactory::sslFactory() : messageFactory_(InitMessageFactory), handShakeFactory_(InitHandShakeFactory), @@ -1251,6 +1322,11 @@ return; } + if (states_.SetMessageRecvd(hsHeader.get_handshakeType()) != 0) { + order_error(); + return; + } + if (secure_.get_parms().entity_ == client_end) verifyClientState(hsHeader.get_handshakeType()); else @@ -2638,8 +2714,9 @@ int DeCompress(input_buffer& in, int sz, input_buffer& out) { byte tmp[LENGTH_SZ]; - - in.read(tmp, sizeof(tmp)); + + tmp[0] = in[AUTO]; + tmp[1] = in[AUTO]; uint16 len; ato16(tmp, len); diff -Nru percona-xtrabackup-2.2.3/extra/yassl/taocrypt/CMakeLists.txt percona-xtrabackup-2.3.7/extra/yassl/taocrypt/CMakeLists.txt --- percona-xtrabackup-2.2.3/extra/yassl/taocrypt/CMakeLists.txt 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/taocrypt/CMakeLists.txt 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -36,7 +36,6 @@ ADD_CONVENIENCE_LIBRARY(taocrypt ${TAOCRYPT_SOURCES}) RESTRICT_SYMBOL_EXPORTS(taocrypt) -INSTALL_DEBUG_SYMBOLS(taocrypt) IF(MSVC) INSTALL_DEBUG_TARGET(taocrypt DESTINATION ${INSTALL_LIBDIR}/debug) ENDIF() diff -Nru percona-xtrabackup-2.2.3/extra/yassl/taocrypt/include/asn.hpp percona-xtrabackup-2.3.7/extra/yassl/taocrypt/include/asn.hpp --- percona-xtrabackup-2.2.3/extra/yassl/taocrypt/include/asn.hpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/taocrypt/include/asn.hpp 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -261,8 +261,8 @@ enum SigType { SHAwDSA = 517, MD2wRSA = 646, MD5wRSA = 648, SHAwRSA = 649, SHA256wRSA = 655, SHA384wRSA = 656, SHA512wRSA = 657, SHA256wDSA = 416 }; -enum HashType { MD2h = 646, MD5h = 649, SHAh = 88, SHA256h = 414, - SHA384h = 415, SHA512h = 416 }; +enum HashType { MD2h = 646, MD5h = 649, SHAh = 88, SHA256h = 414, SHA384h = 415, + SHA512h = 416 }; enum KeyType { DSAk = 515, RSAk = 645 }; // sums of algo OID @@ -300,11 +300,11 @@ byte* signature_; char issuer_[ASN_NAME_MAX]; // Names char subject_[ASN_NAME_MAX]; // Names - char beforeDate_[MAX_DATE_SZ]; // valid before date - byte beforeDateType_; // beforeDate time type - char afterDate_[MAX_DATE_SZ]; // valid after date - byte afterDateType_; // afterDate time type - bool verify_; // Default to yes, but could be off + char beforeDate_[MAX_DATE_SZ+1]; // valid before date, +null term + byte beforeDateType_; // beforeDate time type + char afterDate_[MAX_DATE_SZ+1]; // valid after date, +null term + byte afterDateType_; // afterDate time type + bool verify_; // Default to yes, but could be off void ReadHeader(); void Decode(SignerList*, CertType); diff -Nru percona-xtrabackup-2.2.3/extra/yassl/taocrypt/include/block.hpp percona-xtrabackup-2.3.7/extra/yassl/taocrypt/include/block.hpp --- percona-xtrabackup-2.2.3/extra/yassl/taocrypt/include/block.hpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/taocrypt/include/block.hpp 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -74,7 +74,7 @@ if (preserve) { A b = A(); typename A::pointer newPointer = b.allocate(newSize, 0); - memcpy(newPointer, p, sizeof(T) * min((word32) oldSize, (word32) newSize)); + memcpy(newPointer, p, sizeof(T) * min(oldSize, newSize)); a.deallocate(p, oldSize); STL::swap(a, b); return newPointer; @@ -186,9 +186,9 @@ ~Block() { allocator_.deallocate(buffer_, sz_); } private: + A allocator_; word32 sz_; // size in Ts T* buffer_; - A allocator_; }; diff -Nru percona-xtrabackup-2.2.3/extra/yassl/taocrypt/include/integer.hpp percona-xtrabackup-2.3.7/extra/yassl/taocrypt/include/integer.hpp --- percona-xtrabackup-2.2.3/extra/yassl/taocrypt/include/integer.hpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/taocrypt/include/integer.hpp 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -47,7 +47,7 @@ #ifdef TAOCRYPT_X86ASM_AVAILABLE #if defined(__GNUC__) && (__GNUC__ >= 4) - // GCC 4 or greater optimizes too much inline on recursive for bigint, + // GCC 4 or greater optimizes too much inline on recursive for bigint, // -O3 just as fast without asm here anyway #undef TAOCRYPT_X86ASM_AVAILABLE #endif diff -Nru percona-xtrabackup-2.2.3/extra/yassl/taocrypt/include/pwdbased.hpp percona-xtrabackup-2.3.7/extra/yassl/taocrypt/include/pwdbased.hpp --- percona-xtrabackup-2.2.3/extra/yassl/taocrypt/include/pwdbased.hpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/taocrypt/include/pwdbased.hpp 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -16,6 +16,7 @@ MA 02110-1301 USA. */ + /* pwdbased.hpp defines PBKDF2 from PKCS #5 */ @@ -48,10 +49,7 @@ word32 pLen, const byte* salt, word32 sLen, word32 iterations) const { - if (dLen > MaxDerivedKeyLength()) - return 0; - - if (iterations < 0) + if (dLen > MaxDerivedKeyLength()) return 0; ByteBlock buffer(T::DIGEST_SIZE); diff -Nru percona-xtrabackup-2.2.3/extra/yassl/taocrypt/include/runtime.hpp percona-xtrabackup-2.3.7/extra/yassl/taocrypt/include/runtime.hpp --- percona-xtrabackup-2.2.3/extra/yassl/taocrypt/include/runtime.hpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/taocrypt/include/runtime.hpp 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -34,7 +34,10 @@ // Handler for pure virtual functions namespace __Crun { - void pure_error(void); + static void pure_error(void) + { + // "Pure virtual method called, Aborted", GCC 4.2 str cmp fix + } } // namespace __Crun #endif // __sun @@ -48,7 +51,15 @@ #if defined(DO_TAOCRYPT_KERNEL_MODE) #include "kernelc.hpp" #endif - int __cxa_pure_virtual () __attribute__ ((weak)); + +/* Disallow inline __cxa_pure_virtual() */ +static int __cxa_pure_virtual() __attribute__((noinline, used)); +static int __cxa_pure_virtual() +{ + // oops, pure virtual called! + return 0; +} + } // extern "C" #endif // __GNUC__ > 2 diff -Nru percona-xtrabackup-2.2.3/extra/yassl/taocrypt/include/sha.hpp percona-xtrabackup-2.3.7/extra/yassl/taocrypt/include/sha.hpp --- percona-xtrabackup-2.2.3/extra/yassl/taocrypt/include/sha.hpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/taocrypt/include/sha.hpp 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -Nru percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/aes.cpp percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/aes.cpp --- percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/aes.cpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/aes.cpp 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -66,7 +66,7 @@ in += BLOCK_SIZE; } } - else { + else { while (blocks--) { AsmDecrypt(in, out, (void*)Td0); @@ -79,8 +79,8 @@ out += BLOCK_SIZE; in += BLOCK_SIZE; } - } - } + } + } } #endif // DO_AES_ASM @@ -466,14 +466,13 @@ "movd mm7, ebp;" \ "movd mm4, eax;" \ "mov ebp, edx;" \ - "sub esp, 4;" - + "sub esp, 4;" #define EPILOG() \ "add esp, 4;" \ "pop ebp;" \ "pop ebx;" \ - "emms;" \ - ".att_syntax;" \ + "emms;" \ + ".att_syntax;" \ : \ : "c" (this), "S" (inBlock), "d" (boxes), "a" (outBlock) \ : "%edi", "memory", "cc" \ @@ -834,9 +833,9 @@ #ifdef _MSC_VER - __declspec(naked) + __declspec(naked) #else - __attribute__ ((noinline)) + __attribute__ ((noinline)) #endif void AES::AsmDecrypt(const byte* inBlock, byte* outBlock, void* boxes) const { diff -Nru percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/algebra.cpp percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/algebra.cpp --- percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/algebra.cpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/algebra.cpp 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,5 @@ -/* Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. +/* + Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -183,10 +184,10 @@ struct WindowSlider { - WindowSlider(const Integer &expIn, bool fastNegateIn, + WindowSlider(const Integer &exp, bool fastNegate, unsigned int windowSizeIn=0) - : exp(expIn), windowModulus(Integer::One()), windowSize(windowSizeIn), - windowBegin(0), fastNegate(fastNegateIn), firstTime(true), + : exp(exp), windowModulus(Integer::One()), windowSize(windowSizeIn), + windowBegin(0), fastNegate(fastNegate), firstTime(true), finished(false) { if (windowSize == 0) diff -Nru percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/arc4.cpp percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/arc4.cpp --- percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/arc4.cpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/arc4.cpp 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -121,12 +121,11 @@ "push ebx;" \ "push ebp;" \ "mov ebp, eax;" - #define EPILOG() \ "pop ebp;" \ "pop ebx;" \ - "emms;" \ - ".att_syntax;" \ + "emms;" \ + ".att_syntax;" \ : \ : "c" (this), "D" (out), "S" (in), "a" (length) \ : "%edx", "memory", "cc" \ @@ -180,7 +179,7 @@ #ifdef _MSC_VER AS1( loopStart: ) // loopStart #else - AS1( 0: ) // loopStart for some gas (need numeric for jump back + AS1( 0: ) // loopStart for some gas (need numeric for jump back #endif // y = (y+a) & 0xff; @@ -232,7 +231,7 @@ AS1( nothing: ) - // inline adjust + // inline adjust AS2( add esp, 4 ) // fix room on stack EPILOG() diff -Nru percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/asn.cpp percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/asn.cpp --- percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/asn.cpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/asn.cpp 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -685,7 +685,7 @@ } sigLength_ = GetLength(source_); - if (sigLength_ == 0 || source_.IsLeft(sigLength_) == false) { + if (sigLength_ <= 1 || source_.IsLeft(sigLength_) == false) { source_.SetError(CONTENT_E); return 0; } @@ -773,7 +773,7 @@ while (source_.get_index() < length) { GetSet(); if (source_.GetError().What() == SET_E) { - source_.SetError(NO_ERROR_E); // extensions may only have sequence + source_.SetError(NO_ERROR_E); // extensions may only have sequence source_.prev(); } GetSequence(); @@ -844,10 +844,8 @@ if (source_.IsLeft(length) == false) return; if (email) { - if (!(ptr = AddTag(ptr, buf_end, "/emailAddress=", 14, length))) { - source_.SetError(CONTENT_E); - return; - } + if (!(ptr = AddTag(ptr, buf_end, "/emailAddress=", 14, length))) + return; } source_.advance(length); @@ -1018,11 +1016,17 @@ RSA_PublicKey pubKey(pub); RSAES_Encryptor enc(pubKey); + if (pubKey.FixedCiphertextLength() != sigLength_) { + source_.SetError(SIG_LEN_E); + return false; + } + return enc.SSL_Verify(build.get_buffer(), build.size(), signature_); } else { // DSA // extract r and s from sequence byte seqDecoded[DSA_SIG_SZ]; + memset(seqDecoded, 0, sizeof(seqDecoded)); DecodeDSA_Signature(seqDecoded, signature_, sigLength_); DSA_PublicKey pubKey(pub); @@ -1080,12 +1084,10 @@ 0x02, 0x02, 0x05, 0x00}; static const byte sha256AlgoID[] = { 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00 }; -#ifdef WORD64_AVAILABLE static const byte sha384AlgoID[] = { 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02, 0x05, 0x00 }; static const byte sha512AlgoID[] = { 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03, 0x05, 0x00 }; -#endif int algoSz = 0; const byte* algoName = 0; @@ -1100,7 +1102,6 @@ algoName = sha256AlgoID; break; -#ifdef WORD64_AVAILABLE case SHA384h: algoSz = sizeof(sha384AlgoID); algoName = sha384AlgoID; @@ -1110,7 +1111,6 @@ algoSz = sizeof(sha512AlgoID); algoName = sha512AlgoID; break; -#endif case MD2h: algoSz = sizeof(md2AlgoID); diff -Nru percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/blowfish.cpp percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/blowfish.cpp --- percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/blowfish.cpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/blowfish.cpp 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -237,8 +237,8 @@ #define EPILOG() \ "pop ebp;" \ "pop ebx;" \ - "emms;" \ - ".att_syntax;" \ + "emms;" \ + ".att_syntax;" \ : \ : "c" (this), "S" (inBlock), "a" (outBlock) \ : "%edi", "%edx", "memory", "cc" \ @@ -291,7 +291,7 @@ #ifdef _MSC_VER - __declspec(naked) + __declspec(naked) #else __attribute__ ((noinline)) #endif diff -Nru percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/des.cpp percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/des.cpp --- percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/des.cpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/des.cpp 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -641,9 +641,9 @@ #ifdef _MSC_VER - __declspec(naked) + __declspec(naked) #else - __attribute__ ((noinline)) + __attribute__ ((noinline)) #endif void DES_EDE3::AsmProcess(const byte* in, byte* out, void* box) const { @@ -663,8 +663,8 @@ #define EPILOG() \ "pop ebp;" \ "pop ebx;" \ - "emms;" \ - ".att_syntax;" \ + "emms;" \ + ".att_syntax;" \ : \ : "d" (this), "S" (in), "a" (box), "c" (out) \ : "%edi", "memory", "cc" \ diff -Nru percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/integer.cpp percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/integer.cpp --- percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/integer.cpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/integer.cpp 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,5 @@ -/* Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. +/* + Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -51,9 +52,8 @@ #endif #elif defined(_MSC_VER) && defined(_M_IX86) /* #pragma message("You do not seem to have the Visual C++ Processor Pack ") - #pragma message("installed, so use of SSE2 intrinsics will be disabled.") -*/ #pragma message("installed, so use of SSE2 intrinsics will be disabled.") +*/ #elif defined(__GNUC__) && defined(__i386__) /* #warning You do not have GCC 3.3 or later, or did not specify the -msse2 \ compiler option. Use of SSE2 intrinsics will be disabled. @@ -277,7 +277,12 @@ word GetHighHalfAsBorrow() const {return 0-halfs_.high;} private: - struct dword_struct + union + { + #ifdef TAOCRYPT_NATIVE_DWORD_AVAILABLE + dword whole_; + #endif + struct { #ifdef LITTLE_ENDIAN_ORDER word low; @@ -286,14 +291,7 @@ word high; word low; #endif - }; - - union - { - #ifdef TAOCRYPT_NATIVE_DWORD_AVAILABLE - dword whole_; - #endif - struct dword_struct halfs_; + } halfs_; }; }; @@ -1196,24 +1194,20 @@ #define AS1(x) #x ";" #define AS2(x, y) #x ", " #y ";" #define AddPrologue \ - word res; \ __asm__ __volatile__ \ ( \ "push %%ebx;" /* save this manually, in case of -fPIC */ \ - "mov %3, %%ebx;" \ + "mov %2, %%ebx;" \ ".intel_syntax noprefix;" \ "push ebp;" #define AddEpilogue \ "pop ebp;" \ ".att_syntax prefix;" \ "pop %%ebx;" \ - "mov %%eax, %0;" \ - : "=g" (res) \ + : \ : "c" (C), "d" (A), "m" (B), "S" (N) \ : "%edi", "memory", "cc" \ - ); \ - return res; - + ); #define MulPrologue \ __asm__ __volatile__ \ ( \ @@ -2607,18 +2601,20 @@ void Integer::Decode(const byte* input, unsigned int inputLen, Signedness s) { unsigned int idx(0); - byte b = input[idx++]; + byte b = 0; + if (inputLen>0) + b = input[idx]; // peek sign_ = ((s==SIGNED) && (b & 0x80)) ? NEGATIVE : POSITIVE; while (inputLen>0 && (sign_==POSITIVE ? b==0 : b==0xff)) { - inputLen--; - b = input[idx++]; + idx++; // skip + if (--inputLen>0) + b = input[idx]; // peek } reg_.CleanNew(RoundupSize(BytesToWords(inputLen))); - --idx; for (unsigned int i=inputLen; i > 0; i--) { b = input[idx++]; diff -Nru percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/md5.cpp percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/md5.cpp --- percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/md5.cpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/md5.cpp 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -223,7 +223,7 @@ #ifdef _MSC_VER - __declspec(naked) + __declspec(naked) #else __attribute__ ((noinline)) #endif @@ -242,8 +242,8 @@ #define EPILOG() \ "pop ebp;" \ "pop ebx;" \ - "emms;" \ - ".att_syntax;" \ + "emms;" \ + ".att_syntax;" \ : \ : "c" (this), "D" (data), "a" (times) \ : "%esi", "%edx", "memory", "cc" \ @@ -297,7 +297,7 @@ #ifdef _MSC_VER AS1( loopStart: ) // loopStart #else - AS1( 0: ) // loopStart for some gas (need numeric for jump back + AS1( 0: ) // loopStart for some gas (need numeric for jump back #endif // set up diff -Nru percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/misc.cpp percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/misc.cpp --- percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/misc.cpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/misc.cpp 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -84,17 +84,7 @@ } -#ifdef __sun - -// Handler for pure virtual functions -namespace __Crun { - void pure_error() { - } -} - -#endif - -#if defined(__ICC) || defined(__INTEL_COMPILER) || (__GNUC__ > 2) +#if defined(__ICC) || defined(__INTEL_COMPILER) extern "C" { @@ -175,6 +165,14 @@ #ifdef TAOCRYPT_X86ASM_AVAILABLE +#ifndef _MSC_VER + static jmp_buf s_env; + static void SigIllHandler(int) + { + longjmp(s_env, 1); + } +#endif + bool HaveCpuId() { diff -Nru percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/rabbit.cpp percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/rabbit.cpp --- percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/rabbit.cpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/rabbit.cpp 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -227,10 +227,10 @@ /* Encrypt/decrypt remaining data */ if (msglen) { - word32 tmp[4]; - byte* buffer = (byte*)tmp; + word32 tmp[4]; + byte* buffer = (byte*)tmp; - memset(tmp, 0, sizeof(tmp)); /* help static analysis */ + memset(tmp, 0, sizeof(tmp)); /* help static analysis */ /* Iterate the system */ NextState(Work); @@ -238,11 +238,11 @@ /* Generate 16 bytes of pseudo-random data */ tmp[0] = LITTLE32(workCtx_.x[0] ^ (workCtx_.x[5]>>16) ^ U32V(workCtx_.x[3]<<16)); - tmp[1] = LITTLE32(workCtx_.x[2] ^ + tmp[1] = LITTLE32(workCtx_.x[2] ^ (workCtx_.x[7]>>16) ^ U32V(workCtx_.x[5]<<16)); - tmp[2] = LITTLE32(workCtx_.x[4] ^ + tmp[2] = LITTLE32(workCtx_.x[4] ^ (workCtx_.x[1]>>16) ^ U32V(workCtx_.x[7]<<16)); - tmp[3] = LITTLE32(workCtx_.x[6] ^ + tmp[3] = LITTLE32(workCtx_.x[6] ^ (workCtx_.x[3]>>16) ^ U32V(workCtx_.x[1]<<16)); /* Encrypt/decrypt the data */ diff -Nru percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/random.cpp percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/random.cpp --- percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/random.cpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/random.cpp 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,6 +27,7 @@ #include #if defined(_WIN32) + #define _WIN32_WINNT 0x0400 #include #include #else diff -Nru percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/ripemd.cpp percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/ripemd.cpp --- percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/ripemd.cpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/ripemd.cpp 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -507,6 +507,8 @@ #ifdef _MSC_VER __declspec(naked) +#else + __attribute__ ((noinline)) #endif void RIPEMD160::AsmTransform(const byte* data, word32 times) { @@ -520,12 +522,11 @@ ".intel_syntax noprefix;" \ "push ebx;" \ "push ebp;" - #define EPILOG() \ "pop ebp;" \ "pop ebx;" \ - "emms;" \ - ".att_syntax;" \ + "emms;" \ + ".att_syntax;" \ : \ : "c" (this), "D" (data), "d" (times) \ : "%esi", "%eax", "memory", "cc" \ @@ -571,7 +572,7 @@ #ifdef _MSC_VER AS1( loopStart: ) // loopStart #else - AS1( 0: ) // loopStart for some gas (need numeric for jump back + AS1( 0: ) // loopStart for some gas (need numeric for jump back #endif AS2( movd mm2, edx ) // store times_ @@ -830,7 +831,7 @@ AS1( jnz 0b ) // loopStart #endif - // inline adjust + // inline adjust AS2( add esp, 24 ) // fix room on stack EPILOG() diff -Nru percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/rsa.cpp percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/rsa.cpp --- percona-xtrabackup-2.2.3/extra/yassl/taocrypt/src/rsa.cpp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/extra/yassl/taocrypt/src/rsa.cpp 2017-02-27 07:47:02.000000000 +0000 @@ -177,7 +177,7 @@ // skip past the padding until we find the separator unsigned i=1; - while (i= CR_ERROR_FIRST && (X) <= CR_ERROR_LAST)? \ + client_errors[(X)-CR_ERROR_FIRST]: client_errors[CR_UNKNOWN_ERROR]) + #endif #define CLIENT_ERRMAP 2 /* Errormap used by my_error() */ diff -Nru percona-xtrabackup-2.2.3/include/lf.h percona-xtrabackup-2.3.7/include/lf.h --- percona-xtrabackup-2.2.3/include/lf.h 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/include/lf.h 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -244,6 +244,9 @@ int lf_hash_insert(LF_HASH *hash, LF_PINS *pins, const void *data); void *lf_hash_search(LF_HASH *hash, LF_PINS *pins, const void *key, uint keylen); int lf_hash_delete(LF_HASH *hash, LF_PINS *pins, const void *key, uint keylen); +typedef int lf_hash_match_func(const uchar *el); +void *lf_hash_random_match(LF_HASH *hash, LF_PINS *pins, + lf_hash_match_func *match, uint rand_val); /* shortcut macros to access underlying pinbox functions from an LF_HASH see _lf_pinbox_get_pins() and _lf_pinbox_put_pins() diff -Nru percona-xtrabackup-2.2.3/include/my_base.h percona-xtrabackup-2.3.7/include/my_base.h --- percona-xtrabackup-2.2.3/include/my_base.h 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/include/my_base.h 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -541,7 +541,6 @@ #define HA_STATE_BUFF_SAVED 512 /* If current keybuff is info->buff */ #define HA_STATE_ROW_CHANGED 1024 /* To invalide ROW cache */ #define HA_STATE_EXTEND_BLOCK 2048 -#define HA_STATE_RNEXT_SAME 4096 /* rnext_same occupied lastkey2 */ /* myisampack expects no more than 32 field types. */ enum en_fieldtype { diff -Nru percona-xtrabackup-2.2.3/include/my_default.h percona-xtrabackup-2.3.7/include/my_default.h --- percona-xtrabackup-2.2.3/include/my_default.h 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/include/my_default.h 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -36,6 +36,7 @@ char **group_suffix, char **login_path); int my_load_defaults(const char *conf_file, const char **groups, int *argc, char ***argv, const char ***); +int check_file_permissions(const char *file_name); int load_defaults(const char *conf_file, const char **groups, int *argc, char ***argv); int my_search_option_files(const char *conf_file, int *argc, diff -Nru percona-xtrabackup-2.2.3/include/my_getopt.h percona-xtrabackup-2.3.7/include/my_getopt.h --- percona-xtrabackup-2.2.3/include/my_getopt.h 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/include/my_getopt.h 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -113,6 +113,7 @@ const struct my_option *longopts, my_get_one_option, const char **command_list); +extern void print_cmdline_password_warning(); extern void my_cleanup_options(const struct my_option *options); extern void my_cleanup_options(const struct my_option *options); extern void my_print_help(const struct my_option *options); diff -Nru percona-xtrabackup-2.2.3/include/my_global.h percona-xtrabackup-2.3.7/include/my_global.h --- percona-xtrabackup-2.2.3/include/my_global.h 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/include/my_global.h 2017-02-27 07:47:02.000000000 +0000 @@ -333,9 +333,6 @@ #ifdef HAVE_FCNTL_H #include #endif -#ifdef HAVE_SYS_TIMEB_H -#include /* Avoid warnings on SCO */ -#endif #if TIME_WITH_SYS_TIME # include # include @@ -763,38 +760,28 @@ #define SIZE_T_MAX (~((size_t) 0)) #endif -#ifndef isfinite -#ifdef HAVE_FINITE -#define isfinite(x) finite(x) -#else -#define finite(x) (1.0 / fabs(x) > 0.0) -#endif /* HAVE_FINITE */ -#endif /* isfinite */ - #include -#ifndef HAVE_ISNAN -#define isnan(x) ((x) != (x)) -#endif -C_MODE_START -extern double my_double_isnan(double x); -C_MODE_END -#ifdef HAVE_ISINF -/* Check if C compiler is affected by GCC bug #39228 */ -#if !defined(__cplusplus) && defined(HAVE_BROKEN_ISINF) -/* Force store/reload of the argument to/from a 64-bit double */ -static inline double my_isinf(double x) -{ - volatile double t= x; - return isinf(t); -} -#else -/* System-provided isinf() is available and safe to use */ -#define my_isinf(X) isinf(X) -#endif -#else /* !HAVE_ISINF */ -#define my_isinf(X) (!finite(X) && !isnan(X)) -#endif +#if (__cplusplus >= 201103L) + /* For C++11 use the new std functions rather than C99 macros. */ + #include + #define my_isfinite(X) std::isfinite(X) + #define my_isnan(X) std::isnan(X) + #define my_isinf(X) std::isinf(X) +#else + #ifdef HAVE_LLVM_LIBCPP /* finite is deprecated in libc++ */ + #define my_isfinite(X) isfinite(X) + #else + #define my_isfinite(X) finite(X) + #endif + #define my_isnan(X) isnan(X) + #ifdef HAVE_ISINF + /* System-provided isinf() is available and safe to use */ + #define my_isinf(X) isinf(X) + #else /* !HAVE_ISINF */ + #define my_isinf(X) (!my_isfinite(X) && !my_isnan(X)) + #endif +#endif /* __cplusplus >= 201103L */ /* Define missing math constants. */ #ifndef M_PI @@ -1193,7 +1180,9 @@ /* Things we don't need in the embedded version of MySQL */ /* TODO HF add #undef HAVE_VIO if we don't want client in embedded library */ +#if !defined(XTRABACKUP) #undef HAVE_OPENSSL +#endif #undef HAVE_SMEM /* No shared memory */ #endif /* EMBEDDED_LIBRARY */ diff -Nru percona-xtrabackup-2.2.3/include/my_pthread.h percona-xtrabackup-2.3.7/include/my_pthread.h --- percona-xtrabackup-2.2.3/include/my_pthread.h 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/include/my_pthread.h 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -144,8 +144,18 @@ int pthread_attr_setstacksize(pthread_attr_t *connect_att,DWORD stack); int pthread_attr_destroy(pthread_attr_t *connect_att); int my_pthread_once(my_pthread_once_t *once_control,void (*init_routine)(void)); -struct tm *localtime_r(const time_t *timep,struct tm *tmp); -struct tm *gmtime_r(const time_t *timep,struct tm *tmp); + +static inline struct tm *localtime_r(const time_t *timep, struct tm *tmp) +{ + localtime_s(tmp, timep); + return tmp; +} + +static inline struct tm *gmtime_r(const time_t *clock, struct tm *res) +{ + gmtime_s(res, clock); + return res; +} void pthread_exit(void *a); int pthread_join(pthread_t thread, void **value_ptr); @@ -853,18 +863,7 @@ extern uint my_thread_end_wait_time; #define my_thread_var (_my_thread_var()) #define my_errno my_thread_var->thr_errno -/* - Keep track of shutdown,signal, and main threads so that my_end() will not - report errors with them -*/ - -/* Which kind of thread library is in use */ - -#define THD_LIB_OTHER 1 -#define THD_LIB_NPTL 2 -#define THD_LIB_LT 4 -extern uint thd_lib_detected; /* thread_safe_xxx functions are for critical statistic or counters. diff -Nru percona-xtrabackup-2.2.3/include/mysql/plugin.h percona-xtrabackup-2.3.7/include/mysql/plugin.h --- percona-xtrabackup-2.2.3/include/mysql/plugin.h 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/include/mysql/plugin.h 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -Nru percona-xtrabackup-2.2.3/include/mysql/psi/mysql_statement.h percona-xtrabackup-2.3.7/include/mysql/psi/mysql_statement.h --- percona-xtrabackup-2.2.3/include/mysql/psi/mysql_statement.h 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/include/mysql/psi/mysql_statement.h 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -41,7 +41,6 @@ do {} while (0) #endif -#ifdef HAVE_PSI_STATEMENT_INTERFACE #ifdef HAVE_PSI_STATEMENT_DIGEST_INTERFACE #define MYSQL_DIGEST_START(LOCKER) \ inline_mysql_digest_start(LOCKER) @@ -49,17 +48,13 @@ #define MYSQL_DIGEST_START(LOCKER) \ NULL #endif -#else - #define MYSQL_DIGEST_START(LOCKER) \ - NULL -#endif #ifdef HAVE_PSI_STATEMENT_DIGEST_INTERFACE - #define MYSQL_ADD_TOKEN(LOCKER, T, Y) \ - inline_mysql_add_token(LOCKER, T, Y) + #define MYSQL_DIGEST_END(LOCKER, DIGEST) \ + inline_mysql_digest_end(LOCKER, DIGEST) #else - #define MYSQL_ADD_TOKEN(LOCKER, T, Y) \ - NULL + #define MYSQL_DIGEST_END(LOCKER, DIGEST) \ + do {} while (0) #endif #ifdef HAVE_PSI_STATEMENT_INTERFACE @@ -132,20 +127,17 @@ PSI_digest_locker* digest_locker= NULL; if (likely(locker != NULL)) - digest_locker= PSI_STATEMENT_CALL(digest_start)(locker); + digest_locker= PSI_DIGEST_CALL(digest_start)(locker); return digest_locker; } #endif #ifdef HAVE_PSI_STATEMENT_DIGEST_INTERFACE -static inline struct PSI_digest_locker * -inline_mysql_add_token(PSI_digest_locker *locker, uint token, - void *yylval) +static inline void +inline_mysql_digest_end(PSI_digest_locker *locker, const sql_digest_storage *digest) { if (likely(locker != NULL)) - locker= PSI_STATEMENT_CALL(digest_add_token)(locker, token, - (OPAQUE_LEX_YYSTYPE*)yylval); - return locker; + PSI_DIGEST_CALL(digest_end)(locker, digest); } #endif diff -Nru percona-xtrabackup-2.2.3/include/mysql/psi/psi_abi_v0.h.pp percona-xtrabackup-2.3.7/include/mysql/psi/psi_abi_v0.h.pp --- percona-xtrabackup-2.2.3/include/mysql/psi/psi_abi_v0.h.pp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/include/mysql/psi/psi_abi_v0.h.pp 2017-02-27 07:47:02.000000000 +0000 @@ -1,7 +1,7 @@ #include "mysql/psi/psi.h" C_MODE_START struct TABLE_SHARE; -struct OPAQUE_LEX_YYSTYPE; +struct sql_digest_storage; struct PSI_mutex; typedef struct PSI_mutex PSI_mutex; struct PSI_rwlock; diff -Nru percona-xtrabackup-2.2.3/include/mysql/psi/psi_abi_v1.h.pp percona-xtrabackup-2.3.7/include/mysql/psi/psi_abi_v1.h.pp --- percona-xtrabackup-2.2.3/include/mysql/psi/psi_abi_v1.h.pp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/include/mysql/psi/psi_abi_v1.h.pp 2017-02-27 07:47:02.000000000 +0000 @@ -1,7 +1,7 @@ #include "mysql/psi/psi.h" C_MODE_START struct TABLE_SHARE; -struct OPAQUE_LEX_YYSTYPE; +struct sql_digest_storage; struct PSI_mutex; typedef struct PSI_mutex PSI_mutex; struct PSI_rwlock; @@ -241,20 +241,6 @@ void *m_wait; uint m_index; }; -struct PSI_digest_storage -{ - my_bool m_full; - int m_byte_count; - uint m_charset_number; - unsigned char m_token_array[1024]; -}; -typedef struct PSI_digest_storage PSI_digest_storage; -struct PSI_digest_locker_state -{ - int m_last_id_index; - PSI_digest_storage m_digest_storage; -}; -typedef struct PSI_digest_locker_state PSI_digest_locker_state; struct PSI_statement_locker_state_v1 { my_bool m_discarded; @@ -280,7 +266,7 @@ ulong m_sort_range; ulong m_sort_rows; ulong m_sort_scan; - PSI_digest_locker_state m_digest_state; + const struct sql_digest_storage *m_digest; char m_schema_name[(64 * 3)]; uint m_schema_name_length; }; @@ -508,8 +494,8 @@ typedef void (*set_socket_thread_owner_v1_t)(struct PSI_socket *socket); typedef struct PSI_digest_locker * (*digest_start_v1_t) (struct PSI_statement_locker *locker); -typedef struct PSI_digest_locker* (*digest_add_token_v1_t) - (struct PSI_digest_locker *locker, uint token, struct OPAQUE_LEX_YYSTYPE *yylval); +typedef void (*digest_end_v1_t) + (struct PSI_digest_locker *locker, const struct sql_digest_storage *digest); typedef int (*set_thread_connect_attrs_v1_t)(const char *buffer, uint length, const void *from_cs); struct PSI_v1 @@ -610,7 +596,7 @@ set_socket_info_v1_t set_socket_info; set_socket_thread_owner_v1_t set_socket_thread_owner; digest_start_v1_t digest_start; - digest_add_token_v1_t digest_add_token; + digest_end_v1_t digest_end; set_thread_connect_attrs_v1_t set_thread_connect_attrs; }; typedef struct PSI_v1 PSI; diff -Nru percona-xtrabackup-2.2.3/include/mysql/psi/psi_abi_v2.h.pp percona-xtrabackup-2.3.7/include/mysql/psi/psi_abi_v2.h.pp --- percona-xtrabackup-2.2.3/include/mysql/psi/psi_abi_v2.h.pp 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/include/mysql/psi/psi_abi_v2.h.pp 2017-02-27 07:47:02.000000000 +0000 @@ -1,7 +1,7 @@ #include "mysql/psi/psi.h" C_MODE_START struct TABLE_SHARE; -struct OPAQUE_LEX_YYSTYPE; +struct sql_digest_storage; struct PSI_mutex; typedef struct PSI_mutex PSI_mutex; struct PSI_rwlock; diff -Nru percona-xtrabackup-2.2.3/include/mysql/psi/psi.h percona-xtrabackup-2.3.7/include/mysql/psi/psi.h --- percona-xtrabackup-2.2.3/include/mysql/psi/psi.h 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/include/mysql/psi/psi.h 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -43,18 +43,8 @@ C_MODE_START struct TABLE_SHARE; -/* - There are 3 known bison parsers in the server: - - (1) the SQL parser itself, sql/sql_yacc.yy - - (2) storage/innobase/fts/fts0pars.y - - (3) storage/innobase/pars/pars0grm.y - What is instrumented here are the tokens from the SQL query text (1), - to make digests. - Now, to avoid name pollution and conflicts with different YYSTYPE definitions, - an opaque structure is used here. - The real type to use when invoking the digest api is LEX_YYSTYPE. -*/ -struct OPAQUE_LEX_YYSTYPE; + +struct sql_digest_storage; /** @file mysql/psi/psi.h @@ -952,29 +942,6 @@ uint m_index; }; -#define PSI_MAX_DIGEST_STORAGE_SIZE 1024 - -/** - Structure to store token count/array for a statement - on which digest is to be calculated. -*/ -struct PSI_digest_storage -{ - my_bool m_full; - int m_byte_count; - /** Character set number. */ - uint m_charset_number; - unsigned char m_token_array[PSI_MAX_DIGEST_STORAGE_SIZE]; -}; -typedef struct PSI_digest_storage PSI_digest_storage; - -struct PSI_digest_locker_state -{ - int m_last_id_index; - PSI_digest_storage m_digest_storage; -}; -typedef struct PSI_digest_locker_state PSI_digest_locker_state; - /* Duplicate of NAME_LEN, to avoid dependency on mysql_com.h */ #define PSI_SCHEMA_NAME_LEN (64 * 3) @@ -1037,7 +1004,7 @@ /** Metric, number of sort scans. */ ulong m_sort_scan; /** Statement digest. */ - PSI_digest_locker_state m_digest_state; + const struct sql_digest_storage *m_digest; /** Current schema name. */ char m_schema_name[PSI_SCHEMA_NAME_LEN]; /** Length in bytes of @c m_schema_name. */ @@ -1902,11 +1869,15 @@ */ typedef void (*set_socket_thread_owner_v1_t)(struct PSI_socket *socket); +/** + Get a digest locker for the current statement. + @param locker a statement locker for the running thread +*/ typedef struct PSI_digest_locker * (*digest_start_v1_t) (struct PSI_statement_locker *locker); -typedef struct PSI_digest_locker* (*digest_add_token_v1_t) - (struct PSI_digest_locker *locker, uint token, struct OPAQUE_LEX_YYSTYPE *yylval); +typedef void (*digest_end_v1_t) + (struct PSI_digest_locker *locker, const struct sql_digest_storage *digest); /** Stores an array of connection attributes @@ -2118,8 +2089,8 @@ set_socket_thread_owner_v1_t set_socket_thread_owner; /** @sa digest_start_v1_t. */ digest_start_v1_t digest_start; - /** @sa digest_add_token_v1_t. */ - digest_add_token_v1_t digest_add_token; + /** @sa digest_end_v1_t. */ + digest_end_v1_t digest_end; /** @sa set_thread_connect_attrs_v1_t. */ set_thread_connect_attrs_v1_t set_thread_connect_attrs; }; @@ -2414,6 +2385,10 @@ #define PSI_STATEMENT_CALL(M) PSI_DYNAMIC_CALL(M) #endif +#ifndef PSI_DIGEST_CALL +#define PSI_DIGEST_CALL(M) PSI_DYNAMIC_CALL(M) +#endif + #ifndef PSI_TABLE_CALL #define PSI_TABLE_CALL(M) PSI_DYNAMIC_CALL(M) #endif diff -Nru percona-xtrabackup-2.2.3/include/mysql/thread_pool_priv.h percona-xtrabackup-2.3.7/include/mysql/thread_pool_priv.h --- percona-xtrabackup-2.2.3/include/mysql/thread_pool_priv.h 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/include/mysql/thread_pool_priv.h 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -35,6 +35,7 @@ #include #include #include +#include "field.h" #include typedef std::set::iterator Thread_iterator; diff -Nru percona-xtrabackup-2.2.3/include/my_sys.h percona-xtrabackup-2.3.7/include/my_sys.h --- percona-xtrabackup-2.2.3/include/my_sys.h 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/include/my_sys.h 2017-02-27 07:47:02.000000000 +0000 @@ -712,7 +712,6 @@ extern size_t system_filename(char * to,const char *from); extern size_t unpack_filename(char * to,const char *from); extern char * intern_filename(char * to,const char *from); -extern char * directory_file_name(char * dst, const char *src); extern int pack_filename(char * to, const char *name, size_t max_length); extern char * my_path(char * to,const char *progname, const char *own_pathname_part); diff -Nru percona-xtrabackup-2.2.3/include/violite.h percona-xtrabackup-2.3.7/include/violite.h --- percona-xtrabackup-2.2.3/include/violite.h 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/include/violite.h 2017-02-27 07:47:02.000000000 +0000 @@ -142,7 +142,7 @@ #include #include -#ifndef EMBEDDED_LIBRARY +#if !defined(EMBEDDED_LIBRARY) || defined(XTRABACKUP) enum enum_ssl_init_error { SSL_INITERR_NOERROR= 0, SSL_INITERR_CERT, SSL_INITERR_KEY, @@ -170,7 +170,7 @@ const char *cipher, enum enum_ssl_init_error *error, const char *crl_file, const char *crl_path); void free_vio_ssl_acceptor_fd(struct st_VioSSLFd *fd); -#endif /* ! EMBEDDED_LIBRARY */ +#endif /* ! EMBEDDED_LIBRARY) || XTRABACKUP */ #endif /* HAVE_OPENSSL */ void ssl_start(void); diff -Nru percona-xtrabackup-2.2.3/include/welcome_copyright_notice.h percona-xtrabackup-2.3.7/include/welcome_copyright_notice.h --- percona-xtrabackup-2.2.3/include/welcome_copyright_notice.h 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/include/welcome_copyright_notice.h 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -16,7 +16,7 @@ #ifndef _welcome_copyright_notice_h_ #define _welcome_copyright_notice_h_ -#define COPYRIGHT_NOTICE_CURRENT_YEAR "2014" +#define COPYRIGHT_NOTICE_CURRENT_YEAR "2015" /* This define specifies copyright notice which is displayed by every MySQL diff -Nru percona-xtrabackup-2.2.3/libmysql/authentication_win/CMakeLists.txt percona-xtrabackup-2.3.7/libmysql/authentication_win/CMakeLists.txt --- percona-xtrabackup-2.2.3/libmysql/authentication_win/CMakeLists.txt 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/libmysql/authentication_win/CMakeLists.txt 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -32,7 +32,6 @@ SOURCE_GROUP(Headers REGULAR_EXPRESSION ".*h$") -INSTALL_DEBUG_SYMBOLS(auth_win_client) IF(MSVC) INSTALL_DEBUG_TARGET(auth_win_client DESTINATION ${INSTALL_LIBDIR}/debug) ENDIF() diff -Nru percona-xtrabackup-2.2.3/libmysql/CMakeLists.txt percona-xtrabackup-2.3.7/libmysql/CMakeLists.txt --- percona-xtrabackup-2.2.3/libmysql/CMakeLists.txt 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/libmysql/CMakeLists.txt 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -183,7 +183,6 @@ MERGE_LIBRARIES(mysqlclient STATIC ${LIBS} COMPONENT Development NOINSTALL 1) # Visual Studio users need debug static library for debug projects -INSTALL_DEBUG_SYMBOLS(clientlib) IF(MSVC) ENDIF() diff -Nru percona-xtrabackup-2.2.3/libmysql/errmsg.c percona-xtrabackup-2.3.7/libmysql/errmsg.c --- percona-xtrabackup-2.2.3/libmysql/errmsg.c 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/libmysql/errmsg.c 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -107,6 +107,8 @@ void init_client_errs(void) { + compile_time_assert(array_elements(client_errors) == + (CR_ERROR_LAST - CR_ERROR_FIRST + 2)); (void) my_error_register(get_client_errmsgs, CR_ERROR_FIRST, CR_ERROR_LAST); } diff -Nru percona-xtrabackup-2.2.3/libmysql/libmysql.c percona-xtrabackup-2.3.7/libmysql/libmysql.c --- percona-xtrabackup-2.2.3/libmysql/libmysql.c 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/libmysql/libmysql.c 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -1335,6 +1335,10 @@ res= net_realloc(net, buf_length + length); if (res) { + if (net->last_errno == ER_OUT_OF_RESOURCES) + net->last_errno= CR_OUT_OF_MEMORY; + else if (net->last_errno == ER_NET_PACKET_TOO_LARGE) + net->last_errno= CR_NET_PACKET_TOO_LARGE; strmov(net->sqlstate, unknown_sqlstate); strmov(net->last_error, ER(net->last_errno)); } diff -Nru percona-xtrabackup-2.2.3/libmysqld/CMakeLists.txt percona-xtrabackup-2.3.7/libmysqld/CMakeLists.txt --- percona-xtrabackup-2.2.3/libmysqld/CMakeLists.txt 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/libmysqld/CMakeLists.txt 2017-02-27 07:47:02.000000000 +0000 @@ -81,7 +81,7 @@ ADD_CONVENIENCE_LIBRARY(sql_embedded ${SQL_EMBEDDED_SOURCES}) DTRACE_INSTRUMENT(sql_embedded) -ADD_DEPENDENCIES(sql_embedded GenError GenServerSource) +ADD_DEPENDENCIES(sql_embedded GenError GenServerSource GenDigestServerSource) # On Windows, static embedded server library is called mysqlserver.lib # On Unix, it is libmysqld.a diff -Nru percona-xtrabackup-2.2.3/libmysqld/lib_sql.cc percona-xtrabackup-2.3.7/libmysqld/lib_sql.cc --- percona-xtrabackup-2.2.3/libmysqld/lib_sql.cc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/libmysqld/lib_sql.cc 2017-02-27 07:47:02.000000000 +0000 @@ -2,6 +2,9 @@ * Copyright (c) 2000 * SWsoft company * + * Modifications copyright (c) 2001, 2014. Oracle and/or its affiliates. + * All rights reserved. + * * This material is provided "as is", with absolutely no warranty expressed * or implied. Any use is at your own risk. * @@ -424,11 +427,7 @@ thd->clear_data_list(); thd->store_globals(); thd->release_resources(); - - mysql_mutex_lock(&LOCK_thread_count); remove_global_thread(thd); - mysql_mutex_unlock(&LOCK_thread_count); - delete thd; my_pthread_setspecific_ptr(THR_THD, 0); mysql->thd=0; diff -Nru percona-xtrabackup-2.2.3/mysql-test/collections/default.experimental percona-xtrabackup-2.3.7/mysql-test/collections/default.experimental --- percona-xtrabackup-2.2.3/mysql-test/collections/default.experimental 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/collections/default.experimental 2017-02-27 07:47:02.000000000 +0000 @@ -14,7 +14,6 @@ parts.partition_debug_innodb # Bug#14150368 2013-03-07 anitha Failing very frequently on PB2 rpl.rpl_delayed_slave # BUG#11764654 rpl_delayed_slave fails sporadically in pb -rpl.rpl_innodb_bug28430 # Bug#11754425 rpl.rpl_show_slave_running # BUG#12346048 2011-04-11 sven fails sporadically on pb2 rpl.rpl_spec_variables @solaris # Bug #17337114 2013-08-20 Luis Soares failing on pb2 with timeout for 'CHECK WARNINGS' rpl.rpl_gtid_logs_without_rotate_or_stop_event @windows # Bug#16207800 2013-02-09 anitha Fails very frequently on windows diff -Nru percona-xtrabackup-2.2.3/mysql-test/extra/binlog_tests/binlog_mysqlbinlog_fill.inc percona-xtrabackup-2.3.7/mysql-test/extra/binlog_tests/binlog_mysqlbinlog_fill.inc --- percona-xtrabackup-2.2.3/mysql-test/extra/binlog_tests/binlog_mysqlbinlog_fill.inc 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/extra/binlog_tests/binlog_mysqlbinlog_fill.inc 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,53 @@ +# ==== Purpose ==== +# +# Add [position|datetime] data to mysqlbinlog. To generate a binary log with +# a few deterministic,increasing timestamps. +# +# ==== Implementation ==== + +# We need to set fixed timestamps in this test. +# Use a date in the future to keep a growing timestamp along the +# binlog (including the Start_log_event). This test will work +# unchanged everywhere, because mysql-test-run has fixed TZ, which it +# exports (so mysqlbinlog has same fixed TZ). +# +# ===== Assumption ======== +# As this is a generic file and be used by other test, So we have made an +# assumption that a table is already created with defination like +# CREATE TABLE t1 (a INT); +# + +# Binlog 1: +# One transaction with timestamp 2031-01-01 12:00:00 +--let $datetime_1= 2031-01-01 12:00:00 +eval SET TIMESTAMP= UNIX_TIMESTAMP("$datetime_1"); +INSERT INTO t1 VALUES(1); +--let $pos_1= query_get_value(SHOW MASTER STATUS, Position, 1) + +# One transaction with timestamp 2032-01-01 12:00:00 +--let $datetime_2= 2032-01-01 12:00:00 +eval SET TIMESTAMP= UNIX_TIMESTAMP("$datetime_2"); +INSERT INTO t1 VALUES(2); +--let $pos_2= query_get_value(SHOW MASTER STATUS, Position, 1) + +# One transaction with timestamp 2033-01-01 12:00:00 +eval SET TIMESTAMP= UNIX_TIMESTAMP("2033-01-01 12:00:00"); +INSERT INTO t1 VALUES(3); + +--let $file_1= query_get_value(SHOW MASTER STATUS, File, 1) +FLUSH LOGS; + +#Binlog 2: +# One transaction with timestamp 2034-01-01 12:00:00 +SET TIMESTAMP= UNIX_TIMESTAMP("2034-01-01 12:00:00"); +INSERT INTO t1 VALUES(4); +--let $pos_3= query_get_value(SHOW MASTER STATUS, Position, 1) + +# One transaction with timestamp 2035-01-01 12:00:00 +--let $datetime_3= 2035-01-01 12:00:00 +eval SET TIMESTAMP= UNIX_TIMESTAMP("$datetime_3"); +INSERT INTO t1 VALUES(5); + +--let $file_2= query_get_value(SHOW MASTER STATUS, File, 1) +FLUSH LOGS; + diff -Nru percona-xtrabackup-2.2.3/mysql-test/extra/binlog_tests/binlog_mysqlbinlog_start_stop.inc percona-xtrabackup-2.3.7/mysql-test/extra/binlog_tests/binlog_mysqlbinlog_start_stop.inc --- percona-xtrabackup-2.2.3/mysql-test/extra/binlog_tests/binlog_mysqlbinlog_start_stop.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/extra/binlog_tests/binlog_mysqlbinlog_start_stop.inc 2017-02-27 07:47:02.000000000 +0000 @@ -11,36 +11,7 @@ CREATE TABLE t1 (a INT); RESET MASTER; -# We need to set fixed timestamps in this test. -# Use a date in the future to keep a growing timestamp along the -# binlog (including the Start_log_event). This test will work -# unchanged everywhere, because mysql-test-run has fixed TZ, which it -# exports (so mysqlbinlog has same fixed TZ). ---let $datetime_1= 2031-01-01 12:00:00 -eval SET TIMESTAMP= UNIX_TIMESTAMP("$datetime_1"); -INSERT INTO t1 VALUES(1); ---let $pos_1= query_get_value(SHOW MASTER STATUS, Position, 1) - ---let $datetime_2= 2032-01-01 12:00:00 -eval SET TIMESTAMP= UNIX_TIMESTAMP("$datetime_2"); -INSERT INTO t1 VALUES(2); ---let $pos_2= query_get_value(SHOW MASTER STATUS, Position, 1) - -eval SET TIMESTAMP= UNIX_TIMESTAMP("2033-01-01 12:00:00"); -INSERT INTO t1 VALUES(3); - ---let $file_1= query_get_value(SHOW MASTER STATUS, File, 1) -FLUSH LOGS; - -SET TIMESTAMP= UNIX_TIMESTAMP("2034-01-01 12:00:00"); -INSERT INTO t1 VALUES(4); ---let $pos_3= query_get_value(SHOW MASTER STATUS, Position, 1) ---let $datetime_3= 2035-01-01 12:00:00 -eval SET TIMESTAMP= UNIX_TIMESTAMP("$datetime_3"); -INSERT INTO t1 VALUES(5); - ---let $file_2= query_get_value(SHOW MASTER STATUS, File, 1) -FLUSH LOGS; +--source extra/binlog_tests/binlog_mysqlbinlog_fill.inc --let $MYSQLD_DATADIR= `select @@datadir` @@ -80,12 +51,14 @@ --let $extra_options= --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT $file_1 $file_2 --source extra/binlog_tests/mysqlbinlog_start_stop_1.inc + # ==== to-last-log ==== --let $extra_options= --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT $file_1 ---let $option= --to-last-log +--let $options= --to-last-log --source extra/binlog_tests/mysqlbinlog_start_stop_2.inc + --echo --echo ==== clean up ==== DROP TABLE t1; diff -Nru percona-xtrabackup-2.2.3/mysql-test/extra/binlog_tests/mysqlbinlog_start_stop_1.inc percona-xtrabackup-2.3.7/mysql-test/extra/binlog_tests/mysqlbinlog_start_stop_1.inc --- percona-xtrabackup-2.2.3/mysql-test/extra/binlog_tests/mysqlbinlog_start_stop_1.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/extra/binlog_tests/mysqlbinlog_start_stop_1.inc 2017-02-27 07:47:02.000000000 +0000 @@ -27,26 +27,26 @@ # $extra_options # Options for mysqlbinlog, specifying which input file to read. ---let $option= --base64-output=never +--let $options= --base64-output=never --source extra/binlog_tests/mysqlbinlog_start_stop_2.inc ---let $option= --offset=2 +--let $options= --offset=2 --source extra/binlog_tests/mysqlbinlog_start_stop_2.inc ---let $option= --start-position=$start_position +--let $options= --start-position=$start_position --source extra/binlog_tests/mysqlbinlog_start_stop_2.inc ---let $option= --stop-position=$stop_position +--let $options= --stop-position=$stop_position --source extra/binlog_tests/mysqlbinlog_start_stop_2.inc ---let $option= --start-position=$start_position --stop-position=$stop_position +--let $options= --start-position=$start_position --stop-position=$stop_position --source extra/binlog_tests/mysqlbinlog_start_stop_2.inc ---let $option= "--start-datetime=$start_datetime" +--let $options= "--start-datetime=$start_datetime" --source extra/binlog_tests/mysqlbinlog_start_stop_2.inc ---let $option= "--stop-datetime=$stop_datetime" +--let $options= "--stop-datetime=$stop_datetime" --source extra/binlog_tests/mysqlbinlog_start_stop_2.inc ---let $option= "--start-datetime=$start_datetime" "--stop-datetime=$stop_datetime" +--let $options= "--start-datetime=$start_datetime" "--stop-datetime=$stop_datetime" --source extra/binlog_tests/mysqlbinlog_start_stop_2.inc diff -Nru percona-xtrabackup-2.2.3/mysql-test/extra/binlog_tests/mysqlbinlog_start_stop_2.inc percona-xtrabackup-2.3.7/mysql-test/extra/binlog_tests/mysqlbinlog_start_stop_2.inc --- percona-xtrabackup-2.2.3/mysql-test/extra/binlog_tests/mysqlbinlog_start_stop_2.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/extra/binlog_tests/mysqlbinlog_start_stop_2.inc 2017-02-27 07:47:02.000000000 +0000 @@ -20,15 +20,24 @@ # Pretty-print $option_text ---let $option_text= `SELECT SUBSTR(REPLACE('$option', '"', ''), 3)` -while (`SELECT LOCATE('=', '$option_text')`) +--let $option_text= `SELECT REPLACE('$options', '"', '')` +--let $eq_pos= `SELECT LOCATE('=', '$option_text')` +while ($eq_pos != 0) { - --let $dash_pos= `SELECT LOCATE('--', '$option_text')` - --let $option_text= `SELECT CONCAT(SUBSTR('$option_text', 1, LOCATE('=', '$option_text') - 1), IF($dash_pos, CONCAT(' ', SUBSTR('$option_text', $dash_pos + 2)), ''))` + --let $dash_pos= `SELECT LOCATE('--', '$option_text', $eq_pos)` + --let $left_part= `SELECT SUBSTR('$option_text', 1, $eq_pos - 1)` + --let $right_part= + if ($dash_pos != 0) { + --let $right_part= `SELECT CONCAT(' ', SUBSTR('$option_text', $dash_pos + 2))` + } + --let $option_text= $left_part$right_part + --let $eq_pos= `SELECT LOCATE('=', '$option_text')` } +--let $option_text= `SELECT REPLACE('$option_text', '--', '')` + --echo --echo ---- $option_text ---- # Print output --replace_regex /SET @@SESSION.GTID_NEXT= '.*'/SET @@SESSION.GTID_NEXT= 'GTID'/ /([0-9A-Fa-f\-]{36})\:[0-9]+\-[0-9]+/UUID:#-#/ ---exec $MYSQL_BINLOG --short-form $option $extra_options +--exec $MYSQL_BINLOG --short-form $options $extra_options diff -Nru percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_crash_safe.inc percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_crash_safe.inc --- percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_crash_safe.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_crash_safe.inc 2017-02-27 07:47:02.000000000 +0000 @@ -95,7 +95,10 @@ { if ($failure != 'd,crash_after_apply') { - --let $outcome= O1 + if ($failure != 'd,crash_after_commit_before_update_pos') + { + --let $outcome= O1 + } } } --echo FAILURE $failure and OUTCOME $outcome diff -Nru percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_crash_safe.test percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_crash_safe.test --- percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_crash_safe.test 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_crash_safe.test 2017-02-27 07:47:02.000000000 +0000 @@ -2,16 +2,17 @@ # This test case aims at checking if a slave does not go out of sync after # injecting crashes at specific points. The following scenarios are analyzed: # -# |------------+-----------------------+---------+---------+---------| -# | SCENARIO # | SCENARIO | CRASH-1 | CRASH-2 | CRASH-3 | -# |------------+-----------------------+---------+---------+---------| -# | 1 | T | O1 | O1 | O2 | -# | 2 | T-* | O1 | O1 | O2 | -# | 3 | B T T-* C | O1 | O1 | O2 | -# | 4 | B T-* T C | O1 | O1 | O2 | -# | 5 | N | O3 | O3 | O2 | -# | 6 | N-* | O3 | O3 | O2 | -# |------------+-----------------------+---------+---------+---------| +# Following table represents the outcomes when Rli are on table. +# |------------+-----------------------+---------+---------+---------+---------| +# | SCENARIO # | SCENARIO | CRASH-1 | CRASH-2 | CRASH-3 | CRASH-4 | +# |------------+-----------------------+---------+---------+---------+---------| +# | 1 | T | O1 | O1 | O2 | O2 | +# | 2 | T-* | O1 | O1 | O2 | O2 | +# | 3 | B T T-* C | O1 | O1 | O2 | O2 | +# | 4 | B T-* T C | O1 | O1 | O2 | O2 | +# | 5 | N | O3 | O3 | O2 | O3 | +# | 6 | N-* | O3 | O3 | O2 | O3 | +# |------------+-----------------------+---------+---------+---------+---------| # # Legend: # @@ -45,6 +46,9 @@ # CRASH-3 - crash_after_commit_and_update_pos - after committing and updating # the positions. # +# CRASH-4 - crash_after_commit_before_update_pos - after committing and +# updating positions in (FILE). +# # After injecting the faults, we expect the following outcomes: # # O1. In this case, the slave shall correctly recover to "S" without going out @@ -88,7 +92,7 @@ --echo # EXECUTE CASES CRASHING THE XID --echo ################################################################################### connection master; ---let $failures= d,crash_after_apply d,crash_before_update_pos d,crash_after_update_pos_before_apply +--let $failures= d,crash_after_apply d,crash_before_update_pos d,crash_after_update_pos_before_apply d,crash_after_commit_before_update_pos # # Executes a set of tests while there are crash points in $failures. # diff -Nru percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_deadlock.test percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_deadlock.test --- percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_deadlock.test 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_deadlock.test 2017-02-27 07:47:02.000000000 +0000 @@ -181,9 +181,7 @@ let $slave_sql_errno= 1205; # ER_LOCK_TIMEOUT let $show_slave_sql_error= 0; -let $rpl_debug= 1; source include/wait_for_slave_sql_error.inc; -let $rpl_debug= 0; rollback; diff -Nru percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_gtid_drop_table.inc percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_gtid_drop_table.inc --- percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_gtid_drop_table.inc 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_gtid_drop_table.inc 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,48 @@ +# ==== Purpose ==== +# +# This include will try to issue the $statement after setting GTID_NEXT to the +# $next_gtid variable expecting $expected_error if it is defined and non-zero. +# +# If the $expected_error is defined and non-zero, this include will also +# rollback the statement to release the ownership of the previously set GTID. +# +# ==== Usage ==== +# +# --let $statement= XXX +# --let $next_gtid= 'UUID:NUMBER' +# [--$expected_error= ER_XXX] +# --source extra/rpl_tests/rpl_gtid_drop_table.inc +# +# Parameters: +# $statement +# The SQL statement to be executed. +# +# $next_gtid +# The GTID to be set as GTID_NEXT. +# +# $expected_error +# The error expected when issuing the command. +# Optional, not set means no expected error. + +if (!$statement) +{ + --die ERROR IN TEST: the "statement" variable must be set +} + +if (!$next_gtid) +{ + --die ERROR IN TEST: the "next_gtid" variable must be set +} + +--eval SET GTID_NEXT= $next_gtid +if ($expected_error) +{ + --echo ## Expecting error $expected_error after the statement + --error $expected_error + --eval $statement + ROLLBACK; +} +if (!$expected_error) +{ + --eval $statement +} diff -Nru percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_gtids_restart_slave_io_lost_trx.test percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_gtids_restart_slave_io_lost_trx.test --- percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_gtids_restart_slave_io_lost_trx.test 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_gtids_restart_slave_io_lost_trx.test 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,112 @@ +# +# This test will verify if the slave SQL thread and the slave IO thread behave +# correctly when the IO thread is restarted in the middle of a transaction. +# +# It is expected that the IO thread will retrieve again the partial transaction +# from the beginning and that the SQL thread will rollback the partially +# retrieved transaction before applying the fully retrieved one. +# +# This test will insert some data in the master and then will stop the slave +# IO thread right after queuing an event of a given type, starting the IO +# thread again to fully retrieve the partially received transaction. +# + +--source include/have_gtid.inc + +# As this test depends on the use of a User_var_log_event in a DML statement +# we have to use statement based replication. +--source include/have_binlog_format_statement.inc +--source include/force_restart.inc +# Enable auto_position protocol +--let $use_gtids= 1 +--let $rpl_gtid_utils= 1 +--source include/master-slave.inc +# Test should run only on debug build +source include/have_debug.inc; +source include/have_debug_sync.inc; + +# Initial setup +--connection master +CREATE TABLE t1(i INT) ENGINE=InnoDB; +# The following "FLUSH LOGS" will make the master to clear the "created" flag +# of the Format Description events in the next binlog files (and also in +# their replicated versions in the slave's relaylog). +FLUSH LOGS; +--source include/sync_slave_sql_with_master.inc +SET @save_debug=@@global.debug; + +# +# Actual test starts here. +# +# Test will do the following five iterations +# 1.Stop I/O thread after reading GTID_LOG_EVENT +# 2.Stop I/O thread after reading QUERY_LOG_EVENT +# 3.Stop I/O thread after reading XID_LOG_EVENT +# which is equal to I/O thread sync with master +# 4.Stop I/O thread after the gtid is in EXECUTED_GTID_SET +# i.e., after sync slave sql thread with master. +# 5.Stop I/O thread after reading USER_VAR_LOG_EVENT +# and after that make sure there are no missing gtid events +# i.e., we will verify this by doing diff between master:t1, +# slave:t1. + +--let $i=1 +while ($i <= 5) +{ + if ($i == 1) + { + SET GLOBAL DEBUG='d,stop_io_after_reading_gtid_log_event'; + } + if ($i == 2) + { + SET GLOBAL DEBUG='d,stop_io_after_reading_query_log_event'; + } + if ($i == 3) + { + # Stopping sql thread to make sure that case 3 is not equal to case 4. + --source include/stop_slave_sql.inc + SET GLOBAL DEBUG='d,stop_io_after_reading_xid_log_event'; + } + if ($i == 5) + { + SET GLOBAL DEBUG='d,stop_io_after_reading_user_var_log_event'; + } + --connection master + BEGIN; + --eval INSERT INTO t1 VALUES ($i) + --eval SET @v= $i * 100 + --eval INSERT INTO t1 VALUES (@v) + COMMIT; + --connection slave + if ($i == 4) + { + --connection master + --source include/sync_slave_sql_with_master.inc + --source include/stop_slave_io.inc + } + --source include/wait_for_slave_io_to_stop.inc + # Remove the debug point and restart the slave threads + SET GLOBAL DEBUG= @save_debug; + + --source include/start_slave_io.inc + if ($i == 3) + { + --source include/start_slave_sql.inc + } + # Do one more insert on master and then sync slave with master (to make sure + # that re-replicating the events are done successfully. + --connection master + --eval INSERT INTO t1 VALUES ($i) + --source include/sync_slave_sql_with_master.inc + # Now compare master and slave's t1 table data + # to prove that there are no missing gtids. + --let diff_tables= master:t1, slave:t1 + --source include/diff_tables.inc + --inc $i +} + +# Cleanup +--connection master +DROP TABLE t1; + +--source include/rpl_end.inc diff -Nru percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_kill_query.inc percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_kill_query.inc --- percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_kill_query.inc 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_kill_query.inc 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,129 @@ +# ==== Purpose ==== +# +# This is an auxiliary file used by rpl_kill_query.test. +# +# The purpose is to generate a statement that updates a +# non-transactional table, and kill the statement in the middle, +# so that it gets half-executed. +# +# ==== Usage ==== +# +# --let $database= DATABASE +# --let $table= TABLE +# --source include/rpl_kill_query.inc +# +# Parameters: +# $database +# The current database will be set to $database before executing the +# killed statement. +# +# $table +# The statement will modify this table. +# +# Assumptions: +# - $database should *not* be created before executing this script. +# +# ==== Implementation ==== +# +# Apparently, not all statements can be killed in the middle; a simple +# INSERT does not seem to work. One case that can be killed is an +# INSERT with a trigger; then there is a check for being killed in the +# trigger invocation. +# +# So our approach is to put a BEFORE INSERT trigger on the table. The +# trigger will execute fast for the first row, and go to sleep for the +# second row. This allows us to kill the query in the middle of the +# sleep. Then, we make sure to wait until *after* the first row is +# inserted, and *before* the sleep is finished. That ensures that at +# least one row is inserted in the trigger table, and not both rows +# are inserted in the main table, so the statement is half-executed, +# as required. +# +# To sleep on the second row, we use a SLEEP() inside a condition that +# is triggered only for the second row. +# +# To indicate to other threads that the first row has been inserted, +# we do SET @@GLOBAL.BINLOG_FORMAT = ROW before going to sleep. (It +# does not seem to be enough to wait for rows to be inserted in the +# main table or trigger table, probably since locks prevent other +# threads from seeing the partial insert even in a non-transactional +# table.) This will not affect execution since the global values is +# only used as default for new connections. +# +# As a sanity-check, we verify that after the query is killed, at most +# one row has been inserted in the main table, and at least one row +# has been inserted in the second table. + + +--let $_rkq_current_database_old= `SELECT DATABASE()` + +--let $assert_cond= @@GLOBAL.BINLOG_FORMAT = "STATEMENT" +--let $assert_text= Test only works if binlog_format is statement +--source include/assert.inc + +# Get connection id +--source include/rpl_connection_master.inc +--let $connection_id= `SELECT CONNECTION_ID()` + +# Create database, table, and trigger table +eval CREATE DATABASE $database; +eval USE $database; +eval CREATE TABLE $table (a INT) ENGINE = MyISAM; +eval CREATE TABLE trigger_table (a INT) ENGINE = MyISAM; + +# This master-only trigger will sleep for N seconds when the value N +# is inserted to a row. +SET SQL_LOG_BIN=0; +--delimiter | +eval +CREATE TRIGGER trig1 BEFORE INSERT ON $table FOR EACH ROW +BEGIN + IF NEW.a != 0 THEN + SET @@GLOBAL.BINLOG_FORMAT = 'row'; + DO SLEEP(1000000); + END IF; + INSERT INTO trigger_table VALUES (1); +END| +--delimiter ; +SET SQL_LOG_BIN=1; + +# Sleep 1000000 seconds before inserting the second row. +--send +eval INSERT INTO $table VALUES (0), (1); + +# Wait until the sleep for the second row happens. +--source include/rpl_connection_master1.inc + +--let $wait_condition= SELECT @@GLOBAL.BINLOG_FORMAT = 'ROW' +--let $show_rpl_debug_info= 1 +--source include/wait_condition.inc + +# Kill query. +--replace_result $connection_id +eval KILL QUERY $connection_id; + +# Get the error message. +--source include/rpl_connection_master.inc +--error ER_QUERY_INTERRUPTED +reap; + +SET @@GLOBAL.BINLOG_FORMAT = 'STATEMENT'; + +# Check that at most one row was inserted in main table. +--let $assert_text= At most one row should be inserted in $database.$table +--let $assert_cond= COUNT(*) <= 1 FROM $database.$table +--source include/assert.inc + +# Check that at least one row was inserted in trigger table. +--let $assert_text= At least one row should be inserted in $database.trigger_table +--let $assert_cond= COUNT(*) >= 1 FROM $database.trigger_table +--source include/assert.inc + +# Clean up. +SET SQL_LOG_BIN=0; +eval DROP TRIGGER trig1; +SET SQL_LOG_BIN=1; +DROP TABLE trigger_table; +eval DROP TABLE $table; +eval DROP DATABASE $database; +--eval USE $_rkq_current_database_old diff -Nru percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_mts_crash_safe.inc percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_mts_crash_safe.inc --- percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_mts_crash_safe.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_mts_crash_safe.inc 2017-02-27 07:47:02.000000000 +0000 @@ -119,9 +119,7 @@ --let $rpl_server_number= 2 --let $rpl_server_parameters= --skip-slave-start --relay-log-recovery=0 --slave-parallel-workers=0 - --let $rpl_debug= 1 --source include/rpl_start_server.inc - --let $rpl_debug= 0 START SLAVE UNTIL SQL_AFTER_MTS_GAPS; --let $slave_param= Until_Condition @@ -134,9 +132,7 @@ --echo ** regular restart ** --let $rpl_server_number= 2 --let $rpl_server_parameters= --skip-slave-start --slave-transaction-retries=0 --relay-log-info-repository=TABLE --master-info-repository=TABLE --sync-master-info=1 - --let $rpl_debug= 1 --source include/rpl_restart_server.inc - --let $rpl_debug= 0 #### Checking if the recovery worked and the coordinator has an updated state. #### --connection slave diff -Nru percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_mts_execute_partial_trx_in_relay_log.inc percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_mts_execute_partial_trx_in_relay_log.inc --- percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_mts_execute_partial_trx_in_relay_log.inc 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_mts_execute_partial_trx_in_relay_log.inc 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,36 @@ +# ==== Implementation ==== +# +# 1. Set debug point to rotate relay log after table_map_event. +# 2. Wait for io thread to receive table_map_event and stop it. +# 3. Start the io thread after it is stopped. +# 4. Check that there is no failure on replication. +# + +# Initial setup +--source include/rpl_connection_master.inc +CREATE TABLE t1(i INT) ENGINE=InnoDB; +FLUSH LOGS; +--source include/sync_slave_sql_with_master.inc + +# Set debug point to rotate relay log after table_map_event. +SET @save_debug=@@global.debug; +SET GLOBAL DEBUG='d,stop_io_after_reading_table_map_event'; +--source include/rpl_connection_master.inc +INSERT INTO t1 VALUES (1); + +--source include/rpl_connection_slave.inc +# Wait for io thread to receive table_map_event and stop it. +--source include/wait_for_slave_io_to_stop.inc +SET GLOBAL DEBUG= @save_debug; + +# Start the io thread after it is stopped. +--source include/start_slave_io.inc + +# Check that their is no failure on replication. +--source include/rpl_connection_master.inc +--source include/sync_slave_sql_with_master.inc + +# Cleanup +--source include/rpl_connection_master.inc +DROP TABLE t1; +--source include/rpl_end.inc diff -Nru percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_row_blob.test percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_row_blob.test --- percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_row_blob.test 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_row_blob.test 2017-02-27 07:47:02.000000000 +0000 @@ -33,10 +33,7 @@ SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3; -save_master_pos; -connection slave; -sync_with_master; ---source include/wait_for_ndb_to_binlog.inc +--source include/sync_slave_sql_with_master.inc --echo --echo **** Data Insert Validation Slave Section test.t1 **** --echo @@ -56,10 +53,7 @@ --echo SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; -save_master_pos; -connection slave; -sync_with_master; ---source include/wait_for_ndb_to_binlog.inc +--source include/sync_slave_sql_with_master.inc --echo --echo **** Data Update Validation Slave Section test.t1 **** --echo @@ -127,10 +121,7 @@ FROM test.t2 WHERE c1=1; SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) FROM test.t2 WHERE c1=2; -save_master_pos; -connection slave; -sync_with_master; ---source include/wait_for_ndb_to_binlog.inc +--source include/sync_slave_sql_with_master.inc --echo --echo **** Data Insert Validation Slave Section test.t2 **** --echo @@ -153,10 +144,7 @@ FROM test.t2 WHERE c1=1; SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) FROM test.t2 WHERE c1=2; -save_master_pos; -connection slave; -sync_with_master; ---source include/wait_for_ndb_to_binlog.inc +--source include/sync_slave_sql_with_master.inc --echo --echo **** Data Update Validation Slave Section test.t2 **** --echo diff -Nru percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_row_func003.test percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_row_func003.test --- percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_row_func003.test 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_row_func003.test 2017-02-27 07:47:02.000000000 +0000 @@ -54,14 +54,8 @@ ROLLBACK; SET AUTOCOMMIT=1; -# Sync master and slave for all engines except NDB -if (`SELECT UPPER(LEFT('$engine_type', 3)) != 'NDB'`) { - --source include/sync_slave_sql_with_master.inc - connection master; -} -# Sync master and slave for NDB engine -let $wait_time= 6; ---source include/wait_for_ndb_to_binlog.inc +--source include/sync_slave_sql_with_master.inc +connection master; # Time to dump the databases and so we can see if they match diff -Nru percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_row_sp003.test percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_row_sp003.test --- percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_row_sp003.test 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_row_sp003.test 2017-02-27 07:47:02.000000000 +0000 @@ -54,9 +54,7 @@ connection master; SELECT * FROM test.t1; #show binlog events; ---source include/wait_for_ndb_to_binlog.inc --source include/sync_slave_sql_with_master.inc -connection slave; SELECT * FROM test.t1; connection master; @@ -68,7 +66,6 @@ SELECT * FROM test.t1; --source include/sync_slave_sql_with_master.inc -connection slave; SELECT * FROM test.t1; connection master; #show binlog events from 720; diff -Nru percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_stop_slave.test percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_stop_slave.test --- percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_stop_slave.test 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_stop_slave.test 2017-02-27 07:47:02.000000000 +0000 @@ -42,6 +42,10 @@ connection slave1; --echo # To resume slave SQL thread SET DEBUG_SYNC= 'now SIGNAL signal.continue'; +# wait for the sql thread to come out of the +# waiting phase before resetting the signals +--let $wait_condition= select count(*)=0 from information_schema.processlist where state LIKE '%debug sync point%' and info LIKE '%INSERT INTO t1 VALUES (1)%' +--source include/wait_condition.inc SET DEBUG_SYNC= 'RESET'; --echo diff -Nru percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_trig004.test percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_trig004.test --- percona-xtrabackup-2.2.3/mysql-test/extra/rpl_tests/rpl_trig004.test 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/extra/rpl_tests/rpl_trig004.test 2017-02-27 07:47:02.000000000 +0000 @@ -35,10 +35,7 @@ #show binlog events; select * from test.t1; select * from test.t2; -let $wait_time= 10; ---source include/wait_for_ndb_to_binlog.inc --source include/sync_slave_sql_with_master.inc -connection slave; select * from test.t1; select * from test.t2; diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/begin_include_file.inc percona-xtrabackup-2.3.7/mysql-test/include/begin_include_file.inc --- percona-xtrabackup-2.2.3/mysql-test/include/begin_include_file.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/begin_include_file.inc 2017-02-27 07:47:02.000000000 +0000 @@ -34,6 +34,7 @@ # # # At the beginning of include/my_file.inc: # --let $include_filename= my_file.inc +# [--let $include_silent= 1] # [--let $rpl_debug= 1] # --source include/begin_include_file.inc # @@ -74,6 +75,13 @@ if ($rpl_debug) { --echo $_include_file_indent==== BEGIN include/$include_filename ==== + # Print this text (just once) to prevent checking in result files containing + # debug info. + if (!$printed_this_should_not_be_checked_in) + { + --echo DO_NOT_CHECK_IN_THIS_LINE: \$rpl_debug should only be used for debugging. Never check in a test that has $rpl_debug=1. + --let $printed_this_should_not_be_checked_in= 1 + } } --let $_include_file_enabled_warnings= $ENABLED_WARNINGS$_include_file_enabled_warnings diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/change_file_perms.inc percona-xtrabackup-2.3.7/mysql-test/include/change_file_perms.inc --- percona-xtrabackup-2.2.3/mysql-test/include/change_file_perms.inc 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/change_file_perms.inc 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,12 @@ +# $file_perms need to be in octal base +# Provide a file name and the required new file permissions. +# The file's permissions will be changed as per the input file +# permissions. + +--perl +use strict; +my $file_perms= $ENV{'_FILE_PERMS_'} or die "File permissions are not set"; +my $input_file= $ENV{'_INPUT_FILE_'} or die "Input file is not set"; +die ('Unable to find file \'$input_file\'') unless (-e $input_file); +chmod(oct($file_perms), $input_file) or die ('Unable to set file permissions for file \'$input_file\''); +EOF diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/eval.inc percona-xtrabackup-2.3.7/mysql-test/include/eval.inc --- percona-xtrabackup-2.2.3/mysql-test/include/eval.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/eval.inc 2017-02-27 07:47:02.000000000 +0000 @@ -36,7 +36,6 @@ # # --let $eval_expr= [SHOW SLAVE STATUS, Relay_Log_Pos, 1] + 47 # [--let $eval_no_result= 1] -# [--let $eval_quiet= 1] # [--let $rpl_debug= 1] # --source include/eval.inc # --echo Result was '$eval_result' diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/get_file_permissions.inc percona-xtrabackup-2.3.7/mysql-test/include/get_file_permissions.inc --- percona-xtrabackup-2.2.3/mysql-test/include/get_file_permissions.inc 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/get_file_permissions.inc 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,9 @@ +--perl +use strict; +my $input_file= $ENV{'_INPUT_FILE_'} or die "Input file is not set"; +my $mode = (stat($input_file))[2]; +open(FILE, ">", "$ENV{MYSQL_TMP_DIR}/permissions.inc") or die; +my $perm= $mode & 07777; +print FILE "let \$FILE_PERMISSIONS= $perm;\n"; +close FILE; +EOF diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/get_ndb_epochs.inc percona-xtrabackup-2.3.7/mysql-test/include/get_ndb_epochs.inc --- percona-xtrabackup-2.2.3/mysql-test/include/get_ndb_epochs.inc 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/get_ndb_epochs.inc 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,60 @@ +# ==== Purpose ==== +# +# Extract the epoch values from SHOW ENGINE NDB STATUS. +# +# ==== Usage ==== +# +# --source include/get_ndb_epochs.inc +# --echo $ndb_latest_epoch +# --echo $ndb_latest_trans_epoch +# --echo $ndb_latest_received_binlog_epoch +# --echo $ndb_latest_handled_binlog_epoch +# --echo $ndb_latest_applied_binlog_epoch +# +# ==== Parameters ==== +# +# $ndb_status_binlog_row +# The row number of the output of SHOW ENGINE NDB STATUS +# last was seen. +# No need to set explictly, but used between sourcing this +# include file several times, since it is highly probable +# (but not certain) that same row number also applies next +# time. + +if (!$ndb_status_binlog_row) +{ + let $ndb_status_binlog_row = 1; +} + +# Try two times, in case the row number of binlog state changes +# between two invocations of SHOW ENGINE NDB STATUS. +let $attempts= 2; +while ($attempts) +{ + let $q= query_get_value(SHOW ENGINE NDB STATUS, Status, $ndb_status_binlog_row); + if ( `SELECT '$q' = 'No such row'` ) + { + dec $attempts; + if (!$attempts) + { + echo ERROR IN TEST: No binlog row found in SHOW ENGINE NDB STATUS; + die ERROR IN TEST: No binlog row found in SHOW ENGINE NDB STATUS; + } + # row will be increased to 1 further down + let $ndb_status_binlog_row = 0; + } + if (`SELECT INSTR('$q', 'latest_epoch=')`) + { + let $attempts = 0 ; + } + if ($attempts) + { + inc $ndb_status_binlog_row; + } +} + +let $ndb_latest_epoch= `SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING('$q', INSTR('$q', 'latest_epoch=')), ',', 1), '=', -1)`; +let $ndb_latest_trans_epoch= `SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING('$q', INSTR('$q', 'latest_trans_epoch=')), ',', 1), '=', -1)`; +let $ndb_latest_received_binlog_epoch= `SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING('$q', INSTR('$q', 'latest_received_binlog_epoch=')), ',', 1), '=', -1)`; +let $ndb_latest_handled_binlog_epoch= `SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING('$q', INSTR('$q', 'latest_handled_binlog_epoch=')), ',', 1), '=', -1)`; +let $ndb_latest_applied_binlog_epoch= `SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING('$q', INSTR('$q', 'latest_applied_binlog_epoch=')), ',', 1), '=', -1)`; diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/gtid_step_assert.inc percona-xtrabackup-2.3.7/mysql-test/include/gtid_step_assert.inc --- percona-xtrabackup-2.2.3/mysql-test/include/gtid_step_assert.inc 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/gtid_step_assert.inc 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,96 @@ +# ==== Purpose ==== +# +# Assert that exactly one GTID (or a specified number) was added to +# @@GLOBAL.GTID_EXECUTED since last call to gtid_step_reset.inc or +# gtid_step_assert.inc +# +# ==== Usage ==== +# +# [--let $gtid_step_count= N] +# [--let $gtid_step_only_count= [0|1]] +# [--let $gtid_step_uuid= UUID] +# --source include/gtid_step_assert.inc +# +# Parameters: +# $gtid_step_count +# Assert that N GTIDs were added to @@GLOBAL.GTID_EXECUTED. If +# this is not given, the default value is 1. +# +# $gtid_step_only_count +# By default, this script checks the numeric component of the +# GTIDs added to @@GLOBAL.GTID_EXECUTED to see that the correct +# number was generated. If this parameter is nonzero, it only +# counts the number of added GTIDs to see that it is equal to +# $gtid_step_count, without caring that they were generated in +# order (or generated on this server). +# +# $gtid_step_uuid +# By default, when $gtid_step_count is not set, asserts that the +# uuid component of all GTIDs added to @@GLOBAL.GTID_EXECUTED is +# equal to @@GLOBAL.SERVER_UUID. If this parameter is given, uses +# that UUID instead. +# +# ==== Example ==== +# +# # (1) Remember the current position. +# --source include/gtid_step_reset.inc +# CREATE TABLE t1 (a INT); +# # (2) Assert that exactly one GTID was generated since (1). +# --source include/gtid_step_assert.inc +# INSERT INTO t1 VALUES (1); +# INSERT INTO t1 VALUES (2); +# # (3) Assert that exactly 2 GTIDs were generated since (2). +# --let $gtid_step_count= 2 +# --source include/gtid_step_assert.inc +# # (4) Assert that no GTID was generated since (3). +# --let $gtid_step_count= 0 +# --source include/gtid_step_assert.inc + +if ($uuidf == '') +{ + --die You must source gtid_utils.inc before using gtid_step_assert.inc +} + +--let $_gtid_step_count= 1 +if ($gtid_step_count != '') +{ + --let $_gtid_step_count= $gtid_step_count +} + +--let $_gtid_step_only_count= 0 +if ($gtid_step_only_count != '') +{ + --let $_gtid_step_only_count= $gtid_step_only_count +} + +--let $include_filename= gtid_step_assert.inc [count=$_gtid_step_count, only_count=$_gtid_step_only_count] +--source include/begin_include_file.inc + +--let $_gtid_step_uuid= $gtid_step_uuid +if ($_gtid_step_uuid == '') +{ + --let $_gtid_step_uuid= `SELECT @@GLOBAL.SERVER_UUID` +} + +--let $_gsa_extra_debug_eval_old= $extra_debug_eval +--let $extra_debug_eval= @@GLOBAL.GTID_EXECUTED, GTID_NEXT_GENERATED_SET("$gtid_step_last", "$_gtid_step_uuid", $_gtid_step_count), GTID_SUBTRACT(@@GLOBAL.GTID_EXECUTED, "$gtid_step_last") + +if ($_gtid_step_only_count) +{ + --let $assert_text= Exactly $_gtid_step_count GTIDs should have been committed since last invocation + --let $assert_cond= GTID_COUNT(GTID_SUBTRACT(@@GLOBAL.GTID_EXECUTED, "$gtid_step_last")) = $_gtid_step_count + --source include/assert.inc +} +if (!$_gtid_step_only_count) +{ + --let $assert_text= Exactly $_gtid_step_count GTIDs should have been generated since last invocation + --let $assert_cond= GTID_NEXT_GENERATED_SET("$gtid_step_last", "$_gtid_step_uuid", $_gtid_step_count) = GTID_SUBTRACT(@@GLOBAL.GTID_EXECUTED, "$gtid_step_last") + --source include/assert.inc +} + +--let $extra_debug_eval= $_gsa_extra_debug_eval_old + +--source include/gtid_step_reset.inc + +--let $include_filename= gtid_step_assert.inc +--source include/end_include_file.inc diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/gtid_step_reset.inc percona-xtrabackup-2.3.7/mysql-test/include/gtid_step_reset.inc --- percona-xtrabackup-2.2.3/mysql-test/include/gtid_step_reset.inc 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/gtid_step_reset.inc 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,18 @@ +# ==== Purpose ==== +# +# Remember the current value of @@GLOBAL.GTID_EXECUTED to be used by +# subsequent calls to gtid_step_assert.inc +# +# ==== Usage ==== +# +# --source include/gtid_step_reset.inc +# +# See gtid_step_assert.inc for details and examples. + +--let $include_filename= gtid_step_reset.inc +--source include/begin_include_file.inc + +--let $gtid_step_last= `SELECT @@GLOBAL.GTID_EXECUTED` + +--let $include_filename= gtid_step_reset.inc +--source include/end_include_file.inc diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/gtid_utils_end.inc percona-xtrabackup-2.3.7/mysql-test/include/gtid_utils_end.inc --- percona-xtrabackup-2.2.3/mysql-test/include/gtid_utils_end.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/gtid_utils_end.inc 2017-02-27 07:47:02.000000000 +0000 @@ -14,11 +14,17 @@ DROP FUNCTION GTID_IS_EQUAL; DROP FUNCTION GTID_IS_DISJOINT; DROP FUNCTION GTID_IS_DISJOINT_UNION; +DROP FUNCTION GTID_NORMALIZE; DROP FUNCTION GTID_UNION; -DROP FUNCTION GTID_INTERSECT; +DROP FUNCTION GTID_INTERSECTION; DROP FUNCTION GTID_SYMMETRIC_DIFFERENCE; DROP FUNCTION GTID_SUBTRACT_UUID; -DROP FUNCTION GTID_INTERSECT_UUID; +DROP FUNCTION GTID_INTERSECTION_WITH_UUID; +DROP FUNCTION IFZERO; +DROP FUNCTION LOCATE2; +DROP FUNCTION GTID_COUNT; +DROP FUNCTION GTID_NEXT_GENERATED; +DROP FUNCTION GTID_NEXT_GENERATED_SET; DROP FUNCTION GTID_COMPARE; DROP FUNCTION NUMBER_TO_UUID; DROP FUNCTION UUID_TO_NUMBER; diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/gtid_utils.inc percona-xtrabackup-2.3.7/mysql-test/include/gtid_utils.inc --- percona-xtrabackup-2.2.3/mysql-test/include/gtid_utils.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/gtid_utils.inc 2017-02-27 07:47:02.000000000 +0000 @@ -4,22 +4,33 @@ # The functions are typically useful to check assertions related to # GTIDs. The following functions are defined: # -# GTID_IS_EQUAL(g1, g2) -# True if g1 and g2 are the same set -# GTID_IS_DISJOINT(g1, g2) -# True if g1 and g2 are disjoint -# GTID_IS_DISJOINT_UNION(g1, g2, sum) -# True if sum is the disjoint union of g1 and g2 -# GTID_UNION(g1, g2) -# Return the union of g1 and g2 -# GTID_INTERSECTION(g1, g2) -# Return the union of g1 and g2 -# GTID_SYMMETRIC_DIFFERENCE(g1, g2) -# Return the symmetric difference of g1 and g2 -# GTID_SUBTRACT_UUID(gtid, uuid) +# GTID_IS_EQUAL(gtid_set_1, gtid_set_2) +# True if gtid_set_1 and gtid_set_2 are the same set +# GTID_IS_DISJOINT(gtid_set_1, gtid_set_2) +# True if gtid_set_1 and gtid_set_2 are disjoint +# GTID_IS_DISJOINT_UNION(gtid_set_1, gtid_set_2, sum) +# True if sum is the disjoint union of gtid_set_1 and gtid_set_2 +# GTID_NORMALIZE(gtid_set) +# Return the gtid set in a normalized form: all uuids in alphabetic +# order, all intervals compressed and in order, no whitespace, all +# lowercase. +# GTID_UNION(gtid_set_1, gtid_set_2) +# Return the union of gtid_set_1 and gtid_set_2 +# GTID_INTERSECTION(gtid_set_1, gtid_set_2) +# Return the intersection of gtid_set_1 and gtid_set_2 +# GTID_SYMMETRIC_DIFFERENCE(gtid_set_1, gtid_set_2) +# Return the symmetric difference of gtid_set_1 and gtid_set_2 +# GTID_SUBTRACT_UUID(gtid_set, uuid) # Remove the UUID from the GTID set -# GTID_INTERSECTION_WITH_UUID(gtid, uuid) +# GTID_INTERSECTION_WITH_UUID(gtid_set, uuid) # Return only the gtids with the given uuid from the GTID set +# GTID_COUNT(gtid_set) +# Return the number of gtids in the gtid_set. +# GTID_NEXT_GENERATED(gtid_set, uuid) +# Return the next GNO that will be generated for the given uuid. +# GTID_NEXT_GENERATED_SET(gtid_set, uuid, count) +# Return the GTID set consisting of the next 'count' GTIDs that will +# be generated for the given uuid. # GTID_COMPARE(old, diff, new) # The same as GTID_IS_DISJOINT_UNION, except it has the following # additional feature: if diff begins by '~', then it returns true @@ -38,10 +49,18 @@ # # ==== Usage ==== # +# You should not normally source this file directly; instead set +# $rpl_gtid_utils=1 before sourcing master-slave.inc or rpl_init.inc. +# Then, the functions are automatically dropped in rpl_end.inc, and +# RESET MASTER is executed so that the functions do not pollute the +# binary log. +# +# If you really need to use this file manually, do this: +# # 1. Create the stored functions at the beginning of the test script: # # --source include/gtid_utils.inc -# +# # 2. Use the functions as you like during the test script. # # 3. Delete the stored functions at the end of the test script: @@ -52,7 +71,10 @@ --let $include_filename= gtid_utils.inc --source include/begin_include_file.inc ---disable_query_log +if (!$rpl_debug) +{ + --disable_query_log +} --delimiter | @@ -75,60 +97,131 @@ --let $uuidf= ffffffff-ffff-ffff-ffff-ffffffffffff # Return nonzero if the two gtid_sets are equal. -CREATE FUNCTION GTID_IS_EQUAL(g1 TEXT(10000), g2 TEXT(10000)) +CREATE FUNCTION GTID_IS_EQUAL(gtid_set_1 TEXT(10000), gtid_set_2 TEXT(10000)) RETURNS INT -BEGIN - RETURN GTID_SUBSET(g1, g2) AND GTID_SUBSET(g2, g1); -END| +RETURN GTID_SUBSET(gtid_set_1, gtid_set_2) AND GTID_SUBSET(gtid_set_2, gtid_set_1)| # Return nonzero if the two gtid_sets are disjoint. -CREATE FUNCTION GTID_IS_DISJOINT(g1 TEXT(10000), g2 TEXT(10000)) +CREATE FUNCTION GTID_IS_DISJOINT(gtid_set_1 TEXT(10000), gtid_set_2 TEXT(10000)) RETURNS INT -BEGIN - RETURN GTID_SUBSET(g1, GTID_SUBTRACT(g1, g2)); -END| +RETURN GTID_SUBSET(gtid_set_1, GTID_SUBTRACT(gtid_set_1, gtid_set_2))| -# Return true if g1 union g2 = sum, and g1 and g2 are disjoint. -CREATE FUNCTION GTID_IS_DISJOINT_UNION(g1 TEXT(10000), g2 TEXT(10000), sum TEXT(10000)) +# Return true if gtid_set_1 union gtid_set_2 = sum, and gtid_set_1 and gtid_set_2 are disjoint. +CREATE FUNCTION GTID_IS_DISJOINT_UNION(gtid_set_1 TEXT(10000), gtid_set_2 TEXT(10000), sum TEXT(10000)) RETURNS INT -BEGIN - RETURN GTID_IS_EQUAL(GTID_SUBTRACT(sum, g1), g2) AND - GTID_IS_EQUAL(GTID_SUBTRACT(sum, g2), g1); -END| +RETURN GTID_IS_EQUAL(GTID_SUBTRACT(sum, gtid_set_1), gtid_set_2) AND + GTID_IS_EQUAL(GTID_SUBTRACT(sum, gtid_set_2), gtid_set_1)| -# Return the union of g1 and g2. -CREATE FUNCTION GTID_UNION(g1 TEXT(10000), g2 TEXT(10000)) +# Return a normalized form of the GTID (all uppercase, no whitespace, +# no duplicates, uuids in alphabetic order, intervals in numeric +# order). +CREATE FUNCTION GTID_NORMALIZE(g TEXT(10000)) RETURNS TEXT(10000) -BEGIN - RETURN GTID_SUBTRACT(CONCAT(g1, ',', g2), ''); -END| +RETURN GTID_SUBTRACT(g, '')| -# Return the intersection of g1 and g2. -CREATE FUNCTION GTID_INTERSECT(g1 TEXT(10000), g2 TEXT(10000)) +# Return the union of gtid_set_1 and gtid_set_2. +CREATE FUNCTION GTID_UNION(gtid_set_1 TEXT(10000), gtid_set_2 TEXT(10000)) RETURNS TEXT(10000) -BEGIN - RETURN GTID_SUBTRACT(g1, GTID_SUBTRACT(g1, g2)); -END| +RETURN GTID_NORMALIZE(CONCAT(gtid_set_1, ',', gtid_set_2))| -# Return the symmetric difference between g1 and g2. -CREATE FUNCTION GTID_SYMMETRIC_DIFFERENCE(g1 TEXT(10000), g2 TEXT(10000)) +# Return the intersection of gtid_set_1 and gtid_set_2. +CREATE FUNCTION GTID_INTERSECTION(gtid_set_1 TEXT(10000), gtid_set_2 TEXT(10000)) RETURNS TEXT(10000) -BEGIN - RETURN SUBTRACT(CONCAT(g1, ',', g2), GTID_INTERSECTION(g1, g2)); -END| +RETURN GTID_SUBTRACT(gtid_set_1, GTID_SUBTRACT(gtid_set_1, gtid_set_2))| + +# Return the symmetric difference between gtid_set_1 and gtid_set_2. +CREATE FUNCTION GTID_SYMMETRIC_DIFFERENCE(gtid_set_1 TEXT(10000), gtid_set_2 TEXT(10000)) +RETURNS TEXT(10000) +RETURN GTID_SUBTRACT(CONCAT(gtid_set_1, ',', gtid_set_2), GTID_INTERSECTION(gtid_set_1, gtid_set_2))| # Return the gtid with uuid removed. -CREATE FUNCTION GTID_SUBTRACT_UUID(gtid TEXT(10000), uuid TEXT(10000)) +CREATE FUNCTION GTID_SUBTRACT_UUID(gtid_set TEXT(10000), uuid TEXT(100)) RETURNS TEXT(10000) +RETURN GTID_SUBTRACT(gtid_set, CONCAT(UUID, ':1-', 1 << 63 - 1))| + +# Return the intersection of gtid and uuid. +CREATE FUNCTION GTID_INTERSECTION_WITH_UUID(gtid_set TEXT(10000), uuid TEXT(100)) +RETURNS TEXT(10000) +RETURN GTID_SUBTRACT(gtid_set, GTID_SUBTRACT_UUID(gtid_set, uuid))| + +# If the first argument is nonzero, return it, else return the second argument +CREATE FUNCTION IFZERO(a INT, b INT) +RETURNS INT +RETURN IF(a = 0, b, a)| + +# Like the builtin LOCATE, but returns length+1 rather than 0 if nothing found. +CREATE FUNCTION LOCATE2(needle TEXT(10000), haystack TEXT(10000), offset INT) +RETURNS INT +RETURN IFZERO(LOCATE(needle, haystack, offset), LENGTH(haystack) + 1)| + +# Return the number of GTIDs in the given GTID set. +CREATE FUNCTION GTID_COUNT(gtid_set TEXT(10000)) +RETURNS INT BEGIN - RETURN GTID_SUBTRACT(gtid, CONCAT(UUID, ':1-', 1 << 62)); + DECLARE result BIGINT DEFAULT 0; + DECLARE colon_pos INT; + DECLARE next_dash_pos INT; + DECLARE next_colon_pos INT; + DECLARE next_comma_pos INT; + SET gtid_set = GTID_NORMALIZE(gtid_set); + SET colon_pos = LOCATE2(':', gtid_set, 1); + WHILE colon_pos != LENGTH(gtid_set) + 1 DO + SET next_dash_pos = LOCATE2('-', gtid_set, colon_pos + 1); + SET next_colon_pos = LOCATE2(':', gtid_set, colon_pos + 1); + SET next_comma_pos = LOCATE2(',', gtid_set, colon_pos + 1); + IF next_dash_pos < next_colon_pos AND next_dash_pos < next_comma_pos THEN + SET result = result + + SUBSTR(gtid_set, next_dash_pos + 1, + LEAST(next_colon_pos, next_comma_pos) - (next_dash_pos + 1)) - + SUBSTR(gtid_set, colon_pos + 1, next_dash_pos - (colon_pos + 1)) + 1; + ELSE + SET result = result + 1; + END IF; + SET colon_pos = next_colon_pos; + END WHILE; + RETURN result; END| -# Return the intersection of gtid and uuid. -CREATE FUNCTION GTID_INTERSECT_UUID(gtid TEXT(10000), uuid TEXT(10000)) +# Return the next GNO (numeric component) to be generated for the given UUID +CREATE FUNCTION GTID_NEXT_GENERATED(gtid_set TEXT(10000), uuid TEXT(100)) +RETURNS INT +BEGIN + DECLARE gtid_uuid TEXT(10000) DEFAULT GTID_INTERSECTION_WITH_UUID(gtid_set, uuid); + DECLARE colon_pos INT DEFAULT LOCATE2(':', gtid_uuid, 1); + DECLARE next_dash_pos INT DEFAULT LOCATE2('-', gtid_uuid, colon_pos + 1); + DECLARE next_comma_pos INT DEFAULT LOCATE2(',', gtid_uuid, colon_pos + 1); + DECLARE next_colon_pos INT DEFAULT LOCATE2(':', gtid_uuid, colon_pos + 1); + IF gtid_uuid = '' THEN + RETURN 1; + ELSEIF SUBSTR(gtid_uuid, colon_pos + 1, + LEAST(next_dash_pos, next_comma_pos, next_colon_pos) - + (colon_pos + 1)) != '1' THEN + RETURN 1; + ELSEIF next_dash_pos < LEAST(next_comma_pos, next_colon_pos) THEN + RETURN SUBSTR(gtid_uuid, next_dash_pos + 1, + LEAST(next_comma_pos, next_colon_pos) - + (next_dash_pos + 1)) + 1; + ELSE + RETURN 2; + END IF; +END| + +# Return a GTID set consisting of the the next 'count' GTIDs that will +# be generated for the given UUID. +# This is inefficient if count is big, consider optimizing it if needed. +CREATE FUNCTION GTID_NEXT_GENERATED_SET(gtid_set TEXT(10000), uuid TEXT(100), count INT) RETURNS TEXT(10000) BEGIN - RETURN GTID_SUBTRACT(gtid, GTID_SUBTRACT_UUID(gtid, uuid)); + DECLARE result TEXT(10000) DEFAULT ''; + DECLARE number INT; + DECLARE new_gtid VARCHAR(100); + WHILE count > 0 DO + SET new_gtid = CONCAT(uuid, ':', GTID_NEXT_GENERATED(gtid_set, uuid)); + SET result = GTID_UNION(result, new_gtid); + SET gtid_set = GTID_UNION(gtid_set, new_gtid); + SET count = count - 1; + END WHILE; + RETURN result; END| # Return true if gtid_set 'new' is obtained by adding 'diff' to 'old', @@ -137,16 +230,7 @@ # removed) from 'new'. CREATE FUNCTION GTID_COMPARE(old TEXT(10000), diff TEXT(10000), new TEXT(10000)) RETURNS INT -BEGIN - DECLARE tilde_pos INT DEFAULT LOCATE('~', diff); - DECLARE to_add TEXT(10000); - DECLARE to_remove TEXT(10000); - IF tilde_pos != 0 THEN - RETURN GTID_IS_DISJOINT_UNION(new, SUBSTR(diff, 2), old); - ELSE - RETURN GTID_IS_DISJOINT_UNION(old, diff, new); - END IF; -END| +RETURN IF(SUBSTR(diff, 1, 1) != '~', GTID_IS_DISJOINT_UNION(old, diff, new), GTID_IS_DISJOINT_UNION(new, SUBSTR(diff, 2), old))| # convert strings like '1:4-5,97:1' to # '01010101-0101-0101-0101-010101010101:4-5,97979797-9797-9797-9797-979797979797:1' diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/have_mysql_no_login_plugin.inc percona-xtrabackup-2.3.7/mysql-test/include/have_mysql_no_login_plugin.inc --- percona-xtrabackup-2.2.3/mysql-test/include/have_mysql_no_login_plugin.inc 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/have_mysql_no_login_plugin.inc 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,21 @@ +# +# Check if server has support for loading plugins +# +if (`SELECT @@have_dynamic_loading != 'YES'`) { + --skip mysql_no_login requires dynamic loading +} + +# +# Check if the variable MYSQL_NO_LOGIN is set +# +if (!$MYSQL_NO_LOGIN) { + --skip mysql_no_login requires the environment variable \$MYSQL_NO_LOGIN to be set (normally done by mtr) +} + +# +# Check if --plugin-dir was setup for mysql_no_login +# +if (`SELECT CONCAT('--plugin-dir=', REPLACE(@@plugin_dir, '\\\\', '/')) != '$MYSQL_NO_LOGIN_OPT/'`) { + --skip mysql_no_login requires that --plugin-dir is set to the mysql_no_login dir (either the .opt file does not contain \$MYSQL_NO_LOGIN_OPT or another plugin is in use) +} + diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/have_util_nc.inc percona-xtrabackup-2.3.7/mysql-test/include/have_util_nc.inc --- percona-xtrabackup-2.2.3/mysql-test/include/have_util_nc.inc 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/have_util_nc.inc 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,53 @@ +# ==== Purpose ==== +# +# Check if nc/netcat utility is available +# The variable $nc contains name of utility +# (nc or netcat) +# +# ==== Usage ==== +# +# --source include/have_util_nc.inc +# ... +# --exec $nc some options +# + +disable_result_log; +disable_query_log; + +--let $nc= +--let $_outfile= $MYSQLTEST_VARDIR/tmp/have_nc.tmp + +# find nc + +--error 0,1,127 +--exec nc -h > $_outfile 2>&1 +--eval SET @content = LOAD_FILE('$_outfile') +--remove_file $_outfile + +if (`SELECT LOCATE('usage', @content) > 0`) { + --let $nc= nc + SET @content=""; +} + +# find netcat + +if (`SELECT '$nc' = ''`) { + --error 0,1,127 + --exec netcat -h > $_outfile 2>&1 + --eval SET @content = LOAD_FILE('$_outfile') + --remove_file $_outfile +} + +if (`SELECT LOCATE('usage', @content) > 0`) { + --let $nc= netcat + SET @content=""; +} + +# Skip the test case if utility not found +if (`SELECT '$nc' = ''`) { + --skip nc/netcat not found +} + +enable_query_log; +enable_result_log; + diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/install_semisync.inc percona-xtrabackup-2.3.7/mysql-test/include/install_semisync.inc --- percona-xtrabackup-2.2.3/mysql-test/include/install_semisync.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/install_semisync.inc 2017-02-27 07:47:02.000000000 +0000 @@ -5,7 +5,6 @@ --source include/begin_include_file.inc --source include/not_embedded.inc ---source include/not_gtid_enabled.inc --source include/have_semisync_plugin.inc --connection master diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/linux.inc percona-xtrabackup-2.3.7/mysql-test/include/linux.inc --- percona-xtrabackup-2.2.3/mysql-test/include/linux.inc 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/linux.inc 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,5 @@ +if (`select convert(@@version_compile_os using latin1) IN ("Linux") = 0`) +{ + skip Needs Linux; +} + diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/master-slave.inc percona-xtrabackup-2.3.7/mysql-test/include/master-slave.inc --- percona-xtrabackup-2.2.3/mysql-test/include/master-slave.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/master-slave.inc 2017-02-27 07:47:02.000000000 +0000 @@ -12,12 +12,13 @@ # [--let $rpl_debug= 1] # [--let $slave_timeout= NUMBER] # [--let $use_gtids= 1] +# [--let $rpl_gtid_utils= 1] # --source include/master-slave.inc # # Parameters: # $rpl_check_server_ids, $rpl_skip_reset_master_and_slave, # $rpl_skip_change_master, $rpl_skip_start_slave, $rpl_debug, -# $slave_timeout, $use_gtids +# $slave_timeout, $use_gtids, $rpl_gtid_utils # See include/rpl_init.inc # # $rpl_server_count diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/mtr_warnings.sql percona-xtrabackup-2.3.7/mysql-test/include/mtr_warnings.sql --- percona-xtrabackup-2.2.3/mysql-test/include/mtr_warnings.sql 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/mtr_warnings.sql 2017-02-27 07:47:02.000000000 +0000 @@ -1,4 +1,4 @@ --- Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved. +-- Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved. -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by @@ -243,7 +243,7 @@ ("Changed limits: max_open_files: *"), ("Changed limits: max_connections: *"), - ("Changed limits: table_cache: *"), + ("Changed limits: table_open_cache: *"), ("Could not increase number of max_open_files to more than *"), ("THE_LAST_SUPPRESSION")|| diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/plugin.defs percona-xtrabackup-2.3.7/mysql-test/include/plugin.defs --- percona-xtrabackup-2.2.3/mysql-test/include/plugin.defs 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/plugin.defs 2017-02-27 07:47:02.000000000 +0000 @@ -45,3 +45,4 @@ libmemcached plugin/innodb_memcached/daemon_memcached DAEMON_MEMCACHED daemon_memcached innodb_engine plugin/innodb_memcached/innodb_memcache INNODB_ENGINE validate_password plugin/password_validation VALIDATE_PASSWORD validate_password +mysql_no_login plugin/mysql_no_login MYSQL_NO_LOGIN mysql_no_login diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/rpl_connection_master1.inc percona-xtrabackup-2.3.7/mysql-test/include/rpl_connection_master1.inc --- percona-xtrabackup-2.2.3/mysql-test/include/rpl_connection_master1.inc 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/rpl_connection_master1.inc 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,2 @@ +let $rpl_connection_name= master1; +source include/rpl_connection.inc; diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/rpl_end.inc percona-xtrabackup-2.3.7/mysql-test/include/rpl_end.inc --- percona-xtrabackup-2.2.3/mysql-test/include/rpl_end.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/rpl_end.inc 2017-02-27 07:47:02.000000000 +0000 @@ -16,6 +16,7 @@ # # [--let $rpl_only_running_threads= 1] # [--let $rpl_debug= 1] +# [--let $rpl_gtid_utils= 1] # --source include/rpl_end.inc # # Parameters: @@ -27,6 +28,9 @@ # $rpl_debug # See include/rpl_init.inc # +# $rpl_gtid_utils +# Source include/gtid_utils_end.inc on every server. +# # Note: # This script will fail if Last_SQL_Error or Last_IO_Error is # nonempty. If you expect an error in the SQL thread, you should @@ -79,15 +83,10 @@ --source include/rpl_sync.inc --source include/rpl_stop_slaves.inc -# Revert to default (gtid-mode=off). -if ($use_gtids == 1) -{ - --let $use_gtids= 0 -} - # mtr configures server 2 to be a slave before it runs the test. We # have to restore that state now, so we change topology to 1->2. --let $rpl_topology= none +--let $use_gtids= 0 --source include/rpl_change_topology.inc @@ -96,6 +95,15 @@ --let $_rpl_one= _1 while ($_rpl_server) { + if ($rpl_gtid_utils) + { + # Drop gtid_utils + --let $rpl_connection_name= server_$_rpl_server + --source include/rpl_connection.inc + --source include/gtid_utils_end.inc + --connection default + } + # Unconfigure connections --disconnect server_$_rpl_server --disconnect server_$_rpl_server$_rpl_one --dec $_rpl_server diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/rpl_init.inc percona-xtrabackup-2.3.7/mysql-test/include/rpl_init.inc --- percona-xtrabackup-2.2.3/mysql-test/include/rpl_init.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/rpl_init.inc 2017-02-27 07:47:02.000000000 +0000 @@ -51,6 +51,7 @@ # [--let $rpl_debug= 1] # [--let $slave_timeout= NUMBER] # [--let $use_gtids= 1] +# [--let $rpl_gtid_utils= 1] # --source include/rpl_init.inc # # Parameters: @@ -107,6 +108,10 @@ # $use_gtids # Use option MASTER_AUTO_POSITION = 1 to CHANGE MASTER. # +# $rpl_gtid_utils +# Create stored functions for GTID manipulation on every server (see +# gtid_utils.inc). +# # # ==== Side effects ==== # @@ -198,6 +203,10 @@ --let $rpl_connection_name= server_$_rpl_server --source include/rpl_connection.inc USE test; + if ($rpl_gtid_utils) + { + --source include/gtid_utils.inc + } if (!$rpl_skip_reset_master_and_slave) { RESET MASTER; diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/rpl_stop_server.inc percona-xtrabackup-2.3.7/mysql-test/include/rpl_stop_server.inc --- percona-xtrabackup-2.2.3/mysql-test/include/rpl_stop_server.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/rpl_stop_server.inc 2017-02-27 07:47:02.000000000 +0000 @@ -6,6 +6,7 @@ # # --let $rpl_server_number= N # [--let $rpl_debug= 1] +# [--let $rpl_force_stop= 1] # --source include/rpl_stop_server.inc # # Parameters: @@ -17,6 +18,8 @@ # # $rpl_debug # See include/rpl_init.inc +# $rpl_force_stop +# Kill the server immediately i.e., --shutdown_server 0 # # ==== See also ==== # @@ -48,11 +51,15 @@ # Send shutdown to the connected server and give # it 14 seconds to die before zapping it -shutdown_server 14; - +--let $shutdown_server_timeout= 14 +if ($rpl_force_stop) +{ + # if force_stop is set, shutdown server immediately(equal to killing the server) + --let $shutdown_server_timeout= 0 +} +shutdown_server $shutdown_server_timeout; --source include/wait_until_disconnected.inc - --let $rpl_connection_name= $_rpl_stop_server_old_connection --source include/rpl_connection.inc --dec $_include_file_depth diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/save_io_thread_pos.inc percona-xtrabackup-2.3.7/mysql-test/include/save_io_thread_pos.inc --- percona-xtrabackup-2.2.3/mysql-test/include/save_io_thread_pos.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/save_io_thread_pos.inc 2017-02-27 07:47:02.000000000 +0000 @@ -28,7 +28,7 @@ if ($use_gtids) { - --let $_saved_gtids= query_get_value(SHOW SLAVE STATUS, Retrieved_Gtid_set, 1) + --let $_saved_gtids= query_get_value(SHOW SLAVE STATUS, Retrieved_Gtid_Set, 1) if ($rpl_debug) { --echo save_io_thread_pos.inc saved gtid='$_saved_gtids' diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/save_master_pos.inc percona-xtrabackup-2.3.7/mysql-test/include/save_master_pos.inc --- percona-xtrabackup-2.2.3/mysql-test/include/save_master_pos.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/save_master_pos.inc 2017-02-27 07:47:02.000000000 +0000 @@ -27,18 +27,21 @@ --let $include_filename= save_master_pos.inc --source include/begin_include_file.inc +# +# Always save master positions, this will be useful to check missing GTIDs. +# +--let $_saved_file= query_get_value(SHOW MASTER STATUS, File, 1) +--let $_saved_pos= query_get_value(SHOW MASTER STATUS, Position, 1) if ($use_gtids) { --let $_saved_gtids= `SELECT @@global.gtid_executed` if ($rpl_debug) { - --echo save_master_pos saved gtid='$_saved_gtids' + --echo save_master_pos saved gtid='$_saved_gtids', file='$_saved_file', pos='$_saved_pos' } } if (!$use_gtids) { - --let $_saved_file= query_get_value(SHOW MASTER STATUS, File, 1) - --let $_saved_pos= query_get_value(SHOW MASTER STATUS, Position, 1) if ($rpl_debug) { --echo save_master_pos saved file='$_saved_file', pos='$_saved_pos' diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/show_all_binlogs.inc percona-xtrabackup-2.3.7/mysql-test/include/show_all_binlogs.inc --- percona-xtrabackup-2.2.3/mysql-test/include/show_all_binlogs.inc 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/show_all_binlogs.inc 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,66 @@ +# ==== Purpose ==== +# +# Print the contents of all binary logs to the result log. This must +# only be used for debugging. +# +# ==== Usage ==== +# +# [--let $output_file= FILENAME] +# [--let $append= 1] +# [--let $rpl_debug= 1] +# --source include/show_all_binlogs.inc +# +# Parameters: +# +# $output_file +# By default, output is printed to the result log. If you need to +# print it to a specific file, specify the filename with this +# parameter. +# +# $append +# By default, if $output_file is specified and the file exists, +# this script truncates the file before it writes to it. If +# $append is specified, the file is not truncated and the contents +# of the binary log is appended to the end. +# +# $rpl_debug +# See rpl_init.inc + +--let $include_filename= show_all_binlogs.inc +--source include/begin_include_file.inc + + +--disable_query_log + +if ($output_file == '') +{ + --echo DO_NOT_CHECK_IN_THIS_LINE: include/show_all_binlogs.inc should only be used for debugging. Never check in a test that calls it on success. +} + +--let $number= 1 +--let $binlog_file= query_get_value(SHOW BINARY LOGS, Log_name, $number) +while ($binlog_file != 'No such row') +{ + --let $statement= SHOW BINLOG EVENTS IN '$binlog_file' + --let $header= ======== $statement ======== + + if ($output_file != '') + { + --let $write_var= $header + --let $write_to_file= $output_file + --source include/write_var_to_file.inc + + --source include/write_result_to_file.inc + } + if ($output_file == '') + { + --echo $header + eval $statement; + } + --inc $number + + --let $binlog_file= query_get_value(SHOW BINARY LOGS, Log_name, $number) +} + + +--source include/end_include_file.inc diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/show_all_relay_logs.inc percona-xtrabackup-2.3.7/mysql-test/include/show_all_relay_logs.inc --- percona-xtrabackup-2.2.3/mysql-test/include/show_all_relay_logs.inc 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/show_all_relay_logs.inc 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,70 @@ +# ==== Purpose ==== +# +# Print the contents of all relay logs to the result log. This must +# only be used for debugging. +# +# ==== Usage ==== +# +# [--let $output_file= FILENAME] +# [--let $append= 1] +# [--let $rpl_debug= 1] +# --source include/show_all_binlogs.inc +# +# Parameters: +# +# $output_file +# By default, output is printed to the result log. If you need to +# print it to a specific file, specify the filename with this +# parameter. +# +# $append +# By default, if $output_file is specified and the file exists, +# this script truncates the file before it writes to it. If +# $append is specified, the file is not truncated and the contents +# of the binary log is appended to the end. +# +# $rpl_debug +# See rpl_init.inc + +--let $include_filename= show_all_relay_logs.inc +--source include/begin_include_file.inc + + +--disable_query_log + +if ($output_file == '') +{ + --echo DO_NOT_CHECK_IN_THIS_LINE: include/show_all_relay_logs.inc should only be used for debugging. Never check in a test that calls it on success. +} + +--let $last_relay_log_file= query_get_value(SHOW SLAVE STATUS, Relay_Log_File, 1) +--let $relay_log_base= `SELECT SUBSTRING_INDEX('$last_relay_log_file', '.', 1)` +--let $relay_log_count= `SELECT CONCAT('1', SUBSTRING_INDEX('$last_relay_log_file', '.', -1)) - 1000000` +--let $number= 1 +while ($number <= $relay_log_count) +{ + --let $padded_number= `SELECT LPAD('$number', 6, '0')` + --let $statement= SHOW RELAYLOG EVENTS IN '$relay_log_base.$padded_number' + --let $header= ======== $statement ======== + + if ($output_file != '') + { + --let $write_to_file= $output_file + --let $write_var= $header + --let $allow_error= 1 + --source include/write_var_to_file.inc + + --source include/write_result_to_file.inc + } + if ($output_file == '') + { + --echo $header + --error 0, 1220 # 1220 = ER_ERROR_WHEN_EXECUTING_COMMAND + eval $statement; + } + + --inc $number +} + + +--source include/end_include_file.inc diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/show_rpl_debug_info.inc percona-xtrabackup-2.3.7/mysql-test/include/show_rpl_debug_info.inc --- percona-xtrabackup-2.2.3/mysql-test/include/show_rpl_debug_info.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/show_rpl_debug_info.inc 2017-02-27 07:47:02.000000000 +0000 @@ -21,6 +21,8 @@ # ==== Usage ==== # # [--let $rpl_only_current_connection= 1] +# [--let $extra_debug_info= some text] +# [--let $extra_debug_eval= expression parsable by include/eval.inc] # --source include/show_rpl_debug_info.inc # # Parameters: @@ -28,7 +30,14 @@ # By default, debug info is printed from all connections, starting # with the current connection. If this variable is set, debug # info is printed only for the current connection. -# +# +# $extra_debug_info +# This text is printed verbatim to the output. Useful for helper +# scripts to supply extra diagnostic output. +# +# $extra_debug_eval +# Expression in the form expected by include/eval.inc, which will +# be evaluated and printed to the output. # # ==== Side effects ==== # @@ -56,6 +65,8 @@ } --inc $_rpl_server +--echo DO_NOT_CHECK_IN_THIS_LINE: include/show_rpl_debug_info.inc should only be used for debugging. Never check in a test that calls it on success. + --echo CURRENT_CONNECTION = '$_rpl_old_con' while ($_rpl_server) @@ -124,6 +135,12 @@ --echo rand_seed: '$rand_seed' _rand_state: '$_rand_state' --echo extra debug info if any: '$extra_debug_info' +if ($extra_debug_eval) +{ + --let $eval_expr= $extra_debug_eval + --source include/eval.inc + --echo extra evaluated debug info: '$eval_result' +} --connection $_rpl_old_con --enable_abort_on_error diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/stop_dump_threads.inc percona-xtrabackup-2.3.7/mysql-test/include/stop_dump_threads.inc --- percona-xtrabackup-2.2.3/mysql-test/include/stop_dump_threads.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/stop_dump_threads.inc 2017-02-27 07:47:02.000000000 +0000 @@ -15,7 +15,7 @@ --disable_query_log --disable_result_log ---let $_sdt_dump_thread_id= `SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND = 'Binlog dump'` +--let $_sdt_dump_thread_id= `SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND = 'Binlog dump' OR COMMAND = 'Binlog Dump GTID'` while ($_sdt_dump_thread_id != '') { @@ -23,10 +23,9 @@ --let $wait_condition= SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE ID = $_sdt_dump_thread_id --source include/wait_condition.inc - --let $_sdt_dump_thread_id= `SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND = 'Binlog dump'` + --let $_sdt_dump_thread_id= `SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND = 'Binlog dump' OR COMMAND = 'Binlog Dump GTID'` } - --let $show_rpl_debug_info= $_sdt_show_rpl_debug_info_old --let $include_filename= stop_dump_threads.inc diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/subquery_mat.inc percona-xtrabackup-2.3.7/mysql-test/include/subquery_mat.inc --- percona-xtrabackup-2.2.3/mysql-test/include/subquery_mat.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/subquery_mat.inc 2017-02-27 07:47:02.000000000 +0000 @@ -1417,6 +1417,53 @@ DROP TABLE t1,t2,t3; +--echo # +--echo # Bug#19297190 NOT IN DOESN'T RETURN EXPECTED RESULT +--echo # + +CREATE TABLE t1 (a VARCHAR(500) CHARACTER SET UTF8) ENGINE=INNODB; + +# Fill the table with 32 distinct long rows (>32kB of data) +SET @str= repeat("a",450); +SET @num=1000; +INSERT INTO t1 VALUES (CONCAT((@num:=@num+1), @str)); +INSERT INTO t1 SELECT CONCAT((@num:=@num+1), @str) FROM t1; +INSERT INTO t1 SELECT CONCAT((@num:=@num+1), @str) FROM t1; +INSERT INTO t1 SELECT CONCAT((@num:=@num+1), @str) FROM t1; +INSERT INTO t1 SELECT CONCAT((@num:=@num+1), @str) FROM t1; +INSERT INTO t1 SELECT CONCAT((@num:=@num+1), @str) FROM t1; +SELECT COUNT(*) FROM t1; + +ANALYZE TABLE t1; + +let $query= +SELECT COUNT(*) +FROM t1 +WHERE t1.a NOT IN ( + SELECT t2.a FROM t1 as t2 +); + +# If subq-mat is used, this will force MEMORY->MYISAM tmp table conversion: +set @save_heap_size= @@max_heap_table_size; +set @@max_heap_table_size= 16384; + +# Uses IN->EXISTS because field too long for subq-materialization: +eval EXPLAIN $query; +eval $query; + +# Make field just below the length limit: +# Silence truncation warnings: +--disable_warnings +ALTER TABLE t1 MODIFY a VARCHAR(332) CHARACTER SET UTF8; +--enable_warnings + +# Now subquery materialization can be used, and result is still correct: +eval EXPLAIN $query; +eval $query; + +DROP TABLE t1; +set @@max_heap_table_size= @save_heap_size; + --echo # End of 5.6 tests set @@optimizer_switch=@old_opt_switch; diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/subquery_sj.inc percona-xtrabackup-2.3.7/mysql-test/include/subquery_sj.inc --- percona-xtrabackup-2.2.3/mysql-test/include/subquery_sj.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/subquery_sj.inc 2017-02-27 07:47:02.000000000 +0000 @@ -6442,6 +6442,86 @@ --echo # End of test for bug#14064201. +--echo # +--echo # Bug#18223655:ASSERTION FAILED: (INT)IDX >= 0 +--echo # && IDX < PARENT_JOIN->TABLES +--echo # + +CREATE TABLE b (d INT); +CREATE TABLE c (a INT, b INT,c INT,d BLOB NOT NULL); + +SELECT(SELECT 1 + FROM b WHERE(SELECT 1 IN (SELECT 1 FROM b WHERE 1 NOT BETWEEN d AND 1) + FROM b) IN (SELECT d FROM c)) as cc FROM b; + +INSERT INTO b VALUE(1); +INSERT INTO c VALUES(1,2,3,'1'),(2,3,4,'1'),(3,4,5,'C'); +SELECT(SELECT d FROM b WHERE(SELECT d IN + (SELECT d FROM b WHERE 1 NOT BETWEEN d AND 1) FROM b) IN + (SELECT d FROM c)) as cc FROM c; +DROP TABLE b,c; + +--echo # +--echo # Bug#18447874:WRONG RESULT COMING FROM SEMI-JOIN +--echo # +CREATE TABLE b ( + d INT(11) +); +CREATE TABLE c ( + d BLOB +) ; +CREATE TABLE d ( + b INT(11) +); + +INSERT INTO b VALUES(1),(2),(4); +INSERT INTO c VALUES(1),(2),(3); +SELECT 1 FROM b WHERE (SELECT 1 FROM d ) IN (SELECT d FROM c) ; +INSERT INTO d VALUES(2); +SELECT 1 FROM b WHERE (SELECT 1 FROM d ) IN (SELECT d FROM c) ; + +DROP TABLE b,c,d; + +--echo # +--echo # Bug#17292723:INCORRECT RESULT FOR (SELECT...) IN (SELECT...) STATEMENT +--echo # +CREATE TABLE t1 ( + ID int(11) NOT NULL AUTO_INCREMENT, + id2 int(11) DEFAULT NULL, + id3 int(11) DEFAULT NULL, + id4 varchar(150) COLLATE utf8_spanish_ci NOT NULL, + id5 int(11) DEFAULT NULL, + PRIMARY KEY (ID), + KEY id2 (id2), + KEY id3 (id3), + KEY id5 (id5) +) ENGINE=InnoDB; + +INSERT INTO t1 VALUES +(123,1,1,'1',NULL), +(124,1,1,'2',NULL), +(125,1,1,'4',NULL), +(126,1,1,'3',NULL), +(127,1,1,'6',NULL), +(128,1,1,'8',NULL); + +CREATE TABLE t2 ( + id6 int(11) NOT NULL, + id7 int(11) NOT NULL, + PRIMARY KEY (id6,id7), + KEY id7 (id7) +) ENGINE=InnoDB; + +INSERT INTO t2 VALUES (126,123),(130,123),(135,123); + +SELECT ID + FROM t1 p0 + WHERE p0.id3=1 + AND ( (SELECT p1.id FROM t1 p1 WHERE p1.id=123) IN (SELECT p3.id FROM t2 +p2, t1 p3 WHERE p0.id=p2.id6 AND p2.id7=p3.id)); + +DROP TABLE t1,t2; + set @@optimizer_switch=@old_opt_switch; # New tests go here. diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/sync_slave_sql.inc percona-xtrabackup-2.3.7/mysql-test/include/sync_slave_sql.inc --- percona-xtrabackup-2.2.3/mysql-test/include/sync_slave_sql.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/sync_slave_sql.inc 2017-02-27 07:47:02.000000000 +0000 @@ -22,6 +22,11 @@ # # $use_gtids # If set, uses GTIDs instead of filename and offset for positions. +# +# $ignore_gtids_on_sync +# Forces the use of master file and position, even if $use_gtids is set. +# This might be used if the slave will not have all the GTIDs of the master +# but have to read and apply all master events to the end. --let $include_filename= sync_slave_sql.inc --source include/begin_include_file.inc @@ -34,10 +39,40 @@ if ($rpl_debug) { - --echo use_gtids='$use_gtids' _saved_gtids='$_saved_gtids' _saved_file='$_saved_file' _saved_pos='$_saved_pos' timeout='$_sss_slave_timeout' + --echo use_gtids='$use_gtids' ignore_gtids_on_sync='$ignore_gtids_on_sync' _saved_gtids='$_saved_gtids' _saved_file='$_saved_file' _saved_pos='$_saved_pos' timeout='$_sss_slave_timeout' +} + +# +# Verify if the SQL thread is already updated by the master position +# regardless the use if GTIDs. If the SQL thread is already updated, +# we can reduce the slave timeout of WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS +# to a minimum because there in nothing else to sync. +# As there is a possibility of missing GTIDs on slave, this reduced +# timeout will make mtr throw an error almost promptly, without having +# to wait 300 seconds to notice a sync problem between master and slave. +# +--let $_slave_master_file= query_get_value(SHOW SLAVE STATUS, Relay_Master_Log_File, 1) +--let $_slave_master_pos= query_get_value(SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1) +if ($_slave_master_file == $_saved_file) +{ + if ($_slave_master_pos == $_saved_pos) + { + if ($rpl_debug) + { + --echo debug: It seems that SQL thread is already synced (by verifying master file and position) + --echo debug: Changing slave timeout to 1 seconds + } + --let $_sss_slave_timeout= 1 + } +} + +--let $_sync_with_gtids= $use_gtids +if ($ignore_gtids_on_sync) +{ + --let $_sync_with_gtids= 0 } -if ($use_gtids) +if ($_sync_with_gtids) { if ($rpl_debug) { @@ -45,7 +80,7 @@ } --let $_sss_result= `SELECT WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS('$_saved_gtids', $_sss_slave_timeout)` } -if (!$use_gtids) +if (!$_sync_with_gtids) { if ($rpl_debug) { @@ -61,7 +96,7 @@ } if ($_sss_result == -1) { - --let $error_type= Timeout after $slave_timeout seconds. + --let $error_type= Timeout after $_sss_slave_timeout seconds. } if ($_sss_result < 0) diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/sync_slave_sql_with_master.inc percona-xtrabackup-2.3.7/mysql-test/include/sync_slave_sql_with_master.inc --- percona-xtrabackup-2.2.3/mysql-test/include/sync_slave_sql_with_master.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/sync_slave_sql_with_master.inc 2017-02-27 07:47:02.000000000 +0000 @@ -37,6 +37,7 @@ --let $include_filename= sync_slave_sql_with_master.inc --source include/begin_include_file.inc +--source include/wait_for_ndb_committed_to_binlog.inc --source include/save_master_pos.inc --let $rpl_connection_name= slave diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/uninstall_semisync.inc percona-xtrabackup-2.3.7/mysql-test/include/uninstall_semisync.inc --- percona-xtrabackup-2.2.3/mysql-test/include/uninstall_semisync.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/uninstall_semisync.inc 2017-02-27 07:47:02.000000000 +0000 @@ -13,6 +13,11 @@ UNINSTALL PLUGIN rpl_semi_sync_slave; --connection master +# After BUG#17638477 fix, uninstallation of rpl_semi_sync_master +# is not allowed when there are semi sync slaves. Hence kill +# all dump threads before uninstalling it. +SET GLOBAL rpl_semi_sync_master_enabled = OFF; +--source include/stop_dump_threads.inc UNINSTALL PLUGIN rpl_semi_sync_master; --enable_warnings diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/wait_for_ndb_committed_to_binlog.inc percona-xtrabackup-2.3.7/mysql-test/include/wait_for_ndb_committed_to_binlog.inc --- percona-xtrabackup-2.2.3/mysql-test/include/wait_for_ndb_committed_to_binlog.inc 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/wait_for_ndb_committed_to_binlog.inc 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,57 @@ +# ==== Purpose ==== +# +# Several test primitives from mysql-test/extra/rpl_tests +# are shared for test cases for MyISAM, InnoDB, NDB and +# other engines. +# For NDB engine all events will be added by NDB injector +# so tests only can continue after injector is ready, +# this file waits for all committed transactions (at start +# of file) are injected into the binlog. +# +# ==== Usage ==== +# +# let $wait_timeout= 150; +# --source include/wait_for_ndb_committed_to_binlog.inc +# +# ==== Parameters ===== +# +# $wait_timeout +# Time to wait in seconds for epoch to be injected in binlog. +# On timeout test dies. +# + +if (`SELECT 1 FROM information_schema.engines WHERE engine = 'ndbcluster' AND support IN ('YES', 'DEFAULT')`) +{ + let $max_run_time= 150; + if ($wait_timeout) + { + let $max_run_time= $wait_timeout; + } + # Reset $wait_timeout so that its value won't be used on subsequent + # calls, and default will be used instead. + let $wait_timeout= 0; + + # The smallest timespan till UNIX_TIMESTAMP() gets incremented is ~0 seconds. + # We add one second to avoid the case that somebody measures timespans on a + # real clock with fractions of seconds, detects that n seconds are sufficient, + # assigns n to this routine and suffers because he sometimes gets n - 1 + # seconds in reality. + + let $max_end_time= `SELECT UNIX_TIMESTAMP() + $max_run_time + 1`; + + source include/get_ndb_epochs.inc; + + while (`SELECT $ndb_latest_trans_epoch > $ndb_latest_handled_binlog_epoch AND UNIX_TIMESTAMP() <= $max_end_time`) + { + # Sleep a bit to avoid too heavy load. + sleep 0.1; + + source include/get_ndb_epochs.inc; + } + + if (`SELECT $ndb_latest_trans_epoch > $ndb_latest_handled_binlog_epoch`) + { + echo ERROR IN TEST: Timeout in waiting for epoch $ndb_latest_trans_epoch to be handled, last handled is $ndb_latest_handled_binlog_epoch; + die ERROR IN TEST: Timeout in waiting for epoch to be handled; + } +} diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/wait_for_ndb_to_binlog.inc percona-xtrabackup-2.3.7/mysql-test/include/wait_for_ndb_to_binlog.inc --- percona-xtrabackup-2.2.3/mysql-test/include/wait_for_ndb_to_binlog.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/wait_for_ndb_to_binlog.inc 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -# ==== Purpose ==== -# -# Several test primitives from mysql-test/extra/rpl_tests -# are shared for test cases for MyISAM, InnoDB, NDB and -# other engines. -# For NDB engine all events will be added by NDB injector -# so tests only can continue after injector is ready, -# this test waits for proper injector thread state. -# -# ==== Usage ==== -# -# let $engine_type= NDB; -# --source include/wait_for_ndb_to_binlog.inc -# -# ==== Parameters ===== -# -# $engine_type -# Type of engine. If type is NDB then it waits for injector -# thread proper state. - -if (`SELECT UPPER(LEFT('$engine_type',3)) = 'NDB'`) { - let $show_statement= SHOW PROCESSLIST; - let $field= State; - let $condition= = 'Waiting for event from ndbcluster'; - source include/wait_show_condition.inc; -} diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/wait_for_slave_param.inc percona-xtrabackup-2.3.7/mysql-test/include/wait_for_slave_param.inc --- percona-xtrabackup-2.2.3/mysql-test/include/wait_for_slave_param.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/wait_for_slave_param.inc 2017-02-27 07:47:02.000000000 +0000 @@ -12,7 +12,7 @@ # [--let $slave_timeout= NUMBER] # [--let $slave_error_param= [Slave_SQL_Errno | Slave_IO_Errno]] # [--let $rpl_debug= 1] -# --source include/slave_wait_param.inc +# --source include/wait_for_slave_param.inc # # Parameters: # diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/wait_for_slave_sql_error.inc percona-xtrabackup-2.3.7/mysql-test/include/wait_for_slave_sql_error.inc --- percona-xtrabackup-2.2.3/mysql-test/include/wait_for_slave_sql_error.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/wait_for_slave_sql_error.inc 2017-02-27 07:47:02.000000000 +0000 @@ -6,7 +6,7 @@ # # ==== Usage ==== # -# --let $slave_sql_errno= NUMBER +# --let $slave_sql_errno= NUMBER [, NUMBER ...] [# comment] # [--let $show_slave_sql_error= 1] # [--let $rpl_debug= 1] # [--let $slave_timeout= NUMBER] @@ -14,7 +14,13 @@ # # Parameters: # $slave_sql_errno -# The expected SQL error number. This is required. +# The expected SQL error numbers. This can be either a single +# number, or a comma-separated list of numbers. Examples: +# --let $slave_sql_errno= 1040, 1053, 2002, 2003, 2006, 2013 +# --let $slave_sql_errno= 1593 # ER_SLAVE_FATAL_ERROR +# It is allowed to add a comment at the end of the line, and it +# is strongly advised to put the symbolic name of the error in +# this comment, like the example above. # (After BUG#41956 has been fixed, this will be required to be a # symbolic name instead of a number.) # @@ -50,7 +56,15 @@ --die !!!ERROR IN TEST: you must set \$slave_sql_errno before sourcing wait_for_slave_sql_error.inc } -if (`SELECT $_wfsse_errno NOT IN ($slave_sql_errno)`) { +# Strip away comments +--let $_slave_sql_errno= `SELECT IF(LOCATE('#', '$slave_sql_errno') != 0, SUBSTR('$slave_sql_errno', 1, LOCATE('#', '$slave_sql_errno') - 1), '$slave_sql_errno')` + +if ($rpl_debug) +{ + --echo # debug: slave_sql_errno='$_slave_sql_errno'; stripped from comments='$_slave_sql_errno' wfsie_errno='$_wfsie_errno' +} + +if (`SELECT $_wfsse_errno NOT IN ($_slave_sql_errno)`) { --echo **** Slave stopped with wrong error code: $_wfsse_errno (expected $slave_sql_errno) **** source include/show_rpl_debug_info.inc; --echo **** Slave stopped with wrong error code: $_wfsse_errno (expected $slave_sql_errno) **** diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/wait_for_slave_sql_to_stop.inc percona-xtrabackup-2.3.7/mysql-test/include/wait_for_slave_sql_to_stop.inc --- percona-xtrabackup-2.2.3/mysql-test/include/wait_for_slave_sql_to_stop.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/wait_for_slave_sql_to_stop.inc 2017-02-27 07:47:02.000000000 +0000 @@ -31,6 +31,7 @@ --let $slave_param= Slave_SQL_Running --let $slave_param_value= No +--let $slave_param_comparison= = --let $slave_error_param= Last_SQL_Errno --source include/wait_for_slave_param.inc --let $slave_error_param= diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/wait_show_condition.inc percona-xtrabackup-2.3.7/mysql-test/include/wait_show_condition.inc --- percona-xtrabackup-2.2.3/mysql-test/include/wait_show_condition.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/wait_show_condition.inc 2017-02-27 07:47:02.000000000 +0000 @@ -9,7 +9,7 @@ # # USAGE # -# All rows of the result must fulfil the condition if $all_rows_fulfil is 1 +# All rows of the result must fulfil the condition if $wait_for_all is 1 # else at least one of the result must fulfil the condition. # let $wait_for_all= 1; # let $show_statement= SHOW PROCESSLIST; @@ -87,6 +87,11 @@ # We are behind the last row of the result set. let $process_result= 0; let $do_loop= 0; + # For string fields and for "!=" comparision, it is possible that + # above if condition (i.e., SELECT '$field_value' $condition) is + # true and the current if condition is also true. So set $found=0 + # here explicitly + let $found= 0; } inc $rowno; } diff -Nru percona-xtrabackup-2.2.3/mysql-test/include/write_result_to_file.inc percona-xtrabackup-2.3.7/mysql-test/include/write_result_to_file.inc --- percona-xtrabackup-2.2.3/mysql-test/include/write_result_to_file.inc 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/include/write_result_to_file.inc 2017-02-27 07:47:02.000000000 +0000 @@ -12,6 +12,8 @@ # --let $statement= # --let $output_file= {|GENERATE} # [--let $dont_print_statement= 1] +# [--let $allow_error= 1] +# [--let $append= 1] # --source include/write_result_to_file.inc # # Parameters: @@ -27,6 +29,14 @@ # By default, the statement is echoed to the result log. If the # statement contains non-deterministic output, set this variable # to suppress it. +# +# $allow_error +# By default, this script causes the test to fail if the statement +# generates an error. If $allow_error is set, errors are ignored. +# +# $append +# By default, any existing file is overwritten. If $append is +# specified, and the file exists, it appends to the file. # Get the port and socket used by mysqld on current connection --let _WRTF_SERVER_PORT= `SELECT @@PORT` @@ -58,19 +68,37 @@ } --let _WRTF_OUTPUT_FILE= $output_file +if ($allow_error) +{ + --let _WRTF_ALLOW_ERROR= 1 +} +if (!$allow_error) +{ + --let _WRTF_ALLOW_ERROR= 0 +} +if ($append) +{ + --let _WRTF_APPEND= 1 +} +if (!$append) +{ + --let _WRTF_APPEND= 0 +} + perl; use strict; my $stmt= $ENV{'_WRTF_STATEMENT'}; # Connecting mysql to same mysqld as current connectiona # by overriding port and socket - my $mysql = $ENV{'MYSQL'}; + my $mysql= $ENV{'MYSQL'}; my $server_port= $ENV{'_WRTF_SERVER_PORT'}; my $server_socket= $ENV{'_WRTF_SERVER_SOCKET'}; + my $redirection_type= $ENV{'_WRTF_APPEND'} ? '>>' : '>'; $mysql .= " --port=$server_port --socket=$server_socket"; my $outfile = $ENV{'_WRTF_OUTPUT_FILE'}; - open MYSQL, "| $mysql > $outfile" or die "Failed to open MYSQL pipe: '$mysql > $outfile'"; + open MYSQL, "| $mysql $redirection_type $outfile" or die "Failed to open MYSQL pipe: '$mysql > $outfile'"; print MYSQL $stmt, ';' or die "Error printing statement to MYSQL pipe: $!"; - close MYSQL or die "Error closing MYSQL pipe: $!"; + close MYSQL or $ENV{'_WRTF_ALLOW_ERROR'} or die "Error closing MYSQL pipe: $!"; EOF --let $include_filename= write_result_to_file.inc [$write_result_msg] diff -Nru percona-xtrabackup-2.2.3/mysql-test/lib/My/SafeProcess/CMakeLists.txt percona-xtrabackup-2.3.7/mysql-test/lib/My/SafeProcess/CMakeLists.txt --- percona-xtrabackup-2.2.3/mysql-test/lib/My/SafeProcess/CMakeLists.txt 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/lib/My/SafeProcess/CMakeLists.txt 2017-02-27 07:47:02.000000000 +0000 @@ -29,7 +29,7 @@ STRING(REPLACE " -library=stlport4" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) STRING(REPLACE " -library=stlport4" "" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}) STRING(REPLACE " -library=stlport4" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}) - STRING(REGEX REPLACE " -R[^ ]+" "" CMAKE_CXX_LINK_FLAGS ${CMAKE_CXX_LINK_FLAGS}) + STRING(REGEX REPLACE " -R[^ ]+" "" CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS}") ENDIF() ENDIF() diff -Nru percona-xtrabackup-2.2.3/mysql-test/mtr.out-of-source percona-xtrabackup-2.3.7/mysql-test/mtr.out-of-source --- percona-xtrabackup-2.2.3/mysql-test/mtr.out-of-source 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/mtr.out-of-source 2017-02-27 07:47:02.000000000 +0000 @@ -1,5 +1,5 @@ #!/usr/bin/perl # Call mtr in out-of-source build -$ENV{MTR_BINDIR} = "@CMAKE_BINARY_DIR@"; -chdir("@CMAKE_SOURCE_DIR@/mysql-test"); -exit(system($^X, "@CMAKE_SOURCE_DIR@/mysql-test/mysql-test-run.pl", @ARGV) >> 8); +$ENV{MTR_BINDIR} = '@CMAKE_BINARY_DIR@'; +chdir('@CMAKE_SOURCE_DIR@/mysql-test'); +exit(system($^X, '@CMAKE_SOURCE_DIR@/mysql-test/mysql-test-run.pl', @ARGV) >> 8); diff -Nru percona-xtrabackup-2.2.3/mysql-test/mysql-test-run.pl percona-xtrabackup-2.3.7/mysql-test/mysql-test-run.pl --- percona-xtrabackup-2.2.3/mysql-test/mysql-test-run.pl 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/mysql-test-run.pl 2017-02-27 07:47:02.000000000 +0000 @@ -235,6 +235,7 @@ our $opt_client_ddd; my $opt_boot_ddd; our $opt_manual_gdb; +our $opt_manual_lldb; our $opt_manual_dbx; our $opt_manual_ddd; our $opt_manual_debug; @@ -1092,6 +1093,7 @@ 'gdb' => \$opt_gdb, 'client-gdb' => \$opt_client_gdb, 'manual-gdb' => \$opt_manual_gdb, + 'manual-lldb' => \$opt_manual_lldb, 'boot-gdb' => \$opt_boot_gdb, 'manual-debug' => \$opt_manual_debug, 'ddd' => \$opt_ddd, @@ -1548,8 +1550,9 @@ $opt_debugger= undef; } - if ( $opt_gdb || $opt_ddd || $opt_manual_gdb || $opt_manual_ddd || - $opt_manual_debug || $opt_debugger || $opt_dbx || $opt_manual_dbx) + if ( $opt_gdb || $opt_ddd || $opt_manual_gdb || $opt_manual_lldb || + $opt_manual_ddd || $opt_manual_debug || $opt_debugger || $opt_dbx || + $opt_manual_dbx) { mtr_error("You need to use the client debug options for the", "embedded server. Ex: --client-gdb"); @@ -1575,9 +1578,9 @@ # -------------------------------------------------------------------------- # Check debug related options # -------------------------------------------------------------------------- - if ( $opt_gdb || $opt_client_gdb || $opt_ddd || $opt_client_ddd || - $opt_manual_gdb || $opt_manual_ddd || $opt_manual_debug || - $opt_dbx || $opt_client_dbx || $opt_manual_dbx || + if ( $opt_gdb || $opt_client_gdb || $opt_ddd || $opt_client_ddd || + $opt_manual_gdb || $opt_manual_lldb || $opt_manual_ddd || + $opt_manual_debug || $opt_dbx || $opt_client_dbx || $opt_manual_dbx || $opt_debugger || $opt_client_debugger ) { # Indicate that we are using debugger @@ -2473,6 +2476,11 @@ $ENV{'MYSQL_BUG25714'}= native_path($exe_bug25714); # ---------------------------------------------------- + # Get the bin dir + # ---------------------------------------------------- + $ENV{'MYSQL_BIN_PATH'}= native_path($bindir); + + # ---------------------------------------------------- # mysql_fix_privilege_tables.sql # ---------------------------------------------------- my $file_mysql_fix_privilege_tables= @@ -2537,6 +2545,14 @@ "$path_client_bindir/perror"); $ENV{'MY_PERROR'}= native_path($exe_perror); + # ---------------------------------------------------- + # replace + # ---------------------------------------------------- + my $exe_replace= mtr_exe_exists(vs_config_dirs('extra', 'replace'), + "$basedir/extra/replace", + "$path_client_bindir/replace"); + $ENV{'REPLACE'}= native_path($exe_replace); + # Create an environment variable to make it possible # to detect that valgrind is being used from test cases $ENV{'VALGRIND_TEST'}= $opt_valgrind; @@ -5158,10 +5174,17 @@ my $found_skip_core= 0; my $found_no_console= 0; + my $found_log_error= 0; foreach my $arg ( @$extra_opts ) { # Skip --defaults-file option since it's handled above. next if $arg =~ /^--defaults-file/; + + + if ($arg eq "--log-error") + { + $found_log_error= 1; + } # Allow --skip-core-file to be set in -[master|slave].opt file if ($arg eq "--skip-core-file") @@ -5192,7 +5215,7 @@ } } $opt_skip_core = $found_skip_core; - if (IS_WINDOWS && !$found_no_console) + if (IS_WINDOWS && !$found_no_console && !$found_log_error) { # Trick the server to send output to stderr, with --console mtr_add_arg($args, "--console"); @@ -5254,6 +5277,10 @@ { gdb_arguments(\$args, \$exe, $mysqld->name()); } + elsif ( $opt_manual_lldb ) + { + lldb_arguments(\$args, \$exe, $mysqld->name()); + } elsif ( $opt_ddd || $opt_manual_ddd ) { ddd_arguments(\$args, \$exe, $mysqld->name()); @@ -6013,6 +6040,24 @@ return $proc; } +sub create_debug_statement { + my $args= shift; + my $input= shift; + + # Put $args into a single string + my $str= join(" ", @$$args); + my $runline= $input ? "run $str < $input" : "run $str"; + + # add quotes to escape ; in plugin_load option + my $pos1 = index($runline, "--plugin_load="); + if ( $pos1 != -1 ) { + my $pos2 = index($runline, " ",$pos1); + substr($runline,$pos1+14,0) = "\""; + substr($runline,$pos2+1,0) = "\""; + } + + return $runline; +} # # Modify the exe and args so that program is run in gdb in xterm @@ -6028,9 +6073,7 @@ # Remove the old gdbinit file unlink($gdb_init_file); - # Put $args into a single string - my $str= join(" ", @$$args); - my $runline= $input ? "run $str < $input" : "run $str"; + my $runline=create_debug_statement($args,$input); # write init file for mysqld or client mtr_tofile($gdb_init_file, @@ -6066,6 +6109,32 @@ $$exe= "xterm"; } + # +# Modify the exe and args so that program is run in lldb +# +sub lldb_arguments { + my $args= shift; + my $exe= shift; + my $type= shift; + my $input= shift; + + my $lldb_init_file= "$opt_vardir/tmp/lldbinit.$type"; + unlink($lldb_init_file); + + my $runline=create_debug_statement($args,$input); + + # write init file for mysqld or client + mtr_tofile($lldb_init_file, + "b main\n" . + $runline); + + print "\nTo start lldb for $type, type in another window:\n"; + print "cd $glob_mysql_test_dir && lldb -s $lldb_init_file $$exe\n"; + + # Indicate the exe should not be started + $$exe= undef; + return; +} # # Modify the exe and args so that program is run in ddd @@ -6081,9 +6150,7 @@ # Remove the old gdbinit file unlink($gdb_init_file); - # Put $args into a single string - my $str= join(" ", @$$args); - my $runline= $input ? "run $str < $input" : "run $str"; + my $runline=create_debug_statement($args,$input); # write init file for mysqld or client mtr_tofile($gdb_init_file, @@ -6544,6 +6611,8 @@ test(s) manual-dbx Let user manually start mysqld in dbx, before running test(s) + manual-lldb Let user manually start mysqld in lldb, before running + test(s) strace-client Create strace output for mysqltest client, strace-server Create strace output for mysqltest server, max-save-core Limit the number of core files saved (to avoid filling diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/alter_table.result percona-xtrabackup-2.3.7/mysql-test/r/alter_table.result --- percona-xtrabackup-2.2.3/mysql-test/r/alter_table.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/alter_table.result 2017-02-27 07:47:02.000000000 +0000 @@ -1987,3 +1987,561 @@ ERROR HY000: Storage engine 'InnoDB' does not support system tables. [mysql.help_topic] use test; # End of Bug#11815557 +# +# BUG#17246318 - ALTER TABLE SHOULD NOT ALLOW CREATION OF TABLES +# WITH BOTH 5.5 AND 5.6 TEMPORALS +# +# BUG 18985760 -"FAST" ALTER TABLE CHANGE ON ENUM COLUMN +# TRIGGERS FULL TABLE REBUILD. +# Test for the case where 'avoid_temporal_upgrade' is set +# to the DEFAULT value(OFF). +ALTER TABLE t1 ENGINE= INNODB; +#ALTER operations using INPLACE algorithm is disallowed +#since the table contains old temporal type. +ALTER TABLE t1 ADD COLUMN fld4 TIMESTAMP, ALGORITHM= INPLACE; +ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY. +ALTER TABLE t1 ADD COLUMN fld4 TIMESTAMP FIRST, ALGORITHM= INPLACE; +ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY. +ALTER TABLE t1 ADD COLUMN fld4 TIMESTAMP AFTER f_timestamp, ALGORITHM= INPLACE; +ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY. +ALTER TABLE t1 CHANGE COLUMN f_time fld4 TIMESTAMP, ALGORITHM= INPLACE; +ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY. +ALTER TABLE t1 MODIFY f_datetime TIME, ALGORITHM= INPLACE; +ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY. +ALTER TABLE t1 ADD INDEX index1(f_datetime), ALGORITHM= INPLACE; +ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY. +#ALTER operations using COPY algorithm is allowed +#when the table contains old temporal type. +#Note: Timestamp encoding remains the same for the non-fractional part +#even in the 5.6 format. Hence there is no change in the display before +#and after upgrade. +#ADD COLUMN upgrades the old temporal type. +CREATE TABLE t2 LIKE t1; +INSERT INTO t2 VALUES ('22:22:22','2011-11-21 22:22:22','2011-11-21 22:22:22'); +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 ADD COLUMN fld4 TIMESTAMP, ALGORITHM= COPY; +Warnings: +Note 1880 TIME/TIMESTAMP/DATETIME columns of old format have been upgraded to the new format. +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 816596 998AAB6596 4ECAA4EE +DROP TABLE t2; +#ADD COLUMN FIRST upgrades the old temporal type. +CREATE TABLE t2 LIKE t1; +INSERT INTO t2 VALUES ('22:22:22','2011-11-21 22:22:22','2011-11-21 22:22:22'); +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 ADD COLUMN fld4 TIMESTAMP FIRST, ALGORITHM= COPY; +Warnings: +Note 1880 TIME/TIMESTAMP/DATETIME columns of old format have been upgraded to the new format. +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 816596 998AAB6596 4ECAA4EE +DROP TABLE t2; +#ADD COLUMN AFTER upgrades the old temporal type. +CREATE TABLE t2 LIKE t1; +INSERT INTO t2 VALUES ('22:22:22','2011-11-21 22:22:22','2011-11-21 22:22:22'); +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 ADD COLUMN fld4 TIMESTAMP AFTER f_timestamp, ALGORITHM= COPY; +Warnings: +Note 1880 TIME/TIMESTAMP/DATETIME columns of old format have been upgraded to the new format. +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 816596 998AAB6596 4ECAA4EE +DROP TABLE t2; +#CHANGE COLUMN upgrades the old temporal type. +CREATE TABLE t2 LIKE t1; +INSERT INTO t2 VALUES ('22:22:22','2011-11-21 22:22:22','2011-11-21 22:22:22'); +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 CHANGE COLUMN f_timestamp fld4 TIMESTAMP, ALGORITHM= COPY; +Warnings: +Note 1880 TIME/TIMESTAMP/DATETIME columns of old format have been upgraded to the new format. +SELECT f_time, f_datetime, fld4, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(fld4)) FROM t2; +f_time f_datetime fld4 HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(fld4)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 816596 998AAB6596 4ECAA4EE +DROP TABLE t2; +#MODIFY COLUMN upgrades the old temporal type. +CREATE TABLE t2 LIKE t1; +INSERT INTO t2 VALUES ('22:22:22','2011-11-21 22:22:22','2011-11-21 22:22:22'); +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 MODIFY f_timestamp TIME, ALGORITHM= COPY; +Warnings: +Note 1880 TIME/TIMESTAMP/DATETIME columns of old format have been upgraded to the new format. +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 22:22:22 816596 998AAB6596 816596 +DROP TABLE t2; +#ADD INDEX upgrades the old temporal type. +CREATE TABLE t2 LIKE t1; +INSERT INTO t2 VALUES ('22:22:22','2011-11-21 22:22:22','2011-11-21 22:22:22'); +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 ADD INDEX index1(f_timestamp), ALGORITHM= COPY; +Warnings: +Note 1880 TIME/TIMESTAMP/DATETIME columns of old format have been upgraded to the new format. +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 816596 998AAB6596 4ECAA4EE +DROP TABLE t2; +#ALTER operations using DEFAULT algorithm is allowed +#when the table contains old temporal type. +#ADD COLUMN upgrades the old temporal type. +CREATE TABLE t2 LIKE t1; +INSERT INTO t2 VALUES ('22:22:22','2011-11-21 22:22:22','2011-11-21 22:22:22'); +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 ADD COLUMN fld4 TIMESTAMP, ALGORITHM= DEFAULT; +Warnings: +Note 1880 TIME/TIMESTAMP/DATETIME columns of old format have been upgraded to the new format. +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 816596 998AAB6596 4ECAA4EE +DROP TABLE t2; +#ADD COLUMN FIRST upgrades the old temporal type. +CREATE TABLE t2 LIKE t1; +INSERT INTO t2 VALUES ('22:22:22','2011-11-21 22:22:22','2011-11-21 22:22:22'); +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 ADD COLUMN fld4 TIMESTAMP FIRST, ALGORITHM= DEFAULT; +Warnings: +Note 1880 TIME/TIMESTAMP/DATETIME columns of old format have been upgraded to the new format. +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 816596 998AAB6596 4ECAA4EE +DROP TABLE t2; +#ADD COLUMN AFTER upgrades the old temporal type. +CREATE TABLE t2 LIKE t1; +INSERT INTO t2 VALUES ('22:22:22','2011-11-21 22:22:22','2011-11-21 22:22:22'); +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 ADD COLUMN fld4 TIMESTAMP AFTER f_timestamp, ALGORITHM= DEFAULT; +Warnings: +Note 1880 TIME/TIMESTAMP/DATETIME columns of old format have been upgraded to the new format. +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 816596 998AAB6596 4ECAA4EE +DROP TABLE t2; +#CHANGE COLUMN upgrades the old temporal type. +CREATE TABLE t2 LIKE t1; +INSERT INTO t2 VALUES ('22:22:22','2011-11-21 22:22:22','2011-11-21 22:22:22'); +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 CHANGE COLUMN f_timestamp fld4 DATETIME, ALGORITHM= DEFAULT; +Warnings: +Note 1880 TIME/TIMESTAMP/DATETIME columns of old format have been upgraded to the new format. +SELECT f_time, f_datetime, fld4, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(fld4)) FROM t2; +f_time f_datetime fld4 HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(fld4)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 816596 998AAB6596 998AAB6596 +DROP TABLE t2; +#MODIFY COLUMN upgrades the old temporal type. +CREATE TABLE t2 LIKE t1; +INSERT INTO t2 VALUES ('22:22:22','2011-11-21 22:22:22','2011-11-21 22:22:22'); +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 MODIFY f_timestamp TIME, ALGORITHM= DEFAULT; +Warnings: +Note 1880 TIME/TIMESTAMP/DATETIME columns of old format have been upgraded to the new format. +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 22:22:22 816596 998AAB6596 816596 +DROP TABLE t2; +#ADD INDEX upgrades the old temporal type. +CREATE TABLE t2 LIKE t1; +INSERT INTO t2 VALUES ('22:22:22','2011-11-21 22:22:22','2011-11-21 22:22:22'); +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 ADD INDEX index1(f_timestamp), ALGORITHM= DEFAULT; +Warnings: +Note 1880 TIME/TIMESTAMP/DATETIME columns of old format have been upgraded to the new format. +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 816596 998AAB6596 4ECAA4EE +DROP TABLE t2; +#ALTER TABLE FORCE upgrades the old temporal types. +CREATE TABLE t2 LIKE t1; +INSERT INTO t2 VALUES ('22:22:22','2011-11-21 22:22:22','2011-11-21 22:22:22'); +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 FORCE; +Warnings: +Note 1880 TIME/TIMESTAMP/DATETIME columns of old format have been upgraded to the new format. +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 816596 998AAB6596 4ECAA4EE +DROP TABLE t2; +#Examples where the NOT NULL/NULL FLAG and DEFAULT values are retained +#after upgrade. +CREATE TABLE t2 LIKE t1; +INSERT INTO t2 VALUES ('22:22:22','2011-11-21 22:22:22','2011-11-21 22:22:22'); +#Before upgrade. +SHOW CREATE TABLE t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `f_time` time DEFAULT NULL, + `f_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `f_datetime` datetime DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +ALTER TABLE t2 ADD COLUMN fld4 TIMESTAMP, ALGORITHM= COPY; +Warnings: +Note 1880 TIME/TIMESTAMP/DATETIME columns of old format have been upgraded to the new format. +#After upgrade. +SHOW CREATE TABLE t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `f_time` time DEFAULT NULL, + `f_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `f_datetime` datetime DEFAULT NULL, + `fld4` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +#Examples of the Alter operation which does not upgrade +#the temporal formats. +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t1; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +10:10:10 2010-10-10 10:10:10 2031-11-21 17:11:01 818A92 0000124821911312 7468F975 +00:00:00 2000-01-01 01:01:01 2001-01-21 18:11:01 800000 00001230A2EA8AB5 3A6AFC05 +01:01:10 2020-01-01 01:01:01 1980-11-21 18:06:01 80277E 0000125F33D85AB5 147BF1D9 +NULL 2000-01-01 01:01:01 2015-11-21 17:11:01 NULL 00001230A2EA8AB5 56507B75 +00:00:00 NULL 2011-11-21 17:11:01 800000 NULL 4ECA5BF5 +ALTER TABLE t1 DROP COLUMN f_timestamp; +SELECT f_time, f_datetime, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)) FROM t1; +f_time f_datetime HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) +10:10:10 2010-10-10 10:10:10 818A92 0000124821911312 +00:00:00 2000-01-01 01:01:01 800000 00001230A2EA8AB5 +01:01:10 2020-01-01 01:01:01 80277E 0000125F33D85AB5 +NULL 2000-01-01 01:01:01 NULL 00001230A2EA8AB5 +00:00:00 NULL 800000 NULL +RENAME TABLE t1 to t3; +SELECT f_time, f_datetime, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)) FROM t3; +f_time f_datetime HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) +10:10:10 2010-10-10 10:10:10 818A92 0000124821911312 +00:00:00 2000-01-01 01:01:01 800000 00001230A2EA8AB5 +01:01:10 2020-01-01 01:01:01 80277E 0000125F33D85AB5 +NULL 2000-01-01 01:01:01 NULL 00001230A2EA8AB5 +00:00:00 NULL 800000 NULL +#Once the old temporal type is upgraded to new temporal type, +#ADD/CHANGE COLUMN, ADD INDEX operations succeed using INPLACE +#ALGORITHM. +ALTER TABLE t2 ADD COLUMN fld5 INT, ALGORITHM= INPLACE; +ALTER TABLE t2 ADD INDEX index2(fld5), ALGORITHM= INPLACE; +ALTER TABLE t2 CHANGE fld5 fld6 INT, ALGORITHM= INPLACE; +ALTER TABLE t2 MODIFY fld6 INT, ALGORITHM= INPLACE; +#Cleanup +DROP TABLE t2, t3; +# +# BUG 18985760 -"FAST" ALTER TABLE CHANGE ON ENUM COLUMN +# TRIGGERS FULL TABLE REBUILD. +# +# To support INPLACE ALTER table operations later in the test. +ALTER TABLE t1 ENGINE= INNODB; +#Test cases with the global variable 'avoid_temporal_upgrade' +#enabled. +SET @save_avoid_temporal_upgrade= @@global.avoid_temporal_upgrade; +Warnings: +Warning 1287 '@@avoid_temporal_upgrade' is deprecated and will be removed in a future release. +SET GLOBAL avoid_temporal_upgrade= ON; +Warnings: +Warning 1287 '@@avoid_temporal_upgrade' is deprecated and will be removed in a future release. +#ALTER operations using INPLACE algorithm are allowed +#when the table contains old temporal type since +#the global variable 'avoid_temporal_upgrade' is +#enabled. The old temporal types are not upgraded. +CREATE TABLE t2 LIKE t1; +INSERT INTO t2 VALUES ('22:22:22','2011-11-21 22:22:22','2011-11-21 22:22:22'); +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 ADD COLUMN fld4 TIMESTAMP, ALGORITHM= INPLACE; +SELECT f_time, f_datetime, f_timestamp, fld4, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)), +HEX(WEIGHT_STRING(fld4)) FROM t2; +f_time f_datetime f_timestamp fld4 HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) HEX(WEIGHT_STRING(fld4)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 0000-00-00 00:00:00 83640E 0000124A7C3C8A4E 4ECAA4EE 00000000 +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 ADD COLUMN fld5 TIME DEFAULT '101010' FIRST, ALGORITHM= INPLACE; +SELECT f_time, f_datetime, f_timestamp, fld5, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)), +HEX(WEIGHT_STRING(fld5)) FROM t2; +f_time f_datetime f_timestamp fld5 HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) HEX(WEIGHT_STRING(fld5)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 10:10:10 83640E 0000124A7C3C8A4E 4ECAA4EE 80A28A +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 ADD COLUMN fld6 TIMESTAMP AFTER f_timestamp, ALGORITHM= INPLACE; +SELECT f_time, f_datetime, f_timestamp, fld6, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)), +HEX(WEIGHT_STRING(fld6)) FROM t2; +f_time f_datetime f_timestamp fld6 HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) HEX(WEIGHT_STRING(fld6)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 0000-00-00 00:00:00 83640E 0000124A7C3C8A4E 4ECAA4EE 00000000 +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 ADD INDEX index1(f_datetime), ALGORITHM= INPLACE; +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +DROP TABLE t2; +#ALTER operations using COPY algorithm are allowed +#when the table contains old temporal type and +#does not upgrade the old temporal types. +#ADD COLUMN does not upgrade the old temporal type. +CREATE TABLE t2 LIKE t1; +INSERT INTO t2 VALUES ('22:22:22','2011-11-21 22:22:22','2011-11-21 22:22:22'); +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 ADD COLUMN fld4 TIMESTAMP, ALGORITHM= COPY; +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +#ADD COLUMN FIRST does not upgrade the old temporal type. +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 ADD COLUMN fld5 TIMESTAMP FIRST, ALGORITHM= COPY; +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +#ADD COLUMN AFTER does not upgrade the old temporal type. +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 ADD COLUMN fld6 TIMESTAMP AFTER f_timestamp, ALGORITHM= COPY; +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +#CHANGE COLUMN upgrades the old temporal type only for the column which +#is changed. +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 CHANGE COLUMN f_datetime fld7 DATETIME, ALGORITHM= COPY; +SELECT f_time, fld7, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(fld7)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time fld7 f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(fld7)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 998AAB6596 4ECAA4EE +#MODIFY COLUMN upgrades the old temporal type only for the column +#modified. +SELECT f_time, fld7, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(fld7)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time fld7 f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(fld7)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 998AAB6596 4ECAA4EE +ALTER TABLE t2 MODIFY f_timestamp DATETIME, ALGORITHM= COPY; +SELECT f_time, fld7, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(fld7)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time fld7 f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(fld7)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 998AAB6596 998AAB6596 +#ADD INDEX does not upgrade the old temporal type. +SELECT f_time, fld7, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(fld7)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time fld7 f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(fld7)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 998AAB6596 998AAB6596 +ALTER TABLE t2 ADD INDEX index1(f_time), ALGORITHM= COPY; +SELECT f_time, fld7, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(fld7)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time fld7 f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(fld7)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 998AAB6596 998AAB6596 +DROP TABLE t2; +#ALTER operations using DEFAULT algorithm are allowed +#when the table contains old temporal type and does not +#upgrade the old temporal types. +#ADD COLUMN does not upgrade the old temporal type. +CREATE TABLE t2 LIKE t1; +INSERT INTO t2 VALUES ('22:22:22','2011-11-21 22:22:22','2011-11-21 22:22:22'); +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 ADD COLUMN fld4 TIMESTAMP, ALGORITHM= DEFAULT; +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +#ADD COLUMN FIRST does not upgrade the old temporal type. +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 ADD COLUMN fld5 TIMESTAMP FIRST, ALGORITHM= DEFAULT; +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +#ADD COLUMN AFTER does not upgrade the old temporal type. +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 ADD COLUMN fld6 TIMESTAMP AFTER f_timestamp, ALGORITHM= DEFAULT; +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +#CHANGE COLUMN upgrades the old temporal type only for the column which +#is changed. +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 CHANGE COLUMN f_datetime fld7 DATETIME, ALGORITHM= DEFAULT; +SELECT f_time, fld7, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(fld7)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time fld7 f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(fld7)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 998AAB6596 4ECAA4EE +#MODIFY COLUMN upgrades the old temporal type only for the column +#modified. +SELECT f_time, fld7, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(fld7)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time fld7 f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(fld7)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 998AAB6596 4ECAA4EE +ALTER TABLE t2 MODIFY f_timestamp DATETIME, ALGORITHM= DEFAULT; +SELECT f_time, fld7, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(fld7)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time fld7 f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(fld7)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 998AAB6596 998AAB6596 +#ADD INDEX does not upgrade the old temporal type. +SELECT f_time, fld7, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(fld7)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time fld7 f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(fld7)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 998AAB6596 998AAB6596 +ALTER TABLE t2 ADD INDEX index1(f_time), ALGORITHM= DEFAULT; +SELECT f_time, fld7, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(fld7)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time fld7 f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(fld7)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 998AAB6596 998AAB6596 +DROP TABLE t2; +#ALTER TABLE FORCE does not upgrade the old temporal types. +CREATE TABLE t2 LIKE t1; +INSERT INTO t2 VALUES ('22:22:22','2011-11-21 22:22:22','2011-11-21 22:22:22'); +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +ALTER TABLE t2 FORCE; +SELECT f_time, f_datetime, f_timestamp, HEX(WEIGHT_STRING(f_time)), +HEX(WEIGHT_STRING(f_datetime)), HEX(WEIGHT_STRING(f_timestamp)) FROM t2; +f_time f_datetime f_timestamp HEX(WEIGHT_STRING(f_time)) HEX(WEIGHT_STRING(f_datetime)) HEX(WEIGHT_STRING(f_timestamp)) +22:22:22 2011-11-21 22:22:22 2011-11-21 22:22:22 83640E 0000124A7C3C8A4E 4ECAA4EE +DROP TABLE t2; +SET @@global.avoid_temporal_upgrade= @save_avoid_temporal_upgrade; +Warnings: +Warning 1287 '@@avoid_temporal_upgrade' is deprecated and will be removed in a future release. +#Test cases with the session variable 'show_old_temporals' +#enabled. +#Setup +CREATE TABLE t2(fld1 time, fld2 datetime, fld3 timestamp); +SET @save_show_old_temporals= @@session.show_old_temporals; +Warnings: +Warning 1287 '@@show_old_temporals' is deprecated and will be removed in a future release. +SET SESSION show_old_temporals= ON; +Warnings: +Warning 1287 '@@show_old_temporals' is deprecated and will be removed in a future release. +#Displays a comment to indicate that the columns are of 5.5 +#binary format +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_time` time /* 5.5 binary format */ DEFAULT NULL, + `f_timestamp` timestamp /* 5.5 binary format */ NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `f_datetime` datetime /* 5.5 binary format */ DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +SELECT COLUMN_TYPE FROM information_schema.columns WHERE table_name='t1'; +COLUMN_TYPE +time /* 5.5 binary format */ +timestamp /* 5.5 binary format */ +datetime /* 5.5 binary format */ +#Since the temporal types are in new format, no comment is +#displayed +SHOW CREATE TABLE t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `fld1` time DEFAULT NULL, + `fld2` datetime DEFAULT NULL, + `fld3` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +SELECT COLUMN_TYPE FROM information_schema.columns WHERE table_name='t2'; +COLUMN_TYPE +time +datetime +timestamp +#Does not display the comment for table with old temporal types +#since the session variable 'show_old_temporals' is OFF. +SET SESSION show_old_temporals= OFF; +Warnings: +Warning 1287 '@@show_old_temporals' is deprecated and will be removed in a future release. +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_time` time DEFAULT NULL, + `f_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `f_datetime` datetime DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +SELECT COLUMN_TYPE FROM information_schema.columns WHERE table_name='t1'; +COLUMN_TYPE +time +timestamp +datetime +#Cleanup +SET @@session.show_old_temporals= @save_show_old_temporals; +Warnings: +Warning 1287 '@@show_old_temporals' is deprecated and will be removed in a future release. +DROP TABLE t1, t2; diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/bug17076131.result percona-xtrabackup-2.3.7/mysql-test/r/bug17076131.result --- percona-xtrabackup-2.2.3/mysql-test/r/bug17076131.result 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/bug17076131.result 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,12 @@ +# +# Bug#17076131 MYSQLDUMP FAILS WHEN ERR LOG ON RUNNING SERVER IS +# DELETED ON WINDOWS +# +# Creating file aliases. +# Executing mysqldump normally. +# Removing Error_log file. +# Executing mysqldump after deleting error_log file. +# Checking diff of the 2 dumps. +# No Difference found. +# Clean Up. +# End of Test. diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/check_auto_permission.result percona-xtrabackup-2.3.7/mysql-test/r/check_auto_permission.result --- percona-xtrabackup-2.2.3/mysql-test/r/check_auto_permission.result 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/check_auto_permission.result 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,3 @@ +CALL mtr.add_suppression("World-writable config file './auto.cnf' is ignored"); +CALL mtr.add_suppression("World-writable config file './auto.cnf' has been removed."); +include/assert.inc [File permissions should be equl to decimal 432(i.e octal 660).] diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/connect.result percona-xtrabackup-2.3.7/mysql-test/r/connect.result --- percona-xtrabackup-2.2.3/mysql-test/r/connect.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/connect.result 2017-02-27 07:47:02.000000000 +0000 @@ -81,12 +81,15 @@ Warnings: Warning 1287 'pre-4.1 password hash' is deprecated and will be removed in a future release. Please use post-4.1 password hash instead update mysql.user set password=old_password("gambling2"), plugin="mysql_old_password" where user=_binary"test"; +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead flush privileges; set password=""; set password='gambling3'; ERROR HY000: Password hash should be a 16-digit hexadecimal number set password=old_password('gambling3'); Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead Warning 1287 'pre-4.1 password hash' is deprecated and will be removed in a future release. Please use post-4.1 password hash instead show tables; Tables_in_mysql @@ -252,10 +255,12 @@ CREATE USER old_pwd@localhost IDENTIFIED WITH 'mysql_old_password'; SET PASSWORD FOR old_pwd@localhost= OLD_PASSWORD('aha'); Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead Warning 1287 'pre-4.1 password hash' is deprecated and will be removed in a future release. Please use post-4.1 password hash instead #Expect deprecation warning SET PASSWORD FOR old_pwd@localhost = OLD_PASSWORD('aha2'); Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead Warning 1287 'pre-4.1 password hash' is deprecated and will be removed in a future release. Please use post-4.1 password hash instead #Expect deprecation warning GRANT SELECT on test.* TO old_gpwd@localhost @@ -266,6 +271,7 @@ IDENTIFIED WITH 'mysql_old_password'; SET PASSWORD FOR old_gpwd@localhost= OLD_PASSWORD('aha4'); Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead Warning 1287 'pre-4.1 password hash' is deprecated and will be removed in a future release. Please use post-4.1 password hash instead #Expected normal flush, no warnings FLUSH PRIVILEGES; diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/count_distinct.result percona-xtrabackup-2.3.7/mysql-test/r/count_distinct.result --- percona-xtrabackup-2.2.3/mysql-test/r/count_distinct.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/count_distinct.result 2017-02-27 07:47:02.000000000 +0000 @@ -94,3 +94,161 @@ 2 drop table t1; drop view v1; +# +# Bug#11760197: INCORRECT RESULTS WITH COUNT DISTINCT AND BIG_TABLES +# +CREATE TABLE t1 (a INT PRIMARY KEY); +INSERT INTO t1 VALUES (1),(2); +SET @big_tables_save= @@big_tables; +SET SESSION big_tables=0; +SELECT COUNT(DISTINCT t1.a) FROM t1,t1 t2 WHERE t1.a = 1; +COUNT(DISTINCT t1.a) +1 +SET SESSION big_tables=1; +SELECT COUNT(DISTINCT t1.a) FROM t1,t1 t2 WHERE t1.a = 1; +COUNT(DISTINCT t1.a) +1 +DROP TABLE t1; +CREATE TABLE t1 (a BLOB ,PRIMARY KEY(a(10))); +INSERT INTO t1 VALUES (1),(2); +SET SESSION big_tables=0; +SELECT COUNT(DISTINCT t1.a) FROM t1,t1 t2 WHERE t1.a = 1; +COUNT(DISTINCT t1.a) +1 +SELECT COUNT(DISTINCT t1.a) FROM t1,t1 t2 WHERE t1.a = '1'; +COUNT(DISTINCT t1.a) +1 +SET SESSION big_tables=1; +SELECT COUNT(DISTINCT t1.a) FROM t1,t1 t2 WHERE t1.a = 1; +COUNT(DISTINCT t1.a) +1 +SELECT COUNT(DISTINCT t1.a) FROM t1,t1 t2 WHERE t1.a = '1'; +COUNT(DISTINCT t1.a) +1 +DROP TABLE t1; +CREATE TABLE t1 (a CHAR PRIMARY KEY); +INSERT INTO t1 VALUES (1),(2); +SET SESSION big_tables=0; +SELECT COUNT(DISTINCT t1.a) FROM t1,t1 t2 WHERE t1.a = 1; +COUNT(DISTINCT t1.a) +1 +SELECT COUNT(DISTINCT t1.a) FROM t1,t1 t2 WHERE t1.a = '1'; +COUNT(DISTINCT t1.a) +1 +SET SESSION big_tables=1; +SELECT COUNT(DISTINCT t1.a) FROM t1,t1 t2 WHERE t1.a = 1; +COUNT(DISTINCT t1.a) +1 +SELECT COUNT(DISTINCT t1.a) FROM t1,t1 t2 WHERE t1.a = '1'; +COUNT(DISTINCT t1.a) +1 +SET SESSION big_tables= @big_tables_save; +DROP TABLE t1; +# +# BUG#17607155: ASSERTION FAILED: +# ((ITEM_RESULT_FIELD*)ITEM)->RESULT_FIELD +# +CREATE TABLE t (a INT)ENGINE=INNODB; +INSERT t VALUES(1); +SELECT '' FROM t GROUP BY 1 WITH ROLLUP HAVING GROUP_CONCAT(''); + +DROP TABLE t; +# +# BUG#17957913: ASSERTION `((ITEM_RESULT_FIELD*)ITEM)->RESULT_FIELD' +# FAILS IN CREATE_TMP_FIELD +# +CREATE TABLE t1 ( i INT ); +INSERT INTO t1 VALUES (1),(2); +SELECT GROUP_CONCAT(i,'foo') AS f1 FROM t1 GROUP BY 'a' WITH ROLLUP; +f1 +1foo,2foo +1foo,2foo +DROP TABLE t1; +# +# Bug #17555462: SELECT DISTINCT OF VIEW WITH CONSTANT STRING +# RETURNS WRONG RESULT +# +CREATE TABLE t (x char(3)); +INSERT INTO t VALUES ('foo'), ('bar'); +CREATE VIEW v AS SELECT 'x' AS x FROM t; +SELECT DISTINCT x FROM v; +x +x +DROP TABLE t; +DROP VIEW v; +# +# Bug #17634335 SELECT DISTINCT...GROUP BY RETURNS WRONG +# RESULTS IN SOME CASES +# +CREATE TABLE t1 ( +a int(11) DEFAULT NULL, +b int(11) DEFAULT NULL, +c int(11) DEFAULT NULL +) ENGINE=InnoDB; +INSERT INTO t1 +VALUES (1,1,1),(1,2,1),(1,3,0), +(1,4,0),(2,1,1),(2,2,1),(2,3,0),(2,4,0); +SELECT DISTINCT a, b +FROM (SELECT * FROM t1 ORDER BY a, b) AS f +GROUP BY a,c; +a b +1 3 +1 1 +2 3 +2 1 +SELECT DISTINCT a, b, 0 +FROM (SELECT * FROM t1 ORDER BY a, b) AS f +GROUP BY a,c; +a b 0 +1 3 0 +1 1 0 +2 3 0 +2 1 0 +DROP TABLE t1; +# +# Bug #18853696 WRONG RESULT FOR COUNT DISTINCT OF RESULT +# OF JOINED DERIVED TABLE +# +CREATE TABLE t1 ( +pk INT NOT NULL, +col_varchar_key VARCHAR(1), +col_varchar_nokey VARCHAR(1), +PRIMARY KEY (pk), +KEY col_varchar_key (col_varchar_key) +); +INSERT INTO t1 VALUES (10,'x','x'); +INSERT INTO t1 VALUES (11,'d','d'); +INSERT INTO t1 VALUES (12,'r','r'); +INSERT INTO t1 VALUES (13,'f','f'); +INSERT INTO t1 VALUES (14,'y','y'); +CREATE TABLE t2 ( +pk INT NOT NULL, +col_int_nokey INT, +col_varchar_key VARCHAR(1), +PRIMARY KEY (pk), +KEY col_varchar_key (col_varchar_key) +); +INSERT INTO t2 VALUES (1,7,'x'); +SELECT COUNT( DISTINCT table1.col_varchar_key ) +FROM t2 AS table1 +JOIN (SELECT * FROM t1) AS table2 +ON ( table2.pk = table1.col_int_nokey ) +WHERE table1.pk = 1; +COUNT( DISTINCT table1.col_varchar_key ) +0 +SELECT COUNT( DISTINCT table1.col_varchar_key ) +FROM t2 AS table1 +JOIN t1 AS table2 +ON ( table2.pk = table1.col_int_nokey ) +WHERE table1.pk = 1; +COUNT( DISTINCT table1.col_varchar_key ) +0 +SELECT COUNT( table1.col_varchar_key ) +FROM t2 AS table1 +JOIN (SELECT * FROM t1) AS table2 +ON ( table2.pk = table1.col_int_nokey ) +WHERE table1.pk = 1; +COUNT( table1.col_varchar_key ) +0 +DROP TABLE t1,t2; +# End of test for Bug#18853696 diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/create.result percona-xtrabackup-2.3.7/mysql-test/r/create.result --- percona-xtrabackup-2.2.3/mysql-test/r/create.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/create.result 2017-02-27 07:47:02.000000000 +0000 @@ -318,7 +318,7 @@ Note 1050 Table 't1' already exists show status like "Opened_tables"; Variable_name Value -Opened_tables 2 +Opened_tables 1 select * from t1; a b 1 1 diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/ctype_binary.result percona-xtrabackup-2.3.7/mysql-test/r/ctype_binary.result --- percona-xtrabackup-2.2.3/mysql-test/r/ctype_binary.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/ctype_binary.result 2017-02-27 07:47:02.000000000 +0000 @@ -494,7 +494,12 @@ select old_password('a'), hex(old_password('a')); old_password('a') hex(old_password('a')) 60671c896665c3fa 36303637316338393636363563336661 +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead create table t1 as select old_password('a') as c1; +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -2578,6 +2583,8 @@ charset(@x) collation(@x) binary binary SET @x=old_password('a'); +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead SELECT charset(@x), collation(@x); charset(@x) collation(@x) binary binary diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/ctype_cp1251.result percona-xtrabackup-2.3.7/mysql-test/r/ctype_cp1251.result --- percona-xtrabackup-2.2.3/mysql-test/r/ctype_cp1251.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/ctype_cp1251.result 2017-02-27 07:47:02.000000000 +0000 @@ -886,7 +886,12 @@ select old_password('a'), hex(old_password('a')); old_password('a') hex(old_password('a')) 60671c896665c3fa 36303637316338393636363563336661 +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead create table t1 as select old_password('a') as c1; +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -2970,6 +2975,8 @@ charset(@x) collation(@x) cp1251 cp1251_general_ci SET @x=old_password('a'); +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead SELECT charset(@x), collation(@x); charset(@x) collation(@x) cp1251 cp1251_general_ci diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/ctype_cp932.result percona-xtrabackup-2.3.7/mysql-test/r/ctype_cp932.result --- percona-xtrabackup-2.2.3/mysql-test/r/ctype_cp932.result 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/ctype_cp932.result 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,35 @@ +# +# Bug #11755818 LIKE DOESN'T MATCH WHEN CP932_BIN/SJIS_BIN COLLATIONS ARE +# USED. +# +SET @old_character_set_client= @@character_set_client; +SET @old_character_set_connection= @@character_set_connection; +SET @old_character_set_results= @@character_set_results; +SET character_set_client= 'utf8'; +SET character_set_connection= 'utf8'; +SET character_set_results= 'utf8'; +CREATE TABLE t1 (a VARCHAR(10) COLLATE cp932_bin); +INSERT INTO t1 VALUES('カカ'); +SELECT * FROM t1 WHERE a LIKE '%カ'; +a +カカ +SELECT * FROM t1 WHERE a LIKE '_カ'; +a +カカ +SELECT * FROM t1 WHERE a LIKE '%_カ'; +a +カカ +ALTER TABLE t1 MODIFY a VARCHAR(100) COLLATE sjis_bin; +SELECT * FROM t1 WHERE a LIKE '%カ'; +a +カカ +SELECT * FROM t1 WHERE a LIKE '_カ'; +a +カカ +SELECT * FROM t1 WHERE a LIKE '%_カ'; +a +カカ +DROP TABLE t1; +SET @@character_set_client= @old_character_set_client; +SET @@character_set_connection= @old_character_set_connection; +SET @@character_set_results= @old_character_set_results; diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/ctype_latin1.result percona-xtrabackup-2.3.7/mysql-test/r/ctype_latin1.result --- percona-xtrabackup-2.2.3/mysql-test/r/ctype_latin1.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/ctype_latin1.result 2017-02-27 07:47:02.000000000 +0000 @@ -913,7 +913,12 @@ select old_password('a'), hex(old_password('a')); old_password('a') hex(old_password('a')) 60671c896665c3fa 36303637316338393636363563336661 +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead create table t1 as select old_password('a') as c1; +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -2997,6 +3002,8 @@ charset(@x) collation(@x) latin1 latin1_swedish_ci SET @x=old_password('a'); +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead SELECT charset(@x), collation(@x); charset(@x) collation(@x) latin1 latin1_swedish_ci diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/ctype_ucs.result percona-xtrabackup-2.3.7/mysql-test/r/ctype_ucs.result --- percona-xtrabackup-2.2.3/mysql-test/r/ctype_ucs.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/ctype_ucs.result 2017-02-27 07:47:02.000000000 +0000 @@ -1831,7 +1831,12 @@ select old_password('a'), hex(old_password('a')); old_password('a') hex(old_password('a')) 0705298948d1f92f 0030003700300035003200390038003900340038006400310066003900320066 +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead create table t1 as select old_password('a') as c1; +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -3915,6 +3920,8 @@ charset(@x) collation(@x) ucs2 ucs2_general_ci SET @x=old_password('a'); +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead SELECT charset(@x), collation(@x); charset(@x) collation(@x) ucs2 ucs2_general_ci diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/ctype_utf8.result percona-xtrabackup-2.3.7/mysql-test/r/ctype_utf8.result --- percona-xtrabackup-2.2.3/mysql-test/r/ctype_utf8.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/ctype_utf8.result 2017-02-27 07:47:02.000000000 +0000 @@ -2740,7 +2740,12 @@ select old_password('a'), hex(old_password('a')); old_password('a') hex(old_password('a')) 60671c896665c3fa 36303637316338393636363563336661 +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead create table t1 as select old_password('a') as c1; +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -4824,6 +4829,8 @@ charset(@x) collation(@x) utf8 utf8_general_ci SET @x=old_password('a'); +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead SELECT charset(@x), collation(@x); charset(@x) collation(@x) utf8 utf8_general_ci diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/ddl_i18n_koi8r.result percona-xtrabackup-2.3.7/mysql-test/r/ddl_i18n_koi8r.result --- percona-xtrabackup-2.2.3/mysql-test/r/ddl_i18n_koi8r.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/ddl_i18n_koi8r.result 2017-02-27 07:47:02.000000000 +0000 @@ -260,7 +260,7 @@ SHOW CREATE PROCEDURE p1| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p1 CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`( +p1 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`( INOUT ÐÁÒÁÍ1 CHAR(10), OUT ÐÁÒÁÍ2 CHAR(10)) BEGIN @@ -281,7 +281,7 @@ SHOW CREATE PROCEDURE p2| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p2 CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`( +p2 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`( INOUT ÐÁÒÁÍ1 CHAR(10) CHARACTER SET utf8, OUT ÐÁÒÁÍ2 CHAR(10) CHARACTER SET utf8) BEGIN @@ -302,7 +302,7 @@ SHOW CREATE PROCEDURE mysqltest2.p3| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p3 CREATE DEFINER=`root`@`localhost` PROCEDURE `p3`( +p3 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p3`( INOUT ÐÁÒÁÍ1 CHAR(10), OUT ÐÁÒÁÍ2 CHAR(10)) BEGIN @@ -323,7 +323,7 @@ SHOW CREATE PROCEDURE mysqltest2.p4| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p4 CREATE DEFINER=`root`@`localhost` PROCEDURE `p4`( +p4 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p4`( INOUT ÐÁÒÁÍ1 CHAR(10) CHARACTER SET utf8, OUT ÐÁÒÁÍ2 CHAR(10) CHARACTER SET utf8) BEGIN @@ -376,7 +376,7 @@ @@character_set_client AS c8; SET ÐÁÒÁÍ1 = 'a'; SET ÐÁÒÁÍ2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'| SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -394,7 +394,7 @@ @@character_set_client AS c8; SET ÐÁÒÁÍ1 = 'a'; SET ÐÁÒÁÍ2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'| SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -412,7 +412,7 @@ @@character_set_client AS c8; SET ÐÁÒÁÍ1 = 'a'; SET ÐÁÒÁÍ2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'| SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -430,7 +430,7 @@ @@character_set_client AS c8; SET ÐÁÒÁÍ1 = 'a'; SET ÐÁÒÁÍ2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SET @a = '1'| @@ -506,7 +506,7 @@ SHOW CREATE PROCEDURE p1| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p1 CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`( +p1 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`( INOUT ÐÁÒÁÍ1 CHAR(10), OUT ÐÁÒÁÍ2 CHAR(10)) BEGIN @@ -527,7 +527,7 @@ SHOW CREATE PROCEDURE p2| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p2 CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`( +p2 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`( INOUT ÐÁÒÁÍ1 CHAR(10) CHARACTER SET utf8, OUT ÐÁÒÁÍ2 CHAR(10) CHARACTER SET utf8) BEGIN @@ -548,7 +548,7 @@ SHOW CREATE PROCEDURE mysqltest2.p3| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p3 CREATE DEFINER=`root`@`localhost` PROCEDURE `p3`( +p3 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p3`( INOUT ÐÁÒÁÍ1 CHAR(10), OUT ÐÁÒÁÍ2 CHAR(10)) BEGIN @@ -569,7 +569,7 @@ SHOW CREATE PROCEDURE mysqltest2.p4| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p4 CREATE DEFINER=`root`@`localhost` PROCEDURE `p4`( +p4 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p4`( INOUT ÐÁÒÁÍ1 CHAR(10) CHARACTER SET utf8, OUT ÐÁÒÁÍ2 CHAR(10) CHARACTER SET utf8) BEGIN @@ -622,7 +622,7 @@ @@character_set_client AS c8; SET ÐÁÒÁÍ1 = 'a'; SET ÐÁÒÁÍ2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'| SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -640,7 +640,7 @@ @@character_set_client AS c8; SET ÐÁÒÁÍ1 = 'a'; SET ÐÁÒÁÍ2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'| SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -658,7 +658,7 @@ @@character_set_client AS c8; SET ÐÁÒÁÍ1 = 'a'; SET ÐÁÒÁÍ2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'| SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -676,7 +676,7 @@ @@character_set_client AS c8; SET ÐÁÒÁÍ1 = 'a'; SET ÐÁÒÁÍ2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SET @a = '1'| @@ -732,7 +732,7 @@ /*!50003 SET character_set_results = koi8r */ ; /*!50003 SET collation_connection = koi8r_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`( INOUT ÐÁÒÁÍ1 CHAR(10), @@ -766,7 +766,7 @@ /*!50003 SET character_set_results = koi8r */ ; /*!50003 SET collation_connection = koi8r_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`( INOUT ÐÁÒÁÍ1 CHAR(10) CHARACTER SET utf8, @@ -808,7 +808,7 @@ /*!50003 SET character_set_results = koi8r */ ; /*!50003 SET collation_connection = koi8r_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `p3`( INOUT ÐÁÒÁÍ1 CHAR(10), @@ -842,7 +842,7 @@ /*!50003 SET character_set_results = koi8r */ ; /*!50003 SET collation_connection = koi8r_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `p4`( INOUT ÐÁÒÁÍ1 CHAR(10) CHARACTER SET utf8, @@ -908,7 +908,7 @@ SHOW CREATE PROCEDURE p1| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p1 CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`( +p1 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`( INOUT ÐÁÒÁÍ1 CHAR(10), OUT ÐÁÒÁÍ2 CHAR(10)) BEGIN @@ -929,7 +929,7 @@ SHOW CREATE PROCEDURE p2| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p2 CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`( +p2 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`( INOUT ÐÁÒÁÍ1 CHAR(10) CHARACTER SET utf8, OUT ÐÁÒÁÍ2 CHAR(10) CHARACTER SET utf8) BEGIN @@ -950,7 +950,7 @@ SHOW CREATE PROCEDURE mysqltest2.p3| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p3 CREATE DEFINER=`root`@`localhost` PROCEDURE `p3`( +p3 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p3`( INOUT ÐÁÒÁÍ1 CHAR(10), OUT ÐÁÒÁÍ2 CHAR(10)) BEGIN @@ -971,7 +971,7 @@ SHOW CREATE PROCEDURE mysqltest2.p4| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p4 CREATE DEFINER=`root`@`localhost` PROCEDURE `p4`( +p4 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p4`( INOUT ÐÁÒÁÍ1 CHAR(10) CHARACTER SET utf8, OUT ÐÁÒÁÍ2 CHAR(10) CHARACTER SET utf8) BEGIN @@ -1024,7 +1024,7 @@ @@character_set_client AS c8; SET ÐÁÒÁÍ1 = 'a'; SET ÐÁÒÁÍ2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'| SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -1042,7 +1042,7 @@ @@character_set_client AS c8; SET ÐÁÒÁÍ1 = 'a'; SET ÐÁÒÁÍ2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'| SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -1060,7 +1060,7 @@ @@character_set_client AS c8; SET ÐÁÒÁÍ1 = 'a'; SET ÐÁÒÁÍ2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'| SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -1078,7 +1078,7 @@ @@character_set_client AS c8; SET ÐÁÒÁÍ1 = 'a'; SET ÐÁÒÁÍ2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SET @a = '1'| @@ -1200,7 +1200,7 @@ SHOW CREATE TRIGGER trg1| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg1 CREATE DEFINER=`root`@`localhost` TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW +trg1 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10); INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1)); @@ -1216,7 +1216,7 @@ SHOW CREATE TRIGGER trg2| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg2 CREATE DEFINER=`root`@`localhost` TRIGGER trg2 AFTER INSERT ON t1 FOR EACH ROW +trg2 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER trg2 AFTER INSERT ON t1 FOR EACH ROW BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1)); @@ -1232,7 +1232,7 @@ SHOW CREATE TRIGGER mysqltest2.trg3| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg3 CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg3 BEFORE INSERT ON mysqltest2.t1 FOR EACH ROW +trg3 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg3 BEFORE INSERT ON mysqltest2.t1 FOR EACH ROW BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10); INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1)); @@ -1248,7 +1248,7 @@ SHOW CREATE TRIGGER mysqltest2.trg4| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg4 CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg4 AFTER INSERT ON mysqltest2.t1 FOR EACH ROW +trg4 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg4 AFTER INSERT ON mysqltest2.t1 FOR EACH ROW BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1)); @@ -1276,7 +1276,7 @@ SET @a1 = 'ÔÅËÓÔ'; SET @a1 = 'ÔÅËÓÔ'; SET @a2 = 'ÔÅËÓÔ'; -END BEFORE NULL root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END BEFORE NULL NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci trg2 INSERT t1 BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1)); @@ -1288,7 +1288,7 @@ SET @b1 = 'ÔÅËÓÔ'; SET @b1 = 'ÔÅËÓÔ'; SET @b2 = 'ÔÅËÓÔ'; -END AFTER NULL root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END AFTER NULL NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci use mysqltest2| @@ -1305,7 +1305,7 @@ SET @a1 = 'ÔÅËÓÔ'; SET @a1 = 'ÔÅËÓÔ'; SET @a2 = 'ÔÅËÓÔ'; -END BEFORE NULL root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END BEFORE NULL NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci trg4 INSERT t1 BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1)); @@ -1317,7 +1317,7 @@ SET @b1 = 'ÔÅËÓÔ'; SET @b1 = 'ÔÅËÓÔ'; SET @b2 = 'ÔÅËÓÔ'; -END AFTER NULL root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END AFTER NULL NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci use mysqltest1| @@ -1334,7 +1334,7 @@ SET @a1 = 'ÔÅËÓÔ'; SET @a1 = 'ÔÅËÓÔ'; SET @a2 = 'ÔÅËÓÔ'; -END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END ROW BEFORE NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg2'| TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -1349,7 +1349,7 @@ SET @b1 = 'ÔÅËÓÔ'; SET @b1 = 'ÔÅËÓÔ'; SET @b2 = 'ÔÅËÓÔ'; -END ROW AFTER NULL NULL OLD NEW CREATED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END ROW AFTER NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg3'| TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -1364,7 +1364,7 @@ SET @a1 = 'ÔÅËÓÔ'; SET @a1 = 'ÔÅËÓÔ'; SET @a2 = 'ÔÅËÓÔ'; -END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END ROW BEFORE NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg4'| TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -1379,7 +1379,7 @@ SET @b1 = 'ÔÅËÓÔ'; SET @b1 = 'ÔÅËÓÔ'; SET @b2 = 'ÔÅËÓÔ'; -END ROW AFTER NULL NULL OLD NEW CREATED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END ROW AFTER NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SET @a1 = '1'| @@ -1473,7 +1473,7 @@ SHOW CREATE TRIGGER trg1| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg1 CREATE DEFINER=`root`@`localhost` TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW +trg1 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10); INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1)); @@ -1489,7 +1489,7 @@ SHOW CREATE TRIGGER trg2| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg2 CREATE DEFINER=`root`@`localhost` TRIGGER trg2 AFTER INSERT ON t1 FOR EACH ROW +trg2 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER trg2 AFTER INSERT ON t1 FOR EACH ROW BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1)); @@ -1505,7 +1505,7 @@ SHOW CREATE TRIGGER mysqltest2.trg3| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg3 CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg3 BEFORE INSERT ON mysqltest2.t1 FOR EACH ROW +trg3 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg3 BEFORE INSERT ON mysqltest2.t1 FOR EACH ROW BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10); INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1)); @@ -1521,7 +1521,7 @@ SHOW CREATE TRIGGER mysqltest2.trg4| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg4 CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg4 AFTER INSERT ON mysqltest2.t1 FOR EACH ROW +trg4 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg4 AFTER INSERT ON mysqltest2.t1 FOR EACH ROW BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1)); @@ -1549,7 +1549,7 @@ SET @a1 = 'ÔÅËÓÔ'; SET @a1 = 'ÔÅËÓÔ'; SET @a2 = 'ÔÅËÓÔ'; -END BEFORE NULL root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END BEFORE NULL NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci trg2 INSERT t1 BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1)); @@ -1561,7 +1561,7 @@ SET @b1 = 'ÔÅËÓÔ'; SET @b1 = 'ÔÅËÓÔ'; SET @b2 = 'ÔÅËÓÔ'; -END AFTER NULL root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END AFTER NULL NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci use mysqltest2| @@ -1578,7 +1578,7 @@ SET @a1 = 'ÔÅËÓÔ'; SET @a1 = 'ÔÅËÓÔ'; SET @a2 = 'ÔÅËÓÔ'; -END BEFORE NULL root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END BEFORE NULL NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci trg4 INSERT t1 BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1)); @@ -1590,7 +1590,7 @@ SET @b1 = 'ÔÅËÓÔ'; SET @b1 = 'ÔÅËÓÔ'; SET @b2 = 'ÔÅËÓÔ'; -END AFTER NULL root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END AFTER NULL NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci use mysqltest1| @@ -1607,7 +1607,7 @@ SET @a1 = 'ÔÅËÓÔ'; SET @a1 = 'ÔÅËÓÔ'; SET @a2 = 'ÔÅËÓÔ'; -END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END ROW BEFORE NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg2'| TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -1622,7 +1622,7 @@ SET @b1 = 'ÔÅËÓÔ'; SET @b1 = 'ÔÅËÓÔ'; SET @b2 = 'ÔÅËÓÔ'; -END ROW AFTER NULL NULL OLD NEW CREATED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END ROW AFTER NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg3'| TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -1637,7 +1637,7 @@ SET @a1 = 'ÔÅËÓÔ'; SET @a1 = 'ÔÅËÓÔ'; SET @a2 = 'ÔÅËÓÔ'; -END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END ROW BEFORE NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg4'| TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -1652,7 +1652,7 @@ SET @b1 = 'ÔÅËÓÔ'; SET @b1 = 'ÔÅËÓÔ'; SET @b2 = 'ÔÅËÓÔ'; -END ROW AFTER NULL NULL OLD NEW CREATED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END ROW AFTER NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SET @a1 = '1'| @@ -1750,7 +1750,7 @@ /*!50003 SET character_set_results = koi8r */ ; /*!50003 SET collation_connection = koi8r_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN @@ -1779,7 +1779,7 @@ /*!50003 SET character_set_results = koi8r */ ; /*!50003 SET collation_connection = koi8r_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER trg2 AFTER INSERT ON t1 FOR EACH ROW BEGIN @@ -1829,7 +1829,7 @@ /*!50003 SET character_set_results = koi8r */ ; /*!50003 SET collation_connection = koi8r_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER mysqltest2.trg3 BEFORE INSERT ON mysqltest2.t1 FOR EACH ROW BEGIN @@ -1858,7 +1858,7 @@ /*!50003 SET character_set_results = koi8r */ ; /*!50003 SET collation_connection = koi8r_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER mysqltest2.trg4 AFTER INSERT ON mysqltest2.t1 FOR EACH ROW BEGIN @@ -1908,7 +1908,7 @@ SHOW CREATE TRIGGER trg1| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg1 CREATE DEFINER=`root`@`localhost` TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW +trg1 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10); INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1)); @@ -1924,7 +1924,7 @@ SHOW CREATE TRIGGER trg2| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg2 CREATE DEFINER=`root`@`localhost` TRIGGER trg2 AFTER INSERT ON t1 FOR EACH ROW +trg2 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER trg2 AFTER INSERT ON t1 FOR EACH ROW BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1)); @@ -1940,7 +1940,7 @@ SHOW CREATE TRIGGER mysqltest2.trg3| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg3 CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg3 BEFORE INSERT ON mysqltest2.t1 FOR EACH ROW +trg3 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg3 BEFORE INSERT ON mysqltest2.t1 FOR EACH ROW BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10); INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1)); @@ -1956,7 +1956,7 @@ SHOW CREATE TRIGGER mysqltest2.trg4| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg4 CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg4 AFTER INSERT ON mysqltest2.t1 FOR EACH ROW +trg4 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg4 AFTER INSERT ON mysqltest2.t1 FOR EACH ROW BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1)); @@ -1984,7 +1984,7 @@ SET @a1 = 'ÔÅËÓÔ'; SET @a1 = 'ÔÅËÓÔ'; SET @a2 = 'ÔÅËÓÔ'; -END BEFORE NULL root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END BEFORE NULL NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci trg2 INSERT t1 BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1)); @@ -1996,7 +1996,7 @@ SET @b1 = 'ÔÅËÓÔ'; SET @b1 = 'ÔÅËÓÔ'; SET @b2 = 'ÔÅËÓÔ'; -END AFTER NULL root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END AFTER NULL NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci use mysqltest2| @@ -2013,7 +2013,7 @@ SET @a1 = 'ÔÅËÓÔ'; SET @a1 = 'ÔÅËÓÔ'; SET @a2 = 'ÔÅËÓÔ'; -END BEFORE NULL root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END BEFORE NULL NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci trg4 INSERT t1 BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(ÐÅÒÅÍ1)); @@ -2025,7 +2025,7 @@ SET @b1 = 'ÔÅËÓÔ'; SET @b1 = 'ÔÅËÓÔ'; SET @b2 = 'ÔÅËÓÔ'; -END AFTER NULL root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END AFTER NULL NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci use mysqltest1| @@ -2042,7 +2042,7 @@ SET @a1 = 'ÔÅËÓÔ'; SET @a1 = 'ÔÅËÓÔ'; SET @a2 = 'ÔÅËÓÔ'; -END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END ROW BEFORE NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg2'| TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2057,7 +2057,7 @@ SET @b1 = 'ÔÅËÓÔ'; SET @b1 = 'ÔÅËÓÔ'; SET @b2 = 'ÔÅËÓÔ'; -END ROW AFTER NULL NULL OLD NEW CREATED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END ROW AFTER NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg3'| TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2072,7 +2072,7 @@ SET @a1 = 'ÔÅËÓÔ'; SET @a1 = 'ÔÅËÓÔ'; SET @a2 = 'ÔÅËÓÔ'; -END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END ROW BEFORE NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg4'| TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2087,7 +2087,7 @@ SET @b1 = 'ÔÅËÓÔ'; SET @b1 = 'ÔÅËÓÔ'; SET @b2 = 'ÔÅËÓÔ'; -END ROW AFTER NULL NULL OLD NEW CREATED root@localhost koi8r koi8r_general_ci utf8_unicode_ci +END ROW AFTER NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost koi8r koi8r_general_ci utf8_unicode_ci SET @a1 = '1'| @@ -2226,7 +2226,7 @@ SHOW CREATE EVENT ev1| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev1 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev1 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10); SELECT COLLATION(ÐÅÒÅÍ1) AS c1, @@ -2239,7 +2239,7 @@ SHOW CREATE EVENT ev2| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev2 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev2 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(ÐÅÒÅÍ1) AS c1, @@ -2252,7 +2252,7 @@ SHOW CREATE EVENT mysqltest2.ev3| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev3 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(ÐÅÒÅÍ1) AS c1, @@ -2265,7 +2265,7 @@ SHOW CREATE EVENT mysqltest2.ev3| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev3 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(ÐÅÒÅÍ1) AS c1, @@ -2303,7 +2303,7 @@ COLLATION( 'ÔÅËÓÔ') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev2'| EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2316,7 +2316,7 @@ COLLATION( 'ÔÅËÓÔ') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev3'| EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2329,7 +2329,7 @@ COLLATION( 'ÔÅËÓÔ') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev4'| EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2342,7 +2342,7 @@ COLLATION( 'ÔÅËÓÔ') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci ALTER DATABASE mysqltest1 COLLATE cp866_general_ci| @@ -2361,7 +2361,7 @@ SHOW CREATE EVENT ev1| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev1 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev1 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10); SELECT COLLATION(ÐÅÒÅÍ1) AS c1, @@ -2374,7 +2374,7 @@ SHOW CREATE EVENT ev2| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev2 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev2 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(ÐÅÒÅÍ1) AS c1, @@ -2387,7 +2387,7 @@ SHOW CREATE EVENT mysqltest2.ev3| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev3 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(ÐÅÒÅÍ1) AS c1, @@ -2400,7 +2400,7 @@ SHOW CREATE EVENT mysqltest2.ev3| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev3 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(ÐÅÒÅÍ1) AS c1, @@ -2438,7 +2438,7 @@ COLLATION( 'ÔÅËÓÔ') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev2'| EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2451,7 +2451,7 @@ COLLATION( 'ÔÅËÓÔ') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev3'| EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2464,7 +2464,7 @@ COLLATION( 'ÔÅËÓÔ') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev4'| EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2477,7 +2477,7 @@ COLLATION( 'ÔÅËÓÔ') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci ---> Dump of mysqltest1 @@ -2494,7 +2494,7 @@ /*!50003 SET character_set_results = koi8r */ ;; /*!50003 SET collation_connection = koi8r_general_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = '' */ ;; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; /*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN @@ -2522,7 +2522,7 @@ /*!50003 SET character_set_results = koi8r */ ;; /*!50003 SET collation_connection = koi8r_general_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = '' */ ;; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; /*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN @@ -2561,7 +2561,7 @@ /*!50003 SET character_set_results = koi8r */ ;; /*!50003 SET collation_connection = koi8r_general_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = '' */ ;; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; /*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN @@ -2589,7 +2589,7 @@ /*!50003 SET character_set_results = koi8r */ ;; /*!50003 SET collation_connection = koi8r_general_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = '' */ ;; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; /*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev4` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN @@ -2634,7 +2634,7 @@ SHOW CREATE EVENT ev1| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev1 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev1 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10); SELECT COLLATION(ÐÅÒÅÍ1) AS c1, @@ -2647,7 +2647,7 @@ SHOW CREATE EVENT ev2| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev2 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev2 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(ÐÅÒÅÍ1) AS c1, @@ -2660,7 +2660,7 @@ SHOW CREATE EVENT mysqltest2.ev3| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev3 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(ÐÅÒÅÍ1) AS c1, @@ -2673,7 +2673,7 @@ SHOW CREATE EVENT mysqltest2.ev3| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev3 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE ÐÅÒÅÍ1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(ÐÅÒÅÍ1) AS c1, @@ -2711,7 +2711,7 @@ COLLATION( 'ÔÅËÓÔ') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev2'| EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2724,7 +2724,7 @@ COLLATION( 'ÔÅËÓÔ') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev3'| EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2737,7 +2737,7 @@ COLLATION( 'ÔÅËÓÔ') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev4'| EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2750,7 +2750,7 @@ COLLATION( 'ÔÅËÓÔ') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 koi8r koi8r_general_ci utf8_unicode_ci ------------------------------------------------------------------- DDL statements within stored routine. diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/ddl_i18n_utf8.result percona-xtrabackup-2.3.7/mysql-test/r/ddl_i18n_utf8.result --- percona-xtrabackup-2.2.3/mysql-test/r/ddl_i18n_utf8.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/ddl_i18n_utf8.result 2017-02-27 07:47:02.000000000 +0000 @@ -260,7 +260,7 @@ SHOW CREATE PROCEDURE p1| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p1 CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`( +p1 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`( INOUT парам1 CHAR(10), OUT парам2 CHAR(10)) BEGIN @@ -281,7 +281,7 @@ SHOW CREATE PROCEDURE p2| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p2 CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`( +p2 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`( INOUT парам1 CHAR(10) CHARACTER SET utf8, OUT парам2 CHAR(10) CHARACTER SET utf8) BEGIN @@ -302,7 +302,7 @@ SHOW CREATE PROCEDURE mysqltest2.p3| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p3 CREATE DEFINER=`root`@`localhost` PROCEDURE `p3`( +p3 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p3`( INOUT парам1 CHAR(10), OUT парам2 CHAR(10)) BEGIN @@ -323,7 +323,7 @@ SHOW CREATE PROCEDURE mysqltest2.p4| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p4 CREATE DEFINER=`root`@`localhost` PROCEDURE `p4`( +p4 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p4`( INOUT парам1 CHAR(10) CHARACTER SET utf8, OUT парам2 CHAR(10) CHARACTER SET utf8) BEGIN @@ -376,7 +376,7 @@ @@character_set_client AS c8; SET парам1 = 'a'; SET парам2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'| SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -394,7 +394,7 @@ @@character_set_client AS c8; SET парам1 = 'a'; SET парам2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'| SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -412,7 +412,7 @@ @@character_set_client AS c8; SET парам1 = 'a'; SET парам2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'| SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -430,7 +430,7 @@ @@character_set_client AS c8; SET парам1 = 'a'; SET парам2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SET @a = '1'| @@ -506,7 +506,7 @@ SHOW CREATE PROCEDURE p1| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p1 CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`( +p1 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`( INOUT парам1 CHAR(10), OUT парам2 CHAR(10)) BEGIN @@ -527,7 +527,7 @@ SHOW CREATE PROCEDURE p2| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p2 CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`( +p2 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`( INOUT парам1 CHAR(10) CHARACTER SET utf8, OUT парам2 CHAR(10) CHARACTER SET utf8) BEGIN @@ -548,7 +548,7 @@ SHOW CREATE PROCEDURE mysqltest2.p3| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p3 CREATE DEFINER=`root`@`localhost` PROCEDURE `p3`( +p3 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p3`( INOUT парам1 CHAR(10), OUT парам2 CHAR(10)) BEGIN @@ -569,7 +569,7 @@ SHOW CREATE PROCEDURE mysqltest2.p4| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p4 CREATE DEFINER=`root`@`localhost` PROCEDURE `p4`( +p4 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p4`( INOUT парам1 CHAR(10) CHARACTER SET utf8, OUT парам2 CHAR(10) CHARACTER SET utf8) BEGIN @@ -622,7 +622,7 @@ @@character_set_client AS c8; SET парам1 = 'a'; SET парам2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'| SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -640,7 +640,7 @@ @@character_set_client AS c8; SET парам1 = 'a'; SET парам2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'| SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -658,7 +658,7 @@ @@character_set_client AS c8; SET парам1 = 'a'; SET парам2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'| SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -676,7 +676,7 @@ @@character_set_client AS c8; SET парам1 = 'a'; SET парам2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SET @a = '1'| @@ -732,7 +732,7 @@ /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`( INOUT парам1 CHAR(10), @@ -766,7 +766,7 @@ /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`( INOUT парам1 CHAR(10) CHARACTER SET utf8, @@ -808,7 +808,7 @@ /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `p3`( INOUT парам1 CHAR(10), @@ -842,7 +842,7 @@ /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `p4`( INOUT парам1 CHAR(10) CHARACTER SET utf8, @@ -908,7 +908,7 @@ SHOW CREATE PROCEDURE p1| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p1 CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`( +p1 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`( INOUT парам1 CHAR(10), OUT парам2 CHAR(10)) BEGIN @@ -929,7 +929,7 @@ SHOW CREATE PROCEDURE p2| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p2 CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`( +p2 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`( INOUT парам1 CHAR(10) CHARACTER SET utf8, OUT парам2 CHAR(10) CHARACTER SET utf8) BEGIN @@ -950,7 +950,7 @@ SHOW CREATE PROCEDURE mysqltest2.p3| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p3 CREATE DEFINER=`root`@`localhost` PROCEDURE `p3`( +p3 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p3`( INOUT парам1 CHAR(10), OUT парам2 CHAR(10)) BEGIN @@ -971,7 +971,7 @@ SHOW CREATE PROCEDURE mysqltest2.p4| Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -p4 CREATE DEFINER=`root`@`localhost` PROCEDURE `p4`( +p4 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p4`( INOUT парам1 CHAR(10) CHARACTER SET utf8, OUT парам2 CHAR(10) CHARACTER SET utf8) BEGIN @@ -1024,7 +1024,7 @@ @@character_set_client AS c8; SET парам1 = 'a'; SET парам2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p2'| SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -1042,7 +1042,7 @@ @@character_set_client AS c8; SET парам1 = 'a'; SET парам2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p3'| SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -1060,7 +1060,7 @@ @@character_set_client AS c8; SET парам1 = 'a'; SET парам2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p4'| SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -1078,7 +1078,7 @@ @@character_set_client AS c8; SET парам1 = 'a'; SET парам2 = 'b'; -END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END NULL NULL SQL NO CONTAINS SQL NULL DEFINER CREATED ALTERED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SET @a = '1'| @@ -1200,7 +1200,7 @@ SHOW CREATE TRIGGER trg1| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg1 CREATE DEFINER=`root`@`localhost` TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW +trg1 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN DECLARE перем1 CHAR(10); INSERT INTO log VALUES(COLLATION(перем1)); @@ -1216,7 +1216,7 @@ SHOW CREATE TRIGGER trg2| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg2 CREATE DEFINER=`root`@`localhost` TRIGGER trg2 AFTER INSERT ON t1 FOR EACH ROW +trg2 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER trg2 AFTER INSERT ON t1 FOR EACH ROW BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(перем1)); @@ -1232,7 +1232,7 @@ SHOW CREATE TRIGGER mysqltest2.trg3| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg3 CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg3 BEFORE INSERT ON mysqltest2.t1 FOR EACH ROW +trg3 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg3 BEFORE INSERT ON mysqltest2.t1 FOR EACH ROW BEGIN DECLARE перем1 CHAR(10); INSERT INTO log VALUES(COLLATION(перем1)); @@ -1248,7 +1248,7 @@ SHOW CREATE TRIGGER mysqltest2.trg4| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg4 CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg4 AFTER INSERT ON mysqltest2.t1 FOR EACH ROW +trg4 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg4 AFTER INSERT ON mysqltest2.t1 FOR EACH ROW BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(перем1)); @@ -1276,7 +1276,7 @@ SET @a1 = 'текÑÑ‚'; SET @a2 = 'текÑÑ‚'; SET @a3 = 'текÑÑ‚'; -END BEFORE NULL root@localhost utf8 utf8_general_ci utf8_unicode_ci +END BEFORE NULL NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci trg2 INSERT t1 BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(перем1)); @@ -1288,7 +1288,7 @@ SET @b1 = 'текÑÑ‚'; SET @b2 = 'текÑÑ‚'; SET @b3 = 'текÑÑ‚'; -END AFTER NULL root@localhost utf8 utf8_general_ci utf8_unicode_ci +END AFTER NULL NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci use mysqltest2| @@ -1305,7 +1305,7 @@ SET @a1 = 'текÑÑ‚'; SET @a2 = 'текÑÑ‚'; SET @a3 = 'текÑÑ‚'; -END BEFORE NULL root@localhost utf8 utf8_general_ci utf8_unicode_ci +END BEFORE NULL NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci trg4 INSERT t1 BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(перем1)); @@ -1317,7 +1317,7 @@ SET @b1 = 'текÑÑ‚'; SET @b2 = 'текÑÑ‚'; SET @b3 = 'текÑÑ‚'; -END AFTER NULL root@localhost utf8 utf8_general_ci utf8_unicode_ci +END AFTER NULL NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci use mysqltest1| @@ -1334,7 +1334,7 @@ SET @a1 = 'текÑÑ‚'; SET @a2 = 'текÑÑ‚'; SET @a3 = 'текÑÑ‚'; -END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END ROW BEFORE NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg2'| TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -1349,7 +1349,7 @@ SET @b1 = 'текÑÑ‚'; SET @b2 = 'текÑÑ‚'; SET @b3 = 'текÑÑ‚'; -END ROW AFTER NULL NULL OLD NEW CREATED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END ROW AFTER NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg3'| TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -1364,7 +1364,7 @@ SET @a1 = 'текÑÑ‚'; SET @a2 = 'текÑÑ‚'; SET @a3 = 'текÑÑ‚'; -END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END ROW BEFORE NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg4'| TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -1379,7 +1379,7 @@ SET @b1 = 'текÑÑ‚'; SET @b2 = 'текÑÑ‚'; SET @b3 = 'текÑÑ‚'; -END ROW AFTER NULL NULL OLD NEW CREATED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END ROW AFTER NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SET @a1 = '1'| @@ -1473,7 +1473,7 @@ SHOW CREATE TRIGGER trg1| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg1 CREATE DEFINER=`root`@`localhost` TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW +trg1 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN DECLARE перем1 CHAR(10); INSERT INTO log VALUES(COLLATION(перем1)); @@ -1489,7 +1489,7 @@ SHOW CREATE TRIGGER trg2| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg2 CREATE DEFINER=`root`@`localhost` TRIGGER trg2 AFTER INSERT ON t1 FOR EACH ROW +trg2 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER trg2 AFTER INSERT ON t1 FOR EACH ROW BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(перем1)); @@ -1505,7 +1505,7 @@ SHOW CREATE TRIGGER mysqltest2.trg3| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg3 CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg3 BEFORE INSERT ON mysqltest2.t1 FOR EACH ROW +trg3 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg3 BEFORE INSERT ON mysqltest2.t1 FOR EACH ROW BEGIN DECLARE перем1 CHAR(10); INSERT INTO log VALUES(COLLATION(перем1)); @@ -1521,7 +1521,7 @@ SHOW CREATE TRIGGER mysqltest2.trg4| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg4 CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg4 AFTER INSERT ON mysqltest2.t1 FOR EACH ROW +trg4 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg4 AFTER INSERT ON mysqltest2.t1 FOR EACH ROW BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(перем1)); @@ -1549,7 +1549,7 @@ SET @a1 = 'текÑÑ‚'; SET @a2 = 'текÑÑ‚'; SET @a3 = 'текÑÑ‚'; -END BEFORE NULL root@localhost utf8 utf8_general_ci utf8_unicode_ci +END BEFORE NULL NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci trg2 INSERT t1 BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(перем1)); @@ -1561,7 +1561,7 @@ SET @b1 = 'текÑÑ‚'; SET @b2 = 'текÑÑ‚'; SET @b3 = 'текÑÑ‚'; -END AFTER NULL root@localhost utf8 utf8_general_ci utf8_unicode_ci +END AFTER NULL NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci use mysqltest2| @@ -1578,7 +1578,7 @@ SET @a1 = 'текÑÑ‚'; SET @a2 = 'текÑÑ‚'; SET @a3 = 'текÑÑ‚'; -END BEFORE NULL root@localhost utf8 utf8_general_ci utf8_unicode_ci +END BEFORE NULL NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci trg4 INSERT t1 BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(перем1)); @@ -1590,7 +1590,7 @@ SET @b1 = 'текÑÑ‚'; SET @b2 = 'текÑÑ‚'; SET @b3 = 'текÑÑ‚'; -END AFTER NULL root@localhost utf8 utf8_general_ci utf8_unicode_ci +END AFTER NULL NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci use mysqltest1| @@ -1607,7 +1607,7 @@ SET @a1 = 'текÑÑ‚'; SET @a2 = 'текÑÑ‚'; SET @a3 = 'текÑÑ‚'; -END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END ROW BEFORE NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg2'| TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -1622,7 +1622,7 @@ SET @b1 = 'текÑÑ‚'; SET @b2 = 'текÑÑ‚'; SET @b3 = 'текÑÑ‚'; -END ROW AFTER NULL NULL OLD NEW CREATED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END ROW AFTER NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg3'| TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -1637,7 +1637,7 @@ SET @a1 = 'текÑÑ‚'; SET @a2 = 'текÑÑ‚'; SET @a3 = 'текÑÑ‚'; -END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END ROW BEFORE NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg4'| TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -1652,7 +1652,7 @@ SET @b1 = 'текÑÑ‚'; SET @b2 = 'текÑÑ‚'; SET @b3 = 'текÑÑ‚'; -END ROW AFTER NULL NULL OLD NEW CREATED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END ROW AFTER NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SET @a1 = '1'| @@ -1750,7 +1750,7 @@ /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN @@ -1779,7 +1779,7 @@ /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER trg2 AFTER INSERT ON t1 FOR EACH ROW BEGIN @@ -1829,7 +1829,7 @@ /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER mysqltest2.trg3 BEFORE INSERT ON mysqltest2.t1 FOR EACH ROW BEGIN @@ -1858,7 +1858,7 @@ /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER mysqltest2.trg4 AFTER INSERT ON mysqltest2.t1 FOR EACH ROW BEGIN @@ -1908,7 +1908,7 @@ SHOW CREATE TRIGGER trg1| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg1 CREATE DEFINER=`root`@`localhost` TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW +trg1 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN DECLARE перем1 CHAR(10); INSERT INTO log VALUES(COLLATION(перем1)); @@ -1924,7 +1924,7 @@ SHOW CREATE TRIGGER trg2| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg2 CREATE DEFINER=`root`@`localhost` TRIGGER trg2 AFTER INSERT ON t1 FOR EACH ROW +trg2 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER trg2 AFTER INSERT ON t1 FOR EACH ROW BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(перем1)); @@ -1940,7 +1940,7 @@ SHOW CREATE TRIGGER mysqltest2.trg3| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg3 CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg3 BEFORE INSERT ON mysqltest2.t1 FOR EACH ROW +trg3 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg3 BEFORE INSERT ON mysqltest2.t1 FOR EACH ROW BEGIN DECLARE перем1 CHAR(10); INSERT INTO log VALUES(COLLATION(перем1)); @@ -1956,7 +1956,7 @@ SHOW CREATE TRIGGER mysqltest2.trg4| Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -trg4 CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg4 AFTER INSERT ON mysqltest2.t1 FOR EACH ROW +trg4 NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` TRIGGER mysqltest2.trg4 AFTER INSERT ON mysqltest2.t1 FOR EACH ROW BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(перем1)); @@ -1984,7 +1984,7 @@ SET @a1 = 'текÑÑ‚'; SET @a2 = 'текÑÑ‚'; SET @a3 = 'текÑÑ‚'; -END BEFORE NULL root@localhost utf8 utf8_general_ci utf8_unicode_ci +END BEFORE NULL NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci trg2 INSERT t1 BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(перем1)); @@ -1996,7 +1996,7 @@ SET @b1 = 'текÑÑ‚'; SET @b2 = 'текÑÑ‚'; SET @b3 = 'текÑÑ‚'; -END AFTER NULL root@localhost utf8 utf8_general_ci utf8_unicode_ci +END AFTER NULL NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci use mysqltest2| @@ -2013,7 +2013,7 @@ SET @a1 = 'текÑÑ‚'; SET @a2 = 'текÑÑ‚'; SET @a3 = 'текÑÑ‚'; -END BEFORE NULL root@localhost utf8 utf8_general_ci utf8_unicode_ci +END BEFORE NULL NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci trg4 INSERT t1 BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; INSERT INTO log VALUES(COLLATION(перем1)); @@ -2025,7 +2025,7 @@ SET @b1 = 'текÑÑ‚'; SET @b2 = 'текÑÑ‚'; SET @b3 = 'текÑÑ‚'; -END AFTER NULL root@localhost utf8 utf8_general_ci utf8_unicode_ci +END AFTER NULL NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci use mysqltest1| @@ -2042,7 +2042,7 @@ SET @a1 = 'текÑÑ‚'; SET @a2 = 'текÑÑ‚'; SET @a3 = 'текÑÑ‚'; -END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END ROW BEFORE NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg2'| TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2057,7 +2057,7 @@ SET @b1 = 'текÑÑ‚'; SET @b2 = 'текÑÑ‚'; SET @b3 = 'текÑÑ‚'; -END ROW AFTER NULL NULL OLD NEW CREATED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END ROW AFTER NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg3'| TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2072,7 +2072,7 @@ SET @a1 = 'текÑÑ‚'; SET @a2 = 'текÑÑ‚'; SET @a3 = 'текÑÑ‚'; -END ROW BEFORE NULL NULL OLD NEW CREATED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END ROW BEFORE NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 'trg4'| TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2087,7 +2087,7 @@ SET @b1 = 'текÑÑ‚'; SET @b2 = 'текÑÑ‚'; SET @b3 = 'текÑÑ‚'; -END ROW AFTER NULL NULL OLD NEW CREATED root@localhost utf8 utf8_general_ci utf8_unicode_ci +END ROW AFTER NULL NULL OLD NEW CREATED NO_ENGINE_SUBSTITUTION root@localhost utf8 utf8_general_ci utf8_unicode_ci SET @a1 = '1'| @@ -2226,7 +2226,7 @@ SHOW CREATE EVENT ev1| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev1 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev1 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE перем1 CHAR(10); SELECT COLLATION(перем1) AS c1, @@ -2239,7 +2239,7 @@ SHOW CREATE EVENT ev2| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev2 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev2 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(перем1) AS c1, @@ -2252,7 +2252,7 @@ SHOW CREATE EVENT mysqltest2.ev3| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev3 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(перем1) AS c1, @@ -2265,7 +2265,7 @@ SHOW CREATE EVENT mysqltest2.ev3| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev3 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(перем1) AS c1, @@ -2303,7 +2303,7 @@ COLLATION( 'текÑÑ‚') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev2'| EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2316,7 +2316,7 @@ COLLATION( 'текÑÑ‚') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev3'| EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2329,7 +2329,7 @@ COLLATION( 'текÑÑ‚') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev4'| EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2342,7 +2342,7 @@ COLLATION( 'текÑÑ‚') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci ALTER DATABASE mysqltest1 COLLATE cp866_general_ci| @@ -2361,7 +2361,7 @@ SHOW CREATE EVENT ev1| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev1 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev1 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE перем1 CHAR(10); SELECT COLLATION(перем1) AS c1, @@ -2374,7 +2374,7 @@ SHOW CREATE EVENT ev2| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev2 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev2 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(перем1) AS c1, @@ -2387,7 +2387,7 @@ SHOW CREATE EVENT mysqltest2.ev3| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev3 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(перем1) AS c1, @@ -2400,7 +2400,7 @@ SHOW CREATE EVENT mysqltest2.ev3| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev3 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(перем1) AS c1, @@ -2438,7 +2438,7 @@ COLLATION( 'текÑÑ‚') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev2'| EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2451,7 +2451,7 @@ COLLATION( 'текÑÑ‚') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev3'| EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2464,7 +2464,7 @@ COLLATION( 'текÑÑ‚') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev4'| EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2477,7 +2477,7 @@ COLLATION( 'текÑÑ‚') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci ---> Dump of mysqltest1 @@ -2494,7 +2494,7 @@ /*!50003 SET character_set_results = utf8 */ ;; /*!50003 SET collation_connection = utf8_general_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = '' */ ;; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; /*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN @@ -2522,7 +2522,7 @@ /*!50003 SET character_set_results = utf8 */ ;; /*!50003 SET collation_connection = utf8_general_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = '' */ ;; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; /*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN @@ -2561,7 +2561,7 @@ /*!50003 SET character_set_results = utf8 */ ;; /*!50003 SET collation_connection = utf8_general_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = '' */ ;; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; /*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN @@ -2589,7 +2589,7 @@ /*!50003 SET character_set_results = utf8 */ ;; /*!50003 SET collation_connection = utf8_general_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = '' */ ;; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; /*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ev4` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN @@ -2634,7 +2634,7 @@ SHOW CREATE EVENT ev1| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev1 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev1 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE перем1 CHAR(10); SELECT COLLATION(перем1) AS c1, @@ -2647,7 +2647,7 @@ SHOW CREATE EVENT ev2| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev2 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev2 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev2` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(перем1) AS c1, @@ -2660,7 +2660,7 @@ SHOW CREATE EVENT mysqltest2.ev3| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev3 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(перем1) AS c1, @@ -2673,7 +2673,7 @@ SHOW CREATE EVENT mysqltest2.ev3| Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation -ev3 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +ev3 NO_ENGINE_SUBSTITUTION SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `ev3` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE перем1 CHAR(10) CHARACTER SET utf8; SELECT COLLATION(перем1) AS c1, @@ -2711,7 +2711,7 @@ COLLATION( 'текÑÑ‚') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev2'| EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2724,7 +2724,7 @@ COLLATION( 'текÑÑ‚') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev3'| EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2737,7 +2737,7 @@ COLLATION( 'текÑÑ‚') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE event_name = 'ev4'| EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATED LAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION @@ -2750,7 +2750,7 @@ COLLATION( 'текÑÑ‚') AS c4, @@collation_connection AS c5, @@character_set_client AS c6; -END ONE TIME 2030-01-01 00:00:00 NULL NULL NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci +END ONE TIME 2030-01-01 00:00:00 NULL NULL NO_ENGINE_SUBSTITUTION NULL NULL ENABLED NOT PRESERVE CREATED LAST_ALTERED NULL 1 utf8 utf8_general_ci utf8_unicode_ci ------------------------------------------------------------------- DDL statements within stored routine. diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/debug_sync.result percona-xtrabackup-2.3.7/mysql-test/r/debug_sync.result --- percona-xtrabackup-2.2.3/mysql-test/r/debug_sync.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/debug_sync.result 2017-02-27 07:47:02.000000000 +0000 @@ -2,7 +2,7 @@ DROP TABLE IF EXISTS t1; SHOW VARIABLES LIKE 'DEBUG_SYNC'; Variable_name Value -debug_sync ON - current signal: '' +debug_sync ON - signals: '' SET DEBUG_SYNC='p0 SIGNAL s1 WAIT_FOR s2 TIMEOUT 6 EXECUTE 2 HIT_LIMIT 3'; SET DEBUG_SYNC='p0 SIGNAL s1 WAIT_FOR s2 TIMEOUT 6 EXECUTE 2'; SET DEBUG_SYNC='p0 SIGNAL s1 WAIT_FOR s2 TIMEOUT 6 HIT_LIMIT 3'; @@ -150,34 +150,34 @@ SET DEBUG_SYNC= @myvar; SHOW VARIABLES LIKE 'DEBUG_SYNC'; Variable_name Value -debug_sync ON - current signal: 'from_myvar' +debug_sync ON - signals: 'from_myvar' SET DEBUG_SYNC= LEFT('now SIGNAL from_function_cut_here', 24); SHOW VARIABLES LIKE 'DEBUG_SYNC'; Variable_name Value -debug_sync ON - current signal: 'from_function' +debug_sync ON - signals: 'from_function,from_myvar' SET DEBUG_SYNC= 'now SIGNAL something'; SHOW VARIABLES LIKE 'DEBUG_SYNC'; Variable_name Value -debug_sync ON - current signal: 'something' +debug_sync ON - signals: 'from_function,from_myvar,something' SET DEBUG_SYNC= 'now WAIT_FOR nothing TIMEOUT 0'; Warnings: Warning #### debug sync point wait timed out SET DEBUG_SYNC= 'now SIGNAL nothing'; SHOW VARIABLES LIKE 'DEBUG_SYNC'; Variable_name Value -debug_sync ON - current signal: 'nothing' +debug_sync ON - signals: 'from_function,from_myvar,nothing,something' SET DEBUG_SYNC= 'now WAIT_FOR nothing TIMEOUT 0'; SET DEBUG_SYNC= 'now SIGNAL something EXECUTE 0'; SHOW VARIABLES LIKE 'DEBUG_SYNC'; Variable_name Value -debug_sync ON - current signal: 'nothing' +debug_sync ON - signals: 'from_function,from_myvar,something' SET DEBUG_SYNC= 'now WAIT_FOR anotherthing TIMEOUT 0 EXECUTE 0'; SET DEBUG_SYNC= 'now HIT_LIMIT 1'; ERROR HY000: debug sync point hit limit reached SET DEBUG_SYNC= 'RESET'; SHOW VARIABLES LIKE 'DEBUG_SYNC'; Variable_name Value -debug_sync ON - current signal: '' +debug_sync ON - signals: '' SET DEBUG_SYNC= 'p1abcd SIGNAL s1 EXECUTE 2'; SET DEBUG_SYNC= 'p2abc SIGNAL s2 EXECUTE 2'; SET DEBUG_SYNC= 'p9abcdef SIGNAL s9 EXECUTE 2'; @@ -190,23 +190,23 @@ SET DEBUG_SYNC= 'p4a TEST'; SHOW VARIABLES LIKE 'DEBUG_SYNC'; Variable_name Value -debug_sync ON - current signal: 's4' +debug_sync ON - signals: 's4' SET DEBUG_SYNC= 'p1abcd TEST'; SHOW VARIABLES LIKE 'DEBUG_SYNC'; Variable_name Value -debug_sync ON - current signal: 's1' +debug_sync ON - signals: 's1,s4' SET DEBUG_SYNC= 'p7 TEST'; SHOW VARIABLES LIKE 'DEBUG_SYNC'; Variable_name Value -debug_sync ON - current signal: 's7' +debug_sync ON - signals: 's1,s4,s7' SET DEBUG_SYNC= 'p9abcdef TEST'; SHOW VARIABLES LIKE 'DEBUG_SYNC'; Variable_name Value -debug_sync ON - current signal: 's9' +debug_sync ON - signals: 's1,s4,s7,s9' SET DEBUG_SYNC= 'p3abcdef TEST'; SHOW VARIABLES LIKE 'DEBUG_SYNC'; Variable_name Value -debug_sync ON - current signal: 's3' +debug_sync ON - signals: 's1,s3,s4,s7,s9' SET DEBUG_SYNC= 'p1abcd CLEAR'; SET DEBUG_SYNC= 'p2abc CLEAR'; SET DEBUG_SYNC= 'p5abcde CLEAR'; @@ -219,19 +219,19 @@ SET DEBUG_SYNC= 'p1abcd TEST'; SHOW VARIABLES LIKE 'DEBUG_SYNC'; Variable_name Value -debug_sync ON - current signal: 's3' +debug_sync ON - signals: 's1,s3,s4,s7,s9' SET DEBUG_SYNC= 'p7 TEST'; SHOW VARIABLES LIKE 'DEBUG_SYNC'; Variable_name Value -debug_sync ON - current signal: 's3' +debug_sync ON - signals: 's1,s3,s4,s7,s9' SET DEBUG_SYNC= 'p9abcdef TEST'; SHOW VARIABLES LIKE 'DEBUG_SYNC'; Variable_name Value -debug_sync ON - current signal: 's3' +debug_sync ON - signals: 's1,s3,s4,s7,s9' SET DEBUG_SYNC= 'RESET'; SHOW VARIABLES LIKE 'DEBUG_SYNC'; Variable_name Value -debug_sync ON - current signal: '' +debug_sync ON - signals: '' CREATE USER mysqltest_1@localhost; GRANT SUPER ON *.* TO mysqltest_1@localhost; connection con1, mysqltest_1 diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/derived.result percona-xtrabackup-2.3.7/mysql-test/r/derived.result --- percona-xtrabackup-2.2.3/mysql-test/r/derived.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/derived.result 2017-02-27 07:47:02.000000000 +0000 @@ -2010,3 +2010,197 @@ SET @@SESSION.optimizer_switch= @save_optimizer_switch; DROP TABLE t2, t1; # End of test for Bug #17814492 +# +# Bug #18607971 : 5.5 TO 5.6 REGRESSION WITH A SUBQUERY IN THE FROM +# CLAUSE. +# +CREATE TABLE t(id INT PRIMARY KEY, +c1 INT, c2 INT, key(c2)) engine=InnoDB; +INSERT INTO t(id, c1, c2) VALUES(1, 2, 3), (2, 3, 4), (3, 3, 4), (4, 3, 4); +ANALYZE TABLE t; +Table Op Msg_type Msg_text +test.t analyze status OK +EXPLAIN SELECT * FROM +(SELECT t1.c1 +FROM t t1 INNER JOIN t t2 ON t1.c1= 3 +GROUP BY t1.c1) a, t b +WHERE b.id BETWEEN 1 AND 10; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY system NULL NULL NULL NULL 1 NULL +1 PRIMARY b range PRIMARY PRIMARY 4 NULL 4 Using where +2 DERIVED t1 ALL NULL NULL NULL NULL 4 Using where +2 DERIVED t2 index NULL c2 5 NULL 4 Using index; Using join buffer (Block Nested Loop) +EXPLAIN SELECT * FROM +(SELECT t1.id +FROM t t1 INNER JOIN t t2 ON t1.id=1 AND t1.c1=t2.id +GROUP BY t1.id, t2.c2) a, t b +WHERE b.id BETWEEN 1 AND 10; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY system NULL NULL NULL NULL 1 NULL +1 PRIMARY b range PRIMARY PRIMARY 4 NULL 4 Using where +2 DERIVED t1 const PRIMARY PRIMARY 4 const 1 NULL +2 DERIVED t2 const PRIMARY PRIMARY 4 const 1 NULL +EXPLAIN SELECT * FROM +(SELECT t1.c1 +FROM t t1 INNER JOIN t t2 ON t1.c1= 3 AND t2.c2= 3 +GROUP BY t1.c1) a, t b +WHERE b.id BETWEEN 1 AND 10; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY system NULL NULL NULL NULL 1 NULL +1 PRIMARY b range PRIMARY PRIMARY 4 NULL 4 Using where +2 DERIVED t2 ref c2 c2 5 const 1 Using index +2 DERIVED t1 ALL NULL NULL NULL NULL 4 Using where; Using join buffer (Block Nested Loop) +EXPLAIN SELECT * FROM +(SELECT t1.c1 +FROM t t1 INNER JOIN t t2 ON t1.c1= 3 AND t2.c2= 3 +GROUP BY t1.c1, t2.c2) a, t b +WHERE b.id BETWEEN 1 AND 10; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY system NULL NULL NULL NULL 1 NULL +1 PRIMARY b range PRIMARY PRIMARY 4 NULL 4 Using where +2 DERIVED t2 ref c2 c2 5 const 1 Using index +2 DERIVED t1 ALL NULL NULL NULL NULL 4 Using where; Using join buffer (Block Nested Loop) +EXPLAIN SELECT * FROM +(SELECT t1.c1 +FROM t t1 INNER JOIN t t2 ON t1.c1= 3 AND t2.c2= 3 +GROUP BY t1.c1, t1.id) a, t b +WHERE b.id BETWEEN 1 AND 10; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY b range PRIMARY PRIMARY 4 NULL 4 Using where +1 PRIMARY ALL NULL NULL NULL NULL 4 Using join buffer (Block Nested Loop) +2 DERIVED t2 ref c2 c2 5 const 1 Using index; Using temporary; Using filesort +2 DERIVED t1 ALL NULL NULL NULL NULL 4 Using where; Using join buffer (Block Nested Loop) +EXPLAIN SELECT * FROM +(SELECT t1.id +FROM t t1 INNER JOIN t t2 ON t1.id=1 AND t1.c1=t2.c1 +GROUP BY t2.c1, t1.id) a, t b +WHERE b.id BETWEEN 1 AND 10; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY system NULL NULL NULL NULL 1 NULL +1 PRIMARY b range PRIMARY PRIMARY 4 NULL 4 Using where +2 DERIVED t1 const PRIMARY PRIMARY 4 const 1 NULL +2 DERIVED t2 ALL NULL NULL NULL NULL 4 Using where +EXPLAIN SELECT * FROM +(SELECT t1.id +FROM t t1 INNER JOIN t t2 ON t1.id=1 AND t1.c1=t2.id +GROUP BY t2.c1, t1.id) a, t b +WHERE b.id BETWEEN 1 AND 10; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY system NULL NULL NULL NULL 1 NULL +1 PRIMARY b range PRIMARY PRIMARY 4 NULL 4 Using where +2 DERIVED t1 const PRIMARY PRIMARY 4 const 1 NULL +2 DERIVED t2 const PRIMARY PRIMARY 4 const 1 NULL +EXPLAIN SELECT * FROM +(SELECT t1.id +FROM t t1 INNER JOIN t t2 ON t1.id=1 AND t1.c1=t2.id +GROUP BY t2.c2, t1.id) a, t b +WHERE b.id BETWEEN 1 AND 10; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY system NULL NULL NULL NULL 1 NULL +1 PRIMARY b range PRIMARY PRIMARY 4 NULL 4 Using where +2 DERIVED t1 const PRIMARY PRIMARY 4 const 1 NULL +2 DERIVED t2 const PRIMARY PRIMARY 4 const 1 NULL +EXPLAIN SELECT * FROM +(SELECT t1.id +FROM t t1 INNER JOIN t t2 ON t1.id=1 AND t1.c1=t2.id +GROUP BY t1.id, t2.c2) a, t b +WHERE b.id BETWEEN 1 AND 10; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY system NULL NULL NULL NULL 1 NULL +1 PRIMARY b range PRIMARY PRIMARY 4 NULL 4 Using where +2 DERIVED t1 const PRIMARY PRIMARY 4 const 1 NULL +2 DERIVED t2 const PRIMARY PRIMARY 4 const 1 NULL +EXPLAIN SELECT * FROM +(SELECT t1.id +FROM t t1 INNER JOIN t t2 INNER JOIN t t3 ON t1.id=1 AND t1.c1=t2.id AND t2.c1=t3.id +GROUP BY t1.id, t2.c2, t3.c2) a, t b +WHERE b.id BETWEEN 1 AND 10; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY system NULL NULL NULL NULL 1 NULL +1 PRIMARY b range PRIMARY PRIMARY 4 NULL 4 Using where +2 DERIVED t1 const PRIMARY PRIMARY 4 const 1 NULL +2 DERIVED t2 const PRIMARY PRIMARY 4 const 1 NULL +2 DERIVED t3 const PRIMARY PRIMARY 4 const 1 NULL +EXPLAIN SELECT * FROM +(SELECT DISTINCT t1.id +FROM t t1 +WHERE t1.id= 1) a, t b +WHERE b.id BETWEEN 1 AND 10; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY system NULL NULL NULL NULL 1 NULL +1 PRIMARY b range PRIMARY PRIMARY 4 NULL 4 Using where +2 DERIVED t1 const PRIMARY PRIMARY 4 const 1 Using index +EXPLAIN SELECT * FROM +(SELECT t1.id + 1 +FROM t t1 INNER JOIN t t2 ON t1.id= 1 +GROUP BY t1.id + 1) a, t b +WHERE b.id BETWEEN 1 AND 10; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY system NULL NULL NULL NULL 1 NULL +1 PRIMARY b range PRIMARY PRIMARY 4 NULL 4 Using where +2 DERIVED t1 const PRIMARY PRIMARY 4 const 1 Using index +2 DERIVED t2 index NULL c2 5 NULL 4 Using index +EXPLAIN SELECT * FROM +(SELECT t1.c1 +FROM t t1 INNER JOIN t t2 ON t1.c1= 3 +GROUP BY 1.5) a, t b +WHERE b.id BETWEEN 1 AND 10; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY system NULL NULL NULL NULL 1 NULL +1 PRIMARY b range PRIMARY PRIMARY 4 NULL 4 Using where +2 DERIVED t1 ALL NULL NULL NULL NULL 4 Using where +2 DERIVED t2 index NULL c2 5 NULL 4 Using index; Using join buffer (Block Nested Loop) +EXPLAIN SELECT * FROM +(SELECT t1.id +FROM t t1 INNER JOIN t t2 ON mod(t1.id,1000)= 1 +GROUP BY t1.id) a, t b +WHERE b.id BETWEEN 1 AND 10; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY b range PRIMARY PRIMARY 4 NULL 4 Using where +1 PRIMARY ALL NULL NULL NULL NULL 16 Using join buffer (Block Nested Loop) +2 DERIVED t1 index PRIMARY,c2 c2 5 NULL 4 Using where; Using index; Using temporary; Using filesort +2 DERIVED t2 index NULL c2 5 NULL 4 Using index; Using join buffer (Block Nested Loop) +EXPLAIN SELECT * FROM +(SELECT t1.id + 1 +FROM t t1 INNER JOIN t t2 ON t1.id + 1= 2 +GROUP BY t1.id + 1) a, t b +WHERE b.id BETWEEN 1 AND 10; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY system NULL NULL NULL NULL 1 NULL +1 PRIMARY b range PRIMARY PRIMARY 4 NULL 4 Using where +2 DERIVED t1 index PRIMARY,c2 c2 5 NULL 4 Using where; Using index +2 DERIVED t2 index NULL c2 5 NULL 4 Using index; Using join buffer (Block Nested Loop) +CREATE VIEW v1 AS SELECT c1 a FROM t WHERE c1 = 3; +CREATE VIEW v2 AS SELECT c2 b FROM t WHERE c2 > 3; +EXPLAIN SELECT * FROM (SELECT v1.a +FROM v1 LEFT OUTER JOIN v2 ON v1.a = v2.b +GROUP BY v1.a) p, t q +WHERE q.id BETWEEN 1 AND 10; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY system NULL NULL NULL NULL 1 NULL +1 PRIMARY q range PRIMARY PRIMARY 4 NULL 4 Using where +2 DERIVED t ALL NULL NULL NULL NULL 4 Using where +2 DERIVED t ref c2 c2 5 const 1 Using where; Using index +DROP VIEW v1; +CREATE VIEW v1 AS SELECT c1 a FROM t; +EXPLAIN SELECT * FROM (SELECT v1.a +FROM v1 LEFT OUTER JOIN v2 ON v1.a = v2.b AND v1.a = 10 +GROUP BY v1.a) p, t q +WHERE q.id BETWEEN 1 AND 10; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY q range PRIMARY PRIMARY 4 NULL 4 Using where +1 PRIMARY ALL NULL NULL NULL NULL 4 Using join buffer (Block Nested Loop) +2 DERIVED t ALL NULL NULL NULL NULL 4 Using temporary; Using filesort +2 DERIVED t ref c2 c2 5 func 1 Using where; Using index +EXPLAIN SELECT * FROM (SELECT v1.a +FROM v1 LEFT OUTER JOIN v2 ON v1.a = v2.b +WHERE v1.a = 3 +GROUP BY v1.a) p, t q +WHERE q.id BETWEEN 1 AND 10; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY system NULL NULL NULL NULL 1 NULL +1 PRIMARY q range PRIMARY PRIMARY 4 NULL 4 Using where +2 DERIVED t ALL NULL NULL NULL NULL 4 Using where +2 DERIVED t ref c2 c2 5 const 1 Using where; Using index +DROP VIEW v1, v2; +DROP TABLE t; diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/distinct.result percona-xtrabackup-2.3.7/mysql-test/r/distinct.result --- percona-xtrabackup-2.2.3/mysql-test/r/distinct.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/distinct.result 2017-02-27 07:47:02.000000000 +0000 @@ -212,12 +212,12 @@ show status like 'Handler_read%'; Variable_name Value Handler_read_first 1 -Handler_read_key 1 +Handler_read_key 4 Handler_read_last 0 -Handler_read_next 0 +Handler_read_next 208 Handler_read_prev 0 Handler_read_rnd 0 -Handler_read_rnd_next 2 +Handler_read_rnd_next 1 explain SELECT distinct t1.a from t1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 index PRIMARY PRIMARY 4 NULL 4 Using index diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/dynamic_tracing.result percona-xtrabackup-2.3.7/mysql-test/r/dynamic_tracing.result --- percona-xtrabackup-2.2.3/mysql-test/r/dynamic_tracing.result 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/dynamic_tracing.result 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,39 @@ +CREATE PROCEDURE create_table_and_insert_rows() +BEGIN +DECLARE count INT; +SET count = 1; +SELECT SLEEP(10); +CREATE TABLE t1 (f1 INT); +INSERT INTO t1 VALUES (7894); +WHILE count <= 5 DO +INSERT INTO t1 SELECT * FROM t1; +SET count = count + 1; +END WHILE; +SET count = 1; +WHILE count <= 10000 DO +SELECT SQL_NO_CACHE count(*) from t1; +SET count = count + 1; +END WHILE; +END +$ +CALL create_table_and_insert_rows(); +SELECT SLEEP(4); + + Dynamic tracing ...... started. + + query-parse-start : 1 + query-parse-done : 1 + select-start : 1 + select-done : 1 + net-read-start : 1 + net-read-done : 1 + handler_rdlock_start : 1 + handler_rdlock_done : 1 + + Expected probe hits : 8 + Actual probe hits : 8 + + Dynamic tracing ...... completed. + +DROP TABLE t1; +DROP PROCEDURE create_table_and_insert_rows; diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/file_contents.result percona-xtrabackup-2.3.7/mysql-test/r/file_contents.result --- percona-xtrabackup-2.2.3/mysql-test/r/file_contents.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/file_contents.result 2017-02-27 07:47:02.000000000 +0000 @@ -1,6 +1,6 @@ Checking 'INFO_SRC' and 'INFO_BIN' -INFO_SRC: Found MySQL version number / Found BZR revision id +INFO_SRC: Found MySQL version number / Found GIT revision id INFO_BIN: Found 'Compiler ... used' line / Found 'Feature flags' line End of tests diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/func_crypt.result percona-xtrabackup-2.3.7/mysql-test/r/func_crypt.result --- percona-xtrabackup-2.2.3/mysql-test/r/func_crypt.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/func_crypt.result 2017-02-27 07:47:02.000000000 +0000 @@ -20,15 +20,21 @@ select old_password('abc'); old_password('abc') 7cd2b5942be28759 +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead select old_password(''); old_password('') +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead select password('gabbagabbahey'); password('gabbagabbahey') *B0F99D2963660DD7E16B751EC9EE2F17B6A68FA6 select old_password('idkfa'); old_password('idkfa') 5c078dc54ca0fcca +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead select length(password('1')); length(password('1')) 41 @@ -41,6 +47,8 @@ select old_password(NULL); old_password(NULL) NULL +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead select password(NULL); password(NULL) @@ -51,12 +59,16 @@ select old_password(''); old_password('') +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead select password('idkfa'); password('idkfa') *B669C9DAC3AA6F2254B03CDEF8DFDD6B2D1054BA select old_password('idkfa'); old_password('idkfa') 5c078dc54ca0fcca +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead set old_passwords=1; select password('idkfa'); password('idkfa') @@ -64,6 +76,8 @@ select old_password('idkfa'); old_password('idkfa') 5c078dc54ca0fcca +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead set global old_passwords=0; select password('idkfa'); password('idkfa') @@ -71,6 +85,8 @@ select old_password('idkfa'); old_password('idkfa') 5c078dc54ca0fcca +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead set old_passwords=0; select password('idkfa '); password('idkfa ') @@ -84,13 +100,18 @@ select old_password('idkfa'); old_password('idkfa') 5c078dc54ca0fcca +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead select old_password(' i d k f a '); old_password(' i d k f a ') 5c078dc54ca0fcca +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead explain extended select password('idkfa '), old_password('idkfa'); id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead Note 1003 /* select#1 */ select password('idkfa ') AS `password('idkfa ')`,old_password('idkfa') AS `old_password('idkfa')` select encrypt('1234','_.'); encrypt('1234','_.') @@ -104,6 +125,8 @@ SELECT OLD_PASSWORD(c1), PASSWORD(c1) FROM t1; OLD_PASSWORD(c1) PASSWORD(c1) 77023ffe214c04ff *82E58A2C08AAFE72C8EB523069CD8ADB33F78F58 +Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead DROP TABLE t1; End of 5.0 tests # diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/group_min_max_innodb.result percona-xtrabackup-2.3.7/mysql-test/r/group_min_max_innodb.result --- percona-xtrabackup-2.2.3/mysql-test/r/group_min_max_innodb.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/group_min_max_innodb.result 2017-02-27 07:47:02.000000000 +0000 @@ -119,3 +119,205 @@ 1 DROP TABLE t1; End of 5.5 tests +# +# Bug#17909656 - WRONG RESULTS FOR A SIMPLE QUERY WITH GROUP BY +# +CREATE TABLE t0 ( +i1 INTEGER NOT NULL +); +INSERT INTO t0 VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10), +(11),(12),(13),(14),(15),(16),(17),(18),(19),(20), +(21),(22),(23),(24),(25),(26),(27),(28),(29),(30); +CREATE TABLE t1 ( +c1 CHAR(1) NOT NULL, +i1 INTEGER NOT NULL, +i2 INTEGER NOT NULL, +UNIQUE KEY k1 (c1,i2) +) ENGINE=InnoDB; +INSERT INTO t1 SELECT 'A',i1,i1 FROM t0; +INSERT INTO t1 SELECT 'B',i1,i1 FROM t0; +INSERT INTO t1 SELECT 'C',i1,i1 FROM t0; +INSERT INTO t1 SELECT 'D',i1,i1 FROM t0; +INSERT INTO t1 SELECT 'E',i1,i1 FROM t0; +INSERT INTO t1 SELECT 'F',i1,i1 FROM t0; +CREATE TABLE t2 ( +c1 CHAR(1) NOT NULL, +i1 INTEGER NOT NULL, +i2 INTEGER NOT NULL, +UNIQUE KEY k2 (c1,i1,i2) +) ENGINE=InnoDB; +INSERT INTO t2 SELECT 'A',i1,i1 FROM t0; +INSERT INTO t2 SELECT 'B',i1,i1 FROM t0; +INSERT INTO t2 SELECT 'C',i1,i1 FROM t0; +INSERT INTO t2 SELECT 'D',i1,i1 FROM t0; +INSERT INTO t2 SELECT 'E',i1,i1 FROM t0; +INSERT INTO t2 SELECT 'F',i1,i1 FROM t0; +ANALYZE TABLE t1; +ANALYZE TABLE t2; +set optimizer_trace_max_mem_size=1048576; +set @@session.optimizer_trace='enabled=on'; +set end_markers_in_json=on; +EXPLAIN SELECT c1, max(i2) FROM t1 WHERE (c1 = 'C' AND i2 = 17) OR ( c1 = 'F') +GROUP BY c1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 range k1 k1 5 NULL ROWS Using where; Using index +SELECT c1, max(i2) FROM t1 WHERE (c1 = 'C' AND i2 = 17) OR ( c1 = 'F') +GROUP BY c1; +c1 max(i2) +C 17 +F 30 +SELECT TRACE RLIKE 'minmax_keypart_in_disjunctive_query' +AS OK FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE; +OK +1 +EXPLAIN SELECT c1, max(i2) FROM t1 WHERE (c1 = 'C' OR ( c1 = 'F' AND i2 = 17)) +GROUP BY c1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 range k1 k1 5 NULL ROWS Using where; Using index +SELECT c1, max(i2) FROM t1 WHERE (c1 = 'C' OR ( c1 = 'F' AND i2 = 17)) +GROUP BY c1; +c1 max(i2) +C 30 +F 17 +SELECT TRACE RLIKE 'minmax_keypart_in_disjunctive_query' +AS OK FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE; +OK +1 +EXPLAIN SELECT c1, max(i2) FROM t1 WHERE (c1 = 'C' OR c1 = 'F' ) AND ( i2 = 17 ) +GROUP BY c1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 range k1 k1 5 NULL ROWS Using where; Using index for group-by +SELECT c1, max(i2) FROM t1 WHERE (c1 = 'C' OR c1 = 'F' ) AND ( i2 = 17 ) +GROUP BY c1; +c1 max(i2) +C 17 +F 17 +SELECT TRACE RLIKE 'minmax_keypart_in_disjunctive_query' +AS OK FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE; +OK +0 +EXPLAIN SELECT c1, max(i2) FROM t1 +WHERE ((c1 = 'C' AND (i2 = 40 OR i2 = 30)) OR ( c1 = 'F' AND (i2 = 40 ))) +GROUP BY c1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 range k1 k1 5 NULL ROWS Using where; Using index +SELECT c1, max(i2) FROM t1 +WHERE ((c1 = 'C' AND (i2 = 40 OR i2 = 30)) OR ( c1 = 'F' AND (i2 = 40 ))) +GROUP BY c1; +c1 max(i2) +C 30 +SELECT TRACE RLIKE 'minmax_keypart_in_disjunctive_query' +AS OK FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE; +OK +1 +EXPLAIN SELECT c1, i1, max(i2) FROM t2 +WHERE (c1 = 'C' OR ( c1 = 'F' AND i1 < 35)) AND ( i2 = 17 ) +GROUP BY c1,i1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 range k2 k2 5 NULL ROWS Using where; Using index +SELECT c1, i1, max(i2) FROM t2 +WHERE (c1 = 'C' OR ( c1 = 'F' AND i1 < 35)) AND ( i2 = 17 ) +GROUP BY c1,i1; +c1 i1 max(i2) +C 17 17 +F 17 17 +SELECT TRACE RLIKE 'minmax_keypart_in_disjunctive_query' +AS OK FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE; +OK +0 +EXPLAIN SELECT c1, i1, max(i2) FROM t2 +WHERE (((c1 = 'C' AND i1 < 40) OR ( c1 = 'F' AND i1 < 35)) AND ( i2 = 17 )) +GROUP BY c1,i1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 range k2 k2 5 NULL ROWS Using where; Using index +SELECT c1, i1, max(i2) FROM t2 +WHERE (((c1 = 'C' AND i1 < 40) OR ( c1 = 'F' AND i1 < 35)) AND ( i2 = 17 )) +GROUP BY c1,i1; +c1 i1 max(i2) +C 17 17 +F 17 17 +SELECT TRACE RLIKE 'minmax_keypart_in_disjunctive_query' +AS OK FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE; +OK +0 +EXPLAIN SELECT c1, i1, max(i2) FROM t2 +WHERE ((c1 = 'C' AND i1 < 40) OR ( c1 = 'F' AND i1 < 35) OR ( i2 = 17 )) +GROUP BY c1,i1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 index k2 k2 9 NULL ROWS Using where; Using index +SELECT c1, i1, max(i2) FROM t2 +WHERE ((c1 = 'C' AND i1 < 40) OR ( c1 = 'F' AND i1 < 35) OR ( i2 = 17 )) +GROUP BY c1,i1; +c1 i1 max(i2) +A 17 17 +B 17 17 +C 1 1 +C 2 2 +C 3 3 +C 4 4 +C 5 5 +C 6 6 +C 7 7 +C 8 8 +C 9 9 +C 10 10 +C 11 11 +C 12 12 +C 13 13 +C 14 14 +C 15 15 +C 16 16 +C 17 17 +C 18 18 +C 19 19 +C 20 20 +C 21 21 +C 22 22 +C 23 23 +C 24 24 +C 25 25 +C 26 26 +C 27 27 +C 28 28 +C 29 29 +C 30 30 +D 17 17 +E 17 17 +F 1 1 +F 2 2 +F 3 3 +F 4 4 +F 5 5 +F 6 6 +F 7 7 +F 8 8 +F 9 9 +F 10 10 +F 11 11 +F 12 12 +F 13 13 +F 14 14 +F 15 15 +F 16 16 +F 17 17 +F 18 18 +F 19 19 +F 20 20 +F 21 21 +F 22 22 +F 23 23 +F 24 24 +F 25 25 +F 26 26 +F 27 27 +F 28 28 +F 29 29 +F 30 30 +SELECT TRACE RLIKE 'minmax_keypart_in_disjunctive_query' +AS OK FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE; +OK +0 +SET optimizer_trace_max_mem_size=DEFAULT; +SET optimizer_trace=DEFAULT; +SET end_markers_in_json=DEFAULT; +DROP TABLE t0,t1,t2; diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/group_min_max.result percona-xtrabackup-2.3.7/mysql-test/r/group_min_max.result --- percona-xtrabackup-2.2.3/mysql-test/r/group_min_max.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/group_min_max.result 2017-02-27 07:47:02.000000000 +0000 @@ -3004,7 +3004,7 @@ 0 NULL EXPLAIN SELECT SUM(DISTINCT a), MAX(b) FROM t2 GROUP BY a; id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t2 range a a 5 NULL 9 Using index for group-by +1 SIMPLE t2 index a a 15 NULL 16 Using index SELECT SUM(DISTINCT a), MAX(b) FROM t2 GROUP BY a; SUM(DISTINCT a) MAX(b) 1 8 @@ -3032,7 +3032,7 @@ 168 EXPLAIN SELECT (SUM(DISTINCT a) + MAX(b)) FROM t2 GROUP BY a; id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t2 range a a 5 NULL 9 Using index for group-by +1 SIMPLE t2 index a a 15 NULL 16 Using index SELECT (SUM(DISTINCT a) + MAX(b)) FROM t2 GROUP BY a; (SUM(DISTINCT a) + MAX(b)) 9 @@ -3060,3 +3060,81 @@ 1 SIMPLE t1 range PRIMARY PRIMARY 5 NULL 9 Using index for group-by (scanning) drop table t1; # End of test#50539. +# +# Bug#17217128 - BAD INTERACTION BETWEEN MIN/MAX AND +# "HAVING SUM(DISTINCT)": WRONG RESULTS. +# +CREATE TABLE t (a INT, b INT, KEY(a,b)); +INSERT INTO t VALUES (1,1), (2,2), (3,3), (4,4), (1,0), (3,2), (4,5); +set optimizer_trace_max_mem_size=1048576; +set @@session.optimizer_trace='enabled=on'; +set end_markers_in_json=on; +ANALYZE TABLE t; +Table Op Msg_type Msg_text +test.t analyze status OK +SELECT a, SUM(DISTINCT a), MIN(b) FROM t GROUP BY a; +a SUM(DISTINCT a) MIN(b) +1 1 0 +2 2 2 +3 3 2 +4 4 4 +EXPLAIN SELECT a, SUM(DISTINCT a), MIN(b) FROM t GROUP BY a; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t index a a 10 NULL 7 Using index +SELECT TRACE RLIKE 'have_both_agg_distinct_and_min_max' AS OK +FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE; +OK +1 +SELECT a, SUM(DISTINCT a), MAX(b) FROM t GROUP BY a; +a SUM(DISTINCT a) MAX(b) +1 1 1 +2 2 2 +3 3 3 +4 4 5 +EXPLAIN SELECT a, SUM(DISTINCT a), MAX(b) FROM t GROUP BY a; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t index a a 10 NULL 7 Using index +SELECT TRACE RLIKE 'have_both_agg_distinct_and_min_max' AS OK +FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE; +OK +1 +SELECT a, MAX(b) FROM t GROUP BY a HAVING SUM(DISTINCT a); +a MAX(b) +1 1 +2 2 +3 3 +4 5 +EXPLAIN SELECT a, MAX(b) FROM t GROUP BY a HAVING SUM(DISTINCT a); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t index a a 10 NULL 7 Using index +SELECT TRACE RLIKE 'have_both_agg_distinct_and_min_max' AS OK +FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE; +OK +1 +SELECT SUM(DISTINCT a), MIN(b), MAX(b) FROM t; +SUM(DISTINCT a) MIN(b) MAX(b) +10 0 5 +EXPLAIN SELECT SUM(DISTINCT a), MIN(b), MAX(b) FROM t; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t index a a 10 NULL 7 Using index +SELECT TRACE RLIKE 'have_both_agg_distinct_and_min_max' AS OK +FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE; +OK +1 +SELECT a, SUM(DISTINCT a), MIN(b), MAX(b) FROM t GROUP BY a; +a SUM(DISTINCT a) MIN(b) MAX(b) +1 1 0 1 +2 2 2 2 +3 3 2 3 +4 4 4 5 +EXPLAIN SELECT a, SUM(DISTINCT a), MIN(b), MAX(b) FROM t GROUP BY a; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t index a a 10 NULL 7 Using index +SELECT TRACE RLIKE 'have_both_agg_distinct_and_min_max' AS OK +FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE; +OK +1 +SET optimizer_trace_max_mem_size=DEFAULT; +SET optimizer_trace=DEFAULT; +SET end_markers_in_json=DEFAULT; +DROP TABLE t; diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/have_cp1251.require percona-xtrabackup-2.3.7/mysql-test/r/have_cp1251.require --- percona-xtrabackup-2.2.3/mysql-test/r/have_cp1251.require 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/have_cp1251.require 2017-02-27 07:47:02.000000000 +0000 @@ -1,2 +1,2 @@ Collation Charset Id Default Compiled Sortlen -cp1251_general_ci cp1251 51 Yes 0 +cp1251_general_ci cp1251 51 Yes Yes 1 diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/have_cp866.require percona-xtrabackup-2.3.7/mysql-test/r/have_cp866.require --- percona-xtrabackup-2.2.3/mysql-test/r/have_cp866.require 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/have_cp866.require 2017-02-27 07:47:02.000000000 +0000 @@ -1,2 +1,2 @@ Collation Charset Id Default Compiled Sortlen -cp866_general_ci cp866 36 Yes 0 +cp866_general_ci cp866 36 Yes Yes 1 diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/have_koi8r.require percona-xtrabackup-2.3.7/mysql-test/r/have_koi8r.require --- percona-xtrabackup-2.2.3/mysql-test/r/have_koi8r.require 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/have_koi8r.require 2017-02-27 07:47:02.000000000 +0000 @@ -1,2 +1,2 @@ Collation Charset Id Default Compiled Sortlen -koi8r_general_ci koi8r 7 Yes 0 +koi8r_general_ci koi8r 7 Yes Yes 1 diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/information_schema.result percona-xtrabackup-2.3.7/mysql-test/r/information_schema.result --- percona-xtrabackup-2.2.3/mysql-test/r/information_schema.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/information_schema.result 2017-02-27 07:47:02.000000000 +0000 @@ -2080,6 +2080,21 @@ drop database mysqltest; use test; # +# Test for bug #16869534 - "QUERYING SUBSET OF COLUMNS DOESN'T USE TABLE +# CACHE; OPENED_TABLES INCREASES" +# +SELECT * FROM INFORMATION_SCHEMA.TABLES; +SELECT VARIABLE_VALUE INTO @val1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE +VARIABLE_NAME LIKE 'Opened_tables'; +SELECT ENGINE FROM INFORMATION_SCHEMA.TABLES; +# The below SELECT query should give same output as above SELECT query. +SELECT VARIABLE_VALUE INTO @val2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE +VARIABLE_NAME LIKE 'Opened_tables'; +# The below select should return '1' +SELECT @val1 = @val2; +@val1 = @val2 +1 +# # End of 5.5 tests # # diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/innodb_recovery_with_upper_case_names.result percona-xtrabackup-2.3.7/mysql-test/r/innodb_recovery_with_upper_case_names.result --- percona-xtrabackup-2.2.3/mysql-test/r/innodb_recovery_with_upper_case_names.result 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/innodb_recovery_with_upper_case_names.result 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,48 @@ +Bug #18412598 UNCLEAN SYSTEM SHUTDOWN RECOVERY FAILS +FOR SCHEMA WITH CAPITAL LETTERS +create database MYDB; +USE MYDB; +CREATE TABLE mytable (id int primary key) ENGINE=innodb; +CREATE TABLE FOO (id int,constraint FOREIGN KEY (id) REFERENCES mytable(id) ON DELETE CASCADE) ENGINE=innodb; +CREATE TABLE mytable_ref (id int,constraint FOREIGN KEY (id) REFERENCES FOO(id) ON DELETE CASCADE) ENGINE=innodb; +INSERT INTO mytable VALUES (10),(20),(30),(40); +INSERT INTO FOO VALUES (20),(10); +INSERT INTO mytable_ref VALUES (20),(10); +SHOW VARIABLES LIKE 'innodb_fast_shutdown'; +Variable_name Value +innodb_fast_shutdown 2 +START TRANSACTION; +INSERT INTO mytable VALUES (50); +INSERT INTO FOO VALUES (50); +INSERT INTO mytable_ref VALUES (50); +# Restart the server. This will go into crash recovery mode +USE MYDB; +SELECT * FROM mytable; +id +10 +20 +30 +40 +SELECT * FROM FOO; +id +10 +20 +SELECT * FROM mytable_ref; +id +10 +20 +DELETE FROM mytable WHERE id =10; +SELECT * FROM FOO; +id +20 +SELECT * FROM mytable_ref; +id +20 +CREATE TABLE MYtable (id int) ENGINE=innodb; +ERROR 42S01: Table 'mytable' already exists +CREATE TABLE Foo (id int) ENGINE=innodb; +ERROR 42S01: Table 'foo' already exists +DROP TABLE mytable_ref,FOO; +DROP TABLE mytable; +use test; +DROP DATABASE MYDB; diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/loaddata.result percona-xtrabackup-2.3.7/mysql-test/r/loaddata.result --- percona-xtrabackup-2.2.3/mysql-test/r/loaddata.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/loaddata.result 2017-02-27 07:47:02.000000000 +0000 @@ -520,3 +520,15 @@ ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field drop table t1; End of 5.1 tests +# +# Bug#11759519 INFINITE HANG WITH 100% CPU USAGE WITH LOAD DATA LOCAL AND IMPORT ERRORS +# +SET @old_mode= @@sql_mode; +CREATE TABLE t1 (fld1 INT); +SET sql_mode='strict_all_tables'; +# Without fix, load data hangs forever. +LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/mysql' REPLACE INTO TABLE t1 +FIELDS TERMINATED BY 't' LINES TERMINATED BY ''; +Got one of the listed errors +SET @@sql_mode= @old_mode; +DROP TABLE t1; diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/lock_sync.result percona-xtrabackup-2.3.7/mysql-test/r/lock_sync.result --- percona-xtrabackup-2.2.3/mysql-test/r/lock_sync.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/lock_sync.result 2017-02-27 07:47:02.000000000 +0000 @@ -752,6 +752,9 @@ DROP TABLE IF EXISTS t1; CREATE TABLE t1(a INT) engine=InnoDB; INSERT INTO t1 VALUES (1), (2); +# Note: This test now provides coverage for the scenario where +# opening of table during analyze phase of OPTIMIZE TABLE +# fails (instead of original coverage for open_ltable() code). # Connection con1 SET SESSION lock_wait_timeout= 1; SET DEBUG_SYNC= 'ha_admin_open_ltable SIGNAL opti_recreate WAIT_FOR opti_analyze'; @@ -761,7 +764,7 @@ SET DEBUG_SYNC= 'now WAIT_FOR opti_recreate'; SET DEBUG_SYNC= 'after_lock_tables_takes_lock SIGNAL thrlock WAIT_FOR release_thrlock'; # Sending: -INSERT INTO t1 VALUES (3); +LOCK TABLES t1 WRITE; # Connection default SET DEBUG_SYNC= 'now WAIT_FOR thrlock'; SET DEBUG_SYNC= 'now SIGNAL opti_analyze'; @@ -775,7 +778,7 @@ Error 1205 Lock wait timeout exceeded; try restarting transaction SET DEBUG_SYNC= 'now SIGNAL release_thrlock'; # Connection con2 -# Reaping: INSERT INTO t1 VALUES (3) +# Reaping: LOCK TABLES t1 WRITE # Connection default DROP TABLE t1; SET DEBUG_SYNC= 'RESET'; @@ -814,3 +817,90 @@ SET DEBUG_SYNC= 'RESET'; DROP VIEW v1; DROP TABLE t1; +# +#Bug#18110156: RECREATE+ANALYZE OPTIMIZE TABLE T AND ONLINE +# ALTER TABLE T MAY DEADLOCK +CREATE TABLE t1 (fld1 INT) ENGINE=InnoDB; +connection con1; +SET DEBUG_SYNC= 'before_lock_tables_takes_lock SIGNAL before_thr_lock WAIT_FOR do_thr_lock EXECUTE 3'; +SET DEBUG_SYNC= 'ha_admin_open_ltable SIGNAL opti_recreate WAIT_FOR opti_analyze'; +OPTIMIZE TABLE t1; +connection con2; +# Skip thr_lock acquisition during the initial phase of OPTIMIZE TABLE +SET DEBUG_SYNC= 'now WAIT_FOR before_thr_lock'; +SET DEBUG_SYNC= 'now SIGNAL do_thr_lock'; +# Skip thr_lock acquisition during the recreate phase of OPTIMIZE TABLE +SET DEBUG_SYNC= 'now WAIT_FOR before_thr_lock'; +SET DEBUG_SYNC= 'now SIGNAL do_thr_lock'; +SET DEBUG_SYNC= 'now WAIT_FOR opti_recreate'; +SET DEBUG_SYNC= 'alter_table_inplace_after_lock_downgrade SIGNAL lock_downgraded +WAIT_FOR finish_alter'; +ALTER TABLE t1 ADD INDEX index1(fld1), ALGORITHM=INPLACE, LOCK=NONE; +#Without the patch, the test case hangs. +connection default; +SET DEBUG_SYNC= 'now WAIT_FOR lock_downgraded'; +SET DEBUG_SYNC= 'now SIGNAL opti_analyze'; +SET DEBUG_SYNC= 'now WAIT_FOR before_thr_lock'; +SET DEBUG_SYNC= 'now SIGNAL finish_alter'; +SET DEBUG_SYNC= 'now SIGNAL do_thr_lock'; +#Reap: OPTIMIZE TABLE t1 +connection con1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +#Reap: ALTER TABLE t1 +connection con2; +#Clean up. +DROP TABLE t1; +SET DEBUG_SYNC= 'RESET'; +# +# Bug#19070633 - POSSIBLE ACCESS TO FREED MEMORY IN IS_FREE_LOCK() AND IS_USED_LOCK(). +# +# Verifying issue for IS_FREE_LOCK() function. +SELECT GET_LOCK("lock_19070633", 600); +GET_LOCK("lock_19070633", 600) +1 +connect con1, localhost, root,,; +# Waiting after getting user level lock info and releasing mutex. +SET DEBUG_SYNC= 'after_getting_user_level_lock_info SIGNAL parked WAIT_FOR go'; +# Sending: SELECT IS_FREE_LOCK("lock_19070633"); +SELECT IS_FREE_LOCK("lock_19070633"); +connection default; +SET DEBUG_SYNC= 'now WAIT_FOR parked'; +SELECT RELEASE_LOCK("lock_19070633"); +RELEASE_LOCK("lock_19070633") +1 +# Signaling connection con1 after releasing the lock. +# Without fix, accessing user level lock info in con1 would result in +# crash or valgrind issue invalid read is reported. +SET DEBUG_SYNC= 'now SIGNAL go'; +connection con1; +# Reaping: SELECT IS_FREE_LOCK("lock_19070633"); +IS_FREE_LOCK("lock_19070633") +0 +connection default; +# Verifying issue for IS_USED_LOCK() function. +SELECT GET_LOCK("lock_19070633", 600); +GET_LOCK("lock_19070633", 600) +1 +connection con1; +# Waiting after getting user level lock info and releasing mutex. +SET DEBUG_SYNC= 'after_getting_user_level_lock_info SIGNAL parked WAIT_FOR go'; +# Sending: SELECT IS_USED_LOCK("lock_19070633"); +SELECT IS_USED_LOCK("lock_19070633"); +connection default; +SET DEBUG_SYNC= 'now WAIT_FOR parked'; +SELECT RELEASE_LOCK("lock_19070633"); +RELEASE_LOCK("lock_19070633") +1 +# Signaling connection con1 after releasing the lock. +# Without fix, accessing user level lock info in con1 would result in +# crash or valgrind issue invalid read is reported. +SET DEBUG_SYNC= 'now SIGNAL go'; +connection con1; +# Reaping: SELECT IS_USED_LOCK("lock_19070633"); +IS_USED_LOCK("lock_19070633") +# +connection default; +SET DEBUG_SYNC= 'RESET'; +disconnect con1; diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/log_errchk.result percona-xtrabackup-2.3.7/mysql-test/r/log_errchk.result --- percona-xtrabackup-2.2.3/mysql-test/r/log_errchk.result 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/log_errchk.result 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,10 @@ +call mtr.add_suppression("Could not open"); +# Case 1: Setting fife file to general_log_file and slow_query_log_file +# system variable. +SET GLOBAL general_log_file="MYSQLTEST_VARDIR/tmp/general_log.fifo";; +ERROR 42000: Variable 'general_log_file' can't be set to the value of 'MYSQLTEST_VARDIR/tmp/general_log.fifo' +SET GLOBAL slow_query_log_file="MYSQLTEST_VARDIR/tmp/slow_log.fifo";; +ERROR 42000: Variable 'slow_query_log_file' can't be set to the value of 'MYSQLTEST_VARDIR/tmp/slow_log.fifo' +# Case 2: Starting server with fifo file as general log file +# and slow query log file. +Setting fifo file as general log file and slow query log failed. diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/myisam.result percona-xtrabackup-2.3.7/mysql-test/r/myisam.result --- percona-xtrabackup-2.2.3/mysql-test/r/myisam.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/myisam.result 2017-02-27 07:47:02.000000000 +0000 @@ -2537,3 +2537,82 @@ Warnings: Warning 1292 Truncated incorrect DOUBLE value: 'lhsi' DROP TABLE t1; +# +# Bug 17156940 THE UPDATE AND SELECT BEHAVE DIFFERENTLY +# UNDER THE SAME CONDITIONS. +# +CREATE TABLE t1 ( +col1 VARCHAR(255) DEFAULT NULL, +col1_id INT(11) DEFAULT NULL, +KEY col1 (col1), +KEY col1_id (col1_id) +) ENGINE=MyISAM; +INSERT INTO t1 (col1, col1_id) VALUES +('5cm', 10000), ('people', 10000), ('king', 10000), ('queen', 10000), +('minister', 10000), ('servent', 13000); +INSERT INTO t1 (col1, col1_id) +SELECT col1, col1_id FROM t1 WHERE col1 <> '5cm'; +INSERT INTO t1 (col1, col1_id) +SELECT col1, col1_id FROM t1 WHERE col1 <> '5cm'; +INSERT INTO t1 (col1, col1_id) +SELECT col1, col1_id FROM t1 WHERE col1 <> '5cm'; +INSERT INTO t1 (col1, col1_id) VALUES +('5cm ', 10000), ('5cm ', 10000); +SELECT col1, hex(col1), col1_id, count(*) from t1 +WHERE col1= '5cm' GROUP BY hex(col1), col1_id; +col1 hex(col1) col1_id count(*) +5cm 35636D 10000 1 +5cm 35636D20 10000 2 +UPDATE t1 SET col1_id= 1414 WHERE col1= '5cm'; +SELECT count(*) FROM t1 WHERE col1= '5cm'; +count(*) +3 +SELECT count(*) FROM t1 WHERE col1_id= 1414; +count(*) +3 +DELETE FROM t1 WHERE col1= '5cm'; +SELECT count(*) FROM t1 WHERE col1= '5cm'; +count(*) +0 +DROP TABLE t1; +# Test for multi column key. +CREATE TABLE t1 ( +col1 VARCHAR(255) DEFAULT NULL, +col1_dummy VARCHAR(25) DEFAULT NULL, +col1_id INT(11) DEFAULT NULL, +col1_id_dummy INT(10) DEFAULT NULL, +KEY col1 (col1, col1_dummy), +KEY col1_id (col1, col1_id_dummy) +) ENGINE=MyISAM; +INSERT INTO t1 (col1, col1_dummy, col1_id, col1_id_dummy) VALUES +('5cm', '5cm' , 10000, 100), ('people', 'people', 10000, 100), +('king', 'king' , 10000, 100), ('queen', 'queen', 10000, 100), +('minister', 'minister', 10000, 100), ('servent', 'servent', 13000, 100); +INSERT INTO t1 (col1, col1_dummy, col1_id, col1_id_dummy) +SELECT col1, col1_dummy, col1_id, col1_id_dummy FROM t1 +WHERE col1 <> '5cm'; +INSERT INTO t1 (col1, col1_dummy, col1_id, col1_id_dummy) +SELECT col1, col1_dummy, col1_id, col1_id_dummy FROM t1 +WHERE col1 <> '5cm'; +INSERT INTO t1 (col1, col1_dummy, col1_id, col1_id_dummy) +SELECT col1, col1_dummy, col1_id, col1_id_dummy FROM t1 +WHERE col1 <> '5cm'; +INSERT INTO t1 (col1, col1_dummy, col1_id, col1_id_dummy) VALUES +('5cm ', '5cm ', 10000, 100), ('5cm ', '5cm ', 10000, 100); +SELECT col1, hex(col1), col1_id, count(*) from t1 WHERE col1= '5cm' + GROUP BY hex(col1), col1_id; +col1 hex(col1) col1_id count(*) +5cm 35636D 10000 1 +5cm 35636D20 10000 2 +UPDATE t1 SET col1_id= 1414 WHERE col1= '5cm' AND col1_dummy= '5cm'; +SELECT count(*) FROM t1 WHERE col1= '5cm'; +count(*) +3 +SELECT count(*) FROM t1 WHERE col1_id= 1414; +count(*) +3 +DELETE FROM t1 WHERE col1= '5cm' AND col1_dummy= '5cm'; +SELECT count(*) FROM t1 WHERE col1= '5cm'; +count(*) +0 +DROP TABLE t1; diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/mysqlbinlog_debug.result percona-xtrabackup-2.3.7/mysql-test/r/mysqlbinlog_debug.result --- percona-xtrabackup-2.2.3/mysql-test/r/mysqlbinlog_debug.result 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/mysqlbinlog_debug.result 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,7 @@ +# +# Bug#18742916 : MYSQLBINLOG --RAW DOES NOT CHECK FOR ERRORS +# +ERROR: Could not write into log file 'MYSQLTEST_VARDIR/tmp/master-bin.000001' +ERROR: Could not write into log file 'MYSQLTEST_VARDIR/tmp/master-bin.000001' + +End of tests diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/mysqlbinlog_mixed_or_statment.result percona-xtrabackup-2.3.7/mysql-test/r/mysqlbinlog_mixed_or_statment.result --- percona-xtrabackup-2.2.3/mysql-test/r/mysqlbinlog_mixed_or_statment.result 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/mysqlbinlog_mixed_or_statment.result 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,26 @@ +# +# Bug#18913551 - LOCK TABLES USES INCORRECT LOCK FOR IMPLICITLY USED +# TABLES. +# +SET @org_concurrent_insert= @@global.concurrent_insert; +SET @@global.concurrent_insert=1; +CREATE TABLE t1(a INT) ENGINE=MyISAM; +CREATE FUNCTION f1() RETURNS INT RETURN (SELECT MIN(a) FROM t1); +CREATE VIEW v1 AS (SELECT 1 FROM dual WHERE f1() = 1); +LOCK TABLE v1 READ; +connect con1, localhost, root; +SET lock_wait_timeout=1; +# With fix, con1 does not get lock on table "t1" so following insert +# operation fails after waiting for "lock_wait_timeout" duration. +INSERT INTO t1 VALUES (1); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +connection default; +UNLOCK TABLES; +# V1 should be empty here. +SELECT * FROM v1; +1 +disconnect con1; +SET @@global.concurrent_insert= @org_concurrent_insert; +DROP TABLE t1; +DROP VIEW v1; +DROP FUNCTION f1; diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/mysql_config_editor.result percona-xtrabackup-2.3.7/mysql-test/r/mysql_config_editor.result --- percona-xtrabackup-2.2.3/mysql-test/r/mysql_config_editor.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/mysql_config_editor.result 2017-02-27 07:47:02.000000000 +0000 @@ -100,7 +100,7 @@ ############################################## # Tests for mysql_config_editor's help command ############################################## -Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. +Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/mysqld--help-notwin.result percona-xtrabackup-2.3.7/mysql-test/r/mysqld--help-notwin.result --- percona-xtrabackup-2.2.3/mysql-test/r/mysqld--help-notwin.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/mysqld--help-notwin.result 2017-02-27 07:47:02.000000000 +0000 @@ -28,6 +28,12 @@ --automatic-sp-privileges Creating and dropping stored procedures alters ACLs (Defaults to on; use --skip-automatic-sp-privileges to disable.) + --avoid-temporal-upgrade + When this option is enabled, the pre-5.6.4 temporal types + are not upgraded to the new format for ALTER TABLE + requests ADD/CHANGE/MODIFY COLUMN, ADD INDEX or FORCE + operation. This variable is deprecated and will be + removed in a future release. --back-log=# The number of outstanding connection requests MySQL can have. This comes into play when the main MySQL thread gets very many connection requests in a very short time @@ -56,6 +62,10 @@ --binlog-do-db=name Tells the master it should log updates for the specified database, and exclude all others not explicitly mentioned. + --binlog-error-action=name + When statements cannot be written to the binary log due + to a fatal error, the server can either ignore the error + and let the master continue, or abort. --binlog-format=name What form of binary logging the master will use: either ROW for row-based binary logging, STATEMENT for @@ -68,6 +78,19 @@ binlog-format is MIXED, the format switches to row-based and back implicitly per each query accessing an NDBCLUSTER table + --binlog-gtid-simple-recovery + If this option is enabled, the server does not scan more + than one binary log for every iteration when initializing + GTID sets on server restart. Enabling this option is very + useful when restarting a server which has already + generated lots of binary logs without GTID events. Note: + If this option is enabled, GLOBAL.GTID_EXECUTED and + GLOBAL.GTID_PURGED cannot be initialized correctly if + binary log(s) with GTID events were generated before + binary log(s) without GTID events, for example if + gtid_mode is disabled when the server has already + generated binary log(s) with GTID events and not purged + them. --binlog-ignore-db=name Tells the master that updates to the given database should not be logged to the binary log. @@ -103,6 +126,12 @@ non-transactional engines for the binary log. If you often use statements updating a great number of rows, you can increase this to get more performance + --binlogging-impossible-mode=name + On a fatal error when statements cannot be binlogged the + behaviour can be ignore the error and let the master + continue or abort the server. This variable is deprecated + and will be removed in a future release. Please use + binlog_error_action instead. --block-encryption-mode=name mode for AES_ENCRYPT/AES_DECRYPT --bootstrap Used by mysql installation scripts. @@ -386,6 +415,8 @@ INSERT DELAYED statements. If set to zero INSERT DELAYED will be not used.This variable is deprecated along with INSERT DELAYED. + --max-digest-length=# + Maximum length considered for digest text. --max-error-count=# Max number of errors/warnings to store for a statement --max-heap-table-size=# Don't allow creation of heap tables bigger than this @@ -477,8 +508,8 @@ If this is not 0, then mysqld will use this value to reserve file descriptors to use with setrlimit(). If this value is 0 then mysqld will reserve max_connections*5 or - max_connections + table_cache*2 (whichever is larger) - number of file descriptors + max_connections + table_open_cache*2 (whichever is + larger) number of file descriptors --optimizer-prune-level=# Controls the heuristic(s) applied during query optimization to prune less-promising partial plans from @@ -808,9 +839,17 @@ --server-id=# Uniquely identifies the server instance in the community of replication partners --server-id-bits=# Set number of significant bits in server-id + --show-old-temporals + When this option is enabled, the pre-5.6.4 temporal types + will be marked in the 'SHOW CREATE TABLE' and + 'INFORMATION_SCHEMA.COLUMNS' table as a comment in + COLUMN_TYPE field. This variable is deprecated and will + be removed in a future release. --show-slave-auth-info Show user and password in SHOW SLAVE HOSTS on this master. + --simplified-binlog-gtid-recovery + Alias for @@binlog_gtid_simple_recovery. Deprecated --skip-grant-tables Start without grant tables. This gives all users FULL ACCESS to all tables. --skip-host-cache Don't cache host names. @@ -950,8 +989,8 @@ one-thread-per-connection, no-threads, loaded-dynamically --thread-stack=# The stack size for each thread --time-format=name The TIME format (ignored) - --timed-mutexes Specify whether to time mutexes (only InnoDB mutexes are - currently supported) + --timed-mutexes Specify whether to time mutexes. Deprecated, has no + effect. --tmp-table-size=# If an internal in-memory temporary table exceeds this size, MySQL will automatically convert it to an on-disk MyISAM table @@ -993,19 +1032,23 @@ auto-increment-offset 1 autocommit TRUE automatic-sp-privileges TRUE +avoid-temporal-upgrade FALSE back-log 80 big-tables FALSE bind-address * binlog-cache-size 32768 binlog-checksum CRC32 binlog-direct-non-transactional-updates FALSE +binlog-error-action IGNORE_ERROR binlog-format STATEMENT +binlog-gtid-simple-recovery FALSE binlog-max-flush-queue-time 0 binlog-order-commits TRUE binlog-row-event-max-size 8192 binlog-row-image FULL binlog-rows-query-log-events FALSE binlog-stmt-cache-size 32768 +binlogging-impossible-mode IGNORE_ERROR block-encryption-mode aes-128-ecb bulk-insert-buffer-size 8388608 character-set-client-handshake TRUE @@ -1101,6 +1144,7 @@ max-connect-errors 100 max-connections 151 max-delayed-threads 20 +max-digest-length 1024 max-error-count 64 max-heap-table-size 16777216 max-join-size 18446744073709551615 @@ -1221,7 +1265,9 @@ secure-file-priv (No default value) server-id 0 server-id-bits 32 +show-old-temporals FALSE show-slave-auth-info FALSE +simplified-binlog-gtid-recovery FALSE skip-grant-tables TRUE skip-name-resolve FALSE skip-networking FALSE diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/mysqld--help-win.result percona-xtrabackup-2.3.7/mysql-test/r/mysqld--help-win.result --- percona-xtrabackup-2.2.3/mysql-test/r/mysqld--help-win.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/mysqld--help-win.result 2017-02-27 07:47:02.000000000 +0000 @@ -28,6 +28,12 @@ --automatic-sp-privileges Creating and dropping stored procedures alters ACLs (Defaults to on; use --skip-automatic-sp-privileges to disable.) + --avoid-temporal-upgrade + When this option is enabled, the pre-5.6.4 temporal types + are not upgraded to the new format for ALTER TABLE + requests ADD/CHANGE/MODIFY COLUMN, ADD INDEX or FORCE + operation. This variable is deprecated and will be + removed in a future release. --back-log=# The number of outstanding connection requests MySQL can have. This comes into play when the main MySQL thread gets very many connection requests in a very short time @@ -56,6 +62,10 @@ --binlog-do-db=name Tells the master it should log updates for the specified database, and exclude all others not explicitly mentioned. + --binlog-error-action=name + When statements cannot be written to the binary log due + to a fatal error, the server can either ignore the error + and let the master continue, or abort. --binlog-format=name What form of binary logging the master will use: either ROW for row-based binary logging, STATEMENT for @@ -68,6 +78,19 @@ binlog-format is MIXED, the format switches to row-based and back implicitly per each query accessing an NDBCLUSTER table + --binlog-gtid-simple-recovery + If this option is enabled, the server does not scan more + than one binary log for every iteration when initializing + GTID sets on server restart. Enabling this option is very + useful when restarting a server which has already + generated lots of binary logs without GTID events. Note: + If this option is enabled, GLOBAL.GTID_EXECUTED and + GLOBAL.GTID_PURGED cannot be initialized correctly if + binary log(s) with GTID events were generated before + binary log(s) without GTID events, for example if + gtid_mode is disabled when the server has already + generated binary log(s) with GTID events and not purged + them. --binlog-ignore-db=name Tells the master that updates to the given database should not be logged to the binary log. @@ -103,6 +126,12 @@ non-transactional engines for the binary log. If you often use statements updating a great number of rows, you can increase this to get more performance + --binlogging-impossible-mode=name + On a fatal error when statements cannot be binlogged the + behaviour can be ignore the error and let the master + continue or abort the server. This variable is deprecated + and will be removed in a future release. Please use + binlog_error_action instead. --block-encryption-mode=name mode for AES_ENCRYPT/AES_DECRYPT --bootstrap Used by mysql installation scripts. @@ -385,6 +414,8 @@ INSERT DELAYED statements. If set to zero INSERT DELAYED will be not used.This variable is deprecated along with INSERT DELAYED. + --max-digest-length=# + Maximum length considered for digest text. --max-error-count=# Max number of errors/warnings to store for a statement --max-heap-table-size=# Don't allow creation of heap tables bigger than this @@ -477,8 +508,8 @@ If this is not 0, then mysqld will use this value to reserve file descriptors to use with setrlimit(). If this value is 0 then mysqld will reserve max_connections*5 or - max_connections + table_cache*2 (whichever is larger) - number of file descriptors + max_connections + table_open_cache*2 (whichever is + larger) number of file descriptors --optimizer-prune-level=# Controls the heuristic(s) applied during query optimization to prune less-promising partial plans from @@ -811,9 +842,17 @@ --shared-memory Enable the shared memory --shared-memory-base-name=name Base name of shared memory + --show-old-temporals + When this option is enabled, the pre-5.6.4 temporal types + will be marked in the 'SHOW CREATE TABLE' and + 'INFORMATION_SCHEMA.COLUMNS' table as a comment in + COLUMN_TYPE field. This variable is deprecated and will + be removed in a future release. --show-slave-auth-info Show user and password in SHOW SLAVE HOSTS on this master. + --simplified-binlog-gtid-recovery + Alias for @@binlog_gtid_simple_recovery. Deprecated --skip-grant-tables Start without grant tables. This gives all users FULL ACCESS to all tables. --skip-host-cache Don't cache host names. @@ -958,8 +997,8 @@ one-thread-per-connection, no-threads, loaded-dynamically --thread-stack=# The stack size for each thread --time-format=name The TIME format (ignored) - --timed-mutexes Specify whether to time mutexes (only InnoDB mutexes are - currently supported) + --timed-mutexes Specify whether to time mutexes. Deprecated, has no + effect. --tmp-table-size=# If an internal in-memory temporary table exceeds this size, MySQL will automatically convert it to an on-disk MyISAM table @@ -1001,19 +1040,23 @@ auto-increment-offset 1 autocommit TRUE automatic-sp-privileges TRUE +avoid-temporal-upgrade FALSE back-log 80 big-tables FALSE bind-address * binlog-cache-size 32768 binlog-checksum CRC32 binlog-direct-non-transactional-updates FALSE +binlog-error-action IGNORE_ERROR binlog-format STATEMENT +binlog-gtid-simple-recovery FALSE binlog-max-flush-queue-time 0 binlog-order-commits TRUE binlog-row-event-max-size 8192 binlog-row-image FULL binlog-rows-query-log-events FALSE binlog-stmt-cache-size 32768 +binlogging-impossible-mode IGNORE_ERROR block-encryption-mode aes-128-ecb bulk-insert-buffer-size 8388608 character-set-client-handshake TRUE @@ -1108,6 +1151,7 @@ max-connect-errors 100 max-connections 151 max-delayed-threads 20 +max-digest-length 1024 max-error-count 64 max-heap-table-size 16777216 max-join-size 18446744073709551615 @@ -1231,7 +1275,9 @@ server-id-bits 32 shared-memory FALSE shared-memory-base-name MYSQL +show-old-temporals FALSE show-slave-auth-info FALSE +simplified-binlog-gtid-recovery FALSE skip-grant-tables TRUE skip-name-resolve FALSE skip-networking FALSE diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/mysqldump.result percona-xtrabackup-2.3.7/mysql-test/r/mysqldump.result --- percona-xtrabackup-2.2.3/mysql-test/r/mysqldump.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/mysqldump.result 2017-02-27 07:47:02.000000000 +0000 @@ -1987,11 +1987,9 @@ /*!50001 DROP VIEW IF EXISTS `v2`*/; SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; -/*!50001 CREATE TABLE `v2` ( - `a` tinyint NOT NULL -) ENGINE=MyISAM */; +/*!50001 CREATE VIEW `v2` AS SELECT + 1 AS `a`*/; SET character_set_client = @saved_cs_client; -/*!50001 DROP TABLE IF EXISTS `v2`*/; /*!50001 DROP VIEW IF EXISTS `v2`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; @@ -2081,11 +2079,9 @@ /*!50001 DROP VIEW IF EXISTS `v1`*/; SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; -/*!50001 CREATE TABLE `v1` ( - `a` tinyint NOT NULL -) ENGINE=MyISAM */; +/*!50001 CREATE VIEW `v1` AS SELECT + 1 AS `a`*/; SET character_set_client = @saved_cs_client; -/*!50001 DROP TABLE IF EXISTS `v1`*/; /*!50001 DROP VIEW IF EXISTS `v1`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; @@ -2155,11 +2151,9 @@ /*!50001 DROP VIEW IF EXISTS `v2`*/; SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; -/*!50001 CREATE TABLE `v2` ( - `a` tinyint NOT NULL -) ENGINE=MyISAM */; +/*!50001 CREATE VIEW `v2` AS SELECT + 1 AS `a`*/; SET character_set_client = @saved_cs_client; -/*!50001 DROP TABLE IF EXISTS `v2`*/; /*!50001 DROP VIEW IF EXISTS `v2`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; @@ -2269,31 +2263,27 @@ /*!50001 DROP VIEW IF EXISTS `v1`*/; SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; -/*!50001 CREATE TABLE `v1` ( - `a` tinyint NOT NULL, - `b` tinyint NOT NULL, - `c` tinyint NOT NULL -) ENGINE=MyISAM */; +/*!50001 CREATE VIEW `v1` AS SELECT + 1 AS `a`, + 1 AS `b`, + 1 AS `c`*/; SET character_set_client = @saved_cs_client; DROP TABLE IF EXISTS `v2`; /*!50001 DROP VIEW IF EXISTS `v2`*/; SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; -/*!50001 CREATE TABLE `v2` ( - `a` tinyint NOT NULL -) ENGINE=MyISAM */; +/*!50001 CREATE VIEW `v2` AS SELECT + 1 AS `a`*/; SET character_set_client = @saved_cs_client; DROP TABLE IF EXISTS `v3`; /*!50001 DROP VIEW IF EXISTS `v3`*/; SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; -/*!50001 CREATE TABLE `v3` ( - `a` tinyint NOT NULL, - `b` tinyint NOT NULL, - `c` tinyint NOT NULL -) ENGINE=MyISAM */; +/*!50001 CREATE VIEW `v3` AS SELECT + 1 AS `a`, + 1 AS `b`, + 1 AS `c`*/; SET character_set_client = @saved_cs_client; -/*!50001 DROP TABLE IF EXISTS `v1`*/; /*!50001 DROP VIEW IF EXISTS `v1`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; @@ -2307,7 +2297,6 @@ /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; -/*!50001 DROP TABLE IF EXISTS `v2`*/; /*!50001 DROP VIEW IF EXISTS `v2`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; @@ -2321,7 +2310,6 @@ /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; -/*!50001 DROP TABLE IF EXISTS `v3`*/; /*!50001 DROP VIEW IF EXISTS `v3`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; @@ -3026,35 +3014,31 @@ /*!50001 DROP VIEW IF EXISTS `v0`*/; SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; -/*!50001 CREATE TABLE `v0` ( - `a` tinyint NOT NULL, - `b` tinyint NOT NULL, - `c` tinyint NOT NULL -) ENGINE=MyISAM */; +/*!50001 CREATE VIEW `v0` AS SELECT + 1 AS `a`, + 1 AS `b`, + 1 AS `c`*/; SET character_set_client = @saved_cs_client; DROP TABLE IF EXISTS `v1`; /*!50001 DROP VIEW IF EXISTS `v1`*/; SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; -/*!50001 CREATE TABLE `v1` ( - `a` tinyint NOT NULL, - `b` tinyint NOT NULL, - `c` tinyint NOT NULL -) ENGINE=MyISAM */; +/*!50001 CREATE VIEW `v1` AS SELECT + 1 AS `a`, + 1 AS `b`, + 1 AS `c`*/; SET character_set_client = @saved_cs_client; DROP TABLE IF EXISTS `v2`; /*!50001 DROP VIEW IF EXISTS `v2`*/; SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; -/*!50001 CREATE TABLE `v2` ( - `a` tinyint NOT NULL, - `b` tinyint NOT NULL, - `c` tinyint NOT NULL -) ENGINE=MyISAM */; +/*!50001 CREATE VIEW `v2` AS SELECT + 1 AS `a`, + 1 AS `b`, + 1 AS `c`*/; SET character_set_client = @saved_cs_client; USE `test`; -/*!50001 DROP TABLE IF EXISTS `v0`*/; /*!50001 DROP VIEW IF EXISTS `v0`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; @@ -3068,7 +3052,6 @@ /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; -/*!50001 DROP TABLE IF EXISTS `v1`*/; /*!50001 DROP VIEW IF EXISTS `v1`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; @@ -3082,7 +3065,6 @@ /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; -/*!50001 DROP TABLE IF EXISTS `v2`*/; /*!50001 DROP VIEW IF EXISTS `v2`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; @@ -3320,7 +3302,7 @@ create view v1 as select qty, price, qty*price as value from t; create view v2 as select qty from v1; mysqldump { -/*!50001 DROP TABLE IF EXISTS `v1`*/; +/*!50001 DROP VIEW IF EXISTS `v1`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; @@ -3335,7 +3317,7 @@ /*!50001 SET collation_connection = @saved_col_connection */; } mysqldump { -/*!50001 DROP TABLE IF EXISTS `v2`*/; +/*!50001 DROP VIEW IF EXISTS `v2`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; @@ -3428,13 +3410,11 @@ /*!50001 DROP VIEW IF EXISTS `v1`*/; SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; -/*!50001 CREATE TABLE `v1` ( - `id` tinyint NOT NULL -) ENGINE=MyISAM */; +/*!50001 CREATE VIEW `v1` AS SELECT + 1 AS `id`*/; SET character_set_client = @saved_cs_client; USE `mysqldump_test_db`; -/*!50001 DROP TABLE IF EXISTS `v1`*/; /*!50001 DROP VIEW IF EXISTS `v1`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; @@ -3488,15 +3468,14 @@ USE `mysqldump_views`; SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; -/*!50001 CREATE TABLE `nasishnasifu` ( - `id` tinyint NOT NULL -) ENGINE=MyISAM */; +/*!50001 CREATE VIEW `nasishnasifu` AS SELECT + 1 AS `id`*/; SET character_set_client = @saved_cs_client; USE `mysqldump_tables`; USE `mysqldump_views`; -/*!50001 DROP TABLE IF EXISTS `nasishnasifu`*/; +/*!50001 DROP VIEW IF EXISTS `nasishnasifu`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; @@ -3881,11 +3860,9 @@ /*!50001 DROP VIEW IF EXISTS `v2`*/; SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; -/*!50001 CREATE TABLE `v2` ( - `c` tinyint NOT NULL -) ENGINE=MyISAM */; +/*!50001 CREATE VIEW `v2` AS SELECT + 1 AS `c`*/; SET character_set_client = @saved_cs_client; -/*!50001 DROP TABLE IF EXISTS `v2`*/; /*!50001 DROP VIEW IF EXISTS `v2`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; @@ -4298,13 +4275,11 @@ /*!50001 DROP VIEW IF EXISTS `v1`*/; SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; -/*!50001 CREATE TABLE `v1` ( - `id` tinyint NOT NULL -) ENGINE=MyISAM */; +/*!50001 CREATE VIEW `v1` AS SELECT + 1 AS `id`*/; SET character_set_client = @saved_cs_client; USE `mysqldump_test_db`; -/*!50001 DROP TABLE IF EXISTS `v1`*/; /*!50001 DROP VIEW IF EXISTS `v1`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; @@ -5409,3 +5384,23 @@ # # End of 5.1 tests # +# +#BUG#17477959 - VIEW COLUMNS EXCEED TABLE LIMITS +# +CREATE VIEW v1 AS SELECT 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit1, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit2, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit3, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit4, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit5, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit6, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit7, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit8, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit9, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit10, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit11, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit12, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit13, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit14, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit15, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit16, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit17, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit18, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit19, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit20, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit21, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit22, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit23, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit24, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit25, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit26, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit27, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit28, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit29, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit30, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit31, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit32, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit33, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit34, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit35, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit36, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit37, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit38, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit39, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit40, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit41, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit42, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit43, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit44, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit45, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit46, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit47, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit48, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit49, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit50, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit51, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit52, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit53, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit54, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit55, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit56, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit57, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit58, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit59, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit60, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit61, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit62, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit63, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit64, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit65, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit66, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit67, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit68, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit69, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit70, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit71, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit72, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit73, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit74, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit75, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit76, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit77, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit78, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit79, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit80, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit81, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit82, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit83, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit84, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit85, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit86, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit87, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit88, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit89, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit90, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit91, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit92, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit93, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit94, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit95, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit96, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit97, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit98, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit99, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit100, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit101, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit102, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit103, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit104, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit105, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit106, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit107, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit108, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit109, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit110, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit111, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit112, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit113, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit114, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit115, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit116, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit117, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit118, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit119, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit120, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit121, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit122, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit123, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit124, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit125, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit126, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit127, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit128, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit129, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit130, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit131, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit132, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit133, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit134, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit135, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit136, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit137, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit138, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit139, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit140, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit141, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit142, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit143, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit144, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit145, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit146, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit147, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit148, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit149, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit150, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit151, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit152, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit153, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit154, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit155, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit156, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit157, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit158, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit159, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit160, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit161, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit162, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit163, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit164, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit165, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit166, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit167, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit168, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit169, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit170, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit171, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit172, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit173, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit174, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit175, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit176, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit177, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit178, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit179, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit180, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit181, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit182, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit183, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit184, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit185, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit186, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit187, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit188, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit189, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit190, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit191, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit192, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit193, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit194, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit195, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit196, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit197, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit198, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit199, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit200, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit201, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit202, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit203, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit204, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit205, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit206, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit207, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit208, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit209, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit210, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit211, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit212, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit213, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit214, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit215, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit216, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit217, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit218, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit219, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit220, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit221, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit222, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit223, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit224, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit225, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit226, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit227, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit228, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit229, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit230, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit231, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit232, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit233, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit234, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit235, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit236, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit237, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit238, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit239, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit240, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit241, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit242, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit243, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit244, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit245, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit246, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit247, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit248, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit249, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit250, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit251, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit252, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit253, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit254, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit255, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit256, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit257, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit258, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit259, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit260, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit261, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit262, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit263, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit264, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit265, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit266, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit267, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit268, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit269, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit270, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit271, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit272, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit273, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit274, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit275, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit276, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit277, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit278, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit279, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit280, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit281, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit282, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit283, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit284, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit285, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit286, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit287, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit288, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit289, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit290, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit291, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit292, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit293, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit294, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit295, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit296, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit297, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit298, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit299, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit300, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit301, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit302, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit303, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit304, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit305, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit306, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit307, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit308, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit309, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit310, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit311, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit312, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit313, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit314, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit315, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit316, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit317, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit318, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit319, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit320, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit321, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit322, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit323, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit324, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit325, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit326, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit327, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit328, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit329, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit330, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit331, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit332, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit333, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit334, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit335, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit336, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit337, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit338, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit339, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit340, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit341, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit342, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit343, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit344, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit345, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit346, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit347, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit348, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit349, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit350, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit351, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit352, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit353, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit354, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit355, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit356, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit357, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit358, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit359, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit360, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit361, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit362, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit363, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit364, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit365, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit366, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit367, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit368, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit369, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit370, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit371, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit372, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit373, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit374, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit375, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit376, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit377, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit378, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit379, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit380, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit381, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit382, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit383, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit384, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit385, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit386, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit387, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit388, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit389, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit390, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit391, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit392, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit393, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit394, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit395, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit396, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit397, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit398, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit399, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit400, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit401, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit402, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit403, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit404, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit405, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit406, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit407, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit408, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit409, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit410, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit411, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit412, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit413, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit414, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit415, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit416, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit417, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit418, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit419, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit420, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit421, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit422, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit423, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit424, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit425, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit426, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit427, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit428, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit429, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit430, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit431, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit432, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit433, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit434, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit435, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit436, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit437, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit438, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit439, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit440, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit441, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit442, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit443, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit444, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit445, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit446, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit447, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit448, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit449, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit450, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit451, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit452, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit453, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit454, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit455, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit456, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit457, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit458, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit459, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit460, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit461, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit462, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit463, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit464, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit465, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit466, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit467, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit468, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit469, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit470, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit471, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit472, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit473, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit474, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit475, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit476, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit477, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit478, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit479, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit480, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit481, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit482, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit483, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit484, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit485, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit486, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit487, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit488, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit489, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit490, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit491, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit492, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit493, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit494, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit495, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit496, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit497, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit498, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit499, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit500, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit501, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit502, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit503, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit504, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit505, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit506, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit507, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit508, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit509, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit510, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit511, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit512, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit513, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit514, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit515, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit516, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit517, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit518, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit519, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit520, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit521, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit522, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit523, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit524, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit525, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit526, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit527, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit528, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit529, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit530, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit531, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit532, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit533, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit534, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit535, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit536, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit537, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit538, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit539, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit540, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit541, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit542, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit543, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit544, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit545, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit546, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit547, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit548, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit549, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit550, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit551, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit552, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit553, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit554, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit555, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit556, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit557, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit558, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit559, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit560, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit561, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit562, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit563, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit564, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit565, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit566, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit567, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit568, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit569, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit570, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit571, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit572, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit573, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit574, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit575, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit576, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit577, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit578, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit579, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit580, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit581, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit582, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit583, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit584, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit585, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit586, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit587, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit588, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit589, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit590, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit591, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit592, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit593, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit594, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit595, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit596, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit597, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit598, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit599, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit600, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit601, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit602, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit603, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit604, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit605, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit606, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit607, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit608, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit609, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit610, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit611, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit612, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit613, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit614, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit615, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit616, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit617, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit618, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit619, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit620, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit621, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit622, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit623, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit624, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit625, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit626, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit627, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit628, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit629, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit630, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit631, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit632, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit633, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit634, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit635, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit636, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit637, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit638, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit639, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit640, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit641, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit642, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit643, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit644, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit645, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit646, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit647, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit648, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit649, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit650, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit651, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit652, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit653, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit654, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit655, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit656, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit657, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit658, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit659, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit660, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit661, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit662, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit663, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit664, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit665, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit666, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit667, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit668, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit669, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit670, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit671, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit672, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit673, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit674, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit675, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit676, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit677, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit678, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit679, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit680, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit681, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit682, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit683, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit684, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit685, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit686, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit687, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit688, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit689, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit690, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit691, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit692, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit693, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit694, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit695, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit696, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit697, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit698, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit699, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit700, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit701, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit702, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit703, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit704, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit705, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit706, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit707, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit708, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit709, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit710, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit711, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit712, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit713, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit714, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit715, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit716, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit717, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit718, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit719, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit720, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit721, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit722, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit723, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit724, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit725, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit726, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit727, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit728, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit729, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit730, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit731, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit732, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit733, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit734, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit735, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit736, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit737, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit738, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit739, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit740, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit741, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit742, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit743, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit744, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit745, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit746, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit747, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit748, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit749, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit750, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit751, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit752, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit753, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit754, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit755, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit756, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit757, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit758, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit759, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit760, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit761, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit762, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit763, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit764, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit765, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit766, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit767, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit768, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit769, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit770, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit771, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit772, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit773, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit774, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit775, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit776, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit777, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit778, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit779, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit780, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit781, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit782, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit783, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit784, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit785, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit786, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit787, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit788, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit789, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit790, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit791, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit792, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit793, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit794, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit795, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit796, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit797, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit798, 1 AS thisColumnContainsAVeryLongNameThatNearsThe64CharacterLimit; +DROP VIEW v1; +# +# End of 5.6 tests +# +# +# Bug #11752369 : MYSQLDUMP SHOULD CONVERT GEOMETRY COLUMNS TO HEX WITH +# --HEX-BLOB OPTION +CREATE DATABASE dump_gis; +USE dump_gis; +CREATE TABLE t1 (a GEOMETRY); +INSERT INTO t1 VALUES(GeomFromText('LineString(1 1, 2 1, 2 2, 1 2, 1 1)')); +SELECT HEX(a) FROM t1; +HEX(a) +00000000010200000005000000000000000000F03F000000000000F03F0000000000000040000000000000F03F00000000000000400000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F03F +INSERT INTO `t1` (`a`) VALUES (0x00000000010200000005000000000000000000F03F000000000000F03F0000000000000040000000000000F03F00000000000000400000000000000040000000000000F03F0000000000000040000000000000F03F000000000000F03F); +DROP DATABASE dump_gis; diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/mysql_upgrade.result percona-xtrabackup-2.3.7/mysql-test/r/mysql_upgrade.result --- percona-xtrabackup-2.2.3/mysql-test/r/mysql_upgrade.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/mysql_upgrade.result 2017-02-27 07:47:02.000000000 +0000 @@ -365,6 +365,7 @@ CREATE USER 'bug13586336'@'localhost' IDENTIFIED WITH 'mysql_old_password'; SET PASSWORD FOR 'bug13586336'@'localhost' = OLD_PASSWORD('a'); Warnings: +Warning 1287 'OLD_PASSWORD' is deprecated and will be removed in a future release. Please use PASSWORD instead Warning 1287 'pre-4.1 password hash' is deprecated and will be removed in a future release. Please use post-4.1 password hash instead Run mysql_upgrade with all privileges on a user Warning: Using a password on the command line interface can be insecure. @@ -404,5 +405,102 @@ mtr.global_suppressions OK mtr.test_suppressions OK DROP USER 'bug13586336'@'localhost'; +# +# Bug #20023823 BACKPORT THE FIX FOR MYSQL_INSTALL_DB/MYSQL_UPGRADE +# ON NON-EMPTY PLUGIN COLUMN +# +# Creating user with empty plugin and empty password +# plugin should be changed to mysql_native_password after the update +CREATE USER B20023823_empty@localhost; +GRANT ALL PRIVILEGES on *.* TO B20023823_empty@localhost; +update mysql.user set plugin='' WHERE user='B20023823_empty' + and host='localhost'; +flush privileges; +# Creating user with default plugin, i.e. mysql_native_password +# this plugin should not be changed during the upgrade +CREATE USER B20023823_def@localhost IDENTIFIED BY 'test'; +# Creating user with 41 bytes hash pass (default) and setting its plugin +# to empty string. Plugin should be set to mysql_native_password +# after the upgrade is finished +CREATE USER B20023823_41hash@localhost IDENTIFIED WITH mysql_native_password; +set session old_passwords=0; +set password for B20023823_41hash@localhost = password('test'); +update mysql.user set plugin='' WHERE user='B20023823_41hash' + and host='localhost'; +flush privileges; +# Creating user with 16 bytes hash pass and setting its plugin +# to empty string. Plugin should be set to mysql_old_password +# after the upgrade is finished +CREATE USER B20023823_16hash@localhost identified with mysql_old_password; +set session old_passwords=1; +set password for B20023823_16hash@localhost = password('test'); +Warnings: +Warning 1287 'pre-4.1 password hash' is deprecated and will be removed in a future release. Please use post-4.1 password hash instead +update mysql.user set plugin='' WHERE user='B20023823_16hash' + and host='localhost'; +flush privileges; +SELECT user, plugin from mysql.user; +user plugin +root mysql_native_password +root mysql_native_password +root mysql_native_password +root mysql_native_password +B20023823_empty +B20023823_def mysql_native_password +B20023823_41hash +B20023823_16hash +# repair the user's plugin +Warning: Using a password on the command line interface can be insecure. +Warning: Using a password on the command line interface can be insecure. +mysql.columns_priv OK +mysql.db OK +mysql.event OK +mysql.func OK +mysql.general_log OK +mysql.help_category OK +mysql.help_keyword OK +mysql.help_relation OK +mysql.help_topic OK +mysql.innodb_index_stats OK +mysql.innodb_table_stats OK +mysql.ndb_binlog_index OK +mysql.plugin OK +mysql.proc OK +mysql.procs_priv OK +mysql.proxies_priv OK +mysql.servers OK +mysql.slave_master_info OK +mysql.slave_relay_log_info OK +mysql.slave_worker_info OK +mysql.slow_log OK +mysql.tables_priv OK +mysql.time_zone OK +mysql.time_zone_leap_second OK +mysql.time_zone_name OK +mysql.time_zone_transition OK +mysql.time_zone_transition_type OK +mysql.user OK +Warning: Using a password on the command line interface can be insecure. +Warning 1642 Pre-4.1 password hash found. It is deprecated and will be removed in a future release. Please upgrade it to a new format. +Warning: Using a password on the command line interface can be insecure. +Warning: Using a password on the command line interface can be insecure. +mtr.global_suppressions OK +mtr.test_suppressions OK +# expect non-empty +SELECT user, plugin from mysql.user; +user plugin +root mysql_native_password +root mysql_native_password +root mysql_native_password +root mysql_native_password +B20023823_empty mysql_native_password +B20023823_def mysql_native_password +B20023823_41hash mysql_native_password +B20023823_16hash mysql_old_password +# cleanup +DROP USER B20023823_empty@localhost; +DROP USER B20023823_def@localhost; +DROP USER B20023823_41hash@localhost; +DROP USER B20023823_16hash@localhost; End of tests diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/openssl_1.result percona-xtrabackup-2.3.7/mysql-test/r/openssl_1.result --- percona-xtrabackup-2.2.3/mysql-test/r/openssl_1.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/openssl_1.result 2017-02-27 07:47:02.000000000 +0000 @@ -3,8 +3,8 @@ insert into t1 values (5); grant select on test.* to ssl_user1@localhost require SSL; grant select on test.* to ssl_user2@localhost require cipher "DHE-RSA-AES256-SHA"; -grant select on test.* to ssl_user3@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=SE/ST=Uppsala/O=MySQL AB"; -grant select on test.* to ssl_user4@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=SE/ST=Uppsala/O=MySQL AB" ISSUER "/C=SE/ST=Uppsala/L=Uppsala/O=MySQL AB"; +grant select on test.* to ssl_user3@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=SE/ST=Stockholm/L=Stockholm/O=Oracle/OU=MySQL/CN=Client"; +grant select on test.* to ssl_user4@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=SE/ST=Stockholm/L=Stockholm/O=Oracle/OU=MySQL/CN=Client" ISSUER "/C=SE/ST=Stockholm/L=Stockholm/O=Oracle/OU=MySQL/CN=CA"; grant select on test.* to ssl_user5@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "xxx"; flush privileges; connect(localhost,ssl_user5,,test,MASTER_PORT,MASTER_SOCKET); diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/outfile_loaddata.result percona-xtrabackup-2.3.7/mysql-test/r/outfile_loaddata.result --- percona-xtrabackup-2.2.3/mysql-test/r/outfile_loaddata.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/outfile_loaddata.result 2017-02-27 07:47:02.000000000 +0000 @@ -143,15 +143,16 @@ LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/t1.txt' INTO TABLE t2 CHARACTER SET binary FIELDS TERMINATED BY 'ÑŠ'; Warnings: Warning 1638 Non-ASCII separator arguments are not fully supported -Warning 1265 Data truncated for column 'a' at row 1 -Warning 1261 Row 1 doesn't contain data for all columns -Warning 1261 Row 1 doesn't contain data for all columns -Warning 1265 Data truncated for column 'a' at row 2 -Warning 1261 Row 2 doesn't contain data for all columns -Warning 1261 Row 2 doesn't contain data for all columns SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a, b, c; a b c -1 NULL NULL +1 ABC-ÐБВ DEF-ÂÃÄ +2 NULL NULL +SELECT * FROM t1; +a b c +1 ABC-ÐБВ DEF-ÂÃÄ +2 NULL NULL +SELECT * FROM t2; +a b c 1 ABC-ÐБВ DEF-ÂÃÄ 2 NULL NULL SELECT * FROM t1 INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/t1.txt' LINES STARTING BY 'ÑŠ'; @@ -181,7 +182,14 @@ SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a, b, c; a b c 1 ABC-ÐБВ DEF-ÂÃÄ -1 ABC-ÐБВ DEF-ÂÃÄÑŠ2 +2 NULL NULL +SELECT * FROM t1; +a b c +1 ABC-ÐБВ DEF-ÂÃÄ +2 NULL NULL +SELECT * FROM t2; +a b c +1 ABC-ÐБВ DEF-ÂÃÄ 2 NULL NULL # Default (binary) charset: SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/t1.txt' FROM t1; diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/partition_archive.result percona-xtrabackup-2.3.7/mysql-test/r/partition_archive.result --- percona-xtrabackup-2.2.3/mysql-test/r/partition_archive.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/partition_archive.result 2017-02-27 07:47:02.000000000 +0000 @@ -126,3 +126,29 @@ count(*) 100 drop table t1; +# +#BUG 18618561: FAILED ALTER TABLE ENGINE CHANGE WITH PARTITIONS +# CORRUPTS FRM +CREATE TABLE t1 (fld1 INT PRIMARY KEY) ENGINE= MYISAM PARTITION BY HASH(fld1) +PARTITIONS 5; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `fld1` int(11) NOT NULL, + PRIMARY KEY (`fld1`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +/*!50100 PARTITION BY HASH (fld1) +PARTITIONS 5 */ +ALTER TABLE t1 ENGINE= ARCHIVE; +ERROR HY000: Got error -1 from storage engine +#After the patch, the ENGINE is correctly displayed as MyISAM +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `fld1` int(11) NOT NULL, + PRIMARY KEY (`fld1`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +/*!50100 PARTITION BY HASH (fld1) +PARTITIONS 5 */ +#Cleanup. +DROP TABLE t1; diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/partition_index_myisam.result percona-xtrabackup-2.3.7/mysql-test/r/partition_index_myisam.result --- percona-xtrabackup-2.2.3/mysql-test/r/partition_index_myisam.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/partition_index_myisam.result 2017-02-27 07:47:02.000000000 +0000 @@ -1,3 +1,6 @@ +# +# Bug#18167648: WRONG RESULTS WITH PARTITIONING, INDEX_MERGE AND NO PK +# CREATE TABLE t1 ( a smallint, b smallint, diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/partition_innodb.result percona-xtrabackup-2.3.7/mysql-test/r/partition_innodb.result --- percona-xtrabackup-2.2.3/mysql-test/r/partition_innodb.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/partition_innodb.result 2017-02-27 07:47:02.000000000 +0000 @@ -612,3 +612,149 @@ ERROR HY000: Table storage engine for 't1' doesn't have this option DROP TABLE t1; USE test; +# +# Bug#13737949: CRASH IN HA_PARTITION::INDEX_INIT +# Bug#18694052: SERVER CRASH IN HA_PARTITION::INIT_RECORD_PRIORITY_QUEUE +# +CREATE TABLE t1 +(a INT, +b INT, +PRIMARY KEY (a)) +ENGINE = InnoDB +PARTITION BY HASH (a) PARTITIONS 3; +START TRANSACTION WITH CONSISTENT SNAPSHOT; +# con1 +ALTER TABLE t1 ADD INDEX idx1 (b); +# con default +SELECT b FROM t1 WHERE b = 0; +ERROR HY000: Table definition has changed, please retry transaction +SELECT b FROM t1 WHERE b = 0; +ERROR HY000: Table definition has changed, please retry transaction +DROP TABLE t1; +# Same test without partitioning +CREATE TABLE t1 +(a INT, +b INT, +PRIMARY KEY (a)) +ENGINE = InnoDB; +START TRANSACTION WITH CONSISTENT SNAPSHOT; +# con1 +ALTER TABLE t1 ADD INDEX idx1 (b); +# con default +SELECT b FROM t1 WHERE b = 0; +ERROR HY000: Table definition has changed, please retry transaction +SELECT b FROM t1 WHERE b = 0; +ERROR HY000: Table definition has changed, please retry transaction +DROP TABLE t1; +Bug 17896265 PARTITIONED TABLE HAS MISPLACED ROWS, AFTER INPLACE ALTER +CREATE TABLE t1 ( +f1 INT(11) NOT NULL, +f2 INT(11) NOT NULL +) +ENGINE=InnoDB +PARTITION BY KEY (f1,f2) PARTITIONS 2; +INSERT INTO t1 VALUES (9585,5); +ALTER TABLE t1 CHANGE f1 f1 INT AFTER f2, ALGORITHM=INPLACE; +ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY. +CREATE TABLE t2 ( +f1 INT(11) NOT NULL, +f2 INT(11) NOT NULL, +f3 INT(11) NOT NULL, +f4 INT(11) NOT NULL +) +ENGINE=InnoDB +PARTITION BY KEY (f2,f3) PARTITIONS 2; +INSERT INTO t2 VALUES (10,9585,5,20); +ALTER TABLE t2 CHANGE f3 f3 INT AFTER f4, ALGORITHM=INPLACE; +CHECK TABLE t2; +Table Op Msg_type Msg_text +test.t2 check status OK +ALTER TABLE t2 CHANGE f3 f3 INT AFTER f1, ALGORITHM=INPLACE; +ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY. +ALTER TABLE t2 CHANGE f4 f4 INT AFTER f3, ALGORITHM=INPLACE; +CHECK TABLE t2; +Table Op Msg_type Msg_text +test.t2 check status OK +ALTER TABLE t2 CHANGE f1 f1 INT AFTER f4, ALGORITHM=INPLACE; +CHECK TABLE t2; +Table Op Msg_type Msg_text +test.t2 check status OK +ALTER TABLE t2 CHANGE f1 f1 INT AFTER f2, ALGORITHM=INPLACE; +CHECK TABLE t2; +Table Op Msg_type Msg_text +test.t2 check status OK +ALTER TABLE t2 CHANGE f2 f2 INT AFTER f4, ALGORITHM=INPLACE; +ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY. +CREATE TABLE t3 (f1 INT,f2 INT) ENGINE=INNODB +PARTITION BY RANGE(f1) ( +PARTITION p0 VALUES LESS THAN (100), +PARTITION p1 VALUES LESS THAN (200), +PARTITION p2 VALUES LESS THAN (600), +PARTITION p3 VALUES LESS THAN MAXVALUE +); +insert into t3 values (90,120); +insert into t3 values (120,300); +ALTER TABLE t3 CHANGE f1 f1 int AFTER f2, ALGORITHM=INPLACE; +CHECK TABLE t3; +Table Op Msg_type Msg_text +test.t3 check status OK +CREATE TABLE t4 ( +f1 INT(11) NOT NULL, +f2 INT(11) NOT NULL +) +ENGINE=InnoDB +PARTITION BY HASH (MOD(f1,f2)) PARTITIONS 2; +INSERT INTO t4 VALUES (9585,5); +ALTER TABLE t4 CHANGE f1 f1 INT AFTER f2, ALGORITHM=INPLACE; +CHECK TABLE t4; +Table Op Msg_type Msg_text +test.t4 check status OK +CREATE TABLE t5 ( +f1 INT, +f2 INT +) +ENGINE=InnoDB +PARTITION BY RANGE COLUMNS(f1,f2) ( +PARTITION p0 VALUES LESS THAN (10000,12), +PARTITION p1 VALUES LESS THAN (MAXVALUE, MAXVALUE) +); +INSERT INTO t5 VALUES (1,20000); +ALTER TABLE t5 CHANGE f1 f1 INT AFTER f2, ALGORITHM=INPLACE; +CHECK TABLE t5; +Table Op Msg_type Msg_text +test.t5 check status OK +CREATE TABLE t6 ( +a INT, +b INT +) +ENGINE=InnoDB +PARTITION BY RANGE COLUMNS(a,b) +SUBPARTITION BY KEY(a,b) +SUBPARTITIONS 2 ( +PARTITION p0 VALUES LESS THAN (10000,12), +PARTITION p1 VALUES LESS THAN (MAXVALUE, MAXVALUE) +); +INSERT INTO t6 VALUES (9585,5); +ALTER TABLE t6 CHANGE a a INT AFTER b, ALGORITHM=INPLACE; +ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY. +CREATE TABLE t7 ( +f1 INT(11) NOT NULL, +f2 INT(11) NOT NULL, +f3 INT(11) NOT NULL, +f4 INT(11) NOT NULL, +f5 INT(11) NOT NULL +) +ENGINE=InnoDB +PARTITION BY KEY (f1,f5) PARTITIONS 2; +INSERT INTO t7 VALUES (9585,10,20,10,5); +ALTER TABLE t7 CHANGE f5 f5 INT AFTER f3, ALGORITHM=INPLACE; +CHECK TABLE t7; +Table Op Msg_type Msg_text +test.t7 check status OK +ALTER TABLE t7 CHANGE f5 f5 INT AFTER f2, ALGORITHM=INPLACE; +CHECK TABLE t7; +Table Op Msg_type Msg_text +test.t7 check status OK +ALTER TABLE t7 CHANGE f1 f1 INT AFTER f4, ALGORITHM=INPLACE; +ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY. +DROP TABLE t1,t2,t3,t4,t5,t6,t7; diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/partition_pruning.result percona-xtrabackup-2.3.7/mysql-test/r/partition_pruning.result --- percona-xtrabackup-2.2.3/mysql-test/r/partition_pruning.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/partition_pruning.result 2017-02-27 07:47:02.000000000 +0000 @@ -3534,3 +3534,117 @@ id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 p0,p1,p2 ALL NULL NULL NULL NULL 100 Using where drop table t0, t1; +# +# Bug#71095: Wrong results with PARTITION BY LIST COLUMNS() +# +CREATE TABLE t1 +(c1 int, +c2 int, +c3 int, +c4 int, +PRIMARY KEY (c1,c2)) +PARTITION BY LIST COLUMNS (c2) +(PARTITION p1 VALUES IN (1,2), +PARTITION p2 VALUES IN (3,4)); +INSERT INTO t1 VALUES (1, 1, 1, 1), (2, 3, 1, 1); +INSERT INTO t1 VALUES (1, 2, 1, 1), (2, 4, 1, 1); +SELECT * FROM t1 WHERE c1 = 1 AND c2 < 1; +c1 c2 c3 c4 +SELECT * FROM t1 WHERE c1 = 1 AND c2 <= 1; +c1 c2 c3 c4 +1 1 1 1 +SELECT * FROM t1 WHERE c1 = 1 AND c2 = 1; +c1 c2 c3 c4 +1 1 1 1 +SELECT * FROM t1 WHERE c1 = 1 AND c2 >= 1; +c1 c2 c3 c4 +1 1 1 1 +1 2 1 1 +SELECT * FROM t1 WHERE c1 = 1 AND c2 > 1; +c1 c2 c3 c4 +1 2 1 1 +SELECT * FROM t1 WHERE c1 = 1 AND c2 < 3; +c1 c2 c3 c4 +1 1 1 1 +1 2 1 1 +SELECT * FROM t1 WHERE c1 = 1 AND c2 <= 3; +c1 c2 c3 c4 +1 1 1 1 +1 2 1 1 +SELECT * FROM t1 WHERE c1 = 2 AND c2 <= 3; +c1 c2 c3 c4 +2 3 1 1 +SELECT * FROM t1 WHERE c1 = 2 AND c2 = 3; +c1 c2 c3 c4 +2 3 1 1 +SELECT * FROM t1 WHERE c1 = 2 AND c2 >= 3; +c1 c2 c3 c4 +2 3 1 1 +2 4 1 1 +SELECT * FROM t1 WHERE c1 = 2 AND c2 > 3; +c1 c2 c3 c4 +2 4 1 1 +SELECT * FROM t1 WHERE c1 = 2 AND c2 < 4; +c1 c2 c3 c4 +2 3 1 1 +SELECT * FROM t1 WHERE c1 = 2 AND c2 <= 4; +c1 c2 c3 c4 +2 3 1 1 +2 4 1 1 +SELECT * FROM t1 WHERE c1 = 2 AND c2 = 4; +c1 c2 c3 c4 +2 4 1 1 +SELECT * FROM t1 WHERE c1 = 2 AND c2 >= 4; +c1 c2 c3 c4 +2 4 1 1 +SELECT * FROM t1 WHERE c1 = 2 AND c2 > 4; +c1 c2 c3 c4 +EXPLAIN PARTITIONS SELECT * FROM t1 WHERE c1 = 1 AND c2 < 1; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables +EXPLAIN PARTITIONS SELECT * FROM t1 WHERE c1 = 1 AND c2 <= 1; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t1 p1 range PRIMARY PRIMARY 8 NULL 1 Using where +EXPLAIN PARTITIONS SELECT * FROM t1 WHERE c1 = 1 AND c2 = 1; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t1 p1 const PRIMARY PRIMARY 8 const,const 1 NULL +EXPLAIN PARTITIONS SELECT * FROM t1 WHERE c1 = 1 AND c2 >= 1; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t1 p1,p2 range PRIMARY PRIMARY 8 NULL 2 Using where +EXPLAIN PARTITIONS SELECT * FROM t1 WHERE c1 = 1 AND c2 > 1; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t1 p1,p2 range PRIMARY PRIMARY 8 NULL 2 Using where +EXPLAIN PARTITIONS SELECT * FROM t1 WHERE c1 = 1 AND c2 < 3; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t1 p1 range PRIMARY PRIMARY 8 NULL 1 Using where +EXPLAIN PARTITIONS SELECT * FROM t1 WHERE c1 = 1 AND c2 <= 3; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t1 p1,p2 range PRIMARY PRIMARY 8 NULL 2 Using where +EXPLAIN PARTITIONS SELECT * FROM t1 WHERE c1 = 2 AND c2 <= 3; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t1 p1,p2 range PRIMARY PRIMARY 8 NULL 2 Using where +EXPLAIN PARTITIONS SELECT * FROM t1 WHERE c1 = 2 AND c2 = 3; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t1 p2 const PRIMARY PRIMARY 8 const,const 1 NULL +EXPLAIN PARTITIONS SELECT * FROM t1 WHERE c1 = 2 AND c2 >= 3; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t1 p2 range PRIMARY PRIMARY 8 NULL 1 Using where +EXPLAIN PARTITIONS SELECT * FROM t1 WHERE c1 = 2 AND c2 > 3; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t1 p2 range PRIMARY PRIMARY 8 NULL 1 Using where +EXPLAIN PARTITIONS SELECT * FROM t1 WHERE c1 = 2 AND c2 < 4; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t1 p1,p2 range PRIMARY PRIMARY 8 NULL 2 Using where +EXPLAIN PARTITIONS SELECT * FROM t1 WHERE c1 = 2 AND c2 <= 4; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t1 p1,p2 range PRIMARY PRIMARY 8 NULL 2 Using where +EXPLAIN PARTITIONS SELECT * FROM t1 WHERE c1 = 2 AND c2 = 4; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t1 p2 const PRIMARY PRIMARY 8 const,const 1 NULL +EXPLAIN PARTITIONS SELECT * FROM t1 WHERE c1 = 2 AND c2 >= 4; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t1 p2 range PRIMARY PRIMARY 8 NULL 1 Using where +EXPLAIN PARTITIONS SELECT * FROM t1 WHERE c1 = 2 AND c2 > 4; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables +DROP TABLE t1; diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/plugin_auth_qa_3.result percona-xtrabackup-2.3.7/mysql-test/r/plugin_auth_qa_3.result --- percona-xtrabackup-2.2.3/mysql-test/r/plugin_auth_qa_3.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/plugin_auth_qa_3.result 2017-02-27 07:47:02.000000000 +0000 @@ -8,6 +8,6 @@ qa_test_11_dest@% qa_test_11_user@localhost 'qa_test_11_user'@'%' 'qa_test_11_user'@'%' exec MYSQL PLUGIN_AUTH_OPT --default_auth=qa_auth_client -h localhost -P MASTER_MYPORT -u qa_test_2_user --password=qa_test_11_dest test_user_db -e "SELECT current_user(),user(),@@local.proxy_user,@@local.external_user;" 2>&1 Warning: Using a password on the command line interface can be insecure. -ERROR 1045 (28000): Access denied for user 'qa_test_2_user'@'localhost' (using password: NO) +ERROR 1045 (28000): Access denied for user 'qa_test_2_user'@'localhost' (using password: YES) DROP USER qa_test_11_user, qa_test_11_dest; DROP DATABASE test_user_db; diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/plugin_auth.result percona-xtrabackup-2.3.7/mysql-test/r/plugin_auth.result --- percona-xtrabackup-2.2.3/mysql-test/r/plugin_auth.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/plugin_auth.result 2017-02-27 07:47:02.000000000 +0000 @@ -549,3 +549,25 @@ DROP USER bug12818542@localhost; DROP USER bug12818542_dest@localhost; End of 5.5 tests +# +# Bug #18057562: PROXY USERS LOCKED OUT WHEN UNDERLYING PROXIED USER +# PASSWORD IS EXPIRED +# +# Restart server with disconnect_on_expired_password OFF; +CREATE USER 'empl_external'@'localhost' IDENTIFIED WITH test_plugin_server AS 'employee'; +CREATE USER 'employee'@'localhost' IDENTIFIED BY 'passkey'; +GRANT PROXY ON 'employee'@'localhost' TO 'empl_external'@'localhost'; +# Expiring the proxied user's password +ALTER USER employee@localhost PASSWORD EXPIRE; +# Connecting with the proxied user and executing a query after the +# proxied user's password is expired +Warning: Using a password on the command line interface can be insecure. +ERROR 1820 (HY000) at line 1: You must SET PASSWORD before executing this statement +# Connecting with the proxy user and executing a query after the proxied +# user's password is expired. Here we are not supposed to get error. +Warning: Using a password on the command line interface can be insecure. +current_user() +employee@localhost +user() +empl_external@localhost +DROP USER 'empl_external'@'localhost', 'employee'@'localhost'; diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/plugin_auth_sha256_2.result percona-xtrabackup-2.3.7/mysql-test/r/plugin_auth_sha256_2.result --- percona-xtrabackup-2.2.3/mysql-test/r/plugin_auth_sha256_2.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/plugin_auth_sha256_2.result 2017-02-27 07:47:02.000000000 +0000 @@ -1,10 +1,10 @@ CREATE USER 'kristofer' IDENTIFIED BY 'secret'; SELECT user, plugin FROM mysql.user; user plugin -root -root -root -root +root mysql_native_password +root mysql_native_password +root mysql_native_password +root mysql_native_password kristofer sha256_password user() current_user() kristofer@localhost kristofer@% @@ -33,7 +33,7 @@ kristofer@localhost kristofer@localhost SHOW GRANTS FOR 'kristofer'@'localhost'; Grants for kristofer@localhost -GRANT ALL PRIVILEGES ON *.* TO 'kristofer'@'localhost' IDENTIFIED BY PASSWORD '' +GRANT ALL PRIVILEGES ON *.* TO 'kristofer'@'localhost' DROP USER 'kristofer'@'localhost'; GRANT ALL ON *.* TO 'kristofer'@'33.33.33.33' IDENTIFIED BY ''; Connection should fail for localhost diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/plugin_auth_sha256.result percona-xtrabackup-2.3.7/mysql-test/r/plugin_auth_sha256.result --- percona-xtrabackup-2.2.3/mysql-test/r/plugin_auth_sha256.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/plugin_auth_sha256.result 2017-02-27 07:47:02.000000000 +0000 @@ -4,10 +4,10 @@ SET PASSWORD FOR 'kristofer'=PASSWORD('secret'); SELECT user, plugin FROM mysql.user; user plugin -root -root -root -root +root mysql_native_password +root mysql_native_password +root mysql_native_password +root mysql_native_password kristofer sha256_password SELECT USER(),CURRENT_USER(); USER() CURRENT_USER() @@ -47,7 +47,7 @@ kristofer@localhost kristofer@localhost SHOW GRANTS FOR 'kristofer'@'localhost'; Grants for kristofer@localhost -GRANT ALL PRIVILEGES ON *.* TO 'kristofer'@'localhost' IDENTIFIED BY PASSWORD '' +GRANT ALL PRIVILEGES ON *.* TO 'kristofer'@'localhost' DROP USER 'kristofer'@'localhost'; GRANT ALL ON *.* TO 'kristofer'@'33.33.33.33' IDENTIFIED WITH 'sha256_password'; SET PASSWORD FOR 'kristofer'@'33.33.33.33'=PASSWORD(''); @@ -79,10 +79,10 @@ SET PASSWORD FOR 'kristofer'=PASSWORD('secret'); SELECT user, plugin FROM mysql.user; user plugin -root -root -root -root +root mysql_native_password +root mysql_native_password +root mysql_native_password +root mysql_native_password kristofer sha256_password SELECT USER(),CURRENT_USER(); USER() CURRENT_USER() diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/plugin_auth_sha256_server_default.result percona-xtrabackup-2.3.7/mysql-test/r/plugin_auth_sha256_server_default.result --- percona-xtrabackup-2.2.3/mysql-test/r/plugin_auth_sha256_server_default.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/plugin_auth_sha256_server_default.result 2017-02-27 07:47:02.000000000 +0000 @@ -3,10 +3,10 @@ SET PASSWORD FOR 'kristofer'=PASSWORD('secret'); SELECT user, plugin FROM mysql.user; user plugin -root -root -root -root +root mysql_native_password +root mysql_native_password +root mysql_native_password +root mysql_native_password kristofer sha256_password SELECT USER(),CURRENT_USER(); USER() CURRENT_USER() @@ -44,7 +44,7 @@ kristofer@localhost kristofer@localhost SHOW GRANTS FOR 'kristofer'@'localhost'; Grants for kristofer@localhost -GRANT ALL PRIVILEGES ON *.* TO 'kristofer'@'localhost' IDENTIFIED BY PASSWORD '' +GRANT ALL PRIVILEGES ON *.* TO 'kristofer'@'localhost' DROP USER 'kristofer'@'localhost'; GRANT ALL ON *.* TO 'kristofer'@'33.33.33.33'; SET PASSWORD FOR 'kristofer'@'33.33.33.33'=PASSWORD(''); diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/plugin_auth_sha256_server_default_tls.result percona-xtrabackup-2.3.7/mysql-test/r/plugin_auth_sha256_server_default_tls.result --- percona-xtrabackup-2.2.3/mysql-test/r/plugin_auth_sha256_server_default_tls.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/plugin_auth_sha256_server_default_tls.result 2017-02-27 07:47:02.000000000 +0000 @@ -3,10 +3,10 @@ SET PASSWORD FOR 'kristofer'=PASSWORD('secret'); SELECT user, plugin FROM mysql.user; user plugin -root -root -root -root +root mysql_native_password +root mysql_native_password +root mysql_native_password +root mysql_native_password kristofer sha256_password SELECT USER(),CURRENT_USER(); USER() CURRENT_USER() @@ -44,7 +44,7 @@ kristofer@localhost kristofer@localhost SHOW GRANTS FOR 'kristofer'@'localhost'; Grants for kristofer@localhost -GRANT ALL PRIVILEGES ON *.* TO 'kristofer'@'localhost' IDENTIFIED BY PASSWORD '' +GRANT ALL PRIVILEGES ON *.* TO 'kristofer'@'localhost' DROP USER 'kristofer'@'localhost'; GRANT ALL ON *.* TO 'kristofer'@'33.33.33.33'; SET PASSWORD FOR 'kristofer'@'33.33.33.33'=PASSWORD(''); diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/plugin_auth_sha256_tls.result percona-xtrabackup-2.3.7/mysql-test/r/plugin_auth_sha256_tls.result --- percona-xtrabackup-2.2.3/mysql-test/r/plugin_auth_sha256_tls.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/plugin_auth_sha256_tls.result 2017-02-27 07:47:02.000000000 +0000 @@ -22,7 +22,7 @@ kristofer@localhost kristofer@localhost SHOW GRANTS FOR 'kristofer'@'localhost'; Grants for kristofer@localhost -GRANT ALL PRIVILEGES ON *.* TO 'kristofer'@'localhost' IDENTIFIED BY PASSWORD '' +GRANT ALL PRIVILEGES ON *.* TO 'kristofer'@'localhost' DROP USER 'kristofer'@'localhost'; GRANT ALL ON *.* TO 'kristofer'@'33.33.33.33' IDENTIFIED WITH 'sha256_password'; SET PASSWORD FOR 'kristofer'@'33.33.33.33'=PASSWORD(''); diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/plugin.result percona-xtrabackup-2.3.7/mysql-test/r/plugin.result --- percona-xtrabackup-2.2.3/mysql-test/r/plugin.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/plugin.result 2017-02-27 07:47:02.000000000 +0000 @@ -162,3 +162,73 @@ @@SESSION.example_double_thdvar 1000.500000 UNINSTALL PLUGIN example; +# +# BUG#18008907 - DEADLOCK BETWEEN MYSQL_CHANGE_USER(), SHOW VARIABLES AND INSTALL PLUGIN +# +CREATE PROCEDURE p_install() +BEGIN +INSTALL PLUGIN no_such_plugin SONAME 'no_such_object'; +END +| +CREATE PROCEDURE p_show_vars() +BEGIN +SELECT COUNT(*) FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES; +END| +connect con1, localhost, root,,; +# Case 18008907_1: Deadlock situation cause by +# con1: has LOCK_system_variables_hash and waits on LOCK_plugin AND +# default: has LOCK_plugin and waits on LOCK_system_variables_hash. +# +SET DEBUG_SYNC='acquired_LOCK_system_variables_hash SIGNAL install_plugin WAIT_FOR cont_show_vars'; +call p_show_vars();; +connection default; +SET DEBUG_SYNC='now WAIT_FOR install_plugin'; +SET DEBUG_SYNC='acquired_LOCK_plugin SIGNAL cont_show_vars'; +call p_install();; +connection con1; +COUNT(*) +# +SET DEBUG_SYNC='RESET'; +connection default; +ERROR HY000: Can't open shared library +SET DEBUG_SYNC='RESET'; +# Case 18008907_2: Deadlock situation caused by +# default: has LOCK_system_variables_hash and waits on LOCK_global_system_variables, +# con1: has LOCK_plugin and waits on LOCK_system_variables_hash AND +# con2: has LOCK_global_system_variables and waits on LOCK_plugin. +SET DEBUG_SYNC='acquired_LOCK_system_variables_hash SIGNAL install_plugin WAIT_FOR nothing TIMEOUT 10'; +call p_show_vars();; +connection con1; +SET DEBUG_SYNC='now WAIT_FOR install_plugin'; +SET DEBUG_SYNC='acquired_LOCK_plugin SIGNAL create_connection WAIT_FOR nothing TIMEOUT 10'; +call p_install();; +connect con2, localhost, root,,; +SET DEBUG_SYNC='now WAIT_FOR create_connection'; +connection con1; +ERROR HY000: Can't open shared library +connection default; +COUNT(*) +# +Warnings: +# 1639 debug sync point wait timed out +disconnect con2; +# Case 18008907_3: Testing Concurrent "Show Variables" and "Plugin Uninstall" operations. +INSTALL PLUGIN example SONAME 'ha_example.so'; +connection con1; +SET DEBUG_SYNC='acquired_LOCK_system_variables_hash SIGNAL uninstall_plugin WAIT_FOR go'; +call p_show_vars();; +connect con2, localhost, root,,; +SET DEBUG_SYNC='now WAIT_FOR uninstall_plugin'; +UNINSTALL PLUGIN example;; +connection default; +SET DEBUG_SYNC='now SIGNAL go'; +connection con1; +COUNT(*) +# +connection con2; +connection default; +DROP PROCEDURE p_show_vars; +DROP PROCEDURE p_install; +SET DEBUG_SYNC='RESET'; +disconnect con1; +disconnect con2; diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/ps_grant.result percona-xtrabackup-2.3.7/mysql-test/r/ps_grant.result --- percona-xtrabackup-2.2.3/mysql-test/r/ps_grant.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/ps_grant.result 2017-02-27 07:47:02.000000000 +0000 @@ -18,7 +18,7 @@ second_user@localhost show grants for current_user(); Grants for second_user@localhost -GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3' +GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost' prepare s_t9 from 'select c1 as my_col from t9 where c1= 1' ; @@ -42,7 +42,7 @@ GRANT SELECT ON `mysqltest`.`t1` TO 'second_user'@'localhost' show grants for second_user@localhost ; Grants for second_user@localhost -GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3' +GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost' GRANT SELECT ON `mysqltest`.`t1` TO 'second_user'@'localhost' prepare s_t1 from 'select a as my_col from t1' ; @@ -62,7 +62,7 @@ GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost' show grants for second_user@localhost ; Grants for second_user@localhost -GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3' +GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost' execute s_t1 ; ERROR 42000: SELECT command denied to user 'second_user'@'localhost' for table 't1' diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/query_cache.result percona-xtrabackup-2.3.7/mysql-test/r/query_cache.result --- percona-xtrabackup-2.2.3/mysql-test/r/query_cache.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/query_cache.result 2017-02-27 07:47:02.000000000 +0000 @@ -1810,3 +1810,59 @@ DROP TABLE t1; SET GLOBAL query_cache_size= @qc; # +#BUG 18710853: QUERY CACHE NOT INVALIDATED ON CASCADE DELETE IF DB NAME HAS +# SPECIAL SYMBOLS +SET @query_cache_size.saved = @@query_cache_size; +SET GLOBAL query_cache_size = 1024*1024; +CREATE DATABASE `db-db`; +CREATE TABLE `db-db`.`t$1` (fld1 INT PRIMARY KEY) ENGINE=InnoDB; +CREATE TABLE `db-db`.`t$2` (fld1 INT PRIMARY KEY, fld2 INT, +CONSTRAINT t2_fk FOREIGN KEY (fld2) REFERENCES `db-db`.`t$1` (fld1) ON +DELETE CASCADE) ENGINE=InnoDB; +CREATE TABLE `db-db`.`t$3` (fld1 INT PRIMARY KEY, fld2 INT, +CONSTRAINT t3_fk FOREIGN KEY (fld2) REFERENCES `db-db`.`t$1` (fld1) ON +UPDATE CASCADE) ENGINE=InnoDB; +INSERT INTO `db-db`.`t$1` VALUES (100); +INSERT INTO `db-db`.`t$1` VALUES (300); +INSERT INTO `db-db`.`t$2` VALUES (1, 100); +INSERT INTO `db-db`.`t$3` VALUES (2, 300); +SELECT * FROM `db-db`.`t$2`; +fld1 fld2 +1 100 +SELECT * FROM `db-db`.`t$3`; +fld1 fld2 +2 300 +DELETE FROM `db-db`.`t$1` WHERE fld1= 100; +UPDATE `db-db`.`t$1` SET fld1= 200 WHERE fld1= 300; +#After fix the number of the records returned with the +#query cache and without the query cache are the same. +SELECT * FROM `db-db`.`t$2`; +fld1 fld2 +SELECT SQL_NO_CACHE * FROM `db-db`.`t$2`; +fld1 fld2 +SELECT * FROM `db-db`.`t$3`; +fld1 fld2 +2 200 +SELECT SQL_NO_CACHE * FROM `db-db`.`t$3`; +fld1 fld2 +2 200 +#Test case added for code coverage, invalidation +#triggered at the SQL layer. +CREATE TABLE `db-db`.`t$4` (fld1 INT PRIMARY KEY) ENGINE=InnoDB; +INSERT INTO `db-db`.`t$4` VALUES (100); +SELECT * FROM `db-db`.`t$4`; +fld1 +100 +INSERT INTO `db-db`.`t$4` VALUES (200); +SELECT * FROM `db-db`.`t$4`; +fld1 +100 +200 +SELECT SQL_NO_CACHE * FROM `db-db`.`t$4`; +fld1 +100 +200 +#cleanup +DROP DATABASE `db-db`; +SET GLOBAL query_cache_size = @query_cache_size.saved; +# diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/rewrite_general_log.result percona-xtrabackup-2.3.7/mysql-test/r/rewrite_general_log.result --- percona-xtrabackup-2.2.3/mysql-test/r/rewrite_general_log.result 2014-07-22 17:13:52.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/rewrite_general_log.result 2017-02-27 07:47:02.000000000 +0000 @@ -101,8 +101,36 @@ 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used Warnings: Note 1003 /* select#1 */ select ((@`a`) = 5) AS `@a=5`,(@b:=10) AS `@b:=10`,(@c:=20) AS `@c:=20`,(@d:=(40 + 5)) AS `@d:=40+5`,((@e:=80) + 5) AS `(@e:=80)+5` +# +# Bug#16953758: PREPARED STATEMENT IS WRITTEN TO GENERAL QUERY LOG AFTER ITS EXECUTION IS FINISH +# +TRUNCATE TABLE mysql.general_log; +SET GLOBAL general_log='ON'; +SET @sql='SELECT command_type, argument FROM mysql.general_log WHERE argument LIKE "%Bug#16953758%"'; +PREPARE stmt FROM @sql; +EXECUTE stmt; +command_type argument +Query SET @sql='SELECT command_type, argument FROM mysql.general_log WHERE argument LIKE "%Bug#16953758%"' +Prepare SELECT command_type, argument FROM mysql.general_log WHERE argument LIKE "%Bug#16953758%" +Execute SELECT command_type, argument FROM mysql.general_log WHERE argument LIKE "%Bug#16953758%" +DEALLOCATE PREPARE stmt; +# +# Bug#18616826: PREPARED STATEMENTS WHOSE EXECUTION FAIL ARE NOT LOGGED TO THE GENERAL LOG +# +TRUNCATE TABLE mysql.general_log; +SET @sql='DROP TABLE 18616826_does_not_exist'; +PREPARE stmt FROM @sql; +EXECUTE stmt; +ERROR 42S02: Unknown table 'test.18616826_does_not_exist' +DEALLOCATE PREPARE stmt; +SELECT command_type, argument FROM mysql.general_log WHERE argument LIKE "DROP TABLE 18616826_does_not_exist"; +command_type argument +Prepare DROP TABLE 18616826_does_not_exist +Execute DROP TABLE 18616826_does_not_exist DROP TABLE test_log; SET GLOBAL general_log_file= @old_general_log_file; SET GLOBAL general_log= @old_general_log; SET GLOBAL log_output= @old_log_output; + End of 5.6 tests! + diff -Nru percona-xtrabackup-2.2.3/mysql-test/r/show_processlist.result percona-xtrabackup-2.3.7/mysql-test/r/show_processlist.result --- percona-xtrabackup-2.2.3/mysql-test/r/show_processlist.result 1970-01-01 00:00:00.000000000 +0000 +++ percona-xtrabackup-2.3.7/mysql-test/r/show_processlist.result 2017-02-27 07:47:02.000000000 +0000 @@ -0,0 +1,47 @@ +Bug#17283409 4-WAY DEADLOCK: ZOMBIES, PURGING BINLOGS, SHOW PROCESSLIST, +SHOW BINLOGS +connect connection1,localhost,root,,test,$MASTER_MYPORT,; +connection default; +SET DEBUG_SYNC='before_copying_threads SIGNAL parked1 WAIT_FOR go'; +SHOW PROCESSLIST; +connection connection1; +"Wait_for parked1" +SET DEBUG_SYNC='now WAIT_FOR parked1'; +connect connection2,localhost,root,,test,$MASTER_MYPORT,; +connect connection3,localhost,root,,test,$MASTER_MYPORT,; +SET DEBUG_SYNC='now SIGNAL go'; +connection default; +Id User Host db Command Time State Info + root test