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()); }
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()); }
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()); }
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 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)); }
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[] { SqlStringHelper.RemoveAsAliasesFromSql(sqlString) }); }
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) }); }
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])); }
/// <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())); }
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 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()); }
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(), "_" })); } }
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 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()); }
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)); }
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()); }
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)); }
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) )); }
public virtual SqlString ToGroupSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters) { return(SqlStringHelper.RemoveAsAliasesFromSql(this.projection.ToSqlString(criteria, 0, criteriaQuery, enabledFilters))); }