func fillCommonFormatFields()

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
}