From ae3012b7bf4c4f0055092044934b93a601ea2902 Mon Sep 17 00:00:00 2001 From: Lukasz Gryglicki Date: Fri, 18 May 2018 14:14:21 +0000 Subject: [PATCH] Critical fix for Postgres 10 - syntax changed! [no deploy] Signed-off-by: Lukasz Gryglicki --- pg_conn.go | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/pg_conn.go b/pg_conn.go index 4bb6c71db8..3b6b9472d2 100644 --- a/pg_conn.go +++ b/pg_conn.go @@ -339,11 +339,15 @@ func WriteTSPoints(ctx *Ctx, con *sql.DB, pts *TSPoints, mergeSeries string, mut } namesUA := strings.Join(namesU, ", ") argsUA := strings.Join(argsU, ", ") + if len(namesU) > 1 { + namesUA = "(" + namesUA + ")" + argsUA = "(" + argsUA + ")" + } argT := "$" + strconv.Itoa(i) vals = append(vals, p.t) q := fmt.Sprintf( "insert into \"%[1]s\"("+namesIA+") values("+argsIA+") "+ - "on conflict(time) do update set ("+namesUA+") = ("+argsUA+") "+ + "on conflict(time) do update set "+namesUA+" = "+argsUA+" "+ "where \"%[1]s\".time = "+argT, name, ) @@ -374,13 +378,17 @@ func WriteTSPoints(ctx *Ctx, con *sql.DB, pts *TSPoints, mergeSeries string, mut } namesUA := strings.Join(namesU, ", ") argsUA := strings.Join(argsU, ", ") + if len(namesU) > 1 { + namesUA = "(" + namesUA + ")" + argsUA = "(" + argsUA + ")" + } argT := "$" + strconv.Itoa(i) argP := "$" + strconv.Itoa(i+1) vals = append(vals, p.t) vals = append(vals, p.period) q := fmt.Sprintf( "insert into \"%[1]s\"("+namesIA+") values("+argsIA+") "+ - "on conflict(time, period) do update set ("+namesUA+") = ("+argsUA+") "+ + "on conflict(time, period) do update set "+namesUA+" = "+argsUA+" "+ "where \"%[1]s\".time = "+argT+" and \"%[1]s\".period = "+argP, name, ) @@ -410,6 +418,10 @@ func WriteTSPoints(ctx *Ctx, con *sql.DB, pts *TSPoints, mergeSeries string, mut } namesUA := strings.Join(namesU, ", ") argsUA := strings.Join(argsU, ", ") + if len(namesU) > 1 { + namesUA = "(" + namesUA + ")" + argsUA = "(" + argsUA + ")" + } argT := "$" + strconv.Itoa(i) argP := "$" + strconv.Itoa(i+1) argS := "$" + strconv.Itoa(i+2) @@ -418,7 +430,7 @@ func WriteTSPoints(ctx *Ctx, con *sql.DB, pts *TSPoints, mergeSeries string, mut vals = append(vals, p.name) q := fmt.Sprintf( "insert into \"%[1]s\"("+namesIA+") values("+argsIA+") "+ - "on conflict(time, series, period) do update set ("+namesUA+") = ("+argsUA+") "+ + "on conflict(time, series, period) do update set "+namesUA+" = "+argsUA+" "+ "where \"%[1]s\".time = "+argT+" and \"%[1]s\".period = "+argP+" and \"%[1]s\".series = "+argS, mergeS, )