public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters)
        {
            ISessionFactoryImplementor factory = criteriaQuery.Factory;

            SqlType[] sqlTypeCodes = type.SqlTypes(factory);
            if (sqlTypeCodes.Length != 1)
            {
                throw new QueryException("invalid Hibernate type for CastProjection");
            }
            string    sqlType = factory.Dialect.GetCastTypeName(sqlTypeCodes[0]);
            int       loc     = position * GetHashCode();
            SqlString val     = projection.ToSqlString(criteria, loc, criteriaQuery, enabledFilters);

            val = SqlStringHelper.RemoveAsAliasesFromSql(val);

            return(new SqlStringBuilder()
                   .Add("cast( ")
                   .Add(val)
                   .Add(" as ")
                   .Add(sqlType)
                   .Add(")")
                   .Add(" as ")
                   .Add(GetColumnAliases(position)[0])
                   .ToSqlString());
        }
Beispiel #2
0
        private static SqlString GetProjectionArgument(ICriteriaQuery criteriaQuery, ICriteria criteria,
                                                       IProjection projection, int loc)
        {
            SqlString sql = projection.ToSqlString(criteria, loc, criteriaQuery);

            return(sql.Substring(0, sql.LastIndexOfCaseInsensitive(" as ")));
        }
 private static SqlString GetProjectionArgument(ICriteriaQuery criteriaQuery, ICriteria criteria,
                                                IProjection projection, int loc,
                                                IDictionary<string, IFilter> enabledFilters)
 {
     SqlString sql = projection.ToSqlString(criteria, loc, criteriaQuery, enabledFilters);
     return sql.Substring(0, sql.LastIndexOfCaseInsensitive(" as "));
 }
 private static SqlString GetProjectionArgument(ICriteriaQuery criteriaQuery, ICriteria criteria,
                                                IProjection projection, int loc,
                                                IDictionary<string, IFilter> enabledFilters)
 {
     SqlString sql = projection.ToSqlString(criteria, loc, criteriaQuery, enabledFilters);
     return StringHelper.RemoveAsAliasesFromSql(sql);
 }
Beispiel #5
0
        private static SqlString[] GetColumnNamesUsingProjection(
            IProjection projection, ICriteriaQuery criteriaQuery, ICriteria criteria)
        {
            var sqlString = projection.ToSqlString(criteria, criteriaQuery.GetIndexForAlias(), criteriaQuery);

            return(new SqlString[] { SqlStringHelper.RemoveAsAliasesFromSql(sqlString) });
        }
Beispiel #6
0
        private static SqlString GetProjectionArgument(ICriteriaQuery criteriaQuery, ICriteria criteria,
                                                       IProjection projection, int loc,
                                                       IDictionary <string, IFilter> enabledFilters)
        {
            SqlString sql = projection.ToSqlString(criteria, loc, criteriaQuery, enabledFilters);

            return(SqlStringHelper.RemoveAsAliasesFromSql(sql));
        }
    public SqlString ToSqlString(ICriteria criteria, int loc, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters)
    {
        SqlStringBuilder buf  = new SqlStringBuilder();
        IProjection      proj = _projectionList[0];

        buf.Add(proj.ToSqlString(criteria, loc, criteriaQuery, enabledFilters));
        return(buf.ToSqlString());
    }
Beispiel #8
0
        /**
         * 01.06.2020: Parameter enabledFilters removed
         */
        private static SqlString GetProjectionArgument(ICriteriaQuery criteriaQuery, ICriteria criteria,
                                                       IProjection projection, int loc /*,
                                                                                        * IDictionary<string, IFilter> enabledFilters*/)
        {
            /**
             * 01.06.2020: Parameter enabledFilters removed
             */
            SqlString sql = projection.ToSqlString(criteria, loc, criteriaQuery /*, enabledFilters*/);

            return(sql.Substring(0, sql.LastIndexOfCaseInsensitive(" as ")));
        }
