~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_yacc.yy

  • Committer: Lee Bieber
  • Date: 2011-03-18 04:10:25 UTC
  • mfrom: (2241.1.2 build)
  • Revision ID: kalebral@gmail.com-20110318041025-1xoj1azy6zobhnbm
Merge Stewart - refactoring of default values
Merge Olaf - more refactoring

Show diffs side-by-side

added added

removed removed

Lines of Context:
40
40
#include <drizzled/parser.h>
41
41
#include <drizzled/session.h>
42
42
#include <drizzled/alter_column.h>
43
 
#include <drizzled/alter_drop.h>
44
43
#include <drizzled/alter_info.h>
 
44
#include <drizzled/message/alter_table.pb.h>
45
45
#include <drizzled/item/subselect.h>
46
46
#include <drizzled/table_ident.h>
47
47
 
154
154
  drizzled::st_lex *lex;
155
155
  drizzled::index_hint_type index_hint;
156
156
  drizzled::enum_filetype filetype;
157
 
  drizzled::ha_build_method build_method;
158
157
  drizzled::message::Table::ForeignKeyConstraint::ForeignKeyOption m_fk_option;
159
158
  drizzled::execute_string_t execute_string;
160
159
}
732
731
 
733
732
%type <boolfunc2creator> comp_op
734
733
 
735
 
%type <build_method> build_method
736
 
 
737
734
%type <NONE>
738
735
        query verb_clause create select drop insert replace insert2
739
736
        insert_values update delete truncate rename
869
866
          }
870
867
        | CREATE build_method
871
868
          {
872
 
            Lex.statement= new statement::CreateIndex(YYSession, $2);
 
869
            Lex.statement= new statement::CreateIndex(YYSession);
873
870
          }
874
871
          opt_unique INDEX_SYM ident key_alg ON table_ident '(' key_list ')' key_options
