e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
53 lines
1.6 KiB
C#
53 lines
1.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Data.Linq;
|
|
|
|
namespace System.Data.Linq.SqlClient {
|
|
internal class SqlAliaser {
|
|
Visitor visitor;
|
|
|
|
internal SqlAliaser() {
|
|
this.visitor = new Visitor();
|
|
}
|
|
|
|
internal SqlNode AssociateColumnsWithAliases(SqlNode node) {
|
|
return this.visitor.Visit(node);
|
|
}
|
|
|
|
class Visitor : SqlVisitor {
|
|
SqlAlias alias;
|
|
|
|
internal Visitor() {
|
|
}
|
|
|
|
internal override SqlAlias VisitAlias(SqlAlias sqlAlias) {
|
|
SqlAlias save = this.alias;
|
|
this.alias = sqlAlias;
|
|
sqlAlias.Node = this.Visit(sqlAlias.Node);
|
|
this.alias = save;
|
|
return sqlAlias;
|
|
}
|
|
|
|
internal override SqlRow VisitRow(SqlRow row) {
|
|
foreach (SqlColumn c in row.Columns) {
|
|
c.Alias = alias;
|
|
}
|
|
return base.VisitRow(row);
|
|
}
|
|
internal override SqlTable VisitTable(SqlTable tab) {
|
|
foreach (SqlColumn c in tab.Columns) {
|
|
c.Alias = alias;
|
|
}
|
|
return base.VisitTable(tab);
|
|
}
|
|
internal override SqlExpression VisitTableValuedFunctionCall(SqlTableValuedFunctionCall fc) {
|
|
foreach (SqlColumn c in fc.Columns) {
|
|
c.Alias = this.alias;
|
|
}
|
|
return base.VisitTableValuedFunctionCall(fc);
|
|
}
|
|
}
|
|
}
|
|
}
|