Пример #1
0
        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);
            }
        }
Пример #2
0
 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);
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
 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;
 }