comparison pkg/imports/agm.go @ 3186:928cdc06ff37

Warn only once if gauge is unknown Makes the import faster by some orders of magnitude in the worst case scenario of a large CSV file with only unknown gauges.
author Tom Gottfried <tom@intevation.de>
date Tue, 07 May 2019 18:35:11 +0200
parents adf355aaef57
children 8329c6d3cf2a
comparison
equal deleted inserted replaced
3185:505414dfe3e7 3186:928cdc06ff37
300 gaugeCheckStmt, err := tx.PrepareContext(ctx, agmGaugeCheckSQL) 300 gaugeCheckStmt, err := tx.PrepareContext(ctx, agmGaugeCheckSQL)
301 if err != nil { 301 if err != nil {
302 return nil, err 302 return nil, err
303 } 303 }
304 defer gaugeCheckStmt.Close() 304 defer gaugeCheckStmt.Close()
305
305 selectStmt, err := tx.PrepareContext(ctx, agmSelectSQL) 306 selectStmt, err := tx.PrepareContext(ctx, agmSelectSQL)
306 if err != nil { 307 if err != nil {
307 return nil, err 308 return nil, err
308 } 309 }
309 defer selectStmt.Close() 310 defer selectStmt.Close()
311
310 insertStmt, err := tx.PrepareContext(ctx, agmInsertSQL) 312 insertStmt, err := tx.PrepareContext(ctx, agmInsertSQL)
311 if err != nil { 313 if err != nil {
312 return nil, err 314 return nil, err
313 } 315 }
314 defer insertStmt.Close() 316 defer insertStmt.Close()
317
315 trackStmt, err := tx.PrepareContext(ctx, trackImportSQL) 318 trackStmt, err := tx.PrepareContext(ctx, trackImportSQL)
316 if err != nil { 319 if err != nil {
317 return nil, err 320 return nil, err
318 } 321 }
319 defer trackStmt.Close() 322 defer trackStmt.Close()
339 return nil, fmt.Errorf("Invalid ISRS code line %d: %v", line, err) 342 return nil, fmt.Errorf("Invalid ISRS code line %d: %v", line, err)
340 } 343 }
341 344
342 if exists, found := checkedGauges[*gid]; found { 345 if exists, found := checkedGauges[*gid]; found {
343 if !exists { 346 if !exists {
344 feedback.Warn("Ignoring data for unknown gauge %s", gid.String()) 347 // Just ignore the line since we have already warned
345 continue lines 348 continue lines
346 } 349 }
347 } else { // not found in gauge cache 350 } else { // not found in gauge cache
348 if err := gaugeCheckStmt.QueryRowContext( 351 if err := gaugeCheckStmt.QueryRowContext(
349 ctx, 352 ctx,