Commit 1717e280 authored by msvensson@neptunus.(none)'s avatar msvensson@neptunus.(none)

Merge bk-internal:/home/bk/mysql-5.0

into  neptunus.(none):/home/msvensson/mysql/mysql-5.0
parents e30668f6 f28c36d0
......@@ -15,3 +15,5 @@
45214442pBGT9KuZEGixBH71jTzbOA
45214a07hVsIGwvwa-WrO-jpeaSwVw
452a92d0-31-8wSzSfZi165fcGcXPA
454a7ef8gdvE_ddMlJyghvOAkKPNOQ
454f8960jsVT_kMKJtZ9OCgXoba0xQ
......@@ -7,7 +7,7 @@ AC_INIT(sql/mysqld.cc)
AC_CANONICAL_SYSTEM
# The Docs Makefile.am parses this line!
# remember to also change ndb version below and update version.c in ndb
AM_INIT_AUTOMAKE(mysql, 5.0.29)
AM_INIT_AUTOMAKE(mysql, 5.0.30)
AM_CONFIG_HEADER(config.h)
PROTOCOL_VERSION=10
......@@ -19,7 +19,7 @@ SHARED_LIB_VERSION=$SHARED_LIB_MAJOR_VERSION:0:0
# ndb version
NDB_VERSION_MAJOR=5
NDB_VERSION_MINOR=0
NDB_VERSION_BUILD=29
NDB_VERSION_BUILD=30
NDB_VERSION_STATUS=""
# Set all version vars based on $VERSION. How do we do this more elegant ?
......
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;
......@@ -185,7 +185,7 @@ our $opt_fast;
our $opt_force;
our $opt_reorder= 0;
our $opt_enable_disabled;
our $opt_mem;
our $opt_mem= $ENV{'MTR_MEM'};
our $opt_gcov;
our $opt_gcov_err;
......@@ -743,7 +743,7 @@ sub command_line_setup () {
# Use /dev/shm as the preferred location for vardir and
# thus implicitly also tmpdir. Add other locations to list
my @tmpfs_locations= ("/dev/shm");
my @tmpfs_locations= ($opt_mem, "/dev/shm");
# One could maybe use "mount" to find tmpfs location(s)
foreach my $fs (@tmpfs_locations)
{
......@@ -3361,6 +3361,11 @@ sub mysqld_arguments ($$$$$) {
if ( $opt_valgrind_mysqld )
{
mtr_add_arg($args, "%s--skip-safemalloc", $prefix);
if ( $mysql_version_id < 50100 )
{
mtr_add_arg($args, "%s--skip-bdb", $prefix);
}
}
my $pidfile;
......@@ -4643,9 +4648,9 @@ Options to control directories to use
vardir=DIR The directory where files generated from the test run
is stored (default: ./var). Specifying a ramdisk or
tmpfs will speed up tests.
mem=DIR Run testsuite in "memory" using tmpfs if
mem Run testsuite in "memory" using tmpfs if
available(default: /dev/shm)
reads path from MTR_MEM environment variable
Options to control what test suites or cases to run
......
......@@ -182,6 +182,81 @@ select 5.1 mod 3, 5.1 mod -3, -5.1 mod 3, -5.1 mod -3;
select 5 mod 3, 5 mod -3, -5 mod 3, -5 mod -3;
5 mod 3 5 mod -3 -5 mod 3 -5 mod -3
2 2 -2 -2
select (12%0) <=> null as '1';
1
1
select (12%0) is null as '1';
1
1
select 12%0 as 'NULL';
NULL
NULL
select 12%2 as '0';
0
0
select 12%NULL as 'NULL';
NULL
NULL
select 12 % null as 'NULL';
NULL
NULL
select null % 12 as 'NULL';
NULL
NULL
select null % 0 as 'NULL';
NULL
NULL
select 0 % null as 'NULL';
NULL
NULL
select null % null as 'NULL';
NULL
NULL
select (12 mod 0) <=> null as '1';
1
1
select (12 mod 0) is null as '1';
1
1
select 12 mod 0 as 'NULL';
NULL
NULL
select 12 mod 2 as '0';
0
0
select 12 mod null as 'NULL';
NULL
NULL
select null mod 12 as 'NULL';
NULL
NULL
select null mod 0 as 'NULL';
NULL
NULL
select 0 mod null as 'NULL';
NULL
NULL
select null mod null as 'NULL';
NULL
NULL
select mod(12.0, 0) as 'NULL';
NULL
NULL
select mod(12, 0.0) as 'NULL';
NULL
NULL
select mod(12, NULL) as 'NULL';
NULL
NULL
select mod(12.0, NULL) as 'NULL';
NULL
NULL
select mod(NULL, 2) as 'NULL';
NULL
NULL
select mod(NULL, 2.0) as 'NULL';
NULL
NULL
create table t1 (a int, b int);
insert into t1 values (1,2), (2,3), (3,4), (4,5);
select * from t1 where a not between 1 and 2;
......
......@@ -47,7 +47,7 @@ drop table t1;
mysqltest: Could not open connection 'default': 2026 SSL connection error
mysqltest: Could not open connection 'default': 2026 SSL connection error
mysqltest: Could not open connection 'default': 2026 SSL connection error
Error when connection to server using SSL:Unable to get private key from ''
SSL error: Unable to get private key from ''
mysqltest: Could not open connection 'default': 2026 SSL connection error
Error when connection to server using SSL:Unable to get certificate from ''
SSL error: Unable to get certificate from ''
mysqltest: Could not open connection 'default': 2026 SSL connection error
......@@ -47,11 +47,11 @@ show binlog events limit 1,100;
Log_name Pos Event_type Server_id End_log_pos Info
slave-bin.000001 # Query 1 # use `test`; create table t1 (a int)
slave-bin.000001 # Query 1 # use `test`; insert into t1 values (1)
slave-bin.000001 # Query 1 # use `test`; CREATE ALGORITHM=UNDEFINED DEFINER=root@localhost SQL SECURITY DEFINER VIEW v1 AS select a from t1
slave-bin.000001 # Query 1 # use `test`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select a from t1
slave-bin.000001 # Query 1 # use `test`; insert into v1 values (2)
slave-bin.000001 # Query 1 # use `test`; update v1 set a=3 where a=1
slave-bin.000001 # Query 1 # use `test`; delete from v1 where a=2
slave-bin.000001 # Query 1 # use `test`; ALTER ALGORITHM=UNDEFINED DEFINER=root@localhost SQL SECURITY DEFINER VIEW v1 AS select a as b from t1
slave-bin.000001 # Query 1 # use `test`; ALTER ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select a as b from t1
slave-bin.000001 # Query 1 # use `test`; drop view v1
slave-bin.000001 # Query 1 # use `test`; drop table t1
......
......@@ -108,6 +108,40 @@ select 5.1 mod 3, 5.1 mod -3, -5.1 mod 3, -5.1 mod -3;
select 5 mod 3, 5 mod -3, -5 mod 3, -5 mod -3;
#
# Bug#23411: The "%" (MOD) operator is not documented; MOD-ing zero returns strange result
# Manual: "Division by zero produces a NULL result"
#
select (12%0) <=> null as '1';
select (12%0) is null as '1';
select 12%0 as 'NULL';
select 12%2 as '0';
select 12%NULL as 'NULL';
select 12 % null as 'NULL';
select null % 12 as 'NULL';
select null % 0 as 'NULL';
select 0 % null as 'NULL';
select null % null as 'NULL';
select (12 mod 0) <=> null as '1';
select (12 mod 0) is null as '1';
select 12 mod 0 as 'NULL';
select 12 mod 2 as '0';
select 12 mod null as 'NULL';
select null mod 12 as 'NULL';
select null mod 0 as 'NULL';
select 0 mod null as 'NULL';
select null mod null as 'NULL';
select mod(12.0, 0) as 'NULL';
select mod(12, 0.0) as 'NULL';
select mod(12, NULL) as 'NULL';
select mod(12.0, NULL) as 'NULL';
select mod(NULL, 2) as 'NULL';
select mod(NULL, 2.0) as 'NULL';
#
# Bug#6726: NOT BETWEEN parse failure
#
create table t1 (a int, b int);
......
......@@ -105,7 +105,7 @@ Item_func::Item_func(THD *thd, Item_func *item)
/*
Resolve references to table column for a function and it's argument
Resolve references to table column for a function and its argument
SYNOPSIS:
fix_fields()
......@@ -1377,6 +1377,13 @@ void Item_func_mod::result_precision()
}
void Item_func_mod::fix_length_and_dec()
{
Item_num_op::fix_length_and_dec();
maybe_null= 1;
}
double Item_func_neg::real_op()
{
double value= args[0]->val_real();
......
......@@ -430,6 +430,7 @@ public:
my_decimal *decimal_op(my_decimal *);
const char *func_name() const { return "%"; }
void result_precision();
void fix_length_and_dec();
};
......
......@@ -2854,8 +2854,21 @@ improper_arguments: %d timed_out: %d",
void set_slave_thread_options(THD* thd)
{
thd->options = ((opt_log_slave_updates) ? OPTION_BIN_LOG:0) |
OPTION_AUTO_IS_NULL;
/*
It's nonsense to constrain the slave threads with max_join_size; if a
query succeeded on master, we HAVE to execute it. So set
OPTION_BIG_SELECTS. Setting max_join_size to HA_POS_ERROR is not enough
(and it's not needed if we have OPTION_BIG_SELECTS) because an INSERT
SELECT examining more than 4 billion rows would still fail (yes, because
when max_join_size is 4G, OPTION_BIG_SELECTS is automatically set, but
only for client threads.
*/
ulonglong options= thd->options | OPTION_BIG_SELECTS;
if (opt_log_slave_updates)
options|= OPTION_BIN_LOG;
else
options&= ~OPTION_BIN_LOG;
thd->options= options;
thd->variables.completion_type= 0;
}
......@@ -2885,17 +2898,6 @@ static int init_slave_thread(THD* thd, SLAVE_THD_TYPE thd_type)
thd->net.read_timeout = slave_net_timeout;
thd->slave_thread = 1;
set_slave_thread_options(thd);
/*
It's nonsense to constrain the slave threads with max_join_size; if a
query succeeded on master, we HAVE to execute it. So set
OPTION_BIG_SELECTS. Setting max_join_size to HA_POS_ERROR is not enough
(and it's not needed if we have OPTION_BIG_SELECTS) because an INSERT
SELECT examining more than 4 billion rows would still fail (yes, because
when max_join_size is 4G, OPTION_BIG_SELECTS is automatically set, but
only for client threads.
*/
thd->options = ((opt_log_slave_updates) ? OPTION_BIN_LOG:0) |
OPTION_AUTO_IS_NULL | OPTION_BIG_SELECTS;
thd->client_capabilities = CLIENT_LOCAL_FILES;
thd->real_id=pthread_self();
pthread_mutex_lock(&LOCK_thread_count);
......
......@@ -86,8 +86,7 @@ vio_set_cert_stuff(SSL_CTX *ctx, const char *cert_file, const char *key_file)
if (SSL_CTX_use_certificate_file(ctx, cert_file, SSL_FILETYPE_PEM) <= 0)
{
DBUG_PRINT("error",("unable to get certificate from '%s'\n", cert_file));
/* FIX stderr */
fprintf(stderr,"Error when connection to server using SSL:");
fprintf(stderr,"SSL error: ");
ERR_print_errors_fp(stderr);
fprintf(stderr,"Unable to get certificate from '%s'\n", cert_file);
fflush(stderr);
......@@ -100,8 +99,7 @@ vio_set_cert_stuff(SSL_CTX *ctx, const char *cert_file, const char *key_file)
if (SSL_CTX_use_PrivateKey_file(ctx, key_file, SSL_FILETYPE_PEM) <= 0)
{
DBUG_PRINT("error", ("unable to get private key from '%s'\n", key_file));
/* FIX stderr */
fprintf(stderr,"Error when connection to server using SSL:");
fprintf(stderr,"SSL error: ");
ERR_print_errors_fp(stderr);
fprintf(stderr,"Unable to get private key from '%s'\n", key_file);
fflush(stderr);
......@@ -252,6 +250,7 @@ new_VioSSLFd(const char *key_file, const char *cert_file,
{
DBUG_PRINT("error", ("failed to set ciphers to use"));
report_errors();
SSL_CTX_free(ssl_fd->ssl_context);
my_free((void*)ssl_fd,MYF(0));
DBUG_RETURN(0);
}
......@@ -264,6 +263,7 @@ new_VioSSLFd(const char *key_file, const char *cert_file,
{
DBUG_PRINT("error", ("SSL_CTX_set_default_verify_paths failed"));
report_errors();
SSL_CTX_free(ssl_fd->ssl_context);
my_free((void*)ssl_fd,MYF(0));
DBUG_RETURN(0);
}
......@@ -273,6 +273,7 @@ new_VioSSLFd(const char *key_file, const char *cert_file,
{
DBUG_PRINT("error", ("vio_set_cert_stuff failed"));
report_errors();
SSL_CTX_free(ssl_fd->ssl_context);
my_free((void*)ssl_fd,MYF(0));
DBUG_RETURN(0);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment