Skip to content

Commit 61b3867

Browse files
authored
Fix should allow the table alias without the AS keyword (#71)
1 parent 64841d1 commit 61b3867

19 files changed

+228
-44
lines changed

parser/parser_column.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,13 @@ func (p *Parser) parseExpr(pos Pos) (Expr, error) {
1919
}
2020
switch {
2121
case p.matchKeyword(KeywordAs): // syntax: columnExpr (alias | AS identifier)
22-
aliasPos := p.Pos()
2322
_ = p.lexer.consumeToken()
2423
alias, err := p.parseIdent()
2524
if err != nil {
2625
return nil, err
2726
}
2827
return &AliasExpr{
29-
AliasPos: aliasPos,
28+
AliasPos: alias.Pos(),
3029
Expr: orExpr,
3130
Alias: alias,
3231
}, nil

parser/parser_query.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,18 @@ func (p *Parser) parseTableExpr(pos Pos) (*TableExpr, error) {
320320
}
321321
expr = &AliasExpr{
322322
Expr: expr,
323-
AliasPos: asToken.Pos,
323+
AliasPos: alias.Pos(),
324+
Alias: alias,
325+
}
326+
tableEnd = expr.End()
327+
} else if p.matchTokenKind(TokenIdent) && p.lastTokenKind() != TokenKeyword {
328+
alias, err := p.parseIdent()
329+
if err != nil {
330+
return nil, err
331+
}
332+
expr = &AliasExpr{
333+
Expr: expr,
334+
AliasPos: alias.Pos(),
324335
Alias: alias,
325336
}
326337
tableEnd = expr.End()

parser/testdata/ddl/output/bug_001.sql.golden.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@
100100
"ColumnArgList": null
101101
}
102102
},
103-
"AliasPos": 185,
103+
"AliasPos": 188,
104104
"Alias": {
105105
"Name": "x",
106106
"QuoteType": 1,
@@ -140,7 +140,7 @@
140140
"ColumnArgList": null
141141
}
142142
},
143-
"AliasPos": 236,
143+
"AliasPos": 239,
144144
"Alias": {
145145
"Name": "y",
146146
"QuoteType": 1,
@@ -180,7 +180,7 @@
180180
"ColumnArgList": null
181181
}
182182
},
183-
"AliasPos": 287,
183+
"AliasPos": 290,
184184
"Alias": {
185185
"Name": "z",
186186
"QuoteType": 1,
@@ -220,7 +220,7 @@
220220
"ColumnArgList": null
221221
}
222222
},
223-
"AliasPos": 338,
223+
"AliasPos": 341,
224224
"Alias": {
225225
"Name": "a",
226226
"QuoteType": 1,
@@ -260,7 +260,7 @@
260260
"ColumnArgList": null
261261
}
262262
},
263-
"AliasPos": 389,
263+
"AliasPos": 392,
264264
"Alias": {
265265
"Name": "b",
266266
"QuoteType": 1,
@@ -300,7 +300,7 @@
300300
"ColumnArgList": null
301301
}
302302
},
303-
"AliasPos": 440,
303+
"AliasPos": 443,
304304
"Alias": {
305305
"Name": "c",
306306
"QuoteType": 1,
@@ -340,7 +340,7 @@
340340
"ColumnArgList": null
341341
}
342342
},
343-
"AliasPos": 491,
343+
"AliasPos": 494,
344344
"Alias": {
345345
"Name": "d",
346346
"QuoteType": 1,
@@ -380,7 +380,7 @@
380380
"ColumnArgList": null
381381
}
382382
},
383-
"AliasPos": 539,
383+
"AliasPos": 542,
384384
"Alias": {
385385
"Name": "e",
386386
"QuoteType": 1,
@@ -420,7 +420,7 @@
420420
"ColumnArgList": null
421421
}
422422
},
423-
"AliasPos": 587,
423+
"AliasPos": 590,
424424
"Alias": {
425425
"Name": "f",
426426
"QuoteType": 1,

parser/testdata/ddl/output/create_materialized_view_basic.sql.golden.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@
285285
"ColumnArgList": null
286286
}
287287
},
288-
"AliasPos": 281,
288+
"AliasPos": 284,
289289
"Alias": {
290290
"Name": "f3",
291291
"QuoteType": 1,
@@ -325,7 +325,7 @@
325325
"ColumnArgList": null
326326
}
327327
},
328-
"AliasPos": 342,
328+
"AliasPos": 345,
329329
"Alias": {
330330
"Name": "f4",
331331
"QuoteType": 1,
@@ -365,7 +365,7 @@
365365
"ColumnArgList": null
366366
}
367367
},
368-
"AliasPos": 401,
368+
"AliasPos": 404,
369369
"Alias": {
370370
"Name": "f5",
371371
"QuoteType": 1,
@@ -405,7 +405,7 @@
405405
"ColumnArgList": null
406406
}
407407
},
408-
"AliasPos": 451,
408+
"AliasPos": 454,
409409
"Alias": {
410410
"Name": "f6",
411411
"QuoteType": 1,

parser/testdata/ddl/output/create_materialized_view_with_empty_table_schema.sql.golden.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@
185185
"ColumnArgList": null
186186
}
187187
},
188-
"AliasPos": 236,
188+
"AliasPos": 239,
189189
"Alias": {
190190
"Name": "f333",
191191
"QuoteType": 1,
@@ -317,7 +317,7 @@
317317
"Frame": null
318318
}
319319
},
320-
"AliasPos": 349,
320+
"AliasPos": 352,
321321
"Alias": {
322322
"Name": "rn",
323323
"QuoteType": 1,
@@ -431,7 +431,7 @@
431431
"UnionDistinct": null,
432432
"Except": null
433433
},
434-
"AliasPos": 441,
434+
"AliasPos": 444,
435435
"Alias": {
436436
"Name": "tmp",
437437
"QuoteType": 1,
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
-- Origin SQL:
2+
SELECT t1.Timestamp FROM my_table t1 INNER JOIN my_other_table t2 ON t1.a=t2.b
3+
4+
-- Format SQL:
5+
6+
SELECT
7+
t1.Timestamp
8+
FROM
9+
my_table AS t1
10+
INNER JOIN my_other_table AS t2 ON t1.a = t2.b;

parser/testdata/query/output/select_cast.sql.golden.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
}
3030
}
3131
},
32-
"AliasPos": 26,
32+
"AliasPos": 29,
3333
"Alias": {
3434
"Name": "value",
3535
"QuoteType": 1,
@@ -82,7 +82,7 @@
8282
"Literal": "Float64"
8383
}
8484
},
85-
"AliasPos": 62,
85+
"AliasPos": 65,
8686
"Alias": {
8787
"Name": "value",
8888
"QuoteType": 1,
@@ -134,7 +134,7 @@
134134
"Literal": "1",
135135
"Base": 10
136136
},
137-
"AliasPos": 82,
137+
"AliasPos": 85,
138138
"Alias": {
139139
"Name": "Float64",
140140
"QuoteType": 1,
@@ -146,7 +146,7 @@
146146
},
147147
"ColumnArgList": null
148148
},
149-
"AliasPos": 94,
149+
"AliasPos": 97,
150150
"Alias": {
151151
"Name": "value",
152152
"QuoteType": 1,
@@ -200,7 +200,7 @@
200200
"HasGlobal": false,
201201
"HasNot": false
202202
},
203-
"AliasPos": 122,
203+
"AliasPos": 125,
204204
"Alias": {
205205
"Name": "value",
206206
"QuoteType": 1,

parser/testdata/query/output/select_column_alias_string.sql.golden.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"LiteralEnd": 11,
1616
"Literal": "abc"
1717
},
18-
"AliasPos": 13,
18+
"AliasPos": 17,
1919
"Alias": {
2020
"Name": "value2",
2121
"QuoteType": 2,

parser/testdata/query/output/select_simple.sql.golden.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
"ColumnArgList": null
4949
}
5050
},
51-
"AliasPos": 32,
51+
"AliasPos": 35,
5252
"Alias": {
5353
"Name": "f3",
5454
"QuoteType": 1,
@@ -116,7 +116,7 @@
116116
"Frame": null
117117
}
118118
},
119-
"AliasPos": 91,
119+
"AliasPos": 94,
120120
"Alias": {
121121
"Name": "rn",
122122
"QuoteType": 1,

parser/testdata/query/output/select_simple_with_bracket.sql.golden.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@
9999
"ColumnArgList": null
100100
}
101101
},
102-
"AliasPos": 43,
102+
"AliasPos": 46,
103103
"Alias": {
104104
"Name": "res",
105105
"QuoteType": 1,
@@ -133,7 +133,7 @@
133133
}
134134
}
135135
},
136-
"AliasPos": 61,
136+
"AliasPos": 64,
137137
"Alias": {
138138
"Name": "f2",
139139
"QuoteType": 1,

0 commit comments

Comments
 (0)