[perf] Actual review changes from https://skia-review.googlesource.com/c/buildbot/+/305522

Change-Id: Ic4d808759bef86973ad53562bf3e91f707b2fcf5
Reviewed-on: https://skia-review.googlesource.com/c/buildbot/+/305599
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
Commit-Queue: Joe Gregorio <jcgregorio@google.com>
diff --git a/perf/go/tracestore/sqltracestore/sqltracestore.go b/perf/go/tracestore/sqltracestore/sqltracestore.go
index b37aef1..cfdd491 100644
--- a/perf/go/tracestore/sqltracestore/sqltracestore.go
+++ b/perf/go/tracestore/sqltracestore/sqltracestore.go
@@ -176,14 +176,12 @@
 var templatesByDialect = map[perfsql.Dialect]templates{
 	perfsql.CockroachDBDialect: {
 		insertIntoPostings: `
-		INSERT INTO
+		UPSERT INTO
 			Postings (tile_number, key_value, trace_id)
 		VALUES
 			{{ range $index, $element :=  . -}}
 				{{ if $index }},{{end}}({{ $element.TileNumber }}, '{{ $element.KeyValue }}', {{ $element.TraceID }})
-	  		{{ end }}
-		ON CONFLICT
-		DO NOTHING`,
+	  		{{ end }}`,
 	},
 }
 
@@ -315,7 +313,7 @@
 	for key, tmpl := range templatesByDialect[dialect] {
 		t, err := template.New("").Parse(tmpl)
 		if err != nil {
-			return nil, skerr.Wrapf(err, "parsting template %v, %q", key, tmpl)
+			return nil, skerr.Wrapf(err, "parsing template %v, %q", key, tmpl)
 		}
 		unpreparedStatements[key] = t
 	}
@@ -704,6 +702,7 @@
 // the given traceID and tileNumber. The Params given are from the parse trace
 // name.
 func (s *SQLTraceStore) updatePostings(p paramtools.Params, tileNumber types.TileNumber, traceID int64) error {
+	// Clean the data to avoid SQL injection attacks.
 	p = query.ForceValid(p)
 
 	// Prepare the data for the SQL template.