Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Data / Microsoft / SqlServer / Server / MemoryRecordBuffer.cs / 1 / MemoryRecordBuffer.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //[....] //----------------------------------------------------------------------------- namespace Microsoft.SqlServer.Server { using System; using System.Data.SqlTypes; using System.Diagnostics; // Class for implementing a record object used in out-of-proc scenarios. internal sealed class MemoryRecordBuffer : SmiRecordBuffer { private SqlRecordBuffer[] _buffer; internal MemoryRecordBuffer(SmiMetaData[] metaData) { Debug.Assert(null != metaData, "invalid attempt to instantiate MemoryRecordBuffer with null SmiMetaData[]"); _buffer = new SqlRecordBuffer[metaData.Length]; for (int i = 0; i < _buffer.Length; ++i) { _buffer[i] = new SqlRecordBuffer(metaData[i]); } } #region Getters // Null test // valid for all types public override bool IsDBNull(SmiEventSink sink, int ordinal) { return _buffer[ordinal].IsNull; } // Check what type current sql_variant value is // valid for SqlDbType.Variant public override SmiMetaData GetVariantType(SmiEventSink sink, int ordinal) { return _buffer[ordinal].VariantType; } // valid for SqlDbType.Bit public override Boolean GetBoolean(SmiEventSink sink, int ordinal) { return _buffer[ordinal].Boolean; } // valid for SqlDbType.TinyInt public override Byte GetByte(SmiEventSink sink, int ordinal) { return _buffer[ordinal].Byte; } // valid for SqlDbTypes: Binary, VarBinary, Image, Udt, Xml, Char, VarChar, Text, NChar, NVarChar, NText // (Character type support needed for ExecuteXmlReader handling) public override Int64 GetBytesLength(SmiEventSink sink, int ordinal) { return _buffer[ordinal].BytesLength; } public override int GetBytes(SmiEventSink sink, int ordinal, long fieldOffset, byte[] buffer, int bufferOffset, int length) { return _buffer[ordinal].GetBytes(fieldOffset, buffer, bufferOffset, length); } // valid for character types: Char, VarChar, Text, NChar, NVarChar, NText public override Int64 GetCharsLength(SmiEventSink sink, int ordinal) { return _buffer[ordinal].CharsLength; } public override int GetChars(SmiEventSink sink, int ordinal, long fieldOffset, char[] buffer, int bufferOffset, int length) { return _buffer[ordinal].GetChars(fieldOffset, buffer, bufferOffset, length); } public override String GetString(SmiEventSink sink, int ordinal) { return _buffer[ordinal].String; } // valid for SqlDbType.SmallInt public override Int16 GetInt16(SmiEventSink sink, int ordinal) { return _buffer[ordinal].Int16; } // valid for SqlDbType.Int public override Int32 GetInt32(SmiEventSink sink, int ordinal) { return _buffer[ordinal].Int32; } // valid for SqlDbType.BigInt, SqlDbType.Money, SqlDbType.SmallMoney public override Int64 GetInt64(SmiEventSink sink, int ordinal) { return _buffer[ordinal].Int64; } // valid for SqlDbType.Real public override Single GetSingle(SmiEventSink sink, int ordinal) { return _buffer[ordinal].Single; } // valid for SqlDbType.Float public override Double GetDouble(SmiEventSink sink, int ordinal) { return _buffer[ordinal].Double; } // valid for SqlDbType.Numeric (uses SqlDecimal since Decimal cannot hold full range) public override SqlDecimal GetSqlDecimal(SmiEventSink sink, int ordinal) { return _buffer[ordinal].SqlDecimal; } // valid for DateTime, SmallDateTime, Date, and DateTime2 public override DateTime GetDateTime(SmiEventSink sink, int ordinal) { return _buffer[ordinal].DateTime; } // valid for UniqueIdentifier public override Guid GetGuid(SmiEventSink sink, int ordinal) { return _buffer[ordinal].Guid; } // valid for SqlDbType.Time public override TimeSpan GetTimeSpan(SmiEventSink sink, int ordinal) { return _buffer[ordinal].TimeSpan; } // valid for DateTimeOffset public override DateTimeOffset GetDateTimeOffset(SmiEventSink sink, int ordinal) { return _buffer[ordinal].DateTimeOffset; } #endregion #region Setters // Set value to null // valid for all types public override void SetDBNull(SmiEventSink sink, int ordinal) { _buffer[ordinal].SetNull(); } // valid for SqlDbType.Bit public override void SetBoolean(SmiEventSink sink, int ordinal, Boolean value) { _buffer[ordinal].Boolean = value; } // valid for SqlDbType.TinyInt public override void SetByte(SmiEventSink sink, int ordinal, Byte value) { _buffer[ordinal].Byte = value; } // Semantics for SetBytes are to modify existing value, not overwrite // Use in combination with SetLength to ensure overwriting when necessary // valid for SqlDbTypes: Binary, VarBinary, Image, Udt, Xml // (VarBinary assumed for variants) public override int SetBytes(SmiEventSink sink, int ordinal, long fieldOffset, byte[] buffer, int bufferOffset, int length) { return _buffer[ordinal].SetBytes(fieldOffset, buffer, bufferOffset, length); } public override void SetBytesLength(SmiEventSink sink, int ordinal, long length) { _buffer[ordinal].BytesLength = length; } // Semantics for SetChars are to modify existing value, not overwrite // Use in combination with SetLength to ensure overwriting when necessary // valid for character types: Char, VarChar, Text, NChar, NVarChar, NText // (NVarChar and global clr collation assumed for variants) public override int SetChars(SmiEventSink sink, int ordinal, long fieldOffset, char[] buffer, int bufferOffset, int length) { return _buffer[ordinal].SetChars(fieldOffset, buffer, bufferOffset, length); } public override void SetCharsLength(SmiEventSink sink, int ordinal, long length) { _buffer[ordinal].CharsLength = length; } // valid for character types: Char, VarChar, Text, NChar, NVarChar, NText public override void SetString(SmiEventSink sink, int ordinal, string value, int offset, int length) { Debug.Assert(offset == 0 && length <= value.Length, "Invalid string length or offset"); // for sqlvariant, length could be less than value.Length _buffer[ordinal].String = value.Substring(offset, length); // Perf test shows that Substring method has already optimized the case where length = value.Length } // valid for SqlDbType.SmallInt public override void SetInt16(SmiEventSink sink, int ordinal, Int16 value) { _buffer[ordinal].Int16 = value; } // valid for SqlDbType.Int public override void SetInt32(SmiEventSink sink, int ordinal, Int32 value) { _buffer[ordinal].Int32 = value; } // valid for SqlDbType.BigInt, SqlDbType.Money, SqlDbType.SmallMoney public override void SetInt64(SmiEventSink sink, int ordinal, Int64 value) { _buffer[ordinal].Int64 = value; } // valid for SqlDbType.Real public override void SetSingle(SmiEventSink sink, int ordinal, Single value) { _buffer[ordinal].Single = value; } // valid for SqlDbType.Float public override void SetDouble(SmiEventSink sink, int ordinal, Double value) { _buffer[ordinal].Double = value; } // valid for SqlDbType.Numeric (uses SqlDecimal since Decimal cannot hold full range) public override void SetSqlDecimal(SmiEventSink sink, int ordinal, SqlDecimal value) { _buffer[ordinal].SqlDecimal = value; } // valid for DateTime, SmallDateTime, Date, and DateTime2 public override void SetDateTime(SmiEventSink sink, int ordinal, DateTime value) { _buffer[ordinal].DateTime = value; } // valid for UniqueIdentifier public override void SetGuid(SmiEventSink sink, int ordinal, Guid value) { _buffer[ordinal].Guid = value; } // SqlDbType.Time public override void SetTimeSpan(SmiEventSink sink, int ordinal, TimeSpan value) { _buffer[ordinal].TimeSpan = value; } // DateTimeOffset public override void SetDateTimeOffset(SmiEventSink sink, int ordinal, DateTimeOffset value) { _buffer[ordinal].DateTimeOffset = value; } // valid for SqlDbType.Variant public override void SetVariantMetaData(SmiEventSink sink, int ordinal, SmiMetaData metaData) { _buffer[ordinal].VariantType = metaData; } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ListenerConnectionDemuxer.cs
- RichTextBox.cs
- GeometryDrawing.cs
- OpenTypeCommon.cs
- DesignerAttribute.cs
- ReachUIElementCollectionSerializer.cs
- CmsUtils.cs
- NamespaceTable.cs
- BlockExpression.cs
- _ProxyChain.cs
- RepeaterDesigner.cs
- TraceRecords.cs
- WebPart.cs
- UIPropertyMetadata.cs
- RequestCacheValidator.cs
- ByteRangeDownloader.cs
- PersonalizationEntry.cs
- Graphics.cs
- QilLoop.cs
- PeerNameRecord.cs
- UriSection.cs
- DataGridView.cs
- XmlAggregates.cs
- DataGridTablesFactory.cs
- ExtensionWindowHeader.cs
- HTTPNotFoundHandler.cs
- HttpHostedTransportConfiguration.cs
- webclient.cs
- AssemblyEvidenceFactory.cs
- BitmapSizeOptions.cs
- ISAPIWorkerRequest.cs
- HtmlInputImage.cs
- BamlCollectionHolder.cs
- DataSourceCacheDurationConverter.cs
- WindowsFormsLinkLabel.cs
- IODescriptionAttribute.cs
- OutputCacheProfile.cs
- Propagator.Evaluator.cs
- XhtmlBasicTextBoxAdapter.cs
- NonceToken.cs
- RewritingValidator.cs
- ImageMap.cs
- BevelBitmapEffect.cs
- ReflectionHelper.cs
- TypeConverter.cs
- ComponentResourceManager.cs
- GridItem.cs
- DrawToolTipEventArgs.cs
- _Semaphore.cs
- FrameworkPropertyMetadata.cs
- DesignerActionListCollection.cs
- ReadOnlyTernaryTree.cs
- ImageAttributes.cs
- UnauthorizedWebPart.cs
- NotificationContext.cs
- BitmapImage.cs
- CacheChildrenQuery.cs
- CancellationHandler.cs
- TemplatePartAttribute.cs
- OperationAbortedException.cs
- ImageButton.cs
- MasterPageBuildProvider.cs
- RuleSettings.cs
- formatter.cs
- documentsequencetextview.cs
- PopupEventArgs.cs
- ElementMarkupObject.cs
- DelayLoadType.cs
- FixedSOMElement.cs
- ReferenceConverter.cs
- ToolStripItemImageRenderEventArgs.cs
- DefaultTextStoreTextComposition.cs
- AttachmentCollection.cs
- SmiContext.cs
- ConfigurationSettings.cs
- WebPartUserCapability.cs
- PropertyChange.cs
- PrintPreviewControl.cs
- StatusBarPanelClickEvent.cs
- SqlNotificationEventArgs.cs
- ConstraintConverter.cs
- ScrollContentPresenter.cs
- HttpConfigurationSystem.cs
- LockCookie.cs
- DateRangeEvent.cs
- IsolatedStorageFile.cs
- OutputBuffer.cs
- KnownTypesHelper.cs
- WindowPattern.cs
- IPCCacheManager.cs
- PolyQuadraticBezierSegment.cs
- CompiledELinqQueryState.cs
- PerformanceCounterLib.cs
- WindowsListViewItem.cs
- CodeCompileUnit.cs
- InteropAutomationProvider.cs
- BitmapEffectInputData.cs
- InkCanvasInnerCanvas.cs
- TableLayout.cs
- SqlDuplicator.cs