~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to libdrizzle/constants.h

  • Committer: Brian Aker
  • Date: 2009-10-15 00:22:33 UTC
  • mto: (1183.1.11 merge)
  • mto: This revision was merged to the branch mainline in revision 1198.
  • Revision ID: brian@gaz-20091015002233-fa4ao2mbc67wls91
First pass of information engine. OMG, ponies... is it so much easier to
deal with creating and engine.

The list table iterator though... its ass, needs to go. We should also
abstract out share. Very few engines need a custom one. Just say'in

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Drizzle Client & Protocol Library
3
 
 *
4
 
 * Copyright (C) 2008 Eric Day (eday@oddments.org)
5
 
 * All rights reserved.
6
 
 *
7
 
 * Redistribution and use in source and binary forms, with or without
8
 
 * modification, are permitted provided that the following conditions are
9
 
 * met:
10
 
 *
11
 
 *     * Redistributions of source code must retain the above copyright
12
 
 * notice, this list of conditions and the following disclaimer.
13
 
 *
14
 
 *     * Redistributions in binary form must reproduce the above
15
 
 * copyright notice, this list of conditions and the following disclaimer
16
 
 * in the documentation and/or other materials provided with the
17
 
 * distribution.
18
 
 *
19
 
 *     * The names of its contributors may not be used to endorse or
20
 
 * promote products derived from this software without specific prior
21
 
 * written permission.
22
 
 *
23
 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24
 
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25
 
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26
 
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27
 
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28
 
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29
 
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30
 
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31
 
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32
 
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33
 
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
 
 *
35
 
 */
36
 
 
37
 
/**
38
 
 * @file
39
 
 * @brief Defines, typedefs, enums, and macros
40
 
 */
41
 
 
42
 
#ifndef __DRIZZLE_CONSTANTS_H
43
 
#define __DRIZZLE_CONSTANTS_H
44
 
 
45
 
#ifdef __cplusplus
46
 
