예제 #1
0
        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;
        }
예제 #2
0
        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);
        }