123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335 |
- /*
- * 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.
- *
- *-----------------------------------------------------------------------------
- */
- #ifndef FAKEMYSQL_H_INCLUDED
- #define FAKEMYSQL_H_INCLUDED
- #include <stddef.h>
- #ifndef MODULE_SCOPE
- #define MODULE_SCOPE extern
- #endif
- MODULE_SCOPE Tcl_LoadHandle MysqlInitStubs(Tcl_Interp*);
- #ifdef _WIN32
- #define STDCALL __stdcall
- #else
- #define STDCALL /* nothing */
- #endif
- 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,
- };
- #define CLIENT_COMPRESS 32
- #define CLIENT_INTERACTIVE 1024
- #define MYSQL_DATA_TRUNCATED 101
- #define MYSQL_ERRMSG_SIZE 512
- #define MYSQL_NO_DATA 100
- #define SCRAMBLE_LENGTH 20
- #define SQLSTATE_LENGTH 5
- 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;
- #ifndef Socket_defined
- typedef int my_socket;
- #define INVALID_SOCKET -1
- #endif
- 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;
- #if !defined(CHECK_EMBEDDED_DIFFERENCES) || defined(EMBEDDED_LIBRARY)
- my_bool separate_thread;
- #endif
- 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 {
- #if !defined(CHECK_EMBEDDED_DIFFERENCES) || !defined(EMBEDDED_LIBRARY)
- 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;
- #endif
- 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;
- #if defined(MYSQL_SERVER) && !defined(EMBEDDED_LIBRARY)
- my_bool skip_big_packet;
- #endif
- };
- /*
- * 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;
- };
- #define NOT_NULL_FLAG 1
- #define IS_NUM(t) ((t) <= MYSQL_TYPE_INT24 || (t) == MYSQL_TYPE_YEAR || (t) == MYSQL_TYPE_NEWDECIMAL)
- #define mysql_library_init mysql_server_init
- #define mysql_library_end mysql_server_end
- #include "mysqlStubs.h"
- #endif /* not FAKEMYSQL_H_INCLUDED */
|