From 3185ce235b1d01da51bddc98415a77983e54defb Mon Sep 17 00:00:00 2001 From: Wraith Date: Mon, 21 Aug 2023 22:36:27 +0100 Subject: [PATCH] move snapshot plpdata to shared (#2126) --- .../SqlClient/TdsParserStateObject.netcore.cs | 14 +------------- .../Data/SqlClient/TdsParserStateObject.netfx.cs | 13 ++++++------- .../Data/SqlClient/TdsParserStateObject.cs | 15 ++++++++++++++- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParserStateObject.netcore.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParserStateObject.netcore.cs index 675b2a66ff..f97dfec553 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParserStateObject.netcore.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParserStateObject.netcore.cs @@ -3100,18 +3100,6 @@ internal void CloneCleanupAltMetaDataSetArray() sealed partial class StateSnapshot { - private sealed class PLPData - { - public readonly ulong SnapshotLongLen; - public readonly ulong SnapshotLongLenLeft; - - public PLPData(ulong snapshotLongLen, ulong snapshotLongLenLeft) - { - SnapshotLongLen = snapshotLongLen; - SnapshotLongLenLeft = snapshotLongLenLeft; - } - } - private sealed partial class PacketData { public byte[] Buffer; @@ -3150,7 +3138,7 @@ partial void SetStackInternal(string value) private PacketData _sparePacket; internal byte[] _plpBuffer; - private PLPData _plpData; + private int _snapshotInBuffCount; diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParserStateObject.netfx.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParserStateObject.netfx.cs index 8074ced728..596373121a 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParserStateObject.netfx.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParserStateObject.netfx.cs @@ -3267,9 +3267,6 @@ sealed partial class StateSnapshot private bool _snapshotReceivedColumnMetadata = false; private bool _snapshotAttentionReceived; - private ulong _snapshotLongLen; - private ulong _snapshotLongLenLeft; - public StateSnapshot(TdsParserStateObject state) { _snapshotInBuffs = new List(); @@ -3347,8 +3344,10 @@ internal void Snap() _snapshotMessageStatus = _stateObj._messageStatus; // _nullBitmapInfo must be cloned before it is updated _snapshotNullBitmapInfo = _stateObj._nullBitmapInfo; - _snapshotLongLen = _stateObj._longlen; - _snapshotLongLenLeft = _stateObj._longlenleft; + if (_stateObj._longlen != 0 || _stateObj._longlenleft != 0) + { + _plpData = new PLPData(_stateObj._longlen, _stateObj._longlenleft); + } _snapshotCleanupMetaData = _stateObj._cleanupMetaData; // _cleanupAltMetaDataSetArray must be cloned bofore it is updated _snapshotCleanupAltMetaDataSetArray = _stateObj._cleanupAltMetaDataSetArray; @@ -3401,8 +3400,8 @@ internal void ResetSnapshotState() _stateObj._partialHeaderBytesRead = 0; // reset plp state - _stateObj._longlen = _snapshotLongLen; - _stateObj._longlenleft = _snapshotLongLenLeft; + _stateObj._longlen = _plpData?.SnapshotLongLen ?? 0; + _stateObj._longlenleft = _plpData?.SnapshotLongLenLeft ?? 0; _stateObj._snapshotReplay = true; diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/TdsParserStateObject.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/TdsParserStateObject.cs index c9a7f6d4bd..75b81a458b 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/TdsParserStateObject.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/TdsParserStateObject.cs @@ -1104,10 +1104,24 @@ private void DumpBuffer() { sealed partial class StateSnapshot { + private sealed class PLPData + { + public readonly ulong SnapshotLongLen; + public readonly ulong SnapshotLongLenLeft; + + public PLPData(ulong snapshotLongLen, ulong snapshotLongLenLeft) + { + SnapshotLongLen = snapshotLongLen; + SnapshotLongLenLeft = snapshotLongLenLeft; + } + } + private int _snapshotInBuffCurrent; private int _snapshotInBytesUsed; private int _snapshotInBytesPacket; + private PLPData _plpData; + private byte _snapshotMessageStatus; private NullBitmap _snapshotNullBitmapInfo; @@ -1115,7 +1129,6 @@ sealed partial class StateSnapshot private _SqlMetaDataSetCollection _snapshotCleanupAltMetaDataSetArray; private TdsParserStateObject _stateObj; - #if DEBUG private int _rollingPend = 0; private int _rollingPendCount = 0;