func()

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)
}