Table of Contents

Class SqlExpressionConvertVisitor

Namespace
LinqToDB.Internal.SqlProvider
Assembly
linq2db.dll
public class SqlExpressionConvertVisitor : SqlQueryVisitor
Inheritance
SqlExpressionConvertVisitor
Derived
Inherited Members
Extension Methods

Constructors

SqlExpressionConvertVisitor(bool)

public SqlExpressionConvertVisitor(bool allowModify)

Parameters

allowModify bool

Fields

NullabilityContext

protected NullabilityContext NullabilityContext

Field Value

NullabilityContext

OptimizationContext

protected OptimizationContext OptimizationContext

Field Value

OptimizationContext

StandardLikeCharactersToEscape

protected static string[] StandardLikeCharactersToEscape

Field Value

string[]

VisitQueries

protected bool VisitQueries

Field Value

bool

Properties

DataOptions

protected DataOptions DataOptions { get; }

Property Value

DataOptions

EvaluationContext

protected EvaluationContext EvaluationContext { get; }

Property Value

EvaluationContext

Factory

protected ISqlExpressionFactory Factory { get; }

Property Value

ISqlExpressionFactory

IsInsidePredicate

protected bool IsInsidePredicate { get; }

Property Value

bool

LikeCharactersToEscape

Characters with special meaning in LIKE predicate (defined by LikeCharactersToEscape) that should be escaped to be used as matched character. Default: ["%", "_", "?", "*", "#", "[", "]"].

public virtual string[] LikeCharactersToEscape { get; }

Property Value

string[]

LikeEscapeCharacter

Escape sequence/character to escape special characters in LIKE predicate (defined by LikeCharactersToEscape). Default: "~".

public virtual string LikeEscapeCharacter { get; }

Property Value

string

LikeIsEscapeSupported

Should be true for provider with LIKE ... ESCAPE modifier support. Default: true.

public virtual bool LikeIsEscapeSupported { get; }

Property Value

bool

LikePatternParameterSupport

public virtual bool LikePatternParameterSupport { get; }

Property Value

bool

LikeValueParameterSupport

public virtual bool LikeValueParameterSupport { get; }

Property Value

bool

LikeWildcardCharacter

public virtual string LikeWildcardCharacter { get; }

Property Value

string

MappingSchema

protected MappingSchema MappingSchema { get; }

Property Value

MappingSchema

SqlProviderFlags

protected SqlProviderFlags SqlProviderFlags { get; }

Property Value

SqlProviderFlags

SupportsBooleanInColumn

protected virtual bool SupportsBooleanInColumn { get; }

Property Value

bool

SupportsDistinctAsExistsIntersect

protected virtual bool SupportsDistinctAsExistsIntersect { get; }

Property Value

bool

SupportsNullIf

protected virtual bool SupportsNullIf { get; }

Property Value

bool

SupportsNullInColumn

protected virtual bool SupportsNullInColumn { get; }

Property Value

bool

Methods

Add(ISqlExpression, ISqlExpression, Type)

public ISqlExpression Add(ISqlExpression expr1, ISqlExpression expr2, Type type)

Parameters

expr1 ISqlExpression
expr2 ISqlExpression
type Type

Returns

ISqlExpression

Add(ISqlExpression, int)

public ISqlExpression Add(ISqlExpression expr1, int value)

Parameters

expr1 ISqlExpression
value int

Returns

ISqlExpression

Add<T>(ISqlExpression, ISqlExpression)

public ISqlExpression Add<T>(ISqlExpression expr1, ISqlExpression expr2)

Parameters

expr1 ISqlExpression
expr2 ISqlExpression

Returns

ISqlExpression

Type Parameters

T

Cleanup()

Resets visitor to initial state.

public override void Cleanup()

Convert(OptimizationContext, NullabilityContext, IQueryElement, bool)

public virtual IQueryElement Convert(OptimizationContext optimizationContext, NullabilityContext nullabilityContext, IQueryElement element, bool visitQueries)

Parameters

optimizationContext OptimizationContext
nullabilityContext NullabilityContext
element IQueryElement
visitQueries bool

