~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/innobase/pars/pars0grm.y

  • Committer: Lee Bieber
  • Date: 2010-11-14 23:15:42 UTC
  • mfrom: (1929.1.42 warning-stack-frame)
  • Revision ID: kalebral@gmail.com-20101114231542-fnnu6ydd2p17n582
Merge Monty - fix bug 672372: some functions use > 32k stack

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*****************************************************************************
2
2
 
3
 
Copyright (C) 1997, 2009, Innobase Oy. All Rights Reserved.
 
3
Copyright (c) 1997, 2009, Innobase Oy. All Rights Reserved.
4
4
 
5
5
This program is free software; you can redistribute it and/or modify it under
6
6
the terms of the GNU General Public License as published by the Free Software
35
35
#include "row0sel.h"
36
36
 
37
37
#define YYSTYPE que_node_t*
38
 
#define YYENABLE_NLS 0
39
 
#define YYLTYPE_IS_TRIVIAL 0
40
38
 
41
39
/* #define __STDC__ */
42
40
 
43
 
extern "C" int yylex(void);
 
41
int
 
42
yylex(void);
44
43
%}
45
44
 
46
45
%expect 27
238
237
 
239
238
stored_procedure_call:
240
239
        '{' PARS_ID_TOKEN '(' question_mark_list ')' '}'
241
 
        { $$ = pars_stored_procedure_call(static_cast<sym_node_t *>($2)); }
 
240
                                { $$ = pars_stored_procedure_call($2); }
242
241
;
243
242
 
244
243
predefined_procedure_call:
305
304
        '*'                     { $$ = pars_select_list(&pars_star_denoter,
306
305
                                                                NULL); }
307
306
        | select_item_list PARS_INTO_TOKEN variable_list
308
 
        { $$ = pars_select_list(static_cast<sym_node_t *>($1), static_cast<sym_node_t *>($3)); }
 
307
                                { $$ = pars_select_list($1, $3); }
309
308
        | select_item_list      { $$ = pars_select_list($1, NULL); }
310
309
;
311
310
 
335
334
order_by_clause:
336
335
        /* Nothing */           { $$ = NULL; }
337
336
        | PARS_ORDER_TOKEN PARS_BY_TOKEN PARS_ID_TOKEN order_direction
338
 
        { $$ = pars_order_by(static_cast<sym_node_t *>($3), static_cast<pars_res_word_t *>($4)); }
 
337
                                { $$ = pars_order_by($3, $4); }
339
338
;
340
339
 
341
340
select_statement:
344
343
        search_condition
345
344
        for_update_clause
346
345
        lock_shared_clause
347
 
        order_by_clause         { $$ = pars_select_statement(static_cast<sel_node_t *>($2), static_cast<sym_node_t *>($4), $5,
348
 
                                                             static_cast<pars_res_word_t *>($6), static_cast<pars_res_word_t *>($7), static_cast<order_node_t *>($8)); }
 
346
        order_by_clause         { $$ = pars_select_statement($2, $4, $5,
 
347
                                                                $6, $7, $8); }
349
348
;
350
349
 
351
350
insert_statement_start:
355
354
 
356
355
insert_statement:
357
356
        insert_statement_start PARS_VALUES_TOKEN '(' exp_list ')'
358
 
        { $$ = pars_insert_statement(static_cast<sym_node_t *>($1), $4, NULL); }
 
357
                                { $$ = pars_insert_statement($1, $4, NULL); }
359
358
        | insert_statement_start select_statement
360
 
        { $$ = pars_insert_statement(static_cast<sym_node_t *>($1), NULL, static_cast<sel_node_t *>($2)); }
 
359
                                { $$ = pars_insert_statement($1, NULL, $2); }
361
360
;
362
361
 
363
362
column_assignment:
364
 
PARS_ID_TOKEN '=' exp   { $$ = pars_column_assignment(static_cast<sym_node_t *>($1), $3); }
 
363
        PARS_ID_TOKEN '=' exp   { $$ = pars_column_assignment($1, $3); }
365
364
;
366
365
 
367
366
column_assignment_list:
380
379
        PARS_UPDATE_TOKEN PARS_ID_TOKEN
381
380
        PARS_SET_TOKEN
382
381
        column_assignment_list  { $$ = pars_update_statement_start(FALSE,
383
 
                                                                   static_cast<sym_node_t *>($2), static_cast<col_assign_node_t *>($4)); }
 
