@@ -53,7 +53,7 @@ public async Task ReadResultSetHeaderAsync(IOBehavior ioBehavior)
53
53
var firstByte = payload . HeaderByte ;
54
54
if ( firstByte == OkPayload . Signature )
55
55
{
56
- var ok = OkPayload . Create ( payload . AsSpan ( ) , Session . SupportsDeprecateEof , Session . SupportsSessionTrack ) ;
56
+ var ok = OkPayload . Create ( payload . Span , Session . SupportsDeprecateEof , Session . SupportsSessionTrack ) ;
57
57
RecordsAffected = ( RecordsAffected ?? 0 ) + ok . AffectedRowCount ;
58
58
LastInsertId = unchecked ( ( long ) ok . LastInsertId ) ;
59
59
WarningCount = ok . WarningCount ;
@@ -73,7 +73,7 @@ public async Task ReadResultSetHeaderAsync(IOBehavior ioBehavior)
73
73
{
74
74
if ( ! Connection . AllowLoadLocalInfile )
75
75
throw new NotSupportedException ( "To use LOAD DATA LOCAL INFILE, set AllowLoadLocalInfile=true in the connection string. See https://fl.vu/mysql-load-data" ) ;
76
- var localInfile = LocalInfilePayload . Create ( payload . AsSpan ( ) ) ;
76
+ var localInfile = LocalInfilePayload . Create ( payload . Span ) ;
77
77
if ( ! IsHostVerified ( Connection )
78
78
&& ! localInfile . FileName . StartsWith ( MySqlBulkLoader . StreamPrefix , StringComparison . Ordinal ) )
79
79
throw new NotSupportedException ( "Use SourceStream or SslMode >= VerifyCA for LOAD DATA LOCAL INFILE. See https://fl.vu/mysql-load-data" ) ;
@@ -109,7 +109,7 @@ int ReadColumnCount(ReadOnlySpan<byte> span)
109
109
throw new MySqlException ( "Unexpected data at end of column_count packet; see https://github.com/mysql-net/MySqlConnector/issues/324" ) ;
110
110
return columnCount_ ;
111
111
}
112
- var columnCount = ReadColumnCount ( payload . AsSpan ( ) ) ;
112
+ var columnCount = ReadColumnCount ( payload . Span ) ;
113
113
114
114
// reserve adequate space to hold a copy of all column definitions (but note that this can be resized below if we guess too small)
115
115
Utility . Resize ( ref m_columnDefinitionPayloads , columnCount * 96 ) ;
@@ -120,23 +120,23 @@ int ReadColumnCount(ReadOnlySpan<byte> span)
120
120
for ( var column = 0 ; column < ColumnDefinitions . Length ; column ++ )
121
121
{
122
122
payload = await Session . ReceiveReplyAsync ( ioBehavior , CancellationToken . None ) . ConfigureAwait ( false ) ;
123
- var arraySegment = payload . ArraySegment ;
123
+ var payloadLength = payload . Span . Length ;
124
124
125
125
// 'Session.ReceiveReplyAsync' reuses a shared buffer; make a copy so that the column definitions can always be safely read at any future point
126
- if ( m_columnDefinitionPayloadUsedBytes + arraySegment . Count > m_columnDefinitionPayloads . Count )
127
- Utility . Resize ( ref m_columnDefinitionPayloads , m_columnDefinitionPayloadUsedBytes + arraySegment . Count ) ;
128
- Buffer . BlockCopy ( arraySegment . Array , arraySegment . Offset , m_columnDefinitionPayloads . Array , m_columnDefinitionPayloadUsedBytes , arraySegment . Count ) ;
126
+ if ( m_columnDefinitionPayloadUsedBytes + payloadLength > m_columnDefinitionPayloads . Count )
127
+ Utility . Resize ( ref m_columnDefinitionPayloads , m_columnDefinitionPayloadUsedBytes + payloadLength ) ;
128
+ payload . Span . CopyTo ( m_columnDefinitionPayloads . Array . AsSpan ( ) . Slice ( m_columnDefinitionPayloadUsedBytes ) ) ;
129
129
130
- var columnDefinition = ColumnDefinitionPayload . Create ( new ResizableArraySegment < byte > ( m_columnDefinitionPayloads , m_columnDefinitionPayloadUsedBytes , arraySegment . Count ) ) ;
130
+ var columnDefinition = ColumnDefinitionPayload . Create ( new ResizableArraySegment < byte > ( m_columnDefinitionPayloads , m_columnDefinitionPayloadUsedBytes , payloadLength ) ) ;
131
131
ColumnDefinitions [ column ] = columnDefinition ;
132
132
ColumnTypes [ column ] = TypeMapper . ConvertToMySqlDbType ( columnDefinition , treatTinyAsBoolean : Connection . TreatTinyAsBoolean , guidFormat : Connection . GuidFormat ) ;
133
- m_columnDefinitionPayloadUsedBytes += arraySegment . Count ;
133
+ m_columnDefinitionPayloadUsedBytes += payloadLength ;
134
134
}
135
135
136
136
if ( ! Session . SupportsDeprecateEof )
137
137
{
138
138
payload = await Session . ReceiveReplyAsync ( ioBehavior , CancellationToken . None ) . ConfigureAwait ( false ) ;
139
- EofPayload . Create ( payload . AsSpan ( ) ) ;
139
+ EofPayload . Create ( payload . Span ) ;
140
140
}
141
141
142
142
if ( ColumnDefinitions . Length == ( Command ? . OutParameters ? . Count + 1 ) && ColumnDefinitions [ 0 ] . Name == SingleCommandPayloadCreator . OutParameterSentinelColumnName )
@@ -245,7 +245,7 @@ static Row ScanRowAsyncRemainder(ResultSet this_, PayloadData payload, Row row_)
245
245
{
246
246
if ( payload . HeaderByte == EofPayload . Signature )
247
247
{
248
- var span = payload . AsSpan ( ) ;
248
+ var span = payload . Span ;
249
249
if ( this_ . Session . SupportsDeprecateEof && OkPayload . IsOk ( span , this_ . Session . SupportsDeprecateEof ) )
250
250
{
251
251
var ok = OkPayload . Create ( span , this_ . Session . SupportsDeprecateEof , this_ . Session . SupportsSessionTrack ) ;
@@ -270,7 +270,7 @@ static Row ScanRowAsyncRemainder(ResultSet this_, PayloadData payload, Row row_)
270
270
// this might be a binary row, but it might also be a text row whose first column is zero bytes long; try reading
271
271
// the row as a series of length-encoded values (the text format) to see if this might plausibly be a text row
272
272
var isTextRow = false ;
273
- var reader = new ByteArrayReader ( payload . AsSpan ( ) ) ;
273
+ var reader = new ByteArrayReader ( payload . Span ) ;
274
274
var columnCount = 0 ;
275
275
while ( reader . BytesRemaining > 0 )
276
276
{
@@ -331,7 +331,7 @@ static Row ScanRowAsyncRemainder(ResultSet this_, PayloadData payload, Row row_)
331
331
}
332
332
row_ = isBinaryRow ? ( Row ) new BinaryRow ( this_ ) : new TextRow ( this_ ) ;
333
333
}
334
- row_ . SetData ( payload . ArraySegment ) ;
334
+ row_ . SetData ( payload . Memory ) ;
335
335
this_ . m_rowBuffered = row_ ;
336
336
this_ . m_hasRows = true ;
337
337
this_ . BufferState = ResultSetState . ReadingRows ;
0 commit comments