Table of Contents

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 RelationalParameterBasedSqlProcessorDependencies

Parameter object containing dependencies for this class.

useRelationalNulls bool

A 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

IReadOnlyDictionary<string, object>

UseRelationalNulls

A bool value indicating whether relational null semantics are in use.

protected virtual bool UseRelationalNulls { get; }

Property Value

bool

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 ColumnExpression

A 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 SelectExpression

A select expression to process.

parameterValues IReadOnlyDictionary<string, object>

A dictionary of parameter values in use.

canCache bool

A 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 SelectExpression

A 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 SqlExpression

A sql expression to visit.

allowOptimizedExpansion bool

A bool value indicating if optimized expansion which considers null value as false value is allowed.

nullable bool

A 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 SqlExpression

A sql expression to visit.

nullable bool

A bool value indicating whether the sql expression is nullable.

Returns

SqlExpression

An optimized sql expression.

Visit(TableExpressionBase)

protected virtual TableExpressionBase Visit(TableExpressionBase tableExpressionBase)

Parameters

tableExpressionBase TableExpressionBase

A 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 CaseExpression

A case expression to visit.

allowOptimizedExpansion bool

A bool value indicating if optimized expansion which considers null value as false value is allowed.

nullable bool

A 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 CollateExpression

A collate expression to visit.

allowOptimizedExpansion bool

A bool value indicating if optimized expansion which considers null value as false value is allowed.

nullable bool

A 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 ColumnExpression

A column expression to visit.

allowOptimizedExpansion bool

A bool value indicating if optimized expansion which considers null value as false value is allowed.

nullable bool

A 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 SqlExpression

A sql expression to visit.

allowOptimizedExpansion bool

A bool value indicating if optimized expansion which considers null value as false value is allowed.

nullable bool

A 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 DistinctExpression

A collate expression to visit.

allowOptimizedExpansion bool

A bool value indicating if optimized expansion which considers null value as false value is allowed.

nullable bool

A 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 ExistsExpression

An exists expression to visit.

allowOptimizedExpansion bool

A bool value indicating if optimized expansion which considers null value as false value is allowed.

nullable bool

A 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 InExpression

An in expression to visit.

allowOptimizedExpansion bool

A bool value indicating if optimized expansion which considers null value as false value is allowed.

nullable bool

A 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 LikeExpression

A like expression to visit.

allowOptimizedExpansion bool

A bool value indicating if optimized expansion which considers null value as false value is allowed.

nullable bool

A 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 RowNumberExpression

A row number expression to visit.

allowOptimizedExpansion bool

A bool value indicating if optimized expansion which considers null value as false value is allowed.

nullable bool

A 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 ScalarSubqueryExpression

A scalar subquery expression to visit.

allowOptimizedExpansion bool

A bool value indicating if optimized expansion which considers null value as false value is allowed.

nullable bool

A 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 SqlBinaryExpression

A sql binary expression to visit.

allowOptimizedExpansion bool

A bool value indicating if optimized expansion which considers null value as false value is allowed.

nullable bool

A 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 SqlConstantExpression

A sql constant expression to visit.

allowOptimizedExpansion bool

A bool value indicating if optimized expansion which considers null value as false value is allowed.

nullable bool

A 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 SqlFragmentExpression

A sql fragment expression to visit.

allowOptimizedExpansion bool

A bool value indicating if optimized expansion which considers null value as false value is allowed.

nullable bool

A 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 SqlFunctionExpression

A sql function expression to visit.

allowOptimizedExpansion bool

A bool value indicating if optimized expansion which considers null value as false value is allowed.

nullable bool

A 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 SqlParameterExpression

A sql parameter expression to visit.

allowOptimizedExpansion bool

A bool value indicating if optimized expansion which considers null value as false value is allowed.

nullable bool

A 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 SqlUnaryExpression

A sql unary expression to visit.

allowOptimizedExpansion bool

A bool value indicating if optimized expansion which considers null value as false value is allowed.

nullable bool

A bool value indicating whether the sql expression is nullable.

Returns

SqlExpression

An optimized sql expression.