extern "C" {
47
 
#endif
48
 
 
49
 
/**
50
 
 * @addtogroup drizzle_constants Constants
51
 
 * @ingroup drizzle_client_interface
52
 
 * @ingroup drizzle_server_interface
53
 
 * @{
54
 
 */
55
 
 
56
 
/**
57
 
 * @todo Remove these with next major API change.
58
 
 */
59
 
#define DRIZZLE_RETURN_SERVER_GONE DRIZZLE_RETURN_LOST_CONNECTION
60
 
#define DRIZZLE_RETURN_EOF DRIZZLE_RETURN_LOST_CONNECTION
61
 
#define DRIZZLE_COLUMN_TYPE_VIRTUAL 17
62
 
 
63
 
/* Defines. */
64
 
#define DRIZZLE_DEFAULT_TCP_HOST         "127.0.0.1"
65
 
#define DRIZZLE_DEFAULT_TCP_PORT         4427
66
 
#define DRIZZLE_DEFAULT_TCP_PORT_MYSQL   4427
67
 
#define DRIZZLE_DEFAULT_UDS              "/tmp/drizzle.sock"
68
 
#define DRIZZLE_DEFAULT_UDS_MYSQL        "/tmp/mysql.sock"
69
 
#define DRIZZLE_DEFAULT_BACKLOG          64
70
 
#define DRIZZLE_MAX_ERROR_SIZE           2048
71
 
#define DRIZZLE_MAX_USER_SIZE            64
72
 
#define DRIZZLE_MAX_PASSWORD_SIZE        32
73
 
#define DRIZZLE_MAX_DB_SIZE              64
74
 
#define DRIZZLE_MAX_INFO_SIZE            2048
75
 
#define DRIZZLE_MAX_SQLSTATE_SIZE        5
76
 
#define DRIZZLE_MAX_CATALOG_SIZE         128
77
 
#define DRIZZLE_MAX_TABLE_SIZE           128
78
 
#define DRIZZLE_MAX_COLUMN_NAME_SIZE     2048
79
 
#define DRIZZLE_MAX_DEFAULT_VALUE_SIZE   2048
80
 
#define DRIZZLE_MAX_PACKET_SIZE          UINT32_MAX
81
 
#define DRIZZLE_MAX_BUFFER_SIZE          32768
82
 
#define DRIZZLE_BUFFER_COPY_THRESHOLD    8192
83
 
#define DRIZZLE_MAX_SERVER_VERSION_SIZE  32
84
 
#define DRIZZLE_MAX_SERVER_EXTRA_SIZE    32
85
 
#define DRIZZLE_MAX_SCRAMBLE_SIZE        20
86
 
#define DRIZZLE_STATE_STACK_SIZE         8
87
 
#define DRIZZLE_ROW_GROW_SIZE            8192
88
 
#define DRIZZLE_DEFAULT_SOCKET_TIMEOUT   10
89
 
#define DRIZZLE_DEFAULT_SOCKET_SEND_SIZE 32768
90
 
#define DRIZZLE_DEFAULT_SOCKET_RECV_SIZE 32768
91
 
#define DRIZZLE_MYSQL_PASSWORD_HASH      41
92
 
 
93
 
/**
94
 
 * Return codes.
95
 
 */
96
 
typedef enum
97
 
{
98
 
  DRIZZLE_RETURN_OK,
99
 
  DRIZZLE_RETURN_IO_WAIT,
100
 
  DRIZZLE_RETURN_PAUSE,
101
 
  DRIZZLE_RETURN_ROW_BREAK,
102
 
  DRIZZLE_RETURN_MEMORY,
103
 
  DRIZZLE_RETURN_ERRNO,
104
 
  DRIZZLE_RETURN_INTERNAL_ERROR,
105
 
  DRIZZLE_RETURN_GETADDRINFO,
106
 
  DRIZZLE_RETURN_NOT_READY,
107
 
  DRIZZLE_RETURN_BAD_PACKET_NUMBER,
108
 
  DRIZZLE_RETURN_BAD_HANDSHAKE_PACKET,
109
 
  DRIZZLE_RETURN_BAD_PACKET,
110
 
  DRIZZLE_RETURN_PROTOCOL_NOT_SUPPORTED,
111
 
  DRIZZLE_RETURN_UNEXPECTED_DATA,
112
 
  DRIZZLE_RETURN_NO_SCRAMBLE,
113
 
  DRIZZLE_RETURN_AUTH_FAILED,
114
 
  DRIZZLE_RETURN_NULL_SIZE,
115
 
  DRIZZLE_RETURN_ERROR_CODE,
116
 
  DRIZZLE_RETURN_TOO_MANY_COLUMNS,
117
 
  DRIZZLE_RETURN_ROW_END,
118
 
  DRIZZLE_RETURN_LOST_CONNECTION,
119
 
  DRIZZLE_RETURN_COULD_NOT_CONNECT,
120
 
  DRIZZLE_RETURN_NO_ACTIVE_CONNECTIONS,
121
 
  DRIZZLE_RETURN_HANDSHAKE_FAILED,
122
 
  DRIZZLE_RETURN_TIMEOUT,
123
 
  DRIZZLE_RETURN_MAX /* Always add new codes to the end before this one. */
124
 
} drizzle_return_t;
125
 
 
126
 
/**
127
 
 * Verbosity levels.
128
 
 */
129
 
typedef enum
130
 
{
131
 
  DRIZZLE_VERBOSE_NEVER,
132
 
  DRIZZLE_VERBOSE_FATAL,
133
 
  DRIZZLE_VERBOSE_ERROR,
134
 
  DRIZZLE_VERBOSE_INFO,
135
 
  DRIZZLE_VERBOSE_DEBUG,
136
 
  DRIZZLE_VERBOSE_CRAZY,
137
 
  DRIZZLE_VERBOSE_MAX
138
 
} drizzle_verbose_t;
139
 
 
140
 
/** @} */
141
 
 
142
 
/**
143
 
 * @ingroup drizzle
144
 
 * Options for drizzle_st.
145
 
 */
146
 
typedef enum
147
 
{
148
 
  DRIZZLE_NONE=            0,
149
 
  DRIZZLE_ALLOCATED=       (1 << 0),
150
 
  DRIZZLE_NON_BLOCKING=    (1 << 1),
151
 
  DRIZZLE_FREE_OBJECTS=    (1 << 2),
152
 
  DRIZZLE_ASSERT_DANGLING= (1 << 3)
153
 
} drizzle_options_t;
154
 
 
155
 
/**
156
 
 * @ingroup drizzle_con
157
 
 * Options for drizzle_con_st.
158
 
 */
159
 
typedef enum
160
 
{
161
 
  DRIZZLE_CON_NONE=           0,
162
 
  DRIZZLE_CON_ALLOCATED=      (1 << 0),
163
 
  DRIZZLE_CON_MYSQL=          (1 << 1),
164
 
  DRIZZLE_CON_RAW_PACKET=     (1 << 2),
165
 
  DRIZZLE_CON_RAW_SCRAMBLE=   (1 << 3),
166
 
  DRIZZLE_CON_READY=          (1 << 4),
167
 
  DRIZZLE_CON_NO_RESULT_READ= (1 << 5),
168
 
  DRIZZLE_CON_IO_READY=       (1 << 6),
169
 
  DRIZZLE_CON_LISTEN=         (1 << 7),
170
 
  DRIZZLE_CON_EXPERIMENTAL=   (1 << 8),
171
 
  DRIZZLE_CON_FOUND_ROWS=     (1 << 9),
172
 
  DRIZZLE_CON_ADMIN=          (1 << 10)
173
 
} drizzle_con_options_t;
174
 
 
175
 
/**
176
 
 * @ingroup drizzle_con
177
 
 * Socket types for drizzle_con_st.
178
 
 */
179
 
typedef enum
180
 
{
181
 
  DRIZZLE_CON_SOCKET_TCP= 0,
182
 
  DRIZZLE_CON_SOCKET_UDS= (1 << 0)
183
 
} drizzle_con_socket_t;
184
 
 
185
 
/**
186
 
 * @ingroup drizzle_con
187
 
 * Status flags for drizle_con_st.
188
 
 */
189
 
typedef enum
190
 
{
191
 
  DRIZZLE_CON_STATUS_NONE=                     0,
192
 
  DRIZZLE_CON_STATUS_IN_TRANS=                 (1 << 0),
193
 
  DRIZZLE_CON_STATUS_AUTOCOMMIT=               (1 << 1),
194
 
  DRIZZLE_CON_STATUS_MORE_RESULTS_EXISTS=      (1 << 3),
195
 
  DRIZZLE_CON_STATUS_QUERY_NO_GOOD_INDEX_USED= (1 << 4),
196
 
  DRIZZLE_CON_STATUS_QUERY_NO_INDEX_USED=      (1 << 5),
197
 
  DRIZZLE_CON_STATUS_CURSOR_EXISTS=            (1 << 6),
198
 
  DRIZZLE_CON_STATUS_LAST_ROW_SENT=            (1 << 7),
199
 
  DRIZZLE_CON_STATUS_DB_DROPPED=               (1 << 8),
200
 
  DRIZZLE_CON_STATUS_NO_BACKSLASH_ESCAPES=     (1 << 9),
201
 
  DRIZZLE_CON_STATUS_QUERY_WAS_SLOW=           (1 << 10)
202
 
} drizzle_con_status_t;
203
 
 
204
 
/**
205
 
 * @ingroup drizzle_con
206
 
 * Capabilities for drizzle_con_st.
207
 
 */
208
 
typedef enum
209
 
{
210
 
  DRIZZLE_CAPABILITIES_NONE=                   0,
211
 
  DRIZZLE_CAPABILITIES_LONG_PASSWORD=          (1 << 0),
212
 
  DRIZZLE_CAPABILITIES_FOUND_ROWS=             (1 << 1),
213
 
  DRIZZLE_CAPABILITIES_LONG_FLAG=              (1 << 2),
214
 
  DRIZZLE_CAPABILITIES_CONNECT_WITH_DB=        (1 << 3),
215
 
  DRIZZLE_CAPABILITIES_NO_SCHEMA=              (1 << 4),
216
 
  DRIZZLE_CAPABILITIES_COMPRESS=               (1 << 5),
217
 
  DRIZZLE_CAPABILITIES_ODBC=                   (1 << 6),
218
 
  DRIZZLE_CAPABILITIES_LOCAL_FILES=            (1 << 7),
219
 
  DRIZZLE_CAPABILITIES_IGNORE_SPACE=           (1 << 8),
220
 
  DRIZZLE_CAPABILITIES_PROTOCOL_41=            (1 << 9),
221
 
  DRIZZLE_CAPABILITIES_INTERACTIVE=            (1 << 10),
222
 
  DRIZZLE_CAPABILITIES_SSL=                    (1 << 11),
223
 
  DRIZZLE_CAPABILITIES_IGNORE_SIGPIPE=         (1 << 12),
224
 
  DRIZZLE_CAPABILITIES_TRANSACTIONS=           (1 << 13),
225
 
  DRIZZLE_CAPABILITIES_RESERVED=               (1 << 14),
226
 
  DRIZZLE_CAPABILITIES_SECURE_CONNECTION=      (1 << 15),
227
 
  DRIZZLE_CAPABILITIES_MULTI_STATEMENTS=       (1 << 16),
228
 
  DRIZZLE_CAPABILITIES_MULTI_RESULTS=          (1 << 17),
229
 
  DRIZZLE_CAPABILITIES_ADMIN=                  (1 << 25),
230
 
  DRIZZLE_CAPABILITIES_CLIENT= (DRIZZLE_CAPABILITIES_LONG_PASSWORD |
231
 
                                DRIZZLE_CAPABILITIES_FOUND_ROWS |
232
 
                                DRIZZLE_CAPABILITIES_LONG_FLAG |
233
 
                                DRIZZLE_CAPABILITIES_CONNECT_WITH_DB |
234
 
                                DRIZZLE_CAPABILITIES_TRANSACTIONS |
235
 
                                DRIZZLE_CAPABILITIES_PROTOCOL_41 |
236
 
                                DRIZZLE_CAPABILITIES_SECURE_CONNECTION |
237
 
                                DRIZZLE_CAPABILITIES_ADMIN)
238
 
} drizzle_capabilities_t;
239
 
 
240
 
/**
241
 
 * @ingroup drizzle_command 
242
 
 * Commands for drizzle_command functions.
243
 
 */
244
 
typedef enum
245
 
{
246
 
  DRIZZLE_COMMAND_SLEEP,               /* Not used currently. */
247
 
  DRIZZLE_COMMAND_QUIT,
248
 
  DRIZZLE_COMMAND_INIT_DB,
249
 
  DRIZZLE_COMMAND_QUERY,
250
 
  DRIZZLE_COMMAND_FIELD_LIST,          /* Deprecated. */
251
 
  DRIZZLE_COMMAND_CREATE_DB,           /* Deprecated. */
252
 
  DRIZZLE_COMMAND_DROP_DB,             /* Deprecated. */
253
 
  DRIZZLE_COMMAND_REFRESH,
254
 
  DRIZZLE_COMMAND_SHUTDOWN,
255
 
  DRIZZLE_COMMAND_STATISTICS,
256
 
  DRIZZLE_COMMAND_PROCESS_INFO,        /* Deprecated. */
257
 
  DRIZZLE_COMMAND_CONNECT,             /* Not used currently. */
258
 
  DRIZZLE_COMMAND_PROCESS_KILL,        /* Deprecated. */
259
 
  DRIZZLE_COMMAND_DEBUG,
260
 
  DRIZZLE_COMMAND_PING,
261
 
  DRIZZLE_COMMAND_TIME,                /* Not used currently. */
262
 
  DRIZZLE_COMMAND_DELAYED_INSERT,      /* Not used currently. */
263
 
  DRIZZLE_COMMAND_CHANGE_USER,
264
 
  DRIZZLE_COMMAND_BINLOG_DUMP,         /* Not used currently. */
265
 
  DRIZZLE_COMMAND_TABLE_DUMP,          /* Not used currently. */
266
 
  DRIZZLE_COMMAND_CONNECT_OUT,         /* Not used currently. */
267
 
  DRIZZLE_COMMAND_REGISTER_SLAVE,      /* Not used currently. */
268
 
  DRIZZLE_COMMAND_STMT_PREPARE,        /* Not used currently. */
269
 
  DRIZZLE_COMMAND_STMT_EXECUTE,        /* Not used currently. */
270
 
  DRIZZLE_COMMAND_STMT_SEND_LONG_DATA, /* Not used currently. */
271
 
  DRIZZLE_COMMAND_STMT_CLOSE,          /* Not used currently. */
272
 
  DRIZZLE_COMMAND_STMT_RESET,          /* Not used currently. */
273
 
  DRIZZLE_COMMAND_SET_OPTION,          /* Not used currently. */
274
 
  DRIZZLE_COMMAND_STMT_FETCH,          /* Not used currently. */
275
 
  DRIZZLE_COMMAND_DAEMON,              /* Not used currently. */
276
 
  DRIZZLE_COMMAND_END                  /* Not used currently. */
277
 
} drizzle_command_t;
278
 
 
279
 
/**
280
 
 * @ingroup drizzle_command 
281
 
 * Commands for the Drizzle protocol functions.
282
 
 */
283
 
typedef enum
284
 
{
285
 
  DRIZZLE_COMMAND_DRIZZLE_SLEEP,
286
 
  DRIZZLE_COMMAND_DRIZZLE_QUIT,
287
 
  DRIZZLE_COMMAND_DRIZZLE_INIT_DB,
288
 
  DRIZZLE_COMMAND_DRIZZLE_QUERY,
289
 
  DRIZZLE_COMMAND_DRIZZLE_SHUTDOWN,
290
 
  DRIZZLE_COMMAND_DRIZZLE_CONNECT,
291
 
  DRIZZLE_COMMAND_DRIZZLE_PING,
292
 
  DRIZZLE_COMMAND_DRIZZLE_END
293
 
} drizzle_command_drizzle_t;
294
 
 
295
 
/**
296
 
 * @ingroup drizzle_query
297
 
 * Options for drizzle_query_st.
298
 
 */
299
 
typedef enum
300
 
{
301
 
  DRIZZLE_QUERY_ALLOCATED= (1 << 0)
302
 
} drizzle_query_options_t;
303
 
 
304
 
/**
305
 
 * @ingroup drizzle_query
306
 
 * States for drizle_query_st.
307
 
 */
308
 
typedef enum
309
 
{
310
 
  DRIZZLE_QUERY_STATE_INIT,
311
 
  DRIZZLE_QUERY_STATE_QUERY,
312
 
  DRIZZLE_QUERY_STATE_RESULT,
313
 
  DRIZZLE_QUERY_STATE_DONE
314
 
} drizzle_query_state_t;
315
 
 
316
 
/**
317
 
 * @ingroup drizzle_result
318
 
 * Options for drizzle_result_st.
319
 
 */
320
 
typedef enum
321
 
{
322
 
  DRIZZLE_RESULT_NONE=          0,
323
 
  DRIZZLE_RESULT_ALLOCATED=     (1 << 0),
324
 
  DRIZZLE_RESULT_SKIP_COLUMN=   (1 << 1),
325
 
  DRIZZLE_RESULT_BUFFER_COLUMN= (1 << 2),
326
 
  DRIZZLE_RESULT_BUFFER_ROW=    (1 << 3),
327
 
  DRIZZLE_RESULT_EOF_PACKET=    (1 << 4),
328
 
  DRIZZLE_RESULT_ROW_BREAK=     (1 << 5)
329
 
} drizzle_result_options_t;
330
 
 
331
 
/**
332
 
 * @ingroup drizzle_column
333
 
 * Options for drizzle_column_st.
334
 
 */
335
 
typedef enum
336
 
{
337
 
  DRIZZLE_COLUMN_ALLOCATED= (1 << 0)
338
 
} drizzle_column_options_t;
339
 
 
340
 
/**
341
 
 * @ingroup drizzle_column
342
 
 * Types for drizzle_column_st.
343
 
 */
344
 
typedef enum
345
 
{
346
 
  DRIZZLE_COLUMN_TYPE_DECIMAL,
347
 
  DRIZZLE_COLUMN_TYPE_TINY,
348
 
  DRIZZLE_COLUMN_TYPE_SHORT,
349
 
  DRIZZLE_COLUMN_TYPE_LONG,
350
 
  DRIZZLE_COLUMN_TYPE_FLOAT,
351
 
  DRIZZLE_COLUMN_TYPE_DOUBLE,
352
 
  DRIZZLE_COLUMN_TYPE_NULL,
353
 
  DRIZZLE_COLUMN_TYPE_TIMESTAMP,
354
 
  DRIZZLE_COLUMN_TYPE_LONGLONG,
355
 
  DRIZZLE_COLUMN_TYPE_INT24,
356
 
  DRIZZLE_COLUMN_TYPE_DATE,
357
 
  DRIZZLE_COLUMN_TYPE_TIME,
358
 
  DRIZZLE_COLUMN_TYPE_DATETIME,
359
 
  DRIZZLE_COLUMN_TYPE_YEAR,
360
 
  DRIZZLE_COLUMN_TYPE_NEWDATE,
361
 
  DRIZZLE_COLUMN_TYPE_VARCHAR,
362
 
  DRIZZLE_COLUMN_TYPE_BIT,
363
 
  DRIZZLE_COLUMN_TYPE_NEWDECIMAL=  246,
364
 
  DRIZZLE_COLUMN_TYPE_ENUM=        247,
365
 
  DRIZZLE_COLUMN_TYPE_SET=         248,
366
 
  DRIZZLE_COLUMN_TYPE_TINY_BLOB=   249,
367
 
  DRIZZLE_COLUMN_TYPE_MEDIUM_BLOB= 250,
368
 
  DRIZZLE_COLUMN_TYPE_LONG_BLOB=   251,
369
 
  DRIZZLE_COLUMN_TYPE_BLOB=        252,
370
 
  DRIZZLE_COLUMN_TYPE_VAR_STRING=  253,
371
 
  DRIZZLE_COLUMN_TYPE_STRING=      254,
372
 
  DRIZZLE_COLUMN_TYPE_GEOMETRY=    255
373
 
} drizzle_column_type_t;
374
 
 
375
 
/**
376
 
 * @ingroup drizzle_column
377
 
 * Types for drizzle_column_st for Drizzle.
378
 
 */
379
 
typedef enum
380
 
{
381
 
  DRIZZLE_COLUMN_TYPE_DRIZZLE_TINY,
382
 
  DRIZZLE_COLUMN_TYPE_DRIZZLE_LONG,
383
 
  DRIZZLE_COLUMN_TYPE_DRIZZLE_DOUBLE,
384
 
  DRIZZLE_COLUMN_TYPE_DRIZZLE_NULL,
385
 
  DRIZZLE_COLUMN_TYPE_DRIZZLE_TIMESTAMP,
386
 
  DRIZZLE_COLUMN_TYPE_DRIZZLE_LONGLONG,
387
 
  DRIZZLE_COLUMN_TYPE_DRIZZLE_DATETIME,
388
 
  DRIZZLE_COLUMN_TYPE_DRIZZLE_DATE,
389
 
  DRIZZLE_COLUMN_TYPE_DRIZZLE_VARCHAR,
390
 
  DRIZZLE_COLUMN_TYPE_DRIZZLE_NEWDECIMAL,
391
 
  DRIZZLE_COLUMN_TYPE_DRIZZLE_ENUM,
392
 
  DRIZZLE_COLUMN_TYPE_DRIZZLE_BLOB,
393
 
  DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX=DRIZZLE_COLUMN_TYPE_DRIZZLE_BLOB
394
 
} drizzle_column_type_drizzle_t;
395
 
 
396
 
/**
397
 
 * @ingroup drizzle_column
398
 
 * Flags for drizzle_column_st.
399
 
 */
400
 
typedef enum
401
 
{
402
 
  DRIZZLE_COLUMN_FLAGS_NONE=             0,
403
 
  DRIZZLE_COLUMN_FLAGS_NOT_NULL=         (1 << 0),
404
 
  DRIZZLE_COLUMN_FLAGS_PRI_KEY=          (1 << 1),
405
 
  DRIZZLE_COLUMN_FLAGS_UNIQUE_KEY=       (1 << 2),
406
 
  DRIZZLE_COLUMN_FLAGS_MULTIPLE_KEY=     (1 << 3),
407
 
  DRIZZLE_COLUMN_FLAGS_BLOB=             (1 << 4),
408
 
  DRIZZLE_COLUMN_FLAGS_UNSIGNED=         (1 << 5),
409
 
  DRIZZLE_COLUMN_FLAGS_ZEROFILL=         (1 << 6),
410
 
  DRIZZLE_COLUMN_FLAGS_BINARY=           (1 << 7),
411
 
  DRIZZLE_COLUMN_FLAGS_ENUM=             (1 << 8),
412
 
  DRIZZLE_COLUMN_FLAGS_AUTO_INCREMENT=   (1 << 9),
413
 
  DRIZZLE_COLUMN_FLAGS_TIMESTAMP=        (1 << 10),
414
 
  DRIZZLE_COLUMN_FLAGS_SET=              (1 << 11),
415
 
  DRIZZLE_COLUMN_FLAGS_NO_DEFAULT_VALUE= (1 << 12),
416
 
  DRIZZLE_COLUMN_FLAGS_ON_UPDATE_NOW=    (1 << 13),
417
 
  DRIZZLE_COLUMN_FLAGS_PART_KEY=         (1 << 14),
418
 
  DRIZZLE_COLUMN_FLAGS_NUM=              (1 << 15),
419
 
  DRIZZLE_COLUMN_FLAGS_GROUP=            (1 << 15), /* NUM & GROUP the same. */
420
 
  DRIZZLE_COLUMN_FLAGS_UNIQUE=           (1 << 16),
421
 
  DRIZZLE_COLUMN_FLAGS_BINCMP=           (1 << 17),
422
 
  DRIZZLE_COLUMN_FLAGS_GET_FIXED_FIELDS= (1 << 18),
423
 
  DRIZZLE_COLUMN_FLAGS_IN_PART_FUNC=     (1 << 19),
424
 
  DRIZZLE_COLUMN_FLAGS_IN_ADD_INDEX=     (1 << 20),
425
 
  DRIZZLE_COLUMN_FLAGS_RENAMED=          (1 << 21)
426
 
} drizzle_column_flags_t;
427
 
 
428
 
/**
429
 
 * @addtogroup drizzle_types Types
430
 
 * @ingroup drizzle_client_interface
431
 
 * @ingroup drizzle_server_interface
432
 
 * @{
433
 
 */
434
 
 
435
 
/* Types. */
436
 
typedef struct drizzle_st drizzle_st;
437
 
typedef struct drizzle_con_tcp_st drizzle_con_tcp_st;
438
 
typedef struct drizzle_con_uds_st drizzle_con_uds_st;
439
 
typedef struct drizzle_con_st drizzle_con_st;
440
 
typedef struct drizzle_query_st drizzle_query_st;
441
 
typedef struct drizzle_result_st drizzle_result_st;
442
 
typedef struct drizzle_column_st drizzle_column_st;
443
 
typedef char *drizzle_field_t;
444
 
typedef drizzle_field_t *drizzle_row_t;
445
 
typedef uint8_t drizzle_charset_t;
446
 
 
447
 
/* Function types. */
448
 
typedef void (drizzle_context_free_fn)(drizzle_st *drizzle,
449
 
                                       void *context);
450
 
typedef void (drizzle_log_fn)(const char *line, drizzle_verbose_t verbose,
451
 
                              void *context);
452
 
typedef drizzle_return_t (drizzle_state_fn)(drizzle_con_st *con);
453
 
typedef void (drizzle_con_context_free_fn)(drizzle_con_st *con,
454
 
                                           void *context);
455
 
typedef void (drizzle_query_context_free_fn)(drizzle_query_st *query,
456
 
                                             void *context);
457
 
/**
458
 
 * Custom function to register or deregister interest in file descriptor
459
 
 * events. See drizzle_set_event_watch_fn().
460
 
 *
461
 
 * @param[in] con Connection that has changed the events it is interested in.
462
 
 *  Use drizzle_con_fd() to get the file descriptor.
463
 
 * @param[in] events A bit mask of POLLIN | POLLOUT, specifying if the
464
 
 *  connection is waiting for read or write events.
465
 
 * @param[in] context Application context pointer registered with
466
 
 *  drizzle_set_event_watch_fn().
467
 
 * @return DRIZZLE_RETURN_OK if successful.
468
 
 */
469
 
typedef drizzle_return_t (drizzle_event_watch_fn)(drizzle_con_st *con,
470
 
                                                  short events,
471
 
                                                  void *context);
472
 
 
473
 
/** @} */
474
 
 
475
 
/**
476
 
 * @addtogroup drizzle_macros Macros
477
 
 * @ingroup drizzle_client_interface
478
 
 * @ingroup drizzle_server_interface
479
 
 * @{
480
 
 */
481
 
 
482
 
/* Protocol unpacking macros. */
483
 
#define drizzle_get_byte2(__buffer) \
484
 
  (uint16_t)((__buffer)[0] | \
485
 
            ((__buffer)[1] << 8))
486
 
#define drizzle_get_byte3(__buffer) \
487
 
  (uint32_t)((__buffer)[0] | \
488
 
            ((__buffer)[1] << 8) | \
489
 
            ((__buffer)[2] << 16))
490
 
#define drizzle_get_byte4(__buffer) \
491
 
  (uint32_t)((__buffer)[0] | \
492
 
            ((__buffer)[1] << 8) | \
493
 
            ((__buffer)[2] << 16) | \
494
 
            ((__buffer)[3] << 24))
495
 
#define drizzle_get_byte8(__buffer) \
496
 
  ((uint64_t)(__buffer)[0] | \
497
 
  ((uint64_t)(__buffer)[1] << 8) | \
498
 
  ((uint64_t)(__buffer)[2] << 16) | \
499
 
  ((uint64_t)(__buffer)[3] << 24) | \
500
 
  ((uint64_t)(__buffer)[4] << 32) | \
501
 
  ((uint64_t)(__buffer)[5] << 40) | \
502
 
  ((uint64_t)(__buffer)[6] << 48) | \
503
 
  ((uint64_t)(__buffer)[7] << 56))
504
 
 
505
 
/* Protocol packing macros. */
506
 
#define drizzle_set_byte2(__buffer, __int) do { \
507
 
  (__buffer)[0]= (uint8_t)((__int) & 0xFF); \
508
 
  (__buffer)[1]= (uint8_t)(((__int) >> 8) & 0xFF); } while (0)