Beispiel #9
0
        public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters)
        {
            SqlString condition = criterion.ToSqlString(criteria, criteriaQuery, enabledFilters);
            SqlString ifTrue    = whenTrue.ToSqlString(criteria, position + GetHashCode() + 1, criteriaQuery, enabledFilters);

            ifTrue = SqlStringHelper.RemoveAsAliasesFromSql(ifTrue);
            SqlString ifFalse = whenFalse.ToSqlString(criteria, position + GetHashCode() + 2, criteriaQuery, enabledFilters);

            ifFalse = SqlStringHelper.RemoveAsAliasesFromSql(ifFalse);
            return(new SqlString("(case when ", condition, " then ", ifTrue, " else ", ifFalse, " end) as ", GetColumnAliases(position)[0]));
        }
 private void AddValueOrProjection(Parameter[] parameters, int paramIndex, ICriteria criteria, ICriteriaQuery criteriaQuery, SqlStringBuilder result)
 {
     if (_projection == null)
     {
         result.Add(parameters[paramIndex]);
     }
     else
     {
         SqlString sql = _projection.ToSqlString(criteria, GetHashCode(), criteriaQuery);
         result.Add(SqlStringHelper.RemoveAsAliasesFromSql(sql));
     }
 }
		internal static SqlString[] GetColumnNamesUsingProjection(IProjection projection, ICriteriaQuery criteriaQuery, ICriteria criteria,
																	 IDictionary<string, IFilter> enabledFilters)
		{
			SqlString sqlString = projection.ToSqlString(criteria, 
				criteriaQuery.GetIndexForAlias(),
				criteriaQuery, 
				enabledFilters);
			return new SqlString[]
				{
					StringHelper.RemoveAsAliasesFromSql(sqlString)
				};
		}
        public void CountTest()
        {
            ISession    session    = factory.OpenSession();
            IProjection expression = Projections.Count("Pay");

            CreateObjects(typeof(Simple), session);
            SqlString sqlString   = expression.ToSqlString(criteria, 0, criteriaQuery, new CollectionHelper.EmptyMapClass <string, IFilter>());
            string    expectedSql = "count(sql_alias.Pay) as y0_";

            CompareSqlStrings(sqlString, expectedSql, 0);
            session.Close();
        }
Beispiel #13
0
        public void IdTest()
        {
            ISession    session    = factory.OpenSession();
            IProjection expression = Projections.Id();

            CreateObjects(typeof(Simple), session);
            SqlString sqlString   = expression.ToSqlString(criteria, 0, criteriaQuery);
            string    expectedSql = "sql_alias.id_ as y0_";

            CompareSqlStrings(sqlString, expectedSql, 0);
            session.Close();
        }
Beispiel #14
0
        public void CountDistinctTest()
        {
            ISession    session    = factory.OpenSession();
            IProjection expression = Projections.CountDistinct("Pay");

            CreateObjects(typeof(Simple), session);
            SqlString sqlString   = expression.ToSqlString(criteria, 0, criteriaQuery);
            string    expectedSql = "count(distinct sql_alias.Pay) as y0_";

            CompareSqlStrings(sqlString, expectedSql, 0);
            session.Close();
        }
Beispiel #15
0
 private void AddValueOrProjection(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters, SqlStringBuilder result)
 {
     if (_projection == null)
     {
         result.AddParameter();
     }
     else
     {
         SqlString sql = _projection.ToSqlString(criteria, GetHashCode(), criteriaQuery, enabledFilters);
         result.Add(StringHelper.RemoveAsAliasesFromSql(sql));
     }
 }
Beispiel #16
0
        public void NvlTest()
        {
            ISession    session    = factory.OpenSession();
            IProjection expression = Projections.SqlFunction(new NvlFunction(),
                                                             NHibernateUtil.String, Projections.Property("Name"), Projections.Property("Address"));

            CreateObjects(typeof(Simple), session);
            SqlString sqlString   = expression.ToSqlString(criteria, 0, criteriaQuery);
            string    expectedSql = "nvl(sql_alias.Name, sql_alias.address) as y0_";

            CompareSqlStrings(sqlString, expectedSql, 0);
            session.Close();
        }
