diff options
author | unknown <msvensson@neptunus.(none)> | 2006-10-24 20:32:07 +0200 |
---|---|---|
committer | unknown <msvensson@neptunus.(none)> | 2006-10-24 20:32:07 +0200 |
commit | 9c9bf0aff21df3ec9395d124f72fc1eeb17c2c16 (patch) | |
tree | e6c62a7269e3423ff0d457cb05e1342ff86a1c8c | |
parent | 61e3438fe26e1e3a67441a6408b6488d4a8940c5 (diff) | |
download | mariadb-git-9c9bf0aff21df3ec9395d124f72fc1eeb17c2c16.tar.gz |
WL#3462 Add testing of MySQL client ABI to prevent unintentional ABI breaks
BUG#23427 incompatible ABI change in 5.0.26?
- Use the icheck tool if avaliable and compare the current mysql.h to a version
controlled reference file
BitKeeper/etc/ignore:
Added include/check_abi include/mysql_h.ic to the ignore list
configure.in:
Look for icheck in configure
include/Makefile.am:
Add rule to build mysql_h.ic if icheck is avaliable
Add rule to compare mysql_h.ic to the version
controlled reference file mysql_h_abi.ic
include/mysql.h:
Add comment about taking care when editing mysql.h
Add example how to add reserved fiels in the structs to
allow for features to be added without breaking ABI
include/mysql_h_abi.ic:
Add new file describing the libmysqlclient ABI used as a reference to detect ABI breakage
-rw-r--r-- | .bzrignore | 2 | ||||
-rw-r--r-- | configure.in | 4 | ||||
-rw-r--r-- | include/Makefile.am | 28 | ||||
-rw-r--r-- | include/mysql.h | 11 | ||||
-rw-r--r-- | include/mysql_h_abi.ic | 1244 |
5 files changed, 1287 insertions, 2 deletions
diff --git a/.bzrignore b/.bzrignore index c4ae17ed95e..5e2aa892c28 100644 --- a/.bzrignore +++ b/.bzrignore @@ -1064,3 +1064,5 @@ vio/test-ssl vio/test-sslclient vio/test-sslserver vio/viotest-ssl +include/check_abi +include/mysql_h.ic diff --git a/configure.in b/configure.in index 6cccb1bb90e..20dea3595de 100644 --- a/configure.in +++ b/configure.in @@ -508,6 +508,10 @@ AC_SUBST(DOXYGEN) AC_SUBST(PDFLATEX) AC_SUBST(MAKEINDEX) +# icheck, used for ABI check +AC_PATH_PROG(ICHECK, icheck, no) +AC_SUBST(ICHECK) + # Lock for PS AC_PATH_PROG(PS, ps, ps) AC_MSG_CHECKING("how to check if pid exists") diff --git a/include/Makefile.am b/include/Makefile.am index 3fa7b04d69a..dc30d40a352 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -15,7 +15,7 @@ # Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, # MA 02111-1307, USA -BUILT_SOURCES = mysql_version.h m_ctype.h my_config.h +BUILT_SOURCES = mysql_version.h m_ctype.h my_config.h mysql_h.ic pkginclude_HEADERS = my_dbug.h m_string.h my_sys.h my_list.h my_xml.h \ mysql.h mysql_com.h mysqld_error.h mysql_embed.h \ my_semaphore.h my_pthread.h my_no_pthread.h raid.h \ @@ -32,8 +32,10 @@ noinst_HEADERS = config-win.h config-os2.h config-netware.h \ thr_lock.h t_ctype.h violite.h md5.h \ mysql_version.h.in my_handler.h my_time.h +CLEANFILES = mysql_h.ic + # mysql_version.h are generated -SUPERCLEANFILES = mysql_version.h my_config.h +SUPERCLEANFILES = mysql_version.h my_config.h $(CLEANFILES) # Some include files that may be moved and patched by configure DISTCLEANFILES = sched.h $(SUPERCLEANFILES) @@ -55,5 +57,27 @@ link_sources: dist-hook: $(RM) -f $(distdir)/mysql_version.h $(distdir)/my_config.h +# +# Rules for checking that ABI has not changed +# + +# Create a icheck file for mysql.h +mysql_h.ic: mysql.h + @set -x; \ + if [ @ICHECK@ != no ] ; then \ + @ICHECK@ --canonify -o $@ mysql.h; \ + fi; + +# Compare the icheck file to the reference +check_abi: mysql_h.ic + @set -x; \ + if [ @ICHECK@ != no ] ; then \ + @ICHECK@ --compare mysql_h.ic mysql_h_abi.ic; \ + fi; \ + touch check_abi; + +all: check_abi + + # Don't update the files from bitkeeper %::SCCS/s.% diff --git a/include/mysql.h b/include/mysql.h index 143f6752c46..bc99b6f6ba1 100644 --- a/include/mysql.h +++ b/include/mysql.h @@ -14,6 +14,17 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* + This file defines the client API to MySQL and also the ABI of the + dynamically linked libmysqlclient. + + The ABI should never be changed in a released product of MySQL + thus you need to take great care when changing the file. In case + the file is changed so the ABI is broken, you must also + update the SHAREDLIB_MAJOR_VERSION in configure.in . + +*/ + #ifndef _mysql_h #define _mysql_h diff --git a/include/mysql_h_abi.ic b/include/mysql_h_abi.ic new file mode 100644 index 00000000000..80d13199a8d --- /dev/null +++ b/include/mysql_h_abi.ic @@ -0,0 +1,1244 @@ +struct __pthread_internal_slist; +struct __pthread_mutex_s; +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; +struct timespec; +struct timeval; +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; +# 59 "/usr/include/bits/types.h" +typedef long long int __quad_t; +# 135 "mysql.h" +typedef struct st_mysql_rows MYSQL_ROWS; +# 55 "/usr/include/sys/select.h" +typedef long int __fd_mask; +# 145 "/usr/include/bits/types.h" +typedef __quad_t __off64_t; +# 60 "/usr/include/bits/types.h" +typedef unsigned long long int __u_quad_t; +# 24 "my_list.h" +typedef struct st_list LIST; +# 236 "mysql.h" +typedef struct st_mysql MYSQL; +# 575 "mysql.h" +typedef struct st_mysql_bind MYSQL_BIND; +# 97 "mysql.h" +typedef struct st_mysql_field MYSQL_FIELD; +# 121 "mysql.h" +typedef unsigned int MYSQL_FIELD_OFFSET; +# 327 "mysql.h" +typedef struct st_mysql_manager MYSQL_MANAGER; +# 341 "mysql.h" +typedef struct st_mysql_parameters MYSQL_PARAMETERS; +# 296 "mysql.h" +typedef struct st_mysql_res MYSQL_RES; +# 120 "mysql.h" +typedef char * * MYSQL_ROW; +# 141 "mysql.h" +typedef MYSQL_ROWS * MYSQL_ROW_OFFSET; +# 600 "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; +# 172 "/usr/include/bits/types.h" +typedef long int __blkcnt_t; +# 189 "/usr/include/bits/types.h" +typedef char * __caddr_t; +# 161 "/usr/include/bits/types.h" +typedef int __clockid_t; +# 156 "/usr/include/bits/types.h" +typedef int __daddr_t; +# 137 "/usr/include/bits/types.h" +typedef __u_quad_t __dev_t; +# 176 "/usr/include/bits/types.h" +typedef unsigned long int __fsblkcnt_t; +# 180 "/usr/include/bits/types.h" +typedef unsigned long int __fsfilcnt_t; +# 147 "/usr/include/bits/types.h" +typedef struct __attribute__((aligned(__alignof__(int)))) + { + int __val[2]; + } __fsid_t; +# 139 "/usr/include/bits/types.h" +typedef unsigned int __gid_t; +# 151 "/usr/include/bits/types.h" +typedef unsigned int __id_t; +# 140 "/usr/include/bits/types.h" +typedef unsigned long int __ino_t; +# 158 "/usr/include/bits/types.h" +typedef int __key_t; +# 187 "/usr/include/bits/types.h" +typedef __off64_t __loff_t; +# 142 "/usr/include/bits/types.h" +typedef unsigned int __mode_t; +# 143 "/usr/include/bits/types.h" +typedef unsigned int __nlink_t; +# 144 "/usr/include/bits/types.h" +typedef long int __off_t; +# 146 "/usr/include/bits/types.h" +typedef int __pid_t; +# 28 "/usr/include/bits/sigset.h" +typedef struct __attribute__((aligned(__alignof__(unsigned long int)))) + { + unsigned long int __val[(1024 / (8 * sizeof(unsigned long int)))]; + } __sigset_t; +# 183 "/usr/include/bits/types.h" +typedef int __ssize_t; +# 154 "/usr/include/bits/types.h" +typedef long int __suseconds_t; +# 152 "/usr/include/bits/types.h" +typedef long int __time_t; +# 164 "/usr/include/bits/types.h" +typedef void * __timer_t; +# 34 "/usr/include/bits/types.h" +typedef unsigned char __u_char; +# 36 "/usr/include/bits/types.h" +typedef unsigned int __u_int; +# 37 "/usr/include/bits/types.h" +typedef unsigned long int __u_long; +# 35 "/usr/include/bits/types.h" +typedef unsigned short int __u_short; +# 138 "/usr/include/bits/types.h" +typedef unsigned int __uid_t; +# 67 "/usr/include/sys/select.h" +typedef struct __attribute__((aligned(__alignof__(long int)))) + { + __fd_mask __fds_bits[(1024 / (8 * sizeof(__fd_mask)))]; + } fd_set; +# 61 "mysql.h" +typedef char * gptr; +# 29 "my_list.h" +typedef int (* list_walk_action)(void *, void *); +# 52 "mysql.h" +typedef char my_bool; +# 67 "mysql.h" +typedef int my_socket; +# 129 "mysql.h" +typedef unsigned long long int my_ulonglong; +# 35 "my_alloc.h" +typedef struct st_mem_root MEM_ROOT; +# 145 "mysql.h" +typedef struct st_mysql_data MYSQL_DATA; +# 652 "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; +# 173 "/usr/include/bits/types.h" +typedef __quad_t __blkcnt64_t; +# 167 "/usr/include/bits/types.h" +typedef long int __blksize_t; +# 148 "/usr/include/bits/types.h" +typedef long int __clock_t; +# 177 "/usr/include/bits/types.h" +typedef __u_quad_t __fsblkcnt64_t; +# 181 "/usr/include/bits/types.h" +typedef __u_quad_t __fsfilcnt64_t; +# 141 "/usr/include/bits/types.h" +typedef __u_quad_t __ino64_t; +# 42 "/usr/include/bits/types.h" +typedef short int __int16_t; +# 44 "/usr/include/bits/types.h" +typedef int __int32_t; +# 50 "/usr/include/bits/types.h" +typedef long long int __int64_t; +# 40 "/usr/include/bits/types.h" +typedef signed char __int8_t; +# 192 "/usr/include/bits/types.h" +typedef int __intptr_t; +# 46 "/usr/include/bits/pthreadtypes.h" +typedef struct __pthread_internal_slist __pthread_slist_t; +# 188 "/usr/include/bits/types.h" +typedef __quad_t * __qaddr_t; +# 150 "/usr/include/bits/types.h" +typedef __u_quad_t __rlim64_t; +# 149 "/usr/include/bits/types.h" +typedef unsigned long int __rlim_t; +# 23 "/usr/include/bits/sigset.h" +typedef int __sig_atomic_t; +# 195 "/usr/include/bits/types.h" +typedef unsigned int __socklen_t; +# 157 "/usr/include/bits/types.h" +typedef long int __swblk_t; +# 43 "/usr/include/bits/types.h" +typedef unsigned short int __uint16_t; +# 45 "/usr/include/bits/types.h" +typedef unsigned int __uint32_t; +# 51 "/usr/include/bits/types.h" +typedef unsigned long long int __uint64_t; +# 41 "/usr/include/bits/types.h" +typedef unsigned char __uint8_t; +# 153 "/usr/include/bits/types.h" +typedef unsigned int __useconds_t; +# 235 "/usr/include/sys/types.h" +typedef __blkcnt_t blkcnt_t; +# 117 "/usr/include/sys/types.h" +typedef __caddr_t caddr_t; +# 93 "/usr/include/time.h" +typedef __clockid_t clockid_t; +# 116 "/usr/include/sys/types.h" +typedef __daddr_t daddr_t; +# 62 "/usr/include/sys/types.h" +typedef __dev_t dev_t; +# 85 "/usr/include/sys/select.h" +typedef __fd_mask fd_mask; +# 239 "/usr/include/sys/types.h" +typedef __fsblkcnt_t fsblkcnt_t; +# 243 "/usr/include/sys/types.h" +typedef __fsfilcnt_t fsfilcnt_t; +# 41 "/usr/include/sys/types.h" +typedef __fsid_t fsid_t; +# 67 "/usr/include/sys/types.h" +typedef __gid_t gid_t; +# 105 "/usr/include/sys/types.h" +typedef __id_t id_t; +# 50 "/usr/include/sys/types.h" +typedef __ino_t ino_t; +# 196 "/usr/include/sys/types.h" +typedef int int16_t; +# 197 "/usr/include/sys/types.h" +typedef int int32_t; +# 198 "/usr/include/sys/types.h" +typedef int int64_t; +# 195 "/usr/include/sys/types.h" +typedef int int8_t; +# 123 "/usr/include/sys/types.h" +typedef __key_t key_t; +# 46 "/usr/include/sys/types.h" +typedef __loff_t loff_t; +# 72 "/usr/include/sys/types.h" +typedef __mode_t mode_t; +# 77 "/usr/include/sys/types.h" +typedef __nlink_t nlink_t; +# 88 "/usr/include/sys/types.h" +typedef __off_t off_t; +# 100 "/usr/include/sys/types.h" +typedef __pid_t pid_t; +# 39 "/usr/include/bits/pthreadtypes.h" +typedef union __attribute__((aligned(__alignof__(long int)))) + { + char __size[36]; + long int __align; + } pthread_attr_t; +# 153 "/usr/include/bits/pthreadtypes.h" +typedef union __attribute__((aligned(__alignof__(long int)))) + { + char __size[20]; + long int __align; + } pthread_barrier_t; +# 159 "/usr/include/bits/pthreadtypes.h" +typedef union __attribute__((aligned(__alignof__(int)))) + { + char __size[4]; + int __align; + } pthread_barrierattr_t; +# 84 "/usr/include/bits/pthreadtypes.h" +typedef union __attribute__((aligned(__alignof__(unsigned long long int)), aligned(__alignof__(void *)))) + { + struct __attribute__((aligned(__alignof__(unsigned long long int)), aligned(__alignof__(void *)))) + { + int __lock; + unsigned int __futex; + unsigned long long int __total_seq; + unsigned long long int __wakeup_seq; + unsigned long long int __woken_seq; + void * __mutex; + unsigned int __nwaiters; + unsigned int __broadcast_seq; + } __data; + char __size[48]; + long long int __align; + } pthread_cond_t; +# 101 "/usr/include/bits/pthreadtypes.h" +typedef union __attribute__((aligned(__alignof__(long int)))) + { + char __size[4]; + long int __align; + } pthread_condattr_t; +# 109 "/usr/include/bits/pthreadtypes.h" +typedef unsigned int pthread_key_t; +# 54 "/usr/include/bits/pthreadtypes.h" +typedef union __attribute__((aligned(__alignof__(long int)))) + { + struct __pthread_mutex_s __data; + char __size[24]; + long int __align; + } pthread_mutex_t; +# 75 "/usr/include/bits/pthreadtypes.h" +typedef union __attribute__((aligned(__alignof__(long int)))) + { + char __size[4]; + long int __align; + } pthread_mutexattr_t; +# 113 "/usr/include/bits/pthreadtypes.h" +typedef int pthread_once_t; +# 119 "/usr/include/bits/pthreadtypes.h" +typedef union __attribute__((aligned(__alignof__(long int)))) + { + struct __attribute__((aligned(__alignof__(int)))) + { + int __lock; + unsigned int __nr_readers; + unsigned int __readers_wakeup; + unsigned int __writer_wakeup; + unsigned int __nr_readers_queued; + unsigned int __nr_writers_queued; + unsigned int __flags; + int __writer; + } __data; + char __size[32]; + long int __align; + } pthread_rwlock_t; +# 138 "/usr/include/bits/pthreadtypes.h" +typedef union __attribute__((aligned(__alignof__(long int)))) + { + char __size[8]; + long int __align; + } pthread_rwlockattr_t; +# 148 "/usr/include/bits/pthreadtypes.h" +typedef int volatile pthread_spinlock_t; +# 36 "/usr/include/bits/pthreadtypes.h" +typedef unsigned long int pthread_t; +# 39 "/usr/include/sys/types.h" +typedef __quad_t quad_t; +# 206 "/usr/include/sys/types.h" +typedef int register_t; +# 38 "/usr/include/sys/select.h" +typedef __sigset_t sigset_t; +# 214 "/usr/lib/gcc/i386-redhat-linux/4.0.2/include/stddef.h" +typedef unsigned int size_t; +# 110 "/usr/include/sys/types.h" +typedef __ssize_t ssize_t; +# 49 "/usr/include/sys/select.h" +typedef __suseconds_t suseconds_t; +# 77 "/usr/include/time.h" +typedef __time_t time_t; +# 105 "/usr/include/time.h" +typedef __timer_t timer_t; +# 35 "/usr/include/sys/types.h" +typedef __u_char u_char; +# 37 "/usr/include/sys/types.h" +typedef __u_int u_int; +# 202 "/usr/include/sys/types.h" +typedef unsigned int u_int16_t; +# 203 "/usr/include/sys/types.h" +typedef unsigned int u_int32_t; +# 204 "/usr/include/sys/types.h" +typedef unsigned int u_int64_t; +# 201 "/usr/include/sys/types.h" +typedef unsigned int u_int8_t; +# 38 "/usr/include/sys/types.h" +typedef __u_long u_long; +# 40 "/usr/include/sys/types.h" +typedef __u_quad_t u_quad_t; +# 36 "/usr/include/sys/types.h" +typedef __u_short u_short; +# 82 "/usr/include/sys/types.h" +typedef __uid_t uid_t; +# 153 "/usr/include/sys/types.h" +typedef unsigned int uint; +# 151 "/usr/include/sys/types.h" +typedef unsigned long int ulong; +# 152 "/usr/include/sys/types.h" +typedef unsigned short int ushort; +# 46 "/usr/include/bits/pthreadtypes.h" +struct __attribute__((aligned(__alignof__(void *)))) __pthread_internal_slist + { + struct __pthread_internal_slist * __next; + }; +# 54 "/usr/include/bits/pthreadtypes.h" +struct __attribute__((aligned(__alignof__(int)))) __pthread_mutex_s + { + int __lock; + unsigned int __count; + int __owner; + int __kind; + unsigned int __nusers; + }; +# 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); + }; +# 236 "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; + }; +# 575 "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); + }; +# 145 "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; + }; +# 97 "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; + }; +# 327 "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]; + }; +# 652 "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); + }; +# 166 "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; + }; +# 341 "mysql.h" +struct __attribute__((aligned(__alignof__(void *)))) st_mysql_parameters + { + unsigned long int * p_max_allowed_packet; + unsigned long int * p_net_buffer_length; + }; +# 296 "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; + }; +# 135 "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; + }; +# 600 "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; + }; +# 121 "/usr/include/time.h" +struct __attribute__((aligned(__alignof__(long int)))) timespec + { + __time_t tv_sec; + long int tv_nsec; + }; +# 69 "/usr/include/bits/time.h" +struct __attribute__((aligned(__alignof__(long int)))) timeval + { + __time_t tv_sec; + __suseconds_t tv_usec; + }; +# 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, + }; +# 567 "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, + }; +# 639 "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, + }; +# 155 "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, + }; +# 218 "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, + }; +# 228 "mysql.h" +enum mysql_rpl_type + { + MYSQL_RPL_MASTER = 0, + MYSQL_RPL_SLAVE = 1, + MYSQL_RPL_ADMIN = 2, + }; +# 213 "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); +# 41 "/usr/include/sys/sysmacros.h" +extern unsigned int gnu_dev_major(unsigned long long int); +# 53 "/usr/include/sys/sysmacros.h" +extern unsigned long long int gnu_dev_makedev(unsigned int, unsigned int); +# 47 "/usr/include/sys/sysmacros.h" +extern unsigned int gnu_dev_minor(unsigned long long 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); +# 543 "mysql.h" +extern void myodbc_remove_escape(MYSQL * mysql, char * name); +# 485 "mysql.h" +extern int mysql_add_slave(MYSQL * mysql, char const * host, unsigned int, char const * user, char const * passwd); +# 397 "mysql.h" +extern my_ulonglong mysql_affected_rows(MYSQL * mysql); +# 724 "mysql.h" +extern my_bool mysql_autocommit(MYSQL * mysql, my_bool); +# 412 "mysql.h" +extern my_bool mysql_change_user(MYSQL * mysql, char const * user, char const * passwd, char const * db); +# 405 "mysql.h" +extern char const * mysql_character_set_name(MYSQL * mysql); +# 727 "mysql.h" +extern void mysql_close(MYSQL * sock); +# 722 "mysql.h" +extern my_bool mysql_commit(MYSQL * mysql); +# 514 "mysql.h" +extern void mysql_data_seek(MYSQL_RES * result, my_ulonglong); +# 532 "mysql.h" +extern void mysql_debug(char const * debug); +# 471 "mysql.h" +extern void mysql_disable_reads_from_master(MYSQL * mysql); +# 465 "mysql.h" +extern void mysql_disable_rpl_parse(MYSQL * mysql); +# 493 "mysql.h" +extern int mysql_dump_debug_info(MYSQL * mysql); +# 545 "mysql.h" +extern my_bool mysql_embedded(void); +# 470 "mysql.h" +extern void mysql_enable_reads_from_master(MYSQL * mysql); +# 464 "mysql.h" +extern void mysql_enable_rpl_parse(MYSQL * mysql); +# 389 "mysql.h" +extern my_bool mysql_eof(MYSQL_RES * res); +# 399 "mysql.h" +extern unsigned int mysql_errno(MYSQL * mysql); +# 373 "mysql_com.h" +extern char const * mysql_errno_to_sqlstate(unsigned int); +# 400 "mysql.h" +extern char const * mysql_error(MYSQL * mysql); +# 525 "mysql.h" +extern unsigned long int mysql_escape_string(char * to, char const * from, unsigned long int); +# 522 "mysql.h" +extern MYSQL_FIELD * mysql_fetch_field(MYSQL_RES * result); +# 390 "mysql.h" +extern MYSQL_FIELD * mysql_fetch_field_direct(MYSQL_RES * res, unsigned int); +# 392 "mysql.h" +extern MYSQL_FIELD * mysql_fetch_fields(MYSQL_RES * res); +# 521 "mysql.h" +extern unsigned long int * mysql_fetch_lengths(MYSQL_RES * result); +# 520 "mysql.h" +extern MYSQL_ROW mysql_fetch_row(MYSQL_RES * result); +# 396 "mysql.h" +extern unsigned int mysql_field_count(MYSQL * mysql); +# 518 "mysql.h" +extern MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES * result, MYSQL_FIELD_OFFSET); +# 394 "mysql.h" +extern MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RES * res); +# 513 "mysql.h" +extern void mysql_free_result(MYSQL_RES * result); +# 503 "mysql.h" +extern char const * mysql_get_client_info(void); +# 504 "mysql.h" +extern unsigned long int mysql_get_client_version(void); +# 505 "mysql.h" +extern char const * mysql_get_host_info(MYSQL * mysql); +# 371 "mysql.h" +extern MYSQL_PARAMETERS * mysql_get_parameters(void); +# 507 "mysql.h" +extern unsigned int mysql_get_proto_info(MYSQL * mysql); +# 502 "mysql.h" +extern char const * mysql_get_server_info(MYSQL * mysql); +# 506 "mysql.h" +extern unsigned long int mysql_get_server_version(MYSQL * mysql); +# 527 "mysql.h" +extern unsigned long int mysql_hex_string(char * to, char const * from, unsigned long int); +# 403 "mysql.h" +extern char const * mysql_info(MYSQL * mysql); +# 408 "mysql.h" +extern MYSQL * mysql_init(MYSQL * mysql); +# 398 "mysql.h" +extern my_ulonglong mysql_insert_id(MYSQL * mysql); +# 496 "mysql.h" +extern int mysql_kill(MYSQL * mysql, unsigned long int); +# 508 "mysql.h" +extern MYSQL_RES * mysql_list_dbs(MYSQL * mysql, char const * wild); +# 523 "mysql.h" +extern MYSQL_RES * mysql_list_fields(MYSQL * mysql, char const * table, char const * wild); +# 510 "mysql.h" +extern MYSQL_RES * mysql_list_processes(MYSQL * mysql); +# 509 "mysql.h" +extern MYSQL_RES * mysql_list_tables(MYSQL * mysql, char const * wild); +# 552 "mysql.h" +extern void mysql_manager_close(MYSQL_MANAGER * con); +# 553 "mysql.h" +extern int mysql_manager_command(MYSQL_MANAGER * con, char const * cmd, int); +# 547 "mysql.h" +extern MYSQL_MANAGER * mysql_manager_connect(MYSQL_MANAGER * con, char const * host, char const * user, char const * passwd, unsigned int); +# 555 "mysql.h" +extern int mysql_manager_fetch_line(MYSQL_MANAGER * con, char * res_buf, int); +# 546 "mysql.h" +extern MYSQL_MANAGER * mysql_manager_init(MYSQL_MANAGER * con); +# 431 "mysql.h" +extern my_bool mysql_master_query(MYSQL * mysql, char const * q, unsigned long int); +# 433 "mysql.h" +extern my_bool mysql_master_send_query(MYSQL * mysql, char const * q, unsigned long int); +# 725 "mysql.h" +extern my_bool mysql_more_results(MYSQL * mysql); +# 726 "mysql.h" +extern int mysql_next_result(MYSQL * mysql); +# 388 "mysql.h" +extern unsigned int mysql_num_fields(MYSQL_RES * res); +# 387 "mysql.h" +extern my_ulonglong mysql_num_rows(MYSQL_RES * res); +# 533 "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)); +# 511 "mysql.h" +extern int mysql_options(MYSQL * mysql, enum mysql_option, char const * arg); +# 500 "mysql.h" +extern int mysql_ping(MYSQL * mysql); +# 79 "mysql.h" +extern unsigned int mysql_port; +# 422 "mysql.h" +extern int mysql_query(MYSQL * mysql, char const * q); +# 558 "mysql.h" +extern my_bool mysql_read_query_result(MYSQL * mysql); +# 473 "mysql.h" +extern my_bool mysql_reads_from_master_enabled(MYSQL * mysql); +# 414 "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); +# 529 "mysql.h" +extern unsigned long int mysql_real_escape_string(MYSQL * mysql, char * to, char const * from, unsigned long int); +# 425 "mysql.h" +extern int mysql_real_query(MYSQL * mysql, char const * q, unsigned long int); +# 494 "mysql.h" +extern int mysql_refresh(MYSQL * mysql, unsigned int); +# 723 "mysql.h" +extern my_bool mysql_rollback(MYSQL * mysql); +# 516 "mysql.h" +extern MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES * result, MYSQL_ROW_OFFSET); +# 393 "mysql.h" +extern MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES * res); +# 467 "mysql.h" +extern int mysql_rpl_parse_enabled(MYSQL * mysql); +# 478 "mysql.h" +extern my_bool mysql_rpl_probe(MYSQL * mysql); +# 475 "mysql.h" +extern enum mysql_rpl_type mysql_rpl_query_type(char const * q, int); +# 421 "mysql.h" +extern int mysql_select_db(MYSQL * mysql, char const * db); +# 423 "mysql.h" +extern int mysql_send_query(MYSQL * mysql, char const * q, unsigned long int); +# 358 "mysql.h" +extern void mysql_server_end(void); +# 357 "mysql.h" +extern int mysql_server_init(int, char * * argv, char * * groups); +# 406 "mysql.h" +extern int mysql_set_character_set(MYSQL * mysql, char const * csname); +# 456 "mysql.h" +extern void mysql_set_local_infile_default(MYSQL * mysql); +# 445 "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 *); +# 481 "mysql.h" +extern int mysql_set_master(MYSQL * mysql, char const * host, unsigned int, char const * user, char const * passwd); +# 497 "mysql.h" +extern int mysql_set_server_option(MYSQL * mysql, enum enum_mysql_set_option); +# 490 "mysql.h" +extern int mysql_shutdown(MYSQL * mysql, enum mysql_enum_shutdown_level); +# 436 "mysql.h" +extern my_bool mysql_slave_query(MYSQL * mysql, char const * q, unsigned long int); +# 438 "mysql.h" +extern my_bool mysql_slave_send_query(MYSQL * mysql, char const * q, unsigned long int); +# 401 "mysql.h" +extern char const * mysql_sqlstate(MYSQL * mysql); +# 409 "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); +# 501 "mysql.h" +extern char const * mysql_stat(MYSQL * mysql); +# 718 "mysql.h" +extern my_ulonglong mysql_stmt_affected_rows(MYSQL_STMT * stmt); +# 696 "mysql.h" +extern my_bool mysql_stmt_attr_get(MYSQL_STMT * stmt, enum enum_stmt_attr_type, void * attr); +# 693 "mysql.h" +extern my_bool mysql_stmt_attr_set(MYSQL_STMT * stmt, enum enum_stmt_attr_type, void const * attr); +# 699 "mysql.h" +extern my_bool mysql_stmt_bind_param(MYSQL_STMT * stmt, MYSQL_BIND * bnd); +# 700 "mysql.h" +extern my_bool mysql_stmt_bind_result(MYSQL_STMT * stmt, MYSQL_BIND * bnd); +# 701 "mysql.h" +extern my_bool mysql_stmt_close(MYSQL_STMT * stmt); +# 716 "mysql.h" +extern void mysql_stmt_data_seek(MYSQL_STMT * stmt, my_ulonglong); +# 710 "mysql.h" +extern unsigned int mysql_stmt_errno(MYSQL_STMT * stmt); +# 711 "mysql.h" +extern char const * mysql_stmt_error(MYSQL_STMT * stmt); +# 686 "mysql.h" +extern int mysql_stmt_execute(MYSQL_STMT * stmt); +# 687 "mysql.h" +extern int mysql_stmt_fetch(MYSQL_STMT * stmt); +# 688 "mysql.h" +extern int mysql_stmt_fetch_column(MYSQL_STMT * stmt, MYSQL_BIND * bind, unsigned int, unsigned long int); +# 720 "mysql.h" +extern unsigned int mysql_stmt_field_count(MYSQL_STMT * stmt); +# 703 "mysql.h" +extern my_bool mysql_stmt_free_result(MYSQL_STMT * stmt); +# 683 "mysql.h" +extern MYSQL_STMT * mysql_stmt_init(MYSQL * mysql); +# 719 "mysql.h" +extern my_ulonglong mysql_stmt_insert_id(MYSQL_STMT * stmt); +# 717 "mysql.h" +extern my_ulonglong mysql_stmt_num_rows(MYSQL_STMT * stmt); +# 692 "mysql.h" +extern unsigned long int mysql_stmt_param_count(MYSQL_STMT * stmt); +# 709 "mysql.h" +extern MYSQL_RES * mysql_stmt_param_metadata(MYSQL_STMT * stmt); +# 684 "mysql.h" +extern int mysql_stmt_prepare(MYSQL_STMT * stmt, char const * query, unsigned long int); +# 702 "mysql.h" +extern my_bool mysql_stmt_reset(MYSQL_STMT * stmt); +# 708 "mysql.h" +extern MYSQL_RES * mysql_stmt_result_metadata(MYSQL_STMT * stmt); +# 713 "mysql.h" +extern MYSQL_ROW_OFFSET mysql_stmt_row_seek(MYSQL_STMT * stmt, MYSQL_ROW_OFFSET); +# 715 "mysql.h" +extern MYSQL_ROW_OFFSET mysql_stmt_row_tell(MYSQL_STMT * stmt); +# 704 "mysql.h" +extern my_bool mysql_stmt_send_long_data(MYSQL_STMT * stmt, unsigned int, char const * data, unsigned long int); +# 712 "mysql.h" +extern char const * mysql_stmt_sqlstate(MYSQL_STMT * stmt); +# 691 "mysql.h" +extern int mysql_stmt_store_result(MYSQL_STMT * stmt); +# 427 "mysql.h" +extern MYSQL_RES * mysql_store_result(MYSQL * mysql); +# 380 "mysql.h" +extern void mysql_thread_end(void); +# 404 "mysql.h" +extern unsigned long int mysql_thread_id(MYSQL * mysql); +# 379 "mysql.h" +extern my_bool mysql_thread_init(void); +# 544 "mysql.h" +extern unsigned int mysql_thread_safe(void); +# 80 "mysql.h" +extern char * mysql_unix_port; +# 428 "mysql.h" +extern MYSQL_RES * mysql_use_result(MYSQL * mysql); +# 402 "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); +# 755 "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); +# 121 "/usr/include/sys/select.h" +extern int pselect(int, fd_set * restrict __readfds, fd_set * restrict __writefds, fd_set * restrict __exceptfds, struct timespec const * restrict __timeout, __sigset_t const * restrict __sigmask); +# 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); +# 109 "/usr/include/sys/select.h" +extern int select(int, fd_set * restrict __readfds, fd_set * restrict __writefds, fd_set * restrict __exceptfds, struct timeval * restrict __timeout); +# 32 "typelib.h" +extern TYPELIB sql_protocol_typelib; |