Class QueryElementVisitor
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
visitModeVisitMode
Properties
VisitMode
Gets default visitor inspection mode.
public VisitMode VisitMode { get; }
Property Value
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
fieldsIReadOnlyList<SqlField>
Returns
CreateInvalidVisitModeException(string?)
protected Exception CreateInvalidVisitModeException(string? methodName = null)
Parameters
methodNamestring
Returns
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
elementIQueryElement
Returns
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
newElementIQueryElementNew query element.
oldElementIQueryElementOld 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
elementIQueryElement
Returns
Visit(IQueryElement?)
Visitor dispatch method.
public virtual IQueryElement? Visit(IQueryElement? element)
Parameters
elementIQueryElement
Returns
VisitBetweenPredicate(Between)
protected virtual IQueryElement VisitBetweenPredicate(SqlPredicate.Between predicate)
Parameters
predicateSqlPredicate.Between
Returns
VisitCaseItem(CaseItem)
protected virtual SqlCaseExpression.CaseItem VisitCaseItem(SqlCaseExpression.CaseItem element)
Parameters
elementSqlCaseExpression.CaseItem
Returns
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
elementCteClause
Returns
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
elementCteClause
Returns
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
Returns
- List<T>
Return value depends on
modevalue:
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
Returns
- List<T>
Return value depends on
modevalue:
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
arr1T[]modeVisitMode
Returns
- T[]
Return value depends on
modevalue:
Type Parameters
T
VisitExistsPredicate(Exists)
protected virtual IQueryElement VisitExistsPredicate(SqlPredicate.Exists predicate)
Parameters
predicateSqlPredicate.Exists
Returns
VisitExprExprPredicate(ExprExpr)
protected virtual IQueryElement VisitExprExprPredicate(SqlPredicate.ExprExpr predicate)
Parameters
predicateSqlPredicate.ExprExpr
Returns
VisitExprPredicate(Expr)
protected virtual IQueryElement VisitExprPredicate(SqlPredicate.Expr predicate)
Parameters
predicateSqlPredicate.Expr
Returns
VisitFalsePredicate(FalsePredicate)
protected virtual IQueryElement VisitFalsePredicate(SqlPredicate.FalsePredicate predicate)
Parameters
predicateSqlPredicate.FalsePredicate
Returns
VisitInListPredicate(InList)
protected virtual IQueryElement VisitInListPredicate(SqlPredicate.InList predicate)
Parameters
predicateSqlPredicate.InList
Returns
VisitInSubQueryPredicate(InSubQuery)
protected virtual IQueryElement VisitInSubQueryPredicate(SqlPredicate.InSubQuery predicate)
Parameters
predicateSqlPredicate.InSubQuery
Returns
VisitIsDistinctPredicate(IsDistinct)
protected virtual IQueryElement VisitIsDistinctPredicate(SqlPredicate.IsDistinct predicate)
Parameters
predicateSqlPredicate.IsDistinct
Returns
VisitIsNullPredicate(IsNull)
protected virtual IQueryElement VisitIsNullPredicate(SqlPredicate.IsNull predicate)
Parameters
predicateSqlPredicate.IsNull
Returns
VisitIsTruePredicate(IsTrue)
protected virtual IQueryElement VisitIsTruePredicate(SqlPredicate.IsTrue predicate)
Parameters
predicateSqlPredicate.IsTrue
Returns
VisitLikePredicate(Like)
protected virtual IQueryElement VisitLikePredicate(SqlPredicate.Like predicate)
Parameters
predicateSqlPredicate.Like
Returns
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
Returns
- List<T[]>
Return value depends on
modevalue:
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
Returns
Type Parameters
T
VisitNotPredicate(Not)
protected virtual IQueryElement VisitNotPredicate(SqlPredicate.Not predicate)
Parameters
predicateSqlPredicate.Not
Returns
VisitSearchStringPredicate(SearchString)
protected virtual IQueryElement VisitSearchStringPredicate(SqlPredicate.SearchString predicate)
Parameters
predicateSqlPredicate.SearchString
Returns
VisitSqlAliasPlaceholder(SqlAliasPlaceholder)
protected virtual IQueryElement VisitSqlAliasPlaceholder(SqlAliasPlaceholder element)
Parameters
elementSqlAliasPlaceholder
Returns
VisitSqlAnchor(SqlAnchor)
protected virtual IQueryElement VisitSqlAnchor(SqlAnchor element)
Parameters
elementSqlAnchor
Returns
VisitSqlBinaryExpression(SqlBinaryExpression)
protected virtual IQueryElement VisitSqlBinaryExpression(SqlBinaryExpression element)
Parameters
elementSqlBinaryExpression
Returns
VisitSqlCaseExpression(SqlCaseExpression)
protected virtual IQueryElement VisitSqlCaseExpression(SqlCaseExpression element)
Parameters
elementSqlCaseExpression
Returns
VisitSqlCastExpression(SqlCastExpression)
protected virtual IQueryElement VisitSqlCastExpression(SqlCastExpression element)
Parameters
elementSqlCastExpression
Returns
VisitSqlCoalesceExpression(SqlCoalesceExpression)
protected virtual 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 virtual 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 virtual IQueryElement VisitSqlColumnReference(SqlColumn element)
Parameters
elementSqlColumn
Returns
VisitSqlComment(SqlComment)
protected virtual IQueryElement VisitSqlComment(SqlComment element)
Parameters
elementSqlComment
Returns
VisitSqlCompareToExpression(SqlCompareToExpression)
protected virtual IQueryElement VisitSqlCompareToExpression(SqlCompareToExpression element)
Parameters
elementSqlCompareToExpression
Returns
VisitSqlConditionExpression(SqlConditionExpression)
protected virtual IQueryElement VisitSqlConditionExpression(SqlConditionExpression element)
Parameters
elementSqlConditionExpression
Returns
VisitSqlConditionalInsertClause(SqlConditionalInsertClause)
protected virtual IQueryElement VisitSqlConditionalInsertClause(SqlConditionalInsertClause element)
Parameters
elementSqlConditionalInsertClause
Returns
VisitSqlCreateTableStatement(SqlCreateTableStatement)
protected virtual IQueryElement VisitSqlCreateTableStatement(SqlCreateTableStatement element)
Parameters
elementSqlCreateTableStatement
Returns
VisitSqlCteTable(SqlCteTable)
protected virtual IQueryElement VisitSqlCteTable(SqlCteTable element)
Parameters
elementSqlCteTable
Returns
VisitSqlDataType(SqlDataType)
protected virtual IQueryElement VisitSqlDataType(SqlDataType element)
Parameters
elementSqlDataType
Returns
VisitSqlDeleteStatement(SqlDeleteStatement)
protected virtual IQueryElement VisitSqlDeleteStatement(SqlDeleteStatement element)
Parameters
elementSqlDeleteStatement
Returns
VisitSqlDropTableStatement(SqlDropTableStatement)
protected virtual IQueryElement VisitSqlDropTableStatement(SqlDropTableStatement element)
Parameters
elementSqlDropTableStatement
Returns
VisitSqlExpression(SqlExpression)
protected virtual IQueryElement VisitSqlExpression(SqlExpression element)
Parameters
elementSqlExpression
Returns
VisitSqlExtendedFunction(SqlExtendedFunction)
Visitor for SqlExtendedFunction.
protected virtual IQueryElement VisitSqlExtendedFunction(SqlExtendedFunction element)
Parameters
elementSqlExtendedFunction
Returns
VisitSqlFieldReference(SqlField)
Visitor for SqlField reference from query expressions.
protected virtual IQueryElement VisitSqlFieldReference(SqlField element)
Parameters
elementSqlField
Returns
VisitSqlFragment(SqlFragment)
protected virtual IQueryElement VisitSqlFragment(SqlFragment element)
Parameters
elementSqlFragment
Returns
VisitSqlFrameBoundary(SqlFrameBoundary)
protected virtual IQueryElement VisitSqlFrameBoundary(SqlFrameBoundary element)
Parameters
elementSqlFrameBoundary
Returns
VisitSqlFrameClause(SqlFrameClause)
Visitor for SqlFrameClause.
protected virtual IQueryElement VisitSqlFrameClause(SqlFrameClause element)
Parameters
elementSqlFrameClause
Returns
VisitSqlFromClause(SqlFromClause)
protected virtual IQueryElement VisitSqlFromClause(SqlFromClause element)
Parameters
elementSqlFromClause
Returns
VisitSqlFunction(SqlFunction)
protected virtual IQueryElement VisitSqlFunction(SqlFunction element)
Parameters
elementSqlFunction
Returns
VisitSqlFunctionArgument(SqlFunctionArgument)
protected virtual IQueryElement VisitSqlFunctionArgument(SqlFunctionArgument element)
Parameters
elementSqlFunctionArgument
Returns
VisitSqlGroupByClause(SqlGroupByClause)
protected virtual IQueryElement VisitSqlGroupByClause(SqlGroupByClause element)
Parameters
elementSqlGroupByClause
Returns
VisitSqlGroupByItem(ISqlExpression)
protected virtual ISqlExpression VisitSqlGroupByItem(ISqlExpression element)
Parameters
elementISqlExpression
Returns
VisitSqlGroupingSet(SqlGroupingSet)
protected virtual IQueryElement VisitSqlGroupingSet(SqlGroupingSet element)
Parameters
elementSqlGroupingSet
Returns
VisitSqlHavingClause(SqlHavingClause)
protected virtual IQueryElement VisitSqlHavingClause(SqlHavingClause element)
Parameters
elementSqlHavingClause
Returns
VisitSqlInlinedSqlExpression(SqlInlinedSqlExpression)
protected virtual IQueryElement VisitSqlInlinedSqlExpression(SqlInlinedSqlExpression element)
Parameters
elementSqlInlinedSqlExpression
Returns
VisitSqlInlinedToSqlExpression(SqlInlinedToSqlExpression)
protected virtual IQueryElement VisitSqlInlinedToSqlExpression(SqlInlinedToSqlExpression element)
Parameters
elementSqlInlinedToSqlExpression
Returns
VisitSqlInsertClause(SqlInsertClause)
protected virtual IQueryElement VisitSqlInsertClause(SqlInsertClause element)
Parameters
elementSqlInsertClause
Returns
VisitSqlInsertOrUpdateStatement(SqlInsertOrUpdateStatement)
protected virtual IQueryElement VisitSqlInsertOrUpdateStatement(SqlInsertOrUpdateStatement element)
Parameters
elementSqlInsertOrUpdateStatement
Returns
VisitSqlInsertStatement(SqlInsertStatement)
protected virtual IQueryElement VisitSqlInsertStatement(SqlInsertStatement element)
Parameters
elementSqlInsertStatement
Returns
VisitSqlJoinedTable(SqlJoinedTable)
protected virtual IQueryElement VisitSqlJoinedTable(SqlJoinedTable element)
Parameters
elementSqlJoinedTable
Returns
VisitSqlMergeOperationClause(SqlMergeOperationClause)
protected virtual IQueryElement VisitSqlMergeOperationClause(SqlMergeOperationClause element)
Parameters
elementSqlMergeOperationClause
Returns
VisitSqlMergeStatement(SqlMergeStatement)
protected virtual IQueryElement VisitSqlMergeStatement(SqlMergeStatement element)
Parameters
elementSqlMergeStatement
Returns
VisitSqlMultiInsertStatement(SqlMultiInsertStatement)
protected virtual IQueryElement VisitSqlMultiInsertStatement(SqlMultiInsertStatement element)
Parameters
elementSqlMultiInsertStatement
Returns
VisitSqlNullabilityExpression(SqlNullabilityExpression)
protected virtual IQueryElement VisitSqlNullabilityExpression(SqlNullabilityExpression element)
Parameters
elementSqlNullabilityExpression
Returns
VisitSqlObjectExpression(SqlObjectExpression)
protected virtual IQueryElement VisitSqlObjectExpression(SqlObjectExpression element)
Parameters
elementSqlObjectExpression
Returns
VisitSqlOrderByClause(SqlOrderByClause)
protected virtual IQueryElement VisitSqlOrderByClause(SqlOrderByClause element)
Parameters
elementSqlOrderByClause
Returns
VisitSqlOrderByItem(SqlOrderByItem)
protected virtual IQueryElement VisitSqlOrderByItem(SqlOrderByItem element)
Parameters
elementSqlOrderByItem
Returns
VisitSqlOutputClause(SqlOutputClause)
protected virtual IQueryElement VisitSqlOutputClause(SqlOutputClause element)
Parameters
elementSqlOutputClause
Returns
VisitSqlParameter(SqlParameter)
protected virtual IQueryElement VisitSqlParameter(SqlParameter sqlParameter)
Parameters
sqlParameterSqlParameter
Returns
VisitSqlQuery(SelectQuery)
protected virtual IQueryElement VisitSqlQuery(SelectQuery selectQuery)
Parameters
selectQuerySelectQuery
Returns
VisitSqlQueryExtension(SqlQueryExtension)
protected virtual IQueryElement VisitSqlQueryExtension(SqlQueryExtension extension)
Parameters
extensionSqlQueryExtension
Returns
VisitSqlRawSqlTable(SqlRawSqlTable)
protected virtual IQueryElement VisitSqlRawSqlTable(SqlRawSqlTable element)
Parameters
elementSqlRawSqlTable
Returns
VisitSqlRow(SqlRowExpression)
protected virtual IQueryElement VisitSqlRow(SqlRowExpression element)
Parameters
elementSqlRowExpression
Returns
VisitSqlSearchCondition(SqlSearchCondition)
protected virtual IQueryElement VisitSqlSearchCondition(SqlSearchCondition element)
Parameters
elementSqlSearchCondition
Returns
VisitSqlSelectClause(SqlSelectClause)
protected virtual IQueryElement VisitSqlSelectClause(SqlSelectClause element)
Parameters
elementSqlSelectClause
Returns
VisitSqlSelectStatement(SqlSelectStatement)
protected virtual IQueryElement VisitSqlSelectStatement(SqlSelectStatement element)
Parameters
elementSqlSelectStatement
Returns
VisitSqlSetExpression(SqlSetExpression)
protected virtual IQueryElement VisitSqlSetExpression(SqlSetExpression element)
Parameters
elementSqlSetExpression
Returns
VisitSqlSetOperator(SqlSetOperator)
protected virtual IQueryElement VisitSqlSetOperator(SqlSetOperator element)
Parameters
elementSqlSetOperator
Returns
VisitSqlTable(SqlTable)
protected virtual IQueryElement VisitSqlTable(SqlTable element)
Parameters
elementSqlTable
Returns
VisitSqlTableLikeSource(SqlTableLikeSource)
protected virtual IQueryElement VisitSqlTableLikeSource(SqlTableLikeSource element)
Parameters
elementSqlTableLikeSource
Returns
VisitSqlTableSource(SqlTableSource)
protected virtual IQueryElement VisitSqlTableSource(SqlTableSource element)
Parameters
elementSqlTableSource
Returns
VisitSqlTruncateTableStatement(SqlTruncateTableStatement)
protected virtual IQueryElement VisitSqlTruncateTableStatement(SqlTruncateTableStatement element)
Parameters
elementSqlTruncateTableStatement
Returns
VisitSqlUpdateClause(SqlUpdateClause)
protected virtual IQueryElement VisitSqlUpdateClause(SqlUpdateClause element)
Parameters
elementSqlUpdateClause
Returns
VisitSqlUpdateStatement(SqlUpdateStatement)
protected virtual IQueryElement VisitSqlUpdateStatement(SqlUpdateStatement element)
Parameters
elementSqlUpdateStatement
Returns
VisitSqlValue(SqlValue)
protected virtual IQueryElement VisitSqlValue(SqlValue element)
Parameters
elementSqlValue
Returns
VisitSqlValuesTable(SqlValuesTable)
protected virtual IQueryElement VisitSqlValuesTable(SqlValuesTable element)
Parameters
elementSqlValuesTable
Returns
VisitSqlWhereClause(SqlWhereClause)
protected virtual IQueryElement VisitSqlWhereClause(SqlWhereClause element)
Parameters
elementSqlWhereClause
Returns
VisitSqlWindowOrderItem(SqlWindowOrderItem)
protected virtual IQueryElement VisitSqlWindowOrderItem(SqlWindowOrderItem element)
Parameters
elementSqlWindowOrderItem
Returns
VisitSqlWithClause(SqlWithClause)
protected virtual IQueryElement VisitSqlWithClause(SqlWithClause element)
Parameters
elementSqlWithClause
Returns
VisitTruePredicate(TruePredicate)
protected virtual IQueryElement VisitTruePredicate(SqlPredicate.TruePredicate predicate)
Parameters
predicateSqlPredicate.TruePredicate