Grow SQL capacity to reduce allocation
This commit is contained in:
		
							parent
							
								
									aaf0725771
								
							
						
					
					
						commit
						9f19378304
					
				| @ -42,6 +42,7 @@ func Create(config *Config) func(db *gorm.DB) { | |||||||
| 				} | 				} | ||||||
| 
 | 
 | ||||||
| 				if db.Statement.SQL.String() == "" { | 				if db.Statement.SQL.String() == "" { | ||||||
|  | 					db.Statement.SQL.Grow(180) | ||||||
| 					db.Statement.AddClauseIfNotExists(clause.Insert{ | 					db.Statement.AddClauseIfNotExists(clause.Insert{ | ||||||
| 						Table: clause.Table{Name: db.Statement.Table}, | 						Table: clause.Table{Name: db.Statement.Table}, | ||||||
| 					}) | 					}) | ||||||
| @ -211,6 +212,7 @@ func ConvertToCreateValues(stmt *gorm.Statement) clause.Values { | |||||||
| 
 | 
 | ||||||
| 		switch stmt.ReflectValue.Kind() { | 		switch stmt.ReflectValue.Kind() { | ||||||
| 		case reflect.Slice, reflect.Array: | 		case reflect.Slice, reflect.Array: | ||||||
|  | 			stmt.SQL.Grow(stmt.ReflectValue.Len() * 15) | ||||||
| 			values.Values = make([][]interface{}, stmt.ReflectValue.Len()) | 			values.Values = make([][]interface{}, stmt.ReflectValue.Len()) | ||||||
| 			defaultValueFieldsHavingValue := map[string][]interface{}{} | 			defaultValueFieldsHavingValue := map[string][]interface{}{} | ||||||
| 			for i := 0; i < stmt.ReflectValue.Len(); i++ { | 			for i := 0; i < stmt.ReflectValue.Len(); i++ { | ||||||
|  | |||||||
| @ -30,6 +30,7 @@ func Delete(db *gorm.DB) { | |||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		if db.Statement.SQL.String() == "" { | 		if db.Statement.SQL.String() == "" { | ||||||
|  | 			db.Statement.SQL.Grow(100) | ||||||
| 			db.Statement.AddClauseIfNotExists(clause.Delete{}) | 			db.Statement.AddClauseIfNotExists(clause.Delete{}) | ||||||
| 
 | 
 | ||||||
| 			if db.Statement.Schema != nil { | 			if db.Statement.Schema != nil { | ||||||
|  | |||||||
| @ -37,6 +37,7 @@ func Query(db *gorm.DB) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func BuildQuerySQL(db *gorm.DB) { | func BuildQuerySQL(db *gorm.DB) { | ||||||
|  | 	db.Statement.SQL.Grow(100) | ||||||
| 	clauseSelect := clause.Select{Distinct: db.Statement.Distinct} | 	clauseSelect := clause.Select{Distinct: db.Statement.Distinct} | ||||||
| 
 | 
 | ||||||
| 	if db.Statement.ReflectValue.Kind() == reflect.Struct { | 	if db.Statement.ReflectValue.Kind() == reflect.Struct { | ||||||
|  | |||||||
| @ -59,6 +59,7 @@ func Update(db *gorm.DB) { | |||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		if db.Statement.SQL.String() == "" { | 		if db.Statement.SQL.String() == "" { | ||||||
|  | 			db.Statement.SQL.Grow(180) | ||||||
| 			db.Statement.AddClauseIfNotExists(clause.Update{}) | 			db.Statement.AddClauseIfNotExists(clause.Update{}) | ||||||
| 			if set := ConvertToAssignments(db.Statement); len(set) != 0 { | 			if set := ConvertToAssignments(db.Statement); len(set) != 0 { | ||||||
| 				db.Statement.AddClause(set) | 				db.Statement.AddClause(set) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jinzhu
						Jinzhu