~ubuntu-branches/ubuntu/trusty/mysql-5.6/trusty

« back to all changes in this revision

Viewing changes to include/mysql.h.pp

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2014-02-12 11:54:27 UTC
  • Revision ID: package-import@ubuntu.com-20140212115427-oq6tfsqxl1wuwehi
Tags: upstream-5.6.15
ImportĀ upstreamĀ versionĀ 5.6.15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
typedef char my_bool;
 
2
typedef int my_socket;
 
3
#include "mysql_version.h"
 
4
#include "mysql_com.h"
 
5
enum enum_server_command
 
6
{
 
7
  COM_SLEEP, COM_QUIT, COM_INIT_DB, COM_QUERY, COM_FIELD_LIST,
 
8
  COM_CREATE_DB, COM_DROP_DB, COM_REFRESH, COM_SHUTDOWN, COM_STATISTICS,
 
9
  COM_PROCESS_INFO, COM_CONNECT, COM_PROCESS_KILL, COM_DEBUG, COM_PING,
 
10
  COM_TIME, COM_DELAYED_INSERT, COM_CHANGE_USER, COM_BINLOG_DUMP,
 
11
  COM_TABLE_DUMP, COM_CONNECT_OUT, COM_REGISTER_SLAVE,
 
12
  COM_STMT_PREPARE, COM_STMT_EXECUTE, COM_STMT_SEND_LONG_DATA, COM_STMT_CLOSE,
 
13
  COM_STMT_RESET, COM_SET_OPTION, COM_STMT_FETCH, COM_DAEMON,
 
14
  COM_BINLOG_DUMP_GTID,
 
15
  COM_END
 
16
};
 
17
struct st_vio;
 
18
typedef struct st_vio Vio;
 
19
typedef struct st_net {
 
20
  Vio *vio;
 
21
  unsigned char *buff,*buff_end,*write_pos,*read_pos;
 
22
  my_socket fd;
 
23
  unsigned long remain_in_buf,length, buf_length, where_b;
 
24
  unsigned long max_packet,max_packet_size;
 
25
  unsigned int pkt_nr,compress_pkt_nr;
 
26
  unsigned int write_timeout, read_timeout, retry_count;
 
27
  int fcntl;
 
28
  unsigned int *return_status;
 
29
  unsigned char reading_or_writing;
 
30
  char save_char;
 
31
  my_bool unused1;
 
32
  my_bool unused2;
 
33
  my_bool compress;
 
34
  my_bool unused3;
 
35
  unsigned char *unused;
 
36
  unsigned int last_errno;
 
37
  unsigned char error;
 
38
  my_bool unused4;
 
39
  my_bool unused5;
 
40
  char last_error[512];
 
41
  char sqlstate[5 +1];
 
42
  void *extension;
 
43
} NET;
 
44
enum enum_field_types { MYSQL_TYPE_DECIMAL, MYSQL_TYPE_TINY,
 
45
   MYSQL_TYPE_SHORT, MYSQL_TYPE_LONG,
 
46
   MYSQL_TYPE_FLOAT, MYSQL_TYPE_DOUBLE,
 
47
   MYSQL_TYPE_NULL, MYSQL_TYPE_TIMESTAMP,
 
48
   MYSQL_TYPE_LONGLONG,MYSQL_TYPE_INT24,
 
49
   MYSQL_TYPE_DATE, MYSQL_TYPE_TIME,
 
50
   MYSQL_TYPE_DATETIME, MYSQL_TYPE_YEAR,
 
51
   MYSQL_TYPE_NEWDATE, MYSQL_TYPE_VARCHAR,
 
52
   MYSQL_TYPE_BIT,
 
53
   MYSQL_TYPE_TIMESTAMP2,
 
54
   MYSQL_TYPE_DATETIME2,
 
55
   MYSQL_TYPE_TIME2,
 
56
                        MYSQL_TYPE_NEWDECIMAL=246,
 
57
   MYSQL_TYPE_ENUM=247,
 
58
   MYSQL_TYPE_SET=248,
 
59
   MYSQL_TYPE_TINY_BLOB=249,
 
60
   MYSQL_TYPE_MEDIUM_BLOB=250,
 
61
   MYSQL_TYPE_LONG_BLOB=251,
 
62
   MYSQL_TYPE_BLOB=252,
 
63
   MYSQL_TYPE_VAR_STRING=253,
 
64
   MYSQL_TYPE_STRING=254,
 
65
   MYSQL_TYPE_GEOMETRY=255
 
66
};
 
67
enum mysql_enum_shutdown_level {
 
68
  SHUTDOWN_DEFAULT = 0,
 
69
  SHUTDOWN_WAIT_CONNECTIONS= (unsigned char)(1 << 0),
 
70
  SHUTDOWN_WAIT_TRANSACTIONS= (unsigned char)(1 << 1),
 
71
  SHUTDOWN_WAIT_UPDATES= (unsigned char)(1 << 3),
 
72
  SHUTDOWN_WAIT_ALL_BUFFERS= ((unsigned char)(1 << 3) << 1),
 
73
  SHUTDOWN_WAIT_CRITICAL_BUFFERS= ((unsigned char)(1 << 3) << 1) + 1,
 
74
  KILL_QUERY= 254,
 
75
  KILL_CONNECTION= 255
 
76
};
 
77
enum enum_cursor_type
 
78
{
 
79
  CURSOR_TYPE_NO_CURSOR= 0,
 
80
  CURSOR_TYPE_READ_ONLY= 1,
 
81
  CURSOR_TYPE_FOR_UPDATE= 2,
 
82
  CURSOR_TYPE_SCROLLABLE= 4
 
83
};
 
84
enum enum_mysql_set_option
 
85
{
 
86
  MYSQL_OPTION_MULTI_STATEMENTS_ON,
 
87
  MYSQL_OPTION_MULTI_STATEMENTS_OFF
 
88
};
 
89
my_bool my_net_init(NET *net, Vio* vio);
 
90
void my_net_local_init(NET *net);
 
91
void net_end(NET *net);
 
92
void net_clear(NET *net, my_bool check_buffer);
 
93
my_bool net_realloc(NET *net, size_t length);
 
94
my_bool net_flush(NET *net);
 
95
my_bool my_net_write(NET *net,const unsigned char *packet, size_t len);
 
96
my_bool net_write_command(NET *net,unsigned char command,
 
97
     const unsigned char *header, size_t head_len,
 
98
     const unsigned char *packet, size_t len);
 
99
my_bool net_write_packet(NET *net, const unsigned char *packet, size_t length);
 
100
unsigned long my_net_read(NET *net);
 
101
struct rand_struct {
 
102
  unsigned long seed1,seed2,max_value;
 
103
  double max_value_dbl;
 
104
};
 
105
enum Item_result {STRING_RESULT=0, REAL_RESULT, INT_RESULT, ROW_RESULT,
 
106
                  DECIMAL_RESULT};
 
107
typedef struct st_udf_args
 
108
{
 
109
  unsigned int arg_count;
 
110
  enum Item_result *arg_type;
 
111
  char **args;
 
112
  unsigned long *lengths;
 
113
  char *maybe_null;
 
114
  char **attributes;
 
115
  unsigned long *attribute_lengths;
 
116
  void *extension;
 
117
} UDF_ARGS;
 
118
typedef struct st_udf_init
 
119
{
 
120
  my_bool maybe_null;
 
121
  unsigned int decimals;
 
122
  unsigned long max_length;
 
123
  char *ptr;
 
124
  my_bool const_item;
 
125
  void *extension;
 
126
} UDF_INIT;
 
127
void randominit(struct rand_struct *, unsigned long seed1,
 
128
                unsigned long seed2);
 
129
double my_rnd(struct rand_struct *);
 
130
void create_random_string(char *to, unsigned int length, struct rand_struct *rand_st);
 
131
void hash_password(unsigned long *to, const char *password, unsigned int password_len);
 
132
void make_scrambled_password_323(char *to, const char *password);
 
133
void scramble_323(char *to, const char *message, const char *password);
 
134
my_bool check_scramble_323(const unsigned char *reply, const char *message,
 
135
                           unsigned long *salt);
 
136
void get_salt_from_password_323(unsigned long *res, const char *password);
 
137
void make_password_from_salt_323(char *to, const unsigned long *salt);
 
138
void make_scrambled_password(char *to, const char *password);
 
139
void scramble(char *to, const char *message, const char *password);
 
140
my_bool check_scramble(const unsigned char *reply, const char *message,
 
141
                       const unsigned char *hash_stage2);
 
