• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

AfterShip / clickhouse-sql-parser
53%
master: 54%

Build:
Build:
LAST BUILD BRANCH: codex/fix-semantic-traversal
DEFAULT BRANCH: master
Repo Added 22 Sep 2023 10:13AM UTC
Token F4x2H6fmkWoZPkof5HTWcZ5HSIXKiqDLa regen
Build 504 Last
Files 17
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH fix/expression-precedence
branch: fix/expression-precedence
CHANGE BRANCH
x
Reset
Sync Branches
  • fix/expression-precedence
  • 14-2
  • add-benchmarks
  • add-coverall
  • add-modify-ttl
  • add-more-badges
  • add-valid-until-clause
  • ajruckman_alter_table_delete_where
  • ajruckman_placeholder_and_select_fix
  • alert-autofix-1
  • allow-string-as-tablename
  • allow-var-start-with-dollar
  • alter-role-settings
  • alter-table-drop-detached
  • case-statement-when-spacing
  • change-sql-string-to-compact
  • claude/frosty-wiles-784a80
  • claude/issue-184-20250827-0341
  • claude/romantic-kowalevski-5a7ec1
  • codec-delta-level
  • codex/fix-semantic-traversal
  • copilot/add-beautify-format-alter-role
  • copilot/add-beautify-format-for-create-user
  • copilot/add-beautify-format-instruction
  • copilot/add-beautify-format-support
  • copilot/add-ident-break-for-insert
  • copilot/add-ident-break-for-settings
  • copilot/add-ident-break-from-expression
  • copilot/add-ident-break-on-cluster
  • copilot/add-support-in-partition-expression
  • copilot/fix-12
  • copilot/fix-140
  • copilot/fix-179
  • copilot/fix-181
  • copilot/fix-187
  • copilot/fix-75186bce-1dd8-4e67-bcd7-685469aa2574
  • copilot/fix-e5e3e050-4a0c-4226-8f60-806cafedacba
  • copilot/fix-stderr-routing-issue
  • copilot/refactor-formatter-chaining-methods
  • copilot/update-tool-version-to-0417
  • dev
  • dev1
  • distinct-on
  • feat/add-order-by-with-fill-support
  • feat/alter_modify_query_support
  • feat_support_db_comment
  • feature/access-tuple-with-index
  • feature/add-projection
  • feature/add-union-distinct
  • feature/adjust_engineExpr_String_printing_order
  • feature/allow-select-modifier
  • feature/alter-table-replace
  • feature/check-expression
  • feature/clear-projection-statement
  • feature/column-def-alias-materialized
  • feature/create-function
  • feature/create-or-replace
  • feature/create-role
  • feature/delete-from
  • feature/drop-projection
  • feature/drop-user-role
  • feature/grant-privilege
  • feature/grouping-sets
  • feature/insert-expr
  • feature/insert-with-type-column
  • feature/materialize-index-and-projection
  • feature/optimize-expression
  • feature/query-parameter
  • feature/rename-table
  • feature/select-in-function
  • feature/support-json-type-skip
  • feature/support-placeholder
  • feature/support-ttl-policy
  • feature/support-tuple
  • feature/timestamp-interval
  • fix-array-join-take-2
  • fix-bugs-1
  • fix-cannot-parse-join-only
  • fix-database-column-name
  • fix-describe-table
  • fix-materialized-bug
  • fix-no-as-alias
  • fix-order-by-panic
  • fix-panic-in-eof-error
  • fix-select-limit-add-select-final
  • fix/allow-parameters-for-null-engine
  • fix/ast-walker
  • fix/between-expr
  • fix/between-visitor
  • fix/cast-expr
  • fix/column-alias-string
  • fix/distinct-keyword-preservation
  • fix/distinct-on-dot-notation
  • fix/dollar-sign
  • fix/dont_stop_walk_nil
  • fix/double-quote-as-ident
  • fix/group-by-column-with-keyworld
  • fix/insert-into
  • fix/issue-118
  • fix/issue-176
  • fix/issue-187
  • fix/issue-222
  • fix/issues-108
  • fix/keyword-as-column-in-select
  • fix/keyword_alias
  • fix/lexer-numbers-comments-utf8
  • fix/lexer-unterminated-comment-hang
  • fix/modify-ttl
  • fix/multi-join
  • fix/multi-line-comments
  • fix/multi_distinct_except
  • fix/nil-deref-error-formatting
  • fix/npe-unexpected-token
  • fix/panic-invalid-sql
  • fix/parse-comment-literal
  • fix/position-tracking
  • fix/readme
  • fix/remove-extra-leading-space
  • fix/reserved-keyword-split
  • fix/select-as-query
  • fix/select-issues
  • fix/string-as-table-ident
  • fix/surface-lexer-errors
  • fix/table-visitor
  • fix/traversal-drift
  • fix/union-all
  • fix/walk_when_node
  • fix/when_case_then
  • fix/window_clause
  • fix/wraperror-index-out-of-range
  • fix/wrong-unary-expr-string
  • ft-enhance-json-options
  • improve-lexer
  • improve-rename-syntax
  • improve/parse-expr
  • issue-204
  • issue-23
  • json-type-hints
  • lexer-naming
  • lexer-string-escapes
  • master
  • minor-refactor-column-type
  • project-group-or-order
  • public-api-additions
  • refactor/allow-to-use-precedence
  • refactor/expect-token-kind
  • refactor/operation-name
  • replicated-database-fix
  • reserved-keyword-split
  • role/alter
  • role/on-cluster-expr
  • select-format
  • select-with-left-join
  • settings-bool-parser
  • sharad/add-comment-support-to-create-view
  • sharad/bug_fix
  • sharad/codec_parser
  • sharad/codec_parser_v3
  • sharad/delta_number_literal
  • sharad/dictionary_v1
  • sharad/fix-mv-comment-before-as
  • sharad/fix-rmv-column-list-engine
  • sharad/mv_definer
  • sharad/named_parameter_v1
  • sharad/table_comment
  • structured-parse-errors
  • support-concat-operator
  • support-multiple-array-joins
  • support-nested-tuple-definitions
  • support-offset-without-limit
  • support-refresh-in-mv
  • support/table-alias-without-as
  • swgillespie/alter-table-segv
  • swgillespie/clickhouse-remotesecure
  • test-automation
  • traversal-drift-test
  • unify-sql-terms
  • update-readme

04 Jul 2026 01:52PM UTC coverage: 52.881% (+0.1%) from 52.748%
28708351886

Pull #279

github

git-hulk
Fix expression precedence for lambda, ternary and NOT

The precedence table disagreed with ClickHouse in several places and two
operators were unreachable. All of these misparses round-tripped to the
same SQL text, so the golden tests never caught them:

- Lambda `->` bound tightest instead of loosest: `x -> x + 1` parsed as
  `(x -> x) + 1`. It now binds loosest and is right-associative.
- Ternary `?:` bound above OR/AND: `a OR b ? 1 : 2` parsed as
  `a OR (b ? 1 : 2)` instead of `(a OR b) ? 1 : 2`.
- Prefix NOT grabbed only a primary: `NOT a = b` parsed as `(NOT a) = b`
  instead of `NOT (a = b)`, and `NOT NOT a` misparsed the second NOT as
  a column named NOT.
- `x NOT BETWEEN 1 AND 2` was a hard error: the BETWEEN branch inside
  parseInfix's NOT case sat after the default arm and was dead code.
  BetweenClause gains a Not field.
- `NOT IN` entered through NOT's low precedence while `IN` had its own,
  so `a = b IN (1)` and `a = b NOT IN (1)` grouped differently.
- getNextPrecedence listed TokenKindDot/TokenKindDash twice.
- INTERSECT was not a keyword at all: `SELECT 1 INTERSECT SELECT 2`
  misparsed as `SELECT 1 AS INTERSECT` then errored. It is now wired
  like EXCEPT (SelectQuery.Intersect), including walk/format support;
  walk also gains the previously missing Except child.

Golden JSON diffs are purely the two new fields (BetweenClause.Not,
SelectQuery.Intersect); no format output changed. New structural tests
in precedence_test.go assert the tree shapes directly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Pull Request #279: Fix expression precedence for lambda, ternary and NOT operators

57 of 71 new or added lines in 5 files covered. (80.28%)

1 existing line in 1 file now uncovered.

8545 of 16159 relevant lines covered (52.88%)

3019.95 hits per line

Relevant lines Covered
Build:
Build:
16159 RELEVANT LINES 8545 COVERED LINES
3019.95 HITS PER LINE
Source Files on fix/expression-precedence
  • Tree
  • List 17
  • Changed 5
  • Source Changed 0
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
28708351886 fix/expression-precedence Fix expression precedence for lambda, ternary and NOT The precedence table disagreed with ClickHouse in several places and two operators were unreachable. All of these misparses round-tripped to the same SQL text, so the golden tests never caught... Pull #279 04 Jul 2026 01:54PM UTC git-hulk github
52.88
See All Builds (504)

Badge your Repo: clickhouse-sql-parser

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

Refresh
  • Settings
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc