protected override void DoAction()

in Pixie/SqlParser.cs [203:340]


  protected override void DoAction(int action)
  {
    switch (action)
    {
      case 14: // createdb -> CREATE, DATABASE, database
{ this.SqlImplementation.CreateDatabase(value_stack.array[value_stack.top-1].stringValue); }
        break;
      case 15: // attachdb -> ATTACH, DATABASE, database
{ this.SqlImplementation.AttachDatabase(value_stack.array[value_stack.top-1].stringValue); }
        break;
      case 16: // detachdb -> DETACH, DATABASE
{ this.SqlImplementation.DetachDatabase(); }
        break;
      case 17: // createtable -> CREATE, TABLE, table, '(', columncreate_list, ')'
{ this.SqlImplementation.CreateTable(value_stack.array[value_stack.top-4].name, value_stack.array[value_stack.top-2].columndefs); }
        break;
      case 18: // columncreate_list -> columncreate
{
							yyval.columndefs = new List<ColumnDefinition>();
							yyval.columndefs.Add(value_stack.array[value_stack.top-1].columndef);
					}
        break;
      case 19: // columncreate_list -> columncreate_list, ',', columncreate
{
							yyval.columndefs = new List<ColumnDefinition>();
							yyval.columndefs.AddRange(value_stack.array[value_stack.top-3].columndefs);
							yyval.columndefs.Add(value_stack.array[value_stack.top-1].columndef);
					}
        break;
      case 20: // columncreate -> column, data_type
{
						yyval.columndef = new ColumnDefinition(value_stack.array[value_stack.top-2].name, value_stack.array[value_stack.top-1].coltyp);
					}
        break;
      case 21: // data_type -> BOOL
{ yyval.coltyp = ColumnType.Bool; }
        break;
      case 22: // data_type -> BYTE
{ yyval.coltyp = ColumnType.Byte; }
        break;
      case 23: // data_type -> SHORT
{ yyval.coltyp = ColumnType.Int16; }
        break;
      case 24: // data_type -> INT
{ yyval.coltyp = ColumnType.Int32; }
        break;
      case 25: // data_type -> LONG
{ yyval.coltyp = ColumnType.Int64; }
        break;
      case 26: // data_type -> TEXT
{ yyval.coltyp = ColumnType.Text; }
        break;
      case 27: // data_type -> BINARY
{ yyval.coltyp = ColumnType.Binary; }
        break;
      case 28: // data_type -> DATETIME
{ yyval.coltyp = ColumnType.DateTime; }
        break;
      case 29: // data_type -> GUID
{ yyval.coltyp = ColumnType.Guid; }
        break;
      case 30: // begin_trx -> BEGIN, opt_transaction
{ this.SqlImplementation.BeginTransaction(); }
        break;
      case 33: // commit_trx -> COMMIT, opt_transaction
{ this.SqlImplementation.CommitTransaction(); }
        break;
      case 34: // commit_trx -> END, opt_transaction
{ this.SqlImplementation.CommitTransaction(); }
        break;
      case 35: // rollback_trx -> ROLLBACK, opt_transaction
{ this.SqlImplementation.RollbackTransaction(); }
        break;
      case 36: // rollback_trx -> ROLLBACK, opt_transaction, TO, opt_savepoint, savepoint
{ this.SqlImplementation.RollbackToSavepoint(value_stack.array[value_stack.top-1].name); }
        break;
      case 39: // create_savepoint -> SAVEPOINT, savepoint
{ this.SqlImplementation.CreateSavepoint(value_stack.array[value_stack.top-1].name); }
        break;
      case 40: // release_savepoint -> RELEASE, opt_savepoint, savepoint
{ this.SqlImplementation.CommitSavepoint(value_stack.array[value_stack.top-1].name); }
        break;
      case 41: // insert -> INSERT, INTO, table, '(', columnname_list, ')', VALUES, '(', 
               //           value_list, ')'
{
							string tablename = value_stack.array[value_stack.top-8].name;
							string[] columnNames = value_stack.array[value_stack.top-6].columnNames.ToArray();
							object[] columnValues = value_stack.array[value_stack.top-2].columnValues.ToArray();
							
							if (columnNames.Length != columnValues.Length)
							{
								throw new EsentSqlParseException("Different number of column names and column values");
							}
							
							KeyValuePair<string, object>[] dataToSet = new KeyValuePair<string, object>[columnNames.Length];
							for (int i = 0; i < columnNames.Length; ++i)
							{
								dataToSet[i] = new KeyValuePair<string, object>( columnNames[i], columnValues[i] );
							}														
							
							this.SqlImplementation.InsertRecord(tablename, dataToSet);
					}
        break;
      case 42: // columnname_list -> column
{
						yyval.columnNames = new List<string>();
						yyval.columnNames.Add(value_stack.array[value_stack.top-1].name);
					}
        break;
      case 43: // columnname_list -> columnname_list, ',', column
{
						yyval.columnNames = value_stack.array[value_stack.top-3].columnNames;
						yyval.columnNames.Add(value_stack.array[value_stack.top-1].name);
					}
        break;
      case 44: // value_list -> value
{
						yyval.columnValues = new List<object>();
						yyval.columnValues.Add(value_stack.array[value_stack.top-1].value);
					}
        break;
      case 45: // value_list -> value_list, ',', value
{
						yyval.columnValues = value_stack.array[value_stack.top-3].columnValues;
						yyval.columnValues.Add(value_stack.array[value_stack.top-1].value);
					}
        break;
      case 46: // value -> STRING
{ yyval.value = value_stack.array[value_stack.top-1].stringValue; }
        break;
      case 47: // value -> INTEGER
{ yyval.value = value_stack.array[value_stack.top-1].intValue; }
        break;
      case 48: // value -> REAL_NUMBER
{ yyval.value = value_stack.array[value_stack.top-1].realValue; }
        break;
    }
  }