public IQueryPlanNode PlanQuery(QueryInfo queryInfo) { if (queryInfo == null) throw new ArgumentNullException("queryInfo"); var context = queryInfo.Request; var queryExpression = queryInfo.Expression; var sortColumns = queryInfo.SortColumns; var limit = queryInfo.Limit; var queryFrom = QueryExpressionFrom.Create(context, queryExpression); var orderBy = new List<SortColumn>(); if (sortColumns != null) orderBy.AddRange(sortColumns); return PlanQuery(context, queryExpression, queryFrom, orderBy, limit); }
IStatement IPreparableStatement.Prepare(IRequest request) { var tableName = request.Query.ResolveTableName(TableName); if (!request.Query.TableExists(tableName)) throw new ObjectNotFoundException(tableName); var queryExp = new SqlQueryExpression(new SelectColumn[] {SelectColumn.Glob("*") }); queryExp.FromClause.AddTable(tableName.FullName); queryExp.WhereExpression = WhereExpression; var queryInfo = new QueryInfo(request, queryExp); if (Limit > 0) queryInfo.Limit = new QueryLimit(Limit); var queryPlan = request.Query.Context.QueryPlanner().PlanQuery(queryInfo); return new Prepared(tableName, queryPlan); }
protected override SqlStatement PrepareStatement(IRequest context) { var tableName = context.Access().ResolveTableName(TableName); if (!context.Access().TableExists(tableName)) throw new ObjectNotFoundException(tableName); var queryExp = new SqlQueryExpression(new SelectColumn[] {SelectColumn.Glob("*") }); queryExp.FromClause.AddTable(tableName.FullName); queryExp.WhereExpression = WhereExpression; var queryInfo = new QueryInfo(context, queryExp); if (Limit > 0) queryInfo.Limit = new QueryLimit(Limit); var queryPlan = context.Query.Context.QueryPlanner().PlanQuery(queryInfo); return new Prepared(tableName, queryPlan); }