public StraightJoin(ITableReference leftTableRef, ITableReference rightTableRef, IExpression onCondition) : base() { this.LeftTableRef = leftTableRef; this.RightTableRef = rightTableRef; this.OnCondition = onCondition; }
public NaturalJoin(bool isOuter, bool isLeft, ITableReference leftTableRef, ITableReference rightTableRef) { this.IsOuter = isOuter; this.IsLeft = isLeft; this.LeftTableRef = leftTableRef; this.RightTableRef = rightTableRef; }
public InnerJoin(ITableReference leftTableRef, ITableReference rightTableRef, IExpression onCondition, IList <string> usings) : base() { this.LeftTableRef = leftTableRef; this.RightTableRef = rightTableRef; this.OnCondition = onCondition; this.Usings = usings; }
public ImmutableTableReference(int id, T reference) { Identifier = id; _reference = reference ?? throw new ArgumentNullException(nameof(reference), "If a null TableReference is desired, use null instead."); _referenceBuilder = null; _database = null; }
public OuterJoin(bool isLeftJoin, ITableReference leftTableRef, ITableReference rightTableRef, IExpression onCondition, IList <string> usings) { this.IsLeftJoin = isLeftJoin; this.LeftTableRef = leftTableRef; this.RightTableRef = rightTableRef; this.OnCondition = onCondition; this.Usings = usings; }
private ITableReference BuildTableReference(ITableReference reference) { while (true) { IExpression on; List<string> usage; ITableReference temp; bool isOut = false, isLeft = true; switch (lexer.Token()) { case MySQLToken.KW_INNER: case MySQLToken.KW_CROSS: lexer.NextToken(); goto case MySQLToken.KW_JOIN; case MySQLToken.KW_JOIN: lexer.NextToken(); temp = TableFactor(); } } }
private static Type FigureOutTypeFor(string name, ITableReference tref) { return(tref.Table.GetProperties().First(p => p.Name == name).PropertyType); }
public StraightJoin(ITableReference leftTableRef, ITableReference rightTableRef) : this(leftTableRef, rightTableRef, null) { }
/// <summary> /// Resolves a table reference to a table listed in SourceTableReferences /// </summary> /// <param name="qs"></param> /// <param name="tr"></param> private void ResolveTableReference(QuerySpecification qs, ITableReference node) { // Try to resolve the table alias part of a table reference // If and alias or table name is specified, this can be done based on // the already collected table sources. // If no table or alias is specified and the current node is a column reference, // where the column is not a complex expression, resolution might be successful by // column name only. if (!node.TableReference.IsUndefined) { TableReference ntr = null; string alias = null; if (node.TableReference.Alias != null) { // if table alias found explicitly alias = node.TableReference.Alias; } else if (node.TableReference.DatasetName == null && node.TableReference.DatabaseName == null && node.TableReference.SchemaName == null && node.TableReference.DatabaseObjectName != null && qs.SourceTableReferences.ContainsKey(node.TableReference.DatabaseObjectName)) { // if only table name found and that's an alias alias = node.TableReference.DatabaseObjectName; } if (alias != null) { ntr = qs.SourceTableReferences[alias]; } else { // Check if dataset specified and make sure it's valid if (node.TableReference.DatasetName != null) { if (!schemaManager.Datasets.ContainsKey(node.TableReference.DatasetName)) { throw CreateException(ExceptionMessages.UnresolvableDatasetReference, null, node.TableReference.DatasetName, (Node)node); } } // if only a table name found and that's not an alias -> must be a table int q = 0; foreach (var key in qs.SourceTableReferences.Keys) { var tr = qs.SourceTableReferences[key]; if (tr.Compare(node.TableReference)) { if (q != 0) { throw CreateException(ExceptionMessages.AmbigousTableReference, null, node.TableReference.DatabaseObjectName, (Node)node); } ntr = tr; q++; } } } if (ntr == null) { throw CreateException(ExceptionMessages.UnresolvableTableReference, null, node.TableReference.DatabaseObjectName, (Node)node); } node.TableReference = ntr; } }
/// <summary> /// Resolves a table reference to a table listed in SourceTableReferences /// </summary> /// <param name="qs"></param> /// <param name="tr"></param> private void ResolveTableReference(QuerySpecification qs, ITableReference node) { // Try to resolve the table alias part of a table reference // If and alias or table name is specified, this can be done based on // the already collected table sources. // If no table or alias is specified and the current node is a column reference, // where the column is not a complex expression, resolution might be successful by // column name only. if (!node.TableReference.IsUndefined) { TableReference ntr = null; string alias = null; if (node.TableReference.Alias != null) { // if table alias found explicitly alias = node.TableReference.Alias; } else if (node.TableReference.DatasetName == null && node.TableReference.DatabaseName == null && node.TableReference.SchemaName == null && node.TableReference.DatabaseObjectName != null && qs.SourceTableReferences.ContainsKey(node.TableReference.DatabaseObjectName)) { // if only table name found and that's an alias alias = node.TableReference.DatabaseObjectName; } if (alias != null) { ntr = qs.SourceTableReferences[alias]; } else { // Check if dataset specified and make sure it's valid if (node.TableReference.DatasetName != null) { if (!schemaManager.Datasets.ContainsKey(node.TableReference.DatasetName)) { throw CreateException(ExceptionMessages.UnresolvableDatasetReference, null, node.TableReference.DatasetName, (Node)node); } } // if only a table name found and that's not an alias -> must be a table int q = 0; foreach (var tr in qs.SourceTableReferences.Values) { if (tr.Compare(node.TableReference)) { if (q != 0) { throw CreateException(ExceptionMessages.AmbigousTableReference, null, node.TableReference.DatabaseObjectName, (Node)node); } ntr = tr; q++; } } } if (ntr == null) { throw CreateException(ExceptionMessages.UnresolvableTableReference, null, node.TableReference.DatabaseObjectName, (Node)node); } node.TableReference = ntr; } }
public OuterJoin(bool isLeftJoin, ITableReference leftTableRef, ITableReference rightTableRef, IList <string> usings) : this(isLeftJoin, leftTableRef, rightTableRef, null, usings) { }
public OuterJoin(bool isLeftJoin, ITableReference leftTableRef, ITableReference rightTableRef, IExpression onCondition) : this(isLeftJoin, leftTableRef, rightTableRef, onCondition, null) { }
public EmployeeRepository(ITableReference<Employee> tableReference) { _tableReference = tableReference; }
public ImmutableTableReference(ITableReference <T> .ReferenceBuilder builder, int id, DatabaseConnection database) { Identifier = id; _referenceBuilder = builder ?? throw new ArgumentNullException(nameof(builder)); _database = database ?? throw new ArgumentNullException(nameof(database)); }
public InnerJoin(ITableReference leftTableRef, ITableReference rightTableRef, IList <string> usings) : this(leftTableRef, rightTableRef, null, usings) { }
public InnerJoin(ITableReference leftTableRef, ITableReference rightTableRef, IExpression onCondition) : this(leftTableRef, rightTableRef, onCondition, null) { }
public InnerJoin(ITableReference leftTableRef, ITableReference rightTableRef) : this(leftTableRef, rightTableRef, null, null) { }
public PunchRepository(ITableReference<Punch> tableReference) { _tableReference = tableReference; }
public static ValueNode Col(ITableReference r, string colDef) { return(ValueNode.NewColumn(new Tuple <string, Type, ITableReference>(colDef, FigureOutTypeFor(colDef, r), r))); }