Skip to content

Commit 03b8f08

Browse files
authored
🐛 Fix: macros regex and quotations (#125)
* 🐛 Fix: macros regex and quotations * 🔖 Chore: update version and changelog
1 parent c6847ab commit 03b8f08

File tree

3 files changed

+26
-14
lines changed

3 files changed

+26
-14
lines changed

CHANGELOG.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
# Changelog
22

3-
## 1.3.7
3+
## 1.3.8
4+
5+
- Refactor: User context for oauth token pass-through
6+
- Bugfix: Allow . in macro column names & fix quotation for timeFrom and timeTo macros
7+
8+
---
9+
10+
### 1.3.7
411

512
- Refactor: Rename Azure entra pass-through Auth Methof to OAuth pass-through
613
- Bugfix: CallResource OAuthtoken pass-through

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "mullerpeter-databricks-datasource",
33
"private": true,
4-
"version": "1.3.7",
4+
"version": "1.3.8",
55
"description": "Databricks SQL Connector",
66
"scripts": {
77
"build": "webpack -c ./.config/webpack/webpack.config.ts --env production",

pkg/plugin/query.go

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,36 +36,36 @@ func replaceMacros(sqlQuery string, query backend.DataQuery) string {
3636

3737
interval_string := getIntervalString(query.Interval)
3838

39-
var rgx = regexp.MustCompile(`\$__timeWindow\(([a-zA-Z0-9_-]+)\)`)
39+
var rgx = regexp.MustCompile(`\$__timeWindow\(([a-zA-Z0-9_.-]+)\)`)
4040
if rgx.MatchString(queryString) {
4141
log.DefaultLogger.Info("__timeWindow placeholder found")
4242
rs := rgx.FindStringSubmatch(queryString)
4343
timeColumnName := rs[1]
4444
queryString = rgx.ReplaceAllString(queryString, fmt.Sprintf("window(%s, '%s')", timeColumnName, interval_string))
4545

46-
rgx = regexp.MustCompile(`\$__time\(([a-zA-Z0-9_-]+)\)`)
46+
rgx = regexp.MustCompile(`\$__time\(([a-zA-Z0-9_.-]+)\)`)
4747
if rgx.MatchString(queryString) {
4848
log.DefaultLogger.Info("__time placeholder found")
4949
queryString = rgx.ReplaceAllString(queryString, "window.start")
5050
}
5151

52-
rgx = regexp.MustCompile(`\$__value\(([a-zA-Z0-9_-]+)\)`)
52+
rgx = regexp.MustCompile(`\$__value\(([a-zA-Z0-9_.-]+)\)`)
5353
if rgx.MatchString(queryString) {
5454
log.DefaultLogger.Info("__value placeholder found")
5555
rs = rgx.FindStringSubmatch(queryString)
5656
valueColumnName := rs[1]
5757
queryString = rgx.ReplaceAllString(queryString, fmt.Sprintf("avg(%s) AS value", valueColumnName))
5858
}
5959
} else {
60-
rgx = regexp.MustCompile(`\$__time\(([a-zA-Z0-9_-]+)\)`)
60+
rgx = regexp.MustCompile(`\$__time\(([a-zA-Z0-9_.-]+)\)`)
6161
if rgx.MatchString(queryString) {
6262
log.DefaultLogger.Info("__time placeholder found")
6363
rs := rgx.FindStringSubmatch(queryString)
6464
timeColumnName := rs[1]
6565
queryString = rgx.ReplaceAllString(queryString, fmt.Sprintf("%s AS time", timeColumnName))
6666
}
6767

68-
rgx = regexp.MustCompile(`\$__value\(([a-zA-Z0-9_-]+)\)`)
68+
rgx = regexp.MustCompile(`\$__value\(([a-zA-Z0-9_.-]+)\)`)
6969
if rgx.MatchString(queryString) {
7070
log.DefaultLogger.Info("__value placeholder found")
7171
rs := rgx.FindStringSubmatch(queryString)
@@ -80,7 +80,7 @@ func replaceMacros(sqlQuery string, query backend.DataQuery) string {
8080
}
8181

8282
timeGroupMacros := []timeGroupMacroType{
83-
{`\$__timeGroup\(([a-zA-Z0-9_-]+),'([a-zA-Z0-9_-]+)'\)`, "window(%s, '%s')"},
83+
{`\$__timeGroup\(([a-zA-Z0-9_.-]+),'([a-zA-Z0-9_.-]+)'\)`, "window(%s, '%s')"},
8484
}
8585

8686
for _, timeGroupMacro := range timeGroupMacros {
@@ -101,9 +101,9 @@ func replaceMacros(sqlQuery string, query backend.DataQuery) string {
101101
to string
102102
}
103103
timefilterMacros := []timeFilterMacroType{
104-
{`\$__timeFilter\(([a-zA-Z0-9_-]+)\)`, "%s BETWEEN '%s' AND '%s'", query.TimeRange.From.UTC().Format("2006-01-02 15:04:05"), query.TimeRange.To.UTC().Format("2006-01-02 15:04:05")},
105-
{`\$__unixEpochNanoFilter\(([a-zA-Z0-9_-]+)\)`, "%s BETWEEN %s AND %s", fmt.Sprintf("%d", query.TimeRange.From.UnixNano()), fmt.Sprintf("%d", query.TimeRange.To.UnixNano())},
106-
{`\$__unixEpochFilter\(([a-zA-Z0-9_-]+)\)`, "%s BETWEEN %s AND %s", fmt.Sprintf("%d", query.TimeRange.From.Unix()), fmt.Sprintf("%d", query.TimeRange.To.Unix())},
104+
{`\$__timeFilter\(([a-zA-Z0-9_.-]+)\)`, "%s BETWEEN '%s' AND '%s'", query.TimeRange.From.UTC().Format("2006-01-02 15:04:05"), query.TimeRange.To.UTC().Format("2006-01-02 15:04:05")},
105+
{`\$__unixEpochNanoFilter\(([a-zA-Z0-9_.-]+)\)`, "%s BETWEEN %s AND %s", fmt.Sprintf("%d", query.TimeRange.From.UnixNano()), fmt.Sprintf("%d", query.TimeRange.To.UnixNano())},
106+
{`\$__unixEpochFilter\(([a-zA-Z0-9_.-]+)\)`, "%s BETWEEN %s AND %s", fmt.Sprintf("%d", query.TimeRange.From.Unix()), fmt.Sprintf("%d", query.TimeRange.To.Unix())},
107107
}
108108

109109
for _, timefilterMacro := range timefilterMacros {
@@ -128,9 +128,14 @@ func replaceMacros(sqlQuery string, query backend.DataQuery) string {
128128
"$__unixEpochTo()": fmt.Sprintf("%d", query.TimeRange.To.Unix()),
129129
"$__unixEpochNanoFrom()": fmt.Sprintf("%d", query.TimeRange.From.UnixNano()),
130130
"$__unixEpochNanoTo()": fmt.Sprintf("%d", query.TimeRange.To.UnixNano()),
131-
"$__timeFrom": query.TimeRange.From.UTC().Format("2006-01-02 15:04:05"),
132-
"$__timeTo": query.TimeRange.To.UTC().Format("2006-01-02 15:04:05"),
133-
"$__interval": interval_string,
131+
132+
// Backwards compatibility
133+
"'$__timeFrom'": fmt.Sprintf("'%s'", query.TimeRange.From.UTC().Format("2006-01-02 15:04:05")),
134+
"'$__timeTo'": fmt.Sprintf("'%s'", query.TimeRange.To.UTC().Format("2006-01-02 15:04:05")),
135+
136+
"$__timeFrom": fmt.Sprintf("'%s'", query.TimeRange.From.UTC().Format("2006-01-02 15:04:05")),
137+
"$__timeTo": fmt.Sprintf("'%s'", query.TimeRange.To.UTC().Format("2006-01-02 15:04:05")),
138+
"$__interval": interval_string,
134139
}
135140

136141
for macro, replacement := range simpleMacros {

0 commit comments

Comments
 (0)