changeset 5733:87b6dcfbab34

Disable triggers during mesh migrate.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 28 May 2024 18:25:45 +0200
parents 9dbef85c6bb4
children ea16ae748357
files cmd/meshmigrate/main.go
diffstat 1 files changed, 23 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/cmd/meshmigrate/main.go	Tue May 28 18:22:34 2024 +0200
+++ b/cmd/meshmigrate/main.go	Tue May 28 18:25:45 2024 +0200
@@ -67,6 +67,9 @@
 	mesh_index = $2,
 	mesh_checksum = $3
 WHERE id = $4`
+
+	disableTriggersSQL = `ALTER TABLE waterway.sounding_results DISABLE TRIGGER ALL`
+	enableTriggersSQL  = `ALTER TABLE waterway.sounding_results ENABLE TRIGGER ALL`
 )
 
 func restore(creds *credentials, dry bool) error {
@@ -76,6 +79,15 @@
 	}
 	defer db.Close()
 
+	if _, err := db.Exec(disableTriggersSQL); err != nil {
+		return err
+	}
+	defer func() {
+		if _, err := db.Exec(enableTriggersSQL); err != nil {
+			log.Printf("error: cannot restore triggers: %v\n", err)
+		}
+	}()
+
 	dir, err := os.Getwd()
 	if err != nil {
 		return err
@@ -132,6 +144,17 @@
 	}
 	defer db.Close()
 
+	if !dry {
+		if _, err := db.Exec(disableTriggersSQL); err != nil {
+			return err
+		}
+		defer func() {
+			if _, err := db.Exec(enableTriggersSQL); err != nil {
+				log.Printf("error: cannot restore triggers: %v\n", err)
+			}
+		}()
+	}
+
 	sql := fetchSQL + fmt.Sprintf("coalesce(mesh_index_version, 1) < %d", to)
 
 	if len(ids) > 0 {