Class SqlNullabilityProcessor
- Namespace
- Microsoft.EntityFrameworkCore.Query
- Assembly
- Microsoft.EntityFrameworkCore.Relational.dll
A class that processes a SQL tree based on nullability of nodes to apply null semantics in use and optimize it based on parameter values.
This type is typically used by database providers (and other extensions). It is generally not used in application code.
public class SqlNullabilityProcessor
- Inheritance
-
SqlNullabilityProcessor
- Inherited Members
Constructors
SqlNullabilityProcessor(RelationalParameterBasedSqlProcessorDependencies, bool)
Creates a new instance of the SqlNullabilityProcessor class.
public SqlNullabilityProcessor(RelationalParameterBasedSqlProcessorDependencies dependencies, bool useRelationalNulls)
Parameters
dependencies
RelationalParameterBasedSqlProcessorDependenciesParameter object containing dependencies for this class.
useRelationalNulls
boolA bool value indicating whether relational null semantics are in use.
Properties
ParameterValues
Dictionary of current parameter values in use.
protected virtual IReadOnlyDictionary<string, object> ParameterValues { get; }
Property Value
UseRelationalNulls
A bool value indicating whether relational null semantics are in use.
protected virtual bool UseRelationalNulls { get; }
Property Value
Methods
AddNonNullableColumn(ColumnExpression)
Adds a column to non nullable columns list to further optimizations can take the column as non-nullable.
protected virtual void AddNonNullableColumn(ColumnExpression columnExpression)
Parameters
columnExpression
ColumnExpressionA column expression to add.
DoNotCache()
Marks the select expression being processed as cannot be cached.
protected virtual void DoNotCache()
Process(SelectExpression, IReadOnlyDictionary<string, object>, out bool)
Processes a SelectExpression to apply null semantics and optimize it.
public virtual SelectExpression Process(SelectExpression selectExpression, IReadOnlyDictionary<string, object> parameterValues, out bool canCache)
Parameters
selectExpression
SelectExpressionA select expression to process.
parameterValues
IReadOnlyDictionary<string, object>A dictionary of parameter values in use.
canCache
boolA bool value indicating whether the select expression can be cached.
Returns
- SelectExpression
An optimized select expression.
Visit(SelectExpression)
Visits a SelectExpression.
protected virtual SelectExpression Visit(SelectExpression selectExpression)
Parameters
selectExpression
SelectExpressionA select expression to visit.
Returns
- SelectExpression
An optimized select expression.
Visit(SqlExpression, bool, out bool)
Visits a SqlExpression and computes its nullability.
protected virtual SqlExpression Visit(SqlExpression sqlExpression, bool allowOptimizedExpansion, out bool nullable)
Parameters
sqlExpression
SqlExpressionA sql expression to visit.
allowOptimizedExpansion
boolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullable
boolA bool value indicating whether the sql expression is nullable.
Returns
- SqlExpression
An optimized sql expression.
Visit(SqlExpression, out bool)
Visits a SqlExpression and computes its nullability.
protected virtual SqlExpression Visit(SqlExpression sqlExpression, out bool nullable)
Parameters
sqlExpression
SqlExpressionA sql expression to visit.
nullable
boolA bool value indicating whether the sql expression is nullable.
Returns
- SqlExpression
An optimized sql expression.
Visit(TableExpressionBase)
Visits a TableExpressionBase.
protected virtual TableExpressionBase Visit(TableExpressionBase tableExpressionBase)
Parameters
tableExpressionBase
TableExpressionBaseA table expression base to visit.
Returns
- TableExpressionBase
An optimized table expression base.
VisitCase(CaseExpression, bool, out bool)
Visits a CaseExpression and computes its nullability.
protected virtual SqlExpression VisitCase(CaseExpression caseExpression, bool allowOptimizedExpansion, out bool nullable)
Parameters
caseExpression
CaseExpressionA case expression to visit.
allowOptimizedExpansion
boolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullable
boolA bool value indicating whether the sql expression is nullable.
Returns
- SqlExpression
An optimized sql expression.
VisitCollate(CollateExpression, bool, out bool)
Visits a CollateExpression and computes its nullability.
protected virtual SqlExpression VisitCollate(CollateExpression collateExpression, bool allowOptimizedExpansion, out bool nullable)
Parameters
collateExpression
CollateExpressionA collate expression to visit.
allowOptimizedExpansion
boolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullable
boolA bool value indicating whether the sql expression is nullable.
Returns
- SqlExpression
An optimized sql expression.
VisitColumn(ColumnExpression, bool, out bool)
Visits a ColumnExpression and computes its nullability.
protected virtual SqlExpression VisitColumn(ColumnExpression columnExpression, bool allowOptimizedExpansion, out bool nullable)
Parameters
columnExpression
ColumnExpressionA column expression to visit.
allowOptimizedExpansion
boolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullable
boolA bool value indicating whether the sql expression is nullable.
Returns
- SqlExpression
An optimized sql expression.
VisitCustomSqlExpression(SqlExpression, bool, out bool)
Visits a custom SqlExpression added by providers and computes its nullability.
protected virtual SqlExpression VisitCustomSqlExpression(SqlExpression sqlExpression, bool allowOptimizedExpansion, out bool nullable)
Parameters
sqlExpression
SqlExpressionA sql expression to visit.
allowOptimizedExpansion
boolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullable
boolA bool value indicating whether the sql expression is nullable.
Returns
- SqlExpression
An optimized sql expression.
VisitDistinct(DistinctExpression, bool, out bool)
Visits a DistinctExpression and computes its nullability.
protected virtual SqlExpression VisitDistinct(DistinctExpression distinctExpression, bool allowOptimizedExpansion, out bool nullable)
Parameters
distinctExpression
DistinctExpressionA collate expression to visit.
allowOptimizedExpansion
boolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullable
boolA bool value indicating whether the sql expression is nullable.
Returns
- SqlExpression
An optimized sql expression.
VisitExists(ExistsExpression, bool, out bool)
Visits an ExistsExpression and computes its nullability.
protected virtual SqlExpression VisitExists(ExistsExpression existsExpression, bool allowOptimizedExpansion, out bool nullable)
Parameters
existsExpression
ExistsExpressionAn exists expression to visit.
allowOptimizedExpansion
boolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullable
boolA bool value indicating whether the sql expression is nullable.
Returns
- SqlExpression
An optimized sql expression.
VisitIn(InExpression, bool, out bool)
Visits an InExpression and computes its nullability.
protected virtual SqlExpression VisitIn(InExpression inExpression, bool allowOptimizedExpansion, out bool nullable)
Parameters
inExpression
InExpressionAn in expression to visit.
allowOptimizedExpansion
boolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullable
boolA bool value indicating whether the sql expression is nullable.
Returns
- SqlExpression
An optimized sql expression.
VisitLike(LikeExpression, bool, out bool)
Visits a LikeExpression and computes its nullability.
protected virtual SqlExpression VisitLike(LikeExpression likeExpression, bool allowOptimizedExpansion, out bool nullable)
Parameters
likeExpression
LikeExpressionA like expression to visit.
allowOptimizedExpansion
boolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullable
boolA bool value indicating whether the sql expression is nullable.
Returns
- SqlExpression
An optimized sql expression.
VisitRowNumber(RowNumberExpression, bool, out bool)
Visits a RowNumberExpression and computes its nullability.
protected virtual SqlExpression VisitRowNumber(RowNumberExpression rowNumberExpression, bool allowOptimizedExpansion, out bool nullable)
Parameters
rowNumberExpression
RowNumberExpressionA row number expression to visit.
allowOptimizedExpansion
boolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullable
boolA bool value indicating whether the sql expression is nullable.
Returns
- SqlExpression
An optimized sql expression.
VisitScalarSubquery(ScalarSubqueryExpression, bool, out bool)
Visits a ScalarSubqueryExpression and computes its nullability.
protected virtual SqlExpression VisitScalarSubquery(ScalarSubqueryExpression scalarSubqueryExpression, bool allowOptimizedExpansion, out bool nullable)
Parameters
scalarSubqueryExpression
ScalarSubqueryExpressionA scalar subquery expression to visit.
allowOptimizedExpansion
boolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullable
boolA bool value indicating whether the sql expression is nullable.
Returns
- SqlExpression
An optimized sql expression.
VisitSqlBinary(SqlBinaryExpression, bool, out bool)
Visits a SqlBinaryExpression and computes its nullability.
protected virtual SqlExpression VisitSqlBinary(SqlBinaryExpression sqlBinaryExpression, bool allowOptimizedExpansion, out bool nullable)
Parameters
sqlBinaryExpression
SqlBinaryExpressionA sql binary expression to visit.
allowOptimizedExpansion
boolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullable
boolA bool value indicating whether the sql expression is nullable.
Returns
- SqlExpression
An optimized sql expression.
VisitSqlConstant(SqlConstantExpression, bool, out bool)
Visits a SqlConstantExpression and computes its nullability.
protected virtual SqlExpression VisitSqlConstant(SqlConstantExpression sqlConstantExpression, bool allowOptimizedExpansion, out bool nullable)
Parameters
sqlConstantExpression
SqlConstantExpressionA sql constant expression to visit.
allowOptimizedExpansion
boolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullable
boolA bool value indicating whether the sql expression is nullable.
Returns
- SqlExpression
An optimized sql expression.
VisitSqlFragment(SqlFragmentExpression, bool, out bool)
Visits a SqlFragmentExpression and computes its nullability.
protected virtual SqlExpression VisitSqlFragment(SqlFragmentExpression sqlFragmentExpression, bool allowOptimizedExpansion, out bool nullable)
Parameters
sqlFragmentExpression
SqlFragmentExpressionA sql fragment expression to visit.
allowOptimizedExpansion
boolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullable
boolA bool value indicating whether the sql expression is nullable.
Returns
- SqlExpression
An optimized sql expression.
VisitSqlFunction(SqlFunctionExpression, bool, out bool)
Visits a SqlFunctionExpression and computes its nullability.
protected virtual SqlExpression VisitSqlFunction(SqlFunctionExpression sqlFunctionExpression, bool allowOptimizedExpansion, out bool nullable)
Parameters
sqlFunctionExpression
SqlFunctionExpressionA sql function expression to visit.
allowOptimizedExpansion
boolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullable
boolA bool value indicating whether the sql expression is nullable.
Returns
- SqlExpression
An optimized sql expression.
VisitSqlParameter(SqlParameterExpression, bool, out bool)
Visits a SqlParameterExpression and computes its nullability.
protected virtual SqlExpression VisitSqlParameter(SqlParameterExpression sqlParameterExpression, bool allowOptimizedExpansion, out bool nullable)
Parameters
sqlParameterExpression
SqlParameterExpressionA sql parameter expression to visit.
allowOptimizedExpansion
boolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullable
boolA bool value indicating whether the sql expression is nullable.
Returns
- SqlExpression
An optimized sql expression.
VisitSqlUnary(SqlUnaryExpression, bool, out bool)
Visits a SqlUnaryExpression and computes its nullability.
protected virtual SqlExpression VisitSqlUnary(SqlUnaryExpression sqlUnaryExpression, bool allowOptimizedExpansion, out bool nullable)
Parameters
sqlUnaryExpression
SqlUnaryExpressionA sql unary expression to visit.
allowOptimizedExpansion
boolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullable
boolA bool value indicating whether the sql expression is nullable.
Returns
- SqlExpression
An optimized sql expression.