diff pkg/imports/bn.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 2a079d0a71c1
children db87f34805fb
line wrap: on
line diff
--- a/pkg/imports/bn.go	Fri Jun 14 17:56:42 2019 +0200
+++ b/pkg/imports/bn.go	Sat Jun 15 09:24:28 2019 +0200
@@ -107,14 +107,6 @@
 )
 RETURNING id`
 
-	moveSRSQL = `
-UPDATE waterway.sounding_results
--- Associate measurements to matching bottleneck version
-SET bottleneck_validity = $2
-WHERE bottleneck_id = $1
-  AND CAST(date_info AS timestamptz) <@ CAST($2 AS tstzrange)
-`
-
 	fixBNValiditySQL = `
 UPDATE waterway.bottlenecks SET
    -- Set enddate of old entry to new startdate in case of overlap:
@@ -273,7 +265,7 @@
 
 	feedback.Info("Found %d bottlenecks for import", len(bns))
 
-	var hasStmt, insertStmt, moveSRStmt, fixValidityStmt, updateStmt,
+	var hasStmt, insertStmt, fixValidityStmt, updateStmt,
 		deleteMaterialStmt, insertMaterialStmt, trackStmt *sql.Stmt
 
 	for _, x := range []struct {
@@ -282,7 +274,6 @@
 	}{
 		{hasBottleneckSQL, &hasStmt},
 		{insertBottleneckSQL, &insertStmt},
-		{moveSRSQL, &moveSRStmt},
 		{fixBNValiditySQL, &fixValidityStmt},
 		{updateBottleneckSQL, &updateStmt},
 		{deleteBottleneckMaterialSQL, &deleteMaterialStmt},
@@ -303,7 +294,7 @@
 	for _, bn := range bns {
 		if err := storeBottleneck(
 			ctx, importID, conn, feedback, bn, &nids, tolerance,
-			hasStmt, insertStmt, moveSRStmt, fixValidityStmt, updateStmt,
+			hasStmt, insertStmt, fixValidityStmt, updateStmt,
 			deleteMaterialStmt, insertMaterialStmt, trackStmt); err != nil {
 			return nil, err
 		}
@@ -330,7 +321,7 @@
 	bn *ifbn.BottleNeckType,
 	nids *[]string,
 	tolerance float64,
-	hasStmt, insertStmt, moveSRStmt, fixValidityStmt, updateStmt,
+	hasStmt, insertStmt, fixValidityStmt, updateStmt,
 	deleteMaterialStmt, insertMaterialStmt, trackStmt *sql.Stmt,
 ) error {
 	feedback.Info("Processing %s (%s)", bn.OBJNAM, bn.Bottleneck_id)
@@ -512,18 +503,6 @@
 		}
 	}
 
-	// Move sounding results to new matching bottleneck version, if applicable
-	if _, err = tx.StmtContext(ctx, moveSRStmt).ExecContext(ctx,
-		bn.Bottleneck_id,
-		&validity,
-	); err != nil {
-		feedback.Warn(handleError(err).Error())
-		if err2 := tx.Rollback(); err2 != nil {
-			return err2
-		}
-		return nil
-	}
-
 	// Set end of validity of old version to start of new version
 	// in case of overlap
 	if _, err = tx.StmtContext(ctx, fixValidityStmt).ExecContext(ctx,