Skip to content

Commit 71bc41d

Browse files
committed
fix: support COMMENT before AS SELECT in CREATE MATERIALIZED VIEW
ClickHouse 26.2+ changed SHOW CREATE TABLE output to place COMMENT before AS SELECT, while 25.x places it after. The parser only supported COMMENT after AS SELECT, causing parse failures on 26.2+. Now tries COMMENT in both positions: - Before AS SELECT (ClickHouse 26.2+ SHOW CREATE TABLE format) - After AS SELECT (ClickHouse 25.x SHOW CREATE TABLE format) Fixes #261
1 parent 5a72214 commit 71bc41d

1 file changed

Lines changed: 16 additions & 4 deletions

File tree

parser/parser_view.go

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,15 @@ func (p *Parser) parseCreateMaterializedView(pos Pos) (*CreateMaterializedView,
141141
createMaterializedView.StatementEnd = p.Pos()
142142
}
143143

144+
// COMMENT can appear either before or after AS SELECT.
145+
// ClickHouse 26.2+ outputs COMMENT before AS SELECT in SHOW CREATE TABLE,
146+
// while 25.8 outputs it after AS SELECT.
147+
comment, err := p.tryParseComment()
148+
if err != nil {
149+
return nil, err
150+
}
151+
createMaterializedView.Comment = comment
152+
144153
if p.tryConsumeKeywords(KeywordAs) {
145154
subQuery, err := p.parseSubQuery(p.Pos())
146155
if err != nil {
@@ -150,11 +159,14 @@ func (p *Parser) parseCreateMaterializedView(pos Pos) (*CreateMaterializedView,
150159
createMaterializedView.StatementEnd = subQuery.End()
151160
}
152161

153-
comment, err := p.tryParseComment()
154-
if err != nil {
155-
return nil, err
162+
// Also try parsing COMMENT after AS SELECT (ClickHouse 25.x format)
163+
if createMaterializedView.Comment == nil {
164+
comment, err = p.tryParseComment()
165+
if err != nil {
166+
return nil, err
167+
}
168+
createMaterializedView.Comment = comment
156169
}
157-
createMaterializedView.Comment = comment
158170
return createMaterializedView, nil
159171
}
160172

0 commit comments

Comments
 (0)