code: func (p *PhysicalTableScan) MarshalJSON() ([]byte, error) {
  	pushDownInfo, err := json.Marshal(&p.physicalTableSource)
  	if err != nil {
  		return nil, errors.Trace(err)
  	}
  	buffer := bytes.NewBufferString("{")
  	buffer.WriteString(fmt.Sprintf(
  		" \"db\": \"%s\","+
  			"\n \"table\": \"%s\","+
  			"\n \"desc\": %v,"+
  			"\n \"keep order\": %v,"+
  			"\n \"push down info\": %s}",
  		p.DBName.O, p.Table.Name.O, p.Desc, p.KeepOrder, pushDownInfo))
  	return buffer.Bytes(), nil
  }
docs: // MarshalJSON implements json.Marshaler interface.