InfluxDB: Update InfluxQL querybuilder to qualify identifiers (#62230)

This commit is contained in:
Ludovic Viaud
2023-03-02 15:05:24 +01:00
committed by GitHub
parent bb798e24f3
commit 5bd2fac9c8
8 changed files with 127 additions and 31 deletions

View File

@@ -78,7 +78,17 @@ func (query *Query) renderTags() []string {
textValue = fmt.Sprintf("'%s'", strings.ReplaceAll(tag.Value, `\`, `\\`))
}
res = append(res, fmt.Sprintf(`%s"%s" %s %s`, str, tag.Key, tag.Operator, textValue))
escapedKey := fmt.Sprintf(`"%s"`, tag.Key)
if strings.HasSuffix(tag.Key, "::tag") {
escapedKey = fmt.Sprintf(`"%s"::tag`, strings.TrimSuffix(tag.Key, "::tag"))
}
if strings.HasSuffix(tag.Key, "::field") {
escapedKey = fmt.Sprintf(`"%s"::field`, strings.TrimSuffix(tag.Key, "::field"))
}
res = append(res, fmt.Sprintf(`%s%s %s %s`, str, escapedKey, tag.Operator, textValue))
}
return res

View File

@@ -98,10 +98,23 @@ func init() {
}
func fieldRenderer(query *Query, queryContext *backend.QueryDataRequest, part *QueryPart, innerExpr string) string {
if part.Params[0] == "*" {
param := part.Params[0]
if param == "*" {
return "*"
}
return fmt.Sprintf(`"%s"`, part.Params[0])
escapedParam := fmt.Sprintf(`"%s"`, param)
if strings.HasSuffix(param, "::tag") {
escapedParam = fmt.Sprintf(`"%s"::tag`, strings.TrimSuffix(param, "::tag"))
}
if strings.HasSuffix(param, "::field") {
escapedParam = fmt.Sprintf(`"%s"::field`, strings.TrimSuffix(param, "::field"))
}
return escapedParam
}
func functionRenderer(query *Query, queryContext *backend.QueryDataRequest, part *QueryPart, innerExpr string) string {