Table of Contents

Class SqlQueryColumnOptimizerVisitor

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

Two-pass visitor that removes unused columns from SelectQuery. Pass 1: Collects all column references (read-only behavior) Pass 2: Removes unused columns (modify)

public sealed class SqlQueryColumnOptimizerVisitor : QueryElementVisitor
Inheritance
object
SqlQueryColumnOptimizerVisitor
Inherited Members
Extension Methods

Constructors

SqlQueryColumnOptimizerVisitor()

Two-pass visitor that removes unused columns from SelectQuery. Pass 1: Collects all column references (read-only behavior) Pass 2: Removes unused columns (modify)

public SqlQueryColumnOptimizerVisitor()

Methods

Cleanup()

Resets visitor to initial state.

public override void Cleanup()

OptimizeColumns(IQueryElement)

Optimizes column usage in two passes: Pass 1: Collect all column references (no modifications) Pass 2: Remove unused columns (modify)

public IQueryElement OptimizeColumns(IQueryElement root)

Parameters

root IQueryElement

Returns

IQueryElement

VisitCteClause(CteClause)

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

protected override IQueryElement VisitCteClause(CteClause element)

Parameters

element CteClause

Returns

IQueryElement

VisitExistsPredicate(Exists)

protected override IQueryElement VisitExistsPredicate(SqlPredicate.Exists predicate)

Parameters

predicate SqlPredicate.Exists

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

VisitSqlFieldReference(SqlField)

Visitor for SqlField reference from query expressions.

protected override IQueryElement VisitSqlFieldReference(SqlField element)

Parameters

element SqlField

Returns

IQueryElement

VisitSqlFromClause(SqlFromClause)

protected override IQueryElement VisitSqlFromClause(SqlFromClause element)

Parameters

element SqlFromClause

Returns

IQueryElement

VisitSqlGroupByClause(SqlGroupByClause)

protected override IQueryElement VisitSqlGroupByClause(SqlGroupByClause element)

Parameters

element SqlGroupByClause

Returns

IQueryElement

VisitSqlInsertOrUpdateStatement(SqlInsertOrUpdateStatement)

protected override IQueryElement VisitSqlInsertOrUpdateStatement(SqlInsertOrUpdateStatement element)

Parameters

element SqlInsertOrUpdateStatement

Returns

IQueryElement

VisitSqlOrderByClause(SqlOrderByClause)

protected override IQueryElement VisitSqlOrderByClause(SqlOrderByClause element)

Parameters

element SqlOrderByClause

Returns

IQueryElement

VisitSqlQuery(SelectQuery)

protected override IQueryElement VisitSqlQuery(SelectQuery selectQuery)

Parameters

selectQuery SelectQuery

Returns

IQueryElement

VisitSqlSearchCondition(SqlSearchCondition)

protected override IQueryElement VisitSqlSearchCondition(SqlSearchCondition element)

Parameters

element SqlSearchCondition

Returns

IQueryElement

VisitSqlTableLikeSource(SqlTableLikeSource)

protected override IQueryElement VisitSqlTableLikeSource(SqlTableLikeSource element)

Parameters

element SqlTableLikeSource

Returns

IQueryElement

VisitSqlUpdateStatement(SqlUpdateStatement)

protected override IQueryElement VisitSqlUpdateStatement(SqlUpdateStatement element)

Parameters

element SqlUpdateStatement

Returns

IQueryElement