382
                                                                $2, $4); }
384
383
;
385
384
 
386
385
update_statement_searched:
387
386
        update_statement_start
388
 
        search_condition        { $$ = pars_update_statement(static_cast<upd_node_t *>($1), NULL, $2); }
 
387
        search_condition        { $$ = pars_update_statement($1, NULL, $2); }
389
388
;
390
389
 
391
390
update_statement_positioned:
392
391
        update_statement_start
393
 
        cursor_positioned       { $$ = pars_update_statement(static_cast<upd_node_t *>($1), static_cast<sym_node_t *>($2), NULL); }
 
392
        cursor_positioned       { $$ = pars_update_statement($1, $2, NULL); }
394
393
;
395
394
 
396
395
delete_statement_start:
397
396
        PARS_DELETE_TOKEN PARS_FROM_TOKEN
398
397
        PARS_ID_TOKEN           { $$ = pars_update_statement_start(TRUE,
399
 
                                                                   static_cast<sym_node_t *>($3), NULL); }
 
398
                                                                $3, NULL); }
400
399
;
401
400
 
402
401
delete_statement_searched:
403
402
        delete_statement_start
404
 
        search_condition        { $$ = pars_update_statement(static_cast<upd_node_t *>($1), NULL, $2); }
 
403
        search_condition        { $$ = pars_update_statement($1, NULL, $2); }
405
404
;
406
405
 
407
406
delete_statement_positioned:
408
407
        delete_statement_start
409
 
        cursor_positioned       { $$ = pars_update_statement(static_cast<upd_node_t *>($1), static_cast<sym_node_t *>($2), NULL); }
 
408
        cursor_positioned       { $$ = pars_update_statement($1, $2, NULL); }
410
409
;
411
410
 
412
411
row_printf_statement:
413
412
        PARS_ROW_PRINTF_TOKEN select_statement
414
 
        { $$ = pars_row_printf_statement(static_cast<sel_node_t *>($2)); }
 
413
                                { $$ = pars_row_printf_statement($2); }
415
414
;
416
415
 
417
416
assignment_statement:
418
417
        PARS_ID_TOKEN PARS_ASSIGN_TOKEN exp
419
 
        { $$ = pars_assignment_statement(static_cast<sym_node_t *>($1), $3); }
 
418
                                { $$ = pars_assignment_statement($1, $3); }
420
419
;
421
420
 
422
421
elsif_element:
456
455
        exp PARS_DDOT_TOKEN exp
457
456
        PARS_LOOP_TOKEN statement_list
458
457
        PARS_END_TOKEN PARS_LOOP_TOKEN
459
 
        { $$ = pars_for_statement(static_cast<sym_node_t *>($2), $4, $6, $8); }
 
458
                                { $$ = pars_for_statement($2, $4, $6, $8); }
460
459
;
461
460
 
462
461
exit_statement:
469
468
 
470
469
open_cursor_statement:
471
470
        PARS_OPEN_TOKEN PARS_ID_TOKEN
472
 
        { $$ = pars_open_statement(ROW_SEL_OPEN_CURSOR,
473
 
                                   static_cast<sym_node_t *>($2)); }
 
471
                                { $$ = pars_open_statement(
 
472
                                                ROW_SEL_OPEN_CURSOR, $2); }
474
473
;
475
474
 
476
475
close_cursor_statement:
477
476
        PARS_CLOSE_TOKEN PARS_ID_TOKEN
478
 
        { $$ = pars_open_statement(ROW_SEL_CLOSE_CURSOR,
479
 
                                   static_cast<sym_node_t *>($2)); }
 
477
                                { $$ = pars_open_statement(
 
478
                                                ROW_SEL_CLOSE_CURSOR, $2); }
480
479
;
481
480
 
482
481
fetch_statement:
483
482
        PARS_FETCH_TOKEN PARS_ID_TOKEN PARS_INTO_TOKEN variable_list
484
 
        { $$ = pars_fetch_statement(static_cast<sym_node_t *>($2), static_cast<sym_node_t *>($4), NULL); }
 
483
                                { $$ = pars_fetch_statement($2, $4, NULL); }
485
484
        | PARS_FETCH_TOKEN PARS_ID_TOKEN PARS_INTO_TOKEN user_function_call
