Skip to content

Commit 3b91d68

Browse files
committed
Function alias
1 parent a0aa93e commit 3b91d68

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

src/NHibernate/Dialect/Function/SQLFunctionRegistry.cs

+11-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ public class SQLFunctionRegistry
77
{
88
private readonly Dialect dialect;
99
private readonly IDictionary<string, ISQLFunction> userFunctions;
10+
//Temporary alias support
11+
private static Dictionary<string, string> _functionAliases = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase) { { "secondtruncated", "second" } };
1012

1113
public SQLFunctionRegistry(Dialect dialect, IDictionary<string, ISQLFunction> userFunctions)
1214
{
@@ -20,8 +22,11 @@ public SQLFunctionRegistry(Dialect dialect, IDictionary<string, ISQLFunction> us
2022
/// </summary>
2123
public ISQLFunction FindSQLFunction(string functionName)
2224
{
23-
ISQLFunction result;
24-
if (!userFunctions.TryGetValue(functionName, out result))
25+
if (!userFunctions.ContainsKey(functionName) && !dialect.Functions.ContainsKey(functionName) && _functionAliases.TryGetValue(functionName, out var sqlFunction))
26+
{
27+
functionName = sqlFunction;
28+
}
29+
if (!userFunctions.TryGetValue(functionName, out ISQLFunction result))
2530
{
2631
dialect.Functions.TryGetValue(functionName, out result);
2732
}
@@ -30,6 +35,10 @@ public ISQLFunction FindSQLFunction(string functionName)
3035

3136
public bool HasFunction(string functionName)
3237
{
38+
if (!userFunctions.ContainsKey(functionName) && !dialect.Functions.ContainsKey(functionName) && _functionAliases.TryGetValue(functionName, out var sqlFunction))
39+
{
40+
functionName = sqlFunction;
41+
}
3342
return userFunctions.ContainsKey(functionName) || dialect.Functions.ContainsKey(functionName);
3443
}
3544
}

src/NHibernate/Linq/Functions/DateTimePropertiesHqlGenerator.cs

+1-1
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)