Mercurial > gemma
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,