hunk.code_window: 		query += " WHERE Id = :UserId"
   		if _, err := us.GetMaster().Exec(query, map[string]interface{}{"LastPasswordUpdate": updateAt, "UpdateAt": updateAt, "UserId": userId, "AuthService": service, "AuthData": authData, "Email": email}); err != nil {
   			if IsUniqueConstraintError(err.Error(), []string{"Email", "users_email_key", "idx_users_email_unique", "AuthData", "users_authdata_key"}) {
   				result.Err = model.NewLocAppError("SqlUserStore.UpdateAuthData", "store.sql_user.update_auth_data.email_exists.app_error", map[string]interface{}{"Service": service, "Email": email}, "user_id="+userId+", "+err.Error())
   			} else {
   				result.Err = model.NewLocAppError("SqlUserStore.UpdateAuthData", "store.sql_user.update_auth_data.app_error", nil, "id="+userId+", "+err.Error())
   			}
  
hunk.labels: keep keep keep replace keep keep keep keep
hunk.after_edit: 			if IsUniqueConstraintError(err, []string{"Email", "users_email_key", "idx_users_email_unique", "AuthData", "users_authdata_key"}) {
  
hunk.file_path: store/sql_user_store.go
hunk.type: replace
file: package dns
  
  import (
  	"net"
  	"reflect"
  	"strconv"
  )
  
  // NumField returns the number of rdata fields r has.
  func NumField(r RR) int {
  	return reflect.ValueOf(r).Elem().NumField() - 1 // Remove RR_Header
  }
  
  // Field returns the rdata field i as a string. Fields are indexed starting from 1.
  // RR types that holds slice data, for instance the NSEC type bitmap will return a single
  // string where the types are concatenated using a space.
  // Accessing non existing fields will cause a panic.
  func Field(r RR, i int) string {
  	if i == 0 {
  		return ""
  	}
  	d := reflect.ValueOf(r).Elem().Field(i)
  	switch k := d.Kind(); k {
  	case reflect.String:
  		return d.String()
  	case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
  		return strconv.FormatInt(d.Int(), 10)
  	case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
  		return strconv.FormatUint(d.Uint(), 10)
  	case reflect.Slice:
  		switch reflect.ValueOf(r).Elem().Type().Field(i).Tag {
  		case `dns:"a"`:
  			// TODO(miek): Hmm store this as 16 bytes
  			if d.Len() < net.IPv6len {
  				return net.IPv4(byte(d.Index(0).Uint()),
  					byte(d.Index(1).Uint()),
  					byte(d.Index(2).Uint()),
  					byte(d.Index(3).Uint())).String()
  			}
  			return net.IPv4(byte(d.Index(12).Uint()),
  				byte(d.Index(13).Uint()),
  				byte(d.Index(14).Uint()),
  				byte(d.Index(15).Uint())).String()
  		case `dns:"aaaa"`:
  			return net.IP{
  				byte(d.Index(0).Uint()),
  				byte(d.Index(1).Uint()),
  				byte(d.Index(2).Uint()),
  				byte(d.Index(3).Uint()),
  				byte(d.Index(4).Uint()),
  				byte(d.Index(5).Uint()),
  				byte(d.Index(6).Uint()),
  				byte(d.Index(7).Uint()),
  				byte(d.Index(8).Uint()),
  				byte(d.Index(9).Uint()),
  				byte(d.Index(10).Uint()),
  				byte(d.Index(11).Uint()),
  				byte(d.Index(12).Uint()),
  				byte(d.Index(13).Uint()),
  				byte(d.Index(14).Uint()),
  				byte(d.Index(15).Uint()),
  			}.String()
  		case `dns:"nsec"`:
  			if d.Len() == 0 {
  				return ""
  			}
  			s := Type(d.Index(0).Uint()).String()
  			for i := 1; i < d.Len(); i++ {
  				s += " " + Type(d.Index(i).Uint()).String()
  			}
  			return s
  		default:
  			// if it does not have a tag its a string slice
  			fallthrough
  		case `dns:"txt"`:
  			if d.Len() == 0 {
  				return ""
  			}
  			s := d.Index(0).String()
  			for i := 1; i < d.Len(); i++ {
  				s += " " + d.Index(i).String()
  			}
  			return s
  		}
  	}
  	return ""
  }
  