code: func (sf *ScalarFunction) HashCode() []byte {
  	var bytes []byte
  	v := make([]types.Datum, 0, len(sf.GetArgs())+1)
  	bytes, _ = codec.EncodeValue(bytes, types.NewStringDatum(sf.FuncName.L))
  	v = append(v, types.NewBytesDatum(bytes))
  	for _, arg := range sf.GetArgs() {
  		v = append(v, types.NewBytesDatum(arg.HashCode()))
  	}
  	bytes = bytes[:0]
  	bytes, _ = codec.EncodeValue(bytes, v...)
  	return bytes
  }
docs: // HashCode implements Expression interface.