in encoder/json.go [272:315]
func fillCommonFormatFields(c *types.CommonFormatEvent, row *[]interface{}, schema *types.TableSchema, filter []int) {
f := make([]types.CommonFormatField, 0, len(schema.Columns))
for i, j := 0, 0; i < len(schema.Columns); i++ {
if filteredField(filter, i, &j) {
continue
}
var v interface{}
if row == nil {
v = schema.Columns[i].Type
} else {
s := schema.Columns[i].DataType
if schema.Columns[i].Type == types.MySQLBoolean {
b, ok := (*row)[i].(int8)
if ok {
if b != 0 {
v = true
} else {
v = false
}
} else {
v = (*row)[i]
}
} else if s == "text" || s == "tinytext" || s == "mediumtext" || s == "longtext" || s == "json" {
b, ok := (*row)[i].([]byte)
if ok {
v = string(b)
} else {
v = (*row)[i]
}
} else if s == "binary" || s == "varbinary" {
b, ok := (*row)[i].(string)
if ok {
v = []byte(b)
} else {
v = (*row)[i]
}
} else {
v = (*row)[i]
}
}
f = append(f, types.CommonFormatField{Name: schema.Columns[i].Name, Value: v})
}
c.Fields = &f
}