Skip to content

Commit 5e38290

Browse files
committed
presto plan_node: fix a case where DataType and Ident can be mixed up
1 parent f88f814 commit 5e38290

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed

presto/plan_node/details.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ type (
2424
var (
2525
planNodeDetailLexer = lexer.MustStateful(lexer.Rules{
2626
"Root": {
27-
{"DataType", `(?i)BIGINT|INTEGER|SMALLINT|TINYINT|REAL|DECIMAL|VARCHAR|DATE`, nil},
28-
{"Cast", `(?i)CAST`, nil},
29-
{"As", `(?i)AS`, nil},
27+
{"DataType", `(?i)\b(BIGINT|INTEGER|SMALLINT|TINYINT|REAL|DECIMAL|VARCHAR|DATE|TIMESTAMP)\b`, nil},
28+
{"Cast", `(?i)\bCAST\b`, nil},
29+
{"As", `(?i)\bAS\b`, nil},
3030
{"Ident", `[a-zA-Z_$][\w.$]*`, nil},
3131
{"Int", `-?\d+`, nil},
3232
{"Assign", `:=`, nil},

presto/plan_node/details_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ func TestParseAssignment(t *testing.T) {
179179
`array_agg_51 := "presto.default.array_agg"((name_35)) ORDER BY OrderingScheme {orderBy='[Ordering {variable='name_35', sortOrder='ASC_NULLS_LAST'}]', orderings='{name_35=ASC_NULLS_LAST}'} (6:21)`,
180180
`branded_car_enrollment.target_id := car_id (22:5)`,
181181
`expr_5 := ((b) + (INTEGER'1')) - ((INTEGER'2') * (abs(c))) (10:6)`,
182+
`date_format_5 := date_format(CAST(CAST(period_hour_local_date AS date) AS timestamp), VARCHAR'%Y-%m-%d') (8:12)`,
182183
},
183184
[]plan_node.Assignment{
184185
{ // case 0
@@ -291,6 +292,29 @@ func TestParseAssignment(t *testing.T) {
291292
ColumnNumber: 6,
292293
},
293294
},
295+
{ // case 7
296+
Identifier: plan_node.IdentRef{Ident: "date_format_5"},
297+
AssignedValue: &plan_node.FunctionCall{
298+
FunctionName: "date_format",
299+
Parameters: []plan_node.Value{
300+
&plan_node.TypeCastedValue{
301+
OriginalValue: &plan_node.TypeCastedValue{
302+
OriginalValue: &plan_node.IdentRef{Ident: "period_hour_local_date"},
303+
CastedType: "date",
304+
},
305+
CastedType: "timestamp",
306+
},
307+
&plan_node.TypedValue{
308+
DataType: "VARCHAR",
309+
ValueLiteral: "%Y-%m-%d",
310+
},
311+
},
312+
},
313+
Loc: &plan_node.SourceLocation{
314+
RowNumber: 8,
315+
ColumnNumber: 12,
316+
},
317+
},
294318
})
295319
}
296320

0 commit comments

Comments
 (0)