Inheritance: IQueryExpression
		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;
		}
Beispiel #2
0
        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);
		}
Beispiel #10
0
 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);
		}
Beispiel #12
0
 public HqlTake(IASTFactory factory, HqlExpression parameter)
     : base(HqlSqlWalker.TAKE, "take", factory, parameter)
 {
 }
Beispiel #13
0
 public HqlElse(IASTFactory factory, HqlExpression ifFalse)
     : base(HqlSqlWalker.ELSE, "else", factory, ifFalse)
 {
 }
Beispiel #14
0
 public HqlSkip(IASTFactory factory, HqlExpression parameter)
     : base(HqlSqlWalker.SKIP, "skip", factory, parameter)
 {
 }
Beispiel #15
0
 public HqlHaving(IASTFactory factory, HqlExpression expression)
     : base(HqlSqlWalker.HAVING, "having", factory, expression)
 {
 }
Beispiel #16
0
 public HqlWith(IASTFactory factory, HqlExpression expression)
     : base(HqlSqlWalker.WITH, "with", factory, expression)
 {
 }
		public HqlSkip Skip(HqlExpression parameter)
		{
			return new HqlSkip(_factory, parameter);
		}
Beispiel #18
0
 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);
		}
Beispiel #20
0
 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);
		}
Beispiel #22
0
 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);
		}
Beispiel #24
0
 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);
		}
Beispiel #26
0
 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);
		}
Beispiel #28
0
 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);
		}
Beispiel #31
0
 public HqlCount(IASTFactory factory, HqlExpression child)
     : base(HqlSqlWalker.COUNT, "count", factory, child)
 {
 }
Beispiel #32
0
 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);
		}
Beispiel #34
0
 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);
		}
Beispiel #36
0
 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);
		}
Beispiel #38
0
 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);
		}
Beispiel #40
0
 public HqlIndices(IASTFactory factory, HqlExpression dictionary)
     : base(HqlSqlWalker.INDICES, "indices", factory, dictionary)
 {
 }
		public HqlElse Else(HqlExpression ifFalse)
		{
			return new HqlElse(_factory, ifFalse);
		}
Beispiel #42
0
 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);
		}
Beispiel #44
0
 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);
		}
Beispiel #46
0
 public HqlMin(IASTFactory factory, HqlExpression expression)
     : base(HqlSqlWalker.AGGREGATE, "min", factory, expression)
 {
 }
		public HqlSum Sum(HqlExpression expression)
		{
			return new HqlSum(_factory, expression);
		}
Beispiel #48
0
 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);
		}
Beispiel #50
0
 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);
		}
Beispiel #52
0
 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);
		}
Beispiel #54
0
 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);
		}
Beispiel #56
0
 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);
		}
Beispiel #58
0
 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);
		}
Beispiel #60
0
 public HqlIn(IASTFactory factory, HqlExpression itemExpression, HqlTreeNode source)
     : base(HqlSqlWalker.IN, "in", factory, itemExpression)
 {
     AddChild(new HqlInList(factory, source));
 }