509
 
#define drizzle_set_byte3(__buffer, __int) do { \
510
 
  (__buffer)[0]= (uint8_t)((__int) & 0xFF); \
511
 
  (__buffer)[1]= (uint8_t)(((__int) >> 8) & 0xFF); \
512
 
  (__buffer)[2]= (uint8_t)(((__int) >> 16) & 0xFF); } while (0)
513
 
#define drizzle_set_byte4(__buffer, __int) do { \
514
 
  (__buffer)[0]= (uint8_t)((__int) & 0xFF); \
515
 
  (__buffer)[1]= (uint8_t)(((__int) >> 8) & 0xFF); \
516
 
  (__buffer)[2]= (uint8_t)(((__int) >> 16) & 0xFF); \
517
 
  (__buffer)[3]= (uint8_t)(((__int) >> 24) & 0xFF); } while (0)
518
 
#define drizzle_set_byte8(__buffer, __int) do { \
519
 
  (__buffer)[0]= (uint8_t)((__int) & 0xFF); \
520
 
  (__buffer)[1]= (uint8_t)(((__int) >> 8) & 0xFF); \
521
 
  (__buffer)[2]= (uint8_t)(((__int) >> 16) & 0xFF); \
522
 
  (__buffer)[3]= (uint8_t)(((__int) >> 24) & 0xFF); \
