diff --git a/src/NHibernate/Dialect/Function/SQLFunctionRegistry.cs b/src/NHibernate/Dialect/Function/SQLFunctionRegistry.cs index 701dadd64f7..2e5d81fb3b6 100644 --- a/src/NHibernate/Dialect/Function/SQLFunctionRegistry.cs +++ b/src/NHibernate/Dialect/Function/SQLFunctionRegistry.cs @@ -7,6 +7,7 @@ public class SQLFunctionRegistry { private readonly Dialect dialect; private readonly IDictionary userFunctions; + private static Dictionary _functionAliases = new Dictionary(StringComparer.OrdinalIgnoreCase) {{"secondtruncated","second"}}; public SQLFunctionRegistry(Dialect dialect, IDictionary userFunctions) { @@ -21,16 +22,15 @@ public SQLFunctionRegistry(Dialect dialect, IDictionary 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); } } } diff --git a/src/NHibernate/Linq/Functions/DateTimePropertiesHqlGenerator.cs b/src/NHibernate/Linq/Functions/DateTimePropertiesHqlGenerator.cs index fb54256da07..e5b1e95d703 100644 --- a/src/NHibernate/Linq/Functions/DateTimePropertiesHqlGenerator.cs +++ b/src/NHibernate/Linq/Functions/DateTimePropertiesHqlGenerator.cs @@ -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"; }