in encoder/json.go [344:373]
func (e *jsonEncoder) prepareFilter() {
if e.outSchema == nil {
return
}
nfiltered := len(e.inSchema.Columns)
if e.outSchema.Fields != nil {
nfiltered = nfiltered - len(*e.outSchema.Fields)
}
if nfiltered == 0 {
return
}
f := e.outSchema.Fields
e.filter = make([]int, 0)
var j int
for i := 0; i < len(e.inSchema.Columns); i++ {
//Primary key cannot be filtered
if f == nil || len(*f) == 0 || (i-j) >= len(*f) || e.inSchema.Columns[i].Name != (*f)[i-j].Name {
if e.inSchema.Columns[i].Key != "PRI" {
log.Debugf("Field %v will be filtered", e.inSchema.Columns[i].Name)
e.filter = append(e.filter, i)
}
j++
}
}
log.Debugf("len=%v, filtered fields (%v)", len(e.filter), e.filter)
}