Beispiel #17
0
        internal static SqlString[] GetColumnNamesUsingProjection(IProjection projection, ICriteriaQuery criteriaQuery, ICriteria criteria,
                                                                  IDictionary <string, IFilter> enabledFilters)
        {
            SqlString sqlString = projection.ToSqlString(criteria,
                                                         criteriaQuery.GetIndexForAlias(),
                                                         criteriaQuery,
                                                         enabledFilters);

            return(new SqlString[]
            {
                StringHelper.RemoveAsAliasesFromSql(sqlString)
            });
        }
Beispiel #18
0
        public void SqlProjectionTest()
        {
            ISession    session    = factory.OpenSession();
            IProjection expression = Projections.SqlProjection("count(Pay)",
                                                               new string[] { "CountOfPay" }, new
                                                               IType[] { NHibernateUtil.Double });

            CreateObjects(typeof(Simple), session);
            SqlString sqlString   = expression.ToSqlString(criteria, 0, criteriaQuery);
            string    expectedSql = "count(Pay)";

            CompareSqlStrings(sqlString, expectedSql, 0);
            session.Close();
        }
        public void SqlGroupProjectionTest()
        {
            ISession    session    = factory.OpenSession();
            IProjection expression = Projections.SqlGroupProjection("count(Pay)", "Pay",
                                                                    new string[] { "PayCount" },
                                                                    new IType[] { NHibernateUtil.Double }
                                                                    );

            CreateObjects(typeof(Simple), session);
            SqlString sqlString   = expression.ToSqlString(criteria, 0, criteriaQuery, new CollectionHelper.EmptyMapClass <string, IFilter>());
            string    expectedSql = "count(Pay)";

            CompareSqlStrings(sqlString, expectedSql, 0);
            session.Close();
        }
Beispiel #20
0
        public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery)
        {
            var loc = position * GetHashCode();
            var val = _projection.ToSqlString(criteria, loc, criteriaQuery);

            val = GetAncestorProjection.RemoveAsAliasesFromSql(val);

            var ret = new SqlStringBuilder()
                      .Add(val)
                      .Add(".GetLevel()")
                      .Add(" as ")
                      .Add(GetColumnAliases(position)[0])
                      .ToSqlString();

            return(ret);
        }
Beispiel #21
0
        public SqlString ToSqlString(ICriteria criteria, int loc, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters)
        {
            SqlStringBuilder buf = new SqlStringBuilder();

            for (int i = 0; i < Length; i++)
            {
                IProjection proj = this[i];
                buf.Add(proj.ToSqlString(criteria, loc, criteriaQuery, enabledFilters));
                loc += GetColumnAliases(loc, criteria, criteriaQuery, proj).Length;
                if (i < elements.Count - 1)
                {
                    buf.Add(", ");
                }
            }
            return(buf.ToSqlString());
        }
Beispiel #22
0
        public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters)
        {
            var loc = position * GetHashCode();
            var val = _projection.ToSqlString(criteria, loc, criteriaQuery, enabledFilters);

            val = StringHelper.RemoveAsAliasesFromSql(val);

            var ret = new SqlStringBuilder()
                      .Add(val)
                      .Add(".GetLevel()")
                      .Add(" as ")
                      .Add(GetColumnAliases(position)[0])
                      .ToSqlString();

            return(ret);
        }
        internal static SqlString[] GetColumnNamesUsingProjection(IProjection projection, ICriteriaQuery criteriaQuery, ICriteria criteria)
        {
            if (projection is IPropertyProjection propertyProjection)
            {
                return(GetColumnNamesUsingPropertyName(criteriaQuery, criteria, propertyProjection.PropertyName));
            }

            SqlString sqlString = projection.ToSqlString(criteria,
                                                         criteriaQuery.GetIndexForAlias(),
                                                         criteriaQuery);

            return(new SqlString[]
            {
                SqlStringHelper.RemoveAsAliasesFromSql(sqlString)
            });
        }
