~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_yacc.yy

  • Committer: Brian Aker
  • Date: 2009-05-13 02:07:22 UTC
  • mfrom: (1008.1.5 merge)
  • Revision ID: brian@gaz-20090513020722-9nqehweityhn6ab0
Merge in refactoring around lock system

Show diffs side-by-side

added added

removed removed

Lines of Context:
508
508
%token  DECIMAL_SYM                   /* SQL-2003-R */
509
509
%token  DECLARE_SYM                   /* SQL-2003-R */
510
510
%token  DEFAULT                       /* SQL-2003-R */
511
 
%token  DELAYED_SYM
512
511
%token  DELAY_KEY_WRITE_SYM
513
512
%token  DELETE_SYM                    /* SQL-2003-R */
514
513
%token  DESC                          /* SQL-2003-N */
571
570
%token  HASH_SYM
572
571
%token  HAVING                        /* SQL-2003-R */
573
572
%token  HEX_NUM
574
 
%token  HIGH_PRIORITY
575
573
%token  HOST_SYM
576
574
%token  HOSTS_SYM
577
575
%token  HOUR_MICROSECOND_SYM
629
627
%token  LONG_NUM
630
628
%token  LONG_SYM
631
629
%token  LOOP_SYM
632
 
%token  LOW_PRIORITY
633
630
%token  LT                            /* OPERATOR */
634
631
%token  MATCH                         /* SQL-2003-R */
635
632
%token  MAX_ROWS
925
922
%type <choice> choice
926
923
 
927
924
%type <lock_type>
928
 
        replace_lock_option opt_low_priority insert_lock_option load_data_lock
 
925
        load_data_lock
929
926
 
930
927
%type <table_lock_info>
931
928
        table_lock_info
2632
2629
 
2633
2630
select_option:
2634
2631
          STRAIGHT_JOIN { Select->options|= SELECT_STRAIGHT_JOIN; }
2635
 
        | HIGH_PRIORITY
2636
 
          {
2637
 
            if (check_simple_select())
2638
 
              DRIZZLE_YYABORT;
2639
 
            Lex->lock_option= TL_READ_HIGH_PRIORITY;
2640
 
          }
2641
2632
        | DISTINCT         { Select->options|= SELECT_DISTINCT; }
2642
2633
        | SQL_SMALL_RESULT { Select->options|= SELECT_SMALL_RESULT; }
2643
2634
        | SQL_BIG_RESULT   { Select->options|= SELECT_BIG_RESULT; }
4480
4471
            /* for subselects */
4481
4472
            lex->lock_option= TL_READ;
4482
4473
          }
4483
 
          insert_lock_option
4484
4474
          opt_ignore insert2
4485
4475
          {
4486
 
            Select->set_lock_for_tables($3);
 
4476
            Select->set_lock_for_tables(TL_WRITE_CONCURRENT_INSERT);
4487
4477
            Lex->current_select= &Lex->select_lex;
4488
4478
          }
4489
4479
          insert_field_spec opt_insert_update
4498
4488
            lex->duplicates= DUP_REPLACE;
4499
4489
            mysql_init_select(lex);
4500
4490
          }
4501
 
          replace_lock_option insert2
 
4491
          insert2
4502
4492
          {
4503
 
            Select->set_lock_for_tables($3);
 
4493
            Select->set_lock_for_tables(TL_WRITE_DEFAULT);
4504
4494
            Lex->current_select= &Lex->select_lex;
4505
4495
          }
4506
4496
          insert_field_spec
4507
4497
          {}
4508
4498
        ;
4509
4499
 
4510
 
insert_lock_option:
4511
 
          /* empty */
4512
 
          {
4513
 
            $$= TL_WRITE_CONCURRENT_INSERT;
4514
 
          }
4515
 
        | LOW_PRIORITY  { $$= TL_WRITE_LOW_PRIORITY; }
4516
 
        | DELAYED_SYM   { $$= TL_WRITE_DEFAULT; }
4517
 
        | HIGH_PRIORITY { $$= TL_WRITE; }
4518
 
        ;
4519
 
 
4520
 
replace_lock_option:
4521
 
          opt_low_priority { $$= $1; }
4522
 
        | DELAYED_SYM { $$= TL_WRITE_DEFAULT; }
4523
 
        ;
4524
 
 
4525
4500
insert2:
4526
4501
          INTO insert_table {}
4527
4502
        | insert_table {}
4650
4625
            lex->lock_option= TL_UNLOCK; /* Will be set later */
4651
4626
            lex->duplicates= DUP_ERROR; 
4652
4627
          }
4653
 
          opt_low_priority opt_ignore join_table_list
 
4628
          opt_ignore join_table_list
4654
4629
          SET update_list
4655
4630
          {
4656
4631
            LEX *lex= Lex;
4668
4643
              be too pessimistic. We will decrease lock level if possible in
4669
4644
              mysql_multi_update().
4670
4645
            */
4671
 
            Select->set_lock_for_tables($3);
 
4646
            Select->set_lock_for_tables(TL_WRITE_DEFAULT);
4672
4647
          }
4673
4648
          where_clause opt_order_clause delete_limit_clause {}
4674
4649
        ;
4701
4676
          }
4702
4677
        ;
4703
4678
 
4704
 
opt_low_priority:
4705
 
          /* empty */ { $$= TL_WRITE_DEFAULT; }
4706
 
        | LOW_PRIORITY { $$= TL_WRITE_DEFAULT; }
4707
 
        ;
4708
 
 
4709
4679
/* Delete rows from a table */
4710
4680
 
4711
4681
delete:
4783
4753
 
4784
4754
opt_delete_option:
4785
4755
          QUICK        { Select->options|= OPTION_QUICK; }
4786
 
        | LOW_PRIORITY { Lex->lock_option= TL_WRITE_DEFAULT; }
4787
4756
        | IGNORE_SYM   { Lex->ignore= 1; }
4788
4757
        ;
4789
4758
 
5099
5068
          {
5100
5069
              $$= TL_WRITE_CONCURRENT_INSERT;
5101
5070
          }
5102
 
        | LOW_PRIORITY { $$= TL_WRITE_DEFAULT; }
5103
5071
        ;
5104
5072
 
5105
5073
opt_duplicate:
6002
5970
          $$.lock_timeout=       -1;
6003
5971
          $$.lock_transactional= false;
6004
5972
        }
6005
 
        | LOW_PRIORITY WRITE_SYM
6006
 
        {
6007
 
          $$.lock_type=          TL_WRITE_DEFAULT;
6008
 
          $$.lock_timeout=       -1;
6009
 
          $$.lock_transactional= false;
6010
 
        }
6011
5973
        | READ_SYM LOCAL_SYM
6012
5974
        {
6013
5975
          $$.lock_type=          TL_READ;