523
 
  (__buffer)[4]= (uint8_t)(((__int) >> 32) & 0xFF); \
524
 
  (__buffer)[5]= (uint8_t)(((__int) >> 40) & 0xFF); \
525
 
  (__buffer)[6]= (uint8_t)(((__int) >> 48) & 0xFF); \
526
 
  (__buffer)[7]= (uint8_t)(((__int) >> 56) & 0xFF); } while (0)
527
 
 
528
 
/* Multi-byte character macros. */
529
 
#define drizzle_mb_char(__c) (((__c) & 0x80) != 0)
530
 
#define drizzle_mb_length(__c) \
531
 
  ((uint32_t)(__c) <= 0x7f ? 1 : \
532
 
  ((uint32_t)(__c) <= 0x7ff ? 2 : \
533
 
  ((uint32_t)(__c) <= 0xd7ff ? 3 : \
534
 
  ((uint32_t)(__c) <= 0xdfff || (uint32_t)(__c) > 0x10ffff ? 0 : \
535
 
  ((uint32_t)(__c) <= 0xffff ? 3 : 4)))))
536
 
 
537
 
/** @} */
538
 
 
539
 
#ifdef __cplusplus
540
 
}
541
 
#endif
542
 
 
543
 
#endif /* __DRIZZLE_CONSTANTS_H */