@@ -218,7 +218,6 @@ protected object[] ReadRow(ref SequenceReader<byte> reader, TableMapEvent table,
218218 var cells = new object [ columnCount ] ;
219219 var nullColumns = reader . ReadBitArray ( columnCount , true ) ;
220220 var columnTypes = table . ColumnTypes ;
221- var columnMetadata = table . ColumnMetadata ;
222221
223222 for ( int i = 0 , numberOfSkippedColumns = 0 ; i < columnTypes . Length ; i ++ )
224223 {
@@ -234,40 +233,9 @@ protected object[] ReadRow(ref SequenceReader<byte> reader, TableMapEvent table,
234233 continue ;
235234
236235 var typeCode = columnTypes [ i ] ;
237- var meta = columnMetadata [ i ] ;
238- var length = 0 ;
236+ var columnMetadata = table . Metadata . Columns [ i ] ;
239237
240- var columnType = ( ColumnType ) typeCode ;
241-
242- if ( columnType == ColumnType . STRING )
243- {
244- if ( meta >= 256 )
245- {
246- int meta0 = meta >> 8 , meta1 = meta & 0xFF ;
247- if ( ( meta0 & 0x30 ) != 0x30 )
248- {
249- typeCode = ( byte ) ( meta0 | 0x30 ) ;
250- columnType = ( ColumnType ) typeCode ;
251- length = meta1 | ( ( ( meta0 & 0x30 ) ^ 0x30 ) << 4 ) ;
252- }
253- else
254- {
255- // mysql-5.6.24 sql/rpl_utility.h enum_field_types (line 278)
256- if ( meta0 == ( int ) ColumnType . ENUM || meta0 == ( int ) ColumnType . SET )
257- {
258- typeCode = ( byte ) meta0 ;
259- columnType = ( ColumnType ) typeCode ;
260- }
261- length = meta1 ;
262- }
263- }
264- else
265- {
266- length = meta ;
267- }
268- }
269-
270- cells [ index ] = ReadCell ( ref reader , columnType , meta , length ) ;
238+ cells [ index ] = ReadCell ( ref reader , ( ColumnType ) typeCode , columnMetadata ) ;
271239 }
272240
273241 return cells ;
@@ -278,17 +246,16 @@ protected object[] ReadRow(ref SequenceReader<byte> reader, TableMapEvent table,
278246 /// </summary>
279247 /// <param name="reader">The sequence reader containing the binary data.</param>
280248 /// <param name="columnType">The type of the column.</param>
281- /// <param name="meta">The metadata for the column.</param>
282- /// <param name="length">The length of the column data.</param>
249+ /// <param name="columnMetadata">The metadata for the column.</param>
283250 /// <returns>The parsed cell value.</returns>
284- private object ReadCell ( ref SequenceReader < byte > reader , ColumnType columnType , int meta , int length )
251+ private object ReadCell ( ref SequenceReader < byte > reader , ColumnType columnType , ColumnMetadata columnMetadata )
285252 {
286253 var dataType = DataTypes [ ( int ) columnType ] as IMySQLDataType ;
287254
288255 if ( dataType == null )
289256 throw new NotImplementedException ( ) ;
290257
291- return dataType . ReadValue ( ref reader , meta ) ;
258+ return dataType . ReadValue ( ref reader , columnMetadata ) ;
292259 }
293260 }
294261}
0 commit comments