internal SqlDataRecord(SmiRecordBuffer recordBuffer, params SmiExtendedMetaData[] metaData) { Debug.Assert(null != recordBuffer, "invalid attempt to instantiate SqlDataRecord with null SmiRecordBuffer"); Debug.Assert(null != metaData, "invalid attempt to instantiate SqlDataRecord with null SmiExtendedMetaData[]"); _columnMetaData = new SqlMetaData[metaData.Length]; _columnSmiMetaData = new SmiExtendedMetaData[metaData.Length]; for (int i = 0; i < _columnSmiMetaData.Length; i++) { _columnSmiMetaData[i] = metaData[i]; _columnMetaData[i] = MetaDataUtilsSmi.SmiExtendedMetaDataToSqlMetaData(_columnSmiMetaData[i]); } _eventSink = new SmiEventSink_Default( ); if (InOutOfProcHelper.InProc) { _recordContext = SmiContextFactory.Instance.GetCurrentContext(); } else { _recordContext = null; } _recordBuffer = recordBuffer; _eventSink.ProcessMessagesAndThrow(); }
internal void OnOutOfScope( ) { _metaDataSent = null; _recordBufferSent = null; _hadErrorInResultSet = false; _isBusy = false; }
public void SendResultsStart(SqlDataRecord record) { ADP.CheckArgumentNull(record, "record"); SetPipeBusy( ); try { EnsureNormalSendValid("SendResultsStart"); SmiRecordBuffer recordBuffer = record.RecordBuffer; if (record.RecordContext == _smiContext) { recordBuffer = record.RecordBuffer; } else { recordBuffer = _smiContext.CreateRecordBuffer(record.InternalGetSmiMetaData(), _eventSink); // Only MetaData needed for sending start } _smiContext.SendResultsStartToPipe(recordBuffer, _eventSink); // Handle any errors that are reported. _eventSink.ProcessMessagesAndThrow(); // remember sent buffer info so it can be used in send row/end. _recordBufferSent = recordBuffer; _metaDataSent = record.InternalGetMetaData(); } catch { _eventSink.CleanMessages(); throw; } finally { ClearPipeBusy( ); Debug.Assert(_eventSink.HasMessages == false, "There should be no messages left in _eventsink at the end of the SendResultsStart!"); } }
// // SqlDataRecord public API // public SqlDataRecord(params SqlMetaData[] metaData) { // Initial consistency check if (null == metaData) { throw ADP.ArgumentNull(nameof(metaData)); } _columnMetaData = new SqlMetaData[metaData.Length]; _columnSmiMetaData = new SmiExtendedMetaData[metaData.Length]; for (int i = 0; i < _columnSmiMetaData.Length; i++) { if (null == metaData[i]) { throw ADP.ArgumentNull($"{nameof(metaData)}[{i}]"); } _columnMetaData[i] = metaData[i]; _columnSmiMetaData[i] = MetaDataUtilsSmi.SqlMetaDataToSmiExtendedMetaData(_columnMetaData[i]); } _eventSink = new SmiEventSink_Default(); _recordBuffer = new MemoryRecordBuffer(_columnSmiMetaData); _usesStringStorageForXml = true; _eventSink.ProcessMessagesAndThrow(); }
public void SendResultsStart(SqlDataRecord record) { ADP.CheckArgumentNull(record, "record"); this.SetPipeBusy(); try { this.EnsureNormalSendValid("SendResultsStart"); SmiRecordBuffer recordBuffer = record.RecordBuffer; if (record.RecordContext == this._smiContext) { recordBuffer = record.RecordBuffer; } else { recordBuffer = this._smiContext.CreateRecordBuffer(record.InternalGetSmiMetaData(), this._eventSink); } this._smiContext.SendResultsStartToPipe(recordBuffer, this._eventSink); this._eventSink.ProcessMessagesAndThrow(); this._recordBufferSent = recordBuffer; this._metaDataSent = record.InternalGetMetaData(); } finally { this.ClearPipeBusy(); } }
public void SendResultsEnd( ) { SetPipeBusy( ); try { EnsureResultStarted("SendResultsEnd"); _smiContext.SendResultsEndToPipe(_recordBufferSent, _eventSink); // Once end called down to native code, assume end of resultset _metaDataSent = null; _recordBufferSent = null; _hadErrorInResultSet = false; // Handle any errors that are reported. _eventSink.ProcessMessagesAndThrow(); } catch { _eventSink.CleanMessages(); throw; } finally { ClearPipeBusy( ); Debug.Assert(_eventSink.HasMessages == false, "There should be no messages left in _eventsink at the end of the SendResultsEnd!"); } }
// Send results from SqlDataReader public void Send(SqlDataReader reader) { ADP.CheckArgumentNull(reader, "reader"); SetPipeBusy( ); try { EnsureNormalSendValid("Send"); do { SmiExtendedMetaData[] columnMetaData = reader.GetInternalSmiMetaData(); if (null != columnMetaData && 0 != columnMetaData.Length) // SQLBUDT #340528 -- don't send empty results. { using (SmiRecordBuffer recordBuffer = _smiContext.CreateRecordBuffer(columnMetaData, _eventSink)) { _eventSink.ProcessMessagesAndThrow(); // Handle any errors that are reported. _smiContext.SendResultsStartToPipe(recordBuffer, _eventSink); _eventSink.ProcessMessagesAndThrow(); // Handle any errors that are reported. try { while (reader.Read( )) { if (SmiContextFactory.Instance.NegotiatedSmiVersion >= SmiContextFactory.KatmaiVersion) { ValueUtilsSmi.FillCompatibleSettersFromReader(_eventSink, recordBuffer, new List <SmiExtendedMetaData>(columnMetaData), reader); } else { ValueUtilsSmi.FillCompatibleITypedSettersFromReader(_eventSink, recordBuffer, columnMetaData, reader); } _smiContext.SendResultsRowToPipe(recordBuffer, _eventSink); _eventSink.ProcessMessagesAndThrow(); // Handle any errors that are reported. } } finally { _smiContext.SendResultsEndToPipe(recordBuffer, _eventSink); _eventSink.ProcessMessagesAndThrow(); // Handle any errors that are reported. } } } }while (reader.NextResult( )); } catch { _eventSink.CleanMessages(); throw; } finally { ClearPipeBusy( ); Debug.Assert(_eventSink.HasMessages == false, "There should be no messages left in _eventsink at the end of the Send reader!"); } }
public void Send(SqlDataReader reader) { ADP.CheckArgumentNull(reader, "reader"); this.SetPipeBusy(); try { this.EnsureNormalSendValid("Send"); do { SmiExtendedMetaData[] internalSmiMetaData = reader.GetInternalSmiMetaData(); if ((internalSmiMetaData != null) && (internalSmiMetaData.Length != 0)) { using (SmiRecordBuffer buffer = this._smiContext.CreateRecordBuffer(internalSmiMetaData, this._eventSink)) { this._eventSink.ProcessMessagesAndThrow(); this._smiContext.SendResultsStartToPipe(buffer, this._eventSink); this._eventSink.ProcessMessagesAndThrow(); try { while (reader.Read()) { if (SmiContextFactory.Instance.NegotiatedSmiVersion >= 210L) { ValueUtilsSmi.FillCompatibleSettersFromReader(this._eventSink, buffer, new List <SmiExtendedMetaData>(internalSmiMetaData), reader); } else { ValueUtilsSmi.FillCompatibleITypedSettersFromReader(this._eventSink, buffer, internalSmiMetaData, reader); } this._smiContext.SendResultsRowToPipe(buffer, this._eventSink); this._eventSink.ProcessMessagesAndThrow(); } } finally { this._smiContext.SendResultsEndToPipe(buffer, this._eventSink); this._eventSink.ProcessMessagesAndThrow(); } } } }while (reader.NextResult()); } finally { this.ClearPipeBusy(); } }
public void SendResultsEnd() { this.SetPipeBusy(); try { this.EnsureResultStarted("SendResultsEnd"); this._smiContext.SendResultsEndToPipe(this._recordBufferSent, this._eventSink); this._metaDataSent = null; this._recordBufferSent = null; this._hadErrorInResultSet = false; this._eventSink.ProcessMessagesAndThrow(); } finally { this.ClearPipeBusy(); } }
internal SqlDataRecord(SmiRecordBuffer recordBuffer, params SmiExtendedMetaData[] metaData) { Debug.Assert(null != recordBuffer, "invalid attempt to instantiate SqlDataRecord with null SmiRecordBuffer"); Debug.Assert(null != metaData, "invalid attempt to instantiate SqlDataRecord with null SmiExtendedMetaData[]"); _columnMetaData = new SqlMetaData[metaData.Length]; _columnSmiMetaData = new SmiExtendedMetaData[metaData.Length]; for (int i = 0; i < _columnSmiMetaData.Length; i++) { _columnSmiMetaData[i] = metaData[i]; _columnMetaData[i] = MetaDataUtilsSmi.SmiExtendedMetaDataToSqlMetaData(_columnSmiMetaData[i]); } _eventSink = new SmiEventSink_Default(); _recordBuffer = recordBuffer; _eventSink.ProcessMessagesAndThrow(); }
// // SqlDataRecord public API // public SqlDataRecord(params SqlMetaData[] metaData) { // Initial consistency check if (null == metaData) { throw ADP.ArgumentNull("metadata"); } _columnMetaData = new SqlMetaData[metaData.Length]; _columnSmiMetaData = new SmiExtendedMetaData[metaData.Length]; ulong smiVersion = SmiVersion; for (int i = 0; i < _columnSmiMetaData.Length; i++) { if (null == metaData[i]) { throw ADP.ArgumentNull("metadata[" + i + "]"); } _columnMetaData[i] = metaData[i]; _columnSmiMetaData[i] = MetaDataUtilsSmi.SqlMetaDataToSmiExtendedMetaData(_columnMetaData[i]); if (!MetaDataUtilsSmi.IsValidForSmiVersion(_columnSmiMetaData[i], smiVersion)) { throw ADP.VersionDoesNotSupportDataType(_columnSmiMetaData[i].TypeName); } } _eventSink = new SmiEventSink_Default( ); if (InOutOfProcHelper.InProc) { _recordContext = SmiContextFactory.Instance.GetCurrentContext(); _recordBuffer = _recordContext.CreateRecordBuffer(_columnSmiMetaData, _eventSink); _usesStringStorageForXml = false; } else { _recordContext = null; _recordBuffer = new MemoryRecordBuffer(_columnSmiMetaData); _usesStringStorageForXml = true; } _eventSink.ProcessMessagesAndThrow(); }
internal SqlDataRecord(SmiRecordBuffer recordBuffer, params SmiExtendedMetaData[] metaData) { this._columnMetaData = new SqlMetaData[metaData.Length]; this._columnSmiMetaData = new SmiExtendedMetaData[metaData.Length]; for (int i = 0; i < this._columnSmiMetaData.Length; i++) { this._columnSmiMetaData[i] = metaData[i]; this._columnMetaData[i] = MetaDataUtilsSmi.SmiExtendedMetaDataToSqlMetaData(this._columnSmiMetaData[i]); } this._eventSink = new SmiEventSink_Default(); if (InOutOfProcHelper.InProc) { this._recordContext = SmiContextFactory.Instance.GetCurrentContext(); } else { this._recordContext = null; } this._recordBuffer = recordBuffer; this._eventSink.ProcessMessagesAndThrow(); }
internal SqlDataRecord(SmiRecordBuffer recordBuffer, params SmiExtendedMetaData[] metaData) { this._columnMetaData = new SqlMetaData[metaData.Length]; this._columnSmiMetaData = new SmiExtendedMetaData[metaData.Length]; for (int i = 0; i < this._columnSmiMetaData.Length; i++) { this._columnSmiMetaData[i] = metaData[i]; this._columnMetaData[i] = MetaDataUtilsSmi.SmiExtendedMetaDataToSqlMetaData(this._columnSmiMetaData[i]); } this._eventSink = new SmiEventSink_Default(); if (InOutOfProcHelper.InProc) { this._recordContext = SmiContextFactory.Instance.GetCurrentContext(); } else { this._recordContext = null; } this._recordBuffer = recordBuffer; this._eventSink.ProcessMessagesAndThrow(); }
public SqlDataRecord(params SqlMetaData[] metaData) { if (metaData == null) { throw ADP.ArgumentNull("metadata"); } this._columnMetaData = new SqlMetaData[metaData.Length]; this._columnSmiMetaData = new SmiExtendedMetaData[metaData.Length]; ulong smiVersion = this.SmiVersion; for (int i = 0; i < this._columnSmiMetaData.Length; i++) { if (metaData[i] == null) { throw ADP.ArgumentNull("metadata[" + i + "]"); } this._columnMetaData[i] = metaData[i]; this._columnSmiMetaData[i] = MetaDataUtilsSmi.SqlMetaDataToSmiExtendedMetaData(this._columnMetaData[i]); if (!MetaDataUtilsSmi.IsValidForSmiVersion(this._columnSmiMetaData[i], smiVersion)) { throw ADP.VersionDoesNotSupportDataType(this._columnSmiMetaData[i].TypeName); } } this._eventSink = new SmiEventSink_Default(); if (InOutOfProcHelper.InProc) { this._recordContext = SmiContextFactory.Instance.GetCurrentContext(); this._recordBuffer = this._recordContext.CreateRecordBuffer(this._columnSmiMetaData, this._eventSink); this._usesStringStorageForXml = false; } else { this._recordContext = null; this._recordBuffer = new MemoryRecordBuffer(this._columnSmiMetaData); this._usesStringStorageForXml = true; } this._eventSink.ProcessMessagesAndThrow(); }
internal abstract void SendResultsEndToPipe( SmiRecordBuffer recordBuffer, SmiEventSink eventSink );
internal SqlDataRecord(SmiRecordBuffer recordBuffer, params SmiExtendedMetaData[] metaData) { Debug.Assert(null != recordBuffer, "invalid attempt to instantiate SqlDataRecord with null SmiRecordBuffer"); Debug.Assert(null != metaData, "invalid attempt to instantiate SqlDataRecord with null SmiExtendedMetaData[]"); _columnMetaData = new SqlMetaData[metaData.Length]; _columnSmiMetaData = new SmiExtendedMetaData[metaData.Length]; for (int i = 0; i < _columnSmiMetaData.Length; i++) { _columnSmiMetaData[i] = metaData[i]; _columnMetaData[i] = MetaDataUtilsSmi.SmiExtendedMetaDataToSqlMetaData(_columnSmiMetaData[i]); } _eventSink = new SmiEventSink_Default(); _recordBuffer = recordBuffer; _eventSink.ProcessMessagesAndThrow(); }
// // SqlDataRecord public API // public SqlDataRecord(params SqlMetaData[] metaData) { // Initial consistency check if (null == metaData) { throw ADP.ArgumentNull("metadata"); } _columnMetaData = new SqlMetaData[metaData.Length]; _columnSmiMetaData = new SmiExtendedMetaData[metaData.Length]; for (int i = 0; i < _columnSmiMetaData.Length; i++) { if (null == metaData[i]) { throw ADP.ArgumentNull("metadata[" + i + "]"); } _columnMetaData[i] = metaData[i]; _columnSmiMetaData[i] = MetaDataUtilsSmi.SqlMetaDataToSmiExtendedMetaData(_columnMetaData[i]); } _eventSink = new SmiEventSink_Default(); _recordBuffer = new MemoryRecordBuffer(_columnSmiMetaData); _usesStringStorageForXml = true; _eventSink.ProcessMessagesAndThrow(); }
internal abstract void SendResultsStartToPipe(SmiRecordBuffer recordBuffer, SmiEventSink eventSink);
public void SendResultsStart( SqlDataRecord record ) { ADP.CheckArgumentNull(record, "record"); SetPipeBusy( ); try { EnsureNormalSendValid( "SendResultsStart" ); SmiRecordBuffer recordBuffer = record.RecordBuffer; if (record.RecordContext == _smiContext) { recordBuffer = record.RecordBuffer; } else { recordBuffer = _smiContext.CreateRecordBuffer(record.InternalGetSmiMetaData(), _eventSink); // Only MetaData needed for sending start } _smiContext.SendResultsStartToPipe( recordBuffer, _eventSink ); // Handle any errors that are reported. _eventSink.ProcessMessagesAndThrow(); // remember sent buffer info so it can be used in send row/end. _recordBufferSent = recordBuffer; _metaDataSent = record.InternalGetMetaData(); } catch { _eventSink.CleanMessages(); throw; } finally { ClearPipeBusy( ); Debug.Assert(_eventSink.HasMessages == false, "There should be no messages left in _eventsink at the end of the SendResultsStart!"); } }
internal SqlDataRecord( SmiRecordBuffer recordBuffer, params SmiExtendedMetaData[] metaData ) { Debug.Assert(null != recordBuffer, "invalid attempt to instantiate SqlDataRecord with null SmiRecordBuffer"); Debug.Assert(null != metaData, "invalid attempt to instantiate SqlDataRecord with null SmiExtendedMetaData[]"); _columnMetaData = new SqlMetaData[metaData.Length]; _columnSmiMetaData = new SmiExtendedMetaData[metaData.Length]; for (int i = 0; i < _columnSmiMetaData.Length; i++) { _columnSmiMetaData[i] = metaData[i]; _columnMetaData[i] = MetaDataUtilsSmi.SmiExtendedMetaDataToSqlMetaData( _columnSmiMetaData[i] ); } _eventSink = new SmiEventSink_Default( ); if (InOutOfProcHelper.InProc) { _recordContext = SmiContextFactory.Instance.GetCurrentContext(); } else { _recordContext = null; } _recordBuffer = recordBuffer; _eventSink.ProcessMessagesAndThrow(); }
internal void OnOutOfScope( ) { _metaDataSent = null; _recordBufferSent = null; _hadErrorInResultSet = false; _isBusy = false; }
public void SendResultsEnd( ) { SetPipeBusy( ); try { EnsureResultStarted( "SendResultsEnd" ); _smiContext.SendResultsEndToPipe( _recordBufferSent, _eventSink ); // Once end called down to native code, assume end of resultset _metaDataSent = null; _recordBufferSent = null; _hadErrorInResultSet = false; // Handle any errors that are reported. _eventSink.ProcessMessagesAndThrow(); } catch { _eventSink.CleanMessages(); throw; } finally { ClearPipeBusy( ); Debug.Assert(_eventSink.HasMessages == false, "There should be no messages left in _eventsink at the end of the SendResultsEnd!"); } }