~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_yacc.yy

  • Committer: Brian Aker
  • Date: 2009-05-21 19:15:01 UTC
  • mfrom: (991.1.12 for-brian)
  • Revision ID: brian@gaz-20090521191501-u5qe56byfubioj1r
Merge Stewart

Show diffs side-by-side

added added

removed removed

Lines of Context:
87
87
#include <drizzled/lex_string.h>
88
88
#include <drizzled/function/get_system_var.h>
89
89
#include <mysys/thr_lock.h>
 
90
#include <drizzled/message/table.pb.h>
90
91
 
91
92
class Table_ident;
92
93
class Item;
434
435
%token  BEFORE_SYM                    /* SQL-2003-N */
435
436
%token  BEGIN_SYM                     /* SQL-2003-R */
436
437
%token  BETWEEN_SYM                   /* SQL-2003-R */
437
 
%token  BIGINT                        /* SQL-2003-R */
 
438
%token  BIGINT_SYM                    /* SQL-2003-R */
438
439
%token  BINARY                        /* SQL-2003-R */
439
440
%token  BINLOG_SYM
440
441
%token  BIN_NUM
493
494
%token  DATABASES
494
495
%token  DATAFILE_SYM
495
496
%token  DATA_SYM                      /* SQL-2003-N */
496
 
%token  DATETIME
 
497
%token  DATETIME_SYM
497
498
%token  DATE_ADD_INTERVAL             /* MYSQL-FUNC */
498
499
%token  DATE_SUB_INTERVAL             /* MYSQL-FUNC */
499
500
%token  DATE_SYM                      /* SQL-2003-R */
531
532
%token  ENDS_SYM
532
533
%token  END_OF_INPUT                  /* INTERNAL */
533
534
%token  ENGINE_SYM
534
 
%token  ENUM
 
535
%token  ENUM_SYM
535
536
%token  EQ                            /* OPERATOR */
536
537
%token  EQUAL_SYM                     /* OPERATOR */
537
538
%token  ERRORS
793
794
%token  TABLE_REF_PRIORITY
794
795
%token  TABLE_SYM                     /* SQL-2003-R */
795
796
%token  TABLE_CHECKSUM_SYM
796
 
%token  TEMPORARY                     /* SQL-2003-N */
 
797
%token  TEMPORARY_SYM                 /* SQL-2003-N */
797
798
%token  TEMPTABLE_SYM
798
799
%token  TERMINATED
799
800
%token  TEXT_STRING
800
801
%token  TEXT_SYM
801
802
%token  THAN_SYM
802
803
%token  THEN_SYM                      /* SQL-2003-R */
803
 
%token  TIMESTAMP                     /* SQL-2003-R */
 
804
%token  TIMESTAMP_SYM                 /* SQL-2003-R */
804
805
%token  TIMESTAMP_ADD
805
806
%token  TIMESTAMP_DIFF
806
807
%token  TO_SYM                        /* SQL-2003-R */
832
833
%token  VALUES                        /* SQL-2003-R */
833
834
%token  VALUE_SYM                     /* SQL-2003-R */
834
835
%token  VARBINARY
835
 
%token  VARCHAR                       /* SQL-2003-R */
 
836
%token  VARCHAR_SYM                   /* SQL-2003-R */
836
837
%token  VARIABLES
837
838
%token  VARIANCE_SYM
838
839
%token  VARYING                       /* SQL-2003-R */
1132
1133
            lex->create_info.db_type= ha_default_storage_engine(session);
1133
1134
            lex->create_info.default_table_charset= NULL;
1134
1135
            lex->name.str= 0;
1135
 
            lex->name.length= 0;
 
1136
 
 
1137
            drizzled::message::Table *proto=
 
1138
              lex->create_table_proto= new drizzled::message::Table();
 
1139
            
 
1140
            proto->set_name($5->table.str);
 
1141
            if($2 & HA_LEX_CREATE_TMP_TABLE)
 
1142
              proto->set_type(drizzled::message::Table::TEMPORARY);
 
1143
            else
 
1144
              proto->set_type(drizzled::message::Table::STANDARD);
 
1145
 
1136
1146
          }
1137
1147
          create2
1138
1148
          {
1139
1149
            LEX *lex= YYSession->lex;
1140
1150
            lex->current_select= &lex->select_lex; 
1141
 
            if (!lex->create_info.db_type)
1142
 
            {
1143
 
              lex->create_info.db_type= ha_default_storage_engine(YYSession);
1144
 
              push_warning_printf(YYSession, DRIZZLE_ERROR::WARN_LEVEL_WARN,
1145
 
                                  ER_WARN_USING_OTHER_HANDLER,
1146
 
                                  ER(ER_WARN_USING_OTHER_HANDLER),
1147
 
                                  ha_resolve_storage_engine_name(lex->create_info.db_type).c_str(),
1148
 
                                  $5->table.str);
1149
 
            }
 
1151
            assert(lex->create_info.db_type);
1150
1152
          }
1151
1153
        | CREATE build_method opt_unique INDEX_SYM ident key_alg 
1152
1154
          ON table_ident
1289
1291
        ;
1290
1292
 
1291
1293
table_option:
1292
 
          TEMPORARY { $$=HA_LEX_CREATE_TMP_TABLE; }
 
1294
          TEMPORARY_SYM { $$=HA_LEX_CREATE_TMP_TABLE; }
1293
1295
        ;
1294
1296
 
1295
1297
opt_if_not_exists:
1625
1627
          }
1626
1628
        | DATE_SYM
1627
1629
          { $$=DRIZZLE_TYPE_DATE; }
1628
 
        | TIMESTAMP
 
1630
        | TIMESTAMP_SYM
1629
1631
          { $$=DRIZZLE_TYPE_TIMESTAMP; }
1630
 
        | DATETIME
 
1632
        | DATETIME_SYM
1631
1633
          { $$=DRIZZLE_TYPE_DATETIME; }
1632
1634
        | BLOB_SYM
1633
1635
          {
1646
1648
          { $$=DRIZZLE_TYPE_NEWDECIMAL;}
1647
1649
        | FIXED_SYM float_options
1648
1650
          { $$=DRIZZLE_TYPE_NEWDECIMAL;}
1649
 
        | ENUM
 
1651
        | ENUM_SYM
1650
1652
          {Lex->interval_list.empty();}
1651
1653
          '(' string_list ')' opt_binary
1652
1654
          { $$=DRIZZLE_TYPE_ENUM; }
1663
1665
 
1664
1666
varchar:
1665
1667
          char VARYING {}
1666
 
        | VARCHAR {}
 
1668
        | VARCHAR_SYM {}
1667
1669
        ;
1668
1670
 
1669
1671
int_type:
1670
 
          INT_SYM   { $$=DRIZZLE_TYPE_LONG; }
1671
 
        | BIGINT    { $$=DRIZZLE_TYPE_LONGLONG; }
 
1672
          INT_SYM    { $$=DRIZZLE_TYPE_LONG; }
 
1673
        | BIGINT_SYM { $$=DRIZZLE_TYPE_LONGLONG; }
1672
1674
        ;
1673
1675
 
1674
1676
real_type:
3066
3068
          { $$= new (YYSession->mem_root) Item_func_right($3,$5); }
3067
3069
        | SECOND_SYM '(' expr ')'
3068
3070
          { $$= new (YYSession->mem_root) Item_func_second($3); }
3069
 
        | TIMESTAMP '(' expr ')'
 
3071
        | TIMESTAMP_SYM '(' expr ')'
3070
3072
          { $$= new (YYSession->mem_root) Item_datetime_typecast($3); }
3071
3073
        | TRIM '(' expr ')'
3072
3074
          { $$= new (YYSession->mem_root) Item_func_trim($3); }
3443
3445
          { $$=ITEM_CAST_CHAR; Lex->dec= 0; }
3444
3446
        | DATE_SYM
3445
3447
          { $$=ITEM_CAST_DATE; Lex->charset= NULL; Lex->dec=Lex->length= (char*)0; }
3446
 
        | DATETIME
 
3448
        | DATETIME_SYM
3447
3449
          { $$=ITEM_CAST_DATETIME; Lex->charset= NULL; Lex->dec=Lex->length= (char*)0; }
3448
3450
        | DECIMAL_SYM float_options
3449
3451
          { $$=ITEM_CAST_DECIMAL; Lex->charset= NULL; }
4439
4441
 
4440
4442
opt_temporary:
4441
4443
          /* empty */ { $$= 0; }
4442
 
        | TEMPORARY { $$= 1; }
 
4444
        | TEMPORARY_SYM { $$= 1; }
4443
4445
        ;
4444
4446
/*
4445
4447
** Insert : add new data to table
5223
5225
        | HEX_NUM { $$ = new Item_hex_string($1.str, $1.length);}
5224
5226
        | BIN_NUM { $$= new Item_bin_string($1.str, $1.length); }
5225
5227
        | DATE_SYM text_literal { $$ = $2; }
5226
 
        | TIMESTAMP text_literal { $$ = $2; }
 
5228
        | TIMESTAMP_SYM text_literal { $$ = $2; }
5227
5229
        ;
5228
5230
 
5229
5231
NUM_literal:
5550
5552
        | CUBE_SYM                 {}
5551
5553
        | DATA_SYM                 {}
5552
5554
        | DATAFILE_SYM             {}
5553
 
        | DATETIME                 {}
 
5555
        | DATETIME_SYM             {}
5554
5556
        | DATE_SYM                 {}
5555
5557
        | DAY_SYM                  {}
5556
5558
        | DELAY_KEY_WRITE_SYM      {}
5561
5563
        | DUPLICATE_SYM            {}
5562
5564
        | DYNAMIC_SYM              {}
5563
5565
        | ENDS_SYM                 {}
5564
 
        | ENUM                     {}
 
5566
        | ENUM_SYM                 {}
5565
5567
        | ENGINE_SYM               {}
5566
5568
        | ERRORS                   {}
5567
5569
        | ESCAPE_SYM               {}
5677
5679
        | TABLES                   {}
5678
5680
        | TABLE_CHECKSUM_SYM       {}
5679
5681
        | TABLESPACE               {}
5680
 
        | TEMPORARY                {}
 
5682
        | TEMPORARY_SYM            {}
5681
5683
        | TEMPTABLE_SYM            {}
5682
5684
        | TEXT_SYM                 {}
5683
5685
        | THAN_SYM                 {}
5684
5686
        | TRANSACTION_SYM          {}
5685
 
        | TIMESTAMP                {}
 
5687
        | TIMESTAMP_SYM            {}
5686
5688
        | TIMESTAMP_ADD            {}
5687
5689
        | TIMESTAMP_DIFF           {}
5688
5690
        | TYPES_SYM                {}