Beispiel #24
0
        public void AvgTest()
        {
            ISession    session    = factory.OpenSession();
            IProjection expression = Projections.Avg("Pay");

            CreateObjects(typeof(Simple), session);
            IType nhType = NHibernateUtil.GuessType(typeof(double));

            SqlType[] sqlTypes      = nhType.SqlTypes(this.factoryImpl);
            string    sqlTypeString = factoryImpl.Dialect.GetCastTypeName(sqlTypes[0]);
            SqlString sqlString     = expression.ToSqlString(criteria, 0, criteriaQuery);
            string    expectedSql   = string.Format("avg(cast(sql_alias.Pay as {0})) as y0_", sqlTypeString);

            CompareSqlStrings(sqlString, expectedSql, 0);
            session.Close();
        }
Beispiel #25
0
        public void GroupPropertyTest()
        {
            ISession    session    = factory.OpenSession();
            IProjection expression = Projections.GroupProperty("Pay");

            CreateObjects(typeof(Simple), session);
            SqlString sqlString   = expression.ToSqlString(criteria, 0, criteriaQuery);
            string    expectedSql = "sql_alias.Pay as y0_";

            CompareSqlStrings(sqlString, expectedSql, 0);
            SqlString groupSql         = expression.ToGroupSqlString(criteria, criteriaQuery);
            string    expectedGroupSql = "sql_alias.Pay";

            CompareSqlStrings(groupSql, expectedGroupSql);
            session.Close();
        }
Beispiel #26
0
        public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery)
        {
            ISessionFactoryImplementor factory = criteriaQuery.Factory;

            SqlType[] sqlTypeCodes = type.SqlTypes(factory);
            if (sqlTypeCodes.Length != 1)
            {
                throw new QueryException("invalid Hibernate type for CastProjection");
            }
            string    sqlType = factory.Dialect.GetCastTypeName(sqlTypeCodes[0]);
            int       loc     = position * GetHashCode();
            SqlString val     = projection.ToSqlString(criteria, loc, criteriaQuery);

            val = SqlStringHelper.RemoveAsAliasesFromSql(val);

            return(new SqlString("cast( ", val, " as ", sqlType, ") as ", GetColumnAliases(position, criteria, criteriaQuery)[0]));
        }
Beispiel #27
0
        public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery)
        {
            var loc = position * GetHashCode();
            var val = _projection.ToSqlString(criteria, loc, criteriaQuery);

            val = RemoveAsAliasesFromSql(val);

            var lhs = new SqlStringBuilder();

            lhs.Add(val);
            lhs.Add(".GetAncestor(");
            lhs.Add(criteriaQuery.NewQueryParameter(new TypedValue(NHibernateUtil.Int32, _level, false)).Single());
            lhs.Add(") as ");
            lhs.Add(GetColumnAliases(position)[0]);

            var ret = lhs.ToSqlString();

            return(ret);
        }
        public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters)
        {
            var loc = position * GetHashCode();
            var val = _projection.ToSqlString(criteria, loc, criteriaQuery, enabledFilters);

            val = HierarchyIdStringHelper.RemoveAsAliasesFromSql(val);

            var lhs = new SqlStringBuilder();

            lhs.Add(val);
            lhs.Add(".GetAncestor(");
            lhs.Add(criteriaQuery.NewQueryParameter(new TypedValue(NHibernateUtil.Int32, _level, EntityMode.Poco)).Single());
            lhs.Add(") as ");
            lhs.Add(GetColumnAliases(position)[0]);

            var ret = lhs.ToSqlString();

            return(ret);
        }
