For sets and enums length is already precalculated
This commit is contained in:
		
							parent
							
								
									8cbca43cf7
								
							
						
					
					
						commit
						b1e0b061f0
					
				@ -9,7 +9,6 @@ import (
 | 
			
		||||
 | 
			
		||||
	"github.com/localhots/bocadillo/mysql"
 | 
			
		||||
	"github.com/localhots/bocadillo/tools"
 | 
			
		||||
	"github.com/localhots/pretty"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// RowsEvent contains a Rows Event.
 | 
			
		||||
@ -253,16 +252,14 @@ func (e *RowsEvent) decodeValue(buf *tools.Buffer, ct mysql.ColumnType, meta uin
 | 
			
		||||
		buf.Skip(n)
 | 
			
		||||
		return v
 | 
			
		||||
	case mysql.ColumnTypeSet:
 | 
			
		||||
		length = int(meta & 0xFF)
 | 
			
		||||
		nbits := length * 8
 | 
			
		||||
		v, n := mysql.DecodeBit(buf.Cur(), nbits, length)
 | 
			
		||||
		pretty.Println("Decoding set", buf.Cur(), nbits, length, "-->", v)
 | 
			
		||||
		buf.Skip(n)
 | 
			
		||||
		return v
 | 
			
		||||
 | 
			
		||||
	// Stuff
 | 
			
		||||
	case mysql.ColumnTypeEnum:
 | 
			
		||||
		return buf.ReadVarLen64(int(meta & 0xFF))
 | 
			
		||||
		return buf.ReadVarLen64(length)
 | 
			
		||||
 | 
			
		||||
	// Unsupported
 | 
			
		||||
	case mysql.ColumnTypeDecimal:
 | 
			
		||||
 | 
			
		||||
@ -56,7 +56,6 @@ func (r *Reader) ReadEvent() (*Event, error) {
 | 
			
		||||
	if err := evt.Header.Decode(connBuff, r.format); err != nil {
 | 
			
		||||
		return nil, errors.Annotate(err, "decode event header")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if evt.Header.NextOffset > 0 {
 | 
			
		||||
		r.state.Offset = uint64(evt.Header.NextOffset)
 | 
			
		||||
	}
 | 
			
		||||
@ -71,26 +70,29 @@ func (r *Reader) ReadEvent() (*Event, error) {
 | 
			
		||||
	switch evt.Header.Type {
 | 
			
		||||
	case binlog.EventTypeFormatDescription:
 | 
			
		||||
		var fde binlog.FormatDescriptionEvent
 | 
			
		||||
		err = fde.Decode(evt.Buffer)
 | 
			
		||||
		err := fde.Decode(evt.Buffer)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, errors.Annotate(err, "decode format description event")
 | 
			
		||||
		}
 | 
			
		||||
		r.format = fde.FormatDescription
 | 
			
		||||
		evt.Format = fde.FormatDescription
 | 
			
		||||
 | 
			
		||||
	case binlog.EventTypeRotate:
 | 
			
		||||
		var re binlog.RotateEvent
 | 
			
		||||
		err = re.Decode(evt.Buffer, r.format)
 | 
			
		||||
		err := re.Decode(evt.Buffer, r.format)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, errors.Annotate(err, "decode rotate event")
 | 
			
		||||
		}
 | 
			
		||||
		r.state = re.NextFile
 | 
			
		||||
 | 
			
		||||
	case binlog.EventTypeTableMap:
 | 
			
		||||
		var tme binlog.TableMapEvent
 | 
			
		||||
		err = tme.Decode(evt.Buffer, r.format)
 | 
			
		||||
		err := tme.Decode(evt.Buffer, r.format)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, errors.Annotate(err, "decode table map event")
 | 
			
		||||
		}
 | 
			
		||||
		r.tableMap[tme.TableID] = tme.TableDescription
 | 
			
		||||
 | 
			
		||||
	case binlog.EventTypeWriteRowsV0,
 | 
			
		||||
		binlog.EventTypeWriteRowsV1,
 | 
			
		||||
		binlog.EventTypeWriteRowsV2,
 | 
			
		||||
@ -108,6 +110,7 @@ func (r *Reader) ReadEvent() (*Event, error) {
 | 
			
		||||
			return nil, errors.New("Unknown table ID")
 | 
			
		||||
		}
 | 
			
		||||
		evt.Table = &td
 | 
			
		||||
 | 
			
		||||
	case binlog.EventTypeQuery:
 | 
			
		||||
		// Can be decoded by the receiver
 | 
			
		||||
	case binlog.EventTypeXID:
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user