Show / Hide Table of Contents

Class InsertColumnReferences

Inserts column references between tables whenever required.

Inheritance
Object
ChangeDag<Expression, Table, IExpressionVisitor>
ChangeExpressions
InsertColumnReferences
Implements
IGenericExpressionVisitor<IEnumerable<Expression>>
IExpressionVisitor
IGenericVisitor<IEnumerable<Expression>>
Inherited Members
ChangeExpressions.CreatedExpressions
ChangeExpressions.Result
ChangeExpressions.Identifier(Expression)
ChangeExpressions.ChangeIdentifier(Expression)
ChangeExpressions.Change(Aggregand)
ChangeExpressions.Change(BinaryAggregation)
ChangeExpressions.Change(BinaryOperation)
ChangeExpressions.Change(ColumnReference)
ChangeExpressions.Change(DataSourceColumn)
ChangeExpressions.Change(Extern)
ChangeExpressions.Change(Filter)
ChangeExpressions.Change(JoinKey)
ChangeExpressions.Change(Literal)
ChangeExpressions.Change(RuntimeVariable)
ChangeExpressions.Change(TernaryOperation)
ChangeExpressions.Change(UnaryAggregation)
ChangeExpressions.Change(UnaryOperation)
ChangeExpressions.Change(UnionExpression)
ChangeExpressions.Change(VectorOperation)
ChangeExpressions.Change(UnaryWindowFunction)
ChangeExpressions.Visit(Aggregand)
ChangeExpressions.Visit(BinaryAggregation)
ChangeExpressions.Visit(BinaryOperation)
ChangeExpressions.Visit(ColumnReference)
ChangeExpressions.Visit(DataSourceColumn)
ChangeExpressions.Visit(Extern)
ChangeExpressions.Visit(Filter)
ChangeExpressions.Visit(JoinKey)
ChangeExpressions.Visit(Literal)
ChangeExpressions.Visit(RuntimeVariable)
ChangeExpressions.Visit(TernaryOperation)
ChangeExpressions.Visit(UnaryAggregation)
ChangeExpressions.Visit(UnaryOperation)
ChangeExpressions.Visit(UnionExpression)
ChangeExpressions.Visit(VectorOperation)
ChangeExpressions.Visit(UnaryWindowFunction)
ChangeDag<Expression, Table, IExpressionVisitor>.Mapping
ChangeDag<Expression, Table, IExpressionVisitor>.Reset()
ChangeDag<Expression, Table, IExpressionVisitor>.Identifier(Expression)
ChangeDag<Expression, Table, IExpressionVisitor>.ChangeIdentifier(Expression)
ChangeDag<Expression, Table, IExpressionVisitor>.ReplaceParent(Expression, Expression, Expression)
ChangeDag<Expression, Table, IExpressionVisitor>.UberVisit<TSubnode>(TSubnode, Func<TSubnode, Expression>)
ChangeDag<Expression, Table, IExpressionVisitor>.UberVisit<TSubnode, TSubidentifier>(TSubnode, Func<TSubnode, Expression>)
Object.Equals(Object)
Object.Equals(Object, Object)
Object.GetHashCode()
Object.GetType()
Object.MemberwiseClone()
Object.ReferenceEquals(Object, Object)
Object.ToString()
Namespace: Mangrove.MetricSetTransformers.Normalization
Assembly: MetricSetTransformers.dll
Syntax
public class InsertColumnReferences : ChangeExpressions, IGenericExpressionVisitor<IEnumerable<Expression>>, IExpressionVisitor, IGenericVisitor<IEnumerable<Expression>>
Remarks

Note: this does not optimize (i.e., it creates new ColumnReference expressions if one already exists wrapping a given expression node).

If there are tables T1 -> T2 (reverse dependency order) and an expression e2 in T2 depends directly on an expression e1 in T1 which is not a ColumnReference, the SELECT statements produced by most emitters can fail. This transformer adds "wrapper" references e1 -> cr1 -> e2 to fix that.

Note: the precise condition for when to wrap e2 is the following: e2 needs wrap if its parent e1 is in another table and e1 is neither a ColumnReference nor a Constant. For example, if e2 = x+y with both x and y column references on T2, we do not wrap e2.

Note: this does not add intermediate expressions for dependencies which skip a table.

Methods

View Source

ReplaceParent(Expression, Expression, Expression)

Declaration
protected override Expression ReplaceParent(Expression expr, Expression oldParent, Expression newParent)
Parameters
Type Name Description
Expression expr
Expression oldParent
Expression newParent
Returns
Type Description
Expression
Overrides
Mangrove.MetricSetTransformers.Utilities.ChangeDag<Mangrove.MetricSetSyntaxTree.Expression, Mangrove.MetricSetSyntaxTree.Table, Mangrove.MetricSetSyntaxTree.IExpressionVisitor>.ReplaceParent(Mangrove.MetricSetSyntaxTree.Expression, Mangrove.MetricSetSyntaxTree.Expression, Mangrove.MetricSetSyntaxTree.Expression)

Implements

IGenericExpressionVisitor<T>
IExpressionVisitor
IGenericVisitor<T>

Extension Methods

ObjectExtensions.EventId(Object)
  • View Source
Back to top Generated by DocFX