Skip to content

Commit

Permalink
Function alias
Browse files Browse the repository at this point in the history
  • Loading branch information
gliljas committed May 16, 2024
1 parent a0aa93e commit 432229a
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 4 deletions.
6 changes: 3 additions & 3 deletions src/NHibernate/Dialect/Function/SQLFunctionRegistry.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ public class SQLFunctionRegistry
{
private readonly Dialect dialect;
private readonly IDictionary<string, ISQLFunction> userFunctions;
private static Dictionary<string,string> _functionAliases = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase) {{"secondtruncated","second"}};

public SQLFunctionRegistry(Dialect dialect, IDictionary<string, ISQLFunction> userFunctions)
{
Expand All @@ -21,16 +22,15 @@ public SQLFunctionRegistry(Dialect dialect, IDictionary<string, ISQLFunction> us
public ISQLFunction FindSQLFunction(string functionName)
{
ISQLFunction result;
if (!userFunctions.TryGetValue(functionName, out result))
if (!userFunctions.TryGetValue(functionName, out result) && !dialect.Functions.TryGetValue(functionName, out result) && _functionAliases.TryGetValue(functionName, out var aliased) && dialect.Functions.TryGetValue(aliased, out result))
{
dialect.Functions.TryGetValue(functionName, out result);
}
return result;
}

public bool HasFunction(string functionName)
{
return userFunctions.ContainsKey(functionName) || dialect.Functions.ContainsKey(functionName);
return userFunctions.ContainsKey(functionName) || dialect.Functions.ContainsKey(functionName) || _functionAliases.TryGetValue(functionName, out var aliased) && dialect.Functions.ContainsKey(aliased);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public DateTimePropertiesHqlGenerator()
public override HqlTreeNode BuildHql(MemberInfo member, Expression expression, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
{
var functionName = member.Name.ToLowerInvariant();
if (functionName == "second" && (visitor.SessionFactory as ISessionFactoryImplementor)?.Dialect.Functions.ContainsKey("secondtruncated") == true)
if (functionName == "second")
{
functionName = "secondtruncated";
}
Expand Down

0 comments on commit 432229a

Please sign in to comment.