Example #1
0
        public void Process(SkipResultOperator resultOperator, QueryModelVisitor queryModelVisitor, IntermediateHqlTree tree)
        {
            VisitorParameters parameters = queryModelVisitor.VisitorParameters;
            NamedParameter    namedParameter;

            /** https://nhibernate.jira.com/browse/NH-3021
             * Temporary fix for Skip for dialects that support constant limiting only
             * */
            if (parameters.SessionFactory.Dialect.SupportsLimit && !parameters.SessionFactory.Dialect.SupportsVariableLimit)
            {
                tree.AddSkipClause(tree.TreeBuilder.Constant(resultOperator.GetConstantCount()));
                return;
            }

            if (parameters.ConstantToParameterMap.TryGetValue(resultOperator.Count as ConstantExpression, out namedParameter))
            {
                parameters.RequiredHqlParameters.Add(new NamedParameterDescriptor(namedParameter.Name, null, false));
                //    tree.AddSkipClause(tree.TreeBuilder.Parameter(namedParameter.Name));
                //}
                //else
                //{
                //    tree.AddSkipClause(tree.TreeBuilder.Constant(resultOperator.GetConstantCount()));

                tree.AddSkipClause(tree.TreeBuilder.Parameter(namedParameter.Name));
            }
            else
            {
                tree.AddSkipClause(tree.TreeBuilder.Constant(resultOperator.GetConstantCount()));
                //}

                /* end of fix */
            }
        }
Example #2
0
        public void Process(SkipResultOperator resultOperator, QueryModelVisitor queryModelVisitor, IntermediateHqlTree tree)
        {
            VisitorParameters parameters = queryModelVisitor.VisitorParameters;
            NamedParameter    namedParameter;

            if (parameters.ConstantToParameterMap.TryGetValue(resultOperator.Count as ConstantExpression, out namedParameter))
            {
                parameters.RequiredHqlParameters.Add(new NamedParameterDescriptor(namedParameter.Name, null, false));
                tree.AddSkipClause(tree.TreeBuilder.Parameter(namedParameter.Name));
            }
            else
            {
                tree.AddSkipClause(tree.TreeBuilder.Constant(resultOperator.GetConstantCount()));
            }
        }