Ejemplo n.º 1
0
        public static string WriteToString(QueryLanguage language, Expression expression)
        {
            StringWriter writer = new StringWriter();

            Write(writer, language, expression);
            return(writer.ToString());
        }
Ejemplo n.º 2
0
 private SqlFormatter(QueryLanguage language, bool forDebug)
 {
     this.indent   = 2;
     this.language = language;
     this.sb       = new StringBuilder();
     this.aliases  = new Dictionary <TableAlias, string>();
     this.forDebug = forDebug;
 }
        public static SelectExpression AddRedundantSelect(this SelectExpression sel, QueryLanguage language, TableAlias newAlias)
        {
            IEnumerable <ColumnDeclaration> columns = from d in sel.Columns
                                                      let qt = (d.Expression is ColumnExpression) ? ((IEnumerable <ColumnDeclaration>)((ColumnExpression)d.Expression).QueryType) : ((IEnumerable <ColumnDeclaration>)language.TypeSystem.GetColumnType(d.Expression.Type))
                                                               select new ColumnDeclaration(d.Name, new ColumnExpression(d.Expression.Type, qt as QueryType, newAlias, d.Name), qt as QueryType);

            return(new SelectExpression(sel.Alias, columns, new SelectExpression(newAlias, sel.Columns, sel.From, sel.Where, sel.OrderBy, sel.GroupBy, sel.IsDistinct, sel.Skip, sel.Take, sel.IsReverse), null, null, null, false, null, null, false));
        }
Ejemplo n.º 4
0
 private ColumnProjector(QueryLanguage language, Expression expression, IEnumerable <ColumnDeclaration> existingColumns, TableAlias newAlias, IEnumerable <TableAlias> existingAliases)
 {
     this.language        = language;
     this.newAlias        = newAlias;
     this.existingAliases = new HashSet <TableAlias>(existingAliases);
     this.map             = new Dictionary <ColumnExpression, ColumnExpression>();
     if (existingColumns != null)
     {
         this.columns     = new List <ColumnDeclaration>(existingColumns);
         this.columnNames = new HashSet <string>(from c in existingColumns select c.Name);
     }
     else
     {
         this.columns     = new List <ColumnDeclaration>();
         this.columnNames = new HashSet <string>();
     }
     this.candidates = Nominator.Nominate(language, expression);
 }
Ejemplo n.º 5
0
 private Nominator(QueryLanguage language)
 {
     this.language   = language;
     this.candidates = new HashSet <Expression>();
     this.isBlocked  = false;
 }
Ejemplo n.º 6
0
 private Parameterizer(QueryLanguage language)
 {
     this.language = language;
 }
Ejemplo n.º 7
0
 private OrderByRewriter(QueryLanguage language)
 {
     this.language          = language;
     this.isOuterMostSelect = true;
 }
Ejemplo n.º 8
0
 private SkipToNestedOrderByRewriter(QueryLanguage language)
 {
     this.language = language;
 }
Ejemplo n.º 9
0
 protected SqlFormatter(QueryLanguage language) : this(language, false)
 {
 }
Ejemplo n.º 10
0
 private AggregateRewriter(QueryLanguage language, Expression expr)
 {
     this.language = language;
     this.map      = new Dictionary <AggregateSubqueryExpression, Expression>();
     this.lookup   = AggregateGatherer.Gather(expr).ToLookup <AggregateSubqueryExpression, TableAlias>(a => a.GroupByAlias);
 }
Ejemplo n.º 11
0
        public static ProjectedColumns ProjectColumns(QueryLanguage language, Expression expression, IEnumerable <ColumnDeclaration> existingColumns, TableAlias newAlias, IEnumerable <TableAlias> existingAliases)
        {
            ColumnProjector projector = new ColumnProjector(language, expression, existingColumns, newAlias, existingAliases);

            return(new ProjectedColumns(projector.Visit(expression), projector.columns.AsReadOnly()));
        }
 private ClientJoinedProjectionRewriter(QueryPolicy policy, QueryLanguage language)
 {
     this.policy   = policy;
     this.language = language;
 }
 public static Expression Rewrite(QueryLanguage language, Expression expression)
 {
     return(new SingletonProjectionRewriter(language).Visit(expression));
 }
 private SingletonProjectionRewriter(QueryLanguage language)
 {
     this.language = language;
 }
