private void AddWhereParameter(MemoryDbDataReader.ResultBatchWithRawRows batch, RawData rawData, List <RawTableRow> rows, SqlWhereClause whereClause) { var tableColumn = Helper.FindTableAndColumn(null, _PartitionField, rawData.TableAliasList); var value = new SelectDataFromColumn(tableColumn, _RawData).Select(new RawTableJoinRow(rows)); rawData.Parameters.Add(new MemoryDbParameter { ParameterName = _PartitionField, Value = value }); rawData.WhereClause = whereClause.Expression; }
private MemoryDbDataReader.ResultBatchWithRawRows ExecuteSelect(SqlSelectStatement selectExpression, List <RawTableRow> rows) { var querySpecification = ( SqlQuerySpecification )selectExpression.SelectSpecification.QueryExpression; var db = (( MemoryDbConnection )_RawData.Command.Connection).GetMemoryDatabase( ); var command = new MemoryDbCommand(_RawData.Command.Connection); var batch = new MemoryDbDataReader.ResultBatchWithRawRows( ); var rawData = new RawData(command, batch) { RawRowList = _RawData.RawRowList, TableAliasList = _RawData.TableAliasList, SortOrder = selectExpression.SelectSpecification.OrderByClause.Items }; var statement = new ExecuteQueryStatement(db, command); statement.InitializeFields(batch, querySpecification.SelectClause.Children.ToList( ), rawData); if (string.IsNullOrWhiteSpace(_PartitionField) == false) { AddWhereParameter(batch, rawData, rows, querySpecification.WhereClause); } new QueryResultBuilder(rawData).AddData(batch); return(batch); }