Updates sorting code to support decimals - need to test on MySql
This commit is contained in:
@@ -274,12 +274,14 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
var sortedInt = string.Format(SqlSyntax.ConvertIntegerToOrderableString, "dataInt");
|
||||
var sortedDate = string.Format(SqlSyntax.ConvertDateToOrderableString, "dataDate");
|
||||
var sortedString = string.Format(SqlSyntax.IsNull, "dataNvarchar", "''");
|
||||
var sortedDecimal = string.Format(SqlSyntax.ConvertDecimalToOrderableString, "dataInt");
|
||||
|
||||
var orderBySql = string.Format(@"ORDER BY (
|
||||
SELECT CASE
|
||||
WHEN dataInt Is Not Null THEN {0}
|
||||
WHEN dataDate Is Not Null THEN {1}
|
||||
ELSE {2}
|
||||
WHEN dataInt Is Not Null THEN {0}
|
||||
WHEN dataDecimal Is Not Null THEN {1}
|
||||
WHEN dataDate Is Not Null THEN {2}
|
||||
ELSE {3}
|
||||
END
|
||||
FROM cmsContent c
|
||||
INNER JOIN cmsContentVersion cv ON cv.ContentId = c.nodeId AND VersionDate = (
|
||||
@@ -290,7 +292,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
INNER JOIN cmsPropertyData cpd ON cpd.contentNodeId = c.nodeId
|
||||
AND cpd.versionId = cv.VersionId
|
||||
INNER JOIN cmsPropertyType cpt ON cpt.Id = cpd.propertytypeId
|
||||
WHERE c.nodeId = umbracoNode.Id and cpt.Alias = @0)", sortedInt, sortedDate, sortedString);
|
||||
WHERE c.nodeId = umbracoNode.Id and cpt.Alias = @0)", sortedInt, sortedDecimal, sortedDate, sortedString);
|
||||
|
||||
sortedSql.Append(orderBySql, orderBy);
|
||||
if (orderDirection == Direction.Descending)
|
||||
|
||||
@@ -73,6 +73,7 @@ namespace Umbraco.Core.Persistence.SqlSyntax
|
||||
string IsNull { get; }
|
||||
string ConvertIntegerToOrderableString { get; }
|
||||
string ConvertDateToOrderableString { get; }
|
||||
string ConvertDecimalToOrderableString { get; }
|
||||
|
||||
IEnumerable<string> GetTablesInSchema(Database db);
|
||||
IEnumerable<ColumnInfo> GetColumnsInSchema(Database db);
|
||||
|
||||
@@ -363,7 +363,8 @@ ORDER BY TABLE_NAME, INDEX_NAME",
|
||||
public override string IsNull { get { return "IFNULL({0},{1})"; } }
|
||||
public override string ConvertIntegerToOrderableString { get { return "LPAD({0}, 8, '0')"; } }
|
||||
public override string ConvertDateToOrderableString { get { return "DATE_FORMAT({0}, '%Y%m%d')"; } }
|
||||
|
||||
public override string ConvertDecimalToOrderableString { get { return "LPAD({0}, 25, '0')"; } }
|
||||
|
||||
public override bool? SupportsCaseInsensitiveQueries(Database db)
|
||||
{
|
||||
bool? supportsCaseInsensitiveQueries = null;
|
||||
|
||||
@@ -540,5 +540,6 @@ namespace Umbraco.Core.Persistence.SqlSyntax
|
||||
public virtual string IsNull { get { return "ISNULL({0},{1})"; } }
|
||||
public virtual string ConvertIntegerToOrderableString { get { return "RIGHT('00000000' + CAST({0} AS varchar(8)),8)"; } }
|
||||
public virtual string ConvertDateToOrderableString { get { return "CONVERT(varchar, {0}, 102)"; } }
|
||||
public virtual string ConvertDecimalToOrderableString { get { return "RIGHT('0000000000000000000000000' + CAST({0} AS varchar(25)),25)"; } }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user