142
void get_salt_from_password(unsigned char *res, const char *password);
 
143
void make_password_from_salt(char *to, const unsigned char *hash_stage2);
 
144
char *octet2hex(char *to, const char *str, unsigned int len);
 
145
char *get_tty_password(const char *opt_message);
 
146
const char *mysql_errno_to_sqlstate(unsigned int mysql_errno);
 
147
my_bool my_thread_init(void);
 
148
void my_thread_end(void);
 
149
#include "mysql_time.h"
 
150
enum enum_mysql_timestamp_type
 
151
{
 
152
  MYSQL_TIMESTAMP_NONE= -2, MYSQL_TIMESTAMP_ERROR= -1,
 
153
  MYSQL_TIMESTAMP_DATE= 0, MYSQL_TIMESTAMP_DATETIME= 1, MYSQL_TIMESTAMP_TIME= 2
 
154
};
 
155
typedef struct st_mysql_time
 
156
{
 
157
  unsigned int year, month, day, hour, minute, second;
 
158
  unsigned long second_part;
 
159
  my_bool neg;
 
160
  enum enum_mysql_timestamp_type time_type;
 
161
} MYSQL_TIME;
 
162
#include "my_list.h"
 
163
typedef struct st_list {
 
164
  struct st_list *prev,*next;
 
165
  void *data;
 
166
} LIST;
 
167
typedef int (*list_walk_action)(void *,void *);
 
168
extern LIST *list_add(LIST *root,LIST *element);
 
169
extern LIST *list_delete(LIST *root,LIST *element);
 
170
extern LIST *list_cons(void *data,LIST *root);
 
171
extern LIST *list_reverse(LIST *root);
 
172
extern void list_free(LIST *root,unsigned int free_data);
 
173
extern unsigned int list_length(LIST *);
 
174
extern int list_walk(LIST *,list_walk_action action,unsigned char * argument);
 
175
extern unsigned int mysql_port;
 
176
extern char *mysql_unix_port;
 
177
typedef struct st_mysql_field {
 
178
  char *name;
 
179
  char *org_name;
 
180
  char *table;
 
181
  char *org_table;
 
182
  char *db;
 
183
  char *catalog;
 
184
  char *def;
 
185
  unsigned long length;
 
186
  unsigned long max_length;
 
187
  unsigned int name_length;
 
188
  unsigned int org_name_length;
 
189
  unsigned int table_length;
 
190
  unsigned int org_table_length;
 
191
  unsigned int db_length;
 
192
  unsigned int catalog_length;
 
193
  unsigned int def_length;
 
194
  unsigned int flags;
 
195
  unsigned int decimals;
 
196
  unsigned int charsetnr;
 
197
  enum enum_field_types type;
 
198
  void *extension;
 
199
} MYSQL_FIELD;
 
200
typedef char **MYSQL_ROW;
 
201
typedef unsigned int MYSQL_FIELD_OFFSET;
 
202
typedef unsigned long long my_ulonglong;
 
203
#include "typelib.h"
 
204
#include "my_alloc.h"
 
205
typedef struct st_used_mem
 
206
{
 
207
  struct st_used_mem *next;
 
208
  unsigned int left;
 
209
  unsigned int size;
 
210
} USED_MEM;
 
211
typedef struct st_mem_root
 
212
{
 
213
  USED_MEM *free;
 
214
  USED_MEM *used;
 
215
  USED_MEM *pre_alloc;
 
216
  size_t min_malloc;
 
217
  size_t block_size;
 
218
  unsigned int block_num;
 
219
  unsigned int first_block_usage;
 
220
  void (*error_handler)(void);
 
221
} MEM_ROOT;
 
222
typedef struct st_typelib {
 
223
  unsigned int count;
 
224
  const char *name;
 
225
  const char **type_names;
 
226
  unsigned int *type_lengths;
 
227
} TYPELIB;
 
228
extern my_ulonglong find_typeset(char *x, TYPELIB *typelib,int *error_position);
 
229
extern int find_type_or_exit(const char *x, TYPELIB *typelib,
 
230
                             const char *option);
 
231
extern int find_type(const char *x, const TYPELIB *typelib, unsigned int flags);
 
232
extern void make_type(char *to,unsigned int nr,TYPELIB *typelib);
 
233
extern const char *get_type(TYPELIB *typelib,unsigned int nr);
 
