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

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

Build:
Build:
LAST BUILD BRANCH: fix/alter-table-settings-statement-level
DEFAULT BRANCH: master
Repo Added 22 Sep 2023 10:13AM UTC
Token F4x2H6fmkWoZPkof5HTWcZ5HSIXKiqDLa regen
Build 586 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/alter-table-settings-statement-level
branch: fix/alter-table-settings-statement-level
CHANGE BRANCH
x
Reset
Sync Branches
  • fix/alter-table-settings-statement-level
  • 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
  • auto-version
  • case-statement-when-spacing
  • change-sql-string-to-compact
  • claude/end-not-reserved
  • 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/lagr-parser-gaps
  • 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-global-join-modifier
  • fix-interval-column-name
  • fix-materialized-bug
  • fix-no-as-alias
  • fix-order-by-panic
  • fix-panic-in-eof-error
  • fix-parenthesized-set-operator-left-operand
  • fix-select-limit-add-select-final
  • fix-table-function-arg-exprs
  • fix/allow-parameters-for-null-engine
  • fix/alter-table-add-index-settings
  • fix/alter-table-modify
  • fix/ast-walker
  • fix/between-expr
  • fix/between-visitor
  • fix/cast-expr
  • fix/cast-expr-operand
  • fix/cast-in-table-function-arg
  • fix/column-alias-string
  • fix/create-dictionary-format
  • fix/distinct-keyword-preservation
  • fix/distinct-on-dot-notation
  • fix/dollar-sign
  • fix/dont_stop_walk_nil
  • fix/double-quote-as-ident
  • fix/drop-database-sync
  • fix/expression-precedence
  • 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-arg-functions
  • 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/signed-number-after-bracket
  • fix/string-as-table-ident
  • fix/surface-lexer-errors
  • fix/system-reload-on-cluster
  • fix/table-visitor
  • fix/trailing-operator-at-eof
  • 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
  • keyword-ident-expression-position
  • lexer-naming
  • lexer-string-escapes
  • master
  • minor-refactor-column-type
  • patch-1
  • project-group-or-order
  • public-api-additions
  • refactor-join-modifiers
  • 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-function-table-settings
  • 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
  • understand-gcd-codec
  • unify-sql-terms
  • update-readme

04 Sep 2026 03:06AM UTC coverage: 56.199% (+0.06%) from 56.14%
33832045281

Pull #320

github

Lance726
Move ALTER TABLE SETTINGS to the statement level

SETTINGS on ALTER TABLE is a query-level clause: ClickHouse accepts it
once, after the last alter clause, and rejects it mid-statement.

  -- rejected by ClickHouse
  ALTER TABLE t ADD COLUMN c Int SETTINGS alter_sync = 2, DROP COLUMN b
  -- accepted by ClickHouse
  ALTER TABLE t ADD COLUMN c Int, DROP COLUMN b SETTINGS alter_sync = 2

It was instead parsed per clause, by ADD COLUMN, ADD INDEX, DETACH
PARTITION and DROP PARTITION only, so every other form failed to parse
even though ClickHouse accepts it:

  ALTER TABLE t MODIFY COLUMN a Int64 SETTINGS alter_sync = 2
  ALTER TABLE t DROP COLUMN b SETTINGS alter_sync = 2
  ALTER TABLE t ADD COLUMN c Int, DROP COLUMN b SETTINGS alter_sync = 2
  ALTER TABLE t MATERIALIZE INDEX IF EXISTS idx SETTINGS mutations_sync = 2

Parse it once in parseAlterTable instead, after the clause list, and
reject it mid-statement as ClickHouse does.

Formatted SQL is unchanged for the clauses that already accepted
SETTINGS: only the AST placement moves, so their format/ goldens do not
change.

Breaking AST change: AlterTableAddColumn.Settings,
AlterTableAddIndex.Settings, AlterTableDetachPartition.Settings and
AlterTableDropPartition.Settings are removed in favour of
AlterTable.Settings.

Every form above was verified against clickhouse-local 26.8.2.7, in both
directions: the SQL parses here, and this parser's formatted output is
accepted by ClickHouse.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Pull Request #320: Move ALTER TABLE SETTINGS to the statement level

16 of 24 new or added lines in 4 files covered. (66.67%)

1 existing line in 1 file now uncovered.

9542 of 16979 relevant lines covered (56.2%)

4095.09 hits per line

Relevant lines Covered
Build:
Build:
16979 RELEVANT LINES 9542 COVERED LINES
4095.09 HITS PER LINE
Source Files on fix/alter-table-settings-statement-level
  • Tree
  • List 17
  • Changed 4
  • Source Changed 0
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
33832045281 fix/alter-table-settings-statement-level Move ALTER TABLE SETTINGS to the statement level SETTINGS on ALTER TABLE is a query-level clause: ClickHouse accepts it once, after the last alter clause, and rejects it mid-statement. -- rejected by ClickHouse ALTER TABLE t ADD COLUMN c Int... Pull #320 04 Sep 2026 03:08AM UTC Lance726 github
56.2
See All Builds (586)

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 TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc