File indexing completed on 2024-05-18 08:29:50
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #ifndef FAKEMYSQL_H_INCLUDED
0017 #define FAKEMYSQL_H_INCLUDED
0018
0019 #include <stddef.h>
0020
0021 #ifndef MODULE_SCOPE
0022 #define MODULE_SCOPE extern
0023 #endif
0024
0025 MODULE_SCOPE Tcl_LoadHandle MysqlInitStubs(Tcl_Interp*);
0026
0027 #ifdef _WIN32
0028 #define STDCALL __stdcall
0029 #else
0030 #define STDCALL
0031 #endif
0032
0033 enum enum_field_types {
0034 MYSQL_TYPE_DECIMAL=0,
0035 MYSQL_TYPE_TINY=1,
0036 MYSQL_TYPE_SHORT=2,
0037 MYSQL_TYPE_LONG=3,
0038 MYSQL_TYPE_FLOAT=4,
0039 MYSQL_TYPE_DOUBLE=5,
0040 MYSQL_TYPE_NULL=6,
0041 MYSQL_TYPE_TIMESTAMP=7,
0042 MYSQL_TYPE_LONGLONG=8,
0043 MYSQL_TYPE_INT24=9,
0044 MYSQL_TYPE_DATE=10,
0045 MYSQL_TYPE_TIME=11,
0046 MYSQL_TYPE_DATETIME=12,
0047 MYSQL_TYPE_YEAR=13,
0048 MYSQL_TYPE_NEWDATE=14,
0049 MYSQL_TYPE_VARCHAR=15,
0050 MYSQL_TYPE_BIT=16,
0051 MYSQL_TYPE_NEWDECIMAL=246,
0052 MYSQL_TYPE_ENUM=247,
0053 MYSQL_TYPE_SET=248,
0054 MYSQL_TYPE_TINY_BLOB=249,
0055 MYSQL_TYPE_MEDIUM_BLOB=250,
0056 MYSQL_TYPE_LONG_BLOB=251,
0057 MYSQL_TYPE_BLOB=252,
0058 MYSQL_TYPE_VAR_STRING=253,
0059 MYSQL_TYPE_STRING=254,
0060 MYSQL_TYPE_GEOMETRY=255
0061 };
0062
0063 enum mysql_option {
0064 MYSQL_SET_CHARSET_NAME=7,
0065 };
0066
0067 enum mysql_status {
0068 MYSQL_STATUS_READY=0,
0069 };
0070
0071 #define CLIENT_COMPRESS 32
0072 #define CLIENT_INTERACTIVE 1024
0073 #define MYSQL_DATA_TRUNCATED 101
0074 #define MYSQL_ERRMSG_SIZE 512
0075 #define MYSQL_NO_DATA 100
0076 #define SCRAMBLE_LENGTH 20
0077 #define SQLSTATE_LENGTH 5
0078
0079 typedef struct st_list LIST;
0080 typedef struct st_mem_root MEM_ROOT;
0081 typedef struct st_mysql MYSQL;
0082 typedef struct st_mysql_bind MYSQL_BIND;
0083 typedef struct st_mysql_field MYSQL_FIELD;
0084 typedef struct st_mysql_res MYSQL_RES;
0085 typedef char** MYSQL_ROW;
0086 typedef struct st_mysql_stmt MYSQL_STMT;
0087 typedef char my_bool;
0088 #ifndef Socket_defined
0089 typedef int my_socket;
0090 #define INVALID_SOCKET -1
0091 #endif
0092 typedef Tcl_WideUInt my_ulonglong;
0093 typedef struct st_net NET;
0094 typedef struct st_used_mem USED_MEM;
0095 typedef struct st_vio Vio;
0096
0097 struct st_mem_root {
0098 USED_MEM *free;
0099 USED_MEM *used;
0100 USED_MEM *pre_alloc;
0101 size_t min_malloc;
0102 size_t block_size;
0103 unsigned int block_num;
0104 unsigned int first_block_usage;
0105 void (*error_handler)(void);
0106 };
0107
0108 struct st_mysql_options {
0109 unsigned int connect_timeout;
0110 unsigned int read_timeout;
0111 unsigned int write_timeout;
0112 unsigned int port;
0113 unsigned int protocol;
0114 unsigned long client_flag;
0115 char *host;
0116 char *user;
0117 char *password;
0118 char *unix_socket;
0119 char *db;
0120 struct st_dynamic_array *init_commands;
0121 char *my_cnf_file;
0122 char *my_cnf_group;
0123 char *charset_dir;
0124 char *charset_name;
0125 char *ssl_key;
0126 char *ssl_cert;
0127 char *ssl_ca;
0128 char *ssl_capath;
0129 char *ssl_cipher;
0130 char *shared_memory_base_name;
0131 unsigned long max_allowed_packet;
0132 my_bool use_ssl;
0133 my_bool compress,named_pipe;
0134 my_bool rpl_probe;
0135 my_bool rpl_parse;
0136 my_bool no_master_reads;
0137 #if !defined(CHECK_EMBEDDED_DIFFERENCES) || defined(EMBEDDED_LIBRARY)
0138 my_bool separate_thread;
0139 #endif
0140 enum mysql_option methods_to_use;
0141 char *client_ip;
0142 my_bool secure_auth;
0143 my_bool report_data_truncation;
0144 int (*local_infile_init)(void **, const char *, void *);
0145 int (*local_infile_read)(void *, char *, unsigned int);
0146 void (*local_infile_end)(void *);
0147 int (*local_infile_error)(void *, char *, unsigned int);
0148 void *local_infile_userdata;
0149 void *extension;
0150 };
0151
0152 struct st_net {
0153 #if !defined(CHECK_EMBEDDED_DIFFERENCES) || !defined(EMBEDDED_LIBRARY)
0154 Vio *vio;
0155 unsigned char *buff;
0156 unsigned char *buff_end;
0157 unsigned char *write_pos;
0158 unsigned char *read_pos;
0159 my_socket fd;
0160 unsigned long remain_in_buf;
0161 unsigned long length;
0162 unsigned long buf_length;
0163 unsigned long where_b;
0164 unsigned long max_packet;
0165 unsigned long max_packet_size;
0166 unsigned int pkt_nr;
0167 unsigned int compress_pkt_nr;
0168 unsigned int write_timeout;
0169 unsigned int read_timeout;
0170 unsigned int retry_count;
0171 int fcntl;
0172 unsigned int *return_status;
0173 unsigned char reading_or_writing;
0174 char save_char;
0175 my_bool unused0;
0176 my_bool unused;
0177 my_bool compress;
0178 my_bool unused1;
0179 #endif
0180 unsigned char *query_cache_query;
0181 unsigned int last_errno;
0182 unsigned char error;
0183 my_bool unused2;
0184 my_bool return_errno;
0185 char last_error[MYSQL_ERRMSG_SIZE];
0186 char sqlstate[SQLSTATE_LENGTH+1];
0187 void *extension;
0188 #if defined(MYSQL_SERVER) && !defined(EMBEDDED_LIBRARY)
0189 my_bool skip_big_packet;
0190 #endif
0191 };
0192
0193
0194
0195
0196
0197
0198
0199 struct st_mysql {
0200 NET net;
0201 unsigned char *connector_fd;
0202 char *host;
0203 char *user;
0204 char *passwd;
0205 char *unix_socket;
0206 char *server_version;
0207 char *host_info;
0208 char *info;
0209 char *db;
0210 struct charset_info_st *charset;
0211 MYSQL_FIELD *fields;
0212 MEM_ROOT field_alloc;
0213 my_ulonglong affected_rows;
0214 my_ulonglong insert_id;
0215 my_ulonglong extra_info;
0216 unsigned long thread_id;
0217 unsigned long packet_length;
0218 unsigned int port;
0219 unsigned long client_flag;
0220 unsigned long server_capabilities;
0221 unsigned int protocol_version;
0222 unsigned int field_count;
0223 unsigned int server_status;
0224 unsigned int server_language;
0225 unsigned int warning_count;
0226 struct st_mysql_options options;
0227 enum mysql_status status;
0228 my_bool free_me;
0229 my_bool reconnect;
0230 char scramble[SCRAMBLE_LENGTH+1];
0231 my_bool rpl_pivot;
0232 struct st_mysql *master;
0233 struct st_mysql *next_slave;
0234 struct st_mysql* last_used_slave;
0235 struct st_mysql* last_used_con;
0236 LIST *stmts;
0237 const struct st_mysql_methods *methods;
0238 void *thd;
0239 my_bool *unbuffered_fetch_owner;
0240 char *info_buffer;
0241 };
0242
0243
0244
0245
0246
0247
0248
0249 struct st_mysql_bind_51 {
0250 unsigned long* length;
0251 my_bool* is_null;
0252 void* buffer;
0253 my_bool* error;
0254 unsigned char* row_ptr;
0255 void (*store_param_func)(NET* net, MYSQL_BIND* param);
0256 void (*fetch_result)(MYSQL_BIND*, MYSQL_FIELD*, unsigned char**);
0257 void (*skip_result)(MYSQL_BIND*, MYSQL_FIELD*, unsigned char**);
0258 unsigned long buffer_length;
0259 unsigned long offset;
0260 unsigned long length_value;
0261 unsigned int param_number;
0262 unsigned int pack_length;
0263 enum enum_field_types buffer_type;
0264 my_bool error_value;
0265 my_bool is_unsigned;
0266 my_bool long_data_used;
0267 my_bool is_null_value;
0268 void* extension;
0269 };
0270
0271 struct st_mysql_bind_50 {
0272 unsigned long* length;
0273 my_bool* is_null;
0274 void* buffer;
0275 my_bool* error;
0276 enum enum_field_types buffer_type;
0277 unsigned long buffer_length;
0278 unsigned char* row_ptr;
0279 unsigned long offset;
0280 unsigned long length_value;
0281 unsigned int param_number;
0282 unsigned int pack_length;
0283 my_bool error_value;
0284 my_bool is_unsigned;
0285 my_bool long_data_used;
0286 my_bool is_null_value;
0287 void (*store_param_func)(NET* net, MYSQL_BIND* param);
0288 void (*fetch_result)(MYSQL_BIND*, MYSQL_FIELD*, unsigned char**);
0289 void (*skip_result)(MYSQL_BIND*, MYSQL_FIELD*, unsigned char**);
0290 };
0291
0292
0293
0294
0295
0296
0297 struct st_mysql_field {
0298 char* name;
0299 char *org_name;
0300 char* table;
0301 char* org_table;
0302 char* db;
0303 char* catalog;
0304 char* def;
0305 unsigned long length;
0306 unsigned long max_length;
0307 unsigned int name_length;
0308 unsigned int org_name_length;
0309 unsigned int table_length;
0310 unsigned int org_table_length;
0311 unsigned int db_length;
0312 unsigned int catalog_length;
0313 unsigned int def_length;
0314 unsigned int flags;
0315 unsigned int decimals;
0316 unsigned int charsetnr;
0317 enum enum_field_types type;
0318 };
0319 struct st_mysql_field_50 {
0320 struct st_mysql_field field;
0321 };
0322 struct st_mysql_field_51 {
0323 struct st_mysql_field field;
0324 void* extension;
0325 };
0326 #define NOT_NULL_FLAG 1
0327
0328 #define IS_NUM(t) ((t) <= MYSQL_TYPE_INT24 || (t) == MYSQL_TYPE_YEAR || (t) == MYSQL_TYPE_NEWDECIMAL)
0329
0330 #define mysql_library_init mysql_server_init
0331 #define mysql_library_end mysql_server_end
0332
0333 #include "mysqlStubs.h"
0334
0335 #endif