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

AfterShip / clickhouse-sql-parser
52%
master: 52%

Build:
Build:
LAST BUILD BRANCH: sharad/fix-rmv-column-list-engine
DEFAULT BRANCH: master
Repo Added 22 Sep 2023 10:13AM UTC
Token F4x2H6fmkWoZPkof5HTWcZ5HSIXKiqDLa regen
Build 468 Last
Files 15
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/keyword-as-column-in-select
branch: fix/keyword-as-column-in-select
CHANGE BRANCH
x
Reset
Sync Branches
  • fix/keyword-as-column-in-select
  • 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
  • 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_alias
  • fix/modify-ttl
  • fix/multi-join
  • fix/multi-line-comments
  • fix/multi_distinct_except
  • fix/npe-unexpected-token
  • fix/panic-invalid-sql
  • fix/parse-comment-literal
  • fix/readme
  • fix/remove-extra-leading-space
  • fix/select-as-query
  • fix/select-issues
  • fix/string-as-table-ident
  • fix/table-visitor
  • fix/union-all
  • fix/walk_when_node
  • fix/when_case_then
  • fix/window_clause
  • 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-string-escapes
  • master
  • minor-refactor-column-type
  • project-group-or-order
  • refactor/allow-to-use-precedence
  • refactor/expect-token-kind
  • refactor/operation-name
  • replicated-database-fix
  • 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
  • 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
  • unify-sql-terms
  • update-readme

11 May 2026 02:54PM UTC coverage: 51.621% (+0.2%) from 51.469%
25677835255

Pull #269

github

erezrokah
Accept bare keyword as last/only SELECT item

Extend keyword-as-identifier handling to recognize end-of-statement
(EOF or `;`) as a disambiguator in expression position, so projections
like `SELECT case`, `SELECT case;`, or `SELECT limit` parse as bare
column refs — matching ClickHouse server (verified against 25.10.7.6,
which returns UNKNOWN_IDENTIFIER, i.e. syntactic accept).

The eos check is applied inline in parseColumnExpr rather than added to
keywordIsSelectItemIdentifier, because the latter is shared with the
terminator/alias-position check, where a trailing clause-starter
keyword at EOF (e.g. `SELECT * FROM`) must still be treated as a
terminator. Verified `SELECT * FROM` still errors as before.

Fixtures:
- select_keyword_as_only_column.sql        (`SELECT interval`)
- select_keyword_as_only_column_semicolon  (`SELECT case;`)
- select_clause_keyword_as_only_column     (`SELECT limit`)
- select_keyword_as_alias                  (`SELECT 1 AS interval, 2 AS from, 3 AS limit`)

The AS-alias fixture documents that `SELECT 1 AS <reserved-kw>` already
works for every reserved keyword without special handling, because
matchTokenKind(TokenKindIdent) coerces TokenKindKeyword and so
parseIdent accepts keyword tokens as alias names; added a comment at
the AS branch of parseSelectItem to make that intentional.
Pull Request #269: fix: Allow reserved keywords as bare column names in SELECT list

43 of 43 new or added lines in 1 file covered. (100.0%)

8247 of 15976 relevant lines covered (51.62%)

2990.69 hits per line

Relevant lines Covered
Build:
Build:
15976 RELEVANT LINES 8247 COVERED LINES
2990.69 HITS PER LINE
Source Files on fix/keyword-as-column-in-select
  • Tree
  • List 15
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
25677835255 fix/keyword-as-column-in-select Accept bare keyword as last/only SELECT item Extend keyword-as-identifier handling to recognize end-of-statement (EOF or `;`) as a disambiguator in expression position, so projections like `SELECT case`, `SELECT case;`, or `SELECT limit` parse as... Pull #269 11 May 2026 02:55PM UTC erezrokah github
51.62
25673523884 fix/keyword-as-column-in-select fix: Allow reserved keywords as bare column names in SELECT list Pull #269 11 May 2026 01:36PM UTC erezrokah github
51.58
25670782882 fix/keyword-as-column-in-select Extract clauseStarterKeywords as single source of truth Address Copilot review: the clause-starter list was duplicated between isSelectItemTerminatorKeyword's switch and peekIsClauseStarterKeyword's slice, with a real risk of drift. Extract the s... Pull #269 11 May 2026 12:43PM UTC arifdemirel github
51.58
25668989343 fix/keyword-as-column-in-select Broaden bypass to all keywords and extend parseColumnExpr lookahead Empirically validated against ClickHouse server 25.10.7.6: CH accepts every reserved keyword as a bare column reference in SELECT projections except NOT (a unary operator). Teste... Pull #269 11 May 2026 12:05PM UTC arifdemirel github
51.54
25668356849 fix/keyword-as-column-in-select Restrict bypass to LIMIT/OFFSET/FORMAT/SETTINGS to preserve trailing-comma-before-keyword-table handling Address review feedback: previous lookahead applied to all clause-starter keywords, which regressed parsing of `SELECT a, FROM `limit`` (trai... Pull #269 11 May 2026 11:51AM UTC arifdemirel github
51.53
25667928751 fix/keyword-as-column-in-select Fix should treat LIMIT/OFFSET/FORMAT as columns in SELECT list when followed by `,`, AS, or another clause keyword Mirrors PR #268: extend `isSelectItemTerminatorKeyword` to peek the next token. A clause-starter keyword (LIMIT, OFFSET, FORMAT, SE... Pull #269 11 May 2026 11:42AM UTC arifdemirel github
51.51
See All Builds (468)

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