Example #1
0
            private void CheckJoinCondition(SqlExpression expr)
            {
                switch (expr.NodeType)
                {
                case SqlNodeType.EQ:
                case SqlNodeType.EQ2V:
                {
                    SqlBinary    binary2 = (SqlBinary)expr;
                    SqlColumnRef left    = binary2.Left as SqlColumnRef;
                    SqlColumnRef right   = binary2.Right as SqlColumnRef;
                    if ((left != null) && (right != null))
                    {
                        SqlColumn rootColumn = left.GetRootColumn();
                        SqlColumn column2    = right.GetRootColumn();
                        this.map[rootColumn] = column2;
                        this.map[column2]    = rootColumn;
                    }
                    return;
                }

                case SqlNodeType.And:
                {
                    SqlBinary binary = (SqlBinary)expr;
                    this.CheckJoinCondition(binary.Left);
                    this.CheckJoinCondition(binary.Right);
                    return;
                }
                }
            }
Example #2
0
            internal bool AreEquivalent(SqlExpression e1, SqlExpression e2)
            {
                SqlColumn column3;

                if (SqlComparer.AreEqual(e1, e2))
                {
                    return(true);
                }
                SqlColumnRef ref2 = e1 as SqlColumnRef;
                SqlColumnRef ref3 = e2 as SqlColumnRef;

                if ((ref2 == null) || (ref3 == null))
                {
                    return(false);
                }
                SqlColumn rootColumn = ref2.GetRootColumn();
                SqlColumn column2    = ref3.GetRootColumn();

                return(this.map.TryGetValue(rootColumn, out column3) && (column3 == column2));
            }