Spaces:
Running
Running
| /* | |
| * fakemysql.h -- | |
| * | |
| * Fake definitions of the MySQL API sufficient to build tdbc::mysql | |
| * without having an MySQL installation on the build system. This file | |
| * comprises only data type, constant and function definitions. | |
| * | |
| * The programmers of this file believe that it contains material not | |
| * subject to copyright under the doctrines of scenes a faire and | |
| * of merger of idea and expression. Accordingly, this file is in the | |
| * public domain. | |
| * | |
| *----------------------------------------------------------------------------- | |
| */ | |
| MODULE_SCOPE Tcl_LoadHandle MysqlInitStubs(Tcl_Interp*); | |
| 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_VARCHAR=15, | |
| MYSQL_TYPE_BIT=16, | |
| 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_option { | |
| MYSQL_SET_CHARSET_NAME=7, | |
| }; | |
| enum mysql_status { | |
| MYSQL_STATUS_READY=0, | |
| }; | |
| typedef struct st_list LIST; | |
| typedef struct st_mem_root MEM_ROOT; | |
| typedef struct st_mysql MYSQL; | |
| typedef struct st_mysql_bind MYSQL_BIND; | |
| typedef struct st_mysql_field MYSQL_FIELD; | |
| typedef struct st_mysql_res MYSQL_RES; | |
| typedef char** MYSQL_ROW; | |
| typedef struct st_mysql_stmt MYSQL_STMT; | |
| typedef char my_bool; | |
| typedef int my_socket; | |
| typedef Tcl_WideUInt my_ulonglong; | |
| typedef struct st_net NET; | |
| typedef struct st_used_mem USED_MEM; | |
| typedef struct st_vio Vio; | |
| 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); | |
| }; | |
| struct st_mysql_options { | |
| unsigned int connect_timeout; | |
| unsigned int read_timeout; | |
| unsigned int write_timeout; | |
| unsigned int port; | |
| unsigned int protocol; | |
| unsigned long 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 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; | |
| void *extension; | |
| }; | |
| struct st_net { | |
| Vio *vio; | |
| unsigned char *buff; | |
| unsigned char *buff_end; | |
| unsigned char *write_pos; | |
| unsigned char *read_pos; | |
| my_socket fd; | |
| unsigned long remain_in_buf; | |
| unsigned long length; | |
| unsigned long buf_length; | |
| unsigned long where_b; | |
| unsigned long max_packet; | |
| unsigned long 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; | |
| unsigned int *return_status; | |
| unsigned char reading_or_writing; | |
| char save_char; | |
| my_bool unused0; | |
| 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[MYSQL_ERRMSG_SIZE]; | |
| char sqlstate[SQLSTATE_LENGTH+1]; | |
| void *extension; | |
| my_bool skip_big_packet; | |
| }; | |
| /* | |
| * st_mysql differs between 5.0 and 5.1, but the 5.0 version is a | |
| * strict subset, we don't use any of the 5.1 fields, and we don't | |
| * ever allocate the structure ourselves. | |
| */ | |
| struct st_mysql { | |
| NET net; | |
| unsigned char *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 thread_id; | |
| unsigned long packet_length; | |
| unsigned int port; | |
| unsigned long client_flag; | |
| unsigned long 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[SCRAMBLE_LENGTH+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; | |
| const struct st_mysql_methods *methods; | |
| void *thd; | |
| my_bool *unbuffered_fetch_owner; | |
| char *info_buffer; | |
| }; | |
| /* | |
| * There are different version of the MYSQL_BIND structure before and after | |
| * MySQL 5.1. We go after the fields of the structure using accessor functions | |
| * so that the code in this file is compatible with both versions. | |
| */ | |
| struct st_mysql_bind_51 { /* Post-5.1 */ | |
| unsigned long* length; | |
| my_bool* is_null; | |
| void* buffer; | |
| my_bool* error; | |
| unsigned char* row_ptr; | |
| void (*store_param_func)(NET* net, MYSQL_BIND* param); | |
| void (*fetch_result)(MYSQL_BIND*, MYSQL_FIELD*, unsigned char**); | |
| void (*skip_result)(MYSQL_BIND*, MYSQL_FIELD*, unsigned char**); | |
| 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; | |
| }; | |
| struct st_mysql_bind_50 { /* Pre-5.1 */ | |
| unsigned long* length; | |
| my_bool* is_null; | |
| void* buffer; | |
| my_bool* error; | |
| enum enum_field_types buffer_type; | |
| unsigned long buffer_length; | |
| unsigned char* row_ptr; | |
| unsigned long offset; | |
| unsigned long length_value; | |
| unsigned int param_number; | |
| unsigned int pack_length; | |
| my_bool error_value; | |
| my_bool is_unsigned; | |
| my_bool long_data_used; | |
| my_bool is_null_value; | |
| void (*store_param_func)(NET* net, MYSQL_BIND* param); | |
| void (*fetch_result)(MYSQL_BIND*, MYSQL_FIELD*, unsigned char**); | |
| void (*skip_result)(MYSQL_BIND*, MYSQL_FIELD*, unsigned char**); | |
| }; | |
| /* | |
| * There are also different versions of the MYSQL_FIELD structure; fortunately, | |
| * the 5.1 version is a strict extension of the 5.0 version. | |
| */ | |
| 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; | |
| }; | |
| struct st_mysql_field_50 { | |
| struct st_mysql_field field; | |
| }; | |
| struct st_mysql_field_51 { | |
| struct st_mysql_field field; | |
| void* extension; | |
| }; | |