code: func (ft *FieldType) CompactStr() string {
  	ts := TypeToStr(ft.Tp, ft.Charset)
  	suffix := ""
  	switch ft.Tp {
  	case mysql.TypeEnum, mysql.TypeSet:
  		// Format is ENUM ('e1', 'e2') or SET ('e1', 'e2')
  		es := make([]string, 0, len(ft.Elems))
  		for _, e := range ft.Elems {
  			e = strings.Replace(e, "'", "''", -1)
  			es = append(es, e)
  		}
  		suffix = fmt.Sprintf("('%s')", strings.Join(es, "','"))
  	case mysql.TypeTimestamp, mysql.TypeDatetime, mysql.TypeDate:
  		if ft.Decimal != UnspecifiedLength && ft.Decimal != 0 {
  			suffix = fmt.Sprintf("(%d)", ft.Decimal)
  		}
  	default:
  		if ft.Flen != UnspecifiedLength {
  			if ft.Decimal == UnspecifiedLength {
  				if ft.Tp != mysql.TypeFloat && ft.Tp != mysql.TypeDouble {
  					suffix = fmt.Sprintf("(%d)", ft.Flen)
  				}
  			} else {
  				suffix = fmt.Sprintf("(%d,%d)", ft.Flen, ft.Decimal)
  			}
  		} else if ft.Decimal != UnspecifiedLength {
  			suffix = fmt.Sprintf("(%d)", ft.Decimal)
  		}
  	}
  	return ts + suffix
  }
docs: // CompactStr only considers Tp/CharsetBin/Flen/Deimal.
  // This is used for showing column type in infoschema.