Exemple #1
0
 public void AddParameter(MatchCondition matchCondition, bool fullTextSearchEnabled)
 {
     if (matchCondition.Operator == LqlOperator.In || matchCondition.Operator == LqlOperator.NotIn)
     {
         AddInParameters(matchCondition.Object, matchCondition.Values);
     }
     else
     {
         AddParameter(matchCondition.Object, matchCondition.Value, fullTextSearchEnabled);
     }
 }
Exemple #2
0
        private void AddFullTextSearchClause(MatchCondition matchCondition, AdoQueryPayload queryPayload)
        {
            switch (matchCondition.Operator)
            {
                case LqlOperator.Like:
                    queryPayload.Append("CONTAINS(");
                    
                    break;
                case LqlOperator.NotLike:
                    queryPayload.Append("NOT CONTAINS(");
                    break;
                default:
                    throw new SqlGenerationException("LQL Operator not supported for Full Text Search: " + matchCondition.Operator);
            }

            queryPayload.Append(GetColumnName(matchCondition.Object));
            queryPayload.Append(", ");
            queryPayload.AddParameter(matchCondition, true);
            queryPayload.AppendLine(")");
        }
Exemple #3
0
        private void AddClause(MatchCondition matchCondition, AdoQueryPayload queryPayload)
        {
            queryPayload.Append(GetColumnName(matchCondition.Object));
            
            switch (matchCondition.Operator)
            {
                case LqlOperator.Equals:
                    queryPayload.Append(" = ");
                    queryPayload.AddParameter(matchCondition, false);
                    break;
                case LqlOperator.NotEquals:
                    queryPayload.Append(" <> ");
                    queryPayload.AddParameter(matchCondition, false);
                    break;
                case LqlOperator.Like:
                    queryPayload.Append(" LIKE '%' + ");
                    queryPayload.AddParameter(matchCondition, false);
                    queryPayload.Append(" + '%'");
                    break;
                case LqlOperator.NotLike:
                    queryPayload.Append(" NOT LIKE '%' + ");
                    queryPayload.AddParameter(matchCondition, false);
                    queryPayload.Append(" + '%'");
                    break;
                case LqlOperator.In:
                    queryPayload.Append(" IN (");
                    queryPayload.AddParameter(matchCondition, false);
                    queryPayload.Append(")");
                    break;
                case LqlOperator.NotIn:
                    queryPayload.Append(" NOT IN (");
                    queryPayload.AddParameter(matchCondition, false);
                    queryPayload.Append(")");
                    break;
                default:
                    throw new SqlGenerationException("LQL Operator not supported for SQL query generation: " + matchCondition.Operator);
            }

            queryPayload.AddNewLine();
        }
Exemple #4
0
 private void AddSingleClause(MatchCondition matchCondition, AdoQueryPayload queryPayload)
 {
     if (IsFullTextSearchCompatible(matchCondition.Object, matchCondition.Operator))
         AddFullTextSearchClause(matchCondition, queryPayload);
     else
         AddClause(matchCondition, queryPayload);
 }
Exemple #5
0
        private void AddUnionFilters(AdoQueryPayload queryPayload, MatchCondition matchCondition, DateRange dateRange, List<string> servers)
        {
            AddServerJoin(queryPayload, servers);
            
            if (matchCondition.Object == LqlObject.Application || matchCondition.Object == LqlObject.Fingerprint)
            {
                queryPayload.AppendLine("JOIN ErrorDefinition ED WITH (NOLOCK) ON T.Fingerprint = ED.Fingerprint");
                queryPayload.Append("WHERE ");
            }
            else if (matchCondition.Object == LqlObject.ExceptionType || matchCondition.Object == LqlObject.StackFrame)
            {
                queryPayload.AppendLine("JOIN ErrorBreakdown EB WITH (NOLOCK) ON EB.Fingerprint = T.Fingerprint");
                queryPayload.Append("WHERE ");
            }
            else if (matchCondition.Object == LqlObject.Message)
            {
                queryPayload.Append("WHERE ");
                AddDateRangeClause(queryPayload, dateRange, "T");
                queryPayload.AddNewLine();
                queryPayload.Append("AND ");
            }
            else
                throw new SqlGenerationException("Non supported object type: " + matchCondition.Object);

            AddServersClause(queryPayload, servers, true);
            queryPayload.AddNewLine();
            queryPayload.Append("AND ");
            AddSingleClause(matchCondition, queryPayload);
        }
Exemple #6
0
        private void ParseInCondition(LqlOperator inOperator)
        {
            _currentInMatchCondition = new MatchCondition();
            _currentInMatchCondition.Operator = inOperator;
            _currentInMatchCondition.Values = new List<string>();
            _currentInMatchCondition.Object = GetObject(_lookaheadFirst);
            DiscardToken();

            if (inOperator == LqlOperator.In)
                DiscardToken(TokenType.In);
            else if (inOperator == LqlOperator.NotIn)
                DiscardToken(TokenType.NotIn);
            
            DiscardToken(TokenType.OpenParenthesis);
            StringLiteralList(StringLiteralListType.InCondition);
            DiscardToken(TokenType.CloseParenthesis);

            _currentGroup.MatchConditions.Add(_currentInMatchCondition);
        }
Exemple #7
0
 private void EqualityCondition()
 {
     var matchCondition = new MatchCondition();
     matchCondition.Object = GetObject(_lookaheadFirst);
     DiscardToken(); // --> operator
     matchCondition.Operator = GetOperator(_lookaheadFirst);
     DiscardToken(); // --> string value
     matchCondition.Value = _lookaheadFirst.Value;
     _currentGroup.MatchConditions.Add(matchCondition);
     DiscardToken();
 }