@@ -43,7 +43,7 @@ use serde::{Deserialize, Serialize};
4343use sqlparser_derive:: { Visit , VisitMut } ;
4444
4545use crate :: {
46- display_utils:: { indented_list , SpaceOrNewline } ,
46+ display_utils:: SpaceOrNewline ,
4747 tokenizer:: { Span , Token } ,
4848} ;
4949use crate :: {
@@ -72,7 +72,7 @@ pub use self::ddl::{
7272 TableConstraint , TagsColumnOption , Truncate , UserDefinedTypeCompositeAttributeDef ,
7373 UserDefinedTypeRepresentation , ViewColumnDef ,
7474} ;
75- pub use self :: dml:: { Delete , Insert } ;
75+ pub use self :: dml:: { Delete , Insert , Update } ;
7676pub use self :: operator:: { BinaryOperator , UnaryOperator } ;
7777pub use self :: query:: {
7878 AfterMatchSkip , ConnectBy , Cte , CteAsMaterialized , Distinct , EmptyMatchesMode ,
@@ -3241,22 +3241,7 @@ pub enum Statement {
32413241 /// ```sql
32423242 /// UPDATE
32433243 /// ```
3244- Update {
3245- /// TABLE
3246- table : TableWithJoins ,
3247- /// Column assignments
3248- assignments : Vec < Assignment > ,
3249- /// Table which provide value to be set
3250- from : Option < UpdateTableFromKind > ,
3251- /// WHERE
3252- selection : Option < Expr > ,
3253- /// RETURNING
3254- returning : Option < Vec < SelectItem > > ,
3255- /// SQLite-specific conflict resolution clause
3256- or : Option < SqliteOnConflict > ,
3257- /// LIMIT
3258- limit : Option < Expr > ,
3259- } ,
3244+ Update ( Update ) ,
32603245 /// ```sql
32613246 /// DELETE
32623247 /// ```
@@ -4676,53 +4661,7 @@ impl fmt::Display for Statement {
46764661 }
46774662 Ok ( ( ) )
46784663 }
4679- Statement :: Update {
4680- table,
4681- assignments,
4682- from,
4683- selection,
4684- returning,
4685- or,
4686- limit,
4687- } => {
4688- f. write_str ( "UPDATE " ) ?;
4689- if let Some ( or) = or {
4690- or. fmt ( f) ?;
4691- f. write_str ( " " ) ?;
4692- }
4693- table. fmt ( f) ?;
4694- if let Some ( UpdateTableFromKind :: BeforeSet ( from) ) = from {
4695- SpaceOrNewline . fmt ( f) ?;
4696- f. write_str ( "FROM" ) ?;
4697- indented_list ( f, from) ?;
4698- }
4699- if !assignments. is_empty ( ) {
4700- SpaceOrNewline . fmt ( f) ?;
4701- f. write_str ( "SET" ) ?;
4702- indented_list ( f, assignments) ?;
4703- }
4704- if let Some ( UpdateTableFromKind :: AfterSet ( from) ) = from {
4705- SpaceOrNewline . fmt ( f) ?;
4706- f. write_str ( "FROM" ) ?;
4707- indented_list ( f, from) ?;
4708- }
4709- if let Some ( selection) = selection {
4710- SpaceOrNewline . fmt ( f) ?;
4711- f. write_str ( "WHERE" ) ?;
4712- SpaceOrNewline . fmt ( f) ?;
4713- Indent ( selection) . fmt ( f) ?;
4714- }
4715- if let Some ( returning) = returning {
4716- SpaceOrNewline . fmt ( f) ?;
4717- f. write_str ( "RETURNING" ) ?;
4718- indented_list ( f, returning) ?;
4719- }
4720- if let Some ( limit) = limit {
4721- SpaceOrNewline . fmt ( f) ?;
4722- write ! ( f, "LIMIT {limit}" ) ?;
4723- }
4724- Ok ( ( ) )
4725- }
4664+ Statement :: Update ( update) => update. fmt ( f) ,
47264665 Statement :: Delete ( delete) => delete. fmt ( f) ,
47274666 Statement :: Open ( open) => open. fmt ( f) ,
47284667 Statement :: Close { cursor } => {
@@ -10891,6 +10830,12 @@ impl From<Insert> for Statement {
1089110830 }
1089210831}
1089310832
10833+ impl From < Update > for Statement {
10834+ fn from ( u : Update ) -> Self {
10835+ Self :: Update ( u)
10836+ }
10837+ }
10838+
1089410839impl From < CaseStatement > for Statement {
1089510840 fn from ( c : CaseStatement ) -> Self {
1089610841 Self :: Case ( c)
0 commit comments