private void GetSharedDataSetChunkAndProcess(bool processAsIRowConsumer, DataSetInfo dataSetInfo, ParameterInfoCollection datasetParameterCollection) { Global.Tracer.Assert(m_odpContext.ExternalProcessingContext != null && m_odpContext.ExternalProcessingContext.DataSetExecute != null, "Missing handler for shared dataset reference execution"); string text = null; if (!m_odpContext.ProcessReportParameters) { text = Microsoft.ReportingServices.ReportIntermediateFormat.Persistence.ChunkManager.GenerateDataChunkName(m_odpContext, m_dataSet.ID, m_odpContext.InSubreport); } IRowConsumer originalRequest = processAsIRowConsumer ? ((IRowConsumer)this) : null; bool originalRequestNeedsDataChunk = !processAsIRowConsumer || WritesDataChunk; m_odpContext.ExternalProcessingContext.DataSetExecute.Process(dataSetInfo, text, originalRequestNeedsDataChunk, originalRequest, datasetParameterCollection, m_odpContext.ExternalProcessingContext); if (processAsIRowConsumer) { if (!m_odpContext.ProcessReportParameters) { m_odpContext.OdpMetadata.AddDataChunk(text, m_dataSetInstance); } } else { m_dataReader = new ProcessingDataReader(m_dataSetInstance, m_dataSet, m_odpContext, overrideWithSharedDataSetChunkSettings: true); } }
public virtual void SetProcessingDataReader(IProcessingDataReader dataReader) { m_dataReader = dataReader; m_dataReader.OverrideWithDataReaderSettings(m_odpContext, m_dataSetInstance, m_dataSet.DataSetCore); if (base.ProcessRetrievedData) { m_dataReader.GetDataReaderMappingForRowConsumer(m_dataSetInstance, out m_iRowConsumerMappingIdentical, out m_iRowConsumerMappingDataSetFieldIndexesToDataChunk); } InitializeBeforeProcessingRows(base.HasServerAggregateMetadata); }
private void CreateProcessingDataReader(IDataReader reader, DataSourceErrorInspector errorInspector, bool readerExtensionsSupportedLocal) { List <Microsoft.ReportingServices.ReportIntermediateFormat.Field> fields = m_dataSet.Fields; int num = 0; if (fields != null) { num = ((!m_odpContext.IsSharedDataSetExecutionOnly) ? m_dataSet.NonCalculatedFieldCount : m_dataSet.Fields.Count); } string[] array = new string[num]; string[] array2 = new string[num]; for (int i = 0; i < num; i++) { Microsoft.ReportingServices.ReportIntermediateFormat.Field field = fields[i]; array[i] = field.DataField; array2[i] = field.Name; } m_executionMetrics.StartTimer(DataProcessingMetrics.MetricType.DataReaderMapping); m_dataReader = new ProcessingDataReader(m_odpContext, m_dataSetInstance, m_dataSet.Name, reader, readerExtensionsSupportedLocal || m_dataSet.HasAggregateIndicatorFields, array2, array, errorInspector); m_executionMetrics.RecordTimerMeasurement(DataProcessingMetrics.MetricType.DataReaderMapping); }