Commit c102ddb
fix: skip URL rewriting for non-relation field values
A "?fields=" query selecting scalar fields returned corrupted values:
plain strings were percent-encoded ("Book 1" -> "Book%201") and numbers
were coerced to strings (2019 -> "2019"). The header form was unaffected
because it never rewrites the response body.
The relation handler ran for every scalar leaf, including pure field
projections that are not relations. Those values were parsed with
url.Parse and re-serialized via url.URL.String(), which percent-encodes
the path and stringifies numbers.
Guard the handler so a node with no relation to push and no child
selector to propagate is left untouched. Besides fixing the corruption,
this skips url.Parse, the query re-encoding and the json.Marshal for
every projected scalar, cutting allocations on the fields path by ~30%.
Fixes #961 parent 6518cee commit c102ddb
3 files changed
Lines changed: 31 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
| 76 | + | |
76 | 77 | | |
77 | 78 | | |
78 | 79 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
202 | 202 | | |
203 | 203 | | |
204 | 204 | | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
205 | 227 | | |
206 | 228 | | |
207 | 229 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
212 | 212 | | |
213 | 213 | | |
214 | 214 | | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
215 | 223 | | |
216 | 224 | | |
217 | 225 | | |
| |||
0 commit comments