MCPcopy
hub / github.com/dropbox/godropbox / parseRow

Method parseRow

database/binlog/rows_event.go:334–370  ·  view source on GitHub ↗
(
	usedColumns []ColumnDescriptor,
	data []byte)

Source from the content-addressed store, hash-verified

332}
333
334func (p *baseRowsEventParser) parseRow(
335 usedColumns []ColumnDescriptor,
336 data []byte) (
337 row RowValues,
338 remaining []byte,
339 err error) {
340
341 numCols := len(usedColumns)
342 nullBits, remaining, err := readBitArray(data, numCols)
343 if err != nil {
344 return nil, nil, err
345 }
346
347 values := make(RowValues, numCols, numCols)
348 for idx, descriptor := range usedColumns {
349 if nullBits[idx] {
350 if !descriptor.IsNullable() {
351 return nil, nil, errors.Newf(
352 "Null value in non-nullable column: %d table: %s",
353 descriptor.IndexPosition(),
354 string(p.context.TableName()))
355 }
356 values[idx] = nil
357 continue
358 }
359
360 var val interface{}
361 val, remaining, err = descriptor.ParseValue(remaining)
362 if err != nil {
363 return nil, nil, err
364 }
365
366 values[idx] = val
367 }
368
369 return values, remaining, nil
370}
371
372//
373// WriteRowsEventParser -------------------------------------------------------

Callers 3

ParseMethod · 0.80
ParseMethod · 0.80
ParseMethod · 0.80

Calls 6

NewfFunction · 0.92
readBitArrayFunction · 0.85
IsNullableMethod · 0.65
IndexPositionMethod · 0.65
TableNameMethod · 0.65
ParseValueMethod · 0.65

Tested by

no test coverage detected