Table of Contents

Class QueryElementVisitor

Namespace
LinqToDB.Internal.SqlQuery.Visitors
Assembly
linq2db.dll

Base visitor for all SQL AST visitors. Supports three visit modes, defined by VisitMode enum.

public abstract class QueryElementVisitor
Inheritance
QueryElementVisitor
Derived
Inherited Members
Extension Methods

Constructors

QueryElementVisitor(VisitMode)

protected QueryElementVisitor(VisitMode visitMode)

Parameters

visitMode VisitMode

Properties

VisitMode

Gets default visitor inspection mode.

public VisitMode VisitMode { get; }

Property Value

VisitMode

Methods

CopyFields(IReadOnlyList<SqlField>)

Creates copy of SqlField without table set and call NotifyReplaced(IQueryElement, IQueryElement) for each.

protected IReadOnlyList<SqlField> CopyFields(IReadOnlyList<SqlField> fields)

Parameters

fields IReadOnlyList<SqlField>

Returns

IReadOnlyList<SqlField>

CreateInvalidVisitModeException(string?)

protected Exception CreateInvalidVisitModeException(string? methodName = null)

Parameters

methodName string

Returns

Exception

GetVisitMode(IQueryElement)

Gets visit mode for query element. Could be overridden to enable element visit mode, which differ from visitor-level mode set by VisitMode.

public virtual VisitMode GetVisitMode(IQueryElement element)

Parameters

element IQueryElement

Returns

VisitMode

NotifyReplaced(IQueryElement, IQueryElement)

Called by visitor on node replacement in Transform mode. Descendant visitor could overload it to react to node cloning.

public virtual IQueryElement NotifyReplaced(IQueryElement newElement, IQueryElement oldElement)

Parameters

newElement IQueryElement

New query element.

oldElement IQueryElement

Old query element.

Returns

IQueryElement

Returns new element (override could create anoter copy).

ShouldReplace(IQueryElement)

Enables unconditional cloning (returning of new instance) of query element in Transform. Default implementation returns false.

protected virtual bool ShouldReplace(IQueryElement element)

Parameters

element IQueryElement

Returns

bool

Visit(IQueryElement?)

Visitor dispatch method.

public virtual IQueryElement? Visit(IQueryElement? element)

Parameters

element IQueryElement

Returns

IQueryElement

VisitBetweenPredicate(Between)

protected virtual IQueryElement VisitBetweenPredicate(SqlPredicate.Between predicate)

Parameters

predicate SqlPredicate.Between

Returns

IQueryElement

VisitCaseItem(CaseItem)

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

Parameters

element SqlCaseExpression.CaseItem

Returns

SqlCaseExpression.CaseItem

VisitCteClause(CteClause)

Visitor of CteClause definition from SqlWithClause visitor (owner). For visitor of CteClause in queries see VisitCteClauseReference(CteClause) visitor.

protected virtual IQueryElement VisitCteClause(CteClause element)

Parameters

element CteClause

Returns

IQueryElement

VisitCteClauseReference(CteClause)

Main CteClause visitor is VisitCteClause(CteClause) and called for it from SqlWithClause. This by-ref visitor used for references from SqlCteTable.

protected virtual IQueryElement VisitCteClauseReference(CteClause element)

Parameters

element CteClause

Returns

IQueryElement

VisitElements<T>(List<T>?, VisitMode)

Visits list of query elements.

protected List<T>? VisitElements<T>(List<T>? list1, VisitMode mode) where T : class, IQueryElement

Parameters

list1 List<T>
mode VisitMode

Returns

List<T>

Return value depends on mode value:

  • null when list1 is null;
  • ReadOnly: returns input list list1 instance;
  • Modify: returns input list list1 instance, could contain inplace list item replacements;
  • Transform: returns new list instance when there were changes to list items; otherwise returns original list.

Type Parameters

T

VisitElements<T>(List<T>?, VisitMode, Func<T, T>)

Visits list of query elements and applies transformation.

protected List<T>? VisitElements<T>(List<T>? list1, VisitMode mode, Func<T, T> transformFunc) where T : class

Parameters

list1 List<T>

List to visit.

mode VisitMode
transformFunc Func<T, T>

Transformation function.

Returns

List<T>

Return value depends on mode value:

  • null when list1 is null;
  • ReadOnly: returns input list list1 instance;
  • Modify: returns input list list1 instance, could contain inplace list item replacements;
  • Transform: returns new list instance when there were changes to list items; otherwise returns original list.

Type Parameters

T

VisitElements<T>(T[]?, VisitMode)

Visits array of query elements.

