From 8c598f607f75f82803bc74eea258a0fa553caffc Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 13 Nov 2006 13:39:49 +0100 Subject: [PATCH] Make it possible for .test suites to run "mysql_upgrade" Add new test file mysql_upgrade.test BitKeeper/deleted/.del-abi_check.ic: Rename: include/abi_check.ic -> BitKeeper/deleted/.del-abi_check.ic client/mysql_upgrade.c: Make mysql_upgrade search also in "client" dir so it can be run from a source dist. mysql-test/mysql-test-run.pl: Make it possible for .test scripts to run "mysql_upgrade" mysql-test/r/mysql_upgrade.result: New BitKeeper file ``mysql-test/r/mysql_upgrade.result'' mysql-test/t/mysql_upgrade.test: New BitKeeper file ``mysql-test/t/mysql_upgrade.test'' --- client/mysql_upgrade.c | 4 +- include/abi_check.ic | 914 ------------------------------ mysql-test/mysql-test-run.pl | 54 +- mysql-test/r/mysql_upgrade.result | 127 +++++ mysql-test/t/mysql_upgrade.test | 20 + 5 files changed, 198 insertions(+), 921 deletions(-) delete mode 100644 include/abi_check.ic create mode 100644 mysql-test/r/mysql_upgrade.result create mode 100644 mysql-test/t/mysql_upgrade.test diff --git a/client/mysql_upgrade.c b/client/mysql_upgrade.c index b8344606448..deeeb47851d 100644 --- a/client/mysql_upgrade.c +++ b/client/mysql_upgrade.c @@ -546,7 +546,7 @@ int main(int argc, char **argv) } if (find_file(mysqlcheck_name, basedir, MYF(0), path, sizeof(path), - "bin", NullS)) + "bin", "client", NullS)) { ret= 1; printf("Can't find program '%s'\n", mysqlcheck_name); @@ -583,7 +583,7 @@ int main(int argc, char **argv) fix_priv_tables: if (find_file(mysql_name, basedir, MYF(0), path, sizeof(path), - "bin", NullS)) + "bin", "client", NullS)) { ret= 1; puts("Could not find MySQL command-line client (mysql).\n" diff --git a/include/abi_check.ic b/include/abi_check.ic deleted file mode 100644 index 30ef44a1ccb..00000000000 --- a/include/abi_check.ic +++ /dev/null @@ -1,914 +0,0 @@ -struct rand_struct; -struct st_list; -struct st_mem_root; -struct st_mysql; -struct st_mysql_bind; -struct st_mysql_data; -struct st_mysql_field; -struct st_mysql_manager; -struct st_mysql_methods; -struct st_mysql_options; -struct st_mysql_parameters; -struct st_mysql_res; -struct st_mysql_rows; -struct st_mysql_stmt; -struct st_mysql_time; -struct st_net; -struct st_typelib; -struct st_udf_args; -struct st_udf_init; -struct st_used_mem; -enum Item_result; -enum enum_field_types; -enum enum_mysql_set_option; -enum enum_mysql_stmt_state; -enum enum_mysql_timestamp_type; -enum enum_server_command; -enum enum_stmt_attr_type; -enum mysql_enum_shutdown_level; -enum mysql_option; -enum mysql_protocol_type; -enum mysql_rpl_type; -enum mysql_status; -# 131 "mysql.h" -typedef struct st_mysql_rows MYSQL_ROWS; -# 24 "my_list.h" -typedef struct st_list LIST; -# 232 "mysql.h" -typedef struct st_mysql MYSQL; -# 571 "mysql.h" -typedef struct st_mysql_bind MYSQL_BIND; -# 93 "mysql.h" -typedef struct st_mysql_field MYSQL_FIELD; -# 117 "mysql.h" -typedef unsigned int MYSQL_FIELD_OFFSET; -# 323 "mysql.h" -typedef struct st_mysql_manager MYSQL_MANAGER; -# 337 "mysql.h" -typedef struct st_mysql_parameters MYSQL_PARAMETERS; -# 292 "mysql.h" -typedef struct st_mysql_res MYSQL_RES; -# 116 "mysql.h" -typedef char * * MYSQL_ROW; -# 137 "mysql.h" -typedef MYSQL_ROWS * MYSQL_ROW_OFFSET; -# 596 "mysql.h" -typedef struct st_mysql_stmt MYSQL_STMT; -# 151 "mysql_com.h" -typedef struct st_net NET; -# 21 "typelib.h" -typedef struct st_typelib TYPELIB; -# 141 "mysql_com.h" -typedef struct st_vio Vio; -# 57 "mysql.h" -typedef char * gptr; -# 29 "my_list.h" -typedef int (* list_walk_action)(void *, void *); -# 48 "mysql.h" -typedef char my_bool; -# 63 "mysql.h" -typedef int my_socket; -# 125 "mysql.h" -typedef unsigned long long int my_ulonglong; -# 35 "my_alloc.h" -typedef struct st_mem_root MEM_ROOT; -# 141 "mysql.h" -typedef struct st_mysql_data MYSQL_DATA; -# 648 "mysql.h" -typedef struct st_mysql_methods MYSQL_METHODS; -# 48 "mysql_time.h" -typedef struct st_mysql_time MYSQL_TIME; -# 315 "mysql_com.h" -typedef struct st_udf_args UDF_ARGS; -# 326 "mysql_com.h" -typedef struct st_udf_init UDF_INIT; -# 27 "my_alloc.h" -typedef struct st_used_mem USED_MEM; -# 302 "mysql_com.h" -struct __attribute__((aligned(__alignof__(unsigned long int)), aligned(__alignof__(double)))) rand_struct - { - unsigned long int seed1; - unsigned long int seed2; - unsigned long int max_value; - double max_value_dbl; - }; -# 24 "my_list.h" -struct __attribute__((aligned(__alignof__(void *)))) st_list - { - struct st_list * prev; - struct st_list * next; - void * data; - }; -# 35 "my_alloc.h" -struct __attribute__((aligned(__alignof__(void *)), aligned(__alignof__(unsigned int)))) st_mem_root - { - USED_MEM * free; - USED_MEM * used; - USED_MEM * pre_alloc; - unsigned int min_malloc; - unsigned int block_size; - unsigned int block_num; - unsigned int first_block_usage; - void (* error_handler)(void); - }; -# 232 "mysql.h" -struct __attribute__((aligned(__alignof__(void *)), aligned(__alignof__(unsigned long long int)))) st_mysql - { - NET net; - gptr connector_fd; - char * host; - char * user; - char * passwd; - char * unix_socket; - char * server_version; - char * host_info; - char * info; - char * db; - struct charset_info_st * charset; - MYSQL_FIELD * fields; - MEM_ROOT field_alloc; - my_ulonglong affected_rows; - my_ulonglong insert_id; - my_ulonglong extra_info; - unsigned long int thread_id; - unsigned long int packet_length; - unsigned int port; - unsigned long int client_flag; - unsigned long int server_capabilities; - unsigned int protocol_version; - unsigned int field_count; - unsigned int server_status; - unsigned int server_language; - unsigned int warning_count; - struct st_mysql_options options; - enum mysql_status status; - my_bool free_me; - my_bool reconnect; - char scramble[(20 + 1)]; - my_bool rpl_pivot; - struct st_mysql * master; - struct st_mysql * next_slave; - struct st_mysql * last_used_slave; - struct st_mysql * last_used_con; - LIST * stmts; - struct st_mysql_methods const * methods; - void * thd; - my_bool * unbuffered_fetch_owner; - struct st_mysql_stmt * current_stmt; - }; -# 571 "mysql.h" -struct __attribute__((aligned(__alignof__(void *)), aligned(__alignof__(unsigned long int)))) st_mysql_bind - { - unsigned long int * length; - my_bool * is_null; - void * buffer; - enum enum_field_types buffer_type; - unsigned long int buffer_length; - unsigned char * inter_buffer; - unsigned long int offset; - unsigned long int internal_length; - unsigned int param_number; - unsigned int pack_length; - my_bool is_unsigned; - my_bool long_data_used; - my_bool internal_is_null; - void (* store_param_func)(NET * net, struct st_mysql_bind * param); - void (* fetch_result)(struct st_mysql_bind *, unsigned char * * row); - void (* skip_result)(struct st_mysql_bind *, MYSQL_FIELD *, unsigned char * * row); - }; -# 141 "mysql.h" -struct __attribute__((aligned(__alignof__(unsigned long long int)), aligned(__alignof__(void *)))) st_mysql_data - { - my_ulonglong rows; - unsigned int fields; - MYSQL_ROWS * data; - MEM_ROOT alloc; - MYSQL_ROWS * * prev_ptr; - }; -# 93 "mysql.h" -struct __attribute__((aligned(__alignof__(void *)), aligned(__alignof__(unsigned long int)))) st_mysql_field - { - char * name; - char * org_name; - char * table; - char * org_table; - char * db; - char * catalog; - char * def; - unsigned long int length; - unsigned long int max_length; - unsigned int name_length; - unsigned int org_name_length; - unsigned int table_length; - unsigned int org_table_length; - unsigned int db_length; - unsigned int catalog_length; - unsigned int def_length; - unsigned int flags; - unsigned int decimals; - unsigned int charsetnr; - enum enum_field_types type; - }; -# 323 "mysql.h" -struct __attribute__((aligned(__alignof__(void *)), aligned(__alignof__(unsigned long int)))) st_mysql_manager - { - NET net; - char * host; - char * user; - char * passwd; - unsigned int port; - my_bool free_me; - my_bool eof; - int cmd_status; - int last_errno; - char * net_buf; - char * net_buf_pos; - char * net_data_end; - int net_buf_size; - char last_error[256]; - }; -# 648 "mysql.h" -struct __attribute__((aligned(__alignof__(void *)))) st_mysql_methods - { - my_bool (* read_query_result)(MYSQL * mysql); - my_bool (* advanced_command)(MYSQL * mysql, enum enum_server_command, char const * header, unsigned long int, char const * arg, unsigned long int, my_bool, MYSQL_STMT * stmt); - MYSQL_DATA * (* read_rows)(MYSQL * mysql, MYSQL_FIELD * mysql_fields, unsigned int); - MYSQL_RES * (* use_result)(MYSQL * mysql); - void (* fetch_lengths)(unsigned long int * to, MYSQL_ROW, unsigned int); - void (* flush_use_result)(MYSQL * mysql); - MYSQL_FIELD * (* list_fields)(MYSQL * mysql); - my_bool (* read_prepare_result)(MYSQL * mysql, MYSQL_STMT * stmt); - int (* stmt_execute)(MYSQL_STMT * stmt); - int (* read_binary_rows)(MYSQL_STMT * stmt); - int (* unbuffered_fetch)(MYSQL * mysql, char * * row); - void (* free_embedded_thd)(MYSQL * mysql); - char const * (* read_statistics)(MYSQL * mysql); - my_bool (* next_result)(MYSQL * mysql); - int (* read_change_user_result)(MYSQL * mysql, char * buff, char const * passwd); - }; -# 162 "mysql.h" -struct __attribute__((aligned(__alignof__(unsigned long int)), aligned(__alignof__(void *)))) st_mysql_options - { - unsigned int connect_timeout; - unsigned int read_timeout; - unsigned int write_timeout; - unsigned int port; - unsigned int protocol; - unsigned long int client_flag; - char * host; - char * user; - char * password; - char * unix_socket; - char * db; - struct st_dynamic_array * init_commands; - char * my_cnf_file; - char * my_cnf_group; - char * charset_dir; - char * charset_name; - char * ssl_key; - char * ssl_cert; - char * ssl_ca; - char * ssl_capath; - char * ssl_cipher; - char * shared_memory_base_name; - unsigned long int max_allowed_packet; - my_bool use_ssl; - my_bool compress; - my_bool named_pipe; - my_bool rpl_probe; - my_bool rpl_parse; - my_bool no_master_reads; - my_bool separate_thread; - enum mysql_option methods_to_use; - char * client_ip; - my_bool secure_auth; - int (* local_infile_init)(void * *, char const *, void *); - int (* local_infile_read)(void *, char *, unsigned int); - void (* local_infile_end)(void); - int (* local_infile_error)(void *, char *, unsigned int); - void * local_infile_userdata; - }; -# 337 "mysql.h" -struct __attribute__((aligned(__alignof__(void *)))) st_mysql_parameters - { - unsigned long int * p_max_allowed_packet; - unsigned long int * p_net_buffer_length; - }; -# 292 "mysql.h" -struct __attribute__((aligned(__alignof__(unsigned long long int)), aligned(__alignof__(void *)))) st_mysql_res - { - my_ulonglong row_count; - MYSQL_FIELD * fields; - MYSQL_DATA * data; - MYSQL_ROWS * data_cursor; - unsigned long int * lengths; - MYSQL * handle; - MEM_ROOT field_alloc; - unsigned int field_count; - unsigned int current_field; - MYSQL_ROW row; - MYSQL_ROW current_row; - my_bool eof; - my_bool unbuffered_fetch_cancelled; - struct st_mysql_methods const * methods; - }; -# 131 "mysql.h" -struct __attribute__((aligned(__alignof__(void *)), aligned(__alignof__(unsigned long int)))) st_mysql_rows - { - struct st_mysql_rows * next; - MYSQL_ROW data; - unsigned long int length; - }; -# 596 "mysql.h" -struct __attribute__((aligned(__alignof__(void *)), aligned(__alignof__(unsigned long long int)))) st_mysql_stmt - { - MEM_ROOT mem_root; - LIST list; - MYSQL * mysql; - MYSQL_BIND * params; - MYSQL_BIND * bind; - MYSQL_FIELD * fields; - MYSQL_DATA result; - MYSQL_ROWS * data_cursor; - my_ulonglong affected_rows; - my_ulonglong insert_id; - int (* read_row_func)(struct st_mysql_stmt * stmt, unsigned char * * row); - unsigned long int stmt_id; - unsigned int last_errno; - unsigned int param_count; - unsigned int field_count; - enum enum_mysql_stmt_state state; - char last_error[512]; - char sqlstate[(5 + 1)]; - my_bool send_types_to_server; - my_bool bind_param_done; - my_bool bind_result_done; - my_bool unbuffered_fetch_cancelled; - my_bool update_max_length; - }; -# 48 "mysql_time.h" -struct __attribute__((aligned(__alignof__(unsigned long int)))) st_mysql_time - { - unsigned int year; - unsigned int month; - unsigned int day; - unsigned int hour; - unsigned int minute; - unsigned int second; - unsigned long int second_part; - my_bool neg; - enum enum_mysql_timestamp_type time_type; - }; -# 151 "mysql_com.h" -struct __attribute__((aligned(__alignof__(void *)), aligned(__alignof__(unsigned long int)))) st_net - { - Vio * vio; - unsigned char * buff; - unsigned char * buff_end; - unsigned char * write_pos; - unsigned char * read_pos; - my_socket fd; - unsigned long int max_packet; - unsigned long int max_packet_size; - unsigned int pkt_nr; - unsigned int compress_pkt_nr; - unsigned int write_timeout; - unsigned int read_timeout; - unsigned int retry_count; - int fcntl; - my_bool compress; - unsigned long int remain_in_buf; - unsigned long int length; - unsigned long int buf_length; - unsigned long int where_b; - unsigned int * return_status; - unsigned char reading_or_writing; - char save_char; - my_bool no_send_ok; - char last_error[512]; - char sqlstate[(5 + 1)]; - unsigned int last_errno; - unsigned char error; - gptr query_cache_query; - my_bool report_error; - my_bool return_errno; - }; -# 21 "typelib.h" -struct __attribute__((aligned(__alignof__(unsigned int)), aligned(__alignof__(void *)))) st_typelib - { - unsigned int count; - char const * name; - char const * * type_names; - unsigned int * type_lengths; - }; -# 315 "mysql_com.h" -struct __attribute__((aligned(__alignof__(unsigned int)), aligned(__alignof__(void *)))) st_udf_args - { - unsigned int arg_count; - enum Item_result * arg_type; - char * * args; - unsigned long int * lengths; - char * maybe_null; - }; -# 326 "mysql_com.h" -struct __attribute__((aligned(__alignof__(unsigned long int)), aligned(__alignof__(void *)))) st_udf_init - { - my_bool maybe_null; - unsigned int decimals; - unsigned long int max_length; - char * ptr; - my_bool const_item; - }; -# 27 "my_alloc.h" -struct __attribute__((aligned(__alignof__(void *)), aligned(__alignof__(unsigned int)))) st_used_mem - { - struct st_used_mem * next; - unsigned int left; - unsigned int size; - }; -# 313 "mysql_com.h" -enum Item_result - { - STRING_RESULT = 0, - REAL_RESULT = 1, - INT_RESULT = 2, - ROW_RESULT = 3, - }; -# 186 "mysql_com.h" -enum enum_field_types - { - MYSQL_TYPE_DECIMAL = 0, - MYSQL_TYPE_TINY = 1, - MYSQL_TYPE_SHORT = 2, - MYSQL_TYPE_LONG = 3, - MYSQL_TYPE_FLOAT = 4, - MYSQL_TYPE_DOUBLE = 5, - MYSQL_TYPE_NULL = 6, - MYSQL_TYPE_TIMESTAMP = 7, - MYSQL_TYPE_LONGLONG = 8, - MYSQL_TYPE_INT24 = 9, - MYSQL_TYPE_DATE = 10, - MYSQL_TYPE_TIME = 11, - MYSQL_TYPE_DATETIME = 12, - MYSQL_TYPE_YEAR = 13, - MYSQL_TYPE_NEWDATE = 14, - MYSQL_TYPE_ENUM = 247, - MYSQL_TYPE_SET = 248, - MYSQL_TYPE_TINY_BLOB = 249, - MYSQL_TYPE_MEDIUM_BLOB = 250, - MYSQL_TYPE_LONG_BLOB = 251, - MYSQL_TYPE_BLOB = 252, - MYSQL_TYPE_VAR_STRING = 253, - MYSQL_TYPE_STRING = 254, - MYSQL_TYPE_GEOMETRY = 255, - }; -# 269 "mysql_com.h" -enum enum_mysql_set_option - { - MYSQL_OPTION_MULTI_STATEMENTS_ON = 0, - MYSQL_OPTION_MULTI_STATEMENTS_OFF = 1, - }; -# 563 "mysql.h" -enum enum_mysql_stmt_state - { - MYSQL_STMT_INIT_DONE = 1, - MYSQL_STMT_PREPARE_DONE = 2, - MYSQL_STMT_EXECUTE_DONE = 3, - MYSQL_STMT_FETCH_DONE = 4, - }; -# 29 "mysql_time.h" -enum enum_mysql_timestamp_type - { - MYSQL_TIMESTAMP_NONE = -(2), - MYSQL_TIMESTAMP_ERROR = -(1), - MYSQL_TIMESTAMP_DATE = 0, - MYSQL_TIMESTAMP_DATETIME = 1, - MYSQL_TIMESTAMP_TIME = 2, - }; -# 39 "mysql_com.h" -enum enum_server_command - { - COM_SLEEP = 0, - COM_QUIT = 1, - COM_INIT_DB = 2, - COM_QUERY = 3, - COM_FIELD_LIST = 4, - COM_CREATE_DB = 5, - COM_DROP_DB = 6, - COM_REFRESH = 7, - COM_SHUTDOWN = 8, - COM_STATISTICS = 9, - COM_PROCESS_INFO = 10, - COM_CONNECT = 11, - COM_PROCESS_KILL = 12, - COM_DEBUG = 13, - COM_PING = 14, - COM_TIME = 15, - COM_DELAYED_INSERT = 16, - COM_CHANGE_USER = 17, - COM_BINLOG_DUMP = 18, - COM_TABLE_DUMP = 19, - COM_CONNECT_OUT = 20, - COM_REGISTER_SLAVE = 21, - COM_PREPARE = 22, - COM_EXECUTE = 23, - COM_LONG_DATA = 24, - COM_CLOSE_STMT = 25, - COM_RESET_STMT = 26, - COM_SET_OPTION = 27, - COM_END = 28, - }; -# 635 "mysql.h" -enum enum_stmt_attr_type - { - STMT_ATTR_UPDATE_MAX_LENGTH = 0, - }; -# 244 "mysql_com.h" -enum mysql_enum_shutdown_level - { - SHUTDOWN_DEFAULT = 0, - SHUTDOWN_WAIT_CONNECTIONS = (unsigned char)((1 << 0)), - SHUTDOWN_WAIT_TRANSACTIONS = (unsigned char)((1 << 1)), - SHUTDOWN_WAIT_UPDATES = (unsigned char)((1 << 3)), - SHUTDOWN_WAIT_ALL_BUFFERS = ((unsigned char)((1 << 3)) << 1), - SHUTDOWN_WAIT_CRITICAL_BUFFERS = (((unsigned char)((1 << 3)) << 1) + 1), - KILL_CONNECTION = 255, - }; -# 151 "mysql.h" -enum mysql_option - { - MYSQL_OPT_CONNECT_TIMEOUT = 0, - MYSQL_OPT_COMPRESS = 1, - MYSQL_OPT_NAMED_PIPE = 2, - MYSQL_INIT_COMMAND = 3, - MYSQL_READ_DEFAULT_FILE = 4, - MYSQL_READ_DEFAULT_GROUP = 5, - MYSQL_SET_CHARSET_DIR = 6, - MYSQL_SET_CHARSET_NAME = 7, - MYSQL_OPT_LOCAL_INFILE = 8, - MYSQL_OPT_PROTOCOL = 9, - MYSQL_SHARED_MEMORY_BASE_NAME = 10, - MYSQL_OPT_READ_TIMEOUT = 11, - MYSQL_OPT_WRITE_TIMEOUT = 12, - MYSQL_OPT_USE_RESULT = 13, - MYSQL_OPT_USE_REMOTE_CONNECTION = 14, - MYSQL_OPT_USE_EMBEDDED_CONNECTION = 15, - MYSQL_OPT_GUESS_CONNECTION = 16, - MYSQL_SET_CLIENT_IP = 17, - MYSQL_SECURE_AUTH = 18, - }; -# 214 "mysql.h" -enum mysql_protocol_type - { - MYSQL_PROTOCOL_DEFAULT = 0, - MYSQL_PROTOCOL_TCP = 1, - MYSQL_PROTOCOL_SOCKET = 2, - MYSQL_PROTOCOL_PIPE = 3, - MYSQL_PROTOCOL_MEMORY = 4, - }; -# 224 "mysql.h" -enum mysql_rpl_type - { - MYSQL_RPL_MASTER = 0, - MYSQL_RPL_SLAVE = 1, - MYSQL_RPL_ADMIN = 2, - }; -# 209 "mysql.h" -enum mysql_status - { - MYSQL_STATUS_READY = 0, - MYSQL_STATUS_GET_RESULT = 1, - MYSQL_STATUS_USE_RESULT = 2, - }; -# 365 "mysql_com.h" -extern my_bool check_scramble(char const * reply, char const * message, unsigned char const * hash_stage2); -# 358 "mysql_com.h" -extern my_bool check_scramble_323(char const *, char const * message, unsigned long int * salt); -# 353 "mysql_com.h" -extern void create_random_string(char * to, unsigned int, struct rand_struct * rand_st); -# 28 "typelib.h" -extern int find_type(char * x, TYPELIB * typelib, unsigned int); -# 367 "mysql_com.h" -extern void get_salt_from_password(unsigned char * res, char const * password); -# 360 "mysql_com.h" -extern void get_salt_from_password_323(unsigned long int * res, char const * password); -# 372 "mysql_com.h" -extern char * get_tty_password(char * opt_message); -# 30 "typelib.h" -extern char const * get_type(TYPELIB * typelib, unsigned int); -# 355 "mysql_com.h" -extern void hash_password(unsigned long int * to, char const * password, unsigned int); -# 31 "my_list.h" -extern LIST * list_add(LIST * root, LIST * element); -# 33 "my_list.h" -extern LIST * list_cons(void * data, LIST * root); -# 32 "my_list.h" -extern LIST * list_delete(LIST * root, LIST * element); -# 35 "my_list.h" -extern void list_free(LIST * root, unsigned int); -# 36 "my_list.h" -extern unsigned int list_length(LIST *); -# 34 "my_list.h" -extern LIST * list_reverse(LIST * root); -# 37 "my_list.h" -extern int list_walk(LIST *, list_walk_action, gptr); -# 378 "mysql_com.h" -extern int load_defaults(char const * conf_file, char const * * groups, int * argc, char * * * argv); -# 368 "mysql_com.h" -extern void make_password_from_salt(char * to, unsigned char const * hash_stage2); -# 361 "mysql_com.h" -extern void make_password_from_salt_323(char * to, unsigned long int const * salt); -# 363 "mysql_com.h" -extern void make_scrambled_password(char * to, char const * password); -# 356 "mysql_com.h" -extern void make_scrambled_password_323(char * to, char const * password); -# 29 "typelib.h" -extern void make_type(char * to, unsigned int, TYPELIB * typelib); -# 299 "mysql_com.h" -extern int my_connect(my_socket, struct sockaddr const * name, unsigned int, unsigned int); -# 377 "mysql_com.h" -extern my_bool my_init(void); -# 281 "mysql_com.h" -extern my_bool my_net_init(NET * net, Vio * vio); -# 282 "mysql_com.h" -extern void my_net_local_init(NET * net); -# 292 "mysql_com.h" -extern unsigned long int my_net_read(NET * net); -# 287 "mysql_com.h" -extern my_bool my_net_write(NET * net, char const * packet, unsigned long int); -# 352 "mysql_com.h" -extern double my_rnd(struct rand_struct *); -# 381 "mysql_com.h" -extern void my_thread_end(void); -# 380 "mysql_com.h" -extern my_bool my_thread_init(void); -# 539 "mysql.h" -extern void myodbc_remove_escape(MYSQL * mysql, char * name); -# 481 "mysql.h" -extern int mysql_add_slave(MYSQL * mysql, char const * host, unsigned int, char const * user, char const * passwd); -# 393 "mysql.h" -extern my_ulonglong mysql_affected_rows(MYSQL * mysql); -# 720 "mysql.h" -extern my_bool mysql_autocommit(MYSQL * mysql, my_bool); -# 408 "mysql.h" -extern my_bool mysql_change_user(MYSQL * mysql, char const * user, char const * passwd, char const * db); -# 401 "mysql.h" -extern char const * mysql_character_set_name(MYSQL * mysql); -# 723 "mysql.h" -extern void mysql_close(MYSQL * sock); -# 718 "mysql.h" -extern my_bool mysql_commit(MYSQL * mysql); -# 510 "mysql.h" -extern void mysql_data_seek(MYSQL_RES * result, my_ulonglong); -# 528 "mysql.h" -extern void mysql_debug(char const * debug); -# 467 "mysql.h" -extern void mysql_disable_reads_from_master(MYSQL * mysql); -# 461 "mysql.h" -extern void mysql_disable_rpl_parse(MYSQL * mysql); -# 489 "mysql.h" -extern int mysql_dump_debug_info(MYSQL * mysql); -# 541 "mysql.h" -extern my_bool mysql_embedded(void); -# 466 "mysql.h" -extern void mysql_enable_reads_from_master(MYSQL * mysql); -# 460 "mysql.h" -extern void mysql_enable_rpl_parse(MYSQL * mysql); -# 385 "mysql.h" -extern my_bool mysql_eof(MYSQL_RES * res); -# 395 "mysql.h" -extern unsigned int mysql_errno(MYSQL * mysql); -# 373 "mysql_com.h" -extern char const * mysql_errno_to_sqlstate(unsigned int); -# 396 "mysql.h" -extern char const * mysql_error(MYSQL * mysql); -# 521 "mysql.h" -extern unsigned long int mysql_escape_string(char * to, char const * from, unsigned long int); -# 518 "mysql.h" -extern MYSQL_FIELD * mysql_fetch_field(MYSQL_RES * result); -# 386 "mysql.h" -extern MYSQL_FIELD * mysql_fetch_field_direct(MYSQL_RES * res, unsigned int); -# 388 "mysql.h" -extern MYSQL_FIELD * mysql_fetch_fields(MYSQL_RES * res); -# 517 "mysql.h" -extern unsigned long int * mysql_fetch_lengths(MYSQL_RES * result); -# 516 "mysql.h" -extern MYSQL_ROW mysql_fetch_row(MYSQL_RES * result); -# 392 "mysql.h" -extern unsigned int mysql_field_count(MYSQL * mysql); -# 514 "mysql.h" -extern MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES * result, MYSQL_FIELD_OFFSET); -# 390 "mysql.h" -extern MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RES * res); -# 509 "mysql.h" -extern void mysql_free_result(MYSQL_RES * result); -# 499 "mysql.h" -extern char const * mysql_get_client_info(void); -# 500 "mysql.h" -extern unsigned long int mysql_get_client_version(void); -# 501 "mysql.h" -extern char const * mysql_get_host_info(MYSQL * mysql); -# 367 "mysql.h" -extern MYSQL_PARAMETERS * mysql_get_parameters(void); -# 503 "mysql.h" -extern unsigned int mysql_get_proto_info(MYSQL * mysql); -# 498 "mysql.h" -extern char const * mysql_get_server_info(MYSQL * mysql); -# 502 "mysql.h" -extern unsigned long int mysql_get_server_version(MYSQL * mysql); -# 523 "mysql.h" -extern unsigned long int mysql_hex_string(char * to, char const * from, unsigned long int); -# 399 "mysql.h" -extern char const * mysql_info(MYSQL * mysql); -# 404 "mysql.h" -extern MYSQL * mysql_init(MYSQL * mysql); -# 394 "mysql.h" -extern my_ulonglong mysql_insert_id(MYSQL * mysql); -# 492 "mysql.h" -extern int mysql_kill(MYSQL * mysql, unsigned long int); -# 504 "mysql.h" -extern MYSQL_RES * mysql_list_dbs(MYSQL * mysql, char const * wild); -# 519 "mysql.h" -extern MYSQL_RES * mysql_list_fields(MYSQL * mysql, char const * table, char const * wild); -# 506 "mysql.h" -extern MYSQL_RES * mysql_list_processes(MYSQL * mysql); -# 505 "mysql.h" -extern MYSQL_RES * mysql_list_tables(MYSQL * mysql, char const * wild); -# 548 "mysql.h" -extern void mysql_manager_close(MYSQL_MANAGER * con); -# 549 "mysql.h" -extern int mysql_manager_command(MYSQL_MANAGER * con, char const * cmd, int); -# 543 "mysql.h" -extern MYSQL_MANAGER * mysql_manager_connect(MYSQL_MANAGER * con, char const * host, char const * user, char const * passwd, unsigned int); -# 551 "mysql.h" -extern int mysql_manager_fetch_line(MYSQL_MANAGER * con, char * res_buf, int); -# 542 "mysql.h" -extern MYSQL_MANAGER * mysql_manager_init(MYSQL_MANAGER * con); -# 427 "mysql.h" -extern my_bool mysql_master_query(MYSQL * mysql, char const * q, unsigned long int); -# 429 "mysql.h" -extern my_bool mysql_master_send_query(MYSQL * mysql, char const * q, unsigned long int); -# 721 "mysql.h" -extern my_bool mysql_more_results(MYSQL * mysql); -# 722 "mysql.h" -extern int mysql_next_result(MYSQL * mysql); -# 384 "mysql.h" -extern unsigned int mysql_num_fields(MYSQL_RES * res); -# 383 "mysql.h" -extern my_ulonglong mysql_num_rows(MYSQL_RES * res); -# 529 "mysql.h" -extern char * mysql_odbc_escape_string(MYSQL * mysql, char * to, unsigned long int, char const * from, unsigned long int, void * param, char * (* extend_buffer)(void *, char * to, unsigned long int * length)); -# 507 "mysql.h" -extern int mysql_options(MYSQL * mysql, enum mysql_option, char const * arg); -# 496 "mysql.h" -extern int mysql_ping(MYSQL * mysql); -# 75 "mysql.h" -extern unsigned int mysql_port; -# 418 "mysql.h" -extern int mysql_query(MYSQL * mysql, char const * q); -# 554 "mysql.h" -extern my_bool mysql_read_query_result(MYSQL * mysql); -# 469 "mysql.h" -extern my_bool mysql_reads_from_master_enabled(MYSQL * mysql); -# 410 "mysql.h" -extern MYSQL * mysql_real_connect(MYSQL * mysql, char const * host, char const * user, char const * passwd, char const * db, unsigned int, char const * unix_socket, unsigned long int); -# 525 "mysql.h" -extern unsigned long int mysql_real_escape_string(MYSQL * mysql, char * to, char const * from, unsigned long int); -# 421 "mysql.h" -extern int mysql_real_query(MYSQL * mysql, char const * q, unsigned long int); -# 490 "mysql.h" -extern int mysql_refresh(MYSQL * mysql, unsigned int); -# 719 "mysql.h" -extern my_bool mysql_rollback(MYSQL * mysql); -# 512 "mysql.h" -extern MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES * result, MYSQL_ROW_OFFSET); -# 389 "mysql.h" -extern MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES * res); -# 463 "mysql.h" -extern int mysql_rpl_parse_enabled(MYSQL * mysql); -# 474 "mysql.h" -extern my_bool mysql_rpl_probe(MYSQL * mysql); -# 471 "mysql.h" -extern enum mysql_rpl_type mysql_rpl_query_type(char const * q, int); -# 417 "mysql.h" -extern int mysql_select_db(MYSQL * mysql, char const * db); -# 419 "mysql.h" -extern int mysql_send_query(MYSQL * mysql, char const * q, unsigned long int); -# 354 "mysql.h" -extern void mysql_server_end(void); -# 353 "mysql.h" -extern int mysql_server_init(int, char * * argv, char * * groups); -# 402 "mysql.h" -extern int mysql_set_character_set(MYSQL * mysql, char const * csname); -# 452 "mysql.h" -extern void mysql_set_local_infile_default(MYSQL * mysql); -# 441 "mysql.h" -extern void mysql_set_local_infile_handler(MYSQL * mysql, int (* local_infile_init)(void * *, char const *, void *), int (* local_infile_read)(void *, char *, unsigned int), void (* local_infile_end)(void), int (* local_infile_error)(void *, char *, unsigned int), void *); -# 477 "mysql.h" -extern int mysql_set_master(MYSQL * mysql, char const * host, unsigned int, char const * user, char const * passwd); -# 493 "mysql.h" -extern int mysql_set_server_option(MYSQL * mysql, enum enum_mysql_set_option); -# 486 "mysql.h" -extern int mysql_shutdown(MYSQL * mysql, enum mysql_enum_shutdown_level); -# 432 "mysql.h" -extern my_bool mysql_slave_query(MYSQL * mysql, char const * q, unsigned long int); -# 434 "mysql.h" -extern my_bool mysql_slave_send_query(MYSQL * mysql, char const * q, unsigned long int); -# 397 "mysql.h" -extern char const * mysql_sqlstate(MYSQL * mysql); -# 405 "mysql.h" -extern my_bool mysql_ssl_set(MYSQL * mysql, char const * key, char const * cert, char const * ca, char const * capath, char const * cipher); -# 497 "mysql.h" -extern char const * mysql_stat(MYSQL * mysql); -# 714 "mysql.h" -extern my_ulonglong mysql_stmt_affected_rows(MYSQL_STMT * stmt); -# 692 "mysql.h" -extern my_bool mysql_stmt_attr_get(MYSQL_STMT * stmt, enum enum_stmt_attr_type, void * attr); -# 689 "mysql.h" -extern my_bool mysql_stmt_attr_set(MYSQL_STMT * stmt, enum enum_stmt_attr_type, void const * attr); -# 695 "mysql.h" -extern my_bool mysql_stmt_bind_param(MYSQL_STMT * stmt, MYSQL_BIND * bnd); -# 696 "mysql.h" -extern my_bool mysql_stmt_bind_result(MYSQL_STMT * stmt, MYSQL_BIND * bnd); -# 697 "mysql.h" -extern my_bool mysql_stmt_close(MYSQL_STMT * stmt); -# 712 "mysql.h" -extern void mysql_stmt_data_seek(MYSQL_STMT * stmt, my_ulonglong); -# 706 "mysql.h" -extern unsigned int mysql_stmt_errno(MYSQL_STMT * stmt); -# 707 "mysql.h" -extern char const * mysql_stmt_error(MYSQL_STMT * stmt); -# 682 "mysql.h" -extern int mysql_stmt_execute(MYSQL_STMT * stmt); -# 683 "mysql.h" -extern int mysql_stmt_fetch(MYSQL_STMT * stmt); -# 684 "mysql.h" -extern int mysql_stmt_fetch_column(MYSQL_STMT * stmt, MYSQL_BIND * bind, unsigned int, unsigned long int); -# 716 "mysql.h" -extern unsigned int mysql_stmt_field_count(MYSQL_STMT * stmt); -# 699 "mysql.h" -extern my_bool mysql_stmt_free_result(MYSQL_STMT * stmt); -# 679 "mysql.h" -extern MYSQL_STMT * mysql_stmt_init(MYSQL * mysql); -# 715 "mysql.h" -extern my_ulonglong mysql_stmt_insert_id(MYSQL_STMT * stmt); -# 713 "mysql.h" -extern my_ulonglong mysql_stmt_num_rows(MYSQL_STMT * stmt); -# 688 "mysql.h" -extern unsigned long int mysql_stmt_param_count(MYSQL_STMT * stmt); -# 705 "mysql.h" -extern MYSQL_RES * mysql_stmt_param_metadata(MYSQL_STMT * stmt); -# 680 "mysql.h" -extern int mysql_stmt_prepare(MYSQL_STMT * stmt, char const * query, unsigned long int); -# 698 "mysql.h" -extern my_bool mysql_stmt_reset(MYSQL_STMT * stmt); -# 704 "mysql.h" -extern MYSQL_RES * mysql_stmt_result_metadata(MYSQL_STMT * stmt); -# 709 "mysql.h" -extern MYSQL_ROW_OFFSET mysql_stmt_row_seek(MYSQL_STMT * stmt, MYSQL_ROW_OFFSET); -# 711 "mysql.h" -extern MYSQL_ROW_OFFSET mysql_stmt_row_tell(MYSQL_STMT * stmt); -# 700 "mysql.h" -extern my_bool mysql_stmt_send_long_data(MYSQL_STMT * stmt, unsigned int, char const * data, unsigned long int); -# 708 "mysql.h" -extern char const * mysql_stmt_sqlstate(MYSQL_STMT * stmt); -# 687 "mysql.h" -extern int mysql_stmt_store_result(MYSQL_STMT * stmt); -# 423 "mysql.h" -extern MYSQL_RES * mysql_store_result(MYSQL * mysql); -# 376 "mysql.h" -extern void mysql_thread_end(void); -# 400 "mysql.h" -extern unsigned long int mysql_thread_id(MYSQL * mysql); -# 375 "mysql.h" -extern my_bool mysql_thread_init(void); -# 540 "mysql.h" -extern unsigned int mysql_thread_safe(void); -# 76 "mysql.h" -extern char * mysql_unix_port; -# 424 "mysql.h" -extern MYSQL_RES * mysql_use_result(MYSQL * mysql); -# 398 "mysql.h" -extern unsigned int mysql_warning_count(MYSQL * mysql); -# 284 "mysql_com.h" -extern void net_clear(NET * net); -# 283 "mysql_com.h" -extern void net_end(NET * net); -# 286 "mysql_com.h" -extern my_bool net_flush(NET * net); -# 291 "mysql_com.h" -extern int net_real_write(NET * net, char const * packet, unsigned long int); -# 285 "mysql_com.h" -extern my_bool net_realloc(NET * net, unsigned long int); -# 751 "mysql.h" -extern unsigned long int net_safe_read(MYSQL * mysql); -# 288 "mysql_com.h" -extern my_bool net_write_command(NET * net, unsigned char, char const * header, unsigned long int, char const * packet, unsigned long int); -# 350 "mysql_com.h" -extern void randominit(struct rand_struct *, unsigned long int, unsigned long int); -# 364 "mysql_com.h" -extern void scramble(char * to, char const * message, char const * password); -# 357 "mysql_com.h" -extern void scramble_323(char * to, char const * message, char const * password); -# 32 "typelib.h" -extern TYPELIB sql_protocol_typelib; diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index ba9f788494a..5b8df86d73a 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -142,6 +142,7 @@ our $opt_verbose= 0; # Verbose output, enable with --verbose our $exe_master_mysqld; our $exe_mysql; our $exe_mysqladmin; +our $exe_mysql_upgrade; our $exe_mysqlbinlog; our $exe_mysql_client_test; our $exe_mysqld; @@ -1403,7 +1404,15 @@ sub executable_setup () { $exe_mysql= mtr_exe_exists("$path_client_bindir/mysql"); if ( $mysql_version_id >= 50100 ) { - $exe_mysqlslap= mtr_exe_exists("$path_client_bindir/mysqlslap"); + $exe_mysqlslap= mtr_exe_exists("$path_client_bindir/mysqlslap"); + } + if ( $mysql_version_id >= 50000 and !$glob_use_embedded_server ) + { + $exe_mysql_upgrade= mtr_exe_exists("$path_client_bindir/mysql_upgrade") + } + else + { + $exe_mysql_upgrade= ""; } if ( ! $glob_win32 ) @@ -1444,13 +1453,13 @@ sub executable_setup () { if ( $glob_use_embedded_server ) { $exe_mysqltest= - mtr_exe_exists(vs_config_dirs('libmysqld/examples', 'mysqltest_embedded'), - "$glob_basedir/libmysqld/examples/mysqltest_embedded", + mtr_exe_exists(vs_config_dirs('libmysqld/examples','mysqltest_embedded'), + "$glob_basedir/libmysqld/examples/mysqltest_embedded", "$path_client_bindir/mysqltest_embedded"); } else { - $exe_mysqltest= mtr_exe_exists("$path_client_bindir/mysqltest"); + $exe_mysqltest= mtr_exe_exists("$path_client_bindir/mysqltest"); } # Look for mysql_client_test executable which may _not_ exist in @@ -1467,7 +1476,7 @@ sub executable_setup () { $exe_mysql_client_test= mtr_exe_maybe_exists(vs_config_dirs('tests', 'mysql_client_test'), "$glob_basedir/tests/mysql_client_test", - "$glob_basedir/bin"); + "$glob_basedir/bin/mysql_client_test"); } } @@ -1529,6 +1538,33 @@ sub mysql_client_test_arguments() return join(" ", $exe, @$args); } +sub mysql_upgrade_arguments() +{ + my $exe= $exe_mysql_upgrade; + + my $args; + mtr_init_args(\$args); +# if ( $opt_valgrind_mysql_ugrade ) +# { +# valgrind_arguments($args, \$exe); +# } + + mtr_add_arg($args, "--no-defaults"); + mtr_add_arg($args, "--user=root"); + mtr_add_arg($args, "--port=$master->[0]->{'port'}"); + mtr_add_arg($args, "--socket=$master->[0]->{'path_sock'}"); + mtr_add_arg($args, "--datadir=$master->[0]->{'path_myddir'}"); + mtr_add_arg($args, "--basedir=$glob_basedir"); + + if ( $opt_debug ) + { + mtr_add_arg($args, + "--debug=d:t:A,$path_vardir_trace/log/mysql_upgrade.trace"); + } + + return join(" ", $exe, @$args); +} + # Note that some env is setup in spawn/run, in "mtr_process.pl" sub environment_setup () { @@ -1788,6 +1824,14 @@ sub environment_setup () { # ---------------------------------------------------- $ENV{'MYSQL_CLIENT_TEST'}= mysql_client_test_arguments(); + # ---------------------------------------------------- + # Setup env so childs can execute mysql_upgrade + # ---------------------------------------------------- + if ( $mysql_version_id >= 50000 ) + { + $ENV{'MYSQL_UPGRADE'}= mysql_upgrade_arguments(); + } + # ---------------------------------------------------- # Setup env so childs can execute mysql_fix_system_tables # ---------------------------------------------------- diff --git a/mysql-test/r/mysql_upgrade.result b/mysql-test/r/mysql_upgrade.result new file mode 100644 index 00000000000..1f93d727561 --- /dev/null +++ b/mysql-test/r/mysql_upgrade.result @@ -0,0 +1,127 @@ +Run mysql_upgrade once +mysql.columns_priv OK +mysql.db OK +mysql.func OK +mysql.help_category OK +mysql.help_keyword OK +mysql.help_relation OK +mysql.help_topic OK +mysql.host OK +mysql.proc OK +mysql.procs_priv 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 +@hadGrantPriv:=1 +1 +1 +1 +1 +1 +@hadShowDbPriv:=1 +1 +1 +1 +1 +1 +@hadCreateViewPriv:=1 +1 +1 +1 +1 +1 +@hadCreateRoutinePriv:=1 +1 +1 +1 +1 +1 +@hadCreateUserPriv:=1 +1 +1 +1 +1 +1 +Run it again - should say already completed +@hadGrantPriv:=1 +1 +1 +1 +1 +1 +@hadShowDbPriv:=1 +1 +1 +1 +1 +1 +@hadCreateViewPriv:=1 +1 +1 +1 +1 +1 +@hadCreateRoutinePriv:=1 +1 +1 +1 +1 +1 +@hadCreateUserPriv:=1 +1 +1 +1 +1 +1 +Force should run it regardless of wheter it's been run before +mysql.columns_priv OK +mysql.db OK +mysql.func OK +mysql.help_category OK +mysql.help_keyword OK +mysql.help_relation OK +mysql.help_topic OK +mysql.host OK +mysql.proc OK +mysql.procs_priv 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 +@hadGrantPriv:=1 +1 +1 +1 +1 +1 +@hadShowDbPriv:=1 +1 +1 +1 +1 +1 +@hadCreateViewPriv:=1 +1 +1 +1 +1 +1 +@hadCreateRoutinePriv:=1 +1 +1 +1 +1 +1 +@hadCreateUserPriv:=1 +1 +1 +1 +1 +1 diff --git a/mysql-test/t/mysql_upgrade.test b/mysql-test/t/mysql_upgrade.test new file mode 100644 index 00000000000..50d316a0767 --- /dev/null +++ b/mysql-test/t/mysql_upgrade.test @@ -0,0 +1,20 @@ +# Only run test if "mysql_upgrade" is found +--require r/have_mysql_upgrade.inc +--disable_query_log +select LENGTH("$MYSQL_UPGRADE")>0 as have_mysql_upgrade; +--enable_query_log + +# +# Basic test thta we can run mysql_upgrde and that it finds the +# expected binaries it uses. +# +--echo Run mysql_upgrade once +--exec $MYSQL_UPGRADE 2> $MYSQLTEST_VARDIR/log/mysql_upgrade.err + +--echo Run it again - should say already completed +--exec $MYSQL_UPGRADE 2> $MYSQLTEST_VARDIR/log/mysql_upgrade.err + +--echo Force should run it regardless of wheter it's been run before +--exec $MYSQL_UPGRADE --force 2> $MYSQLTEST_VARDIR/log/mysql_upgrade.err + +