Exemplo n.º 1
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) });
        }
        public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery,
                                              IDictionary <string, IFilter> enabledFilters)
        {
            SqlStringBuilder buf = new SqlStringBuilder().Add("count(");

            if (distinct)
            {
                buf.Add("distinct ");
            }
            string column;

            if (projection != null)
            {
                column =
                    SqlStringHelper.RemoveAsAliasesFromSql(projection.ToSqlString(criteria, position, criteriaQuery,
                                                                                  enabledFilters)).ToString();
            }
            else
            {
                column = criteriaQuery.GetColumn(criteria, propertyName);
            }

            buf.Add(column).Add(") as y").Add(position.ToString()).Add("_");
            return(buf.ToSqlString());
        }
Exemplo n.º 3
0
        public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters)
        {
            var namesUsingProjections = _projections.Select(p => SqlStringHelper.RemoveAsAliasesFromSql(p.ToSqlString(criteria, criteriaQuery.GetIndexForAlias(), criteriaQuery, enabledFilters))).ToArray();

            var parameter = criteriaQuery.NewQueryParameter(_typedValue).Single();

            var sqlStringBuilder = new SqlStringBuilder();

            sqlStringBuilder.Add(_functionName);
            sqlStringBuilder.Add("(");
            sqlStringBuilder.Add("(");
            for (var i = 0; i < namesUsingProjections.Length; i++)
            {
                sqlStringBuilder.Add(namesUsingProjections[0]);
                if (i != namesUsingProjections.Length - 1)
                {
                    sqlStringBuilder.Add(",");
                }
            }

            sqlStringBuilder.Add(")");

            sqlStringBuilder.Add(",");
            sqlStringBuilder.Add(parameter);

            if (_language.HasValue)
            {
                sqlStringBuilder.Add(string.Format(",language {0}", _language));
            }

            sqlStringBuilder.Add(")");

            return(sqlStringBuilder.ToSqlString());
        }
Exemplo n.º 4
0
        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());
        }
Exemplo n.º 5
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));
        }
Exemplo n.º 6
0
        public virtual SqlString ToGroupSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery)
        {
            if (projection is IPropertyProjection propertyProjection)
            {
                return(new SqlString(string.Join(", ", criteriaQuery.GetColumns(criteria, propertyProjection.PropertyName))));
            }

            //This is kind of a hack. The hack is based on the fact that ToGroupSqlString always called after ToSqlString.
            return(SqlStringHelper.RemoveAsAliasesFromSql(renderedProjection));
        }
Exemplo n.º 7
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]));
        }
Exemplo n.º 8
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));
     }
 }
Exemplo n.º 9
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[]
            {
                SqlStringHelper.RemoveAsAliasesFromSql(sqlString)
            });
        }
Exemplo n.º 10
0
        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)
            });
        }
Exemplo n.º 11
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]));
        }
Exemplo n.º 12
0
        /// <summary>
        /// Render the SQL fragment
        /// </summary>
        public virtual SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery)
        {
            if (projection != null)
            {
                SqlString sb        = SqlString.Empty;
                SqlString produced  = this.projection.ToSqlString(criteria, 0, criteriaQuery);
                SqlString truncated = SqlStringHelper.RemoveAsAliasesFromSql(produced);
                sb = sb.Append(truncated);
                sb = sb.Append(ascending ? " asc" : " desc");
                return(sb);
            }

            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()));
        }
Exemplo n.º 13
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(),
                       "_"));
        }
Exemplo n.º 14
0
        public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery)
        {
            var buf = new SqlStringBuilder().Add("count(");

            if (distinct)
            {
                buf.Add("distinct ");
            }
            if (projection != null)
            {
                buf.Add(SqlStringHelper.RemoveAsAliasesFromSql(projection.ToSqlString(criteria, position, criteriaQuery)));
            }
            else
            {
                buf.Add(criteriaQuery.GetColumn(criteria, propertyName));
            }

            buf.Add(") as y").Add(position.ToString()).Add("_");
            return(buf.ToSqlString());
        }
Exemplo n.º 15
0
 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(), "_" }));
     }
 }
Exemplo n.º 16
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());
    }
Exemplo n.º 17
0
        public override SqlString ToSqlString(ICriteria criteria, int loc, ICriteriaQuery criteriaQuery)
        {
            ISessionFactoryImplementor factory = criteriaQuery.Factory;

            SqlType[] sqlTypeCodes = NHibernateUtil.Double.SqlTypes(factory);
            string    sqlType      = factory.Dialect.GetCastTypeName(sqlTypeCodes[0]);

            var sql = new SqlStringBuilder().Add(aggregate).Add("(");

            sql.Add("cast(");
            if (projection != null)
            {
                sql.Add(SqlStringHelper.RemoveAsAliasesFromSql(projection.ToSqlString(criteria, loc, criteriaQuery)));
            }
            else
            {
                sql.Add(criteriaQuery.GetColumn(criteria, propertyName));
            }
            sql.Add(" as ").Add(sqlType).Add(")");
            sql.Add(") as ").Add(GetColumnAliases(loc, criteria, criteriaQuery)[0]);
            return(sql.ToSqlString());
        }
Exemplo n.º 18
0
        public override SqlString ToSqlString(ICriteria criteria, int loc, ICriteriaQuery criteriaQuery,
                                              IDictionary <string, IFilter> enabledFilters)
        {
            ISessionFactoryImplementor factory = criteriaQuery.Factory;

            SqlType[] sqlTypeCodes = NHibernateUtil.Double.SqlTypes(factory);
            string    sqlType      = factory.Dialect.GetCastTypeName(sqlTypeCodes[0]);
            string    parameter;

            if (projection != null)
            {
                parameter =
                    SqlStringHelper.RemoveAsAliasesFromSql(projection.ToSqlString(criteria, loc, criteriaQuery, enabledFilters)).ToString();
            }
            else
            {
                parameter = criteriaQuery.GetColumn(criteria, propertyName);
            }
            string expression = string.Format("{0}(cast({1} as {2})) as {3}", aggregate, parameter, sqlType,
                                              GetColumnAliases(loc)[0]);

            return(new SqlString(expression));
        }
Exemplo n.º 19
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 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());
        }
Exemplo n.º 20
0
 public virtual SqlString ToGroupSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters)
 {
     //This is kind of a hack. The hack is based on the fact that ToGroupSqlString always called after ToSqlString.
     return(SqlStringHelper.RemoveAsAliasesFromSql(renderedProjection));
 }
Exemplo n.º 21
0
        private static SqlString GetProjectionArgument(ICriteriaQuery criteriaQuery, ICriteria criteria, IProjection projection, int loc)
        {
            SqlString sql = projection.ToSqlString(criteria, loc, criteriaQuery);

            return(SqlStringHelper.RemoveAsAliasesFromSql(sql));
        }
 public static SqlString GetColumnName(this IProjection projection, ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters)
 {
     return(SqlStringHelper.RemoveAsAliasesFromSql(
                projection.ToSqlString(criteria, criteriaQuery.GetIndexForAlias(), criteriaQuery, enabledFilters)
                ));
 }
Exemplo n.º 23
0
 public virtual SqlString ToGroupSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters)
 {
     return(SqlStringHelper.RemoveAsAliasesFromSql(this.projection.ToSqlString(criteria, 0, criteriaQuery, enabledFilters)));
 }