Commit 1e3de96
fix(tools/looker): strip wrapping quotes from filter values for unquoted parameters (#3273)
## Description
LookML `parameter` fields declared `type: unquoted` reject queries
through the Looker tools because filter values arrive with a literal
layer of wrapping quote characters and are substituted into SQL bare via
`{% parameter %}` — producing invalid SQL like `... = "first_touch"`.
`ProcessQueryArgs` in
`internal/tools/looker/lookercommon/lookercommon.go` already strips a
wrapping layer of quotes from filter *keys*; this extends the same
handling to string *values*, stripping a single layer of wrapping `"` or
`'` only when the first and last characters match. Bare values are
correct for all parameter types over the `WriteQuery` wire format, so
this is applied unconditionally — no need to branch on the field's
declared LookML type. The `filters` parameter description is also
tightened so the model is told explicitly not to wrap values in extra
quotes, addressing the upstream cause while the normalization stays a
backstop.
One fix covers every tool built on the shared helper: `looker-query`,
`looker-query-sql`, `looker-query-url`, `looker-make-look`, and
`looker-add-dashboard-element`.
## Tests
- **Unit:** added `TestProcessQueryArgsStripsWrappingQuotes` exercising
`ProcessQueryArgs` directly — bare values (unchanged), double-quoted
values, single-quoted values, quoted keys (regression),
quoted-key+quoted-value, non-string values (untouched), single-character
strings (no length-check footgun), and mismatched wrapping characters
(left alone). `go test -race ./internal/tools/looker/lookercommon/...`
passes.
- **Integration:** updated the `filters` manifest assertions in
`tests/looker/looker_integration_test.go` to match the tightened
parameter description, keeping the live
`looker-query`/`looker-query-sql`/`looker-query-url` integration suite
green.
## PR Checklist
- [x] Make sure you reviewed
[CONTRIBUTING.md](https://github.com/googleapis/mcp-toolbox/blob/main/CONTRIBUTING.md)
- [x] Make sure to open an issue as a bug/issue before writing your
code!
- [x] Ensure the tests and linter pass
- [x] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)
- [ ] Make sure to add `!` if this involve a breaking change
🛠️ Fixes #3272
Co-authored-by: Dr. Strangelove <drstrangelove@google.com>1 parent c3b7248 commit 1e3de96
3 files changed
Lines changed: 111 additions & 10 deletions
File tree
- internal/tools/looker/lookercommon
- tests/looker
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
118 | 118 | | |
119 | 119 | | |
120 | 120 | | |
121 | | - | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
122 | 126 | | |
123 | 127 | | |
124 | 128 | | |
| |||
174 | 178 | | |
175 | 179 | | |
176 | 180 | | |
177 | | - | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
178 | 187 | | |
179 | | - | |
180 | | - | |
181 | | - | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
182 | 191 | | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
183 | 198 | | |
| 199 | + | |
184 | 200 | | |
185 | 201 | | |
186 | 202 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
| 24 | + | |
24 | 25 | | |
25 | 26 | | |
26 | 27 | | |
| |||
171 | 172 | | |
172 | 173 | | |
173 | 174 | | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
174 | 259 | | |
175 | 260 | | |
176 | 261 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
514 | 514 | | |
515 | 515 | | |
516 | 516 | | |
517 | | - | |
| 517 | + | |
518 | 518 | | |
519 | 519 | | |
520 | 520 | | |
| |||
606 | 606 | | |
607 | 607 | | |
608 | 608 | | |
609 | | - | |
| 609 | + | |
610 | 610 | | |
611 | 611 | | |
612 | 612 | | |
| |||
698 | 698 | | |
699 | 699 | | |
700 | 700 | | |
701 | | - | |
| 701 | + | |
702 | 702 | | |
703 | 703 | | |
704 | 704 | | |
| |||
950 | 950 | | |
951 | 951 | | |
952 | 952 | | |
953 | | - | |
| 953 | + | |
954 | 954 | | |
955 | 955 | | |
956 | 956 | | |
| |||
1232 | 1232 | | |
1233 | 1233 | | |
1234 | 1234 | | |
1235 | | - | |
| 1235 | + | |
1236 | 1236 | | |
1237 | 1237 | | |
1238 | 1238 | | |
| |||
0 commit comments