From eb8c871a529bb06f063477e423b9d7ef1061e6e2 Mon Sep 17 00:00:00 2001
From: Guillermo Prandi <guillep2k@users.noreply.github.com>
Date: Tue, 22 Oct 2019 14:37:33 -0300
Subject: [PATCH 1/4] Fix extra fields from database

---
 models/issue_label.go | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/models/issue_label.go b/models/issue_label.go
index 2b77c4bc35a11..9efc7fd51f4d4 100644
--- a/models/issue_label.go
+++ b/models/issue_label.go
@@ -68,10 +68,10 @@ type Label struct {
 	Color           string `xorm:"VARCHAR(7)"`
 	NumIssues       int
 	NumClosedIssues int
-	NumOpenIssues   int  `xorm:"-"`
-	IsChecked       bool `xorm:"-"`
-	QueryString     string
-	IsSelected      bool
+	NumOpenIssues   int    `xorm:"-"`
+	IsChecked       bool   `xorm:"-"`
+	QueryString     string `xorm:"-"`
+	IsSelected      bool   `xorm:"-"`
 }
 
 // APIFormat converts a Label to the api.Label format

From e07d21fa0a540fa0c7088b9a96129970f16186ea Mon Sep 17 00:00:00 2001
From: Guillermo Prandi <guillep2k@users.noreply.github.com>
Date: Tue, 22 Oct 2019 18:38:26 -0300
Subject: [PATCH 2/4] Add migration to drop unneeded columns

---
 models/migrations/migrations.go |  2 ++
 models/migrations/v104.go       | 27 +++++++++++++++++++++++++++
 2 files changed, 29 insertions(+)
 create mode 100644 models/migrations/v104.go

diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go
index 8b1329ea68a7f..e214f16a2a1e1 100644
--- a/models/migrations/migrations.go
+++ b/models/migrations/migrations.go
@@ -262,6 +262,8 @@ var migrations = []Migration{
 	NewMigration("update migration repositories' service type", dropColumnHeadUserNameOnPullRequest),
 	// v103 -> v104
 	NewMigration("Add WhitelistDeployKeys to protected branch", addWhitelistDeployKeysToBranches),
+	// v104 -> v105
+	NewMigration("remove unnecessary columns from label", removeLabelUneededCols),
 }
 
 // Migrate database to current version
diff --git a/models/migrations/v104.go b/models/migrations/v104.go
new file mode 100644
index 0000000000000..362939d0b4fd5
--- /dev/null
+++ b/models/migrations/v104.go
@@ -0,0 +1,27 @@
+// Copyright 2019 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package migrations
+
+import (
+	"xorm.io/xorm"
+)
+
+func removeLabelUneededCols(x *xorm.Engine) error {
+	sess := x.NewSession()
+	defer sess.Close()
+	if err := sess.Begin(); err != nil {
+		return err
+	}
+	if err := dropTableColumns(sess, "label", "query_string"); err != nil {
+		return err
+	}
+	if err := dropTableColumns(sess, "label", "is_selected"); err != nil {
+		return err
+	}
+	if err := sess.Commit(); err != nil {
+		return err
+	}
+	return nil
+}

From bb4a5998d6bf4dc96b568ecf0ad60e97c4e25c92 Mon Sep 17 00:00:00 2001
From: Guillermo Prandi <guillep2k@users.noreply.github.com>
Date: Tue, 22 Oct 2019 22:35:55 -0300
Subject: [PATCH 3/4] Fix lint

---
 models/migrations/v104.go | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/models/migrations/v104.go b/models/migrations/v104.go
index 362939d0b4fd5..3fcef9ebfc105 100644
--- a/models/migrations/v104.go
+++ b/models/migrations/v104.go
@@ -20,8 +20,5 @@ func removeLabelUneededCols(x *xorm.Engine) error {
 	if err := dropTableColumns(sess, "label", "is_selected"); err != nil {
 		return err
 	}
-	if err := sess.Commit(); err != nil {
-		return err
-	}
-	return nil
+	return sess.Commit()
 }

From 0ed6f557a184855a74ee58ecb9b736996a035f33 Mon Sep 17 00:00:00 2001
From: Guillermo Prandi <guillep2k@users.noreply.github.com>
Date: Wed, 23 Oct 2019 04:09:38 -0300
Subject: [PATCH 4/4] Make sure the columns exist

---
 models/migrations/v104.go | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/models/migrations/v104.go b/models/migrations/v104.go
index 3fcef9ebfc105..f3ec3c88c825b 100644
--- a/models/migrations/v104.go
+++ b/models/migrations/v104.go
@@ -9,6 +9,16 @@ import (
 )
 
 func removeLabelUneededCols(x *xorm.Engine) error {
+
+	// Make sure the columns exist before dropping them
+	type Label struct {
+		QueryString string
+		IsSelected  bool
+	}
+	if err := x.Sync2(new(Label)); err != nil {
+		return err
+	}
+
 	sess := x.NewSession()
 	defer sess.Close()
 	if err := sess.Begin(); err != nil {