Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
e3d753ab
Commit
e3d753ab
authored
Feb 16, 2006
by
osku
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add support for BINARY(n) and BLOB types in the InnoDB SQL parser.
parent
87839def
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
3725 additions
and
2765 deletions
+3725
-2765
include/pars0grm.h
include/pars0grm.h
+216
-86
include/pars0pars.h
include/pars0pars.h
+9
-4
pars/lexyy.c
pars/lexyy.c
+1094
-1052
pars/pars0grm.c
pars/pars0grm.c
+2126
-1524
pars/pars0grm.h
pars/pars0grm.h
+216
-86
pars/pars0grm.y
pars/pars0grm.y
+11
-1
pars/pars0lex.l
pars/pars0lex.l
+11
-4
pars/pars0pars.c
pars/pars0pars.c
+42
-8
No files found.
include/pars0grm.h
View file @
e3d753ab
#ifndef YYSTYPE
/* A Bison parser, made by GNU Bison 1.875d. */
#define YYSTYPE int
/* Skeleton parser for Yacc-like parsing with Bison,
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* As a special exception, when this file is copied by Bison into a
Bison output file, you may use that output file without restriction.
This special exception was added by the Free Software Foundation
in version 1.24 of Bison. */
/* Tokens. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
/* Put the tokens into the symbol table, so that GDB and other debuggers
know about them. */
enum
yytokentype
{
PARS_INT_LIT
=
258
,
PARS_FLOAT_LIT
=
259
,
PARS_STR_LIT
=
260
,
PARS_NULL_LIT
=
261
,
PARS_ID_TOKEN
=
262
,
PARS_AND_TOKEN
=
263
,
PARS_OR_TOKEN
=
264
,
PARS_NOT_TOKEN
=
265
,
PARS_GE_TOKEN
=
266
,
PARS_LE_TOKEN
=
267
,
PARS_NE_TOKEN
=
268
,
PARS_PROCEDURE_TOKEN
=
269
,
PARS_IN_TOKEN
=
270
,
PARS_OUT_TOKEN
=
271
,
PARS_BINARY_TOKEN
=
272
,
PARS_BLOB_TOKEN
=
273
,
PARS_INT_TOKEN
=
274
,
PARS_INTEGER_TOKEN
=
275
,
PARS_FLOAT_TOKEN
=
276
,
PARS_CHAR_TOKEN
=
277
,
PARS_IS_TOKEN
=
278
,
PARS_BEGIN_TOKEN
=
279
,
PARS_END_TOKEN
=
280
,
PARS_IF_TOKEN
=
281
,
PARS_THEN_TOKEN
=
282
,
PARS_ELSE_TOKEN
=
283
,
PARS_ELSIF_TOKEN
=
284
,
PARS_LOOP_TOKEN
=
285
,
PARS_WHILE_TOKEN
=
286
,
PARS_RETURN_TOKEN
=
287
,
PARS_SELECT_TOKEN
=
288
,
PARS_SUM_TOKEN
=
289
,
PARS_COUNT_TOKEN
=
290
,
PARS_DISTINCT_TOKEN
=
291
,
PARS_FROM_TOKEN
=
292
,
PARS_WHERE_TOKEN
=
293
,
PARS_FOR_TOKEN
=
294
,
PARS_DDOT_TOKEN
=
295
,
PARS_CONSISTENT_TOKEN
=
296
,
PARS_READ_TOKEN
=
297
,
PARS_ORDER_TOKEN
=
298
,
PARS_BY_TOKEN
=
299
,
PARS_ASC_TOKEN
=
300
,
PARS_DESC_TOKEN
=
301
,
PARS_INSERT_TOKEN
=
302
,
PARS_INTO_TOKEN
=
303
,
PARS_VALUES_TOKEN
=
304
,
PARS_UPDATE_TOKEN
=
305
,
PARS_SET_TOKEN
=
306
,
PARS_DELETE_TOKEN
=
307
,
PARS_CURRENT_TOKEN
=
308
,
PARS_OF_TOKEN
=
309
,
PARS_CREATE_TOKEN
=
310
,
PARS_TABLE_TOKEN
=
311
,
PARS_INDEX_TOKEN
=
312
,
PARS_UNIQUE_TOKEN
=
313
,
PARS_CLUSTERED_TOKEN
=
314
,
PARS_DOES_NOT_FIT_IN_MEM_TOKEN
=
315
,
PARS_ON_TOKEN
=
316
,
PARS_ASSIGN_TOKEN
=
317
,
PARS_DECLARE_TOKEN
=
318
,
PARS_CURSOR_TOKEN
=
319
,
PARS_SQL_TOKEN
=
320
,
PARS_OPEN_TOKEN
=
321
,
PARS_FETCH_TOKEN
=
322
,
PARS_CLOSE_TOKEN
=
323
,
PARS_NOTFOUND_TOKEN
=
324
,
PARS_TO_CHAR_TOKEN
=
325
,
PARS_TO_NUMBER_TOKEN
=
326
,
PARS_TO_BINARY_TOKEN
=
327
,
PARS_BINARY_TO_NUMBER_TOKEN
=
328
,
PARS_SUBSTR_TOKEN
=
329
,
PARS_REPLSTR_TOKEN
=
330
,
PARS_CONCAT_TOKEN
=
331
,
PARS_INSTR_TOKEN
=
332
,
PARS_LENGTH_TOKEN
=
333
,
PARS_SYSDATE_TOKEN
=
334
,
PARS_PRINTF_TOKEN
=
335
,
PARS_ASSERT_TOKEN
=
336
,
PARS_RND_TOKEN
=
337
,
PARS_RND_STR_TOKEN
=
338
,
PARS_ROW_PRINTF_TOKEN
=
339
,
PARS_COMMIT_TOKEN
=
340
,
PARS_ROLLBACK_TOKEN
=
341
,
PARS_WORK_TOKEN
=
342
,
NEG
=
343
};
#endif
#endif
#define PARS_INT_LIT 257
#define PARS_INT_LIT 258
#define PARS_FLOAT_LIT 258
#define PARS_FLOAT_LIT 259
#define PARS_STR_LIT 259
#define PARS_STR_LIT 260
#define PARS_NULL_LIT 260
#define PARS_NULL_LIT 261
#define PARS_ID_TOKEN 261
#define PARS_ID_TOKEN 262
#define PARS_AND_TOKEN 262
#define PARS_AND_TOKEN 263
#define PARS_OR_TOKEN 263
#define PARS_OR_TOKEN 264
#define PARS_NOT_TOKEN 264
#define PARS_NOT_TOKEN 265
#define PARS_GE_TOKEN 265
#define PARS_GE_TOKEN 266
#define PARS_LE_TOKEN 266
#define PARS_LE_TOKEN 267
#define PARS_NE_TOKEN 267
#define PARS_NE_TOKEN 268
#define PARS_PROCEDURE_TOKEN 268
#define PARS_PROCEDURE_TOKEN 269
#define PARS_IN_TOKEN 269
#define PARS_IN_TOKEN 270
#define PARS_OUT_TOKEN 270
#define PARS_OUT_TOKEN 271
#define PARS_INT_TOKEN 271
#define PARS_BINARY_TOKEN 272
#define PARS_INTEGER_TOKEN 272
#define PARS_BLOB_TOKEN 273
#define PARS_FLOAT_TOKEN 273
#define PARS_INT_TOKEN 274
#define PARS_CHAR_TOKEN 274
#define PARS_INTEGER_TOKEN 275
#define PARS_IS_TOKEN 275
#define PARS_FLOAT_TOKEN 276
#define PARS_BEGIN_TOKEN 276
#define PARS_CHAR_TOKEN 277
#define PARS_END_TOKEN 277
#define PARS_IS_TOKEN 278
#define PARS_IF_TOKEN 278
#define PARS_BEGIN_TOKEN 279
#define PARS_THEN_TOKEN 279
#define PARS_END_TOKEN 280
#define PARS_ELSE_TOKEN 280
#define PARS_IF_TOKEN 281
#define PARS_ELSIF_TOKEN 281
#define PARS_THEN_TOKEN 282
#define PARS_LOOP_TOKEN 282
#define PARS_ELSE_TOKEN 283
#define PARS_WHILE_TOKEN 283
#define PARS_ELSIF_TOKEN 284
#define PARS_RETURN_TOKEN 284
#define PARS_LOOP_TOKEN 285
#define PARS_SELECT_TOKEN 285
#define PARS_WHILE_TOKEN 286
#define PARS_SUM_TOKEN 286
#define PARS_RETURN_TOKEN 287
#define PARS_COUNT_TOKEN 287
#define PARS_SELECT_TOKEN 288
#define PARS_DISTINCT_TOKEN 288
#define PARS_SUM_TOKEN 289
#define PARS_FROM_TOKEN 289
#define PARS_COUNT_TOKEN 290
#define PARS_WHERE_TOKEN 290
#define PARS_DISTINCT_TOKEN 291
#define PARS_FOR_TOKEN 291
#define PARS_FROM_TOKEN 292
#define PARS_DDOT_TOKEN 292
#define PARS_WHERE_TOKEN 293
#define PARS_CONSISTENT_TOKEN 293
#define PARS_FOR_TOKEN 294
#define PARS_READ_TOKEN 294
#define PARS_DDOT_TOKEN 295
#define PARS_ORDER_TOKEN 295
#define PARS_CONSISTENT_TOKEN 296
#define PARS_BY_TOKEN 296
#define PARS_READ_TOKEN 297
#define PARS_ASC_TOKEN 297
#define PARS_ORDER_TOKEN 298
#define PARS_DESC_TOKEN 298
#define PARS_BY_TOKEN 299
#define PARS_INSERT_TOKEN 299
#define PARS_ASC_TOKEN 300
#define PARS_INTO_TOKEN 300
#define PARS_DESC_TOKEN 301
#define PARS_VALUES_TOKEN 301
#define PARS_INSERT_TOKEN 302
#define PARS_UPDATE_TOKEN 302
#define PARS_INTO_TOKEN 303
#define PARS_SET_TOKEN 303
#define PARS_VALUES_TOKEN 304
#define PARS_DELETE_TOKEN 304
#define PARS_UPDATE_TOKEN 305
#define PARS_CURRENT_TOKEN 305
#define PARS_SET_TOKEN 306
#define PARS_OF_TOKEN 306
#define PARS_DELETE_TOKEN 307
#define PARS_CREATE_TOKEN 307
#define PARS_CURRENT_TOKEN 308
#define PARS_TABLE_TOKEN 308
#define PARS_OF_TOKEN 309
#define PARS_INDEX_TOKEN 309
#define PARS_CREATE_TOKEN 310
#define PARS_UNIQUE_TOKEN 310
#define PARS_TABLE_TOKEN 311
#define PARS_CLUSTERED_TOKEN 311
#define PARS_INDEX_TOKEN 312
#define PARS_DOES_NOT_FIT_IN_MEM_TOKEN 312
#define PARS_UNIQUE_TOKEN 313
#define PARS_ON_TOKEN 313
#define PARS_CLUSTERED_TOKEN 314
#define PARS_ASSIGN_TOKEN 314
#define PARS_DOES_NOT_FIT_IN_MEM_TOKEN 315
#define PARS_DECLARE_TOKEN 315
#define PARS_ON_TOKEN 316
#define PARS_CURSOR_TOKEN 316
#define PARS_ASSIGN_TOKEN 317
#define PARS_SQL_TOKEN 317
#define PARS_DECLARE_TOKEN 318
#define PARS_OPEN_TOKEN 318
#define PARS_CURSOR_TOKEN 319
#define PARS_FETCH_TOKEN 319
#define PARS_SQL_TOKEN 320
#define PARS_CLOSE_TOKEN 320
#define PARS_OPEN_TOKEN 321
#define PARS_NOTFOUND_TOKEN 321
#define PARS_FETCH_TOKEN 322
#define PARS_TO_CHAR_TOKEN 322
#define PARS_CLOSE_TOKEN 323
#define PARS_TO_NUMBER_TOKEN 323
#define PARS_NOTFOUND_TOKEN 324
#define PARS_TO_BINARY_TOKEN 324
#define PARS_TO_CHAR_TOKEN 325
#define PARS_BINARY_TO_NUMBER_TOKEN 325
#define PARS_TO_NUMBER_TOKEN 326
#define PARS_SUBSTR_TOKEN 326
#define PARS_TO_BINARY_TOKEN 327
#define PARS_REPLSTR_TOKEN 327
#define PARS_BINARY_TO_NUMBER_TOKEN 328
#define PARS_CONCAT_TOKEN 328
#define PARS_SUBSTR_TOKEN 329
#define PARS_INSTR_TOKEN 329
#define PARS_REPLSTR_TOKEN 330
#define PARS_LENGTH_TOKEN 330
#define PARS_CONCAT_TOKEN 331
#define PARS_SYSDATE_TOKEN 331
#define PARS_INSTR_TOKEN 332
#define PARS_PRINTF_TOKEN 332
#define PARS_LENGTH_TOKEN 333
#define PARS_ASSERT_TOKEN 333
#define PARS_SYSDATE_TOKEN 334
#define PARS_RND_TOKEN 334
#define PARS_PRINTF_TOKEN 335
#define PARS_RND_STR_TOKEN 335
#define PARS_ASSERT_TOKEN 336
#define PARS_ROW_PRINTF_TOKEN 336
#define PARS_RND_TOKEN 337
#define PARS_COMMIT_TOKEN 337
#define PARS_RND_STR_TOKEN 338
#define PARS_ROLLBACK_TOKEN 338
#define PARS_ROW_PRINTF_TOKEN 339
#define PARS_WORK_TOKEN 339
#define PARS_COMMIT_TOKEN 340
#define NEG 340
#define PARS_ROLLBACK_TOKEN 341
#define PARS_WORK_TOKEN 342
#define NEG 343
#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
typedef
int
YYSTYPE
;
# define yystype YYSTYPE
/* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1
#endif
extern
YYSTYPE
yylval
;
extern
YYSTYPE
yylval
;
include/pars0pars.h
View file @
e3d753ab
...
@@ -46,6 +46,8 @@ extern pars_res_word_t pars_rnd_str_token;
...
@@ -46,6 +46,8 @@ extern pars_res_word_t pars_rnd_str_token;
extern
pars_res_word_t
pars_count_token
;
extern
pars_res_word_t
pars_count_token
;
extern
pars_res_word_t
pars_sum_token
;
extern
pars_res_word_t
pars_sum_token
;
extern
pars_res_word_t
pars_distinct_token
;
extern
pars_res_word_t
pars_distinct_token
;
extern
pars_res_word_t
pars_binary_token
;
extern
pars_res_word_t
pars_blob_token
;
extern
pars_res_word_t
pars_int_token
;
extern
pars_res_word_t
pars_int_token
;
extern
pars_res_word_t
pars_char_token
;
extern
pars_res_word_t
pars_char_token
;
extern
pars_res_word_t
pars_float_token
;
extern
pars_res_word_t
pars_float_token
;
...
@@ -336,10 +338,13 @@ Parses a column definition at a table creation. */
...
@@ -336,10 +338,13 @@ Parses a column definition at a table creation. */
sym_node_t
*
sym_node_t
*
pars_column_def
(
pars_column_def
(
/*============*/
/*============*/
/* out: column sym table node */
/* out: column sym table
sym_node_t
*
sym_node
,
/* in: column node in the symbol
node */
table */
sym_node_t
*
sym_node
,
/* in: column node in the
pars_res_word_t
*
type
);
/* in: data type */
symbol table */
pars_res_word_t
*
type
,
/* in: data type */
sym_node_t
*
len
);
/* in: length of column, or
NULL */
/*************************************************************************
/*************************************************************************
Parses a table creation operation. */
Parses a table creation operation. */
...
...
pars/lexyy.c
View file @
e3d753ab
This diff is collapsed.
Click to expand it.
pars/pars0grm.c
View file @
e3d753ab
This diff is collapsed.
Click to expand it.
pars/pars0grm.h
View file @
e3d753ab
#ifndef YYSTYPE
/* A Bison parser, made by GNU Bison 1.875d. */
#define YYSTYPE int
/* Skeleton parser for Yacc-like parsing with Bison,
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* As a special exception, when this file is copied by Bison into a
Bison output file, you may use that output file without restriction.
This special exception was added by the Free Software Foundation
in version 1.24 of Bison. */
/* Tokens. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
/* Put the tokens into the symbol table, so that GDB and other debuggers
know about them. */
enum
yytokentype
{
PARS_INT_LIT
=
258
,
PARS_FLOAT_LIT
=
259
,
PARS_STR_LIT
=
260
,
PARS_NULL_LIT
=
261
,
PARS_ID_TOKEN
=
262
,
PARS_AND_TOKEN
=
263
,
PARS_OR_TOKEN
=
264
,
PARS_NOT_TOKEN
=
265
,
PARS_GE_TOKEN
=
266
,
PARS_LE_TOKEN
=
267
,
PARS_NE_TOKEN
=
268
,
PARS_PROCEDURE_TOKEN
=
269
,
PARS_IN_TOKEN
=
270
,
PARS_OUT_TOKEN
=
271
,
PARS_BINARY_TOKEN
=
272
,
PARS_BLOB_TOKEN
=
273
,
PARS_INT_TOKEN
=
274
,
PARS_INTEGER_TOKEN
=
275
,
PARS_FLOAT_TOKEN
=
276
,
PARS_CHAR_TOKEN
=
277
,
PARS_IS_TOKEN
=
278
,
PARS_BEGIN_TOKEN
=
279
,
PARS_END_TOKEN
=
280
,
PARS_IF_TOKEN
=
281
,
PARS_THEN_TOKEN
=
282
,
PARS_ELSE_TOKEN
=
283
,
PARS_ELSIF_TOKEN
=
284
,
PARS_LOOP_TOKEN
=
285
,
PARS_WHILE_TOKEN
=
286
,
PARS_RETURN_TOKEN
=
287
,
PARS_SELECT_TOKEN
=
288
,
PARS_SUM_TOKEN
=
289
,
PARS_COUNT_TOKEN
=
290
,
PARS_DISTINCT_TOKEN
=
291
,
PARS_FROM_TOKEN
=
292
,
PARS_WHERE_TOKEN
=
293
,
PARS_FOR_TOKEN
=
294
,
PARS_DDOT_TOKEN
=
295
,
PARS_CONSISTENT_TOKEN
=
296
,
PARS_READ_TOKEN
=
297
,
PARS_ORDER_TOKEN
=
298
,
PARS_BY_TOKEN
=
299
,
PARS_ASC_TOKEN
=
300
,
PARS_DESC_TOKEN
=
301
,
PARS_INSERT_TOKEN
=
302
,
PARS_INTO_TOKEN
=
303
,
PARS_VALUES_TOKEN
=
304
,
PARS_UPDATE_TOKEN
=
305
,
PARS_SET_TOKEN
=
306
,
PARS_DELETE_TOKEN
=
307
,
PARS_CURRENT_TOKEN
=
308
,
PARS_OF_TOKEN
=
309
,
PARS_CREATE_TOKEN
=
310
,
PARS_TABLE_TOKEN
=
311
,
PARS_INDEX_TOKEN
=
312
,
PARS_UNIQUE_TOKEN
=
313
,
PARS_CLUSTERED_TOKEN
=
314
,
PARS_DOES_NOT_FIT_IN_MEM_TOKEN
=
315
,
PARS_ON_TOKEN
=
316
,
PARS_ASSIGN_TOKEN
=
317
,
PARS_DECLARE_TOKEN
=
318
,
PARS_CURSOR_TOKEN
=
319
,
PARS_SQL_TOKEN
=
320
,
PARS_OPEN_TOKEN
=
321
,
PARS_FETCH_TOKEN
=
322
,
PARS_CLOSE_TOKEN
=
323
,
PARS_NOTFOUND_TOKEN
=
324
,
PARS_TO_CHAR_TOKEN
=
325
,
PARS_TO_NUMBER_TOKEN
=
326
,
PARS_TO_BINARY_TOKEN
=
327
,
PARS_BINARY_TO_NUMBER_TOKEN
=
328
,
PARS_SUBSTR_TOKEN
=
329
,
PARS_REPLSTR_TOKEN
=
330
,
PARS_CONCAT_TOKEN
=
331
,
PARS_INSTR_TOKEN
=
332
,
PARS_LENGTH_TOKEN
=
333
,
PARS_SYSDATE_TOKEN
=
334
,
PARS_PRINTF_TOKEN
=
335
,
PARS_ASSERT_TOKEN
=
336
,
PARS_RND_TOKEN
=
337
,
PARS_RND_STR_TOKEN
=
338
,
PARS_ROW_PRINTF_TOKEN
=
339
,
PARS_COMMIT_TOKEN
=
340
,
PARS_ROLLBACK_TOKEN
=
341
,
PARS_WORK_TOKEN
=
342
,
NEG
=
343
};
#endif
#endif
#define PARS_INT_LIT 257
#define PARS_INT_LIT 258
#define PARS_FLOAT_LIT 258
#define PARS_FLOAT_LIT 259
#define PARS_STR_LIT 259
#define PARS_STR_LIT 260
#define PARS_NULL_LIT 260
#define PARS_NULL_LIT 261
#define PARS_ID_TOKEN 261
#define PARS_ID_TOKEN 262
#define PARS_AND_TOKEN 262
#define PARS_AND_TOKEN 263
#define PARS_OR_TOKEN 263
#define PARS_OR_TOKEN 264
#define PARS_NOT_TOKEN 264
#define PARS_NOT_TOKEN 265
#define PARS_GE_TOKEN 265
#define PARS_GE_TOKEN 266
#define PARS_LE_TOKEN 266
#define PARS_LE_TOKEN 267
#define PARS_NE_TOKEN 267
#define PARS_NE_TOKEN 268
#define PARS_PROCEDURE_TOKEN 268
#define PARS_PROCEDURE_TOKEN 269
#define PARS_IN_TOKEN 269
#define PARS_IN_TOKEN 270
#define PARS_OUT_TOKEN 270
#define PARS_OUT_TOKEN 271
#define PARS_INT_TOKEN 271
#define PARS_BINARY_TOKEN 272
#define PARS_INTEGER_TOKEN 272
#define PARS_BLOB_TOKEN 273
#define PARS_FLOAT_TOKEN 273
#define PARS_INT_TOKEN 274
#define PARS_CHAR_TOKEN 274
#define PARS_INTEGER_TOKEN 275
#define PARS_IS_TOKEN 275
#define PARS_FLOAT_TOKEN 276
#define PARS_BEGIN_TOKEN 276
#define PARS_CHAR_TOKEN 277
#define PARS_END_TOKEN 277
#define PARS_IS_TOKEN 278
#define PARS_IF_TOKEN 278
#define PARS_BEGIN_TOKEN 279
#define PARS_THEN_TOKEN 279
#define PARS_END_TOKEN 280
#define PARS_ELSE_TOKEN 280
#define PARS_IF_TOKEN 281
#define PARS_ELSIF_TOKEN 281
#define PARS_THEN_TOKEN 282
#define PARS_LOOP_TOKEN 282
#define PARS_ELSE_TOKEN 283
#define PARS_WHILE_TOKEN 283
#define PARS_ELSIF_TOKEN 284
#define PARS_RETURN_TOKEN 284
#define PARS_LOOP_TOKEN 285
#define PARS_SELECT_TOKEN 285
#define PARS_WHILE_TOKEN 286
#define PARS_SUM_TOKEN 286
#define PARS_RETURN_TOKEN 287
#define PARS_COUNT_TOKEN 287
#define PARS_SELECT_TOKEN 288
#define PARS_DISTINCT_TOKEN 288
#define PARS_SUM_TOKEN 289
#define PARS_FROM_TOKEN 289
#define PARS_COUNT_TOKEN 290
#define PARS_WHERE_TOKEN 290
#define PARS_DISTINCT_TOKEN 291
#define PARS_FOR_TOKEN 291
#define PARS_FROM_TOKEN 292
#define PARS_DDOT_TOKEN 292
#define PARS_WHERE_TOKEN 293
#define PARS_CONSISTENT_TOKEN 293
#define PARS_FOR_TOKEN 294
#define PARS_READ_TOKEN 294
#define PARS_DDOT_TOKEN 295
#define PARS_ORDER_TOKEN 295
#define PARS_CONSISTENT_TOKEN 296
#define PARS_BY_TOKEN 296
#define PARS_READ_TOKEN 297
#define PARS_ASC_TOKEN 297
#define PARS_ORDER_TOKEN 298
#define PARS_DESC_TOKEN 298
#define PARS_BY_TOKEN 299
#define PARS_INSERT_TOKEN 299
#define PARS_ASC_TOKEN 300
#define PARS_INTO_TOKEN 300
#define PARS_DESC_TOKEN 301
#define PARS_VALUES_TOKEN 301
#define PARS_INSERT_TOKEN 302
#define PARS_UPDATE_TOKEN 302
#define PARS_INTO_TOKEN 303
#define PARS_SET_TOKEN 303
#define PARS_VALUES_TOKEN 304
#define PARS_DELETE_TOKEN 304
#define PARS_UPDATE_TOKEN 305
#define PARS_CURRENT_TOKEN 305
#define PARS_SET_TOKEN 306
#define PARS_OF_TOKEN 306
#define PARS_DELETE_TOKEN 307
#define PARS_CREATE_TOKEN 307
#define PARS_CURRENT_TOKEN 308
#define PARS_TABLE_TOKEN 308
#define PARS_OF_TOKEN 309
#define PARS_INDEX_TOKEN 309
#define PARS_CREATE_TOKEN 310
#define PARS_UNIQUE_TOKEN 310
#define PARS_TABLE_TOKEN 311
#define PARS_CLUSTERED_TOKEN 311
#define PARS_INDEX_TOKEN 312
#define PARS_DOES_NOT_FIT_IN_MEM_TOKEN 312
#define PARS_UNIQUE_TOKEN 313
#define PARS_ON_TOKEN 313
#define PARS_CLUSTERED_TOKEN 314
#define PARS_ASSIGN_TOKEN 314
#define PARS_DOES_NOT_FIT_IN_MEM_TOKEN 315
#define PARS_DECLARE_TOKEN 315
#define PARS_ON_TOKEN 316
#define PARS_CURSOR_TOKEN 316
#define PARS_ASSIGN_TOKEN 317
#define PARS_SQL_TOKEN 317
#define PARS_DECLARE_TOKEN 318
#define PARS_OPEN_TOKEN 318
#define PARS_CURSOR_TOKEN 319
#define PARS_FETCH_TOKEN 319
#define PARS_SQL_TOKEN 320
#define PARS_CLOSE_TOKEN 320
#define PARS_OPEN_TOKEN 321
#define PARS_NOTFOUND_TOKEN 321
#define PARS_FETCH_TOKEN 322
#define PARS_TO_CHAR_TOKEN 322
#define PARS_CLOSE_TOKEN 323
#define PARS_TO_NUMBER_TOKEN 323
#define PARS_NOTFOUND_TOKEN 324
#define PARS_TO_BINARY_TOKEN 324
#define PARS_TO_CHAR_TOKEN 325
#define PARS_BINARY_TO_NUMBER_TOKEN 325
#define PARS_TO_NUMBER_TOKEN 326
#define PARS_SUBSTR_TOKEN 326
#define PARS_TO_BINARY_TOKEN 327
#define PARS_REPLSTR_TOKEN 327
#define PARS_BINARY_TO_NUMBER_TOKEN 328
#define PARS_CONCAT_TOKEN 328
#define PARS_SUBSTR_TOKEN 329
#define PARS_INSTR_TOKEN 329
#define PARS_REPLSTR_TOKEN 330
#define PARS_LENGTH_TOKEN 330
#define PARS_CONCAT_TOKEN 331
#define PARS_SYSDATE_TOKEN 331
#define PARS_INSTR_TOKEN 332
#define PARS_PRINTF_TOKEN 332
#define PARS_LENGTH_TOKEN 333
#define PARS_ASSERT_TOKEN 333
#define PARS_SYSDATE_TOKEN 334
#define PARS_RND_TOKEN 334
#define PARS_PRINTF_TOKEN 335
#define PARS_RND_STR_TOKEN 335
#define PARS_ASSERT_TOKEN 336
#define PARS_ROW_PRINTF_TOKEN 336
#define PARS_RND_TOKEN 337
#define PARS_COMMIT_TOKEN 337
#define PARS_RND_STR_TOKEN 338
#define PARS_ROLLBACK_TOKEN 338
#define PARS_ROW_PRINTF_TOKEN 339
#define PARS_WORK_TOKEN 339
#define PARS_COMMIT_TOKEN 340
#define NEG 340
#define PARS_ROLLBACK_TOKEN 341
#define PARS_WORK_TOKEN 342
#define NEG 343
#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
typedef
int
YYSTYPE
;
# define yystype YYSTYPE
/* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1
#endif
extern
YYSTYPE
yylval
;
extern
YYSTYPE
yylval
;
pars/pars0grm.y
View file @
e3d753ab
...
@@ -44,6 +44,8 @@ yylex(void);
...
@@ -44,6 +44,8 @@ yylex(void);
%token PARS_PROCEDURE_TOKEN
%token PARS_PROCEDURE_TOKEN
%token PARS_IN_TOKEN
%token PARS_IN_TOKEN
%token PARS_OUT_TOKEN
%token PARS_OUT_TOKEN
%token PARS_BINARY_TOKEN
%token PARS_BLOB_TOKEN
%token PARS_INT_TOKEN
%token PARS_INT_TOKEN
%token PARS_INTEGER_TOKEN
%token PARS_INTEGER_TOKEN
%token PARS_FLOAT_TOKEN
%token PARS_FLOAT_TOKEN
...
@@ -448,7 +450,8 @@ fetch_statement:
...
@@ -448,7 +450,8 @@ fetch_statement:
;
;
column_def:
column_def:
PARS_ID_TOKEN type_name { $$ = pars_column_def($1, $2); }
PARS_ID_TOKEN type_name opt_column_len
{ $$ = pars_column_def($1, $2, $3); }
;
;
column_def_list:
column_def_list:
...
@@ -457,6 +460,11 @@ column_def_list:
...
@@ -457,6 +460,11 @@ column_def_list:
{ $$ = que_node_list_add_last($1, $3); }
{ $$ = que_node_list_add_last($1, $3); }
;
;
opt_column_len:
/* Nothing */ { $$ = NULL; }
| '(' PARS_INT_LIT ')'
{ $$ = $2; }
not_fit_in_memory:
not_fit_in_memory:
/* Nothing */ { $$ = NULL; }
/* Nothing */ { $$ = NULL; }
| PARS_DOES_NOT_FIT_IN_MEM_TOKEN
| PARS_DOES_NOT_FIT_IN_MEM_TOKEN
...
@@ -507,6 +515,8 @@ rollback_statement:
...
@@ -507,6 +515,8 @@ rollback_statement:
type_name:
type_name:
PARS_INT_TOKEN { $$ = &pars_int_token; }
PARS_INT_TOKEN { $$ = &pars_int_token; }
| PARS_CHAR_TOKEN { $$ = &pars_char_token; }
| PARS_CHAR_TOKEN { $$ = &pars_char_token; }
| PARS_BINARY_TOKEN { $$ = &pars_binary_token; }
| PARS_BLOB_TOKEN { $$ = &pars_blob_token; }
;
;
parameter_declaration:
parameter_declaration:
...
...
pars/pars0lex.l
View file @
e3d753ab
...
@@ -26,12 +26,10 @@ How to make the InnoDB parser and lexer C files:
...
@@ -26,12 +26,10 @@ How to make the InnoDB parser and lexer C files:
5. Rename lex.yy.c to lexyy.c.
5. Rename lex.yy.c to lexyy.c.
6. Remove the #include of unistd.h from about line 2500 of lexyy.c
6. Add '#include "univ.i"' before #include <stdio.h> in lexyy.c
7. Add '#include "univ.i"' before #include <stdio.h> in lexyy.c
(Needed for AIX)
(Needed for AIX)
8
. Add a type cast to int to the assignment below the comment
7
. Add a type cast to int to the assignment below the comment
'need more input.' (Removes a warning on Win64)
'need more input.' (Removes a warning on Win64)
These instructions seem to work at least with bison-1.28 and flex-2.5.4 on
These instructions seem to work at least with bison-1.28 and flex-2.5.4 on
...
@@ -50,6 +48,7 @@ Linux.
...
@@ -50,6 +48,7 @@ Linux.
%option noyy_scan_buffer
%option noyy_scan_buffer
%option noyy_scan_bytes
%option noyy_scan_bytes
%option noyy_scan_string
%option noyy_scan_string
%option nounistd
%{
%{
#define YYSTYPE que_node_t*
#define YYSTYPE que_node_t*
...
@@ -191,6 +190,14 @@ In the state 'quoted', only two actions are possible (defined below). */
...
@@ -191,6 +190,14 @@ In the state 'quoted', only two actions are possible (defined below). */
return(PARS_OUT_TOKEN);
return(PARS_OUT_TOKEN);
}
}
"BINARY" {
return(PARS_BINARY_TOKEN);
}
"BLOB" {
return(PARS_BLOB_TOKEN);
}
"INT" {
"INT" {
return(PARS_INT_TOKEN);
return(PARS_INT_TOKEN);
}
}
...
...
pars/pars0pars.c
View file @
e3d753ab
...
@@ -62,6 +62,8 @@ pars_res_word_t pars_rnd_str_token = {PARS_RND_STR_TOKEN};
...
@@ -62,6 +62,8 @@ pars_res_word_t pars_rnd_str_token = {PARS_RND_STR_TOKEN};
pars_res_word_t
pars_count_token
=
{
PARS_COUNT_TOKEN
};
pars_res_word_t
pars_count_token
=
{
PARS_COUNT_TOKEN
};
pars_res_word_t
pars_sum_token
=
{
PARS_SUM_TOKEN
};
pars_res_word_t
pars_sum_token
=
{
PARS_SUM_TOKEN
};
pars_res_word_t
pars_distinct_token
=
{
PARS_DISTINCT_TOKEN
};
pars_res_word_t
pars_distinct_token
=
{
PARS_DISTINCT_TOKEN
};
pars_res_word_t
pars_binary_token
=
{
PARS_BINARY_TOKEN
};
pars_res_word_t
pars_blob_token
=
{
PARS_BLOB_TOKEN
};
pars_res_word_t
pars_int_token
=
{
PARS_INT_TOKEN
};
pars_res_word_t
pars_int_token
=
{
PARS_INT_TOKEN
};
pars_res_word_t
pars_char_token
=
{
PARS_CHAR_TOKEN
};
pars_res_word_t
pars_char_token
=
{
PARS_CHAR_TOKEN
};
pars_res_word_t
pars_float_token
=
{
PARS_FLOAT_TOKEN
};
pars_res_word_t
pars_float_token
=
{
PARS_FLOAT_TOKEN
};
...
@@ -1078,17 +1080,38 @@ static
...
@@ -1078,17 +1080,38 @@ static
void
void
pars_set_dfield_type
(
pars_set_dfield_type
(
/*=================*/
/*=================*/
dfield_t
*
dfield
,
/* in: dfield */
dfield_t
*
dfield
,
/* in: dfield */
pars_res_word_t
*
type
)
/* in: pointer to a type token */
pars_res_word_t
*
type
,
/* in: pointer to a type token */
ulint
len
)
/* in: length, or 0 */
{
{
if
(
type
==
&
pars_int_token
)
{
if
(
type
==
&
pars_int_token
)
{
if
(
len
!=
0
)
{
ut_error
;
}
dtype_set
(
dfield_get_type
(
dfield
),
DATA_INT
,
0
,
4
,
0
);
dtype_set
(
dfield_get_type
(
dfield
),
DATA_INT
,
0
,
4
,
0
);
}
else
if
(
type
==
&
pars_char_token
)
{
}
else
if
(
type
==
&
pars_char_token
)
{
if
(
len
!=
0
)
{
ut_error
;
}
dtype_set
(
dfield_get_type
(
dfield
),
DATA_VARCHAR
,
dtype_set
(
dfield_get_type
(
dfield
),
DATA_VARCHAR
,
DATA_ENGLISH
,
0
,
0
);
DATA_ENGLISH
,
0
,
0
);
}
else
if
(
type
==
&
pars_binary_token
)
{
if
(
len
==
0
)
{
ut_error
;
}
dtype_set
(
dfield_get_type
(
dfield
),
DATA_FIXBINARY
,
DATA_BINARY_TYPE
,
len
,
0
);
}
else
if
(
type
==
&
pars_blob_token
)
{
if
(
len
!=
0
)
{
ut_error
;
}
dtype_set
(
dfield_get_type
(
dfield
),
DATA_BLOB
,
DATA_BINARY_TYPE
,
0
,
0
);
}
else
{
}
else
{
ut_error
;
ut_error
;
}
}
...
@@ -1111,7 +1134,7 @@ pars_variable_declaration(
...
@@ -1111,7 +1134,7 @@ pars_variable_declaration(
node
->
param_type
=
PARS_NOT_PARAM
;
node
->
param_type
=
PARS_NOT_PARAM
;
pars_set_dfield_type
(
que_node_get_val
(
node
),
type
);
pars_set_dfield_type
(
que_node_get_val
(
node
),
type
,
0
);
return
(
node
);
return
(
node
);
}
}
...
@@ -1475,12 +1498,23 @@ Parses a column definition at a table creation. */
...
@@ -1475,12 +1498,23 @@ Parses a column definition at a table creation. */
sym_node_t
*
sym_node_t
*
pars_column_def
(
pars_column_def
(
/*============*/
/*============*/
/* out: column sym table node */
/* out: column sym table
sym_node_t
*
sym_node
,
/* in: column node in the symbol
node */
table */
sym_node_t
*
sym_node
,
/* in: column node in the
pars_res_word_t
*
type
)
/* in: data type */
symbol table */
pars_res_word_t
*
type
,
/* in: data type */
sym_node_t
*
len
)
/* in: length of column, or
NULL */
{
{
pars_set_dfield_type
(
que_node_get_val
(
sym_node
),
type
);
ulint
len2
;
if
(
len
)
{
len2
=
eval_node_get_int_val
(
len
);
}
else
{
len2
=
0
;
}
pars_set_dfield_type
(
que_node_get_val
(
sym_node
),
type
,
len2
);
return
(
sym_node
);
return
(
sym_node
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment