code: func (b *builtinInet6AtonSig) evalString(row chunk.Row) (string, bool, error) {
  	val, isNull, err := b.args[0].EvalString(b.ctx, row)
  	if err != nil || isNull {
  		return "", true, err
  	}
  
  	if len(val) == 0 {
  		return "", true, nil
  	}
  
  	ip := net.ParseIP(val)
  	if ip == nil {
  		return "", true, nil
  	}
  
  	var isMappedIpv6 bool
  	if ip.To4() != nil && strings.Contains(val, ":") {
  		//mapped ipv6 address.
  		isMappedIpv6 = true
  	}
  
  	var result []byte
  	if isMappedIpv6 || ip.To4() == nil {
  		result = make([]byte, net.IPv6len)
  	} else {
  		result = make([]byte, net.IPv4len)
  	}
  
  	if isMappedIpv6 {
  		copy(result[12:], ip.To4())
  		result[11] = 0xff
  		result[10] = 0xff
  	} else if ip.To4() == nil {
  		copy(result, ip.To16())
  	} else {
  		copy(result, ip.To4())
  	}
  
  	return string(result[:]), false, nil
  }
docs: // evalString evals a builtinInet6AtonSig.
  // See https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_inet6-aton