Skip to content

Commit 365c90f

Browse files
committed
fix: support COMMENT before AS SELECT in CREATE MATERIALIZED VIEW
ClickHouse's SHOW CREATE TABLE outputs COMMENT between the column list and AS SELECT, but the parser only tried COMMENT after AS SELECT. Now tries COMMENT in both positions: - Before AS SELECT (SHOW CREATE TABLE format) - After AS SELECT (documented syntax) Fixes #261
1 parent f8c2a1f commit 365c90f

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's SHOW CREATE TABLE outputs COMMENT before AS SELECT,
146+
// but the documented syntax shows it after.
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 (documented syntax)
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)