Returns

IQueryElement

ConvertBetweenPredicate(Between)

public virtual ISqlPredicate ConvertBetweenPredicate(SqlPredicate.Between between)

Parameters

between SqlPredicate.Between

Returns

ISqlPredicate

ConvertBooleanToCase(ISqlExpression, DbDataType)

protected ISqlExpression ConvertBooleanToCase(ISqlExpression expr, DbDataType toType)

Parameters

expr ISqlExpression
toType DbDataType

Returns

ISqlExpression

ConvertCaseItem(CaseItem)

protected virtual SqlCaseExpression.CaseItem ConvertCaseItem(SqlCaseExpression.CaseItem newElement)

Parameters

newElement SqlCaseExpression.CaseItem

Returns

SqlCaseExpression.CaseItem

ConvertCastToPredicate(SqlCastExpression)

public virtual IQueryElement ConvertCastToPredicate(SqlCastExpression castExpression)

Parameters

castExpression SqlCastExpression

Returns

IQueryElement

ConvertCoalesce(SqlCoalesceExpression)

public virtual ISqlExpression ConvertCoalesce(SqlCoalesceExpression element)

Parameters

element SqlCoalesceExpression

Returns

ISqlExpression

ConvertCoalesceToBinaryFunc(SqlCoalesceExpression, string, bool)

protected ISqlExpression ConvertCoalesceToBinaryFunc(SqlCoalesceExpression coalesce, string funcName, bool supportsParameters = true)

Parameters

coalesce SqlCoalesceExpression
funcName string
supportsParameters bool

Returns

ISqlExpression

ConvertConversion(SqlCastExpression)

Implements SqlCastExpression conversion.

protected virtual ISqlExpression ConvertConversion(SqlCastExpression cast)

Parameters

cast SqlCastExpression

Returns

ISqlExpression

ConvertExprExprPredicate(ExprExpr)

public virtual IQueryElement ConvertExprExprPredicate(SqlPredicate.ExprExpr predicate)

Parameters

predicate SqlPredicate.ExprExpr

Returns

IQueryElement

ConvertIsDistinctPredicate(IsDistinct)

public IQueryElement ConvertIsDistinctPredicate(SqlPredicate.IsDistinct predicate)

Parameters

predicate SqlPredicate.IsDistinct

Returns

IQueryElement

ConvertIsDistinctPredicateAsIntersect(IsDistinct)

protected virtual IQueryElement ConvertIsDistinctPredicateAsIntersect(SqlPredicate.IsDistinct predicate)

Parameters

predicate SqlPredicate.IsDistinct

Returns

IQueryElement

ConvertLikePredicate(Like)

public virtual ISqlPredicate ConvertLikePredicate(SqlPredicate.Like predicate)

Parameters

predicate SqlPredicate.Like

Returns

ISqlPredicate

ConvertRowExprExpr(ExprExpr, EvaluationContext)

protected ISqlPredicate ConvertRowExprExpr(SqlPredicate.ExprExpr predicate, EvaluationContext context)

Parameters

predicate SqlPredicate.ExprExpr
context EvaluationContext

Returns

ISqlPredicate

ConvertRowInList(InList)

protected virtual ISqlPredicate ConvertRowInList(SqlPredicate.InList predicate)

Parameters

predicate SqlPredicate.InList

Returns

ISqlPredicate

ConvertSearchStringPredicate(SearchString)

public virtual ISqlPredicate ConvertSearchStringPredicate(SqlPredicate.SearchString predicate)

Parameters

predicate SqlPredicate.SearchString

Returns

ISqlPredicate

ConvertSearchStringPredicateViaLike(SearchString)

protected ISqlPredicate ConvertSearchStringPredicateViaLike(SqlPredicate.SearchString predicate)

Parameters

predicate SqlPredicate.SearchString

Returns

ISqlPredicate

ConvertSqlBinaryExpression(SqlBinaryExpression)

public virtual IQueryElement ConvertSqlBinaryExpression(SqlBinaryExpression element)