234
extern TYPELIB *copy_typelib(MEM_ROOT *root, TYPELIB *from);
 
235
extern TYPELIB sql_protocol_typelib;
 
236
my_ulonglong find_set_from_flags(const TYPELIB *lib, unsigned int default_name,
 
237
                              my_ulonglong cur_set, my_ulonglong default_set,
 
238
                              const char *str, unsigned int length,
 
239
                              char **err_pos, unsigned int *err_len);
 
240
typedef struct st_mysql_rows {
 
241
  struct st_mysql_rows *next;
 
242
  MYSQL_ROW data;
 
243
  unsigned long length;
 
244
} MYSQL_ROWS;
 
245
typedef MYSQL_ROWS *MYSQL_ROW_OFFSET;
 
246
#include "my_alloc.h"
 
247
typedef struct embedded_query_result EMBEDDED_QUERY_RESULT;
 
248
typedef struct st_mysql_data {
 
249
  MYSQL_ROWS *data;
 
250
  struct embedded_query_result *embedded_info;
 
251
  MEM_ROOT alloc;
 
252
  my_ulonglong rows;
 
253
  unsigned int fields;
 
254
  void *extension;
 
255
} MYSQL_DATA;
 
256
enum mysql_option
 
257
{
 
258
  MYSQL_OPT_CONNECT_TIMEOUT, MYSQL_OPT_COMPRESS, MYSQL_OPT_NAMED_PIPE,
 
259
  MYSQL_INIT_COMMAND, MYSQL_READ_DEFAULT_FILE, MYSQL_READ_DEFAULT_GROUP,
 
260
  MYSQL_SET_CHARSET_DIR, MYSQL_SET_CHARSET_NAME, MYSQL_OPT_LOCAL_INFILE,
 
261
  MYSQL_OPT_PROTOCOL, MYSQL_SHARED_MEMORY_BASE_NAME, MYSQL_OPT_READ_TIMEOUT,
 
262
  MYSQL_OPT_WRITE_TIMEOUT, MYSQL_OPT_USE_RESULT,
 
263
  MYSQL_OPT_USE_REMOTE_CONNECTION, MYSQL_OPT_USE_EMBEDDED_CONNECTION,
 
264
  MYSQL_OPT_GUESS_CONNECTION, MYSQL_SET_CLIENT_IP, MYSQL_SECURE_AUTH,
 
265
  MYSQL_REPORT_DATA_TRUNCATION, MYSQL_OPT_RECONNECT,
 
266
  MYSQL_OPT_SSL_VERIFY_SERVER_CERT, MYSQL_PLUGIN_DIR, MYSQL_DEFAULT_AUTH,
 
267
  MYSQL_OPT_BIND,
 
268
  MYSQL_OPT_SSL_KEY, MYSQL_OPT_SSL_CERT,
 
269
  MYSQL_OPT_SSL_CA, MYSQL_OPT_SSL_CAPATH, MYSQL_OPT_SSL_CIPHER,
 
270
  MYSQL_OPT_SSL_CRL, MYSQL_OPT_SSL_CRLPATH,
 
271
  MYSQL_OPT_CONNECT_ATTR_RESET, MYSQL_OPT_CONNECT_ATTR_ADD,
 
272
  MYSQL_OPT_CONNECT_ATTR_DELETE,
 
273
  MYSQL_SERVER_PUBLIC_KEY,
 
274
  MYSQL_ENABLE_CLEARTEXT_PLUGIN,
 
275
  MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS
 
276
};
 
277
struct st_mysql_options_extention;
 
278
struct st_mysql_options {
 
279
  unsigned int connect_timeout, read_timeout, write_timeout;
 
280
  unsigned int port, protocol;
 
281
  unsigned long client_flag;
 
282
  char *host,*user,*password,*unix_socket,*db;
 
283
  struct st_dynamic_array *init_commands;
 
284
  char *my_cnf_file,*my_cnf_group, *charset_dir, *charset_name;
 
285
  char *ssl_key;
 
286
  char *ssl_cert;
 
287
  char *ssl_ca;
 
288
  char *ssl_capath;
 
289
  char *ssl_cipher;
 
290
  char *shared_memory_base_name;
 
291
  unsigned long max_allowed_packet;
 
292
  my_bool use_ssl;
 
293
  my_bool compress,named_pipe;
 
294
  my_bool unused1;
 
295
  my_bool unused2;
 
296
  my_bool unused3;
 
297
  my_bool unused4;
 
298
  enum mysql_option methods_to_use;
 
299
  union {
 
300
    char *client_ip;
 
301
    char *bind_address;
 
302
  } ci;
 
303
  my_bool secure_auth;
 
304
  my_bool report_data_truncation;
 
305
  int (*local_infile_init)(void **, const char *, void *);
 
306
  int (*local_infile_read)(void *, char *, unsigned int);
 
307
  void (*local_infile_end)(void *);
 
308
  int (*local_infile_error)(void *, char *, unsigned int);
 
309
  void *local_infile_userdata;
 
310
  struct st_mysql_options_extention *extension;
 
311
};
 
