1typedef char my_bool; 2typedef int my_socket; 3enum enum_server_command 4{ 5 COM_SLEEP, COM_QUIT, COM_INIT_DB, COM_QUERY, COM_FIELD_LIST, 6 COM_CREATE_DB, COM_DROP_DB, COM_REFRESH, COM_SHUTDOWN, COM_STATISTICS, 7 COM_PROCESS_INFO, COM_CONNECT, COM_PROCESS_KILL, COM_DEBUG, COM_PING, 8 COM_TIME, COM_DELAYED_INSERT, COM_CHANGE_USER, COM_BINLOG_DUMP, 9 COM_TABLE_DUMP, COM_CONNECT_OUT, COM_REGISTER_SLAVE, 10 COM_STMT_PREPARE, COM_STMT_EXECUTE, COM_STMT_SEND_LONG_DATA, COM_STMT_CLOSE, 11 COM_STMT_RESET, COM_SET_OPTION, COM_STMT_FETCH, COM_DAEMON, 12 COM_UNIMPLEMENTED, 13 COM_RESET_CONNECTION, 14 COM_MDB_GAP_BEG, 15 COM_MDB_GAP_END=249, 16 COM_STMT_BULK_EXECUTE=250, 17 COM_SLAVE_WORKER=251, 18 COM_SLAVE_IO=252, 19 COM_SLAVE_SQL=253, 20 COM_MULTI=254, 21 COM_END=255 22}; 23enum enum_indicator_type 24{ 25 STMT_INDICATOR_NONE= 0, 26 STMT_INDICATOR_NULL, 27 STMT_INDICATOR_DEFAULT, 28 STMT_INDICATOR_IGNORE 29}; 30struct st_vio; 31typedef struct st_vio Vio; 32typedef struct st_net { 33 Vio *vio; 34 unsigned char *buff,*buff_end,*write_pos,*read_pos; 35 my_socket fd; 36 unsigned long remain_in_buf,length, buf_length, where_b; 37 unsigned long max_packet,max_packet_size; 38 unsigned int pkt_nr,compress_pkt_nr; 39 unsigned int write_timeout, read_timeout, retry_count; 40 int fcntl; 41 unsigned int *return_status; 42 unsigned char reading_or_writing; 43 char save_char; 44 char net_skip_rest_factor; 45 my_bool thread_specific_malloc; 46 unsigned char compress; 47 my_bool unused3; 48 void *thd; 49 unsigned int last_errno; 50 unsigned char error; 51 my_bool unused4; 52 my_bool unused5; 53 char last_error[512]; 54 char sqlstate[5 +1]; 55 void *extension; 56} NET; 57enum enum_field_types { MYSQL_TYPE_DECIMAL, MYSQL_TYPE_TINY, 58 MYSQL_TYPE_SHORT, MYSQL_TYPE_LONG, 59 MYSQL_TYPE_FLOAT, MYSQL_TYPE_DOUBLE, 60 MYSQL_TYPE_NULL, MYSQL_TYPE_TIMESTAMP, 61 MYSQL_TYPE_LONGLONG,MYSQL_TYPE_INT24, 62 MYSQL_TYPE_DATE, MYSQL_TYPE_TIME, 63 MYSQL_TYPE_DATETIME, MYSQL_TYPE_YEAR, 64 MYSQL_TYPE_NEWDATE, MYSQL_TYPE_VARCHAR, 65 MYSQL_TYPE_BIT, 66 MYSQL_TYPE_TIMESTAMP2, 67 MYSQL_TYPE_DATETIME2, 68 MYSQL_TYPE_TIME2, 69 MYSQL_TYPE_BLOB_COMPRESSED= 140, 70 MYSQL_TYPE_VARCHAR_COMPRESSED= 141, 71 MYSQL_TYPE_NEWDECIMAL=246, 72 MYSQL_TYPE_ENUM=247, 73 MYSQL_TYPE_SET=248, 74 MYSQL_TYPE_TINY_BLOB=249, 75 MYSQL_TYPE_MEDIUM_BLOB=250, 76 MYSQL_TYPE_LONG_BLOB=251, 77 MYSQL_TYPE_BLOB=252, 78 MYSQL_TYPE_VAR_STRING=253, 79 MYSQL_TYPE_STRING=254, 80 MYSQL_TYPE_GEOMETRY=255 81}; 82enum mysql_enum_shutdown_level { 83 SHUTDOWN_DEFAULT = 0, 84 SHUTDOWN_WAIT_CONNECTIONS= (unsigned char)(1 << 0), 85 SHUTDOWN_WAIT_TRANSACTIONS= (unsigned char)(1 << 1), 86 SHUTDOWN_WAIT_UPDATES= (unsigned char)(1 << 3), 87 SHUTDOWN_WAIT_ALL_BUFFERS= ((unsigned char)(1 << 3) << 1), 88 SHUTDOWN_WAIT_CRITICAL_BUFFERS= ((unsigned char)(1 << 3) << 1) + 1 89}; 90enum enum_cursor_type 91{ 92 CURSOR_TYPE_NO_CURSOR= 0, 93 CURSOR_TYPE_READ_ONLY= 1, 94 CURSOR_TYPE_FOR_UPDATE= 2, 95 CURSOR_TYPE_SCROLLABLE= 4 96}; 97enum enum_mysql_set_option 98{ 99 MYSQL_OPTION_MULTI_STATEMENTS_ON, 100 MYSQL_OPTION_MULTI_STATEMENTS_OFF 101}; 102enum enum_session_state_type 103{ 104 SESSION_TRACK_SYSTEM_VARIABLES, 105 SESSION_TRACK_SCHEMA, 106 SESSION_TRACK_STATE_CHANGE, 107 SESSION_TRACK_GTIDS, 108 SESSION_TRACK_TRANSACTION_CHARACTERISTICS, 109 SESSION_TRACK_TRANSACTION_STATE, 110 SESSION_TRACK_always_at_the_end 111}; 112my_bool my_net_init(NET *net, Vio* vio, void *thd, unsigned int my_flags); 113void my_net_local_init(NET *net); 114void net_end(NET *net); 115void net_clear(NET *net, my_bool clear_buffer); 116my_bool net_realloc(NET *net, size_t length); 117my_bool net_flush(NET *net); 118my_bool my_net_write(NET *net,const unsigned char *packet, size_t len); 119my_bool net_write_command(NET *net,unsigned char command, 120 const unsigned char *header, size_t head_len, 121 const unsigned char *packet, size_t len); 122int net_real_write(NET *net,const unsigned char *packet, size_t len); 123unsigned long my_net_read_packet(NET *net, my_bool read_from_server); 124unsigned long my_net_read_packet_reallen(NET *net, my_bool read_from_server, 125 unsigned long* reallen); 126struct sockaddr; 127int my_connect(my_socket s, const struct sockaddr *name, unsigned int namelen, 128 unsigned int timeout); 129struct my_rnd_struct; 130enum Item_result 131{ 132 STRING_RESULT=0, REAL_RESULT, INT_RESULT, ROW_RESULT, DECIMAL_RESULT, 133 TIME_RESULT 134}; 135typedef struct st_udf_args 136{ 137 unsigned int arg_count; 138 enum Item_result *arg_type; 139 char **args; 140 unsigned long *lengths; 141 char *maybe_null; 142 const char **attributes; 143 unsigned long *attribute_lengths; 144 void *extension; 145} UDF_ARGS; 146typedef struct st_udf_init 147{ 148 my_bool maybe_null; 149 unsigned int decimals; 150 unsigned long max_length; 151 char *ptr; 152 my_bool const_item; 153 void *extension; 154} UDF_INIT; 155void create_random_string(char *to, unsigned int length, 156 struct my_rnd_struct *rand_st); 157void hash_password(unsigned long *to, const char *password, unsigned int password_len); 158void make_scrambled_password_323(char *to, const char *password); 159void scramble_323(char *to, const char *message, const char *password); 160my_bool check_scramble_323(const unsigned char *reply, const char *message, 161 unsigned long *salt); 162void get_salt_from_password_323(unsigned long *res, const char *password); 163void make_scrambled_password(char *to, const char *password); 164void scramble(char *to, const char *message, const char *password); 165my_bool check_scramble(const unsigned char *reply, const char *message, 166 const unsigned char *hash_stage2); 167void get_salt_from_password(unsigned char *res, const char *password); 168char *octet2hex(char *to, const char *str, size_t len); 169char *get_tty_password(const char *opt_message); 170void get_tty_password_buff(const char *opt_message, char *to, size_t length); 171const char *mysql_errno_to_sqlstate(unsigned int mysql_errno); 172my_bool my_thread_init(void); 173void my_thread_end(void); 174typedef long my_time_t; 175enum enum_mysql_timestamp_type 176{ 177 MYSQL_TIMESTAMP_NONE= -2, MYSQL_TIMESTAMP_ERROR= -1, 178 MYSQL_TIMESTAMP_DATE= 0, MYSQL_TIMESTAMP_DATETIME= 1, MYSQL_TIMESTAMP_TIME= 2 179}; 180typedef struct st_mysql_time 181{ 182 unsigned int year, month, day, hour, minute, second; 183 unsigned long second_part; 184 my_bool neg; 185 enum enum_mysql_timestamp_type time_type; 186} MYSQL_TIME; 187typedef struct st_list { 188 struct st_list *prev,*next; 189 void *data; 190} LIST; 191typedef int (*list_walk_action)(void *,void *); 192extern LIST *list_add(LIST *root,LIST *element); 193extern LIST *list_delete(LIST *root,LIST *element); 194extern LIST *list_cons(void *data,LIST *root); 195extern LIST *list_reverse(LIST *root); 196extern void list_free(LIST *root,unsigned int free_data); 197extern unsigned int list_length(LIST *); 198extern int list_walk(LIST *,list_walk_action action,unsigned char * argument); 199extern unsigned int mariadb_deinitialize_ssl; 200extern unsigned int mysql_port; 201extern char *mysql_unix_port; 202typedef struct st_mysql_field { 203 char *name; 204 char *org_name; 205 char *table; 206 char *org_table; 207 char *db; 208 char *catalog; 209 char *def; 210 unsigned long length; 211 unsigned long max_length; 212 unsigned int name_length; 213 unsigned int org_name_length; 214 unsigned int table_length; 215 unsigned int org_table_length; 216 unsigned int db_length; 217 unsigned int catalog_length; 218 unsigned int def_length; 219 unsigned int flags; 220 unsigned int decimals; 221 unsigned int charsetnr; 222 enum enum_field_types type; 223 void *extension; 224} MYSQL_FIELD; 225typedef char **MYSQL_ROW; 226typedef unsigned int MYSQL_FIELD_OFFSET; 227typedef unsigned long long my_ulonglong; 228typedef struct st_used_mem 229{ 230 struct st_used_mem *next; 231 size_t left; 232 size_t size; 233} USED_MEM; 234typedef struct st_mem_root 235{ 236 USED_MEM *free; 237 USED_MEM *used; 238 USED_MEM *pre_alloc; 239 size_t min_malloc; 240 size_t block_size; 241 size_t total_alloc; 242 unsigned int block_num; 243 unsigned int first_block_usage; 244 void (*error_handler)(void); 245 const char *name; 246} MEM_ROOT; 247typedef struct st_typelib { 248 unsigned int count; 249 const char *name; 250 const char **type_names; 251 unsigned int *type_lengths; 252} TYPELIB; 253extern my_ulonglong find_typeset(char *x, TYPELIB *typelib,int *error_position); 254extern int find_type_with_warning(const char *x, TYPELIB *typelib, 255 const char *option); 256extern int find_type(const char *x, const TYPELIB *typelib, unsigned int flags); 257extern void make_type(char *to,unsigned int nr,TYPELIB *typelib); 258extern const char *get_type(TYPELIB *typelib,unsigned int nr); 259extern TYPELIB *copy_typelib(MEM_ROOT *root, TYPELIB *from); 260extern TYPELIB sql_protocol_typelib; 261my_ulonglong find_set_from_flags(const TYPELIB *lib, unsigned int default_name, 262 my_ulonglong cur_set, my_ulonglong default_set, 263 const char *str, unsigned int length, 264 char **err_pos, unsigned int *err_len); 265typedef struct st_mysql_rows { 266 struct st_mysql_rows *next; 267 MYSQL_ROW data; 268 unsigned long length; 269} MYSQL_ROWS; 270typedef MYSQL_ROWS *MYSQL_ROW_OFFSET; 271typedef struct embedded_query_result EMBEDDED_QUERY_RESULT; 272typedef struct st_mysql_data { 273 MYSQL_ROWS *data; 274 struct embedded_query_result *embedded_info; 275 MEM_ROOT alloc; 276 my_ulonglong rows; 277 unsigned int fields; 278 void *extension; 279} MYSQL_DATA; 280enum mysql_option 281{ 282 MYSQL_OPT_CONNECT_TIMEOUT, MYSQL_OPT_COMPRESS, MYSQL_OPT_NAMED_PIPE, 283 MYSQL_INIT_COMMAND, MYSQL_READ_DEFAULT_FILE, MYSQL_READ_DEFAULT_GROUP, 284 MYSQL_SET_CHARSET_DIR, MYSQL_SET_CHARSET_NAME, MYSQL_OPT_LOCAL_INFILE, 285 MYSQL_OPT_PROTOCOL, MYSQL_SHARED_MEMORY_BASE_NAME, MYSQL_OPT_READ_TIMEOUT, 286 MYSQL_OPT_WRITE_TIMEOUT, MYSQL_OPT_USE_RESULT, 287 MYSQL_OPT_USE_REMOTE_CONNECTION, MYSQL_OPT_USE_EMBEDDED_CONNECTION, 288 MYSQL_OPT_GUESS_CONNECTION, MYSQL_SET_CLIENT_IP, MYSQL_SECURE_AUTH, 289 MYSQL_REPORT_DATA_TRUNCATION, MYSQL_OPT_RECONNECT, 290 MYSQL_OPT_SSL_VERIFY_SERVER_CERT, MYSQL_PLUGIN_DIR, MYSQL_DEFAULT_AUTH, 291 MYSQL_OPT_BIND, 292 MYSQL_OPT_SSL_KEY, MYSQL_OPT_SSL_CERT, 293 MYSQL_OPT_SSL_CA, MYSQL_OPT_SSL_CAPATH, MYSQL_OPT_SSL_CIPHER, 294 MYSQL_OPT_SSL_CRL, MYSQL_OPT_SSL_CRLPATH, 295 MYSQL_OPT_CONNECT_ATTR_RESET, MYSQL_OPT_CONNECT_ATTR_ADD, 296 MYSQL_OPT_CONNECT_ATTR_DELETE, 297 MYSQL_SERVER_PUBLIC_KEY, 298 MYSQL_ENABLE_CLEARTEXT_PLUGIN, 299 MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, 300 MYSQL_PROGRESS_CALLBACK=5999, 301 MYSQL_OPT_NONBLOCK, 302 MYSQL_OPT_USE_THREAD_SPECIFIC_MEMORY 303}; 304struct st_mysql_options_extention; 305struct st_mysql_options { 306 unsigned int connect_timeout, read_timeout, write_timeout; 307 unsigned int port, protocol; 308 unsigned long client_flag; 309 char *host,*user,*password,*unix_socket,*db; 310 struct st_dynamic_array *init_commands; 311 char *my_cnf_file,*my_cnf_group, *charset_dir, *charset_name; 312 char *ssl_key; 313 char *ssl_cert; 314 char *ssl_ca; 315 char *ssl_capath; 316 char *ssl_cipher; 317 char *shared_memory_base_name; 318 unsigned long max_allowed_packet; 319 my_bool use_ssl; 320 my_bool compress,named_pipe; 321 my_bool use_thread_specific_memory; 322 my_bool unused2; 323 my_bool unused3; 324 my_bool unused4; 325 enum mysql_option methods_to_use; 326 char *client_ip; 327 my_bool secure_auth; 328 my_bool report_data_truncation; 329 int (*local_infile_init)(void **, const char *, void *); 330 int (*local_infile_read)(void *, char *, unsigned int); 331 void (*local_infile_end)(void *); 332 int (*local_infile_error)(void *, char *, unsigned int); 333 void *local_infile_userdata; 334 struct st_mysql_options_extention *extension; 335}; 336enum mysql_status 337{ 338 MYSQL_STATUS_READY, MYSQL_STATUS_GET_RESULT, MYSQL_STATUS_USE_RESULT, 339 MYSQL_STATUS_STATEMENT_GET_RESULT 340}; 341enum mysql_protocol_type 342{ 343 MYSQL_PROTOCOL_DEFAULT, MYSQL_PROTOCOL_TCP, MYSQL_PROTOCOL_SOCKET, 344 MYSQL_PROTOCOL_PIPE, MYSQL_PROTOCOL_MEMORY 345}; 346typedef struct character_set 347{ 348 unsigned int number; 349 unsigned int state; 350 const char *csname; 351 const char *name; 352 const char *comment; 353 const char *dir; 354 unsigned int mbminlen; 355 unsigned int mbmaxlen; 356} MY_CHARSET_INFO; 357struct st_mysql_methods; 358struct st_mysql_stmt; 359typedef struct st_mysql 360{ 361 NET net; 362 unsigned char *connector_fd; 363 char *host,*user,*passwd,*unix_socket,*server_version,*host_info; 364 char *info, *db; 365 const struct charset_info_st *charset; 366 MYSQL_FIELD *fields; 367 MEM_ROOT field_alloc; 368 my_ulonglong affected_rows; 369 my_ulonglong insert_id; 370 my_ulonglong extra_info; 371 unsigned long thread_id; 372 unsigned long packet_length; 373 unsigned int port; 374 unsigned long client_flag,server_capabilities; 375 unsigned int protocol_version; 376 unsigned int field_count; 377 unsigned int server_status; 378 unsigned int server_language; 379 unsigned int warning_count; 380 struct st_mysql_options options; 381 enum mysql_status status; 382 my_bool free_me; 383 my_bool reconnect; 384 char scramble[20 +1]; 385 my_bool auto_local_infile; 386 void *unused2, *unused3, *unused4, *unused5; 387 LIST *stmts; 388 const struct st_mysql_methods *methods; 389 void *thd; 390 my_bool *unbuffered_fetch_owner; 391 char *info_buffer; 392 void *extension; 393} MYSQL; 394typedef struct st_mysql_res { 395 my_ulonglong row_count; 396 MYSQL_FIELD *fields; 397 MYSQL_DATA *data; 398 MYSQL_ROWS *data_cursor; 399 unsigned long *lengths; 400 MYSQL *handle; 401 const struct st_mysql_methods *methods; 402 MYSQL_ROW row; 403 MYSQL_ROW current_row; 404 MEM_ROOT field_alloc; 405 unsigned int field_count, current_field; 406 my_bool eof; 407 my_bool unbuffered_fetch_cancelled; 408 void *extension; 409} MYSQL_RES; 410typedef struct st_mysql_parameters 411{ 412 unsigned long *p_max_allowed_packet; 413 unsigned long *p_net_buffer_length; 414 void *extension; 415} MYSQL_PARAMETERS; 416int mysql_server_init(int argc, char **argv, char **groups); 417void mysql_server_end(void); 418MYSQL_PARAMETERS * mysql_get_parameters(void); 419my_bool mysql_thread_init(void); 420void mysql_thread_end(void); 421my_ulonglong mysql_num_rows(MYSQL_RES *res); 422unsigned int mysql_num_fields(MYSQL_RES *res); 423my_bool mysql_eof(MYSQL_RES *res); 424MYSQL_FIELD * mysql_fetch_field_direct(MYSQL_RES *res, 425 unsigned int fieldnr); 426MYSQL_FIELD * mysql_fetch_fields(MYSQL_RES *res); 427MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *res); 428MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RES *res); 429unsigned int mysql_field_count(MYSQL *mysql); 430my_ulonglong mysql_affected_rows(MYSQL *mysql); 431my_ulonglong mysql_insert_id(MYSQL *mysql); 432unsigned int mysql_errno(MYSQL *mysql); 433const char * mysql_error(MYSQL *mysql); 434const char * mysql_sqlstate(MYSQL *mysql); 435unsigned int mysql_warning_count(MYSQL *mysql); 436const char * mysql_info(MYSQL *mysql); 437unsigned long mysql_thread_id(MYSQL *mysql); 438const char * mysql_character_set_name(MYSQL *mysql); 439int mysql_set_character_set(MYSQL *mysql, const char *csname); 440int mysql_set_character_set_start(int *ret, MYSQL *mysql, 441 const char *csname); 442int mysql_set_character_set_cont(int *ret, MYSQL *mysql, 443 int status); 444MYSQL * mysql_init(MYSQL *mysql); 445my_bool mysql_ssl_set(MYSQL *mysql, const char *key, 446 const char *cert, const char *ca, 447 const char *capath, const char *cipher); 448const char * mysql_get_ssl_cipher(MYSQL *mysql); 449my_bool mysql_change_user(MYSQL *mysql, const char *user, 450 const char *passwd, const char *db); 451int mysql_change_user_start(my_bool *ret, MYSQL *mysql, 452 const char *user, 453 const char *passwd, 454 const char *db); 455int mysql_change_user_cont(my_bool *ret, MYSQL *mysql, 456 int status); 457MYSQL * mysql_real_connect(MYSQL *mysql, const char *host, 458 const char *user, 459 const char *passwd, 460 const char *db, 461 unsigned int port, 462 const char *unix_socket, 463 unsigned long clientflag); 464int mysql_real_connect_start(MYSQL **ret, MYSQL *mysql, 465 const char *host, 466 const char *user, 467 const char *passwd, 468 const char *db, 469 unsigned int port, 470 const char *unix_socket, 471 unsigned long clientflag); 472int mysql_real_connect_cont(MYSQL **ret, MYSQL *mysql, 473 int status); 474int mysql_select_db(MYSQL *mysql, const char *db); 475int mysql_select_db_start(int *ret, MYSQL *mysql, 476 const char *db); 477int mysql_select_db_cont(int *ret, MYSQL *mysql, 478 int status); 479int mysql_query(MYSQL *mysql, const char *q); 480int mysql_query_start(int *ret, MYSQL *mysql, 481 const char *q); 482int mysql_query_cont(int *ret, MYSQL *mysql, 483 int status); 484int mysql_send_query(MYSQL *mysql, const char *q, 485 unsigned long length); 486int mysql_send_query_start(int *ret, MYSQL *mysql, 487 const char *q, 488 unsigned long length); 489int mysql_send_query_cont(int *ret, MYSQL *mysql, 490 int status); 491int mysql_real_query(MYSQL *mysql, const char *q, 492 unsigned long length); 493int mysql_real_query_start(int *ret, MYSQL *mysql, 494 const char *q, 495 unsigned long length); 496int mysql_real_query_cont(int *ret, MYSQL *mysql, 497 int status); 498MYSQL_RES * mysql_store_result(MYSQL *mysql); 499int mysql_store_result_start(MYSQL_RES **ret, MYSQL *mysql); 500int mysql_store_result_cont(MYSQL_RES **ret, MYSQL *mysql, 501 int status); 502MYSQL_RES * mysql_use_result(MYSQL *mysql); 503void mysql_get_character_set_info(MYSQL *mysql, 504 MY_CHARSET_INFO *charset); 505void 506mysql_set_local_infile_handler(MYSQL *mysql, 507 int (*local_infile_init)(void **, const char *, 508 void *), 509 int (*local_infile_read)(void *, char *, 510 unsigned int), 511 void (*local_infile_end)(void *), 512 int (*local_infile_error)(void *, char*, 513 unsigned int), 514 void *); 515void 516mysql_set_local_infile_default(MYSQL *mysql); 517int mysql_shutdown(MYSQL *mysql, 518 enum mysql_enum_shutdown_level 519 shutdown_level); 520int mysql_shutdown_start(int *ret, MYSQL *mysql, 521 enum mysql_enum_shutdown_level 522 shutdown_level); 523int mysql_shutdown_cont(int *ret, MYSQL *mysql, 524 int status); 525int mysql_dump_debug_info(MYSQL *mysql); 526int mysql_dump_debug_info_start(int *ret, MYSQL *mysql); 527int mysql_dump_debug_info_cont(int *ret, MYSQL *mysql, 528 int status); 529int mysql_refresh(MYSQL *mysql, 530 unsigned int refresh_options); 531int mysql_refresh_start(int *ret, MYSQL *mysql, 532 unsigned int refresh_options); 533int mysql_refresh_cont(int *ret, MYSQL *mysql, int status); 534int mysql_kill(MYSQL *mysql,unsigned long pid); 535int mysql_kill_start(int *ret, MYSQL *mysql, 536 unsigned long pid); 537int mysql_kill_cont(int *ret, MYSQL *mysql, int status); 538int mysql_set_server_option(MYSQL *mysql, 539 enum enum_mysql_set_option 540 option); 541int mysql_set_server_option_start(int *ret, MYSQL *mysql, 542 enum enum_mysql_set_option 543 option); 544int mysql_set_server_option_cont(int *ret, MYSQL *mysql, 545 int status); 546int mysql_ping(MYSQL *mysql); 547int mysql_ping_start(int *ret, MYSQL *mysql); 548int mysql_ping_cont(int *ret, MYSQL *mysql, int status); 549const char * mysql_stat(MYSQL *mysql); 550int mysql_stat_start(const char **ret, MYSQL *mysql); 551int mysql_stat_cont(const char **ret, MYSQL *mysql, 552 int status); 553const char * mysql_get_server_info(MYSQL *mysql); 554const char * mysql_get_server_name(MYSQL *mysql); 555const char * mysql_get_client_info(void); 556unsigned long mysql_get_client_version(void); 557const char * mysql_get_host_info(MYSQL *mysql); 558unsigned long mysql_get_server_version(MYSQL *mysql); 559unsigned int mysql_get_proto_info(MYSQL *mysql); 560MYSQL_RES * mysql_list_dbs(MYSQL *mysql,const char *wild); 561int mysql_list_dbs_start(MYSQL_RES **ret, MYSQL *mysql, 562 const char *wild); 563int mysql_list_dbs_cont(MYSQL_RES **ret, MYSQL *mysql, 564 int status); 565MYSQL_RES * mysql_list_tables(MYSQL *mysql,const char *wild); 566int mysql_list_tables_start(MYSQL_RES **ret, MYSQL *mysql, 567 const char *wild); 568int mysql_list_tables_cont(MYSQL_RES **ret, MYSQL *mysql, 569 int status); 570MYSQL_RES * mysql_list_processes(MYSQL *mysql); 571int mysql_list_processes_start(MYSQL_RES **ret, 572 MYSQL *mysql); 573int mysql_list_processes_cont(MYSQL_RES **ret, MYSQL *mysql, 574 int status); 575int mysql_options(MYSQL *mysql,enum mysql_option option, 576 const void *arg); 577int mysql_options4(MYSQL *mysql,enum mysql_option option, 578 const void *arg1, const void *arg2); 579void mysql_free_result(MYSQL_RES *result); 580int mysql_free_result_start(MYSQL_RES *result); 581int mysql_free_result_cont(MYSQL_RES *result, int status); 582void mysql_data_seek(MYSQL_RES *result, 583 my_ulonglong offset); 584MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *result, 585 MYSQL_ROW_OFFSET offset); 586MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result, 587 MYSQL_FIELD_OFFSET offset); 588MYSQL_ROW mysql_fetch_row(MYSQL_RES *result); 589int mysql_fetch_row_start(MYSQL_ROW *ret, 590 MYSQL_RES *result); 591int mysql_fetch_row_cont(MYSQL_ROW *ret, MYSQL_RES *result, 592 int status); 593unsigned long * mysql_fetch_lengths(MYSQL_RES *result); 594MYSQL_FIELD * mysql_fetch_field(MYSQL_RES *result); 595MYSQL_RES * mysql_list_fields(MYSQL *mysql, const char *table, 596 const char *wild); 597int mysql_list_fields_start(MYSQL_RES **ret, MYSQL *mysql, 598 const char *table, 599 const char *wild); 600int mysql_list_fields_cont(MYSQL_RES **ret, MYSQL *mysql, 601 int status); 602unsigned long mysql_escape_string(char *to,const char *from, 603 unsigned long from_length); 604unsigned long mysql_hex_string(char *to,const char *from, 605 unsigned long from_length); 606unsigned long mysql_real_escape_string(MYSQL *mysql, 607 char *to,const char *from, 608 unsigned long length); 609void mysql_debug(const char *debug); 610void myodbc_remove_escape(MYSQL *mysql,char *name); 611unsigned int mysql_thread_safe(void); 612my_bool mysql_embedded(void); 613my_bool mariadb_connection(MYSQL *mysql); 614my_bool mysql_read_query_result(MYSQL *mysql); 615int mysql_read_query_result_start(my_bool *ret, 616 MYSQL *mysql); 617int mysql_read_query_result_cont(my_bool *ret, 618 MYSQL *mysql, int status); 619enum enum_mysql_stmt_state 620{ 621 MYSQL_STMT_INIT_DONE= 1, MYSQL_STMT_PREPARE_DONE, MYSQL_STMT_EXECUTE_DONE, 622 MYSQL_STMT_FETCH_DONE 623}; 624typedef struct st_mysql_bind 625{ 626 unsigned long *length; 627 my_bool *is_null; 628 void *buffer; 629 my_bool *error; 630 unsigned char *row_ptr; 631 void (*store_param_func)(NET *net, struct st_mysql_bind *param); 632 void (*fetch_result)(struct st_mysql_bind *, MYSQL_FIELD *, 633 unsigned char **row); 634 void (*skip_result)(struct st_mysql_bind *, MYSQL_FIELD *, 635 unsigned char **row); 636 unsigned long buffer_length; 637 unsigned long offset; 638 unsigned long length_value; 639 unsigned int param_number; 640 unsigned int pack_length; 641 enum enum_field_types buffer_type; 642 my_bool error_value; 643 my_bool is_unsigned; 644 my_bool long_data_used; 645 my_bool is_null_value; 646 void *extension; 647} MYSQL_BIND; 648struct st_mysql_stmt_extension; 649typedef struct st_mysql_stmt 650{ 651 MEM_ROOT mem_root; 652 LIST list; 653 MYSQL *mysql; 654 MYSQL_BIND *params; 655 MYSQL_BIND *bind; 656 MYSQL_FIELD *fields; 657 MYSQL_DATA result; 658 MYSQL_ROWS *data_cursor; 659 int (*read_row_func)(struct st_mysql_stmt *stmt, 660 unsigned char **row); 661 my_ulonglong affected_rows; 662 my_ulonglong insert_id; 663 unsigned long stmt_id; 664 unsigned long flags; 665 unsigned long prefetch_rows; 666 unsigned int server_status; 667 unsigned int last_errno; 668 unsigned int param_count; 669 unsigned int field_count; 670 enum enum_mysql_stmt_state state; 671 char last_error[512]; 672 char sqlstate[5 +1]; 673 my_bool send_types_to_server; 674 my_bool bind_param_done; 675 unsigned char bind_result_done; 676 my_bool unbuffered_fetch_cancelled; 677 my_bool update_max_length; 678 struct st_mysql_stmt_extension *extension; 679} MYSQL_STMT; 680enum enum_stmt_attr_type 681{ 682 STMT_ATTR_UPDATE_MAX_LENGTH, 683 STMT_ATTR_CURSOR_TYPE, 684 STMT_ATTR_PREFETCH_ROWS 685}; 686MYSQL_STMT * mysql_stmt_init(MYSQL *mysql); 687int mysql_stmt_prepare(MYSQL_STMT *stmt, const char *query, 688 unsigned long length); 689int mysql_stmt_prepare_start(int *ret, MYSQL_STMT *stmt, 690 const char *query, unsigned long length); 691int mysql_stmt_prepare_cont(int *ret, MYSQL_STMT *stmt, int status); 692int mysql_stmt_execute(MYSQL_STMT *stmt); 693int mysql_stmt_execute_start(int *ret, MYSQL_STMT *stmt); 694int mysql_stmt_execute_cont(int *ret, MYSQL_STMT *stmt, int status); 695int mysql_stmt_fetch(MYSQL_STMT *stmt); 696int mysql_stmt_fetch_start(int *ret, MYSQL_STMT *stmt); 697int mysql_stmt_fetch_cont(int *ret, MYSQL_STMT *stmt, int status); 698int mysql_stmt_fetch_column(MYSQL_STMT *stmt, MYSQL_BIND *bind_arg, 699 unsigned int column, 700 unsigned long offset); 701int mysql_stmt_store_result(MYSQL_STMT *stmt); 702int mysql_stmt_store_result_start(int *ret, MYSQL_STMT *stmt); 703int mysql_stmt_store_result_cont(int *ret, MYSQL_STMT *stmt, 704 int status); 705unsigned long mysql_stmt_param_count(MYSQL_STMT * stmt); 706my_bool mysql_stmt_attr_set(MYSQL_STMT *stmt, 707 enum enum_stmt_attr_type attr_type, 708 const void *attr); 709my_bool mysql_stmt_attr_get(MYSQL_STMT *stmt, 710 enum enum_stmt_attr_type attr_type, 711 void *attr); 712my_bool mysql_stmt_bind_param(MYSQL_STMT * stmt, MYSQL_BIND * bnd); 713my_bool mysql_stmt_bind_result(MYSQL_STMT * stmt, MYSQL_BIND * bnd); 714my_bool mysql_stmt_close(MYSQL_STMT * stmt); 715int mysql_stmt_close_start(my_bool *ret, MYSQL_STMT *stmt); 716int mysql_stmt_close_cont(my_bool *ret, MYSQL_STMT * stmt, int status); 717my_bool mysql_stmt_reset(MYSQL_STMT * stmt); 718int mysql_stmt_reset_start(my_bool *ret, MYSQL_STMT * stmt); 719int mysql_stmt_reset_cont(my_bool *ret, MYSQL_STMT *stmt, int status); 720my_bool mysql_stmt_free_result(MYSQL_STMT *stmt); 721int mysql_stmt_free_result_start(my_bool *ret, MYSQL_STMT *stmt); 722int mysql_stmt_free_result_cont(my_bool *ret, MYSQL_STMT *stmt, 723 int status); 724my_bool mysql_stmt_send_long_data(MYSQL_STMT *stmt, 725 unsigned int param_number, 726 const char *data, 727 unsigned long length); 728int mysql_stmt_send_long_data_start(my_bool *ret, MYSQL_STMT *stmt, 729 unsigned int param_number, 730 const char *data, 731 unsigned long len); 732int mysql_stmt_send_long_data_cont(my_bool *ret, MYSQL_STMT *stmt, 733 int status); 734MYSQL_RES * mysql_stmt_result_metadata(MYSQL_STMT *stmt); 735MYSQL_RES * mysql_stmt_param_metadata(MYSQL_STMT *stmt); 736unsigned int mysql_stmt_errno(MYSQL_STMT * stmt); 737const char * mysql_stmt_error(MYSQL_STMT * stmt); 738const char * mysql_stmt_sqlstate(MYSQL_STMT * stmt); 739MYSQL_ROW_OFFSET mysql_stmt_row_seek(MYSQL_STMT *stmt, 740 MYSQL_ROW_OFFSET offset); 741MYSQL_ROW_OFFSET mysql_stmt_row_tell(MYSQL_STMT *stmt); 742void mysql_stmt_data_seek(MYSQL_STMT *stmt, my_ulonglong offset); 743my_ulonglong mysql_stmt_num_rows(MYSQL_STMT *stmt); 744my_ulonglong mysql_stmt_affected_rows(MYSQL_STMT *stmt); 745my_ulonglong mysql_stmt_insert_id(MYSQL_STMT *stmt); 746unsigned int mysql_stmt_field_count(MYSQL_STMT *stmt); 747my_bool mysql_commit(MYSQL * mysql); 748int mysql_commit_start(my_bool *ret, MYSQL * mysql); 749int mysql_commit_cont(my_bool *ret, MYSQL * mysql, int status); 750my_bool mysql_rollback(MYSQL * mysql); 751int mysql_rollback_start(my_bool *ret, MYSQL * mysql); 752int mysql_rollback_cont(my_bool *ret, MYSQL * mysql, int status); 753my_bool mysql_autocommit(MYSQL * mysql, my_bool auto_mode); 754int mysql_autocommit_start(my_bool *ret, MYSQL * mysql, 755 my_bool auto_mode); 756int mysql_autocommit_cont(my_bool *ret, MYSQL * mysql, int status); 757my_bool mysql_more_results(MYSQL *mysql); 758int mysql_next_result(MYSQL *mysql); 759int mysql_next_result_start(int *ret, MYSQL *mysql); 760int mysql_next_result_cont(int *ret, MYSQL *mysql, int status); 761int mysql_stmt_next_result(MYSQL_STMT *stmt); 762int mysql_stmt_next_result_start(int *ret, MYSQL_STMT *stmt); 763int mysql_stmt_next_result_cont(int *ret, MYSQL_STMT *stmt, int status); 764void mysql_close_slow_part(MYSQL *mysql); 765void mysql_close(MYSQL *sock); 766int mysql_close_start(MYSQL *sock); 767int mysql_close_cont(MYSQL *sock, int status); 768my_socket mysql_get_socket(const MYSQL *mysql); 769unsigned int mysql_get_timeout_value(const MYSQL *mysql); 770unsigned int mysql_get_timeout_value_ms(const MYSQL *mysql); 771unsigned long mysql_net_read_packet(MYSQL *mysql); 772unsigned long mysql_net_field_length(unsigned char **packet); 773