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
allowModifybool
Fields
NullabilityContext
protected NullabilityContext NullabilityContext
Field Value
OptimizationContext
protected OptimizationContext OptimizationContext
Field Value
StandardLikeCharactersToEscape
protected static string[] StandardLikeCharactersToEscape
Field Value
- string[]
VisitQueries
protected bool VisitQueries
Field Value
Properties
DataOptions
protected DataOptions DataOptions { get; }
Property Value
EvaluationContext
protected EvaluationContext EvaluationContext { get; }
Property Value
Factory
protected ISqlExpressionFactory Factory { get; }
Property Value
IsInsidePredicate
protected bool IsInsidePredicate { get; }
Property Value
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
LikeIsEscapeSupported
Should be true for provider with LIKE ... ESCAPE modifier support.
Default: true.
public virtual bool LikeIsEscapeSupported { get; }
Property Value
LikePatternParameterSupport
public virtual bool LikePatternParameterSupport { get; }
Property Value
LikeValueParameterSupport
public virtual bool LikeValueParameterSupport { get; }
Property Value
LikeWildcardCharacter
public virtual string LikeWildcardCharacter { get; }
Property Value
MappingSchema
protected MappingSchema MappingSchema { get; }
Property Value
SqlProviderFlags
protected SqlProviderFlags SqlProviderFlags { get; }
Property Value
SupportsBooleanInColumn
protected virtual bool SupportsBooleanInColumn { get; }
Property Value
SupportsDistinctAsExistsIntersect
protected virtual bool SupportsDistinctAsExistsIntersect { get; }
Property Value
SupportsNullIf
protected virtual bool SupportsNullIf { get; }
Property Value
SupportsNullInColumn
protected virtual bool SupportsNullInColumn { get; }
Property Value
Methods
Add(ISqlExpression, ISqlExpression, Type)
public ISqlExpression Add(ISqlExpression expr1, ISqlExpression expr2, Type type)
Parameters
expr1ISqlExpressionexpr2ISqlExpressiontypeType
Returns
Add(ISqlExpression, int)
public ISqlExpression Add(ISqlExpression expr1, int value)
Parameters
expr1ISqlExpressionvalueint
Returns
Add<T>(ISqlExpression, ISqlExpression)
public ISqlExpression Add<T>(ISqlExpression expr1, ISqlExpression expr2)
Parameters
expr1ISqlExpressionexpr2ISqlExpression
Returns
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
optimizationContextOptimizationContextnullabilityContextNullabilityContextelementIQueryElementvisitQueriesbool
Returns
ConvertBetweenPredicate(Between)
public virtual ISqlPredicate ConvertBetweenPredicate(SqlPredicate.Between between)
Parameters
betweenSqlPredicate.Between
Returns
ConvertBooleanToCase(ISqlExpression, DbDataType)
protected ISqlExpression ConvertBooleanToCase(ISqlExpression expr, DbDataType toType)
Parameters
exprISqlExpressiontoTypeDbDataType
Returns
ConvertCaseItem(CaseItem)
protected virtual SqlCaseExpression.CaseItem ConvertCaseItem(SqlCaseExpression.CaseItem newElement)
Parameters
newElementSqlCaseExpression.CaseItem
Returns
ConvertCastToPredicate(SqlCastExpression)
public virtual IQueryElement ConvertCastToPredicate(SqlCastExpression castExpression)
Parameters
castExpressionSqlCastExpression
Returns
ConvertCoalesce(SqlCoalesceExpression)
public virtual ISqlExpression ConvertCoalesce(SqlCoalesceExpression element)
Parameters
elementSqlCoalesceExpression
Returns
ConvertCoalesceToBinaryFunc(SqlCoalesceExpression, string, bool)
protected ISqlExpression ConvertCoalesceToBinaryFunc(SqlCoalesceExpression coalesce, string funcName, bool supportsParameters = true)
Parameters
coalesceSqlCoalesceExpressionfuncNamestringsupportsParametersbool
Returns
ConvertConversion(SqlCastExpression)
Implements SqlCastExpression conversion.
protected virtual ISqlExpression ConvertConversion(SqlCastExpression cast)
Parameters
castSqlCastExpression
Returns
ConvertExprExprPredicate(ExprExpr)
public virtual IQueryElement ConvertExprExprPredicate(SqlPredicate.ExprExpr predicate)
Parameters
predicateSqlPredicate.ExprExpr
Returns
ConvertIsDistinctPredicate(IsDistinct)
public IQueryElement ConvertIsDistinctPredicate(SqlPredicate.IsDistinct predicate)
Parameters
predicateSqlPredicate.IsDistinct
Returns
ConvertIsDistinctPredicateAsIntersect(IsDistinct)
protected virtual IQueryElement ConvertIsDistinctPredicateAsIntersect(SqlPredicate.IsDistinct predicate)
Parameters
predicateSqlPredicate.IsDistinct
Returns
ConvertLikePredicate(Like)
public virtual ISqlPredicate ConvertLikePredicate(SqlPredicate.Like predicate)
Parameters
predicateSqlPredicate.Like
Returns
ConvertRowExprExpr(ExprExpr, EvaluationContext)
protected ISqlPredicate ConvertRowExprExpr(SqlPredicate.ExprExpr predicate, EvaluationContext context)
Parameters
predicateSqlPredicate.ExprExprcontextEvaluationContext
Returns
ConvertRowInList(InList)
protected virtual ISqlPredicate ConvertRowInList(SqlPredicate.InList predicate)
Parameters
predicateSqlPredicate.InList
Returns
ConvertSearchStringPredicate(SearchString)
public virtual ISqlPredicate ConvertSearchStringPredicate(SqlPredicate.SearchString predicate)
Parameters
predicateSqlPredicate.SearchString
Returns
ConvertSearchStringPredicateViaLike(SearchString)
protected ISqlPredicate ConvertSearchStringPredicateViaLike(SqlPredicate.SearchString predicate)
Parameters
predicateSqlPredicate.SearchString
Returns
ConvertSqlBinaryExpression(SqlBinaryExpression)
public virtual IQueryElement ConvertSqlBinaryExpression(SqlBinaryExpression element)
Parameters
elementSqlBinaryExpression
Returns
ConvertSqlCaseExpression(SqlCaseExpression)
protected virtual ISqlExpression ConvertSqlCaseExpression(SqlCaseExpression element)
Parameters
elementSqlCaseExpression
Returns
ConvertSqlCondition(SqlConditionExpression)
protected virtual ISqlExpression ConvertSqlCondition(SqlConditionExpression element)
Parameters
elementSqlConditionExpression
Returns
ConvertSqlExpression(SqlExpression)
public virtual ISqlExpression ConvertSqlExpression(SqlExpression element)
Parameters
elementSqlExpression
Returns
ConvertSqlExtendedFunction(SqlExtendedFunction)
public virtual ISqlExpression ConvertSqlExtendedFunction(SqlExtendedFunction func)
Parameters
funcSqlExtendedFunction
Returns
ConvertSqlFunction(SqlFunction)
public virtual ISqlExpression ConvertSqlFunction(SqlFunction func)
Parameters
funcSqlFunction
Returns
ConvertToBooleanSearchCondition(ISqlExpression)
protected SqlSearchCondition ConvertToBooleanSearchCondition(ISqlExpression expression)
Parameters
expressionISqlExpression
Returns
CreateLikeEscapeCharacter()
public virtual ISqlExpression CreateLikeEscapeCharacter()
Returns
Dec(ISqlExpression)
public ISqlExpression Dec(ISqlExpression expr1)
Parameters
expr1ISqlExpression
Returns
Div(ISqlExpression, ISqlExpression, Type)
public ISqlExpression Div(ISqlExpression expr1, ISqlExpression expr2, Type type)
Parameters
expr1ISqlExpressionexpr2ISqlExpressiontypeType
Returns
Div(ISqlExpression, int)
public ISqlExpression Div(ISqlExpression expr1, int value)
Parameters
expr1ISqlExpressionvalueint
Returns
Div<T>(ISqlExpression, ISqlExpression)
public ISqlExpression Div<T>(ISqlExpression expr1, ISqlExpression expr2)
Parameters
expr1ISqlExpressionexpr2ISqlExpression
Returns
Type Parameters
T
EscapeLikeCharacters(ISqlExpression, ref ISqlExpression?)
public virtual ISqlExpression EscapeLikeCharacters(ISqlExpression expression, ref ISqlExpression? escape)
Parameters
expressionISqlExpressionescapeISqlExpression
Returns
EscapeLikeCharacters(string, string)
public virtual string EscapeLikeCharacters(string str, string escape)
Parameters
Returns
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
strstringRaw pattern value.
Returns
- string
Escaped pattern value.
FloorBeforeConvert(SqlCastExpression)
protected SqlCastExpression FloorBeforeConvert(SqlCastExpression cast)
Parameters
castSqlCastExpression
Returns
GetMaxDisplaySize(DbDataType)
protected virtual int? GetMaxDisplaySize(DbDataType type)
Parameters
typeDbDataType
Returns
- int?
GetMaxLength(DbDataType)
protected virtual int? GetMaxLength(DbDataType type)
Parameters
typeDbDataType
Returns
- int?
GetMaxPrecision(DbDataType)
protected virtual int? GetMaxPrecision(DbDataType type)
Parameters
typeDbDataType
Returns
- int?
GetMaxScale(DbDataType)
protected virtual int? GetMaxScale(DbDataType type)
Parameters
typeDbDataType
Returns
- int?
Inc(ISqlExpression)
public ISqlExpression Inc(ISqlExpression expr1)
Parameters
expr1ISqlExpression
Returns
IsDateDataOffsetType(DbDataType)
protected static bool IsDateDataOffsetType(DbDataType dataType)
Parameters
dataTypeDbDataType
Returns
IsDateDataType(DbDataType, string)
protected static bool IsDateDataType(DbDataType dataType, string typeName)
Parameters
dataTypeDbDataTypetypeNamestring
Returns
IsDateTime2Type(DbDataType, string)
protected static bool IsDateTime2Type(DbDataType dataType, string typeName)
Parameters
dataTypeDbDataTypetypeNamestring
Returns
IsDateTimeType(DbDataType, string)
protected static bool IsDateTimeType(DbDataType dataType, string typeName)
Parameters
dataTypeDbDataTypetypeNamestring
Returns
IsSmallDateTimeType(DbDataType, string)
protected static bool IsSmallDateTimeType(DbDataType dataType, string typeName)
Parameters
dataTypeDbDataTypetypeNamestring
Returns
IsTimeDataType(DbDataType)
protected static bool IsTimeDataType(DbDataType dataType)
Parameters
dataTypeDbDataType
Returns
Mul(ISqlExpression, ISqlExpression, Type)
public ISqlExpression Mul(ISqlExpression expr1, ISqlExpression expr2, Type type)
Parameters
expr1ISqlExpressionexpr2ISqlExpressiontypeType
Returns
Mul(ISqlExpression, int)
public ISqlExpression Mul(ISqlExpression expr1, int value)
Parameters
expr1ISqlExpressionvalueint
Returns
Mul<T>(ISqlExpression, ISqlExpression)
public ISqlExpression Mul<T>(ISqlExpression expr1, ISqlExpression expr2)
Parameters
expr1ISqlExpressionexpr2ISqlExpression
Returns
Type Parameters
T
Optimize(IQueryElement)
protected IQueryElement Optimize(IQueryElement element)
Parameters
elementIQueryElement
Returns
RowComparisonFallback(Operator, SqlRowExpression, SqlRowExpression, EvaluationContext)
protected ISqlPredicate RowComparisonFallback(SqlPredicate.Operator op, SqlRowExpression row1, SqlRowExpression row2, EvaluationContext context)
Parameters
opSqlPredicate.Operatorrow1SqlRowExpressionrow2SqlRowExpressioncontextEvaluationContext
Returns
RowIsNullFallback(SqlRowExpression, bool)
protected ISqlPredicate RowIsNullFallback(SqlRowExpression row, bool isNot)
Parameters
rowSqlRowExpressionisNotbool
Returns
Sub(ISqlExpression, ISqlExpression, Type)
public ISqlExpression Sub(ISqlExpression expr1, ISqlExpression expr2, Type type)
Parameters
expr1ISqlExpressionexpr2ISqlExpressiontypeType
Returns
Sub(ISqlExpression, int)
public ISqlExpression Sub(ISqlExpression expr1, int value)
Parameters
expr1ISqlExpressionvalueint
Returns
Sub<T>(ISqlExpression, ISqlExpression)
public ISqlExpression Sub<T>(ISqlExpression expr1, ISqlExpression expr2)
Parameters
expr1ISqlExpressionexpr2ISqlExpression
Returns
Type Parameters
T
TryConvertToValue(ISqlExpression, EvaluationContext)
protected ISqlExpression TryConvertToValue(ISqlExpression expr, EvaluationContext context)
Parameters
exprISqlExpressioncontextEvaluationContext
Returns
Visit(IQueryElement?)
Visitor dispatch method.
public override IQueryElement? Visit(IQueryElement? element)
Parameters
elementIQueryElement
Returns
VisitBetweenPredicate(Between)
protected override IQueryElement VisitBetweenPredicate(SqlPredicate.Between predicate)
Parameters
predicateSqlPredicate.Between
Returns
VisitCaseItem(CaseItem)
protected override SqlCaseExpression.CaseItem VisitCaseItem(SqlCaseExpression.CaseItem element)
Parameters
elementSqlCaseExpression.CaseItem
Returns
VisitExprExprPredicate(ExprExpr)
protected override IQueryElement VisitExprExprPredicate(SqlPredicate.ExprExpr predicate)
Parameters
predicateSqlPredicate.ExprExpr
Returns
VisitExprPredicate(Expr)
protected override IQueryElement VisitExprPredicate(SqlPredicate.Expr predicate)
Parameters
predicateSqlPredicate.Expr
Returns
VisitInListPredicate(InList)
protected override IQueryElement VisitInListPredicate(SqlPredicate.InList predicate)
Parameters
predicateSqlPredicate.InList
Returns
VisitInSubQueryPredicate(InSubQuery)
protected override IQueryElement VisitInSubQueryPredicate(SqlPredicate.InSubQuery predicate)
Parameters
predicateSqlPredicate.InSubQuery
Returns
VisitIsDistinctPredicate(IsDistinct)
protected override IQueryElement VisitIsDistinctPredicate(SqlPredicate.IsDistinct predicate)
Parameters
predicateSqlPredicate.IsDistinct
Returns
VisitIsNullPredicate(IsNull)
protected override IQueryElement VisitIsNullPredicate(SqlPredicate.IsNull predicate)
Parameters
predicateSqlPredicate.IsNull
Returns
VisitLikePredicate(Like)
protected override IQueryElement VisitLikePredicate(SqlPredicate.Like predicate)
Parameters
predicateSqlPredicate.Like
Returns
VisitNotPredicate(Not)
protected override IQueryElement VisitNotPredicate(SqlPredicate.Not predicate)
Parameters
predicateSqlPredicate.Not
Returns
VisitSearchStringPredicate(SearchString)
protected override IQueryElement VisitSearchStringPredicate(SqlPredicate.SearchString predicate)
Parameters
predicateSqlPredicate.SearchString
Returns
VisitSqlBinaryExpression(SqlBinaryExpression)
protected override IQueryElement VisitSqlBinaryExpression(SqlBinaryExpression element)
Parameters
elementSqlBinaryExpression
Returns
VisitSqlCaseExpression(SqlCaseExpression)
protected override IQueryElement VisitSqlCaseExpression(SqlCaseExpression element)
Parameters
elementSqlCaseExpression
Returns
VisitSqlCastExpression(SqlCastExpression)
protected override IQueryElement VisitSqlCastExpression(SqlCastExpression element)
Parameters
elementSqlCastExpression
Returns
VisitSqlCoalesceExpression(SqlCoalesceExpression)
protected override IQueryElement VisitSqlCoalesceExpression(SqlCoalesceExpression element)
Parameters
elementSqlCoalesceExpression
Returns
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
columnSqlColumnexpressionISqlExpression
Returns
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
elementSqlColumn
Returns
VisitSqlCompareToExpression(SqlCompareToExpression)
protected override IQueryElement VisitSqlCompareToExpression(SqlCompareToExpression element)
Parameters
elementSqlCompareToExpression
Returns
VisitSqlConditionExpression(SqlConditionExpression)
protected override IQueryElement VisitSqlConditionExpression(SqlConditionExpression element)
Parameters
elementSqlConditionExpression
Returns
VisitSqlExpression(SqlExpression)
protected override IQueryElement VisitSqlExpression(SqlExpression element)
Parameters
elementSqlExpression
Returns
VisitSqlExtendedFunction(SqlExtendedFunction)
Visitor for SqlExtendedFunction.
protected override IQueryElement VisitSqlExtendedFunction(SqlExtendedFunction element)
Parameters
elementSqlExtendedFunction
Returns
VisitSqlFieldReference(SqlField)
Visitor for SqlField reference from query expressions.
protected override IQueryElement VisitSqlFieldReference(SqlField element)
Parameters
elementSqlField
Returns
VisitSqlFunction(SqlFunction)
protected override IQueryElement VisitSqlFunction(SqlFunction element)
Parameters
elementSqlFunction
Returns
VisitSqlGroupByItem(ISqlExpression)
protected override ISqlExpression VisitSqlGroupByItem(ISqlExpression element)
Parameters
elementISqlExpression
Returns
VisitSqlInlinedSqlExpression(SqlInlinedSqlExpression)
protected override IQueryElement VisitSqlInlinedSqlExpression(SqlInlinedSqlExpression element)
Parameters
elementSqlInlinedSqlExpression
Returns
VisitSqlInlinedToSqlExpression(SqlInlinedToSqlExpression)
protected override IQueryElement VisitSqlInlinedToSqlExpression(SqlInlinedToSqlExpression element)
Parameters
elementSqlInlinedToSqlExpression
Returns
VisitSqlJoinedTable(SqlJoinedTable)
protected override IQueryElement VisitSqlJoinedTable(SqlJoinedTable element)
Parameters
elementSqlJoinedTable
Returns
VisitSqlOrderByItem(SqlOrderByItem)
protected override IQueryElement VisitSqlOrderByItem(SqlOrderByItem element)
Parameters
elementSqlOrderByItem
Returns
VisitSqlOutputClause(SqlOutputClause)
protected override IQueryElement VisitSqlOutputClause(SqlOutputClause element)
Parameters
elementSqlOutputClause
Returns
VisitSqlQuery(SelectQuery)
protected override IQueryElement VisitSqlQuery(SelectQuery selectQuery)
Parameters
selectQuerySelectQuery
Returns
VisitSqlSetExpression(SqlSetExpression)
protected override IQueryElement VisitSqlSetExpression(SqlSetExpression element)
Parameters
elementSqlSetExpression
Returns
VisitSqlValue(SqlValue)
protected override IQueryElement VisitSqlValue(SqlValue element)
Parameters
elementSqlValue
Returns
WrapBooleanCoalesceItems(SqlCoalesceExpression, IQueryElement, bool)
protected virtual SqlCoalesceExpression? WrapBooleanCoalesceItems(SqlCoalesceExpression element, IQueryElement newElement, bool forceConvert = false)
Parameters
elementSqlCoalesceExpressionnewElementIQueryElementforceConvertbool
Returns
WrapBooleanExpression(ISqlExpression, bool, bool, bool)
protected virtual ISqlExpression WrapBooleanExpression(ISqlExpression expr, bool includeFields, bool forceConvert = false, bool withNull = true)
Parameters
exprISqlExpressionincludeFieldsboolforceConvertboolwithNullbool
Returns
WrapColumnExpression(ISqlExpression)
protected virtual ISqlExpression WrapColumnExpression(ISqlExpression expr)
Parameters
exprISqlExpression