public override Table Operate(Database db) { Table source = table.Value(db); List <Table.Row> toRemove = new List <Table.Row>(); foreach (Table.Row row in source.rows) { bool eval = this.eval.Evaluate(row) == "TRUE"; if (eval) { toRemove.Add(row); } } source.rows = source.rows.Except(toRemove).ToList(); return(source); }
public override Table Operate(Database db) { Table src = source.Value(db); Table.Row row = new Table.Row(); if (fields.Length != exp.Length) { throw new Exception("Missing values for insertion query"); } for (int i = 0; i < Math.Min(fields.Length, exp.Length); i++) { row.values[fields[i]] = (exp[i].Evaluate(row)); } src.rows.Add(row); return(src); }
public override Table Operate(Database db) { Table src = table.Value(db); foreach (Table.Row row in src.rows) { bool eval = this.exp.Evaluate(row) == "TRUE"; if (!eval) { continue; } for (int i = 0; i < fields.Length; i++) { row.values[fields[i]] = values[i].Evaluate(row); } } return(src); }
public override Table Value(Database db) { Table l = db.tables[left]; Table r = right.Value(db); List <Table.Column> cols = new List <Table.Column>(); for (int i = 0; i < l.columns.Length; i++) { Table.Column c = new Table.Column(); c.name = "left." + l.columns[i].name; cols.Add(c); } for (int i = 0; i < r.columns.Length; i++) { Table.Column c = new Table.Column(); c.name = "right." + r.columns[i].name; cols.Add(c); } Table j = new Table(cols.ToArray()); foreach (Table.Row row in l.rows) { foreach (Table.Row row2 in r.rows) { Table.Row jr = new Table.Row(); foreach (KeyValuePair <string, string> pair in row.values) { jr.values["left." + pair.Key] = pair.Value; } foreach (KeyValuePair <string, string> pair in row2.values) { jr.values["right." + pair.Key] = pair.Value; } j.rows.Add(jr); } } return(j); }
public override Table Operate(Database db) { Table src = source.Value(db); Table.Column[] col; if (!all) { col = new Table.Column[fields.Length]; for (int i = 0; i < fields.Length; i++) { col[i] = new Table.Column(); col[i].name = fields[i]; } } else { col = new Table.Column[src.columns.Length]; for (int i = 0; i < src.columns.Length; i++) { col[i] = new Table.Column(); col[i].name = src.columns[i].name; } } Table result = new Table(col); foreach (Table.Row row in src.rows) { bool eval = this.expr.Evaluate(row) == "TRUE"; if (eval) { result.rows.Add(row); } } return(result); }