Skip to content

Commit 1991c16

Browse files
committed
fix(sqlite): introduce "update from..." to the parser
1 parent 6389cdc commit 1991c16

File tree

4 files changed

+1445
-1305
lines changed

4 files changed

+1445
-1305
lines changed

internal/engine/sqlite/convert.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1021,7 +1021,7 @@ func (c *cc) convertTablesOrSubquery(n []parser.ITable_or_subqueryContext) []ast
10211021
}
10221022

10231023
type Update_stmt interface {
1024-
Qualified_table_name() parser.IQualified_table_nameContext
1024+
Table_name() parser.ITable_nameContext
10251025
GetStart() antlr.Token
10261026
AllColumn_name() []parser.IColumn_nameContext
10271027
WHERE_() antlr.TerminalNode
@@ -1035,7 +1035,7 @@ func (c *cc) convertUpdate_stmtContext(n Update_stmt) ast.Node {
10351035
}
10361036

10371037
relations := &ast.List{}
1038-
tableName := identifier(n.Qualified_table_name().GetText())
1038+
tableName := n.Table_name().GetText()
10391039
rel := ast.RangeVar{
10401040
Relname: &tableName,
10411041
Location: n.GetStart().GetStart(),

internal/engine/sqlite/parser/SQLiteParser.g4

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -468,9 +468,9 @@ compound_operator:
468468
update_stmt:
469469
with_clause? UPDATE_ (
470470
OR_ (ROLLBACK_ | ABORT_ | REPLACE_ | FAIL_ | IGNORE_)
471-
)? qualified_table_name SET_ (column_name | column_name_list) ASSIGN expr (
471+
)? table_name (AS_ table_alias)? SET_ (column_name | column_name_list) ASSIGN expr (
472472
COMMA (column_name | column_name_list) ASSIGN expr
473-
)* (WHERE_ expr)? returning_clause?
473+
)* (FROM_ table_or_subquery)? (WHERE_ expr)? returning_clause?
474474
;
475475

476476
column_name_list:
@@ -480,7 +480,7 @@ column_name_list:
480480
update_stmt_limited:
481481
with_clause? UPDATE_ (
482482
OR_ (ROLLBACK_ | ABORT_ | REPLACE_ | FAIL_ | IGNORE_)
483-
)? qualified_table_name SET_ (column_name | column_name_list) ASSIGN expr (
483+
)? table_name (AS_ table_alias)? SET_ (column_name | column_name_list) ASSIGN expr (
484484
COMMA (column_name | column_name_list) ASSIGN expr
485485
)* (WHERE_ expr)? (order_by_stmt? limit_stmt)?
486486
;

internal/engine/sqlite/parser/SQLiteParser.interp

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)