Parameters

element SqlBinaryExpression

Returns

IQueryElement

ConvertSqlCaseExpression(SqlCaseExpression)

protected virtual ISqlExpression ConvertSqlCaseExpression(SqlCaseExpression element)

Parameters

element SqlCaseExpression

Returns

ISqlExpression

ConvertSqlCondition(SqlConditionExpression)

protected virtual ISqlExpression ConvertSqlCondition(SqlConditionExpression element)

Parameters

element SqlConditionExpression

Returns

ISqlExpression

ConvertSqlExpression(SqlExpression)

public virtual ISqlExpression ConvertSqlExpression(SqlExpression element)

Parameters

element SqlExpression

Returns

ISqlExpression

ConvertSqlExtendedFunction(SqlExtendedFunction)

public virtual ISqlExpression ConvertSqlExtendedFunction(SqlExtendedFunction func)

Parameters

func SqlExtendedFunction

Returns

ISqlExpression

ConvertSqlFunction(SqlFunction)

public virtual ISqlExpression ConvertSqlFunction(SqlFunction func)

Parameters

func SqlFunction

Returns

ISqlExpression

ConvertToBooleanSearchCondition(ISqlExpression)

protected SqlSearchCondition ConvertToBooleanSearchCondition(ISqlExpression expression)

Parameters

expression ISqlExpression

Returns

SqlSearchCondition

CreateLikeEscapeCharacter()

public virtual ISqlExpression CreateLikeEscapeCharacter()

Returns

ISqlExpression

Dec(ISqlExpression)

public ISqlExpression Dec(ISqlExpression expr1)

Parameters

expr1 ISqlExpression

Returns

ISqlExpression

Div(ISqlExpression, ISqlExpression, Type)

public ISqlExpression Div(ISqlExpression expr1, ISqlExpression expr2, Type type)

Parameters

expr1 ISqlExpression
expr2 ISqlExpression
type Type

Returns

ISqlExpression

Div(ISqlExpression, int)

public ISqlExpression Div(ISqlExpression expr1, int value)

Parameters

expr1 ISqlExpression
value int

Returns

ISqlExpression

Div<T>(ISqlExpression, ISqlExpression)

public ISqlExpression Div<T>(ISqlExpression expr1, ISqlExpression expr2)

Parameters

expr1 ISqlExpression
expr2 ISqlExpression

Returns

ISqlExpression

Type Parameters

T

EscapeLikeCharacters(ISqlExpression, ref ISqlExpression?)

public virtual ISqlExpression EscapeLikeCharacters(ISqlExpression expression, ref ISqlExpression? escape)

Parameters

expression ISqlExpression
escape ISqlExpression

Returns

ISqlExpression

EscapeLikeCharacters(string, string)

public virtual string EscapeLikeCharacters(string str, string escape)

Parameters

str string
escape string

Returns

string

EscapeLikePattern(string)

Implements LIKE pattern escaping logic for provider without ESCAPE clause support (LikeIsEscapeSupported is false). Default logic prefix characters from LikeCharactersToEscape with LikeEscapeCharacter.

protected virtual string EscapeLikePattern(string str)

Parameters

str string

Raw pattern value.

Returns

string

Escaped pattern value.

FloorBeforeConvert(SqlCastExpression)

protected SqlCastExpression FloorBeforeConvert(SqlCastExpression cast)

Parameters

cast SqlCastExpression

Returns

SqlCastExpression

GetMaxDisplaySize(DbDataType)

protected virtual int? GetMaxDisplaySize(DbDataType type)

Parameters

type DbDataType

Returns

int?

GetMaxLength(DbDataType)

protected virtual int? GetMaxLength(DbDataType type)

Parameters

type DbDataType

Returns

int?

GetMaxPrecision(DbDataType)

protected virtual int? GetMaxPrecision(DbDataType type)

Parameters

type DbDataType

Returns

int?

GetMaxScale(DbDataType)

protected virtual int? GetMaxScale(DbDataType type)

Parameters

type DbDataType

Returns

int?

