Commit 4bdaf9c2 authored by heikki@hundin.mysql.fi's avatar heikki@hundin.mysql.fi
Browse files

pars0grm.h, pars0grm.c, lexyy.c:

  The lexer of InnoDB to 8-bit, it was 7-bit which made it crash on table names containing char codes > 127
pars0lex.l, pars0grm.y:
  Add InnoDB internal SQL interpreter grammar and lexer sources
parent 48e20a0b
Loading
Loading
Loading
Loading
+84 −84
Original line number Diff line number Diff line
#ifndef YYSTYPE
#define YYSTYPE int
#endif
#define	PARS_INT_LIT	258
#define	PARS_FLOAT_LIT	259
#define	PARS_STR_LIT	260
#define	PARS_NULL_LIT	261
#define	PARS_ID_TOKEN	262
#define	PARS_AND_TOKEN	263
#define	PARS_OR_TOKEN	264
#define	PARS_NOT_TOKEN	265
#define	PARS_GE_TOKEN	266
#define	PARS_LE_TOKEN	267
#define	PARS_NE_TOKEN	268
#define	PARS_PROCEDURE_TOKEN	269
#define	PARS_IN_TOKEN	270
#define	PARS_OUT_TOKEN	271
#define	PARS_INT_TOKEN	272
#define	PARS_INTEGER_TOKEN	273
#define	PARS_FLOAT_TOKEN	274
#define	PARS_CHAR_TOKEN	275
#define	PARS_IS_TOKEN	276
#define	PARS_BEGIN_TOKEN	277
#define	PARS_END_TOKEN	278
#define	PARS_IF_TOKEN	279
#define	PARS_THEN_TOKEN	280
#define	PARS_ELSE_TOKEN	281
#define	PARS_ELSIF_TOKEN	282
#define	PARS_LOOP_TOKEN	283
#define	PARS_WHILE_TOKEN	284
#define	PARS_RETURN_TOKEN	285
#define	PARS_SELECT_TOKEN	286
#define	PARS_SUM_TOKEN	287
#define	PARS_COUNT_TOKEN	288
#define	PARS_DISTINCT_TOKEN	289
#define	PARS_FROM_TOKEN	290
#define	PARS_WHERE_TOKEN	291
#define	PARS_FOR_TOKEN	292
#define	PARS_DDOT_TOKEN	293
#define	PARS_CONSISTENT_TOKEN	294
#define	PARS_READ_TOKEN	295
#define	PARS_ORDER_TOKEN	296
#define	PARS_BY_TOKEN	297
#define	PARS_ASC_TOKEN	298
#define	PARS_DESC_TOKEN	299
#define	PARS_INSERT_TOKEN	300
#define	PARS_INTO_TOKEN	301
#define	PARS_VALUES_TOKEN	302
#define	PARS_UPDATE_TOKEN	303
#define	PARS_SET_TOKEN	304
#define	PARS_DELETE_TOKEN	305
#define	PARS_CURRENT_TOKEN	306
#define	PARS_OF_TOKEN	307
#define	PARS_CREATE_TOKEN	308
#define	PARS_TABLE_TOKEN	309
#define	PARS_INDEX_TOKEN	310
#define	PARS_UNIQUE_TOKEN	311
#define	PARS_CLUSTERED_TOKEN	312
#define	PARS_DOES_NOT_FIT_IN_MEM_TOKEN	313
#define	PARS_ON_TOKEN	314
#define	PARS_ASSIGN_TOKEN	315
#define	PARS_DECLARE_TOKEN	316
#define	PARS_CURSOR_TOKEN	317
#define	PARS_SQL_TOKEN	318
#define	PARS_OPEN_TOKEN	319
#define	PARS_FETCH_TOKEN	320
#define	PARS_CLOSE_TOKEN	321
#define	PARS_NOTFOUND_TOKEN	322
#define	PARS_TO_CHAR_TOKEN	323
#define	PARS_TO_NUMBER_TOKEN	324
#define	PARS_TO_BINARY_TOKEN	325
#define	PARS_BINARY_TO_NUMBER_TOKEN	326
#define	PARS_SUBSTR_TOKEN	327
#define	PARS_REPLSTR_TOKEN	328
#define	PARS_CONCAT_TOKEN	329
#define	PARS_INSTR_TOKEN	330
#define	PARS_LENGTH_TOKEN	331
#define	PARS_SYSDATE_TOKEN	332
#define	PARS_PRINTF_TOKEN	333
#define	PARS_ASSERT_TOKEN	334
#define	PARS_RND_TOKEN	335
#define	PARS_RND_STR_TOKEN	336
#define	PARS_ROW_PRINTF_TOKEN	337
#define	PARS_COMMIT_TOKEN	338
#define	PARS_ROLLBACK_TOKEN	339
#define	PARS_WORK_TOKEN	340
#define	NEG	341
#define	PARS_INT_LIT	257
#define	PARS_FLOAT_LIT	258
#define	PARS_STR_LIT	259
#define	PARS_NULL_LIT	260
#define	PARS_ID_TOKEN	261
#define	PARS_AND_TOKEN	262
#define	PARS_OR_TOKEN	263
#define	PARS_NOT_TOKEN	264
#define	PARS_GE_TOKEN	265
#define	PARS_LE_TOKEN	266
#define	PARS_NE_TOKEN	267
#define	PARS_PROCEDURE_TOKEN	268
#define	PARS_IN_TOKEN	269
#define	PARS_OUT_TOKEN	270
#define	PARS_INT_TOKEN	271
#define	PARS_INTEGER_TOKEN	272
#define	PARS_FLOAT_TOKEN	273
#define	PARS_CHAR_TOKEN	274
#define	PARS_IS_TOKEN	275
#define	PARS_BEGIN_TOKEN	276
#define	PARS_END_TOKEN	277
#define	PARS_IF_TOKEN	278
#define	PARS_THEN_TOKEN	279
#define	PARS_ELSE_TOKEN	280
#define	PARS_ELSIF_TOKEN	281
#define	PARS_LOOP_TOKEN	282
#define	PARS_WHILE_TOKEN	283
#define	PARS_RETURN_TOKEN	284
#define	PARS_SELECT_TOKEN	285
#define	PARS_SUM_TOKEN	286
#define	PARS_COUNT_TOKEN	287
#define	PARS_DISTINCT_TOKEN	288
#define	PARS_FROM_TOKEN	289
#define	PARS_WHERE_TOKEN	290
#define	PARS_FOR_TOKEN	291
#define	PARS_DDOT_TOKEN	292
#define	PARS_CONSISTENT_TOKEN	293
#define	PARS_READ_TOKEN	294
#define	PARS_ORDER_TOKEN	295
#define	PARS_BY_TOKEN	296
#define	PARS_ASC_TOKEN	297
#define	PARS_DESC_TOKEN	298
#define	PARS_INSERT_TOKEN	299
#define	PARS_INTO_TOKEN	300
#define	PARS_VALUES_TOKEN	301
#define	PARS_UPDATE_TOKEN	302
#define	PARS_SET_TOKEN	303
#define	PARS_DELETE_TOKEN	304
#define	PARS_CURRENT_TOKEN	305
#define	PARS_OF_TOKEN	306
#define	PARS_CREATE_TOKEN	307
#define	PARS_TABLE_TOKEN	308
#define	PARS_INDEX_TOKEN	309
#define	PARS_UNIQUE_TOKEN	310
#define	PARS_CLUSTERED_TOKEN	311
#define	PARS_DOES_NOT_FIT_IN_MEM_TOKEN	312
#define	PARS_ON_TOKEN	313
#define	PARS_ASSIGN_TOKEN	314
#define	PARS_DECLARE_TOKEN	315
#define	PARS_CURSOR_TOKEN	316
#define	PARS_SQL_TOKEN	317
#define	PARS_OPEN_TOKEN	318
#define	PARS_FETCH_TOKEN	319
#define	PARS_CLOSE_TOKEN	320
#define	PARS_NOTFOUND_TOKEN	321
#define	PARS_TO_CHAR_TOKEN	322
#define	PARS_TO_NUMBER_TOKEN	323
#define	PARS_TO_BINARY_TOKEN	324
#define	PARS_BINARY_TO_NUMBER_TOKEN	325
#define	PARS_SUBSTR_TOKEN	326
#define	PARS_REPLSTR_TOKEN	327
#define	PARS_CONCAT_TOKEN	328
#define	PARS_INSTR_TOKEN	329
#define	PARS_LENGTH_TOKEN	330
#define	PARS_SYSDATE_TOKEN	331
#define	PARS_PRINTF_TOKEN	332
#define	PARS_ASSERT_TOKEN	333
#define	PARS_RND_TOKEN	334
#define	PARS_RND_STR_TOKEN	335
#define	PARS_ROW_PRINTF_TOKEN	336
#define	PARS_COMMIT_TOKEN	337
#define	PARS_ROLLBACK_TOKEN	338
#define	PARS_WORK_TOKEN	339
#define	NEG	340


