~jan-kneschke/mysql-proxy/packet-tracking-assertions

« back to all changes in this revision

Viewing changes to tags/mysql-proxy-0.6.0/src/sql-tokenizer.h

  • Committer: Kay Roepke
  • Author(s): Jan Kneschke
  • Date: 2008-01-23 22:00:28 UTC
  • Revision ID: kay@mysql.com-20080123220028-hq2xqb69apa75fnx
first round on mysql-shell based on the proxy code

this is mostly a verification if the proxy-code is flexible enough to handle 
all three scenarios of: client, server and forwarding (proxy)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef _SQL_TOKENIZER_H_
 
2
#define _SQL_TOKENIZER_H_
 
3
 
 
4
#include <glib.h>
 
5
 
 
6
typedef enum {
 
7
        TK_UNKNOWN,
 
8
 
 
9
        TK_LE,
 
10
        TK_GE,
 
11
        TK_LT,
 
12
        TK_GT,
 
13
        TK_EQ,
 
14
        TK_NE,
 
15
 
 
16
        TK_STRING,
 
17
        TK_COMMENT,
 
18
        TK_LITERAL,
 
19
        TK_FUNCTION,
 
20
 
 
21
        TK_INTEGER,
 
22
        TK_FLOAT,
 
23
        TK_DOT,
 
24
        TK_COMMA,
 
25
 
 
26
        TK_ASSIGN,
 
27
        TK_OBRACE,
 
28
        TK_CBRACE,
 
29
        TK_SEMICOLON,
 
30
 
 
31
        TK_STAR,
 
32
        TK_PLUS,
 
33
        TK_MINUS,
 
34
        TK_DIV,
 
35
 
 
36
        TK_BITWISE_AND,
 
37
        TK_BITWISE_OR,
 
38
        TK_BITWISE_XOR,
 
39
 
 
40
        TK_LOGICAL_AND,
 
41
        TK_LOGICAL_OR,
 
42
 
 
43
        /** a generated list of tokens */
 
44
        TK_SQL_ACCESSIBLE,
 
45
        TK_SQL_ACTION,
 
46
        TK_SQL_ADD,
 
47
        TK_SQL_ALL,
 
48
        TK_SQL_ALTER,
 
49
        TK_SQL_ANALYZE,
 
50
        TK_SQL_AND,
 
51
        TK_SQL_AS,
 
52
        TK_SQL_ASC,
 
53
        TK_SQL_ASENSITIVE,
 
54
        TK_SQL_BEFORE,
 
55
        TK_SQL_BETWEEN,
 
56
        TK_SQL_BIGINT,
 
57
        TK_SQL_BINARY,
 
58
        TK_SQL_BIT,
 
59
        TK_SQL_BLOB,
 
60
        TK_SQL_BOTH,
 
61
        TK_SQL_BY,
 
62
        TK_SQL_CALL,
 
63
        TK_SQL_CASCADE,
 
64
        TK_SQL_CASE,
 
65
        TK_SQL_CHANGE,
 
66
        TK_SQL_CHAR,
 
67
        TK_SQL_CHARACTER,
 
68
        TK_SQL_CHECK,
 
69
        TK_SQL_COLLATE,
 
70
        TK_SQL_COLUMN,
 
71
        TK_SQL_CONDITION,
 
72
        TK_SQL_CONSTRAINT,
 
73
        TK_SQL_CONTINUE,
 
74
        TK_SQL_CONVERT,
 
75
        TK_SQL_CREATE,
 
76
        TK_SQL_CROSS,
 
77
        TK_SQL_CURRENT_DATE,
 
78
        TK_SQL_CURRENT_TIME,
 
79
        TK_SQL_CURRENT_TIMESTAMP,
 
80
        TK_SQL_CURRENT_USER,
 
81
        TK_SQL_CURSOR,
 
82
        TK_SQL_DATABASE,
 
83
        TK_SQL_DATABASES,
 
84
        TK_SQL_DATE,
 
85
        TK_SQL_DAY_HOUR,
 
86
        TK_SQL_DAY_MICROSECOND,
 
87
        TK_SQL_DAY_MINUTE,
 
88
        TK_SQL_DAY_SECOND,
 
89
        TK_SQL_DEC,
 
90
        TK_SQL_DECIMAL,
 
91
        TK_SQL_DECLARE,
 
92
        TK_SQL_DEFAULT,
 
93
        TK_SQL_DELAYED,
 
94
        TK_SQL_DELETE,
 
95
        TK_SQL_DESC,
 
96
        TK_SQL_DESCRIBE,
 
97
        TK_SQL_DETERMINISTIC,
 
98
        TK_SQL_DISTINCT,
 
99
        TK_SQL_DISTINCTROW,
 
100
        TK_SQL_DIV,
 
101
        TK_SQL_DOUBLE,
 
102
        TK_SQL_DROP,
 
103
        TK_SQL_DUAL,
 
104
        TK_SQL_EACH,
 
105
        TK_SQL_ELSE,
 
106
        TK_SQL_ELSEIF,
 
107
        TK_SQL_ENCLOSED,
 
108
        TK_SQL_ENUM,
 
109
        TK_SQL_ESCAPED,
 
110
        TK_SQL_EXISTS,
 
111
        TK_SQL_EXIT,
 
112
        TK_SQL_EXPLAIN,
 
113
        TK_SQL_FALSE,
 
114
        TK_SQL_FETCH,
 
115
        TK_SQL_FLOAT,
 
116
        TK_SQL_FLOAT4,
 
117
        TK_SQL_FLOAT8,
 
118
        TK_SQL_FOR,
 
119
        TK_SQL_FORCE,
 
120
        TK_SQL_FOREIGN,
 
121
        TK_SQL_FROM,
 
122
        TK_SQL_FULLTEXT,
 
123
        TK_SQL_GRANT,
 
124
        TK_SQL_GROUP,
 
125
        TK_SQL_HAVING,
 
126
        TK_SQL_HIGH_PRIORITY,
 
127
        TK_SQL_HOUR_MICROSECOND,
 
128
        TK_SQL_HOUR_MINUTE,
 
129
        TK_SQL_HOUR_SECOND,
 
130
        TK_SQL_IF,
 
131
        TK_SQL_IGNORE,
 
132
        TK_SQL_IN,
 
133
        TK_SQL_INDEX,
 
134
        TK_SQL_INFILE,
 
135
        TK_SQL_INNER,
 
136
        TK_SQL_INOUT,
 
137
        TK_SQL_INSENSITIVE,
 
138
        TK_SQL_INSERT,
 
139
        TK_SQL_INT,
 
140
        TK_SQL_INT1,
 
141
        TK_SQL_INT2,
 
142
        TK_SQL_INT3,
 
143
        TK_SQL_INT4,
 
144
        TK_SQL_INT8,
 
145
        TK_SQL_INTEGER,
 
146
        TK_SQL_INTERVAL,
 
147
        TK_SQL_INTO,
 
148
        TK_SQL_IS,
 
149
        TK_SQL_ITERATE,
 
150
        TK_SQL_JOIN,
 
151
        TK_SQL_KEY,
 
152
        TK_SQL_KEYS,
 
153
        TK_SQL_KILL,
 
154
        TK_SQL_LEADING,
 
155
        TK_SQL_LEAVE,
 
156
        TK_SQL_LEFT,
 
157
        TK_SQL_LIKE,
 
158
        TK_SQL_LIMIT,
 
159
        TK_SQL_LINEAR,
 
160
        TK_SQL_LINES,
 
161
        TK_SQL_LOAD,
 
162
        TK_SQL_LOCALTIME,
 
163
        TK_SQL_LOCALTIMESTAMP,
 
164
        TK_SQL_LOCK,
 
165
        TK_SQL_LONG,
 
166
        TK_SQL_LONGBLOB,
 
167
        TK_SQL_LONGTEXT,
 
168
        TK_SQL_LOOP,
 
169
        TK_SQL_LOW_PRIORITY,
 
170
        TK_SQL_MASTER_SSL_VERIFY_SERVER_CERT,
 
171
        TK_SQL_MATCH,
 
172
        TK_SQL_MEDIUMBLOB,
 
173
        TK_SQL_MEDIUMINT,
 
174
        TK_SQL_MEDIUMTEXT,
 
175
        TK_SQL_MIDDLEINT,
 
176
        TK_SQL_MINUTE_MICROSECOND,
 
177
        TK_SQL_MINUTE_SECOND,
 
178
        TK_SQL_MOD,
 
179
        TK_SQL_MODIFIES,
 
180
        TK_SQL_NATURAL,
 
181
        TK_SQL_NO,
 
182
        TK_SQL_NOT,
 
183
        TK_SQL_NO_WRITE_TO_BINLOG,
 
184
        TK_SQL_NULL,
 
185
        TK_SQL_NUMERIC,
 
186
        TK_SQL_ON,
 
187
        TK_SQL_OPTIMIZE,
 
188
        TK_SQL_OPTION,
 
189
        TK_SQL_OPTIONALLY,
 
190
        TK_SQL_OR,
 
191
        TK_SQL_ORDER,
 
192
        TK_SQL_OUT,
 
193
        TK_SQL_OUTER,
 
194
        TK_SQL_OUTFILE,
 
195
        TK_SQL_PRECISION,
 
196
        TK_SQL_PRIMARY,
 
197
        TK_SQL_PROCEDURE,
 
198
        TK_SQL_PURGE,
 
199
        TK_SQL_RANGE,
 
200
        TK_SQL_READ,
 
201
        TK_SQL_READ_ONLY,
 
202
        TK_SQL_READS,
 
203
        TK_SQL_READ_WRITE,
 
204
        TK_SQL_REAL,
 
205
        TK_SQL_REFERENCES,
 
206
        TK_SQL_REGEXP,
 
207
        TK_SQL_RELEASE,
 
208
        TK_SQL_RENAME,
 
209
        TK_SQL_REPEAT,
 
210
        TK_SQL_REPLACE,
 
211
        TK_SQL_REQUIRE,
 
212
        TK_SQL_RESTRICT,
 
213
        TK_SQL_RETURN,
 
214
        TK_SQL_REVOKE,
 
215
        TK_SQL_RIGHT,
 
216
        TK_SQL_RLIKE,
 
217
        TK_SQL_SCHEMA,
 
218
        TK_SQL_SCHEMAS,
 
219
        TK_SQL_SECOND_MICROSECOND,
 
220
        TK_SQL_SELECT,
 
221
        TK_SQL_SENSITIVE,
 
222
        TK_SQL_SEPARATOR,
 
223
        TK_SQL_SET,
 
224
        TK_SQL_SHOW,
 
225
        TK_SQL_SMALLINT,
 
226
        TK_SQL_SPATIAL,
 
227
        TK_SQL_SPECIFIC,
 
228
        TK_SQL_SQL,
 
229
        TK_SQL_SQL_BIG_RESULT,
 
230
        TK_SQL_SQL_CALC_FOUND_ROWS,
 
231
        TK_SQL_SQLEXCEPTION,
 
232
        TK_SQL_SQL_SMALL_RESULT,
 
233
        TK_SQL_SQLSTATE,
 
234
        TK_SQL_SQLWARNING,
 
235
        TK_SQL_SSL,
 
236
        TK_SQL_STARTING,
 
237
        TK_SQL_STRAIGHT_JOIN,
 
238
        TK_SQL_TABLE,
 
239
        TK_SQL_TERMINATED,
 
240
        TK_SQL_TEXT,
 
241
        TK_SQL_THEN,
 
242
        TK_SQL_TIME,
 
243
        TK_SQL_TIMESTAMP,
 
244
        TK_SQL_TINYBLOB,
 
245
        TK_SQL_TINYINT,
 
246
        TK_SQL_TINYTEXT,
 
247
        TK_SQL_TO,
 
248
        TK_SQL_TRAILING,
 
249
        TK_SQL_TRIGGER,
 
250
        TK_SQL_TRUE,
 
251
        TK_SQL_UNDO,
 
252
        TK_SQL_UNION,
 
253
        TK_SQL_UNIQUE,
 
254
        TK_SQL_UNLOCK,
 
255
        TK_SQL_UNSIGNED,
 
256
        TK_SQL_UPDATE,
 
257
        TK_SQL_USAGE,
 
258
        TK_SQL_USE,
 
259
        TK_SQL_USING,
 
260
        TK_SQL_UTC_DATE,
 
261
        TK_SQL_UTC_TIME,
 
262
        TK_SQL_UTC_TIMESTAMP,
 
263
        TK_SQL_VALUES,
 
264
        TK_SQL_VARBINARY,
 
265
        TK_SQL_VARCHAR,
 
266
        TK_SQL_VARCHARACTER,
 
267
        TK_SQL_VARYING,
 
268
        TK_SQL_WHEN,
 
269
        TK_SQL_WHERE,
 
270
        TK_SQL_WHILE,
 
271
        TK_SQL_WITH,
 
272
        TK_SQL_WRITE,
 
273
        TK_SQL_X509,
 
274
        TK_SQL_XOR,
 
275
        TK_SQL_YEAR_MONTH,
 
276
        TK_SQL_ZEROFILL,
 
277
        
 
278
        TK_COMMENT_MYSQL,
 
279
 
 
280
        TK_LAST_TOKEN
 
281
} sql_token_id;
 
282
 
 
283
typedef struct {
 
284
        sql_token_id token_id;
 
285
        GString *text;
 
286
} sql_token;
 
287
 
 
288
sql_token *sql_token_new(void);
 
289
void sql_token_free(sql_token *token);
 
290
const gchar *sql_token_get_name(sql_token_id token_id);
 
291
 
 
292
int sql_tokenizer(GPtrArray *tokens, const gchar *str, gsize len);
 
293
 
 
294
#endif