feat(sql): lower typed List element access - #398
Merged
Merged
Conversation
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.
ClickHouse
arrayElementand bracket access were always bound as Map lookup, so a declared List column could not reach a typed query plan. This extends the existing planning adapter to the shared Map/List element resolver and exportsasap_element_accesswithout changing the structural SQL parser path.Before,
SELECT samples[1] FROM tfailed for a List column. After, it retains the declared element type and nullability; negative and nullable dynamic indices also type correctly. Literal zero, noninteger List indices, and unsupported containers fail closed. Existing Map queries remain supported through the same canonical resolver. DataFusion's adapter still explicitly refuses physical execution.Verification: all
asap-frontend-sqltests passed, including 92 lowering tests, the five original o11y Map queries, canonical exported function assertions, and invalid-index regressions. This is parser/planner support, not a latency claim or lambda/counter-query implementation. Deployment must pin the backend generic element consumer (#653) together with this Planner change; old backends must not assume the new function is executable. Stacked on #397.