~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to include/drizzle.h

  • Committer: Brian Aker
  • Date: 2008-07-15 06:45:16 UTC
  • Revision ID: brian@tangent.org-20080715064516-fnbq7kowh7w57bxj
Merge Monty's code.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* - mode: c; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
 
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
 
 *
4
 
 *  Copyright (C) 2008 Sun Microsystems, Inc.
5
 
 *
6
 
 *  This program is free software; you can redistribute it and/or modify
7
 
 *  it under the terms of the GNU General Public License as published by
8
 
 *  the Free Software Foundation; version 2 of the License.
9
 
 *
10
 
 *  This program is distributed in the hope that it will be useful,
11
 
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 
 *  GNU General Public License for more details.
14
 
 *
15
 
 *  You should have received a copy of the GNU General Public License
16
 
 *  along with this program; if not, write to the Free Software
17
 
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18
 
 */
 
1
/* Copyright (C) 2000-2003 MySQL AB
 
2
 
 
3
   This program is free software; you can redistribute it and/or modify
 
4
   it under the terms of the GNU General Public License as published by
 
5
   the Free Software Foundation; version 2 of the License.
 
6
 
 
7
   This program is distributed in the hope that it will be useful,
 
8
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
9
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
10
   GNU General Public License for more details.
 
11
 
 
12
   You should have received a copy of the GNU General Public License
 
13
   along with this program; if not, write to the Free Software
 
14
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
19
15
 
20
16
/*
21
 
  This file defines the client API to DRIZZLE and also the ABI of the
22
 
  dynamically linked libdrizzle.
 
17
  This file defines the client API to MySQL and also the ABI of the
 
18
  dynamically linked libmysqlclient.
23
19
 
24
 
  In case the file is changed so the ABI is broken, you must also
25
 
  update the SHARED_LIB_MAJOR_VERSION in configure.ac.
 
20
  The ABI should never be changed in a released product of MySQL
 
21
  thus you need to take great care when changing the file. In case
 
22
  the file is changed so the ABI is broken, you must also
 
23
  update the SHAREDLIB_MAJOR_VERSION in configure.in .
26
24
 
27
25
*/
28
26
 
29
 
#ifndef _libdrizzle_libdrizzle_h
30
 
#define _libdrizzle_libdrizzle_h
31
 
 
32
 
#include <libdrizzle/drizzle_com.h>
33
 
 
34
 
#define CLIENT_NET_READ_TIMEOUT    365*24*3600  /* Timeout on read */
35
 
#define CLIENT_NET_WRITE_TIMEOUT  365*24*3600  /* Timeout on write */
36
 
 
37
 
#include <stdint.h>
38
 
#include <libdrizzle/drizzle_field.h>
39
 
#include <libdrizzle/drizzle_rows.h>
40
 
#include <libdrizzle/drizzle_data.h>
41
 
#include <libdrizzle/drizzle_options.h>
42
 
 
43
 
#include <libdrizzle/drizzle.h>
44
 
#include <libdrizzle/drizzle_parameters.h>
45
 
#include <libdrizzle/drizzle_methods.h>
46
 
 
47
 
#ifdef  __cplusplus
 
27
#ifndef _mysql_h
 
28
#define _mysql_h
 
