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) { 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); }
private static SqlString[] GetColumnNamesUsingProjection( IProjection projection, ICriteriaQuery criteriaQuery, ICriteria criteria) { var sqlString = projection.ToSqlString(criteria, criteriaQuery.GetIndexForAlias(), criteriaQuery); return(new SqlString[] { SqlStringHelper.RemoveAsAliasesFromSql(sqlString) }); }
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()); }
/** * 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 "))); }
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(); }
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(); }
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(); }
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)); } }
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(); }
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 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(); }
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); }
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()); }
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) }); }
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(); }
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(); }
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])); }
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); }
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(), "_" })); } }
/// <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())); }
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()); }