Use transaction in V102 migration (#12395)
The code for dropTableColumns has a slightly confusing portion whereby the session is committed for MSSQL but not for other variants. The v102 migration doesn't actually start a transaction so this weirdness does not affect it. However it probably should attempt to run this in a transaction. Signed-off-by: Andrew Thornton art27@cantab.net
This commit is contained in:
		
							parent
							
								
									8cd7e93b9a
								
							
						
					
					
						commit
						e17e3f71f4
					
				
					 2 changed files with 7 additions and 5 deletions
				
			
		|  | @ -453,20 +453,16 @@ func dropTableColumns(sess *xorm.Session, tableName string, columnNames ...strin | ||||||
| 			tableName, strings.Replace(cols, "`", "'", -1)) | 			tableName, strings.Replace(cols, "`", "'", -1)) | ||||||
| 		constraints := make([]string, 0) | 		constraints := make([]string, 0) | ||||||
| 		if err := sess.SQL(sql).Find(&constraints); err != nil { | 		if err := sess.SQL(sql).Find(&constraints); err != nil { | ||||||
| 			sess.Rollback() |  | ||||||
| 			return fmt.Errorf("Find constraints: %v", err) | 			return fmt.Errorf("Find constraints: %v", err) | ||||||
| 		} | 		} | ||||||
| 		for _, constraint := range constraints { | 		for _, constraint := range constraints { | ||||||
| 			if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE `%s` DROP CONSTRAINT `%s`", tableName, constraint)); err != nil { | 			if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE `%s` DROP CONSTRAINT `%s`", tableName, constraint)); err != nil { | ||||||
| 				sess.Rollback() |  | ||||||
| 				return fmt.Errorf("Drop table `%s` constraint `%s`: %v", tableName, constraint, err) | 				return fmt.Errorf("Drop table `%s` constraint `%s`: %v", tableName, constraint, err) | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE `%s` DROP COLUMN %s", tableName, cols)); err != nil { | 		if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE `%s` DROP COLUMN %s", tableName, cols)); err != nil { | ||||||
| 			sess.Rollback() |  | ||||||
| 			return fmt.Errorf("Drop table `%s` columns %v: %v", tableName, columnNames, err) | 			return fmt.Errorf("Drop table `%s` columns %v: %v", tableName, columnNames, err) | ||||||
| 		} | 		} | ||||||
| 		return sess.Commit() |  | ||||||
| 	default: | 	default: | ||||||
| 		log.Fatal("Unrecognized DB") | 		log.Fatal("Unrecognized DB") | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -11,5 +11,11 @@ import ( | ||||||
| func dropColumnHeadUserNameOnPullRequest(x *xorm.Engine) error { | func dropColumnHeadUserNameOnPullRequest(x *xorm.Engine) error { | ||||||
| 	sess := x.NewSession() | 	sess := x.NewSession() | ||||||
| 	defer sess.Close() | 	defer sess.Close() | ||||||
| 	return dropTableColumns(sess, "pull_request", "head_user_name") | 	if err := sess.Begin(); err != nil { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
|  | 	if err := dropTableColumns(sess, "pull_request", "head_user_name"); err != nil { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
|  | 	return sess.Commit() | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue