public static HqlExpression ConvertBooleanToCase(HqlExpression node) { if (node is HqlBooleanExpression) { var builder = new HqlTreeBuilder(); return builder.Case( new[] {builder.When(node, builder.True())}, builder.False()); } return node; }
public void AddOrderByClause(HqlExpression orderBy, HqlDirectionStatement direction) { var orderByRoot = Root.NodesPreOrder.Where(n => n is HqlOrderBy).FirstOrDefault(); if (orderByRoot == null) { orderByRoot = TreeBuilder.OrderBy(); Root.As<HqlQuery>().AddChild(orderByRoot); } orderByRoot.AddChild(orderBy); orderByRoot.AddChild(direction); }
public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor) { // There is a problem with NHibernate when an identifier matches an entity's name. The resulting // SQL may be null in that situation. The searchTable's name is split in 2 identifiers to mitigate the problem. string searchTable = (string)((ConstantExpression)arguments[2]).Value; var searchTableFullName = searchTable.Split('.'); if (searchTableFullName.Length != 2) throw new FrameworkException("FullTextSearch table name '" + searchTable + "' must have format 'schema.table'."); string searchColumns = (string)((ConstantExpression)arguments[3]).Value; var parameters = new HqlExpression[] { visitor.Visit(arguments[0]).AsExpression(), visitor.Visit(arguments[1]).AsExpression(), treeBuilder.Ident(searchTableFullName[0]), treeBuilder.Ident(searchTableFullName[1]), treeBuilder.Ident(searchColumns), }; return treeBuilder.BooleanMethodCall("FullTextSearch", parameters); }
public HqlAdd(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) : base(HqlSqlWalker.PLUS, "+", factory, lhs, rhs) { }
public HqlWhere(IASTFactory factory, HqlExpression expression) : base(HqlSqlWalker.WHERE, "where", factory, expression) { }
public HqlIsNotNull IsNotNull(HqlExpression lhs) { return new HqlIsNotNull(_factory, lhs); }
public HqlTreeNode Coalesce(HqlExpression lhs, HqlExpression rhs) { return new HqlCoalesce(_factory, lhs, rhs); }
public HqlCount Count(HqlExpression child) { return new HqlCount(_factory, child); }
public HqlMin Min(HqlExpression expression) { return new HqlMin(_factory, expression); }
public HqlWhen(IASTFactory factory, HqlExpression predicate, HqlExpression ifTrue) : base(HqlSqlWalker.WHEN, "when", factory, predicate, ifTrue) { }
public HqlWhen When(HqlExpression predicate, HqlExpression ifTrue) { return new HqlWhen(_factory, predicate, ifTrue); }
public HqlTake(IASTFactory factory, HqlExpression parameter) : base(HqlSqlWalker.TAKE, "take", factory, parameter) { }
public HqlElse(IASTFactory factory, HqlExpression ifFalse) : base(HqlSqlWalker.ELSE, "else", factory, ifFalse) { }
public HqlSkip(IASTFactory factory, HqlExpression parameter) : base(HqlSqlWalker.SKIP, "skip", factory, parameter) { }
public HqlHaving(IASTFactory factory, HqlExpression expression) : base(HqlSqlWalker.HAVING, "having", factory, expression) { }
public HqlWith(IASTFactory factory, HqlExpression expression) : base(HqlSqlWalker.WITH, "with", factory, expression) { }
public HqlSkip Skip(HqlExpression parameter) { return new HqlSkip(_factory, parameter); }
public HqlGreaterThanOrEqual(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) : base(HqlSqlWalker.GE, "ge", factory, lhs, rhs) { }
public HqlSelect Select(HqlExpression expression) { return new HqlSelect(_factory, expression); }
public HqlGreaterThan(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) : base(HqlSqlWalker.GT, "gt", factory, lhs, rhs) { }
public HqlLessThan LessThan(HqlExpression lhs, HqlExpression rhs) { return new HqlLessThan(_factory, lhs, rhs); }
public HqlLessThanOrEqual(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) : base(HqlSqlWalker.LE, "le", factory, lhs, rhs) { }
public HqlAverage Average(HqlExpression expression) { return new HqlAverage(_factory, expression); }
public HqlLessThan(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) : base(HqlSqlWalker.LT, "lt", factory, lhs, rhs) { }
public HqlJoin Join(HqlExpression expression, HqlAlias @alias) { return new HqlJoin(_factory, expression, @alias); }
public HqlInequality(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) : base(HqlSqlWalker.NE, "ne", factory, lhs, rhs) { }
public HqlLeftFetchJoin LeftFetchJoin(HqlExpression expression, HqlAlias @alias) { return new HqlLeftFetchJoin(_factory, expression, @alias); }
public HqlEquality(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) : base(HqlSqlWalker.EQ, "==", factory, lhs, rhs) { }
public HqlTreeNode Indices(HqlExpression dictionary) { return new HqlIndices(_factory, dictionary); }
public HqlDot Dot(HqlExpression lhs, HqlExpression rhs) { return new HqlDot(_factory, lhs, rhs); }
public HqlCount(IASTFactory factory, HqlExpression child) : base(HqlSqlWalker.COUNT, "count", factory, child) { }
public HqlDot(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) : base(HqlSqlWalker.DOT, ".", factory, lhs, rhs) { }
public HqlDivide Divide(HqlExpression lhs, HqlExpression rhs) { return new HqlDivide(_factory, lhs, rhs); }
public HqlCast(IASTFactory factory, HqlExpression expression, System.Type type) : base(HqlSqlWalker.METHOD_CALL, "method", factory) { AddChild(new HqlIdent(factory, "cast")); AddChild(new HqlExpressionList(factory, expression, new HqlIdent(factory, type))); }
public HqlWhere Where(HqlExpression expression) { return new HqlWhere(_factory, expression); }
public HqlCoalesce(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) : base(HqlSqlWalker.METHOD_CALL, "coalesce", factory) { AddChild(new HqlIdent(factory, "coalesce")); AddChild(new HqlExpressionList(factory, lhs, rhs)); }
public HqlTake Take(HqlExpression parameter) { return new HqlTake(_factory, parameter); }
public HqlDictionaryIndex(IASTFactory factory, HqlExpression dictionary, HqlExpression index) : base(HqlSqlWalker.INDEX_OP, "[", factory, dictionary, index) { }
public HqlCase Case(HqlWhen[] whenClauses, HqlExpression ifFalse) { return new HqlCase(_factory, whenClauses, ifFalse); }
public HqlIndices(IASTFactory factory, HqlExpression dictionary) : base(HqlSqlWalker.INDICES, "indices", factory, dictionary) { }
public HqlElse Else(HqlExpression ifFalse) { return new HqlElse(_factory, ifFalse); }
public HqlAverage(IASTFactory factory, HqlExpression expression) : base(HqlSqlWalker.AGGREGATE, "avg", factory, expression) { }
public HqlGreaterThanOrEqual GreaterThanOrEqual(HqlExpression lhs, HqlExpression rhs) { return new HqlGreaterThanOrEqual(_factory, lhs, rhs); }
public HqlSum(IASTFactory factory, HqlExpression expression) : base(HqlSqlWalker.AGGREGATE, "sum", factory, expression) { }
public HqlCast Cast(HqlExpression expression, System.Type type) { return new HqlCast(_factory, expression, type); }
public HqlMin(IASTFactory factory, HqlExpression expression) : base(HqlSqlWalker.AGGREGATE, "min", factory, expression) { }
public HqlSum Sum(HqlExpression expression) { return new HqlSum(_factory, expression); }
public HqlJoin(IASTFactory factory, HqlExpression expression, HqlAlias @alias) : base(HqlSqlWalker.JOIN, "join", factory, expression, @alias) { }
public HqlMax Max(HqlExpression expression) { return new HqlMax(_factory, expression); }
public HqlLeftFetchJoin(IASTFactory factory, HqlExpression expression, HqlAlias @alias) : base(HqlSqlWalker.JOIN, "join", factory, new HqlLeft(factory), new HqlFetch(factory), expression, @alias) { }
public HqlLike Like(HqlExpression lhs, HqlExpression rhs) { return new HqlLike(_factory, lhs, rhs); }
public HqlBitwiseOr(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) : base(HqlSqlWalker.BOR, "bor", factory, lhs, rhs) { }
public HqlIn In(HqlExpression itemExpression, HqlTreeNode source) { return new HqlIn(_factory, itemExpression, source); }
public HqlBitwiseAnd(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) : base(HqlSqlWalker.BAND, "band", factory, lhs, rhs) { }
public HqlBitwiseOr BitwiseOr(HqlExpression lhs, HqlExpression rhs) { return new HqlBitwiseOr(_factory, lhs, rhs); }
public HqlLike(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) : base(HqlSqlWalker.LIKE, "like", factory, lhs, rhs) { }
public HqlTreeNode DictionaryItem(HqlExpression dictionary, HqlExpression index) { return new HqlDictionaryIndex(_factory, dictionary, index); }
public HqlIsNotNull(IASTFactory factory, HqlExpression lhs) : base(HqlSqlWalker.IS_NOT_NULL, "is not null", factory, lhs) { }
public HqlEquality Equality(HqlExpression lhs, HqlExpression rhs) { return new HqlEquality(_factory, lhs, rhs); }
public HqlIn(IASTFactory factory, HqlExpression itemExpression, HqlTreeNode source) : base(HqlSqlWalker.IN, "in", factory, itemExpression) { AddChild(new HqlInList(factory, source)); }