protected T[]? VisitElements<T>(T[]? arr1, VisitMode mode) where T : class, IQueryElement

Parameters

arr1 T[]
mode VisitMode

Returns

T[]

Return value depends on mode value:

  • null when arr1 is null;
  • ReadOnly: returns input array arr1 instance;
  • Modify: returns input array arr1 instance, could contain inplace array element replacements;
  • Transform: returns new array instance when there were changes to array items; otherwise returns original array.

Type Parameters

T

VisitExistsPredicate(Exists)

protected virtual IQueryElement VisitExistsPredicate(SqlPredicate.Exists predicate)

Parameters

predicate SqlPredicate.Exists

Returns

IQueryElement

VisitExprExprPredicate(ExprExpr)

protected virtual IQueryElement VisitExprExprPredicate(SqlPredicate.ExprExpr predicate)

Parameters

predicate SqlPredicate.ExprExpr

Returns

IQueryElement

VisitExprPredicate(Expr)

protected virtual IQueryElement VisitExprPredicate(SqlPredicate.Expr predicate)

Parameters

predicate SqlPredicate.Expr

Returns

IQueryElement

VisitFalsePredicate(FalsePredicate)

protected virtual IQueryElement VisitFalsePredicate(SqlPredicate.FalsePredicate predicate)

Parameters

predicate SqlPredicate.FalsePredicate

Returns

IQueryElement

VisitInListPredicate(InList)

protected virtual IQueryElement VisitInListPredicate(SqlPredicate.InList predicate)

Parameters

predicate SqlPredicate.InList

Returns

IQueryElement

VisitInSubQueryPredicate(InSubQuery)

protected virtual IQueryElement VisitInSubQueryPredicate(SqlPredicate.InSubQuery predicate)

Parameters

predicate SqlPredicate.InSubQuery

Returns

IQueryElement

VisitIsDistinctPredicate(IsDistinct)

protected virtual IQueryElement VisitIsDistinctPredicate(SqlPredicate.IsDistinct predicate)

Parameters

predicate SqlPredicate.IsDistinct

Returns

IQueryElement

VisitIsNullPredicate(IsNull)

protected virtual IQueryElement VisitIsNullPredicate(SqlPredicate.IsNull predicate)

Parameters

predicate SqlPredicate.IsNull

Returns

IQueryElement

VisitIsTruePredicate(IsTrue)

protected virtual IQueryElement VisitIsTruePredicate(SqlPredicate.IsTrue predicate)

Parameters

predicate SqlPredicate.IsTrue

Returns

IQueryElement

VisitLikePredicate(Like)

protected virtual IQueryElement VisitLikePredicate(SqlPredicate.Like predicate)

Parameters

predicate SqlPredicate.Like

Returns

IQueryElement

VisitListOfArrays<T>(List<T[]>?, VisitMode)

Visits list of arrays of query elements.

protected List<T[]>? VisitListOfArrays<T>(List<T[]>? list1, VisitMode mode) where T : class, IQueryElement

Parameters

list1 List<T[]>
mode VisitMode

Returns

List<T[]>

Return value depends on mode value:

  • null when list1 is null;
  • ReadOnly: returns input list list1 instance;
  • Modify: returns input list list1 instance, could contain inplace list item replacements;
  • Transform: returns new list instance when there were changes to list items; otherwise returns original list.

Type Parameters

T

VisitListOfLists<T>(List<List<T>>?, VisitMode)

Visits list of list of query elements.

protected List<List<T>>? VisitListOfLists<T>(List<List<T>>? list1, VisitMode mode) where T : class, IQueryElement

Parameters

list1 List<List<T>>
mode VisitMode

Returns

List<List<T>>

Return value depends on mode value:

  • null when list1 is null;
  • ReadOnly: returns input list list1 instance;
  • Modify: returns input list list1 instance, could contain inplace list item replacements;
  • Transform: returns new list instance when there were changes to list items; otherwise returns original list.

Type Parameters

T

VisitNotPredicate(Not)

protected virtual IQueryElement VisitNotPredicate(SqlPredicate.Not predicate)

Parameters

predicate SqlPredicate.Not

Returns

IQueryElement

VisitSearchStringPredicate(SearchString)

protected virtual IQueryElement VisitSearchStringPredicate(SqlPredicate.SearchString predicate)

Parameters

predicate SqlPredicate.SearchString

Returns

IQueryElement

VisitSqlAliasPlaceholder(SqlAliasPlaceholder)

protected virtual IQueryElement VisitSqlAliasPlaceholder(SqlAliasPlaceholder element)

Parameters

element SqlAliasPlaceholder

Returns

IQueryElement

