Using ColumnMapping instead of a new map
This commit is contained in:
		
							parent
							
								
									a4270cc29d
								
							
						
					
					
						commit
						2444fc0d82
					
				| @ -40,9 +40,12 @@ func BuildQuerySQL(db *gorm.DB) { | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if db.Statement.TruncatedAliases == nil { | 	truncatedTableAliases := make(map[string]string) | ||||||
| 		db.Statement.TruncatedAliases = make(map[string]string) | 
 | ||||||
|  | 	if db.Statement.ColumnMapping == nil { | ||||||
|  | 		db.Statement.ColumnMapping = make(map[string]string) | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
| 	if db.Statement.SQL.Len() == 0 { | 	if db.Statement.SQL.Len() == 0 { | ||||||
| 		db.Statement.SQL.Grow(100) | 		db.Statement.SQL.Grow(100) | ||||||
| 		clauseSelect := clause.Select{Distinct: db.Statement.Distinct} | 		clauseSelect := clause.Select{Distinct: db.Statement.Distinct} | ||||||
| @ -168,10 +171,10 @@ func BuildQuerySQL(db *gorm.DB) { | |||||||
| 										Alias: aliasName, | 										Alias: aliasName, | ||||||
| 									}) | 									}) | ||||||
| 									origTableAliasName := tableAliasName | 									origTableAliasName := tableAliasName | ||||||
| 									if alias, ok := db.Statement.TruncatedAliases[tableAliasName]; ok { | 									if alias, ok := truncatedTableAliases[tableAliasName]; ok { | ||||||
| 										origTableAliasName = alias | 										origTableAliasName = alias | ||||||
| 									} | 									} | ||||||
| 									db.Statement.TruncatedAliases[aliasName] = utils.NestedRelationName(origTableAliasName, s) | 									db.Statement.ColumnMapping[aliasName] = utils.NestedRelationName(origTableAliasName, s) | ||||||
| 								} | 								} | ||||||
| 							} | 							} | ||||||
| 
 | 
 | ||||||
| @ -256,7 +259,7 @@ func BuildQuerySQL(db *gorm.DB) { | |||||||
| 								fullName = curAliasName | 								fullName = curAliasName | ||||||
| 							} | 							} | ||||||
| 							aliasName := db.NamingStrategy.JoinNestedRelationNames(nameParts) | 							aliasName := db.NamingStrategy.JoinNestedRelationNames(nameParts) | ||||||
| 							db.Statement.TruncatedAliases[aliasName] = fullName | 							truncatedTableAliases[aliasName] = fullName | ||||||
| 							curAliasName = aliasName | 							curAliasName = aliasName | ||||||
| 
 | 
 | ||||||
| 							if _, ok := specifiedRelationsName[curAliasName]; !ok { | 							if _, ok := specifiedRelationsName[curAliasName]; !ok { | ||||||
|  | |||||||
							
								
								
									
										3
									
								
								scan.go
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								scan.go
									
									
									
									
									
								
							| @ -227,9 +227,6 @@ func Scan(rows Rows, db *DB, mode ScanMode) { | |||||||
| 			if sch != nil { | 			if sch != nil { | ||||||
| 				matchedFieldCount := make(map[string]int, len(columns)) | 				matchedFieldCount := make(map[string]int, len(columns)) | ||||||
| 				for idx, column := range columns { | 				for idx, column := range columns { | ||||||
| 					if origName, ok := db.Statement.TruncatedAliases[column]; ok { |  | ||||||
| 						column = origName |  | ||||||
| 					} |  | ||||||
| 					if field := sch.LookUpField(column); field != nil && field.Readable { | 					if field := sch.LookUpField(column); field != nil && field.Readable { | ||||||
| 						fields[idx] = field | 						fields[idx] = field | ||||||
| 						if count, ok := matchedFieldCount[column]; ok { | 						if count, ok := matchedFieldCount[column]; ok { | ||||||
|  | |||||||
| @ -1,7 +1,6 @@ | |||||||
| package schema | package schema | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"crypto/sha1" |  | ||||||
| 	"crypto/sha256" | 	"crypto/sha256" | ||||||
| 	"encoding/hex" | 	"encoding/hex" | ||||||
| 	"regexp" | 	"regexp" | ||||||
| @ -156,18 +155,7 @@ func (ns NamingStrategy) formatName(prefix, table, name string) string { | |||||||
| 		prefix, table, name, | 		prefix, table, name, | ||||||
| 	}, "_"), ".", "_") | 	}, "_"), ".", "_") | ||||||
| 
 | 
 | ||||||
| 	if ns.IdentifierMaxLength == 0 { | 	return ns.truncateName(formattedName) | ||||||
| 		ns.IdentifierMaxLength = 64 |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	if utf8.RuneCountInString(formattedName) > ns.IdentifierMaxLength { |  | ||||||
| 		h := sha1.New() |  | ||||||
| 		h.Write([]byte(formattedName)) |  | ||||||
| 		bs := h.Sum(nil) |  | ||||||
| 
 |  | ||||||
| 		formattedName = formattedName[0:ns.IdentifierMaxLength-8] + hex.EncodeToString(bs)[:8] |  | ||||||
| 	} |  | ||||||
| 	return formattedName |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| var ( | var ( | ||||||
|  | |||||||
| @ -47,7 +47,6 @@ type Statement struct { | |||||||
| 	attrs                []interface{} | 	attrs                []interface{} | ||||||
| 	assigns              []interface{} | 	assigns              []interface{} | ||||||
| 	scopes               []func(*DB) *DB | 	scopes               []func(*DB) *DB | ||||||
| 	TruncatedAliases     map[string]string |  | ||||||
| 	Result               *result | 	Result               *result | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Igor Stepanov
						Igor Stepanov