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;
}
}