Inc(ISqlExpression)

public ISqlExpression Inc(ISqlExpression expr1)

Parameters

expr1 ISqlExpression

Returns

ISqlExpression

IsDateDataOffsetType(DbDataType)

protected static bool IsDateDataOffsetType(DbDataType dataType)

Parameters

dataType DbDataType

Returns

bool

IsDateDataType(DbDataType, string)

protected static bool IsDateDataType(DbDataType dataType, string typeName)

Parameters

dataType DbDataType
typeName string

Returns

bool

IsDateTime2Type(DbDataType, string)

protected static bool IsDateTime2Type(DbDataType dataType, string typeName)

Parameters

dataType DbDataType
typeName string

Returns

bool

IsDateTimeType(DbDataType, string)

protected static bool IsDateTimeType(DbDataType dataType, string typeName)

Parameters

dataType DbDataType
typeName string

Returns

bool

IsSmallDateTimeType(DbDataType, string)

protected static bool IsSmallDateTimeType(DbDataType dataType, string typeName)

Parameters

dataType DbDataType
typeName string

Returns

bool

IsTimeDataType(DbDataType)

protected static bool IsTimeDataType(DbDataType dataType)

Parameters

dataType DbDataType

Returns

bool

Mul(ISqlExpression, ISqlExpression, Type)

public ISqlExpression Mul(ISqlExpression expr1, ISqlExpression expr2, Type type)

Parameters

expr1 ISqlExpression
expr2 ISqlExpression
type Type

Returns

ISqlExpression

Mul(ISqlExpression, int)

public ISqlExpression Mul(ISqlExpression expr1, int value)

Parameters

expr1 ISqlExpression
value int

Returns

ISqlExpression

Mul<T>(ISqlExpression, ISqlExpression)

public ISqlExpression Mul<T>(ISqlExpression expr1, ISqlExpression expr2)

Parameters

expr1 ISqlExpression
expr2 ISqlExpression

Returns

ISqlExpression

Type Parameters

T

Optimize(IQueryElement)

protected IQueryElement Optimize(IQueryElement element)

Parameters

element IQueryElement

Returns

IQueryElement

RowComparisonFallback(Operator, SqlRowExpression, SqlRowExpression, EvaluationContext)

protected ISqlPredicate RowComparisonFallback(SqlPredicate.Operator op, SqlRowExpression row1, SqlRowExpression row2, EvaluationContext context)

Parameters

op SqlPredicate.Operator
row1 SqlRowExpression
row2 SqlRowExpression
context EvaluationContext

Returns

ISqlPredicate

RowIsNullFallback(SqlRowExpression, bool)

protected ISqlPredicate RowIsNullFallback(SqlRowExpression row, bool isNot)

Parameters

row SqlRowExpression
isNot bool

Returns

ISqlPredicate

Sub(ISqlExpression, ISqlExpression, Type)

public ISqlExpression Sub(ISqlExpression expr1, ISqlExpression expr2, Type type)

Parameters

expr1 ISqlExpression
expr2 ISqlExpression
type Type

Returns

ISqlExpression

Sub(ISqlExpression, int)

public ISqlExpression Sub(ISqlExpression expr1, int value)

Parameters

expr1 ISqlExpression
value int

Returns

ISqlExpression

Sub<T>(ISqlExpression, ISqlExpression)

public ISqlExpression Sub<T>(ISqlExpression expr1, ISqlExpression expr2)

Parameters

expr1 ISqlExpression
expr2 ISqlExpression

Returns

ISqlExpression

Type Parameters

T

TryConvertToValue(ISqlExpression, EvaluationContext)

protected ISqlExpression TryConvertToValue(ISqlExpression expr, EvaluationContext context)

Parameters

expr ISqlExpression
context EvaluationContext

Returns

ISqlExpression

Visit(IQueryElement?)

Visitor dispatch method.

public override IQueryElement? Visit(IQueryElement? element)

Parameters

element IQueryElement

Returns

IQueryElement

VisitBetweenPredicate(Between)

