@@ -43,6 +43,9 @@ public class Update implements Statement {
43
43
private List <Expression > expressions ;
44
44
private FromItem fromItem ;
45
45
private List <Join > joins ;
46
+ private Select select ;
47
+ private boolean useColumnsBrackets = true ;
48
+ private boolean useSelect = false ;
46
49
47
50
@ Override
48
51
public void accept (StatementVisitor statementVisitor ) {
@@ -109,16 +112,58 @@ public void setJoins(List<Join> joins) {
109
112
this .joins = joins ;
110
113
}
111
114
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
+
112
139
@ Override
113
140
public String toString () {
114
141
StringBuilder b = new StringBuilder ("UPDATE " );
115
142
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 (")" );
119
164
}
120
- b .append (columns . get ( i )). append ( " = " );
121
- b .append (expressions . get ( i ) );
165
+ b .append (" = " );
166
+ b .append ("(" ). append ( select ). append ( ")" );
122
167
}
123
168
124
169
if (fromItem != null ) {
0 commit comments