private void AddJoin(QualifiedJoinType joinType, List <RbacSelectColumn> columns) { for (int c = 0; c < columns.Count; c += 2) { RbacJoin ajoin = new RbacJoin(); ajoin.JoinType = (RbacJoinTypes)Enum.Parse(typeof(RbacJoinTypes), joinType.ToString(), true); ajoin.FromTableName = columns[c].Table.Name; ajoin.FromTableAlias = columns[c].Table.Alias; ajoin.FromTableColumn = columns[c].Name; ajoin.WithTableName = columns[c + 1].Table.Name; ajoin.WithTableAlias = columns[c + 1].Table.Alias; ajoin.WithTableColumn = columns[c + 1].Name; if (string.IsNullOrEmpty(ajoin.FromTableName)) { RbacTable table = Context.User.Role.CrudPermissions.Find(ajoin.FromTableAlias); ajoin.FromTableName = table.Name; } if (string.IsNullOrEmpty(ajoin.WithTableName)) { RbacTable table = Context.User.Role.CrudPermissions.Find(ajoin.FromTableAlias); ajoin.WithTableName = table.Name; } JoinClauses.Add(ajoin); } }
public OuterJoinedTable(QualifiedJoinType joinType, IResultTable first, IResultTable second, Func <IResultRow, bool> predicate) { this.first = first; this.second = second; this.joinType = joinType; Columns = JoinColumns(first, second); Records = JoinRecords(first, second, predicate); }
public static string JoinType(QualifiedJoinType jType, JoinHint jHint) { string joinTypeStr; switch (jType) { case QualifiedJoinType.FullOuter: joinTypeStr = "FULL OUTER "; break; case QualifiedJoinType.Inner: joinTypeStr = "INNER "; break; case QualifiedJoinType.LeftOuter: joinTypeStr = "LEFT OUTER "; break; case QualifiedJoinType.RightOuter: joinTypeStr = "RIGHT OUTER "; break; default: throw new GraphViewException("Invalid join type"); } switch (jHint) { case JoinHint.Hash: joinTypeStr += "HASH "; break; case JoinHint.Loop: joinTypeStr += "LOOP "; break; case JoinHint.Merge: joinTypeStr += "MERGE "; break; default: break; } joinTypeStr += "JOIN"; return(joinTypeStr); }
internal static gsJoinType ToJoinType(this QualifiedJoinType qualifiedJoinType) { switch (qualifiedJoinType) { case QualifiedJoinType.Inner: return(gsJoinType.Inner); case QualifiedJoinType.LeftOuter: return(gsJoinType.Left); case QualifiedJoinType.RightOuter: return(gsJoinType.Right); case QualifiedJoinType.FullOuter: return(gsJoinType.Full); default: return(gsJoinType.Inner); } }
public static string JoinType(QualifiedJoinType jType, JoinHint jHint) { string joinTypeStr; switch (jType) { case QualifiedJoinType.FullOuter: joinTypeStr = "FULL OUTER "; break; case QualifiedJoinType.Inner: joinTypeStr = "INNER "; break; case QualifiedJoinType.LeftOuter: joinTypeStr = "LEFT OUTER "; break; case QualifiedJoinType.RightOuter: joinTypeStr = "RIGHT OUTER "; break; default: throw new GraphViewException("Invalid join type"); } switch (jHint) { case JoinHint.Hash: joinTypeStr += "HASH "; break; case JoinHint.Loop: joinTypeStr += "LOOP "; break; case JoinHint.Merge: joinTypeStr += "MERGE "; break; default: break; } joinTypeStr += "JOIN"; return joinTypeStr; }