VisitSqlAnchor(SqlAnchor)

protected virtual IQueryElement VisitSqlAnchor(SqlAnchor element)

Parameters

element SqlAnchor

Returns

IQueryElement

VisitSqlBinaryExpression(SqlBinaryExpression)

protected virtual IQueryElement VisitSqlBinaryExpression(SqlBinaryExpression element)

Parameters

element SqlBinaryExpression

Returns

IQueryElement

VisitSqlCaseExpression(SqlCaseExpression)

protected virtual IQueryElement VisitSqlCaseExpression(SqlCaseExpression element)

Parameters

element SqlCaseExpression

Returns

IQueryElement

VisitSqlCastExpression(SqlCastExpression)

protected virtual IQueryElement VisitSqlCastExpression(SqlCastExpression element)

Parameters

element SqlCastExpression

Returns

IQueryElement

VisitSqlCoalesceExpression(SqlCoalesceExpression)

protected virtual 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 virtual 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 virtual IQueryElement VisitSqlColumnReference(SqlColumn element)

Parameters

element SqlColumn

Returns

IQueryElement

VisitSqlComment(SqlComment)

protected virtual IQueryElement VisitSqlComment(SqlComment element)

Parameters

element SqlComment

Returns

IQueryElement

VisitSqlCompareToExpression(SqlCompareToExpression)

protected virtual IQueryElement VisitSqlCompareToExpression(SqlCompareToExpression element)

Parameters

element SqlCompareToExpression

Returns

IQueryElement

VisitSqlConditionExpression(SqlConditionExpression)

protected virtual IQueryElement VisitSqlConditionExpression(SqlConditionExpression element)

Parameters

element SqlConditionExpression

Returns

IQueryElement

VisitSqlConditionalInsertClause(SqlConditionalInsertClause)

protected virtual IQueryElement VisitSqlConditionalInsertClause(SqlConditionalInsertClause element)

Parameters

element SqlConditionalInsertClause

Returns

IQueryElement

VisitSqlCreateTableStatement(SqlCreateTableStatement)

protected virtual IQueryElement VisitSqlCreateTableStatement(SqlCreateTableStatement element)

Parameters

element SqlCreateTableStatement

Returns

IQueryElement

VisitSqlCteTable(SqlCteTable)

protected virtual IQueryElement VisitSqlCteTable(SqlCteTable element)

Parameters

element SqlCteTable

Returns

IQueryElement

VisitSqlDataType(SqlDataType)

protected virtual IQueryElement VisitSqlDataType(SqlDataType element)

Parameters

element SqlDataType

Returns

IQueryElement

VisitSqlDeleteStatement(SqlDeleteStatement)

protected virtual IQueryElement VisitSqlDeleteStatement(SqlDeleteStatement element)

Parameters

element SqlDeleteStatement

Returns

IQueryElement

VisitSqlDropTableStatement(SqlDropTableStatement)

protected virtual IQueryElement VisitSqlDropTableStatement(SqlDropTableStatement element)

Parameters

element SqlDropTableStatement

Returns

IQueryElement

VisitSqlExpression(SqlExpression)

protected virtual IQueryElement VisitSqlExpression(SqlExpression element)

Parameters

element SqlExpression

Returns

IQueryElement

VisitSqlExtendedFunction(SqlExtendedFunction)

Visitor for SqlExtendedFunction.

protected virtual IQueryElement VisitSqlExtendedFunction(SqlExtendedFunction element)

Parameters

element SqlExtendedFunction

Returns

IQueryElement

VisitSqlFieldReference(SqlField)

Visitor for SqlField reference from query expressions.

protected virtual IQueryElement VisitSqlFieldReference(SqlField element)

Parameters

element SqlField

Returns

IQueryElement

VisitSqlFragment(SqlFragment)

protected virtual IQueryElement VisitSqlFragment(SqlFragment element)

Parameters

element SqlFragment

Returns

IQueryElement

VisitSqlFrameBoundary(SqlFrameBoundary)

protected virtual IQueryElement VisitSqlFrameBoundary(SqlFrameBoundary element)

Parameters

element SqlFrameBoundary

Returns

IQueryElement

VisitSqlFrameClause(SqlFrameClause)

Visitor for SqlFrameClause.

protected virtual IQueryElement VisitSqlFrameClause(SqlFrameClause element)

Parameters

element SqlFrameClause

Returns

IQueryElement

VisitSqlFromClause(SqlFromClause)

protected virtual IQueryElement VisitSqlFromClause(SqlFromClause element)

Parameters

element SqlFromClause

Returns

IQueryElement

VisitSqlFunction(SqlFunction)