Ejemplo n.º 15
0
 private RelationshipBinder(QueryMapper mapper)
 {
     this.mapper   = mapper;
     this.mapping  = mapper.Mapping;
     this.language = mapper.Translator.Linguist.Language;
 }
Ejemplo n.º 16
0
 public QueryLinguist(QueryLanguage language, QueryTranslator translator)
 {
     this.language   = language;
     this.translator = translator;
 }
Ejemplo n.º 17
0
 public static Expression Rewrite(QueryLanguage language, Expression expression)
 {
     return(new SkipToNestedOrderByRewriter(language).Visit(expression));
 }
Ejemplo n.º 18
0
 internal static HashSet <Expression> Nominate(QueryLanguage language, Expression expression)
 {
     ColumnProjector.Nominator nominator = new ColumnProjector.Nominator(language);
     nominator.Visit(expression);
     return(nominator.candidates);
 }
 public static Expression Rewrite(QueryPolicy policy, QueryLanguage language, Expression expression)
 {
     return(new ClientJoinedProjectionRewriter(policy, language).Visit(expression));
 }
Ejemplo n.º 20
0
 private SkipToRowNumberRewriter(QueryLanguage language)
 {
     this.language = language;
 }
Ejemplo n.º 21
0
 public static ProjectedColumns ProjectColumns(QueryLanguage language, Expression expression, IEnumerable <ColumnDeclaration> existingColumns, TableAlias newAlias, params TableAlias[] existingAliases)
 {
     return(ProjectColumns(language, expression, existingColumns, newAlias, (IEnumerable <TableAlias>)existingAliases));
 }
        public static ProjectionExpression AddOuterJoinTest(this ProjectionExpression proj, QueryLanguage language, Expression expression)
        {
            string           availableColumnName = proj.Select.Columns.GetAvailableColumnName("Test");
            QueryType        columnType          = language.TypeSystem.GetColumnType(expression.Type);
            SelectExpression source = proj.Select.AddColumn(new ColumnDeclaration(availableColumnName, expression, columnType));

            return(new ProjectionExpression(source, new OuterJoinedExpression(new ColumnExpression(expression.Type, columnType, source.Alias, availableColumnName), proj.Projector), proj.Aggregator));
        }
Ejemplo n.º 23
0
 public static Expression Rewrite(QueryLanguage language, Expression expr)
 {
     return(new AggregateRewriter(language, expr).Visit(expr));
 }
 private CrossApplyRewriter(QueryLanguage language)
 {
     this.language = language;
 }
Ejemplo n.º 25
0
 public static Expression Rewrite(QueryLanguage language, Expression expression)
 {
     return(new SkipToRowNumberRewriter(language).Visit(expression));
 }
Ejemplo n.º 26
0
 public static Expression Parameterize(QueryLanguage language, Expression expression)
 {
     return(new Parameterizer(language).Visit(expression));
 }
Ejemplo n.º 27
0
 protected DbExpressionWriter(TextWriter writer, QueryLanguage language) : base(writer)
 {
     this.aliasMap = new Dictionary <TableAlias, int>();
     this.language = language;
 }
Ejemplo n.º 28
0
 public static void Write(TextWriter writer, QueryLanguage language, Expression expression)
 {
     new DbExpressionWriter(writer, language).Visit(expression);
 }
 public static Expression Rewrite(QueryLanguage language, Expression expression)
 {
     return(new CrossApplyRewriter(language).Visit(expression));
 }
Ejemplo n.º 30
0
 public QueryTranslator(QueryLanguage language, QueryMapping mapping, QueryPolicy policy)
 {
     this.linguist = language.CreateLinguist(this);
     this.mapper   = mapping.CreateMapper(this);
     this.police   = policy.CreatePolice(this);
 }