875
872
          {
1773
1770
alter:
1774
1771
          ALTER_SYM build_method opt_ignore TABLE_SYM table_ident
1775
1772
          {
1776
 
            statement::AlterTable *statement= new statement::AlterTable(YYSession, $5, $2);
 
1773
            statement::AlterTable *statement= new statement::AlterTable(YYSession, $5);
1777
1774
            Lex.statement= statement;
1778
1775
            Lex.duplicates= DUP_ERROR;
1779
1776
            if (not Lex.select_lex.add_table_to_list(YYSession, $5, NULL, TL_OPTION_UPDATING))
1803
1800
          /* empty */
1804
1801
        | DISCARD TABLESPACE
1805
1802
          {
1806
 
            statement::AlterTable *statement= (statement::AlterTable *)Lex.statement;
1807
 
            statement->alter_info.tablespace_op= DISCARD_TABLESPACE;
 
1803
            message::AlterTable::AlterTableOperation *alter_operation;
 
1804
            alter_operation= Lex.alter_table()->add_operations();
 
1805
            alter_operation->set_operation(message::AlterTable::AlterTableOperation::DISCARD_TABLESPACE);
1808
1806
          }
1809
1807
        | IMPORT TABLESPACE
1810
1808
          {
1811
 
            statement::AlterTable *statement= (statement::AlterTable *)Lex.statement;
1812
 
            statement->alter_info.tablespace_op= IMPORT_TABLESPACE;
 
1809
            message::AlterTable::AlterTableOperation *alter_operation;
 
1810
            alter_operation= Lex.alter_table()->add_operations();
 
1811
            alter_operation->set_operation(message::AlterTable::AlterTableOperation::IMPORT_TABLESPACE);
1813
1812
          }
1814
1813
        | alter_list
1815
1814
        ;
1817
1816
build_method:
1818
1817
        /* empty */
1819
1818
          {
1820
 
            $$= HA_BUILD_DEFAULT;
 
1819
            Lex.alter_table()->set_build_method(message::AlterTable::BUILD_DEFAULT);
1821
1820
          }
1822
1821
        | ONLINE_SYM
1823
1822
          {
1824
 
            $$= HA_BUILD_ONLINE;
 
1823
            Lex.alter_table()->set_build_method(message::AlterTable::BUILD_ONLINE);
1825
1824
          }
1826
1825
        | OFFLINE_SYM
1827
1826
          {
1828
 
            $$= HA_BUILD_OFFLINE;
 
1827
            Lex.alter_table()->set_build_method(message::AlterTable::BUILD_OFFLINE);
1829
1828
          }
1830
1829
        ;
1831
1830
 
1898
1897
          {
1899
1898
            statement::AlterTable *statement= (statement::AlterTable *)Lex.statement;
1900
1899
 
1901
 
            statement->alter_info.drop_list.push_back(AlterDrop(AlterDrop::COLUMN, $3.str));
1902
1900
            statement->alter_info.flags.set(ALTER_DROP_COLUMN);
 
1901
            message::AlterTable::AlterTableOperation *operation;
 
1902
            operation= Lex.alter_table()->add_operations();
 
1903
            operation->set_operation(message::AlterTable::AlterTableOperation::DROP_COLUMN);
 
1904
            operation->set_drop_name($3.str);
1903
1905
          }
1904
1906
        | DROP FOREIGN KEY_SYM opt_ident
1905
1907
          {
1917
1919
          {
1918
1920
            statement::AlterTable *statement= (statement::AlterTable *)Lex.statement;
1919
1921
 
1920
 
            statement->alter_info.keys_onoff= DISABLE;
1921
1922
            statement->alter_info.flags.set(ALTER_KEYS_ONOFF);
 
1923
 
 
1924
            message::AlterTable::AlterKeysOnOff *alter_keys_operation;
 
1925
            alter_keys_operation= Lex.alter_table()->mutable_alter_keys_onoff();
 
1926
            alter_keys_operation->set_enable(false);
1922
1927
          }
1923
1928
        | ENABLE_SYM KEYS
1924
1929
          {
1925
1930
            statement::AlterTable *statement= (statement::AlterTable *)Lex.statement;
1926
1931
 
1927
 
            statement->alter_info.keys_onoff= ENABLE;
1928
1932
            statement->alter_info.flags.set(ALTER_KEYS_ONOFF);
 
1933
            message::AlterTable::AlterKeysOnOff *alter_keys_operation;
 
1934
            alter_keys_operation= Lex.alter_table()->mutable_alter_keys_onoff();
 
1935
            alter_keys_operation->set_enable(true);
1929
1936
          }
1930
1937
        | ALTER_SYM opt_column field_ident SET_SYM DEFAULT signed_literal
1931
1938
          {
1961
1968
 
1962
1969
            Lex.name= $3->table;
1963
1970
            statement->alter_info.flags.set(ALTER_RENAME);
 
1971
 
 
1972
            message::AlterTable::RenameTable *rename_operation;
 
1973
            rename_operation= Lex.alter_table()->mutable_rename();
 
1974
            rename_operation->set_to_schema(Lex.select_lex.db);
 
1975
            rename_operation->set_to_name(Lex.name.str);
1964
1976
          }
1965
1977
        | CONVERT_SYM TO_SYM collation_name_or_default
1966
1978
          {
4151
4163
            statement::DropIndex *statement= new statement::DropIndex(YYSession);
4152
4164
            Lex.statement= statement;
4153
4165
            statement->alter_info.flags.set(ALTER_DROP_INDEX);
4154
 
            statement->alter_info.build_method= $2;
4155
 
            statement->alter_info.drop_list.push_back(AlterDrop(AlterDrop::KEY, $4.str));
 
4166
 
4156
4167
            if (not Lex.current_select->add_table_to_list(Lex.session, $6, NULL,
4157
4168
                                                          TL_OPTION_UPDATING))
4158
4169
              DRIZZLE_YYABORT;
 
4170
 
 
4171
            message::AlterTable::AlterTableOperation *operation;
 
4172
            operation= Lex.alter_table()->add_operations();
 
4173
            operation->set_operation(message::AlterTable::AlterTableOperation::DROP_KEY);
 
4174
            operation->set_drop_name($4.str);
 
4175
 
4159
4176
          }
4160
4177
        | DROP DATABASE if_exists schema_name
4161
4178
          {