mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
291fd96983
Makefile.am: add new API files to the check_abi rule, remove duplicates client/CMakeLists.txt: now a client can use dlopen too client/Makefile.am: be csh-friendly include/my_global.h: add dummy plugs for dlopen and co. for the code that needs them to work in static builds mysys/Makefile.am: be csh-friendly plugin/auth/dialog.c: typo fixed
648 lines
22 KiB
ObjectPascal
648 lines
22 KiB
ObjectPascal
#include <sys/types.h>
|
|
typedef char my_bool;
|
|
typedef int my_socket;
|
|
#include "mysql_version.h"
|
|
#include "mysql_com.h"
|
|
enum enum_server_command
|
|
{
|
|
COM_SLEEP, COM_QUIT, COM_INIT_DB, COM_QUERY, COM_FIELD_LIST,
|
|
COM_CREATE_DB, COM_DROP_DB, COM_REFRESH, COM_SHUTDOWN, COM_STATISTICS,
|
|
COM_PROCESS_INFO, COM_CONNECT, COM_PROCESS_KILL, COM_DEBUG, COM_PING,
|
|
COM_TIME, COM_DELAYED_INSERT, COM_CHANGE_USER, COM_BINLOG_DUMP,
|
|
COM_TABLE_DUMP, COM_CONNECT_OUT, COM_REGISTER_SLAVE,
|
|
COM_STMT_PREPARE, COM_STMT_EXECUTE, COM_STMT_SEND_LONG_DATA, COM_STMT_CLOSE,
|
|
COM_STMT_RESET, COM_SET_OPTION, COM_STMT_FETCH, COM_DAEMON,
|
|
COM_END
|
|
};
|
|
struct st_vio;
|
|
typedef struct st_vio Vio;
|
|
typedef struct st_net {
|
|
Vio *vio;
|
|
unsigned char *buff,*buff_end,*write_pos,*read_pos;
|
|
my_socket fd;
|
|
unsigned long remain_in_buf,length, buf_length, where_b;
|
|
unsigned long max_packet,max_packet_size;
|
|
unsigned int pkt_nr,compress_pkt_nr;
|
|
unsigned int write_timeout, read_timeout, retry_count;
|
|
int fcntl;
|
|
unsigned int *return_status;
|
|
unsigned char reading_or_writing;
|
|
char save_char;
|
|
char net_skip_rest_factor;
|
|
my_bool unused;
|
|
my_bool compress;
|
|
my_bool unused1;
|
|
unsigned char *query_cache_query;
|
|
unsigned int last_errno;
|
|
unsigned char error;
|
|
my_bool unused2;
|
|
my_bool return_errno;
|
|
char last_error[512];
|
|
char sqlstate[5 +1];
|
|
void *extension;
|
|
} NET;
|
|
enum enum_field_types { MYSQL_TYPE_DECIMAL, MYSQL_TYPE_TINY,
|
|
MYSQL_TYPE_SHORT, MYSQL_TYPE_LONG,
|
|
MYSQL_TYPE_FLOAT, MYSQL_TYPE_DOUBLE,
|
|
MYSQL_TYPE_NULL, MYSQL_TYPE_TIMESTAMP,
|
|
MYSQL_TYPE_LONGLONG,MYSQL_TYPE_INT24,
|
|
MYSQL_TYPE_DATE, MYSQL_TYPE_TIME,
|
|
MYSQL_TYPE_DATETIME, MYSQL_TYPE_YEAR,
|
|
MYSQL_TYPE_NEWDATE, MYSQL_TYPE_VARCHAR,
|
|
MYSQL_TYPE_BIT,
|
|
MYSQL_TYPE_NEWDECIMAL=246,
|
|
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
|
|
};
|
|
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_QUERY= 254,
|
|
KILL_CONNECTION= 255
|
|
};
|
|
enum enum_cursor_type
|
|
{
|
|
CURSOR_TYPE_NO_CURSOR= 0,
|
|
CURSOR_TYPE_READ_ONLY= 1,
|
|
CURSOR_TYPE_FOR_UPDATE= 2,
|
|
CURSOR_TYPE_SCROLLABLE= 4
|
|
};
|
|
enum enum_mysql_set_option
|
|
{
|
|
MYSQL_OPTION_MULTI_STATEMENTS_ON,
|
|
MYSQL_OPTION_MULTI_STATEMENTS_OFF
|
|
};
|
|
my_bool my_net_init(NET *net, Vio* vio);
|
|
void my_net_local_init(NET *net);
|
|
void net_end(NET *net);
|
|
void net_clear(NET *net, my_bool clear_buffer);
|
|
my_bool net_realloc(NET *net, size_t length);
|
|
my_bool net_flush(NET *net);
|
|
my_bool my_net_write(NET *net,const unsigned char *packet, size_t len);
|
|
my_bool net_write_command(NET *net,unsigned char command,
|
|
const unsigned char *header, size_t head_len,
|
|
const unsigned char *packet, size_t len);
|
|
int net_real_write(NET *net,const unsigned char *packet, size_t len);
|
|
unsigned long my_net_read(NET *net);
|
|
struct sockaddr;
|
|
int my_connect(my_socket s, const struct sockaddr *name, unsigned int namelen,
|
|
unsigned int timeout);
|
|
struct my_rnd_struct;
|
|
enum Item_result
|
|
{
|
|
STRING_RESULT=0, REAL_RESULT, INT_RESULT, ROW_RESULT, DECIMAL_RESULT
|
|
};
|
|
typedef struct st_udf_args
|
|
{
|
|
unsigned int arg_count;
|
|
enum Item_result *arg_type;
|
|
char **args;
|
|
unsigned long *lengths;
|
|
char *maybe_null;
|
|
char **attributes;
|
|
unsigned long *attribute_lengths;
|
|
void *extension;
|
|
} UDF_ARGS;
|
|
typedef struct st_udf_init
|
|
{
|
|
my_bool maybe_null;
|
|
unsigned int decimals;
|
|
unsigned long max_length;
|
|
char *ptr;
|
|
my_bool const_item;
|
|
void *extension;
|
|
} UDF_INIT;
|
|
void create_random_string(char *to, unsigned int length,
|
|
struct my_rnd_struct *rand_st);
|
|
void hash_password(unsigned long *to, const char *password, unsigned int password_len);
|
|
void make_scrambled_password_323(char *to, const char *password);
|
|
void scramble_323(char *to, const char *message, const char *password);
|
|
my_bool check_scramble_323(const unsigned char *reply, const char *message,
|
|
unsigned long *salt);
|
|
void get_salt_from_password_323(unsigned long *res, const char *password);
|
|
void make_password_from_salt_323(char *to, const unsigned long *salt);
|
|
void make_scrambled_password(char *to, const char *password);
|
|
void scramble(char *to, const char *message, const char *password);
|
|
my_bool check_scramble(const unsigned char *reply, const char *message,
|
|
const unsigned char *hash_stage2);
|
|
void get_salt_from_password(unsigned char *res, const char *password);
|
|
void make_password_from_salt(char *to, const unsigned char *hash_stage2);
|
|
char *octet2hex(char *to, const char *str, unsigned int len);
|
|
char *get_tty_password(const char *opt_message);
|
|
const char *mysql_errno_to_sqlstate(unsigned int mysql_errno);
|
|
my_bool my_thread_init(void);
|
|
void my_thread_end(void);
|
|
#include "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
|
|
};
|
|
typedef struct st_mysql_time
|
|
{
|
|
unsigned int year, month, day, hour, minute, second;
|
|
unsigned long second_part;
|
|
my_bool neg;
|
|
enum enum_mysql_timestamp_type time_type;
|
|
} MYSQL_TIME;
|
|
#include "my_list.h"
|
|
typedef struct st_list {
|
|
struct st_list *prev,*next;
|
|
void *data;
|
|
} LIST;
|
|
typedef int (*list_walk_action)(void *,void *);
|
|
extern LIST *list_add(LIST *root,LIST *element);
|
|
extern LIST *list_delete(LIST *root,LIST *element);
|
|
extern LIST *list_cons(void *data,LIST *root);
|
|
extern LIST *list_reverse(LIST *root);
|
|
extern void list_free(LIST *root,unsigned int free_data);
|
|
extern unsigned int list_length(LIST *);
|
|
extern int list_walk(LIST *,list_walk_action action,unsigned char * argument);
|
|
extern unsigned int mysql_port;
|
|
extern char *mysql_unix_port;
|
|
typedef struct st_mysql_field {
|
|
char *name;
|
|
char *org_name;
|
|
char *table;
|
|
char *org_table;
|
|
char *db;
|
|
char *catalog;
|
|
char *def;
|
|
unsigned long length;
|
|
unsigned long 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;
|
|
void *extension;
|
|
} MYSQL_FIELD;
|
|
typedef char **MYSQL_ROW;
|
|
typedef unsigned int MYSQL_FIELD_OFFSET;
|
|
typedef unsigned long long my_ulonglong;
|
|
#include "typelib.h"
|
|
#include "my_alloc.h"
|
|
typedef struct st_used_mem
|
|
{
|
|
struct st_used_mem *next;
|
|
size_t left;
|
|
size_t size;
|
|
} USED_MEM;
|
|
typedef struct st_mem_root
|
|
{
|
|
USED_MEM *free;
|
|
USED_MEM *used;
|
|
USED_MEM *pre_alloc;
|
|
size_t min_malloc;
|
|
size_t block_size;
|
|
unsigned int block_num;
|
|
unsigned int first_block_usage;
|
|
void (*error_handler)(void);
|
|
} MEM_ROOT;
|
|
typedef struct st_typelib {
|
|
unsigned int count;
|
|
const char *name;
|
|
const char **type_names;
|
|
unsigned int *type_lengths;
|
|
} TYPELIB;
|
|
extern my_ulonglong find_typeset(char *x, TYPELIB *typelib,int *error_position);
|
|
extern int find_type_with_warning(const char *x, TYPELIB *typelib,
|
|
const char *option);
|
|
extern uint find_type_or_exit(const char *x, TYPELIB *typelib,
|
|
const char *option);
|
|
extern int find_type(char *x, const TYPELIB *typelib, unsigned int full_name);
|
|
extern void make_type(char *to,unsigned int nr,TYPELIB *typelib);
|
|
extern const char *get_type(TYPELIB *typelib,unsigned int nr);
|
|
extern TYPELIB *copy_typelib(MEM_ROOT *root, TYPELIB *from);
|
|
extern TYPELIB sql_protocol_typelib;
|
|
typedef struct st_mysql_rows {
|
|
struct st_mysql_rows *next;
|
|
MYSQL_ROW data;
|
|
unsigned long length;
|
|
} MYSQL_ROWS;
|
|
typedef MYSQL_ROWS *MYSQL_ROW_OFFSET;
|
|
#include "my_alloc.h"
|
|
typedef struct embedded_query_result EMBEDDED_QUERY_RESULT;
|
|
typedef struct st_mysql_data {
|
|
MYSQL_ROWS *data;
|
|
struct embedded_query_result *embedded_info;
|
|
MEM_ROOT alloc;
|
|
my_ulonglong rows;
|
|
unsigned int fields;
|
|
void *extension;
|
|
} MYSQL_DATA;
|
|
enum mysql_option
|
|
{
|
|
MYSQL_OPT_CONNECT_TIMEOUT, MYSQL_OPT_COMPRESS, MYSQL_OPT_NAMED_PIPE,
|
|
MYSQL_INIT_COMMAND, MYSQL_READ_DEFAULT_FILE, MYSQL_READ_DEFAULT_GROUP,
|
|
MYSQL_SET_CHARSET_DIR, MYSQL_SET_CHARSET_NAME, MYSQL_OPT_LOCAL_INFILE,
|
|
MYSQL_OPT_PROTOCOL, MYSQL_SHARED_MEMORY_BASE_NAME, MYSQL_OPT_READ_TIMEOUT,
|
|
MYSQL_OPT_WRITE_TIMEOUT, MYSQL_OPT_USE_RESULT,
|
|
MYSQL_OPT_USE_REMOTE_CONNECTION, MYSQL_OPT_USE_EMBEDDED_CONNECTION,
|
|
MYSQL_OPT_GUESS_CONNECTION, MYSQL_SET_CLIENT_IP, MYSQL_SECURE_AUTH,
|
|
MYSQL_REPORT_DATA_TRUNCATION, MYSQL_OPT_RECONNECT,
|
|
MYSQL_OPT_SSL_VERIFY_SERVER_CERT, MYSQL_PLUGIN_DIR, MYSQL_DEFAULT_AUTH
|
|
};
|
|
struct st_mysql_options_extention;
|
|
struct st_mysql_options {
|
|
unsigned int connect_timeout, read_timeout, write_timeout;
|
|
unsigned int port, protocol;
|
|
unsigned long client_flag;
|
|
char *host,*user,*password,*unix_socket,*db;
|
|
struct st_dynamic_array *init_commands;
|
|
char *my_cnf_file,*my_cnf_group, *charset_dir, *charset_name;
|
|
char *ssl_key;
|
|
char *ssl_cert;
|
|
char *ssl_ca;
|
|
char *ssl_capath;
|
|
char *ssl_cipher;
|
|
char *shared_memory_base_name;
|
|
unsigned long max_allowed_packet;
|
|
my_bool use_ssl;
|
|
my_bool compress,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;
|
|
my_bool report_data_truncation;
|
|
int (*local_infile_init)(void **, const char *, 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;
|
|
struct st_mysql_options_extention *extension;
|
|
};
|
|
enum mysql_status
|
|
{
|
|
MYSQL_STATUS_READY,MYSQL_STATUS_GET_RESULT,MYSQL_STATUS_USE_RESULT
|
|
};
|
|
enum mysql_protocol_type
|
|
{
|
|
MYSQL_PROTOCOL_DEFAULT, MYSQL_PROTOCOL_TCP, MYSQL_PROTOCOL_SOCKET,
|
|
MYSQL_PROTOCOL_PIPE, MYSQL_PROTOCOL_MEMORY
|
|
};
|
|
enum mysql_rpl_type
|
|
{
|
|
MYSQL_RPL_MASTER, MYSQL_RPL_SLAVE, MYSQL_RPL_ADMIN
|
|
};
|
|
typedef struct character_set
|
|
{
|
|
unsigned int number;
|
|
unsigned int state;
|
|
const char *csname;
|
|
const char *name;
|
|
const char *comment;
|
|
const char *dir;
|
|
unsigned int mbminlen;
|
|
unsigned int mbmaxlen;
|
|
} MY_CHARSET_INFO;
|
|
struct st_mysql_methods;
|
|
struct st_mysql_stmt;
|
|
typedef struct st_mysql
|
|
{
|
|
NET net;
|
|
unsigned char *connector_fd;
|
|
char *host,*user,*passwd,*unix_socket,*server_version,*host_info;
|
|
char *info, *db;
|
|
const 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 thread_id;
|
|
unsigned long packet_length;
|
|
unsigned int port;
|
|
unsigned long client_flag,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, *next_slave;
|
|
struct st_mysql* last_used_slave;
|
|
struct st_mysql* last_used_con;
|
|
LIST *stmts;
|
|
const struct st_mysql_methods *methods;
|
|
void *thd;
|
|
my_bool *unbuffered_fetch_owner;
|
|
char *info_buffer;
|
|
void *extension;
|
|
} MYSQL;
|
|
typedef struct st_mysql_res {
|
|
my_ulonglong row_count;
|
|
MYSQL_FIELD *fields;
|
|
MYSQL_DATA *data;
|
|
MYSQL_ROWS *data_cursor;
|
|
unsigned long *lengths;
|
|
MYSQL *handle;
|
|
const struct st_mysql_methods *methods;
|
|
MYSQL_ROW row;
|
|
MYSQL_ROW current_row;
|
|
MEM_ROOT field_alloc;
|
|
unsigned int field_count, current_field;
|
|
my_bool eof;
|
|
my_bool unbuffered_fetch_cancelled;
|
|
void *extension;
|
|
} MYSQL_RES;
|
|
typedef struct st_mysql_manager
|
|
{
|
|
NET net;
|
|
char *host, *user, *passwd;
|
|
char *net_buf, *net_buf_pos, *net_data_end;
|
|
unsigned int port;
|
|
int cmd_status;
|
|
int last_errno;
|
|
int net_buf_size;
|
|
my_bool free_me;
|
|
my_bool eof;
|
|
char last_error[256];
|
|
void *extension;
|
|
} MYSQL_MANAGER;
|
|
typedef struct st_mysql_parameters
|
|
{
|
|
unsigned long *p_max_allowed_packet;
|
|
unsigned long *p_net_buffer_length;
|
|
void *extension;
|
|
} MYSQL_PARAMETERS;
|
|
int mysql_server_init(int argc, char **argv, char **groups);
|
|
void mysql_server_end(void);
|
|
MYSQL_PARAMETERS * mysql_get_parameters(void);
|
|
my_bool mysql_thread_init(void);
|
|
void mysql_thread_end(void);
|
|
my_ulonglong mysql_num_rows(MYSQL_RES *res);
|
|
unsigned int mysql_num_fields(MYSQL_RES *res);
|
|
my_bool mysql_eof(MYSQL_RES *res);
|
|
MYSQL_FIELD * mysql_fetch_field_direct(MYSQL_RES *res,
|
|
unsigned int fieldnr);
|
|
MYSQL_FIELD * mysql_fetch_fields(MYSQL_RES *res);
|
|
MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *res);
|
|
MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RES *res);
|
|
unsigned int mysql_field_count(MYSQL *mysql);
|
|
my_ulonglong mysql_affected_rows(MYSQL *mysql);
|
|
my_ulonglong mysql_insert_id(MYSQL *mysql);
|
|
unsigned int mysql_errno(MYSQL *mysql);
|
|
const char * mysql_error(MYSQL *mysql);
|
|
const char * mysql_sqlstate(MYSQL *mysql);
|
|
unsigned int mysql_warning_count(MYSQL *mysql);
|
|
const char * mysql_info(MYSQL *mysql);
|
|
unsigned long mysql_thread_id(MYSQL *mysql);
|
|
const char * mysql_character_set_name(MYSQL *mysql);
|
|
int mysql_set_character_set(MYSQL *mysql, const char *csname);
|
|
MYSQL * mysql_init(MYSQL *mysql);
|
|
my_bool mysql_ssl_set(MYSQL *mysql, const char *key,
|
|
const char *cert, const char *ca,
|
|
const char *capath, const char *cipher);
|
|
const char * mysql_get_ssl_cipher(MYSQL *mysql);
|
|
my_bool mysql_change_user(MYSQL *mysql, const char *user,
|
|
const char *passwd, const char *db);
|
|
MYSQL * mysql_real_connect(MYSQL *mysql, const char *host,
|
|
const char *user,
|
|
const char *passwd,
|
|
const char *db,
|
|
unsigned int port,
|
|
const char *unix_socket,
|
|
unsigned long clientflag);
|
|
int mysql_select_db(MYSQL *mysql, const char *db);
|
|
int mysql_query(MYSQL *mysql, const char *q);
|
|
int mysql_send_query(MYSQL *mysql, const char *q,
|
|
unsigned long length);
|
|
int mysql_real_query(MYSQL *mysql, const char *q,
|
|
unsigned long length);
|
|
MYSQL_RES * mysql_store_result(MYSQL *mysql);
|
|
MYSQL_RES * mysql_use_result(MYSQL *mysql);
|
|
my_bool mysql_master_query(MYSQL *mysql, const char *q,
|
|
unsigned long length);
|
|
my_bool mysql_master_send_query(MYSQL *mysql, const char *q,
|
|
unsigned long length);
|
|
my_bool mysql_slave_query(MYSQL *mysql, const char *q,
|
|
unsigned long length);
|
|
my_bool mysql_slave_send_query(MYSQL *mysql, const char *q,
|
|
unsigned long length);
|
|
void mysql_get_character_set_info(MYSQL *mysql,
|
|
MY_CHARSET_INFO *charset);
|
|
void
|
|
mysql_set_local_infile_handler(MYSQL *mysql,
|
|
int (*local_infile_init)(void **, const char *,
|
|
void *),
|
|
int (*local_infile_read)(void *, char *,
|
|
unsigned int),
|
|
void (*local_infile_end)(void *),
|
|
int (*local_infile_error)(void *, char*,
|
|
unsigned int),
|
|
void *);
|
|
void
|
|
mysql_set_local_infile_default(MYSQL *mysql);
|
|
void mysql_enable_rpl_parse(MYSQL* mysql);
|
|
void mysql_disable_rpl_parse(MYSQL* mysql);
|
|
int mysql_rpl_parse_enabled(MYSQL* mysql);
|
|
void mysql_enable_reads_from_master(MYSQL* mysql);
|
|
void mysql_disable_reads_from_master(MYSQL* mysql);
|
|
my_bool mysql_reads_from_master_enabled(MYSQL* mysql);
|
|
enum mysql_rpl_type mysql_rpl_query_type(const char* q, int len);
|
|
my_bool mysql_rpl_probe(MYSQL* mysql);
|
|
int mysql_set_master(MYSQL* mysql, const char* host,
|
|
unsigned int port,
|
|
const char* user,
|
|
const char* passwd);
|
|
int mysql_add_slave(MYSQL* mysql, const char* host,
|
|
unsigned int port,
|
|
const char* user,
|
|
const char* passwd);
|
|
int mysql_shutdown(MYSQL *mysql,
|
|
enum mysql_enum_shutdown_level
|
|
shutdown_level);
|
|
int mysql_dump_debug_info(MYSQL *mysql);
|
|
int mysql_refresh(MYSQL *mysql,
|
|
unsigned int refresh_options);
|
|
int mysql_kill(MYSQL *mysql,unsigned long pid);
|
|
int mysql_set_server_option(MYSQL *mysql,
|
|
enum enum_mysql_set_option
|
|
option);
|
|
int mysql_ping(MYSQL *mysql);
|
|
const char * mysql_stat(MYSQL *mysql);
|
|
const char * mysql_get_server_info(MYSQL *mysql);
|
|
const char * mysql_get_server_name(MYSQL *mysql);
|
|
const char * mysql_get_client_info(void);
|
|
unsigned long mysql_get_client_version(void);
|
|
const char * mysql_get_host_info(MYSQL *mysql);
|
|
unsigned long mysql_get_server_version(MYSQL *mysql);
|
|
unsigned int mysql_get_proto_info(MYSQL *mysql);
|
|
MYSQL_RES * mysql_list_dbs(MYSQL *mysql,const char *wild);
|
|
MYSQL_RES * mysql_list_tables(MYSQL *mysql,const char *wild);
|
|
MYSQL_RES * mysql_list_processes(MYSQL *mysql);
|
|
int mysql_options(MYSQL *mysql,enum mysql_option option,
|
|
const void *arg);
|
|
void mysql_free_result(MYSQL_RES *result);
|
|
void mysql_data_seek(MYSQL_RES *result,
|
|
my_ulonglong offset);
|
|
MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *result,
|
|
MYSQL_ROW_OFFSET offset);
|
|
MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result,
|
|
MYSQL_FIELD_OFFSET offset);
|
|
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);
|
|
unsigned long * mysql_fetch_lengths(MYSQL_RES *result);
|
|
MYSQL_FIELD * mysql_fetch_field(MYSQL_RES *result);
|
|
MYSQL_RES * mysql_list_fields(MYSQL *mysql, const char *table,
|
|
const char *wild);
|
|
unsigned long mysql_escape_string(char *to,const char *from,
|
|
unsigned long from_length);
|
|
unsigned long mysql_hex_string(char *to,const char *from,
|
|
unsigned long from_length);
|
|
unsigned long mysql_real_escape_string(MYSQL *mysql,
|
|
char *to,const char *from,
|
|
unsigned long length);
|
|
void mysql_debug(const char *debug);
|
|
void myodbc_remove_escape(MYSQL *mysql,char *name);
|
|
unsigned int mysql_thread_safe(void);
|
|
my_bool mysql_embedded(void);
|
|
my_bool mariadb_connection(MYSQL *mysql);
|
|
MYSQL_MANAGER* mysql_manager_init(MYSQL_MANAGER* con);
|
|
MYSQL_MANAGER* mysql_manager_connect(MYSQL_MANAGER* con,
|
|
const char* host,
|
|
const char* user,
|
|
const char* passwd,
|
|
unsigned int port);
|
|
void mysql_manager_close(MYSQL_MANAGER* con);
|
|
int mysql_manager_command(MYSQL_MANAGER* con,
|
|
const char* cmd, int cmd_len);
|
|
int mysql_manager_fetch_line(MYSQL_MANAGER* con,
|
|
char* res_buf,
|
|
int res_buf_size);
|
|
my_bool mysql_read_query_result(MYSQL *mysql);
|
|
enum enum_mysql_stmt_state
|
|
{
|
|
MYSQL_STMT_INIT_DONE= 1, MYSQL_STMT_PREPARE_DONE, MYSQL_STMT_EXECUTE_DONE,
|
|
MYSQL_STMT_FETCH_DONE
|
|
};
|
|
typedef struct st_mysql_bind
|
|
{
|
|
unsigned long *length;
|
|
my_bool *is_null;
|
|
void *buffer;
|
|
my_bool *error;
|
|
unsigned char *row_ptr;
|
|
void (*store_param_func)(NET *net, struct st_mysql_bind *param);
|
|
void (*fetch_result)(struct st_mysql_bind *, MYSQL_FIELD *,
|
|
unsigned char **row);
|
|
void (*skip_result)(struct st_mysql_bind *, MYSQL_FIELD *,
|
|
unsigned char **row);
|
|
unsigned long buffer_length;
|
|
unsigned long offset;
|
|
unsigned long length_value;
|
|
unsigned int param_number;
|
|
unsigned int pack_length;
|
|
enum enum_field_types buffer_type;
|
|
my_bool error_value;
|
|
my_bool is_unsigned;
|
|
my_bool long_data_used;
|
|
my_bool is_null_value;
|
|
void *extension;
|
|
} MYSQL_BIND;
|
|
typedef struct 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;
|
|
int (*read_row_func)(struct st_mysql_stmt *stmt,
|
|
unsigned char **row);
|
|
my_ulonglong affected_rows;
|
|
my_ulonglong insert_id;
|
|
unsigned long stmt_id;
|
|
unsigned long flags;
|
|
unsigned long prefetch_rows;
|
|
unsigned int server_status;
|
|
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;
|
|
unsigned char bind_result_done;
|
|
my_bool unbuffered_fetch_cancelled;
|
|
my_bool update_max_length;
|
|
void *extension;
|
|
} MYSQL_STMT;
|
|
enum enum_stmt_attr_type
|
|
{
|
|
STMT_ATTR_UPDATE_MAX_LENGTH,
|
|
STMT_ATTR_CURSOR_TYPE,
|
|
STMT_ATTR_PREFETCH_ROWS
|
|
};
|
|
MYSQL_STMT * mysql_stmt_init(MYSQL *mysql);
|
|
int mysql_stmt_prepare(MYSQL_STMT *stmt, const char *query,
|
|
unsigned long length);
|
|
int mysql_stmt_execute(MYSQL_STMT *stmt);
|
|
int mysql_stmt_fetch(MYSQL_STMT *stmt);
|
|
int mysql_stmt_fetch_column(MYSQL_STMT *stmt, MYSQL_BIND *bind_arg,
|
|
unsigned int column,
|
|
unsigned long offset);
|
|
int mysql_stmt_store_result(MYSQL_STMT *stmt);
|
|
unsigned long mysql_stmt_param_count(MYSQL_STMT * stmt);
|
|
my_bool mysql_stmt_attr_set(MYSQL_STMT *stmt,
|
|
enum enum_stmt_attr_type attr_type,
|
|
const void *attr);
|
|
my_bool mysql_stmt_attr_get(MYSQL_STMT *stmt,
|
|
enum enum_stmt_attr_type attr_type,
|
|
void *attr);
|
|
my_bool mysql_stmt_bind_param(MYSQL_STMT * stmt, MYSQL_BIND * bnd);
|
|
my_bool mysql_stmt_bind_result(MYSQL_STMT * stmt, MYSQL_BIND * bnd);
|
|
my_bool mysql_stmt_close(MYSQL_STMT * stmt);
|
|
my_bool mysql_stmt_reset(MYSQL_STMT * stmt);
|
|
my_bool mysql_stmt_free_result(MYSQL_STMT *stmt);
|
|
my_bool mysql_stmt_send_long_data(MYSQL_STMT *stmt,
|
|
unsigned int param_number,
|
|
const char *data,
|
|
unsigned long length);
|
|
MYSQL_RES * mysql_stmt_result_metadata(MYSQL_STMT *stmt);
|
|
MYSQL_RES * mysql_stmt_param_metadata(MYSQL_STMT *stmt);
|
|
unsigned int mysql_stmt_errno(MYSQL_STMT * stmt);
|
|
const char * mysql_stmt_error(MYSQL_STMT * stmt);
|
|
const char * mysql_stmt_sqlstate(MYSQL_STMT * stmt);
|
|
MYSQL_ROW_OFFSET mysql_stmt_row_seek(MYSQL_STMT *stmt,
|
|
MYSQL_ROW_OFFSET offset);
|
|
MYSQL_ROW_OFFSET mysql_stmt_row_tell(MYSQL_STMT *stmt);
|
|
void mysql_stmt_data_seek(MYSQL_STMT *stmt, my_ulonglong offset);
|
|
my_ulonglong mysql_stmt_num_rows(MYSQL_STMT *stmt);
|
|
my_ulonglong mysql_stmt_affected_rows(MYSQL_STMT *stmt);
|
|
my_ulonglong mysql_stmt_insert_id(MYSQL_STMT *stmt);
|
|
unsigned int mysql_stmt_field_count(MYSQL_STMT *stmt);
|
|
my_bool mysql_commit(MYSQL * mysql);
|
|
my_bool mysql_rollback(MYSQL * mysql);
|
|
my_bool mysql_autocommit(MYSQL * mysql, my_bool auto_mode);
|
|
my_bool mysql_more_results(MYSQL *mysql);
|
|
int mysql_next_result(MYSQL *mysql);
|
|
void mysql_close(MYSQL *sock);
|