486
 
        { $$ = pars_fetch_statement(static_cast<sym_node_t *>($2), NULL, static_cast<sym_node_t *>($4)); }
 
485
                                { $$ = pars_fetch_statement($2, NULL, $4); }
487
486
;
488
487
 
489
488
column_def:
490
489
        PARS_ID_TOKEN type_name opt_column_len opt_unsigned opt_not_null
491
 
        { $$ = pars_column_def(static_cast<sym_node_t *>($1), static_cast<pars_res_word_t *>($2), static_cast<sym_node_t *>($3), $4, $5); }
 
490
                                { $$ = pars_column_def($1, $2, $3, $4, $5); }
492
491
;
493
492
 
494
493
column_def_list:
527
526
create_table:
528
527
        PARS_CREATE_TOKEN PARS_TABLE_TOKEN
529
528
        PARS_ID_TOKEN '(' column_def_list ')'
530
 
        not_fit_in_memory       { $$ = pars_create_table(static_cast<sym_node_t *>($3), static_cast<sym_node_t *>($5), $7); }
 
529
        not_fit_in_memory       { $$ = pars_create_table($3, $5, $7); }
531
530
;
532
531
 
533
532
column_list:
551
550
        clustered_def
552
551
        PARS_INDEX_TOKEN
553
552
        PARS_ID_TOKEN PARS_ON_TOKEN PARS_ID_TOKEN
554
 
        '(' column_list ')'     { $$ = pars_create_index(static_cast<pars_res_word_t *>($2), static_cast<pars_res_word_t *>($3), static_cast<sym_node_t *>($5), static_cast<sym_node_t *>($7), static_cast<sym_node_t *>($9)); }
 
553
        '(' column_list ')'     { $$ = pars_create_index($2, $3, $5, $7, $9); }
555
554
;
556
555
 
557
556
commit_statement:
574
573
 
575
574
parameter_declaration:
576
575
        PARS_ID_TOKEN PARS_IN_TOKEN type_name
577
 
        { $$ = pars_parameter_declaration(static_cast<sym_node_t *>($1),
578
 
                                                                  PARS_INPUT, static_cast<pars_res_word_t *>($3)); }
 
576
                                { $$ = pars_parameter_declaration($1,
 
577
                                                        PARS_INPUT, $3); }
579
578
        | PARS_ID_TOKEN PARS_OUT_TOKEN type_name
580
 
        { $$ = pars_parameter_declaration(static_cast<sym_node_t *>($1),
581
 
                                                                  PARS_OUTPUT, static_cast<pars_res_word_t *>($3)); }
 
579
                                { $$ = pars_parameter_declaration($1,
 
580
                                                        PARS_OUTPUT, $3); }
582
581
;
583
582
 
584
583
parameter_declaration_list:
590
589
 
591
590
variable_declaration:
592
591
        PARS_ID_TOKEN type_name ';'
593
 
        { $$ = pars_variable_declaration(static_cast<sym_node_t *>($1), static_cast<pars_res_word_t *>($2)); }
 
592
                                { $$ = pars_variable_declaration($1, $2); }
594
593
;
595
594
 
596
595
variable_declaration_list:
602
601
cursor_declaration:
603
602
        PARS_DECLARE_TOKEN PARS_CURSOR_TOKEN PARS_ID_TOKEN
604
603
        PARS_IS_TOKEN select_statement ';'
605
 
        { $$ = pars_cursor_declaration(static_cast<sym_node_t *>($3), static_cast<sel_node_t *>($5)); }
 
604
                                { $$ = pars_cursor_declaration($3, $5); }
606
605
;
607
606
 
608
607
function_declaration:
609
608
        PARS_DECLARE_TOKEN PARS_FUNCTION_TOKEN PARS_ID_TOKEN ';'
610
 
        { $$ = pars_function_declaration(static_cast<sym_node_t *>($3)); }
 
609
                                { $$ = pars_function_declaration($3); }
611
610
;
612
611
 
613
612
declaration:
628
627
        declaration_list
629
628
        PARS_BEGIN_TOKEN
630
629
        statement_list
631
 
        PARS_END_TOKEN          { $$ = pars_procedure_definition(static_cast<sym_node_t *>($2), static_cast<sym_node_t *>($4),
 
630
        PARS_END_TOKEN          { $$ = pars_procedure_definition($2, $4,
632
631
                                                                $10); }
633
632
;
634
633