Repository navigation
Conversation
|
Claude finished @ovr's task in 2m 49s —— View job Security fix looks correct; 1 high (docs), 1 low. Review details
Findings
Security
CorrectnessNormalizing before parsing is safe because:
The test Tests
Review threadsThe listing returned 0 of my own threads, so there were no prior threads to resolve or re-affirm. |
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Automations to automatically generate PRs for you. |
|
Claude finished @ovr's task in 2m 22s —— View job LGTM: no new findings. One earlier low-priority thread is still open. Review details
What I checked
I didn't run the tests: this checkout has no installed dependencies, and the sandbox wouldn't allow fetching Review threadsThe listing returned 2 of my own unresolved threads:
|
Dedupe the repeated `typeof x === 'string' && x.startsWith('{')` member
expression checks behind a shared helper.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Claude finished @ovr's task in 2m 11s —— View job LGTM: no blocking issues. 0 high, 0 medium, 1 low. Review details
Findings
Verified
DocsThe only change users can see is that the REST API now rejects input it was never documented to accept, apart from Review threadsThe listing returned 1 of my own unresolved threads. I resolved it: the shared |
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
|
Claude finished @ovr's task in 2m 26s —— View job Looks good to merge: 0 high, 0 medium, 1 low. Review details
Findings
What I checked
Review threadsThe listing returned 0 of my own unresolved threads: none resolved, none re-affirmed. The earlier |
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
|
Claude finished @ovr's task in 2m 19s —— View job Changes requested: 1 high, 0 medium, 0 low. Since the last commit, the error from mixing member expressions into a Review details
Findings
Checked, no issue
Review threadsThe listing returned no prior threads from me, so nothing was resolved or re-affirmed. 1 new inline comment posted. |
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
|
Claude finished @ovr's task in 1m 54s —— View job LGTM. 0 high, 0 medium, 1 low (posted inline). Review details
Findings
What I checked
Review threadsThe listing returned 0 of my own threads (no prior threads), so nothing was resolved or re-affirmed. The new finding was posted. |
|
Claude finished @ovr's task in 1m 46s —— View job LGTM: 0 high, 0 medium, 1 low, a hardening suggestion only. Review details
Findings
Verified
Not runI didn't run the Jest suite: the Review threadsThe listing returned 0 of my own unresolved threads (no prior threads), so I resolved none and re-affirmed none. 1 new inline comment posted. |
| })), | ||
| }); | ||
|
|
||
| const memberOrExpression = (path: Joi.StringSchema) => Joi.alternatives( |
There was a problem hiding this comment.
Low (hardening): the first validation pass of a memberExpressions query still accepts object-form memberExpression / parsedMemberExpression. cubesql only ever sends serialized {...} strings in measures / dimensions / segments. RLS and queryRewrite are the only things that produce object forms, and they go through the second pass (normalize(rewrittenQuery, true), gateway.ts:1621).
There's also a gap: hasExpressionsInQuery (gateway.ts:1935) only looks for serialized strings. So an object-form parsedMemberExpression that reached the first pass would skip parseMemberExpressionsInQuery / evalMemberExpressionsInQuery and get to the compiler with no eval. You can't reach this from REST today because memberExpressions comes only from the SQL server. Still, splitting the schema closes it at the source:
- first pass:
Joi.alternatives(path, serializedMemberExpression) - second pass (after rewrite): the current alternatives, object forms included
For example, use one schema for parsing input and a separate rewrittenQuerySchema for normalize(rewrittenQuery, true).
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #12626 +/- ##
==========================================
+ Coverage 66.22% 66.28% +0.05%
==========================================
Files 258 258
Lines 22023 22042 +19
Branches 5308 5311 +3
==========================================
+ Hits 14585 14610 +25
+ Misses 6640 6638 -2
+ Partials 798 794 -4
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
No description provided.