Enable multiStatements for MySQL
This commit is contained in:
		
					parent
					
						
							
								09c2ab9be8
							
						
					
				
			
			
				commit
				
					
						984d0127f1
					
				
			
		
					 5 changed files with 17 additions and 8 deletions
				
			
		
							
								
								
									
										2
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
										
									
									
									
								
							| 
						 | 
					@ -191,7 +191,7 @@ SWAGGER_NEWLINE_COMMAND := -e '$$a\'
 | 
				
			||||||
SWAGGER_SPEC_BRANDING := s|Gitea API|Forgejo API|g
 | 
					SWAGGER_SPEC_BRANDING := s|Gitea API|Forgejo API|g
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TEST_MYSQL_HOST ?= mysql:3306
 | 
					TEST_MYSQL_HOST ?= mysql:3306
 | 
				
			||||||
TEST_MYSQL_DBNAME ?= testgitea
 | 
					TEST_MYSQL_DBNAME ?= testgitea?multiStatements=true
 | 
				
			||||||
TEST_MYSQL_USERNAME ?= root
 | 
					TEST_MYSQL_USERNAME ?= root
 | 
				
			||||||
TEST_MYSQL_PASSWORD ?=
 | 
					TEST_MYSQL_PASSWORD ?=
 | 
				
			||||||
TEST_PGSQL_HOST ?= pgsql:5432
 | 
					TEST_PGSQL_HOST ?= pgsql:5432
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,6 +6,7 @@ package db
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"strconv"
 | 
						"strconv"
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"code.gitea.io/gitea/modules/log"
 | 
						"code.gitea.io/gitea/modules/log"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/setting"
 | 
						"code.gitea.io/gitea/modules/setting"
 | 
				
			||||||
| 
						 | 
					@ -25,7 +26,8 @@ func ConvertDatabaseTable() error {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_, err = x.Exec(fmt.Sprintf("ALTER DATABASE `%s` CHARACTER SET utf8mb4 COLLATE %s", setting.Database.Name, r.ExpectedCollation))
 | 
						databaseName := strings.SplitN(setting.Database.Name, "?", 2)[0]
 | 
				
			||||||
 | 
						_, err = x.Exec(fmt.Sprintf("ALTER DATABASE `%s` CHARACTER SET utf8mb4 COLLATE %s", databaseName, r.ExpectedCollation))
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,6 +12,7 @@ import (
 | 
				
			||||||
	"path"
 | 
						"path"
 | 
				
			||||||
	"path/filepath"
 | 
						"path/filepath"
 | 
				
			||||||
	"runtime"
 | 
						"runtime"
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -198,11 +199,13 @@ func deleteDB() error {
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		defer db.Close()
 | 
							defer db.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if _, err = db.Exec(fmt.Sprintf("DROP DATABASE IF EXISTS %s", setting.Database.Name)); err != nil {
 | 
							databaseName := strings.SplitN(setting.Database.Name, "?", 2)[0]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if _, err = db.Exec(fmt.Sprintf("DROP DATABASE IF EXISTS %s", databaseName)); err != nil {
 | 
				
			||||||
			return err
 | 
								return err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if _, err = db.Exec(fmt.Sprintf("CREATE DATABASE IF NOT EXISTS %s", setting.Database.Name)); err != nil {
 | 
							if _, err = db.Exec(fmt.Sprintf("CREATE DATABASE IF NOT EXISTS %s", databaseName)); err != nil {
 | 
				
			||||||
			return err
 | 
								return err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,6 +14,7 @@ import (
 | 
				
			||||||
	"path/filepath"
 | 
						"path/filepath"
 | 
				
			||||||
	"regexp"
 | 
						"regexp"
 | 
				
			||||||
	"sort"
 | 
						"sort"
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"code.gitea.io/gitea/models/db"
 | 
						"code.gitea.io/gitea/models/db"
 | 
				
			||||||
| 
						 | 
					@ -174,14 +175,16 @@ func restoreOldDB(t *testing.T, version string) bool {
 | 
				
			||||||
		assert.NoError(t, err)
 | 
							assert.NoError(t, err)
 | 
				
			||||||
		defer db.Close()
 | 
							defer db.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		_, err = db.Exec(fmt.Sprintf("DROP DATABASE IF EXISTS %s", setting.Database.Name))
 | 
							databaseName := strings.SplitN(setting.Database.Name, "?", 2)[0]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							_, err = db.Exec(fmt.Sprintf("DROP DATABASE IF EXISTS %s", databaseName))
 | 
				
			||||||
		assert.NoError(t, err)
 | 
							assert.NoError(t, err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		_, err = db.Exec(fmt.Sprintf("CREATE DATABASE IF NOT EXISTS %s", setting.Database.Name))
 | 
							_, err = db.Exec(fmt.Sprintf("CREATE DATABASE IF NOT EXISTS %s", databaseName))
 | 
				
			||||||
		assert.NoError(t, err)
 | 
							assert.NoError(t, err)
 | 
				
			||||||
		db.Close()
 | 
							db.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		db, err = sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/%s?multiStatements=true",
 | 
							db, err = sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/%s",
 | 
				
			||||||
			setting.Database.User, setting.Database.Passwd, setting.Database.Host, setting.Database.Name))
 | 
								setting.Database.User, setting.Database.Passwd, setting.Database.Host, setting.Database.Name))
 | 
				
			||||||
		assert.NoError(t, err)
 | 
							assert.NoError(t, err)
 | 
				
			||||||
		defer db.Close()
 | 
							defer db.Close()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,6 +12,7 @@ import (
 | 
				
			||||||
	"path"
 | 
						"path"
 | 
				
			||||||
	"path/filepath"
 | 
						"path/filepath"
 | 
				
			||||||
	"runtime"
 | 
						"runtime"
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -106,7 +107,7 @@ func InitTest(requireGitea bool) {
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			log.Fatal("sql.Open: %v", err)
 | 
								log.Fatal("sql.Open: %v", err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if _, err = db.Exec(fmt.Sprintf("CREATE DATABASE IF NOT EXISTS %s", setting.Database.Name)); err != nil {
 | 
							if _, err = db.Exec(fmt.Sprintf("CREATE DATABASE IF NOT EXISTS %s", strings.SplitN(setting.Database.Name, "?", 2)[0])); err != nil {
 | 
				
			||||||
			log.Fatal("db.Exec: %v", err)
 | 
								log.Fatal("db.Exec: %v", err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	case setting.Database.Type.IsPostgreSQL():
 | 
						case setting.Database.Type.IsPostgreSQL():
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue