~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_yacc.yy

  • Committer: Mats Kindahl
  • Date: 2008-08-07 06:24:22 UTC
  • mfrom: (265 drizzle)
  • mto: (264.1.19 codestyle)
  • mto: This revision was merged to the branch mainline in revision 266.
  • Revision ID: mats@mysql.com-20080807062422-20kyv6ssp4grfm0s
Manual merge of lp:drizzle into ~mkindahl/remove-mem-casts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
42
42
#include "lex_symbol.h"
43
43
#include "item_create.h"
44
44
#include <storage/myisam/myisam.h>
 
45
#include <drizzled/drizzled_error_messages.h>
45
46
 
46
47
int yylex(void *yylval, void *yythd);
47
48
 
364
365
  Currently there are 100 shift/reduce conflicts.
365
366
  We should not introduce new conflicts any more.
366
367
*/
367
 
%expect 100
 
368
%expect 95
368
369
 
369
370
/*
370
371
   Comments for TOKENS.
394
395
%token  ALL                           /* SQL-2003-R */
395
396
%token  ALTER                         /* SQL-2003-R */
396
397
%token  ANALYZE_SYM
397
 
%token  AND_AND_SYM                   /* OPERATOR */
398
398
%token  AND_SYM                       /* SQL-2003-R */
399
399
%token  ANY_SYM                       /* SQL-2003-R */
400
400
%token  AS                            /* SQL-2003-R */
414
414
%token  BINARY                        /* SQL-2003-R */
415
415
%token  BINLOG_SYM
416
416
%token  BIN_NUM
417
 
%token  BIT_AND                       /* MYSQL-FUNC */
418
 
%token  BIT_OR                        /* MYSQL-FUNC */
419
417
%token  BIT_SYM                       /* MYSQL-FUNC */
420
 
%token  BIT_XOR                       /* MYSQL-FUNC */
421
418
%token  BLOB_SYM                      /* SQL-2003-R */
 
419
%token  BLOCK_SIZE_SYM
422
420
%token  BLOCK_SYM
423
421
%token  BOOLEAN_SYM                   /* SQL-2003-R */
424
422
%token  BOOL_SYM
439
437
%token  CHAR_SYM                      /* SQL-2003-R */
440
438
%token  CHECKSUM_SYM
441
439
%token  CHECK_SYM                     /* SQL-2003-R */
442
 
%token  CIPHER_SYM
443
 
%token  CLIENT_SYM
444
440
%token  CLOSE_SYM                     /* SQL-2003-R */
445
441
%token  COALESCE                      /* SQL-2003-N */
446
 
%token  CODE_SYM
447
442
%token  COLLATE_SYM                   /* SQL-2003-R */
448
443
%token  COLLATION_SYM                 /* SQL-2003-N */
449
444
%token  COLUMNS
462
457
%token  CONTAINS_SYM                  /* SQL-2003-N */
463
458
%token  CONTEXT_SYM
464
459
%token  CONTINUE_SYM                  /* SQL-2003-R */
465
 
%token  CONTRIBUTORS_SYM
466
460
%token  CONVERT_SYM                   /* SQL-2003-N */
467
461
%token  COUNT_SYM                     /* SQL-2003-N */
468
 
%token  CPU_SYM
469
462
%token  CREATE                        /* SQL-2003-R */
470
463
%token  CROSS                         /* SQL-2003-R */
471
464
%token  CUBE_SYM                      /* SQL-2003-R */
491
484
%token  DECIMAL_SYM                   /* SQL-2003-R */
492
485
%token  DECLARE_SYM                   /* SQL-2003-R */
493
486
%token  DEFAULT                       /* SQL-2003-R */
494
 
%token  DEFINER_SYM
495
487
%token  DELAYED_SYM
496
488
%token  DELAY_KEY_WRITE_SYM
497
489
%token  DELETE_SYM                    /* SQL-2003-R */
498
490
%token  DESC                          /* SQL-2003-N */
499
491
%token  DESCRIBE                      /* SQL-2003-R */
500
 
%token  DES_KEY_FILE
501
492
%token  DETERMINISTIC_SYM             /* SQL-2003-R */
502
493
%token  DIRECTORY_SYM
503
494
%token  DISABLE_SYM
517
508
%token  END                           /* SQL-2003-R */
518
509
%token  ENDS_SYM
519
510
%token  END_OF_INPUT                  /* INTERNAL */
520
 