protected virtual IQueryElement VisitSqlFunction(SqlFunction element)

Parameters

element SqlFunction

Returns

IQueryElement

VisitSqlFunctionArgument(SqlFunctionArgument)

protected virtual IQueryElement VisitSqlFunctionArgument(SqlFunctionArgument element)

Parameters

element SqlFunctionArgument

Returns

IQueryElement

VisitSqlGroupByClause(SqlGroupByClause)

protected virtual IQueryElement VisitSqlGroupByClause(SqlGroupByClause element)

Parameters

element SqlGroupByClause

Returns

IQueryElement

VisitSqlGroupByItem(ISqlExpression)

protected virtual ISqlExpression VisitSqlGroupByItem(ISqlExpression element)

Parameters

element ISqlExpression

Returns

ISqlExpression

VisitSqlGroupingSet(SqlGroupingSet)

protected virtual IQueryElement VisitSqlGroupingSet(SqlGroupingSet element)

Parameters

element SqlGroupingSet

Returns

IQueryElement

VisitSqlHavingClause(SqlHavingClause)

protected virtual IQueryElement VisitSqlHavingClause(SqlHavingClause element)

Parameters

element SqlHavingClause

Returns

IQueryElement

VisitSqlInlinedSqlExpression(SqlInlinedSqlExpression)

protected virtual IQueryElement VisitSqlInlinedSqlExpression(SqlInlinedSqlExpression element)

Parameters

element SqlInlinedSqlExpression

Returns

IQueryElement

VisitSqlInlinedToSqlExpression(SqlInlinedToSqlExpression)

protected virtual IQueryElement VisitSqlInlinedToSqlExpression(SqlInlinedToSqlExpression element)

Parameters

element SqlInlinedToSqlExpression

Returns

IQueryElement

VisitSqlInsertClause(SqlInsertClause)

protected virtual IQueryElement VisitSqlInsertClause(SqlInsertClause element)

Parameters

element SqlInsertClause

Returns

IQueryElement

VisitSqlInsertOrUpdateStatement(SqlInsertOrUpdateStatement)

protected virtual IQueryElement VisitSqlInsertOrUpdateStatement(SqlInsertOrUpdateStatement element)

Parameters

element SqlInsertOrUpdateStatement

Returns

IQueryElement

VisitSqlInsertStatement(SqlInsertStatement)

protected virtual IQueryElement VisitSqlInsertStatement(SqlInsertStatement element)

Parameters

element SqlInsertStatement

Returns

IQueryElement

VisitSqlJoinedTable(SqlJoinedTable)

protected virtual IQueryElement VisitSqlJoinedTable(SqlJoinedTable element)

Parameters

element SqlJoinedTable

Returns

IQueryElement

VisitSqlMergeOperationClause(SqlMergeOperationClause)

protected virtual IQueryElement VisitSqlMergeOperationClause(SqlMergeOperationClause element)

Parameters

element SqlMergeOperationClause

Returns

IQueryElement

VisitSqlMergeStatement(SqlMergeStatement)

protected virtual IQueryElement VisitSqlMergeStatement(SqlMergeStatement element)

Parameters

element SqlMergeStatement

Returns

IQueryElement

VisitSqlMultiInsertStatement(SqlMultiInsertStatement)

protected virtual IQueryElement VisitSqlMultiInsertStatement(SqlMultiInsertStatement element)

Parameters

element SqlMultiInsertStatement

Returns

IQueryElement

VisitSqlNullabilityExpression(SqlNullabilityExpression)

protected virtual IQueryElement VisitSqlNullabilityExpression(SqlNullabilityExpression element)

Parameters

element SqlNullabilityExpression

Returns

IQueryElement

VisitSqlObjectExpression(SqlObjectExpression)

protected virtual IQueryElement VisitSqlObjectExpression(SqlObjectExpression element)

Parameters

element SqlObjectExpression

Returns

IQueryElement

VisitSqlOrderByClause(SqlOrderByClause)

protected virtual IQueryElement VisitSqlOrderByClause(SqlOrderByClause element)

Parameters

element SqlOrderByClause

Returns

IQueryElement

VisitSqlOrderByItem(SqlOrderByItem)

protected virtual IQueryElement VisitSqlOrderByItem(SqlOrderByItem element)

Parameters

element SqlOrderByItem

Returns

IQueryElement

VisitSqlOutputClause(SqlOutputClause)

protected virtual IQueryElement VisitSqlOutputClause(SqlOutputClause element)

Parameters

element SqlOutputClause

Returns

IQueryElement

VisitSqlParameter(SqlParameter)