protected override IQueryElement VisitBetweenPredicate(SqlPredicate.Between predicate)

Parameters

predicate SqlPredicate.Between

Returns

IQueryElement

VisitCaseItem(CaseItem)

protected override SqlCaseExpression.CaseItem VisitCaseItem(SqlCaseExpression.CaseItem element)

Parameters

element SqlCaseExpression.CaseItem

Returns

SqlCaseExpression.CaseItem

VisitExprExprPredicate(ExprExpr)

protected override IQueryElement VisitExprExprPredicate(SqlPredicate.ExprExpr predicate)

Parameters

predicate SqlPredicate.ExprExpr

Returns

IQueryElement

VisitExprPredicate(Expr)

protected override IQueryElement VisitExprPredicate(SqlPredicate.Expr predicate)

Parameters

predicate SqlPredicate.Expr

Returns

IQueryElement

VisitInListPredicate(InList)

protected override IQueryElement VisitInListPredicate(SqlPredicate.InList predicate)

Parameters

predicate SqlPredicate.InList

Returns

IQueryElement

VisitInSubQueryPredicate(InSubQuery)

protected override IQueryElement VisitInSubQueryPredicate(SqlPredicate.InSubQuery predicate)

Parameters

predicate SqlPredicate.InSubQuery

Returns

IQueryElement

VisitIsDistinctPredicate(IsDistinct)

protected override IQueryElement VisitIsDistinctPredicate(SqlPredicate.IsDistinct predicate)

Parameters

predicate SqlPredicate.IsDistinct

Returns

IQueryElement

VisitIsNullPredicate(IsNull)

protected override IQueryElement VisitIsNullPredicate(SqlPredicate.IsNull predicate)

Parameters

predicate SqlPredicate.IsNull

Returns

IQueryElement

VisitLikePredicate(Like)

protected override IQueryElement VisitLikePredicate(SqlPredicate.Like predicate)

Parameters

predicate SqlPredicate.Like

Returns

IQueryElement

VisitNotPredicate(Not)

protected override IQueryElement VisitNotPredicate(SqlPredicate.Not predicate)

Parameters

predicate SqlPredicate.Not

Returns

IQueryElement

VisitSearchStringPredicate(SearchString)

protected override IQueryElement VisitSearchStringPredicate(SqlPredicate.SearchString predicate)

Parameters

predicate SqlPredicate.SearchString

Returns

IQueryElement

VisitSqlBinaryExpression(SqlBinaryExpression)

protected override IQueryElement VisitSqlBinaryExpression(SqlBinaryExpression element)

Parameters

element SqlBinaryExpression

Returns

IQueryElement

VisitSqlCaseExpression(SqlCaseExpression)

protected override IQueryElement VisitSqlCaseExpression(SqlCaseExpression element)

Parameters

element SqlCaseExpression

Returns

IQueryElement

VisitSqlCastExpression(SqlCastExpression)

protected override IQueryElement VisitSqlCastExpression(SqlCastExpression element)

Parameters

element SqlCastExpression

Returns

IQueryElement

VisitSqlCoalesceExpression(SqlCoalesceExpression)

protected override IQueryElement VisitSqlCoalesceExpression(SqlCoalesceExpression element)

Parameters

element SqlCoalesceExpression

Returns

IQueryElement

VisitSqlColumnExpression(SqlColumn, ISqlExpression)

Visit of column expression from owner table. For column references visitor see VisitSqlColumnReference(SqlColumn)

protected override ISqlExpression VisitSqlColumnExpression(SqlColumn column, ISqlExpression expression)

Parameters

column SqlColumn
expression ISqlExpression

Returns

ISqlExpression

VisitSqlColumnReference(SqlColumn)

Used to visit columns as references in other expressions. Actual visit of table column happens in VisitSqlColumnExpression(SqlColumn, ISqlExpression).

protected override IQueryElement VisitSqlColumnReference(SqlColumn element)

Parameters

element SqlColumn

Returns

IQueryElement

VisitSqlCompareToExpression(SqlCompareToExpression)

protected override IQueryElement VisitSqlCompareToExpression(SqlCompareToExpression element)