Beispiel #29
0
        public override SqlString ToSqlString(ICriteria criteria, int loc, ICriteriaQuery criteriaQuery)
        {
            if (projection == null)
            {
                return(new SqlString(aggregate, "(", criteriaQuery.GetColumn(criteria, propertyName), ") as y", loc.ToString(), "_"));
            }

            return(new SqlString(
                       aggregate,
                       "(",
                       SqlStringHelper.RemoveAsAliasesFromSql(
                           projection.ToSqlString(
                               criteria,
                               loc,
                               criteriaQuery)),
                       ") as y",
                       loc.ToString(),
                       "_"));
        }
 public override SqlString ToSqlString(ICriteria criteria, int loc, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters)
 {
     if (projection != null)
     {
         return
             (new SqlString(new object[]
         {
             aggregate, "(",
             SqlStringHelper.RemoveAsAliasesFromSql(projection.ToSqlString(criteria, loc, criteriaQuery,
                                                                           enabledFilters)), ") as y",
             loc.ToString(), "_"
         }));
     }
     else
     {
         return
             (new SqlString(new object[]
                            { aggregate, "(", criteriaQuery.GetColumn(criteria, propertyName), ") as y", loc.ToString(), "_" }));
     }
 }
Beispiel #31
0
        /// <summary>
        /// Render the SQL fragment
        /// </summary>
        public virtual SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery)
        {
            if (projection != null)
            {
                SqlString produced  = projection.ToSqlString(criteria, 0, criteriaQuery);
                SqlString truncated = SqlStringHelper.RemoveAsAliasesFromSql(produced);
                return(new SqlString(truncated, ascending ? " asc" : " desc"));
            }

            string[]   columns = criteriaQuery.GetColumnAliasesUsingProjection(criteria, propertyName);
            Type.IType type    = criteriaQuery.GetTypeUsingProjection(criteria, propertyName);

            StringBuilder fragment             = new StringBuilder();
            ISessionFactoryImplementor factory = criteriaQuery.Factory;

            for (int i = 0; i < columns.Length; i++)
            {
                bool lower = ignoreCase && IsStringType(type.SqlTypes(factory)[i]);

                if (lower)
                {
                    fragment.Append(factory.Dialect.LowercaseFunction)
                    .Append("(");
                }
                fragment.Append(columns[i]);

                if (lower)
                {
                    fragment.Append(")");
                }

                fragment.Append(ascending ? " asc" : " desc");

                if (i < columns.Length - 1)
                {
                    fragment.Append(", ");
                }
            }

            return(new SqlString(fragment.ToString()));
        }
Beispiel #32
0
    public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters)
    {
        SqlString[] columns = CriterionUtil.GetColumnNames(null, _projection, criteriaQuery, criteria, enabledFilters);
        if (columns.Length != 1)
        {
            throw new HibernateException("Like may only be used with single-column properties / projections.");
        }
        var value   = SqlStringHelper.RemoveAsAliasesFromSql(_value.ToSqlString(criteria, 0, criteriaQuery, enabledFilters));
        var dialect = criteriaQuery.Factory.Dialect;
        var builder = new SqlStringBuilder(8)
                      .Add(dialect.LowercaseFunction)
                      .Add(StringHelper.OpenParen)
                      .Add(columns[0])
                      .Add(StringHelper.ClosedParen)
                      .Add(" like ")
                      .Add(dialect.LowercaseFunction)
                      .Add(StringHelper.OpenParen)
                      .Add(value)
                      .Add(StringHelper.ClosedParen);

        return(builder.ToSqlString());
    }
        public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters)
        {
            SqlString condition = criterion.ToSqlString(criteria, criteriaQuery, enabledFilters);
            SqlString ifTrue    = whenTrue.ToSqlString(criteria, position + GetHashCode() + 1, criteriaQuery, enabledFilters);

            ifTrue = StringHelper.RemoveAsAliasesFromSql(ifTrue);
            SqlString ifFalse = whenFalse.ToSqlString(criteria, position + GetHashCode() + 2, criteriaQuery, enabledFilters);

            ifFalse = StringHelper.RemoveAsAliasesFromSql(ifFalse);
            return(new SqlStringBuilder()
                   .Add("(")
                   .Add("case when ")
                   .Add(condition)
                   .Add(" then ")
                   .Add(ifTrue)
                   .Add(" else ")
                   .Add(ifFalse)
                   .Add(" end")
                   .Add(")")
                   .Add(" as ")
                   .Add(GetColumnAliases(position)[0])
                   .ToSqlString());
        }