diff pkg/imports/wg.go @ 3665:29ef6d41e4af

Use database triggers to move referencing objects to new versions Needs fewer database round-trips and is more convenient especially if more than two levels in the object hierarchy have to be handled.
author Tom Gottfried <tom@intevation.de>
date Sat, 15 Jun 2019 09:24:28 +0200
parents 0ec5c8ec1e44
children 5fed2f5bc104 6c5c15b2fb64
line wrap: on
line diff
--- a/pkg/imports/wg.go	Fri Jun 14 17:56:42 2019 +0200
+++ b/pkg/imports/wg.go	Sat Jun 15 09:24:28 2019 +0200
@@ -116,22 +116,6 @@
 )
 `
 
-	moveGMSQL = `
-UPDATE waterway.gauge_measurements
--- Associate measurements to matching gauge version
-SET validity = $2
-WHERE isrs_astext(location) = $1
-  AND measure_date <@ CAST($2 AS tstzrange)
-`
-
-	moveBNSQL = `
-UPDATE waterway.bottlenecks
--- Associate bottlenecks to matching gauge version
-SET gauge_validity = $2
-WHERE isrs_astext(gauge_location) = $1
-  AND lower(validity) <@ CAST($2 AS tstzrange)
-`
-
 	fixValiditySQL = `
 UPDATE waterway.gauges SET
    -- Set enddate of old entry to new startdate in case of overlap:
@@ -208,7 +192,7 @@
 		return nil, err
 	}
 
-	var eraseGaugeStmt, insertStmt, moveGMStmt, moveBNStmt,
+	var eraseGaugeStmt, insertStmt,
 		fixValidityStmt, updateStmt,
 		deleteReferenceWaterLevelsStmt,
 		isNtSDepthRefStmt, insertWaterLevelStmt *sql.Stmt
@@ -218,8 +202,6 @@
 	}{
 		{eraseGaugeSQL, &eraseGaugeStmt},
 		{insertGaugeSQL, &insertStmt},
-		{moveGMSQL, &moveGMStmt},
-		{moveBNSQL, &moveBNStmt},
 		{fixValiditySQL, &fixValidityStmt},
 		{updateGaugeSQL, &updateStmt},
 		{deleteReferenceWaterLevelsSQL, &deleteReferenceWaterLevelsStmt},
@@ -446,31 +428,6 @@
 				}
 			}
 
-			// Move gauge measurements and bottlenecks to new matching
-			// gauge version, if applicable
-			if _, err = tx.StmtContext(ctx, moveGMStmt).ExecContext(ctx,
-				code.String(),
-				&validity,
-			); err != nil {
-				feedback.Warn(handleError(err).Error())
-				if err2 := tx.Rollback(); err2 != nil {
-					return nil, err2
-				}
-				unchanged++
-				continue
-			}
-			if _, err = tx.StmtContext(ctx, moveBNStmt).ExecContext(ctx,
-				code.String(),
-				&validity,
-			); err != nil {
-				feedback.Warn(handleError(err).Error())
-				if err2 := tx.Rollback(); err2 != nil {
-					return nil, err2
-				}
-				unchanged++
-				continue
-			}
-
 			// Set end of validity of old version to start of new version
 			// in case of overlap
 			if _, err = tx.StmtContext(ctx, fixValidityStmt).ExecContext(