Mercurial > gemma
diff pkg/imports/wa.go @ 2659:00b0a7b2225a
Waterway area import: do not fail if INSERT of one item fails
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Thu, 14 Mar 2019 18:09:35 +0100 |
parents | 9b6a02923bb4 |
children | 542d3441c2d8 |
line wrap: on
line diff
--- a/pkg/imports/wa.go Thu Mar 14 16:59:14 2019 +0100 +++ b/pkg/imports/wa.go Thu Mar 14 18:09:35 2019 +0100 @@ -197,6 +197,8 @@ feedback.Info("Using EPSG: %d", epsg) + const featureSavepoint = "feature" + for _, feature := range rfc.Features { if feature.Properties == nil || feature.Geometry.Coordinates == nil { missingProperties++ @@ -229,6 +231,9 @@ if err := json.Unmarshal(*feature.Geometry.Coordinates, &p); err != nil { return err } + if err := Savepoint(tx, ctx, featureSavepoint); err != nil { + return err + } if _, err := insertStmt.ExecContext( ctx, p.asWKB(), @@ -236,9 +241,16 @@ catccl, dirimp, ); err != nil { - return err + feedback.Warn(handleError(err).Error()) + if err = RollbackToSavepoint(tx, ctx, featureSavepoint); err != nil { + return err + } + } else { + if err = ReleaseSavepoint(tx, ctx, featureSavepoint); err != nil { + return err + } + features++ } - features++ default: unsupported[feature.Geometry.Type]++ }