Skip to content

Commit

Permalink
Remove boolean conversion.
Browse files Browse the repository at this point in the history
  • Loading branch information
HuyLuong committed Dec 2, 2020
1 parent 6669383 commit 6db2a24
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
using Microsoft.EntityFrameworkCore.Query.SqlExpressions;
using Microsoft.EntityFrameworkCore.Utilities;

#nullable enable

namespace Microsoft.EntityFrameworkCore.SqlServer.Query.Internal
{
/// <summary>
Expand Down Expand Up @@ -39,8 +41,8 @@ public SqlServerIsNumericFunctionTranslator([NotNull] ISqlExpressionFactory sqlE
/// any release. You should only use it directly in your code with extreme caution and knowing that
/// doing so can result in application failures when updating to a new Entity Framework Core release.
/// </summary>
public virtual SqlExpression Translate(
SqlExpression instance,
public virtual SqlExpression? Translate(
SqlExpression? instance,
MethodInfo method,
IReadOnlyList<SqlExpression> arguments,
IDiagnosticsLogger<DbLoggerCategory.Query> logger)
Expand All @@ -50,14 +52,14 @@ public virtual SqlExpression Translate(
Check.NotNull(logger, nameof(logger));

return _methodInfo.Equals(method)
? _sqlExpressionFactory.Convert(
_sqlExpressionFactory.Function(
? _sqlExpressionFactory.Equal(
_sqlExpressionFactory.Function(
"ISNUMERIC",
new[] { arguments[1] },
nullable: true,
argumentsPropagateNullability: new[] { true },
_methodInfo.ReturnType),
_methodInfo.ReturnType)
nullable: false,
argumentsPropagateNullability: new[] { false },
typeof(int)),
_sqlExpressionFactory.Constant(1))
: null;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -754,9 +754,12 @@ await AssertQueryScalar(
ss => ss.Set<Order>().Select(c => false));

AssertSql(
@"SELECT CAST(ISNUMERIC(CONVERT(varchar(100), [o].[OrderDate])) AS bit)
@"SELECT CASE
WHEN ISNUMERIC(CONVERT(varchar(100), [o].[OrderDate])) = 1 THEN CAST(1 AS bit)
ELSE CAST(0 AS bit)
END
FROM [Orders] AS [o]
WHERE CAST(ISNUMERIC(CONVERT(varchar(100), [o].[OrderDate])) AS bit) <> CAST(1 AS bit)");
WHERE ISNUMERIC(CONVERT(varchar(100), [o].[OrderDate])) <> 1");
}

[ConditionalTheory]
Expand All @@ -771,9 +774,12 @@ await AssertQueryScalar(
ss => ss.Set<OrderDetail>().Select(o => true));

AssertSql(
@"SELECT CAST(ISNUMERIC(CONVERT(varchar(100), [o].[UnitPrice])) AS bit)
@"SELECT CASE
WHEN ISNUMERIC(CONVERT(varchar(100), [o].[UnitPrice])) = 1 THEN CAST(1 AS bit)
ELSE CAST(0 AS bit)
END
FROM [Order Details] AS [o]
WHERE CAST(ISNUMERIC(CONVERT(varchar(100), [o].[UnitPrice])) AS bit) = CAST(1 AS bit)");
WHERE ISNUMERIC(CONVERT(varchar(100), [o].[UnitPrice])) = 1");
}

[ConditionalTheory]
Expand All @@ -790,7 +796,7 @@ await AssertCount(
AssertSql(
@"SELECT COUNT(*)
FROM [Orders] AS [o]
WHERE CAST(ISNUMERIC(COALESCE([o].[CustomerID], N'') + CAST([o].[OrderID] AS nchar(5))) AS bit) = CAST(1 AS bit)");
WHERE ISNUMERIC(COALESCE([o].[CustomerID], N'') + CAST([o].[OrderID] AS nchar(5))) = 1");
}

[ConditionalFact]
Expand Down

0 comments on commit 6db2a24

Please sign in to comment.