fix(cubejs): strip emptyCube.emptyKey order placeholder (Tesseract compat)#63
Merged
Conversation
The client query builder emits `order: {"emptyCube.emptyKey":"asc"}` as a
"no order selected" sentinel. The legacy Cube planner silently ignored the
unresolvable member; the Tesseract planner rejects it ("Cannot resolve:
emptyCube"), 500-ing the query. Strip any `emptyCube.*` order entry in the
queryRewrite hook before it reaches the planner (handles object + array
order forms) — restores legacy tolerance and makes the backend robust to
this placeholder regardless of client version.
Verified locally on 1.6.68: the exact failing query (order with
emptyCube.emptyKey) went 400 "Cannot resolve: emptyCube" → 200 OK on both
legacy and Tesseract planners after the guard.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The client query builder sends
order: {"emptyCube.emptyKey":"asc"}as a "no order" sentinel. Legacy Cube ignored the unresolvable member; Tesseract rejects it (Cannot resolve: emptyCube) → 500. This strips anyemptyCube.*order entry in thequeryRewritehook before the planner sees it (object + array forms) — restoring legacy tolerance and making the backend robust to the placeholder from any client version.Verified locally on 1.6.68: the exact failing query went 400 → 200 on both legacy and Tesseract after the guard. Read-only, no data impact.
Pairs with the client-v2 root-cause fix (
normalizeOrdersfilter).🤖 Generated with Claude Code