@@ -1021,6 +1021,8 @@ func (c *cc) convertTablesOrSubquery(n []parser.ITable_or_subqueryContext) []ast
1021
1021
}
1022
1022
1023
1023
type Update_stmt interface {
1024
+ node
1025
+
1024
1026
Qualified_table_name () parser.IQualified_table_nameContext
1025
1027
GetStart () antlr.Token
1026
1028
AllColumn_name () []parser.IColumn_nameContext
@@ -1034,50 +1036,66 @@ func (c *cc) convertUpdate_stmtContext(n Update_stmt) ast.Node {
1034
1036
return nil
1035
1037
}
1036
1038
1037
- relations := & ast.List {}
1038
- tableName := n .Qualified_table_name ().GetText ()
1039
- rel := ast.RangeVar {
1040
- Relname : & tableName ,
1041
- Location : n .GetStart ().GetStart (),
1042
- }
1043
- relations .Items = append (relations .Items , & rel )
1039
+ if qualifiedName , ok := n .Qualified_table_name ().(* parser.Qualified_table_nameContext ); ok {
1040
+ tableName := identifier (qualifiedName .Table_name ().GetText ())
1041
+ rel := ast.RangeVar {
1042
+ Relname : & tableName ,
1043
+ Location : n .GetStart ().GetStart (),
1044
+ }
1044
1045
1045
- list := & ast.List {}
1046
- for i , col := range n .AllColumn_name () {
1047
- colName := identifier (col .GetText ())
1048
- target := & ast.ResTarget {
1049
- Name : & colName ,
1050
- Val : c .convert (n .Expr (i )),
1046
+ if qualifiedName .Schema_name () != nil {
1047
+ schemaName := qualifiedName .Schema_name ().GetText ()
1048
+ rel .Schemaname = & schemaName
1051
1049
}
1052
- list .Items = append (list .Items , target )
1053
- }
1054
1050
1055
- var where ast. Node = nil
1056
- if n . WHERE_ () != nil {
1057
- where = c . convert ( n . Expr ( len ( n . AllExpr ()) - 1 ))
1058
- }
1051
+ if qualifiedName . Alias () ! = nil {
1052
+ alias := qualifiedName . Alias (). GetText ()
1053
+ rel . Alias = & ast. Alias { Aliasname : & alias }
1054
+ }
1059
1055
1060
- stmt := & ast.UpdateStmt {
1061
- Relations : relations ,
1062
- TargetList : list ,
1063
- WhereClause : where ,
1064
- FromClause : & ast.List {},
1065
- WithClause : nil , // TODO: support with clause
1066
- }
1067
- if n , ok := n .(interface {
1068
- Returning_clause () parser.IReturning_clauseContext
1069
- }); ok {
1070
- stmt .ReturningList = c .convertReturning_caluseContext (n .Returning_clause ())
1071
- } else {
1072
- stmt .ReturningList = c .convertReturning_caluseContext (nil )
1073
- }
1074
- if n , ok := n .(interface {
1075
- Limit_stmt () parser.ILimit_stmtContext
1076
- }); ok {
1077
- limitCount , _ := c .convertLimit_stmtContext (n .Limit_stmt ())
1078
- stmt .LimitCount = limitCount
1056
+ relations := & ast.List {}
1057
+
1058
+ relations .Items = append (relations .Items , & rel )
1059
+
1060
+ list := & ast.List {}
1061
+ for i , col := range n .AllColumn_name () {
1062
+ colName := identifier (col .GetText ())
1063
+ target := & ast.ResTarget {
1064
+ Name : & colName ,
1065
+ Val : c .convert (n .Expr (i )),
1066
+ }
1067
+ list .Items = append (list .Items , target )
1068
+ }
1069
+
1070
+ var where ast.Node = nil
1071
+ if n .WHERE_ () != nil {
1072
+ where = c .convert (n .Expr (len (n .AllExpr ()) - 1 ))
1073
+ }
1074
+
1075
+ stmt := & ast.UpdateStmt {
1076
+ Relations : relations ,
1077
+ TargetList : list ,
1078
+ WhereClause : where ,
1079
+ FromClause : & ast.List {},
1080
+ WithClause : nil , // TODO: support with clause
1081
+ }
1082
+ if n , ok := n .(interface {
1083
+ Returning_clause () parser.IReturning_clauseContext
1084
+ }); ok {
1085
+ stmt .ReturningList = c .convertReturning_caluseContext (n .Returning_clause ())
1086
+ } else {
1087
+ stmt .ReturningList = c .convertReturning_caluseContext (nil )
1088
+ }
1089
+ if n , ok := n .(interface {
1090
+ Limit_stmt () parser.ILimit_stmtContext
1091
+ }); ok {
1092
+ limitCount , _ := c .convertLimit_stmtContext (n .Limit_stmt ())
1093
+ stmt .LimitCount = limitCount
1094
+ }
1095
+ return stmt
1079
1096
}
1080
- return stmt
1097
+
1098
+ return todo ("convertUpdate_stmtContext" , n )
1081
1099
}
1082
1100
1083
1101
func (c * cc ) convertBetweenExpr (n * parser.Expr_betweenContext ) ast.Node {
0 commit comments