Parameters

element SqlCompareToExpression

Returns

IQueryElement

VisitSqlConditionExpression(SqlConditionExpression)

protected override IQueryElement VisitSqlConditionExpression(SqlConditionExpression element)

Parameters

element SqlConditionExpression

Returns

IQueryElement

VisitSqlExpression(SqlExpression)

protected override IQueryElement VisitSqlExpression(SqlExpression element)

Parameters

element SqlExpression

Returns

IQueryElement

VisitSqlExtendedFunction(SqlExtendedFunction)

Visitor for SqlExtendedFunction.

protected override IQueryElement VisitSqlExtendedFunction(SqlExtendedFunction element)

Parameters

element SqlExtendedFunction

Returns

IQueryElement

VisitSqlFieldReference(SqlField)

Visitor for SqlField reference from query expressions.

protected override IQueryElement VisitSqlFieldReference(SqlField element)

Parameters

element SqlField

Returns

IQueryElement

VisitSqlFunction(SqlFunction)

protected override IQueryElement VisitSqlFunction(SqlFunction element)

Parameters

element SqlFunction

Returns

IQueryElement

VisitSqlGroupByItem(ISqlExpression)

protected override ISqlExpression VisitSqlGroupByItem(ISqlExpression element)

Parameters

element ISqlExpression

Returns

ISqlExpression

VisitSqlInlinedSqlExpression(SqlInlinedSqlExpression)

protected override IQueryElement VisitSqlInlinedSqlExpression(SqlInlinedSqlExpression element)

Parameters

element SqlInlinedSqlExpression

Returns

IQueryElement

VisitSqlInlinedToSqlExpression(SqlInlinedToSqlExpression)

protected override IQueryElement VisitSqlInlinedToSqlExpression(SqlInlinedToSqlExpression element)

Parameters

element SqlInlinedToSqlExpression

Returns

IQueryElement

VisitSqlJoinedTable(SqlJoinedTable)

protected override IQueryElement VisitSqlJoinedTable(SqlJoinedTable element)

Parameters

element SqlJoinedTable

Returns

IQueryElement

VisitSqlOrderByItem(SqlOrderByItem)

protected override IQueryElement VisitSqlOrderByItem(SqlOrderByItem element)

Parameters

element SqlOrderByItem

Returns

IQueryElement

VisitSqlOutputClause(SqlOutputClause)

protected override IQueryElement VisitSqlOutputClause(SqlOutputClause element)

Parameters

element SqlOutputClause

Returns

IQueryElement

VisitSqlQuery(SelectQuery)

protected override IQueryElement VisitSqlQuery(SelectQuery selectQuery)

Parameters

selectQuery SelectQuery

Returns

IQueryElement

VisitSqlSetExpression(SqlSetExpression)

protected override IQueryElement VisitSqlSetExpression(SqlSetExpression element)

Parameters

element SqlSetExpression

Returns

IQueryElement

VisitSqlValue(SqlValue)

protected override IQueryElement VisitSqlValue(SqlValue element)

Parameters

element SqlValue

Returns

IQueryElement

WrapBooleanCoalesceItems(SqlCoalesceExpression, IQueryElement, bool)

protected virtual SqlCoalesceExpression? WrapBooleanCoalesceItems(SqlCoalesceExpression element, IQueryElement newElement, bool forceConvert = false)

Parameters

element SqlCoalesceExpression
newElement IQueryElement
forceConvert bool

Returns

SqlCoalesceExpression

WrapBooleanExpression(ISqlExpression, bool, bool, bool)

protected virtual ISqlExpression WrapBooleanExpression(ISqlExpression expr, bool includeFields, bool forceConvert = false, bool withNull = true)

Parameters

expr ISqlExpression
includeFields bool
forceConvert bool
withNull bool

Returns

ISqlExpression

WrapColumnExpression(ISqlExpression)

protected virtual ISqlExpression WrapColumnExpression(ISqlExpression expr)

Parameters

expr ISqlExpression

Returns

ISqlExpression