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); } }
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(")"); }
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(); }
private void AddSingleClause(MatchCondition matchCondition, AdoQueryPayload queryPayload) { if (IsFullTextSearchCompatible(matchCondition.Object, matchCondition.Operator)) AddFullTextSearchClause(matchCondition, queryPayload); else AddClause(matchCondition, queryPayload); }
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); }
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); }
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(); }