protected virtual IQueryElement VisitSqlParameter(SqlParameter sqlParameter)

Parameters

sqlParameter SqlParameter

Returns

IQueryElement

VisitSqlQuery(SelectQuery)

protected virtual IQueryElement VisitSqlQuery(SelectQuery selectQuery)

Parameters

selectQuery SelectQuery

Returns

IQueryElement

VisitSqlQueryExtension(SqlQueryExtension)

protected virtual IQueryElement VisitSqlQueryExtension(SqlQueryExtension extension)

Parameters

extension SqlQueryExtension

Returns

IQueryElement

VisitSqlRawSqlTable(SqlRawSqlTable)

protected virtual IQueryElement VisitSqlRawSqlTable(SqlRawSqlTable element)

Parameters

element SqlRawSqlTable

Returns

IQueryElement

VisitSqlRow(SqlRowExpression)

protected virtual IQueryElement VisitSqlRow(SqlRowExpression element)

Parameters

element SqlRowExpression

Returns

IQueryElement

VisitSqlSearchCondition(SqlSearchCondition)

protected virtual IQueryElement VisitSqlSearchCondition(SqlSearchCondition element)

Parameters

element SqlSearchCondition

Returns

IQueryElement

VisitSqlSelectClause(SqlSelectClause)

protected virtual IQueryElement VisitSqlSelectClause(SqlSelectClause element)

Parameters

element SqlSelectClause

Returns

IQueryElement

VisitSqlSelectStatement(SqlSelectStatement)

protected virtual IQueryElement VisitSqlSelectStatement(SqlSelectStatement element)

Parameters

element SqlSelectStatement

Returns

IQueryElement

VisitSqlSetExpression(SqlSetExpression)

protected virtual IQueryElement VisitSqlSetExpression(SqlSetExpression element)

Parameters

element SqlSetExpression

Returns

IQueryElement

VisitSqlSetOperator(SqlSetOperator)

protected virtual IQueryElement VisitSqlSetOperator(SqlSetOperator element)

Parameters

element SqlSetOperator

Returns

IQueryElement

VisitSqlTable(SqlTable)

protected virtual IQueryElement VisitSqlTable(SqlTable element)

Parameters

element SqlTable

Returns

IQueryElement

VisitSqlTableLikeSource(SqlTableLikeSource)

protected virtual IQueryElement VisitSqlTableLikeSource(SqlTableLikeSource element)

Parameters

element SqlTableLikeSource

Returns

IQueryElement

VisitSqlTableSource(SqlTableSource)

protected virtual IQueryElement VisitSqlTableSource(SqlTableSource element)

Parameters

element SqlTableSource

Returns

IQueryElement

VisitSqlTruncateTableStatement(SqlTruncateTableStatement)

protected virtual IQueryElement VisitSqlTruncateTableStatement(SqlTruncateTableStatement element)

Parameters

element SqlTruncateTableStatement

Returns

IQueryElement

VisitSqlUpdateClause(SqlUpdateClause)

protected virtual IQueryElement VisitSqlUpdateClause(SqlUpdateClause element)

Parameters

element SqlUpdateClause

Returns

IQueryElement

VisitSqlUpdateStatement(SqlUpdateStatement)

protected virtual IQueryElement VisitSqlUpdateStatement(SqlUpdateStatement element)

Parameters

element SqlUpdateStatement

Returns

IQueryElement

VisitSqlValue(SqlValue)

protected virtual IQueryElement VisitSqlValue(SqlValue element)

Parameters

element SqlValue

Returns

IQueryElement

VisitSqlValuesTable(SqlValuesTable)

protected virtual IQueryElement VisitSqlValuesTable(SqlValuesTable element)

Parameters

element SqlValuesTable

Returns

IQueryElement

VisitSqlWhereClause(SqlWhereClause)

protected virtual IQueryElement VisitSqlWhereClause(SqlWhereClause element)

Parameters

element SqlWhereClause

Returns

IQueryElement

VisitSqlWindowOrderItem(SqlWindowOrderItem)

protected virtual IQueryElement VisitSqlWindowOrderItem(SqlWindowOrderItem element)

Parameters

element SqlWindowOrderItem

Returns

IQueryElement

VisitSqlWithClause(SqlWithClause)

protected virtual IQueryElement VisitSqlWithClause(SqlWithClause element)

Parameters

element SqlWithClause

Returns

IQueryElement

VisitTruePredicate(TruePredicate)

protected virtual IQueryElement VisitTruePredicate(SqlPredicate.TruePredicate predicate)

Parameters

predicate SqlPredicate.TruePredicate

Returns

IQueryElement