%token  ENGINES_SYM
521
511
%token  ENGINE_SYM
522
512
%token  ENUM
523
513
%token  EQ                            /* OPERATOR */
526
516
%token  ESCAPED
527
517
%token  ESCAPE_SYM                    /* SQL-2003-R */
528
518
%token  EVENTS_SYM
529
 
%token  EVERY_SYM                     /* SQL-2003-N */
530
519
%token  EXCLUSIVE_SYM
531
520
%token  EXISTS                        /* SQL-2003-R */
532
521
%token  EXIT_SYM
587
576
%token  INTO                          /* SQL-2003-R */
588
577
%token  INT_SYM                       /* SQL-2003-R */
589
578
%token  IN_SYM                        /* SQL-2003-R */
590
 
%token  IO_SYM
591
 
%token  IPC_SYM
592
579
%token  IS                            /* SQL-2003-R */
593
580
%token  ISOLATION                     /* SQL-2003-R */
594
 
%token  ISSUER_SYM
595
581
%token  ITERATE_SYM
596
582
%token  JOIN_SYM                      /* SQL-2003-R */
597
583
%token  KEYS
675
661
%token  NULL_SYM                      /* SQL-2003-R */
676
662
%token  NUM
677
663
%token  NUMERIC_SYM                   /* SQL-2003-R */
678
 
%token  NVARCHAR_SYM
679
664
%token  OFFLINE_SYM
680
665
%token  OFFSET_SYM
681
666
%token  ON                            /* SQL-2003-R */
697
682
%token  PAGE_CHECKSUM_SYM
698
683
%token  PARAM_MARKER
699
684
%token  PARTIAL                       /* SQL-2003-N */
700
 
%token  PASSWORD
701
685
%token  PHASE_SYM
702
686
%token  PLUGINS_SYM
703
687
%token  PLUGIN_SYM
704
688
%token  POINT_SYM
705
 
%token  POLYGON
706
689
%token  PORT_SYM
707
690
%token  POSITION_SYM                  /* SQL-2003-N */
708
691
%token  PRECISION                     /* SQL-2003-R */
710
693
%token  PRIMARY_SYM                   /* SQL-2003-R */
711
694
%token  PROCESS
712
695
%token  PROCESSLIST_SYM
713
 
%token  PROFILE_SYM
714
 
%token  PROFILES_SYM
715
696
%token  PURGE
716
697
%token  QUARTER_SYM
717
698
%token  QUERY_SYM
772
753
%token  SET                           /* SQL-2003-R */
773
754
%token  SET_VAR
774
755
%token  SHARE_SYM
775
 
%token  SHIFT_LEFT                    /* OPERATOR */
776
 
%token  SHIFT_RIGHT                   /* OPERATOR */
777
756
%token  SHOW
778
757
%token  SHUTDOWN
779
758
%token  SIGNED_SYM
894
873
%left   SET_VAR
895
874
%left   OR_SYM
896
875
%left   XOR
897
 
%left   AND_SYM AND_AND_SYM
 
876
%left   AND_SYM
898
877
%left   BETWEEN_SYM CASE_SYM WHEN_SYM THEN_SYM ELSE
899
878
%left   EQ EQUAL_SYM GE GT_SYM LE LT NE IS LIKE IN_SYM
900
 
%left   '|'
901
 
%left   '&'
902
 
%left   SHIFT_LEFT SHIFT_RIGHT
903
879
%left   '-' '+'
904
880
%left   '*' '/' '%' DIV_SYM MOD_SYM
905
 
%left   '^'
906
 
%left   NEG '~'
 
881
%left   NEG
907
882
%right  NOT_SYM
908
883
%right  BINARY COLLATE_SYM
909
884
%left  INTERVAL_SYM
1083
1058
 
1084
1059
%type <NONE>
1085
1060
        '-' '+' '*' '/' '%' '(' ')'
1086
 
        ',' '!' '{' '}' '&' '|' AND_SYM OR_SYM BETWEEN_SYM CASE_SYM
1087
 
        THEN_SYM WHEN_SYM DIV_SYM MOD_SYM AND_AND_SYM DELETE_SYM
 
1061
        ',' '!' '{' '}' AND_SYM OR_SYM BETWEEN_SYM CASE_SYM
 
1062
        THEN_SYM WHEN_SYM DIV_SYM MOD_SYM DELETE_SYM
1088
1063
%%
1089
1064
 
