/// <summary>
        /// Performs analysis and returns a list of problems detected
        /// </summary>
        /// <param name="ruleExecutionContext">Contains the schema model and model element to analyze</param>
        /// <returns>
        /// The problems detected by the rule in the given element
        /// </returns>
        public override IList <SqlRuleProblem> Analyze(SqlRuleExecutionContext ruleExecutionContext)
        {
            var problems = new List <SqlRuleProblem>();
            var sqlObj   = ruleExecutionContext.ModelElement;

            if (sqlObj == null || sqlObj.IsWhiteListed())
            {
                return(problems);
            }

            var fragment = ruleExecutionContext.ScriptFragment.GetFragment(
                typeof(CreateProcedureStatement),
                typeof(CreateTriggerStatement));
            var visitor = new PredicateVisitor();

            fragment.Accept(visitor);

            var predicates = from o
                             in visitor.Statements
                             where o.Options == SetOptions.NoCount && o.IsOn
                             select o;

            var createToken = fragment.ScriptTokenStream.FirstOrDefault(t => t.TokenType == TSqlTokenType.Create);

            if (!predicates.Any() && Ignorables.ShouldNotIgnoreRule(fragment.ScriptTokenStream, RuleId, createToken.Line))
            {
                problems.Add(new SqlRuleProblem(Message, sqlObj));
            }
            return(problems);
        }
        /// <summary>
        /// Translates the specified expression.
        /// </summary>
        /// <param name="expression">The expression.</param>
        /// <param name="queryId">The query id.</param>
        /// <returns></returns>
        public static string Translate(Expression expression, out int?queryId)
        {
            var visitor = new PredicateVisitor();

            visitor.Visit(expression);
            queryId = visitor.QueryId;
            return(visitor.FilterExpression);
        }
Exemple #3
0
        public override void Visit(WhereClause node)
        {
            var predicateExpressionVisitor = new PredicateVisitor();

            node.Accept(predicateExpressionVisitor);
            multiClauseQuery = predicateExpressionVisitor.PredicatesFound;

            var childVisitor = new FunctionVisitor(VisitorCallback, multiClauseQuery);

            node.Accept(childVisitor);
        }
Exemple #4
0
        public override void Visit(JoinTableReference node)
        {
            var predicateExpressionVisitor = new PredicateVisitor();

            node.AcceptChildren(predicateExpressionVisitor);
            var multiClauseQuery = predicateExpressionVisitor.PredicatesFound;

            var joinVisitor = new JoinQueryVisitor(VisitorCallback, multiClauseQuery);

            node.AcceptChildren(joinVisitor);
        }
        /// <summary>
        /// Aligns the specified expression.
        /// </summary>
        /// <param name="expression">The expression.</param>
        /// <returns></returns>
        public static Expression Align(Expression expression)
        {
            var binaryExpressionVisitor = new PredicateVisitor();

            return(binaryExpressionVisitor.Visit(expression));
        }