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