312
enum mysql_status
 
313
{
 
314
  MYSQL_STATUS_READY, MYSQL_STATUS_GET_RESULT, MYSQL_STATUS_USE_RESULT,
 
315
  MYSQL_STATUS_STATEMENT_GET_RESULT
 
316
};
 
317
enum mysql_protocol_type
 
318
{
 
319
  MYSQL_PROTOCOL_DEFAULT, MYSQL_PROTOCOL_TCP, MYSQL_PROTOCOL_SOCKET,
 
320
  MYSQL_PROTOCOL_PIPE, MYSQL_PROTOCOL_MEMORY
 
321
};
 
322
typedef struct character_set
 
323
{
 
324
  unsigned int number;
 
325
  unsigned int state;
 
326
  const char *csname;
 
327
  const char *name;
 
328
  const char *comment;
 
329
  const char *dir;
 
330
  unsigned int mbminlen;
 
331
  unsigned int mbmaxlen;
 
332
} MY_CHARSET_INFO;
 
333
struct st_mysql_methods;
 
334
struct st_mysql_stmt;
 
335
typedef struct st_mysql
 
336
{
 
337
  NET net;
 
338
  unsigned char *connector_fd;
 
339
  char *host,*user,*passwd,*unix_socket,*server_version,*host_info;
 
340
  char *info, *db;
 
341
  struct charset_info_st *charset;
 
342
  MYSQL_FIELD *fields;
 
343
  MEM_ROOT field_alloc;
 
344
  my_ulonglong affected_rows;
 
345
  my_ulonglong insert_id;
 
346
  my_ulonglong extra_info;
 
347
  unsigned long thread_id;
 
348
  unsigned long packet_length;
 
349
  unsigned int port;
 
350
  unsigned long client_flag,server_capabilities;
 
351
  unsigned int protocol_version;
 
352
  unsigned int field_count;
 
353
  unsigned int server_status;
 
354
  unsigned int server_language;
 
355
  unsigned int warning_count;
 
356
  struct st_mysql_options options;
 
357
  enum mysql_status status;
 
358
  my_bool free_me;
 
359
  my_bool reconnect;
 
360
  char scramble[20 +1];
 
361
  my_bool unused1;
 
362
  void *unused2, *unused3, *unused4, *unused5;
 
363
  LIST *stmts;
 
364
  const struct st_mysql_methods *methods;
 
365
  void *thd;
 
366
  my_bool *unbuffered_fetch_owner;
 
367
  char *info_buffer;
 
368
  void *extension;
 
369
} MYSQL;
 
370
typedef struct st_mysql_res {
 
371
  my_ulonglong row_count;
 
372
  MYSQL_FIELD *fields;
 
373
  MYSQL_DATA *data;
 
374
  MYSQL_ROWS *data_cursor;
 
375
  unsigned long *lengths;
 
376
  MYSQL *handle;
 
377
  const struct st_mysql_methods *methods;
 
378
  MYSQL_ROW row;
 
379
  MYSQL_ROW current_row;
 
380
  MEM_ROOT field_alloc;
 
381
  unsigned int field_count, current_field;
 
382
  my_bool eof;
 
383
  my_bool unbuffered_fetch_cancelled;
 
384
  void *extension;
 
385
} MYSQL_RES;
 
386
typedef struct st_mysql_parameters
 
387
{
 
388
  unsigned long *p_max_allowed_packet;
 
389
  unsigned long *p_net_buffer_length;
 
390
  void *extension;
 
391
} MYSQL_PARAMETERS;
 
392
int mysql_server_init(int argc, char **argv, char **groups);
 
393
void mysql_server_end(void);
 
394
MYSQL_PARAMETERS * mysql_get_parameters(void);
 
395
my_bool mysql_thread_init(void);
 
396
void mysql_thread_end(void);
 
397
my_ulonglong mysql_num_rows(MYSQL_RES *res);
 
398
unsigned int mysql_num_fields(MYSQL_RES *res);
 
399
my_bool mysql_eof(MYSQL_RES *res);
 
400
MYSQL_FIELD * mysql_fetch_field_direct(MYSQL_RES *res,
 
401
           unsigned int fieldnr);
 
402
MYSQL_FIELD * mysql_fetch_fields(MYSQL_RES *res);
 
403
MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *res);
 
404
MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RES *res);
 
405
unsigned int mysql_field_count(MYSQL *mysql);
 
406
my_ulonglong mysql_affected_rows(MYSQL *mysql);
 
407
my_ulonglong mysql_insert_id(MYSQL *mysql);
 
408
unsigned int mysql_errno(MYSQL *mysql);
 
409
const char * mysql_error(MYSQL *mysql);
 
410
const char * mysql_sqlstate(MYSQL *mysql);
 
411
unsigned int mysql_warning_count(MYSQL *mysql);
 
412
const char * mysql_info(MYSQL *mysql);
 
413
unsigned long mysql_thread_id(MYSQL *mysql);
 
414
const char * mysql_character_set_name(MYSQL *mysql);
 
415
int mysql_set_character_set(MYSQL *mysql, const char *csname);
 
416
MYSQL * mysql_init(MYSQL *mysql);
 
417
my_bool mysql_ssl_set(MYSQL *mysql, const char *key,
 
418
          const char *cert, const char *ca,
 
419
          const char *capath, const char *cipher);
 
420
const char * mysql_get_ssl_cipher(MYSQL *mysql);
 
421
my_bool mysql_change_user(MYSQL *mysql, const char *user,
 
422
       const char *passwd, const char *db);
 
423
MYSQL * mysql_real_connect(MYSQL *mysql, const char *host,
 
424
        const char *user,
 
425
        const char *passwd,
 
426
        const char *db,
 
427
        unsigned int port,
 
428
        const char *unix_socket,
 
429
        unsigned long clientflag);
 
430
int mysql_select_db(MYSQL *mysql, const char *db);
 
431
int mysql_query(MYSQL *mysql, const char *q);
 
432
int mysql_send_query(MYSQL *mysql, const char *q,
 
433
      unsigned long length);
 
434
int mysql_real_query(MYSQL *mysql, const char *q,
 
435
     unsigned long length);
 
436
MYSQL_RES * mysql_store_result(MYSQL *mysql);
 
437
MYSQL_RES * mysql_use_result(MYSQL *mysql);
 
438
void mysql_get_character_set_info(MYSQL *mysql,
 
439
                           MY_CHARSET_INFO *charset);
 
440
void
 
441
mysql_set_local_infile_handler(MYSQL *mysql,
 
442
                               int (*local_infile_init)(void **, const char *,
 
443
                            void *),
 
444
                               int (*local_infile_read)(void *, char *,
 
445
       unsigned int),
 
446
                               void (*local_infile_end)(void *),
 
447
                               int (*local_infile_error)(void *, char*,
 
448
        unsigned int),
 
449
                               void *);
 
450
void
 
451
mysql_set_local_infile_default(MYSQL *mysql);
 
452
int mysql_shutdown(MYSQL *mysql,
 
453
                                       enum mysql_enum_shutdown_level
 
454
                                       shutdown_level);
 
455
int mysql_dump_debug_info(MYSQL *mysql);
 
456
int mysql_refresh(MYSQL *mysql,
 
457
         unsigned int refresh_options);
 
458
int mysql_kill(MYSQL *mysql,unsigned long pid);
 
459
int mysql_set_server_option(MYSQL *mysql,
 
460
      enum enum_mysql_set_option
 
461
      option);
 
462
int mysql_ping(MYSQL *mysql);
 
463
const char * mysql_stat(MYSQL *mysql);
 
464
const char * mysql_get_server_info(MYSQL *mysql);
 
465
const char * mysql_get_client_info(void);
 
466
unsigned long mysql_get_client_version(void);
 
467
const char * mysql_get_host_info(MYSQL *mysql);
 
