summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakob Borg <jakob@kastelo.net>2023-01-31 09:12:48 +0100
committerJakob Borg <jakob@kastelo.net>2023-01-31 09:12:48 +0100
commita5b619950788937a332ecc4ce35baed28307defa (patch)
treeb7203022530869a85ecf7be242d9ed6d44c035e7
parent966e9f9a685d519190d0bdf0d8e95a47698797b0 (diff)
cmd/ursrv: Remove old, unused migration code
-rw-r--r--cmd/ursrv/main.go5
-rw-r--r--cmd/ursrv/migration.go143
2 files changed, 0 insertions, 148 deletions
diff --git a/cmd/ursrv/main.go b/cmd/ursrv/main.go
index 48b273d263..db0b6212ca 100644
--- a/cmd/ursrv/main.go
+++ b/cmd/ursrv/main.go
@@ -131,11 +131,6 @@ func setupDB(db *sql.DB) error {
}
}
- // Migrate from old schema to new schema if the table exists.
- if err := migrate(db); err != nil {
- return err
- }
-
return nil
}
diff --git a/cmd/ursrv/migration.go b/cmd/ursrv/migration.go
deleted file mode 100644
index 9b92d6ef38..0000000000
--- a/cmd/ursrv/migration.go
+++ /dev/null
@@ -1,143 +0,0 @@
-// Copyright (C) 2020 The Syncthing Authors.
-//
-// This Source Code Form is subject to the terms of the Mozilla Public
-// License, v. 2.0. If a copy of the MPL was not distributed with this file,
-// You can obtain one at https://mozilla.org/MPL/2.0/.
-
-package main
-
-import (
- "database/sql"
- "database/sql/driver"
- "encoding/json"
- "errors"
- "log"
- "strings"
-
- "github.com/lib/pq"
-
- "github.com/syncthing/syncthing/lib/ur/contract"
-)
-
-func migrate(db *sql.DB) error {
- var count uint64
- log.Println("Checking old table row count, this might take a while...")
- if err := db.QueryRow(`SELECT COUNT(1) FROM Reports`).Scan(&count); err != nil || count == 0 {
- // err != nil most likely means table does not exist.
- return nil
- }
- log.Printf("Found %d records, will perform migration.", count)
-
- tx, err := db.Begin()
- if err != nil {
- log.Println("sql:", err)
- return err
- }
- defer tx.Rollback()
-
- // These must be lower case, because we don't quote them when creating, so postgres creates them lower case.
- // Yet pg.CopyIn quotes them, which makes them case sensitive.
- stmt, err := tx.Prepare(pq.CopyIn("reportsjson", "received", "report"))
- if err != nil {
- log.Println("sql:", err)
- return err
- }
-
- // Custom types used in the old struct.
- var rep contract.Report
- var rescanIntvs pq.Int64Array
- var fsWatcherDelay pq.Int64Array
- pullOrder := make(IntMap)
- fileSystemType := make(IntMap)
- themes := make(IntMap)
- transportStats := make(IntMap)
-
- rows, err := db.Query(`SELECT ` + strings.Join(rep.FieldNames(), ", ") + `, FolderFsWatcherDelays, RescanIntvs, FolderPullOrder, FolderFilesystemType, GUITheme, Transport FROM Reports`)
- if err != nil {
- log.Println("sql:", err)
- return err
- }
- defer rows.Close()
-
- var done uint64
- pct := count / 100
-
- for rows.Next() {
- err := rows.Scan(append(rep.FieldPointers(), &fsWatcherDelay, &rescanIntvs, &pullOrder, &fileSystemType, &themes, &transportStats)...)
- if err != nil {
- log.Println("sql scan:", err)
- return err
- }
- // Patch up parts that used to use custom types
- rep.RescanIntvs = make([]int, len(rescanIntvs))
- for i := range rescanIntvs {
- rep.RescanIntvs[i] = int(rescanIntvs[i])
- }
- rep.FolderUsesV3.FsWatcherDelays = make([]int, len(fsWatcherDelay))
- for i := range fsWatcherDelay {
- rep.FolderUsesV3.FsWatcherDelays[i] = int(fsWatcherDelay[i])
- }
- rep.FolderUsesV3.PullOrder = pullOrder
- rep.FolderUsesV3.FilesystemType = fileSystemType
- rep.GUIStats.Theme = themes
- rep.TransportStats = transportStats
-
- _, err = stmt.Exec(rep.Received, rep)
- if err != nil {
- log.Println("sql insert:", err)
- return err
- }
- done++
- if done%pct == 0 {
- log.Printf("Migration progress %d/%d (%d%%)", done, count, (100*done)/count)
- }
- }
-
- // Tell the driver bulk copy is finished
- _, err = stmt.Exec()
- if err != nil {
- log.Println("sql stmt exec:", err)
- return err
- }
-
- err = stmt.Close()
- if err != nil {
- log.Println("sql stmt close:", err)
- return err
- }
-
- _, err = tx.Exec("DROP TABLE Reports")
- if err != nil {
- log.Println("sql drop:", err)
- return err
- }
-
- err = tx.Commit()
- if err != nil {
- log.Println("sql commit:", err)
- return err
- }
- return nil
-}
-
-type IntMap map[string]int
-
-func (p IntMap) Value() (driver.Value, error) {
- return json.Marshal(p)
-}
-
-func (p *IntMap) Scan(src interface{}) error {
- source, ok := src.([]byte)
- if !ok {
- return errors.New("Type assertion .([]byte) failed.")
- }
-
- var i map[string]int
- err := json.Unmarshal(source, &i)
- if err != nil {
- return err
- }
-
- *p = i
- return nil
-}