Skip to content

Commit 432229a

Browse files
committed
Function alias
1 parent a0aa93e commit 432229a

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

src/NHibernate/Dialect/Function/SQLFunctionRegistry.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ public class SQLFunctionRegistry
77
{
88
private readonly Dialect dialect;
99
private readonly IDictionary<string, ISQLFunction> userFunctions;
10+
private static Dictionary<string,string> _functionAliases = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase) {{"secondtruncated","second"}};
1011

1112
public SQLFunctionRegistry(Dialect dialect, IDictionary<string, ISQLFunction> userFunctions)
1213
{
@@ -21,16 +22,15 @@ public SQLFunctionRegistry(Dialect dialect, IDictionary<string, ISQLFunction> us
2122
public ISQLFunction FindSQLFunction(string functionName)
2223
{
2324
ISQLFunction result;
24-
if (!userFunctions.TryGetValue(functionName, out result))
25+
if (!userFunctions.TryGetValue(functionName, out result) && !dialect.Functions.TryGetValue(functionName, out result) && _functionAliases.TryGetValue(functionName, out var aliased) && dialect.Functions.TryGetValue(aliased, out result))
2526
{
26-
dialect.Functions.TryGetValue(functionName, out result);
2727
}
2828
return result;
2929
}
3030

3131
public bool HasFunction(string functionName)
3232
{
33-
return userFunctions.ContainsKey(functionName) || dialect.Functions.ContainsKey(functionName);
33+
return userFunctions.ContainsKey(functionName) || dialect.Functions.ContainsKey(functionName) || _functionAliases.TryGetValue(functionName, out var aliased) && dialect.Functions.ContainsKey(aliased);
3434
}
3535
}
3636
}

src/NHibernate/Linq/Functions/DateTimePropertiesHqlGenerator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public DateTimePropertiesHqlGenerator()
3535
public override HqlTreeNode BuildHql(MemberInfo member, Expression expression, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
3636
{
3737
var functionName = member.Name.ToLowerInvariant();
38-
if (functionName == "second" && (visitor.SessionFactory as ISessionFactoryImplementor)?.Dialect.Functions.ContainsKey("secondtruncated") == true)
38+
if (functionName == "second")
3939
{
4040
functionName = "secondtruncated";
4141
}

0 commit comments

Comments
 (0)