29
 
 
30
#ifdef  __cplusplus
48
31
extern "C" {
49
32
#endif
50
33
 
51
 
  const char * drizzle_get_client_info(void);
52
 
  uint32_t drizzle_get_client_version(void);
53
 
  unsigned int drizzle_get_default_port(void);
54
 
  uint32_t drizzle_escape_string(char *to,const char *from,
55
 
                                 uint32_t from_length);
56
 
  uint32_t drizzle_hex_string(char *to,const char *from,
57
 
                              uint32_t from_length);
58
 
 
59
 
#ifdef  __cplusplus
 
34
#ifndef _global_h                               /* If not standard header */
 
35
#include <sys/types.h>
 
36
#ifdef __LCC__
 
37
#include <winsock2.h>                           /* For windows */
 
38
#endif
 
39
typedef char my_bool;
 
40
#define STDCALL
 
41
 
 
42
#ifndef my_socket_defined
 
43
typedef int my_socket;
 
44
#endif /* my_socket_defined */
 
45
#endif /* _global_h */
 
46
 
 
47
#include "drizzle_version.h"
 
48
#include "drizzle_com.h"
 
49
#include "drizzle_time.h"
 
50
 
 
51
#include "my_list.h" /* for LISTs used in 'MYSQL' */
 
52
 
 
53
extern unsigned int mysql_port;
 
54
extern char *mysql_unix_port;
 
55
 
 
56
#define CLIENT_NET_READ_TIMEOUT         365*24*3600     /* Timeout on read */
 
57
#define CLIENT_NET_WRITE_TIMEOUT        365*24*3600     /* Timeout on write */
 
58
 
 
59
#define IS_PRI_KEY(n)   ((n) & PRI_KEY_FLAG)
 
60
#define IS_NOT_NULL(n)  ((n) & NOT_NULL_FLAG)
 
61
#define IS_BLOB(n)      ((n) & BLOB_FLAG)
 
62
#define IS_NUM(t)       ((t) <= MYSQL_TYPE_LONGLONG || (t) == MYSQL_TYPE_YEAR || (t) == MYSQL_TYPE_NEWDECIMAL)
 
63
#define IS_NUM_FIELD(f)  ((f)->flags & NUM_FLAG)
 
64
#define INTERNAL_NUM_FIELD(f) (((f)->type <= MYSQL_TYPE_LONGLONG && ((f)->type != MYSQL_TYPE_TIMESTAMP || (f)->length == 14 || (f)->length == 8)) || (f)->type == MYSQL_TYPE_YEAR)
 
65
#define IS_LONGDATA(t) ((t) >= MYSQL_TYPE_TINY_BLOB && (t) <= MYSQL_TYPE_STRING)
 
66
 
 
67
 
 
68
typedef struct st_mysql_field {
 
69
  char *name;                 /* Name of column */
 
70
  char *org_name;             /* Original column name, if an alias */
 
71
  char *table;                /* Table of column if column was a field */
 
72
  char *org_table;            /* Org table name, if table was an alias */
 
73
  char *db;                   /* Database for table */
 
74
  char *catalog;              /* Catalog for table */
 
75
  char *def;                  /* Default value (set by mysql_list_fields) */
 
76
  unsigned long length;       /* Width of column (create length) */
 
77
  unsigned long max_length;   /* Max width for selected set */
 
78
  unsigned int name_length;
 
79
  unsigned int org_name_length;
 
80
  unsigned int table_length;
 
81
  unsigned int org_table_length;
 
82
  unsigned int db_length;
 
83
  unsigned int catalog_length;
 
84
  unsigned int def_length;
 
85
  unsigned int flags;         /* Div flags */
 
86
  unsigned int decimals;      /* Number of decimals in field */
 
87
  unsigned int charsetnr;     /* Character set */
 
88
  enum enum_field_types type; /* Type of field. See mysql_com.h for types */
 
89
  void *extension;
 
90
} MYSQL_FIELD;
 
91
 
 
92
typedef char **MYSQL_ROW;               /* return data as array of strings */
 
93
typedef unsigned int MYSQL_FIELD_OFFSET; /* offset to current field */
 
94
 
 
95
#include "typelib.h"
 
96
 
 
97
#define MYSQL_COUNT_ERROR (~(uint64_t) 0)
 
98
 
 
99
/* backward compatibility define - to be removed eventually */
 
100
#define ER_WARN_DATA_TRUNCATED WARN_DATA_TRUNCATED
 
101
 
 
102
typedef struct st_mysql_rows {
 
103
  struct st_mysql_rows *next;           /* list of rows */
 
104
  MYSQL_ROW data;
 
105
  unsigned long length;
 
106
} MYSQL_ROWS;
 
107
 
 
108
typedef MYSQL_ROWS *MYSQL_ROW_OFFSET;   /* offset to current row */
 
109
 
 
110
#include "my_alloc.h"
 
111
 
 
112
typedef struct embedded_query_result EMBEDDED_QUERY_RESULT;
 
113
typedef struct st_mysql_data {
 
114
  MYSQL_ROWS *data;
 
115
  struct embedded_query_result *embedded_info;
 
116
  MEM_ROOT alloc;
 
117
  uint64_t rows;
 
118
  unsigned int fields;
 
119
  /* extra info for embedded library */
 
120
  void *extension;
 
121
} MYSQL_DATA;
 
122
 
 
123
enum mysql_option 
 
124
{
 
125
  MYSQL_OPT_CONNECT_TIMEOUT, MYSQL_OPT_COMPRESS, MYSQL_OPT_NAMED_PIPE,
 
126
  MYSQL_INIT_COMMAND, MYSQL_READ_DEFAULT_FILE, MYSQL_READ_DEFAULT_GROUP,
 
127
  MYSQL_SET_CHARSET_DIR, MYSQL_SET_CHARSET_NAME, MYSQL_OPT_LOCAL_INFILE,
 
128
  MYSQL_OPT_PROTOCOL, MYSQL_SHARED_MEMORY_BASE_NAME, MYSQL_OPT_READ_TIMEOUT,
 
129
  MYSQL_OPT_WRITE_TIMEOUT, MYSQL_OPT_USE_RESULT,
 
130
  MYSQL_OPT_USE_REMOTE_CONNECTION, MYSQL_OPT_USE_EMBEDDED_CONNECTION,
 
131
  MYSQL_OPT_GUESS_CONNECTION, MYSQL_SET_CLIENT_IP, MYSQL_SECURE_AUTH,
 
132
  MYSQL_REPORT_DATA_TRUNCATION, MYSQL_OPT_RECONNECT,
 
133
  MYSQL_OPT_SSL_VERIFY_SERVER_CERT
 
134
};
 
135
 
 
136
struct st_mysql_options {
 
137
  unsigned int connect_timeout, read_timeout, write_timeout;
 
138
  unsigned int port, protocol;
 
139
  unsigned long client_flag;
 
140
  char *host,*user,*password,*unix_socket,*db;
 
141
  struct st_dynamic_array *init_commands;
 
142
  char *my_cnf_file,*my_cnf_group, *charset_dir, *charset_name;
 
143
  char *ssl_key;                                /* PEM key file */
 
144
  char *ssl_cert;                               /* PEM cert file */
 
145
  char *ssl_ca;                                 /* PEM CA file */
 
146
  char *ssl_capath;                             /* PEM directory of CA-s? */
 
147
  char *ssl_cipher;                             /* cipher to use */
 
148
  char *shared_memory_base_name;
 
149
  unsigned long max_allowed_packet;
 
150
  my_bool use_ssl;                              /* if to use SSL or not */
 
151
  my_bool compress,named_pipe;
 
152
  my_bool unused1;
 
153
  my_bool unused2;
 
154
  my_bool unused3;
 
155
  my_bool unused4;
 
156
  enum mysql_option methods_to_use;
 
157
  char *client_ip;
 
158
  /* Refuse client connecting to server if it uses old (pre-4.1.1) protocol */
 
159
  my_bool secure_auth;
 
160
  /* 0 - never report, 1 - always report (default) */
 
161
  my_bool report_data_truncation;
 
162
 
 
163
  /* function pointers for local infile support */
 
164
  int (*local_infile_init)(void **, const char *, void *);
 
165
  int (*local_infile_read)(void *, char *, unsigned int);
 
166
  void (*local_infile_end)(void *);
 
167
  int (*local_infile_error)(void *, char *, unsigned int);
 
168
  void *local_infile_userdata;
 
169
  void *extension;
 
170
};
 
171
 
 
172
enum mysql_status 
 
173
{
 
174
  MYSQL_STATUS_READY,MYSQL_STATUS_GET_RESULT,MYSQL_STATUS_USE_RESULT
 
175
};
 
176
 
 
177
enum mysql_protocol_type 
 
178
{
 
179
  MYSQL_PROTOCOL_DEFAULT, MYSQL_PROTOCOL_TCP, MYSQL_PROTOCOL_SOCKET,
 
180
  MYSQL_PROTOCOL_PIPE, MYSQL_PROTOCOL_MEMORY
 
181
};
 
182
 
 
183
typedef struct character_set
 
184
{
 
185
  unsigned int      number;     /* character set number              */
 
186
  unsigned int      state;      /* character set state               */
 
187
  const char        *csname;    /* collation name                    */
 
188
  const char        *name;      /* character set name                */
 
189
  const char        *comment;   /* comment                           */
 
190
  const char        *dir;       /* character set directory           */
 
191
  unsigned int      mbminlen;   /* min. length for multibyte strings */
 
192
  unsigned int      mbmaxlen;   /* max. length for multibyte strings */
 
193
} MY_CHARSET_INFO;
 
194
 
 
195
struct st_mysql_methods;
 
196
struct st_mysql_stmt;
 
197
 
 
198
typedef struct st_mysql
 
199
{
 
200
  NET           net;                    /* Communication parameters */
 
201
  unsigned char *connector_fd;          /* ConnectorFd for SSL */
 
202
  char          *host,*user,*passwd,*unix_socket,*server_version,*host_info;
 
203
  char          *info, *db;
 
204
  struct charset_info_st *charset;
 
205
  MYSQL_FIELD   *fields;
 
206
  MEM_ROOT      field_alloc;
 
207
  uint64_t affected_rows;
 
208
  uint64_t insert_id;           /* id if insert on table with NEXTNR */
 
209
  uint64_t extra_info;          /* Not used */
 
210
  unsigned long thread_id;              /* Id for connection in server */
 
211
  unsigned long packet_length;
 
212
  unsigned int  port;
 
213
  unsigned long client_flag,server_capabilities;
 
214
  unsigned int  protocol_version;
 
215
  unsigned int  field_count;
 
216
  unsigned int  server_status;
 
217
  unsigned int  server_language;
 
218
  unsigned int  warning_count;
 
219
  struct st_mysql_options options;
 
220
  enum mysql_status status;
 
221
  my_bool       free_me;                /* If free in mysql_close */
 
222
  my_bool       reconnect;              /* set to 1 if automatic reconnect */
 
223
 
 
224
  /* session-wide random string */
 
225
  char          scramble[SCRAMBLE_LENGTH+1];
 
226
  my_bool unused1;
 
227
  void *unused2, *unused3, *unused4, *unused5;
 
228
 
 
229
  LIST  *stmts;                     /* list of all statements */
 
230
  const struct st_mysql_methods *methods;
 
231
  void *thd;
 
232
  /*
 
233
    Points to boolean flag in MYSQL_RES  or MYSQL_STMT. We set this flag 
 
234
    from mysql_stmt_close if close had to cancel result set of this object.
 
235
  */
 
236
  my_bool *unbuffered_fetch_owner;
 
237
  /* needed for embedded server - no net buffer to store the 'info' */
 
238
  char *info_buffer;
 
239
  void *extension;
 
240
} MYSQL;
 
241
 
 
242
 
 
243
typedef struct st_mysql_res {
 
244
  uint64_t  row_count;
 
245
  MYSQL_FIELD   *fields;
 
246
  MYSQL_DATA    *data;
 
247
  MYSQL_ROWS    *data_cursor;
 
248
  unsigned long *lengths;               /* column lengths of current row */
 
249
  MYSQL         *handle;                /* for unbuffered reads */
 
250
  const struct st_mysql_methods *methods;
 
251
  MYSQL_ROW     row;                    /* If unbuffered read */
 
252
  MYSQL_ROW     current_row;            /* buffer to current row */
 
253
  MEM_ROOT      field_alloc;
 
254
  unsigned int  field_count, current_field;
 
255
  my_bool       eof;                    /* Used by mysql_fetch_row */
 
256
  /* mysql_stmt_close() had to cancel this result */
 
257
  my_bool       unbuffered_fetch_cancelled;  
 
258
  void *extension;
 
259
} MYSQL_RES;
 
260
 
 
261
 
 
262
#if !defined(MYSQL_SERVER) && !defined(MYSQL_CLIENT)
 
263
#define MYSQL_CLIENT
 
264
#endif
 
265
 
 
266
 
 
267
typedef struct st_mysql_parameters
 
268
{
 
269
  unsigned long *p_max_allowed_packet;
 
270
  unsigned long *p_net_buffer_length;
 
271
  void *extension;
 
272
} MYSQL_PARAMETERS;
 
273
 
 
274
#if !defined(MYSQL_SERVER)
 
275
#define max_allowed_packet (*mysql_get_parameters()->p_max_allowed_packet)
 
276
#define net_buffer_length (*mysql_get_parameters()->p_net_buffer_length)
 
277
#endif
 
278
 
 
279
/*
 
280
  Set up and bring down the server; to ensure that applications will
 
281
  work when linked against either the standard client library or the
 
282
  embedded server library, these functions should be called.
 
283
*/
 
284
int STDCALL mysql_server_init(int argc, char **argv, char **groups);
 
285
void STDCALL mysql_server_end(void);
 
286
 
 
287
/*
 
288
  mysql_server_init/end need to be called when using libmysqld or
 
289
  libmysqlclient (exactly, mysql_server_init() is called by mysql_init() so
 
290
  you don't need to call it explicitely; but you need to call
 
291
  mysql_server_end() to free memory). The names are a bit misleading
 
292
  (mysql_SERVER* to be used when using libmysqlCLIENT). So we add more general
 
293
  names which suit well whether you're using libmysqld or libmysqlclient. We
 
294
  intend to promote these aliases over the mysql_server* ones.
 
295
*/
 
296
#define mysql_library_init mysql_server_init
 
297
#define mysql_library_end mysql_server_end
 
298
 
 
299
MYSQL_PARAMETERS *STDCALL mysql_get_parameters(void);
 
300
 
 
301
/*
 
302
  Set up and bring down a thread; these function should be called
 
303
  for each thread in an application which opens at least one MySQL
 
304
  connection.  All uses of the connection(s) should be between these
 
305
  function calls.
 
306
*/
 
307
my_bool STDCALL mysql_thread_init(void);
 
308
void STDCALL mysql_thread_end(void);
 
309
 
 
310
/*
 
311
  Functions to get information from the MYSQL and MYSQL_RES structures
 
312
  Should definitely be used if one uses shared libraries.
 
313
*/
 
314
 
 
315
uint64_t STDCALL mysql_num_rows(MYSQL_RES *res);
 
316
unsigned int STDCALL mysql_num_fields(MYSQL_RES *res);
 
317
my_bool STDCALL mysql_eof(MYSQL_RES *res);
 
318
MYSQL_FIELD *STDCALL mysql_fetch_field_direct(MYSQL_RES *res,
 
319
                                              unsigned int fieldnr);
 
320
MYSQL_FIELD * STDCALL mysql_fetch_fields(MYSQL_RES *res);
 
321
MYSQL_ROW_OFFSET STDCALL mysql_row_tell(MYSQL_RES *res);
 
322
MYSQL_FIELD_OFFSET STDCALL mysql_field_tell(MYSQL_RES *res);
 
323
 
 
324
unsigned int STDCALL mysql_field_count(MYSQL *mysql);
 
325
uint64_t STDCALL mysql_affected_rows(MYSQL *mysql);
 
326
uint64_t STDCALL mysql_insert_id(MYSQL *mysql);
 
327
unsigned int STDCALL mysql_errno(MYSQL *mysql);
 
328
const char * STDCALL mysql_error(MYSQL *mysql);
 
329
const char *STDCALL mysql_sqlstate(MYSQL *mysql);
 
330
unsigned int STDCALL mysql_warning_count(MYSQL *mysql);
 
331
const char * STDCALL mysql_info(MYSQL *mysql);
 
332
unsigned long STDCALL mysql_thread_id(MYSQL *mysql);
 
333
const char * STDCALL mysql_character_set_name(MYSQL *mysql);
 
334
int          STDCALL mysql_set_character_set(MYSQL *mysql, const char *csname);
 
335
 
 
336
MYSQL *         STDCALL mysql_init(MYSQL *mysql);
 
337
my_bool         STDCALL mysql_ssl_set(MYSQL *mysql, const char *key,
 
338
                                      const char *cert, const char *ca,
 
339
                                      const char *capath, const char *cipher);
 
340
const char *    STDCALL mysql_get_ssl_cipher(MYSQL *mysql);
 
341
my_bool         STDCALL mysql_change_user(MYSQL *mysql, const char *user, 
 
342
                                          const char *passwd, const char *db);
 
343
MYSQL *         STDCALL mysql_real_connect(MYSQL *mysql, const char *host,
 
344
                                           const char *user,
 
345
                                           const char *passwd,
 
346
                                           const char *db,
 
347
                                           unsigned int port,
 
348
                                           const char *unix_socket,
 
349
                                           unsigned long clientflag);
 
350
int             STDCALL mysql_select_db(MYSQL *mysql, const char *db);
 
351
int             STDCALL mysql_query(MYSQL *mysql, const char *q);
 
352
int             STDCALL mysql_send_query(MYSQL *mysql, const char *q,
 
353
                                         unsigned long length);
 
354
int             STDCALL mysql_real_query(MYSQL *mysql, const char *q,
 
355
                                        unsigned long length);
 
356
MYSQL_RES *     STDCALL mysql_store_result(MYSQL *mysql);
 
357
MYSQL_RES *     STDCALL mysql_use_result(MYSQL *mysql);
 
358
 
 
359
void        STDCALL mysql_get_character_set_info(MYSQL *mysql,
 
360
                           MY_CHARSET_INFO *charset);
 
361
 
 
362
/* local infile support */
 
363
 
 
364
#define LOCAL_INFILE_ERROR_LEN 512
 
365
 
 
366
void
 
367
mysql_set_local_infile_handler(MYSQL *mysql,
 
368
                               int (*local_infile_init)(void **, const char *,
 
369
                            void *),
 
370
                               int (*local_infile_read)(void *, char *,
 
371
                                                        unsigned int),
 
372
                               void (*local_infile_end)(void *),
 
373
                               int (*local_infile_error)(void *, char*,
 
374
                                                         unsigned int),
 
375
                               void *);
 
376
 
 
377
void
 
378
mysql_set_local_infile_default(MYSQL *mysql);
 
379
 
 
380
int             STDCALL mysql_shutdown(MYSQL *mysql,
 
381
                                       enum mysql_enum_shutdown_level
 
382
                                       shutdown_level);
 
383
int             STDCALL mysql_dump_debug_info(MYSQL *mysql);
 
384
int             STDCALL mysql_refresh(MYSQL *mysql,
 
385
                                     unsigned int refresh_options);
 
386
int             STDCALL mysql_kill(MYSQL *mysql,unsigned long pid);
 
387
int             STDCALL mysql_set_server_option(MYSQL *mysql,
 
388
                                                enum enum_mysql_set_option
 
389
                                                option);
 
390
int             STDCALL mysql_ping(MYSQL *mysql);
 
391
const char *    STDCALL mysql_stat(MYSQL *mysql);
 
392
const char *    STDCALL mysql_get_server_info(MYSQL *mysql);
 
393
const char *    STDCALL mysql_get_client_info(void);
 
394
unsigned long   STDCALL mysql_get_client_version(void);
 
395
const char *    STDCALL mysql_get_host_info(MYSQL *mysql);
 
396
unsigned long   STDCALL mysql_get_server_version(MYSQL *mysql);
 
397
unsigned int    STDCALL mysql_get_proto_info(MYSQL *mysql);
 
398
MYSQL_RES *     STDCALL mysql_list_dbs(MYSQL *mysql,const char *wild);
 
399
MYSQL_RES *     STDCALL mysql_list_tables(MYSQL *mysql,const char *wild);
 
400
MYSQL_RES *     STDCALL mysql_list_processes(MYSQL *mysql);
 
401
int             STDCALL mysql_options(MYSQL *mysql,enum mysql_option option,
 
402
                                      const void *arg);
 
403
void            STDCALL mysql_free_result(MYSQL_RES *result);
 
404
void            STDCALL mysql_data_seek(MYSQL_RES *result,
 
405
                                        uint64_t offset);
 
406
MYSQL_ROW_OFFSET STDCALL mysql_row_seek(MYSQL_RES *result,
 
407
                                                MYSQL_ROW_OFFSET offset);
 
408
MYSQL_FIELD_OFFSET STDCALL mysql_field_seek(MYSQL_RES *result,
 
409
                                           MYSQL_FIELD_OFFSET offset);
 
410
MYSQL_ROW       STDCALL mysql_fetch_row(MYSQL_RES *result);
 
411
unsigned long * STDCALL mysql_fetch_lengths(MYSQL_RES *result);
 
412
MYSQL_FIELD *   STDCALL mysql_fetch_field(MYSQL_RES *result);
 
413
MYSQL_RES *     STDCALL mysql_list_fields(MYSQL *mysql, const char *table,
 
414
                                          const char *wild);
 
415
unsigned long   STDCALL mysql_escape_string(char *to,const char *from,
 
416
                                            unsigned long from_length);
 
417
unsigned long   STDCALL mysql_hex_string(char *to,const char *from,
 
418
                                         unsigned long from_length);
 
419
unsigned long STDCALL mysql_real_escape_string(MYSQL *mysql,
 
420
                                               char *to,const char *from,
 
421
                                               unsigned long length);
 
422
void            STDCALL mysql_debug(const char *debug);
 
423
void            STDCALL myodbc_remove_escape(MYSQL *mysql,char *name);
 
424
unsigned int    STDCALL mysql_thread_safe(void);
 
425
my_bool         STDCALL mysql_embedded(void);
 
426
my_bool         STDCALL mysql_read_query_result(MYSQL *mysql);
 
427
 
 
428
 
 
429
 
 
430
typedef struct st_mysql_methods
 
431
{
 
432
  my_bool (*read_query_result)(MYSQL *mysql);
 
433
  my_bool (*advanced_command)(MYSQL *mysql,
 
434
                              enum enum_server_command command,
 
435
                              const unsigned char *header,
 
436
                              unsigned long header_length,
 
437
                              const unsigned char *arg,
 
438
                              unsigned long arg_length,
 
439
                              my_bool skip_check);
 
440
  MYSQL_DATA *(*read_rows)(MYSQL *mysql,MYSQL_FIELD *mysql_fields,
 
441
                           unsigned int fields);
 
442
  MYSQL_RES * (*use_result)(MYSQL *mysql);
 
443
  void (*fetch_lengths)(unsigned long *to, 
 
444
                        MYSQL_ROW column, unsigned int field_count);
 
445
  void (*flush_use_result)(MYSQL *mysql);
 
446
  MYSQL_FIELD * (*list_fields)(MYSQL *mysql);
 
447
  int (*unbuffered_fetch)(MYSQL *mysql, char **row);
 
448
  const char *(*read_statistics)(MYSQL *mysql);
 
449
  my_bool (*next_result)(MYSQL *mysql);
 
450
  int (*read_change_user_result)(MYSQL *mysql, char *buff, const char *passwd);
 
451
} MYSQL_METHODS;
 
452
 
 
453
 
 
454
my_bool STDCALL mysql_commit(MYSQL * mysql);
 
455
my_bool STDCALL mysql_rollback(MYSQL * mysql);
 
456
my_bool STDCALL mysql_autocommit(MYSQL * mysql, my_bool auto_mode);
 
457
my_bool STDCALL mysql_more_results(MYSQL *mysql);
 
458
int STDCALL mysql_next_result(MYSQL *mysql);
 
459
void STDCALL mysql_close(MYSQL *sock);
 
460
 
 
461
 
 
462
/* status return codes */
 
463
#define MYSQL_NO_DATA        100
 
464
#define MYSQL_DATA_TRUNCATED 101
 
465
 
 
466
#define mysql_reload(mysql) mysql_refresh((mysql),REFRESH_GRANT)
 
467
 
 
468
#ifdef USE_OLD_FUNCTIONS
 
469
MYSQL *         STDCALL mysql_connect(MYSQL *mysql, const char *host,
 
470
                                      const char *user, const char *passwd);
 
471
int             STDCALL mysql_create_db(MYSQL *mysql, const char *DB);
 
472
int             STDCALL mysql_drop_db(MYSQL *mysql, const char *DB);
 
473
#endif
 
474
#define HAVE_MYSQL_REAL_CONNECT
 
475
 
 
476
/*
 
477
  The following functions are mainly exported because of mysqlbinlog;
 
478
  They are not for general usage
 
479
*/
 
480
 
 
481
#define simple_command(mysql, command, arg, length, skip_check) \
 
482
  (*(mysql)->methods->advanced_command)(mysql, command, 0,  \
 
483
                                        0, arg, length, skip_check)
 
484
 
 
485
#ifdef  __cplusplus
60
486
}
61
487
#endif
62
488
 
63
 
#endif /* _libdrizzle_libdrizzle_h */
 
489
#endif /* _mysql_h */