extern YYSTYPE yylval;
+889 −5777

File changed.

Preview size limit exceeded, changes collapsed.

+371 −291

File changed.

Preview size limit exceeded, changes collapsed.

+84 −84
Original line number Diff line number Diff line
#ifndef YYSTYPE
#define YYSTYPE int
#endif
#define	PARS_INT_LIT	258
#define	PARS_FLOAT_LIT	259
#define	PARS_STR_LIT	260
#define	PARS_NULL_LIT	261
#define	PARS_ID_TOKEN	262
#define	PARS_AND_TOKEN	263
#define	PARS_OR_TOKEN	264
#define	PARS_NOT_TOKEN	265
#define	PARS_GE_TOKEN	266
#define	PARS_LE_TOKEN	267
#define	PARS_NE_TOKEN	268
#define	PARS_PROCEDURE_TOKEN	269
#define	PARS_IN_TOKEN	270
#define	PARS_OUT_TOKEN	271
#define	PARS_INT_TOKEN	272
#define	PARS_INTEGER_TOKEN	273
#define	PARS_FLOAT_TOKEN	274
#define	PARS_CHAR_TOKEN	275
#define	PARS_IS_TOKEN	276
#define	PARS_BEGIN_TOKEN	277
#define	PARS_END_TOKEN	278
#define	PARS_IF_TOKEN	279
#define	PARS_THEN_TOKEN	280
#define	PARS_ELSE_TOKEN	281
#define	PARS_ELSIF_TOKEN	282
#define	PARS_LOOP_TOKEN	283
#define	PARS_WHILE_TOKEN	284
#define	PARS_RETURN_TOKEN	285
#define	PARS_SELECT_TOKEN	286
#define	PARS_SUM_TOKEN	287
#define	PARS_COUNT_TOKEN	288
#define	PARS_DISTINCT_TOKEN	289
#define	PARS_FROM_TOKEN	290
#define	PARS_WHERE_TOKEN	291
#define	PARS_FOR_TOKEN	292
#define	PARS_DDOT_TOKEN	293
#define	PARS_CONSISTENT_TOKEN	294
#define	PARS_READ_TOKEN	295
#define	PARS_ORDER_TOKEN	296
#define	PARS_BY_TOKEN	297
#define	PARS_ASC_TOKEN	298
#define	PARS_DESC_TOKEN	299
#define	PARS_INSERT_TOKEN	300
#define	PARS_INTO_TOKEN	301
#define	PARS_VALUES_TOKEN	302
#define	PARS_UPDATE_TOKEN	303
#define	PARS_SET_TOKEN	304
#define	PARS_DELETE_TOKEN	305
#define	PARS_CURRENT_TOKEN	306
#define	PARS_OF_TOKEN	307
#define	PARS_CREATE_TOKEN	308
#define	PARS_TABLE_TOKEN	309
#define	PARS_INDEX_TOKEN	310
#define	PARS_UNIQUE_TOKEN	311
#define	PARS_CLUSTERED_TOKEN	312
#define	PARS_DOES_NOT_FIT_IN_MEM_TOKEN	313
#define	PARS_ON_TOKEN	314
#define	PARS_ASSIGN_TOKEN	315
#define	PARS_DECLARE_TOKEN	316
#define	PARS_CURSOR_TOKEN	317
#define	PARS_SQL_TOKEN	318
#define	PARS_OPEN_TOKEN	319
#define	PARS_FETCH_TOKEN	320
#define	PARS_CLOSE_TOKEN	321
#define	PARS_NOTFOUND_TOKEN	322
#define	PARS_TO_CHAR_TOKEN	323
#define	PARS_TO_NUMBER_TOKEN	324
#define	PARS_TO_BINARY_TOKEN	325
#define	PARS_BINARY_TO_NUMBER_TOKEN	326
#define	PARS_SUBSTR_TOKEN	327
#define	PARS_REPLSTR_TOKEN	328
#define	PARS_CONCAT_TOKEN	329
#define	PARS_INSTR_TOKEN	330
#define	PARS_LENGTH_TOKEN	331
#define	PARS_SYSDATE_TOKEN	332
#define	PARS_PRINTF_TOKEN	333
#define	PARS_ASSERT_TOKEN	334
#define	PARS_RND_TOKEN	335
#define	PARS_RND_STR_TOKEN	336
#define	PARS_ROW_PRINTF_TOKEN	337
#define	PARS_COMMIT_TOKEN	338
#define	PARS_ROLLBACK_TOKEN	339
#define	PARS_WORK_TOKEN	340
#define	NEG	341
#define	PARS_INT_LIT	257
#define	PARS_FLOAT_LIT	258
#define	PARS_STR_LIT	259
#define	PARS_NULL_LIT	260
#define	PARS_ID_TOKEN	261
#define	PARS_AND_TOKEN	262
#define	PARS_OR_TOKEN	263
#define	PARS_NOT_TOKEN	264
#define	PARS_GE_TOKEN	265
#define	PARS_LE_TOKEN	266
#define	PARS_NE_TOKEN	267
#define	PARS_PROCEDURE_TOKEN	268
#define	PARS_IN_TOKEN	269
#define	PARS_OUT_TOKEN	270
#define	PARS_INT_TOKEN	271
#define	PARS_INTEGER_TOKEN	272
#define	PARS_FLOAT_TOKEN	273
#define	PARS_CHAR_TOKEN	274
#define	PARS_IS_TOKEN	275
#define	PARS_BEGIN_TOKEN	276
#define	PARS_END_TOKEN	277
#define	PARS_IF_TOKEN	278
#define	PARS_THEN_TOKEN	279
#define	PARS_ELSE_TOKEN	280
#define	PARS_ELSIF_TOKEN	281
#define	PARS_LOOP_TOKEN	282
#define	PARS_WHILE_TOKEN	283
#define	PARS_RETURN_TOKEN	284
#define	PARS_SELECT_TOKEN	285
#define	PARS_SUM_TOKEN	286
#define	PARS_COUNT_TOKEN	287
#define	PARS_DISTINCT_TOKEN	288
#define	PARS_FROM_TOKEN	289
#define	PARS_WHERE_TOKEN	290
#define	PARS_FOR_TOKEN	291
#define	PARS_DDOT_TOKEN	292
#define	PARS_CONSISTENT_TOKEN	293
#define	PARS_READ_TOKEN	294
#define	PARS_ORDER_TOKEN	295
#define	PARS_BY_TOKEN	296
#define	PARS_ASC_TOKEN	297
#define	PARS_DESC_TOKEN	298
#define	PARS_INSERT_TOKEN	299
#define	PARS_INTO_TOKEN	300
#define	PARS_VALUES_TOKEN	301
#define	PARS_UPDATE_TOKEN	302
#define	PARS_SET_TOKEN	303
#define	PARS_DELETE_TOKEN	304
#define	PARS_CURRENT_TOKEN	305
#define	PARS_OF_TOKEN	306
#define	PARS_CREATE_TOKEN	307
#define	PARS_TABLE_TOKEN	308
#define	PARS_INDEX_TOKEN	309
#define	PARS_UNIQUE_TOKEN	310
#define	PARS_CLUSTERED_TOKEN	311
#define	PARS_DOES_NOT_FIT_IN_MEM_TOKEN	312
#define	PARS_ON_TOKEN	313
#define	PARS_ASSIGN_TOKEN	314
#define	PARS_DECLARE_TOKEN	315
#define	PARS_CURSOR_TOKEN	316
#define	PARS_SQL_TOKEN	317
#define	PARS_OPEN_TOKEN	318
#define	PARS_FETCH_TOKEN	319
#define	PARS_CLOSE_TOKEN	320
#define	PARS_NOTFOUND_TOKEN	321
#define	PARS_TO_CHAR_TOKEN	322
#define	PARS_TO_NUMBER_TOKEN	323
#define	PARS_TO_BINARY_TOKEN	324
#define	PARS_BINARY_TO_NUMBER_TOKEN	325
#define	PARS_SUBSTR_TOKEN	326
#define	PARS_REPLSTR_TOKEN	327
#define	PARS_CONCAT_TOKEN	328
#define	PARS_INSTR_TOKEN	329
#define	PARS_LENGTH_TOKEN	330
#define	PARS_SYSDATE_TOKEN	331
#define	PARS_PRINTF_TOKEN	332
#define	PARS_ASSERT_TOKEN	333
#define	PARS_RND_TOKEN	334
#define	PARS_RND_STR_TOKEN	335
#define	PARS_ROW_PRINTF_TOKEN	336
#define	PARS_COMMIT_TOKEN	337
#define	PARS_ROLLBACK_TOKEN	338
#define	PARS_WORK_TOKEN	339
#define	NEG	340


extern YYSTYPE yylval;
+7 −3
Original line number Diff line number Diff line
@@ -4,17 +4,21 @@ SQL parser: input file for the GNU Bison parser generator
(c) 1997 Innobase Oy

Created 12/14/1997 Heikki Tuuri
Published under the GPL version 2

Look from pars0lex.l for instructions how to generate the C files for
the InnoDB parser.
*******************************************************/

%{
/* The value of the semantic attribute is a pointer to a query tree node
que_node_t */
#define YYSTYPE que_node_t*

#include "univ.i"
#undef alloca
#define alloca	mem_alloc

#include <math.h>

#include "univ.i"
#include "pars0pars.h"
#include "mem0mem.h"
#include "que0types.h"
Loading