@@ -43,6 +43,9 @@ public class Update implements Statement {
4343 private List <Expression > expressions ;
4444 private FromItem fromItem ;
4545 private List <Join > joins ;
46+ private Select select ;
47+ private boolean useColumnsBrackets = true ;
48+ private boolean useSelect = false ;
4649
4750 @ Override
4851 public void accept (StatementVisitor statementVisitor ) {
@@ -109,16 +112,58 @@ public void setJoins(List<Join> joins) {
109112 this .joins = joins ;
110113 }
111114
115+ public Select getSelect () {
116+ return select ;
117+ }
118+
119+ public void setSelect (Select select ) {
120+ this .select = select ;
121+ }
122+
123+ public boolean isUseColumnsBrackets () {
124+ return useColumnsBrackets ;
125+ }
126+
127+ public void setUseColumnsBrackets (boolean useColumnsBrackets ) {
128+ this .useColumnsBrackets = useColumnsBrackets ;
129+ }
130+
131+ public boolean isUseSelect () {
132+ return useSelect ;
133+ }
134+
135+ public void setUseSelect (boolean useSelect ) {
136+ this .useSelect = useSelect ;
137+ }
138+
112139 @ Override
113140 public String toString () {
114141 StringBuilder b = new StringBuilder ("UPDATE " );
115142 b .append (PlainSelect .getStringList (getTables (), true , false )).append (" SET " );
116- for (int i = 0 ; i < getColumns ().size (); i ++) {
117- if (i != 0 ) {
118- b .append (", " );
143+
144+ if (!useSelect ) {
145+ for (int i = 0 ; i < getColumns ().size (); i ++) {
146+ if (i != 0 ) {
147+ b .append (", " );
148+ }
149+ b .append (columns .get (i )).append (" = " );
150+ b .append (expressions .get (i ));
151+ }
152+ } else {
153+ if (useColumnsBrackets ) {
154+ b .append ("(" );
155+ }
156+ for (int i = 0 ; i < getColumns ().size (); i ++) {
157+ if (i != 0 ) {
158+ b .append (", " );
159+ }
160+ b .append (columns .get (i ));
161+ }
162+ if (useColumnsBrackets ) {
163+ b .append (")" );
119164 }
120- b .append (columns . get ( i )). append ( " = " );
121- b .append (expressions . get ( i ) );
165+ b .append (" = " );
166+ b .append ("(" ). append ( select ). append ( ")" );
122167 }
123168
124169 if (fromItem != null ) {
0 commit comments