Skip to content

Commit d57311f

Browse files
committed
Support column definitions in CREATE VIEW statements
Add parsing of column list after view name in CREATE VIEW, e.g.: CREATE VIEW v (x UInt64) AS SELECT * FROM table This enables views to specify column types for the view columns. 14 tests now pass with this fix.
1 parent 4293898 commit d57311f

15 files changed

Lines changed: 28 additions & 67 deletions

File tree

parser/parser.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1927,6 +1927,23 @@ func (p *Parser) parseCreateView(create *ast.CreateQuery) {
19271927
}
19281928
}
19291929

1930+
// Parse column definitions (e.g., CREATE VIEW v (x UInt64) AS SELECT ...)
1931+
if p.currentIs(token.LPAREN) {
1932+
p.nextToken()
1933+
for !p.currentIs(token.RPAREN) && !p.currentIs(token.EOF) {
1934+
col := p.parseColumnDeclaration()
1935+
if col != nil {
1936+
create.Columns = append(create.Columns, col)
1937+
}
1938+
if p.currentIs(token.COMMA) {
1939+
p.nextToken()
1940+
} else {
1941+
break
1942+
}
1943+
}
1944+
p.expect(token.RPAREN)
1945+
}
1946+
19301947
// Handle ON CLUSTER
19311948
if p.currentIs(token.ON) {
19321949
p.nextToken()
Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1 @@
1-
{
2-
"explain_todo": {
3-
"stmt5": true
4-
}
5-
}
1+
{}
Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1 @@
1-
{
2-
"explain_todo": {
3-
"stmt64": true
4-
}
5-
}
1+
{}

parser/testdata/02184_default_table_engine/metadata.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
"stmt107": true,
44
"stmt114": true,
55
"stmt26": true,
6-
"stmt36": true,
7-
"stmt37": true,
86
"stmt46": true,
97
"stmt56": true,
108
"stmt61": true,
Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1 @@
1-
{
2-
"explain_todo": {
3-
"stmt16": true,
4-
"stmt18": true,
5-
"stmt39": true,
6-
"stmt40": true
7-
}
8-
}
1+
{}
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
{
22
"explain_todo": {
3-
"stmt10": true,
4-
"stmt4": true
3+
"stmt10": true
54
}
65
}
Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1 @@
1-
{
2-
"explain_todo": {
3-
"stmt6": true
4-
}
5-
}
1+
{}
Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1 @@
1-
{
2-
"explain_todo": {
3-
"stmt2": true
4-
}
5-
}
1+
{}

parser/testdata/02842_truncate_database/metadata.json

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
{
22
"explain_todo": {
3-
"stmt16": true,
4-
"stmt17": true,
5-
"stmt18": true,
6-
"stmt19": true,
7-
"stmt20": true,
83
"stmt32": true,
94
"stmt33": true,
105
"stmt43": true
Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1 @@
1-
{
2-
"explain_todo": {
3-
"stmt6": true
4-
}
5-
}
1+
{}

0 commit comments

Comments
 (0)