1090
1065
/*
1226
1201
            }
1227
1202
            if (Lex->mi.heartbeat_period > slave_net_timeout)
1228
1203
            {
1229
 
              push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN,
 
1204
              push_warning_printf(YYTHD, DRIZZLE_ERROR::WARN_LEVEL_WARN,
1230
1205
                                  ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE,
1231
1206
                                  ER(ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE),
1232
1207
                                  " exceeds the value of `slave_net_timeout' sec.",
1237
1212
            {
1238
1213
              if (Lex->mi.heartbeat_period != 0.0)
1239
1214
              {
1240
 
                push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN,
 
1215
                push_warning_printf(YYTHD, DRIZZLE_ERROR::WARN_LEVEL_WARN,
1241
1216
                                    ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE,
1242
1217
                                    ER(ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE),
1243
1218
                                    " is less than 1 msec.",
1315
1290
            if (!lex->create_info.db_type)
1316
1291
            {
1317
1292
              lex->create_info.db_type= ha_default_handlerton(YYTHD);
1318
 
              push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN,
 
1293
              push_warning_printf(YYTHD, DRIZZLE_ERROR::WARN_LEVEL_WARN,
1319
1294
                                  ER_WARN_USING_OTHER_HANDLER,
1320
1295
                                  ER(ER_WARN_USING_OTHER_HANDLER),
1321
1296
                                  ha_resolve_storage_engine_name(lex->create_info.db_type),
1509
1484
            Lex->create_info.avg_row_length=$3;
1510
1485
            Lex->create_info.used_fields|= HA_CREATE_USED_AVG_ROW_LENGTH;
1511
1486
          }
 
1487
        | BLOCK_SIZE_SYM opt_equal ulong_num    
 
1488
          { 
 
1489
            Lex->create_info.block_size= $3; 
 
1490
            Lex->create_info.used_fields|= HA_CREATE_USED_BLOCK_SIZE;
 
1491
          }
1512
1492
        | COMMENT_SYM opt_equal TEXT_STRING_sys
1513
1493
          {
1514
1494
            Lex->create_info.comment=$3;
1826
1806
        | char '(' NUM ')' opt_binary
1827
1807
          {
1828
1808
            Lex->length=$3.str;
1829
 
            $$=DRIZZLE_TYPE_STRING;
 
1809
            $$=DRIZZLE_TYPE_VARCHAR;
1830
1810
          }
1831
1811
        | char opt_binary
1832
1812
          {
1833
1813
            Lex->length=(char*) "1";
1834
 
            $$=DRIZZLE_TYPE_STRING;
 
1814
            $$=DRIZZLE_TYPE_VARCHAR;
1835
1815
          }
1836
1816
        | varchar '(' NUM ')' opt_binary
1837
1817
          {
2447
2427
                lex->copy_db_to(&lex->name.str, &lex->name.length))
2448
2428
              MYSQL_YYABORT;
2449
2429
          }
2450
 
        | ALTER DATABASE ident UPGRADE_SYM DATA_SYM DIRECTORY_SYM NAME_SYM
2451
 
          {
2452
 
            LEX *lex= Lex;
2453
 
            lex->sql_command= SQLCOM_ALTER_DB_UPGRADE;
2454
 
            lex->name= $3;
2455
 
          }
2456
2430
        ;
2457
2431
 
2458
2432
ident_or_empty:
3349
3323
        ;
3350
3324
 
3351
3325
bit_expr:
3352
 
          bit_expr '|' bit_expr %prec '|'
3353
 
          { $$= new Item_func_bit_or($1,$3); }
3354
 
        | bit_expr '&' bit_expr %prec '&'
3355
 
          { $$= new Item_func_bit_and($1,$3); }
3356
 
        | bit_expr SHIFT_LEFT bit_expr %prec SHIFT_LEFT
3357
 
          { $$= new Item_func_shift_left($1,$3); }
3358
 
        | bit_expr SHIFT_RIGHT bit_expr %prec SHIFT_RIGHT
3359
 
          { $$= new Item_func_shift_right($1,$3); }
3360
 
        | bit_expr '+' bit_expr %prec '+'
 
3326
          bit_expr '+' bit_expr %prec '+'
3361
3327
          { $$= new Item_func_plus($1,$3); }
3362
3328
        | bit_expr '-' bit_expr %prec '-'
3363
3329
          { $$= new Item_func_minus($1,$3); }
3375
3341
          { $$= new Item_func_int_div($1,$3); }
3376
3342
        | bit_expr MOD_SYM bit_expr %prec MOD_SYM
3377
3343
          { $$= new Item_func_mod($1,$3); }
3378
 
        | bit_expr '^' bit_expr
3379
 
          { $$= new Item_func_bit_xor($1,$3); }
3380
3344
        | simple_expr
3381
3345
        ;
3382
3346
 
3386
3350
 
3387
3351
and:
3388
3352
          AND_SYM
3389
 
       | AND_AND_SYM
3390
3353
       ;
3391
3354
 
3392
3355
not:
3427
3390
        | '+' simple_expr %prec NEG { $$= $2; }
3428
3391
        | '-' simple_expr %prec NEG
3429
3392
          { $$= new (YYTHD->mem_root) Item_func_neg($2); }
3430
 
        | '~' simple_expr %prec NEG
3431
 
          { $$= new (YYTHD->mem_root) Item_func_bit_neg($2); }
3432
3393
        | '(' subselect ')'
3433
3394
          { 
3434
3395
            $$= new (YYTHD->mem_root) Item_singlerow_subselect($2);
3691
3652
          { $$= new (YYTHD->mem_root) Item_func_microsecond($3); }
3692
3653
        | MOD_SYM '(' expr ',' expr ')'
3693
3654
          { $$ = new (YYTHD->mem_root) Item_func_mod( $3, $5); }
3694
 
        | PASSWORD '(' expr ')'
3695
 
          {
3696
 
            THD *thd= YYTHD;
3697
 
            Item* i1;
3698
 
            i1= new (thd->mem_root) Item_func_password($3);
3699
 
            $$= i1;
3700
 
          }
3701
3655
        | QUARTER_SYM '(' expr ')'
3702
3656
          { $$ = new (YYTHD->mem_root) Item_func_quarter($3); }
3703
3657
        | REPEAT_SYM '(' expr ',' expr ')'
3793
3747
                }
3794
3748
 
3795
3749
                item= Create_udf_func::s_singleton.create(thd, udf, $4);
 
3750
              } else {
 
3751
                /* fix for bug 250065, from Andrew Garner <muzazzi@gmail.com> */
 
3752
                my_error(ER_SP_DOES_NOT_EXIST, MYF(0), "FUNCTION", $1.str);
3796
3753
              }
3797
3754
            }
3798
3755
 
3846
3803
          { $$=new Item_sum_avg($3); }
3847
3804
        | AVG_SYM '(' DISTINCT in_sum_expr ')'
3848
3805
          { $$=new Item_sum_avg_distinct($4); }
3849
 
        | BIT_AND  '(' in_sum_expr ')'
3850
 
          { $$=new Item_sum_and($3); }
3851
 
        | BIT_OR  '(' in_sum_expr ')'
3852
 
          { $$=new Item_sum_or($3); }
3853
 
        | BIT_XOR  '(' in_sum_expr ')'
3854
 
          { $$=new Item_sum_xor($3); }
3855
3806
        | COUNT_SYM '(' opt_all '*' ')'
3856
3807
          { $$=new Item_sum_count(new Item_int((int32_t) 0L,1)); }
3857
3808
        | COUNT_SYM '(' in_sum_expr ')'
4596
4547
        ;
4597
4548
 
4598
4549
date_time_type:
4599
 
          DATE_SYM  {$$=MYSQL_TIMESTAMP_DATE;}
4600
 
        | TIME_SYM  {$$=MYSQL_TIMESTAMP_TIME;}
4601
 
        | DATETIME  {$$=MYSQL_TIMESTAMP_DATETIME;}
4602
 
        | TIMESTAMP {$$=MYSQL_TIMESTAMP_DATETIME;}
 
4550
          DATE_SYM  {$$=DRIZZLE_TIMESTAMP_DATE;}
 
4551
        | TIME_SYM  {$$=DRIZZLE_TIMESTAMP_TIME;}
 
4552
        | DATETIME  {$$=DRIZZLE_TIMESTAMP_DATETIME;}
 
4553
        | TIMESTAMP {$$=DRIZZLE_TIMESTAMP_DATETIME;}
4603
4554
        ;
4604
4555
 
4605
4556
table_alias:
5651
5602
          { Lex->type|= REFRESH_SLAVE; }
5652
5603
        | MASTER_SYM
5653
5604
          { Lex->type|= REFRESH_MASTER; }
5654
 
        | DES_KEY_FILE
5655
 
          { Lex->type|= REFRESH_DES_KEY_FILE; }
5656
5605
        | RESOURCES
5657
5606
          { Lex->type|= REFRESH_USER_RESOURCES; }
5658
5607
        ;
6398
6347
        | AVG_SYM                  {}
6399
6348
        | BINLOG_SYM               {}
6400
6349
        | BIT_SYM                  {}
 
6350
        | BLOCK_SIZE_SYM           {}
6401
6351
        | BLOCK_SYM                {}
6402
6352
        | BOOL_SYM                 {}
6403
6353
        | BOOLEAN_SYM              {}
6405
6355
        | CASCADED                 {}
6406
6356
        | CHAIN_SYM                {}
6407
6357
        | CHANGED                  {}
6408
 
        | CIPHER_SYM               {}
6409
 
        | CLIENT_SYM               {}
6410
6358
        | COALESCE                 {}
6411
 
        | CODE_SYM                 {}
6412
6359
        | COLLATION_SYM            {}
6413
6360
        | COLUMN_FORMAT_SYM        {}
6414
6361
        | COLUMNS                  {}
6420
6367
        | CONNECTION_SYM           {}
6421
6368
        | CONSISTENT_SYM           {}
6422
6369
        | CONTEXT_SYM              {}
6423
 
        | CONTRIBUTORS_SYM         {}
6424
 
        | CPU_SYM                  {}
6425
6370
        | CUBE_SYM                 {}
6426
6371
        | DATA_SYM                 {}
6427
6372
        | DATAFILE_SYM             {}
6428
6373
        | DATETIME                 {}
6429
6374
        | DATE_SYM                 {}
6430
6375
        | DAY_SYM                  {}
6431
 
        | DEFINER_SYM              {}
6432
6376
        | DELAY_KEY_WRITE_SYM      {}
6433
 
        | DES_KEY_FILE             {}
6434
6377
        | DIRECTORY_SYM            {}
6435
6378
        | DISABLE_SYM              {}
6436
6379
        | DISCARD                  {}
6440
6383
        | ENDS_SYM                 {}
6441
6384
        | ENUM                     {}
6442
6385
        | ENGINE_SYM               {}
6443
 
        | ENGINES_SYM              {}
6444
6386
        | ERRORS                   {}
6445
6387
        | ESCAPE_SYM               {}
6446
6388
        | EVENTS_SYM               {}
6447
 
        | EVERY_SYM                {}
6448
6389
        | EXCLUSIVE_SYM            {}
6449
6390
        | EXTENDED_SYM             {}
6450
6391
        | EXTENT_SIZE_SYM          {}
6466
6407
        | IMPORT                   {}
6467
6408
        | INDEXES                  {}
6468
6409
        | INITIAL_SIZE_SYM         {}
6469
 
        | IO_SYM                   {}
6470
 
        | IPC_SYM                  {}
6471
6410
        | ISOLATION                {}
6472
 
        | ISSUER_SYM               {}
6473
6411
        | INSERT_METHOD            {}
6474
6412
        | KEY_BLOCK_SIZE           {}
6475
6413
        | LAST_SYM                 {}
6515
6453
        | NODEGROUP_SYM            {}
6516
6454
        | NONE_SYM                 {}
6517
6455
        | NOWAIT_SYM               {}
6518
 
        | NVARCHAR_SYM             {}
6519
6456
        | OFFLINE_SYM              {}
6520
6457
        | OFFSET_SYM               {}
6521
6458
        | ONE_SHOT_SYM             {}
6525
6462
        | PAGE_SYM                 {}
6526
6463
        | PAGE_CHECKSUM_SYM        {}
6527
6464
        | PARTIAL                  {}
6528
 
        | PASSWORD                 {}
6529
6465
        | PHASE_SYM                {}
6530
6466
        | PLUGIN_SYM               {}
6531
6467
        | PLUGINS_SYM              {}
6533
6469
        | PREV_SYM                 {}
6534
6470
        | PROCESS                  {}
6535
6471
        | PROCESSLIST_SYM          {}
6536
 
        | PROFILE_SYM              {}
6537
 
        | PROFILES_SYM             {}
6538
6472
        | QUARTER_SYM              {}
6539
6473
        | QUERY_SYM                {}
6540
6474
        | QUICK                    {}