From 821184c20357f32cc8eea6a02443f66f02461da1 Mon Sep 17 00:00:00 2001
From: Lanre Adelowo <adelowomailbox@gmail.com>
Date: Wed, 24 Apr 2019 18:43:38 +0100
Subject: [PATCH] Drop is_bare IDX only when it exists for MySQL and MariaDB
 (#6736)

* Drop is_bare IDX only when it exists

* show indexes only on mysql or mariadb
---
 models/migrations/v78.go | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/models/migrations/v78.go b/models/migrations/v78.go
index 382fd9e795..b0c7bfb6e3 100644
--- a/models/migrations/v78.go
+++ b/models/migrations/v78.go
@@ -33,9 +33,19 @@ func renameRepoIsBareToIsEmpty(x *xorm.Engine) error {
 		_, err = sess.Exec("DROP INDEX IF EXISTS IDX_repository_is_bare")
 	} else if models.DbCfg.Type == core.MSSQL {
 		_, err = sess.Exec("DROP INDEX IF EXISTS IDX_repository_is_bare ON repository")
+	} else if models.DbCfg.Type == core.MYSQL {
+		indexes, err := sess.QueryString(`SHOW INDEX FROM repository WHERE KEY_NAME = 'IDX_repository_is_bare'`)
+		if err != nil {
+			return err
+		}
+
+		if len(indexes) >= 1 {
+			_, err = sess.Exec("DROP INDEX IDX_repository_is_bare ON repository")
+		}
 	} else {
 		_, err = sess.Exec("DROP INDEX IDX_repository_is_bare ON repository")
 	}
+
 	if err != nil {
 		return fmt.Errorf("Drop index failed: %v", err)
 	}