468
unsigned long mysql_get_server_version(MYSQL *mysql);
 
469
unsigned int mysql_get_proto_info(MYSQL *mysql);
 
470
MYSQL_RES * mysql_list_dbs(MYSQL *mysql,const char *wild);
 
471
MYSQL_RES * mysql_list_tables(MYSQL *mysql,const char *wild);
 
472
MYSQL_RES * mysql_list_processes(MYSQL *mysql);
 
473
int mysql_options(MYSQL *mysql,enum mysql_option option,
 
474
          const void *arg);
 
475
int mysql_options4(MYSQL *mysql,enum mysql_option option,
 
476
                                       const void *arg1, const void *arg2);
 
477
void mysql_free_result(MYSQL_RES *result);
 
478
void mysql_data_seek(MYSQL_RES *result,
 
479
     my_ulonglong offset);
 
480
MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *result,
 
481
      MYSQL_ROW_OFFSET offset);
 
482
MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result,
 
483
        MYSQL_FIELD_OFFSET offset);
 
484
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);
 
485
unsigned long * mysql_fetch_lengths(MYSQL_RES *result);
 
486
MYSQL_FIELD * mysql_fetch_field(MYSQL_RES *result);
 
487
MYSQL_RES * mysql_list_fields(MYSQL *mysql, const char *table,
 
488
       const char *wild);
 
489
unsigned long mysql_escape_string(char *to,const char *from,
 
490
         unsigned long from_length);
 
491
unsigned long mysql_hex_string(char *to,const char *from,
 
492
                                         unsigned long from_length);
 
493
unsigned long mysql_real_escape_string(MYSQL *mysql,
 
494
            char *to,const char *from,
 
495
            unsigned long length);
 
496
void mysql_debug(const char *debug);
 
497
void myodbc_remove_escape(MYSQL *mysql,char *name);
 
498
unsigned int mysql_thread_safe(void);
 
499
my_bool mysql_embedded(void);
 
500
my_bool mysql_read_query_result(MYSQL *mysql);
 
501
enum enum_mysql_stmt_state
 
502
{
 
503
  MYSQL_STMT_INIT_DONE= 1, MYSQL_STMT_PREPARE_DONE, MYSQL_STMT_EXECUTE_DONE,
 
504
  MYSQL_STMT_FETCH_DONE
 
505
};
 
506
typedef struct st_mysql_bind
 
507
{
 
508
  unsigned long *length;
 
509
  my_bool *is_null;
 
510
  void *buffer;
 
511
  my_bool *error;
 
512
  unsigned char *row_ptr;
 
513
  void (*store_param_func)(NET *net, struct st_mysql_bind *param);
 
514
  void (*fetch_result)(struct st_mysql_bind *, MYSQL_FIELD *,
 
515
                       unsigned char **row);
 
516
  void (*skip_result)(struct st_mysql_bind *, MYSQL_FIELD *,
 
517
        unsigned char **row);
 
518
  unsigned long buffer_length;
 
519
  unsigned long offset;
 
520
  unsigned long length_value;
 
521
  unsigned int param_number;
 
522
  unsigned int pack_length;
 
523
  enum enum_field_types buffer_type;
 
524
  my_bool error_value;
 
525
  my_bool is_unsigned;
 
526
  my_bool long_data_used;
 
527
  my_bool is_null_value;
 
528
  void *extension;
 
529
} MYSQL_BIND;
 
530
struct st_mysql_stmt_extension;
 
531
typedef struct st_mysql_stmt
 
532
{
 
533
  MEM_ROOT mem_root;
 
534
  LIST list;
 
535
  MYSQL *mysql;
 
536
  MYSQL_BIND *params;
 
537
  MYSQL_BIND *bind;
 
538
  MYSQL_FIELD *fields;
 
539
  MYSQL_DATA result;
 
540
  MYSQL_ROWS *data_cursor;
 
541
  int (*read_row_func)(struct st_mysql_stmt *stmt,
 
542
                                  unsigned char **row);
 
543
  my_ulonglong affected_rows;
 
544
  my_ulonglong insert_id;
 
545
  unsigned long stmt_id;
 
546
  unsigned long flags;
 
547
  unsigned long prefetch_rows;
 
548
  unsigned int server_status;
 
549
  unsigned int last_errno;
 
550
  unsigned int param_count;
 
551
  unsigned int field_count;
 
552
  enum enum_mysql_stmt_state state;
 
553
  char last_error[512];
 
554
  char sqlstate[5 +1];
 
555
  my_bool send_types_to_server;
 
556
  my_bool bind_param_done;
 
557
  unsigned char bind_result_done;
 
558
  my_bool unbuffered_fetch_cancelled;
 
559
  my_bool update_max_length;
 
560
  struct st_mysql_stmt_extension *extension;
 
561
} MYSQL_STMT;
 
562
enum enum_stmt_attr_type
 
563
{
 
564
  STMT_ATTR_UPDATE_MAX_LENGTH,
 
565
  STMT_ATTR_CURSOR_TYPE,
 
566
  STMT_ATTR_PREFETCH_ROWS
 
567
};
 
568
MYSQL_STMT * mysql_stmt_init(MYSQL *mysql);
 
569
int mysql_stmt_prepare(MYSQL_STMT *stmt, const char *query,
 
570
                               unsigned long length);
 
571
int mysql_stmt_execute(MYSQL_STMT *stmt);
 
572
int mysql_stmt_fetch(MYSQL_STMT *stmt);
 
573
int mysql_stmt_fetch_column(MYSQL_STMT *stmt, MYSQL_BIND *bind_arg,
 
574
                                    unsigned int column,
 
575
                                    unsigned long offset);
 
576
int mysql_stmt_store_result(MYSQL_STMT *stmt);
 
577
unsigned long mysql_stmt_param_count(MYSQL_STMT * stmt);
 
578
my_bool mysql_stmt_attr_set(MYSQL_STMT *stmt,
 
579
                                    enum enum_stmt_attr_type attr_type,
 
580
                                    const void *attr);
 
581
my_bool mysql_stmt_attr_get(MYSQL_STMT *stmt,
 
582
                                    enum enum_stmt_attr_type attr_type,
 
583
                                    void *attr);
 
584
my_bool mysql_stmt_bind_param(MYSQL_STMT * stmt, MYSQL_BIND * bnd);
 
585
my_bool mysql_stmt_bind_result(MYSQL_STMT * stmt, MYSQL_BIND * bnd);
 
586
my_bool mysql_stmt_close(MYSQL_STMT * stmt);
 
587
my_bool mysql_stmt_reset(MYSQL_STMT * stmt);
 
588
my_bool mysql_stmt_free_result(MYSQL_STMT *stmt);
 
589
my_bool mysql_stmt_send_long_data(MYSQL_STMT *stmt,
 
590
                                          unsigned int param_number,
 
591
                                          const char *data,
 
592
                                          unsigned long length);
 
593
MYSQL_RES * mysql_stmt_result_metadata(MYSQL_STMT *stmt);
 
594
MYSQL_RES * mysql_stmt_param_metadata(MYSQL_STMT *stmt);
 
595
unsigned int mysql_stmt_errno(MYSQL_STMT * stmt);
 
596
const char * mysql_stmt_error(MYSQL_STMT * stmt);
 
597
const char * mysql_stmt_sqlstate(MYSQL_STMT * stmt);
 
598
MYSQL_ROW_OFFSET mysql_stmt_row_seek(MYSQL_STMT *stmt,
 
599
                                             MYSQL_ROW_OFFSET offset);
 
600
MYSQL_ROW_OFFSET mysql_stmt_row_tell(MYSQL_STMT *stmt);
 
601
void mysql_stmt_data_seek(MYSQL_STMT *stmt, my_ulonglong offset);
 
602
my_ulonglong mysql_stmt_num_rows(MYSQL_STMT *stmt);
 
603
my_ulonglong mysql_stmt_affected_rows(MYSQL_STMT *stmt);
 
604
my_ulonglong mysql_stmt_insert_id(MYSQL_STMT *stmt);
 
605
unsigned int mysql_stmt_field_count(MYSQL_STMT *stmt);
 
606
my_bool mysql_commit(MYSQL * mysql);
 
607
my_bool mysql_rollback(MYSQL * mysql);
 
608
my_bool mysql_autocommit(MYSQL * mysql, my_bool auto_mode);
 
609
my_bool mysql_more_results(MYSQL *mysql);
 
610
int mysql_next_result(MYSQL *mysql);
 
611
int mysql_stmt_next_result(MYSQL_STMT *stmt);
 
612
void mysql_close(MYSQL *sock);