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
dependenciesRelationalParameterBasedSqlProcessorDependenciesParameter object containing dependencies for this class.
useRelationalNullsboolA 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
columnExpressionColumnExpressionA 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
selectExpressionSelectExpressionA select expression to process.
parameterValuesIReadOnlyDictionary<string, object>A dictionary of parameter values in use.
canCacheboolA 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
selectExpressionSelectExpressionA 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
sqlExpressionSqlExpressionA sql expression to visit.
allowOptimizedExpansionboolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullableboolA 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
sqlExpressionSqlExpressionA sql expression to visit.
nullableboolA 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
tableExpressionBaseTableExpressionBaseA 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
caseExpressionCaseExpressionA case expression to visit.
allowOptimizedExpansionboolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullableboolA 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
collateExpressionCollateExpressionA collate expression to visit.
allowOptimizedExpansionboolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullableboolA 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
columnExpressionColumnExpressionA column expression to visit.
allowOptimizedExpansionboolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullableboolA 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
sqlExpressionSqlExpressionA sql expression to visit.
allowOptimizedExpansionboolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullableboolA 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
distinctExpressionDistinctExpressionA collate expression to visit.
allowOptimizedExpansionboolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullableboolA 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
existsExpressionExistsExpressionAn exists expression to visit.
allowOptimizedExpansionboolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullableboolA 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
inExpressionInExpressionAn in expression to visit.
allowOptimizedExpansionboolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullableboolA 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
likeExpressionLikeExpressionA like expression to visit.
allowOptimizedExpansionboolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullableboolA 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
rowNumberExpressionRowNumberExpressionA row number expression to visit.
allowOptimizedExpansionboolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullableboolA 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
scalarSubqueryExpressionScalarSubqueryExpressionA scalar subquery expression to visit.
allowOptimizedExpansionboolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullableboolA 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
sqlBinaryExpressionSqlBinaryExpressionA sql binary expression to visit.
allowOptimizedExpansionboolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullableboolA 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
sqlConstantExpressionSqlConstantExpressionA sql constant expression to visit.
allowOptimizedExpansionboolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullableboolA 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
sqlFragmentExpressionSqlFragmentExpressionA sql fragment expression to visit.
allowOptimizedExpansionboolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullableboolA 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
sqlFunctionExpressionSqlFunctionExpressionA sql function expression to visit.
allowOptimizedExpansionboolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullableboolA 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
sqlParameterExpressionSqlParameterExpressionA sql parameter expression to visit.
allowOptimizedExpansionboolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullableboolA 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
sqlUnaryExpressionSqlUnaryExpressionA sql unary expression to visit.
allowOptimizedExpansionboolA bool value indicating if optimized expansion which considers null value as false value is allowed.
nullableboolA bool value indicating whether the sql expression is nullable.
Returns
- SqlExpression
An optimized sql expression.