Skip to content

Commit 71c32d9

Browse files
committed
fixes #389
1 parent 6776eb5 commit 71c32d9

File tree

4 files changed

+224
-202
lines changed

4 files changed

+224
-202
lines changed

src/main/java/net/sf/jsqlparser/statement/replace/Replace.java

Lines changed: 111 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -36,102 +36,115 @@
3636
*/
3737
public class Replace implements Statement {
3838

39-
private Table table;
40-
private List<Column> columns;
41-
private ItemsList itemsList;
42-
private List<Expression> expressions;
43-
private boolean useValues = true;
44-
45-
@Override
46-
public void accept(StatementVisitor statementVisitor) {
47-
statementVisitor.visit(this);
48-
}
49-
50-
public Table getTable() {
51-
return table;
52-
}
53-
54-
public void setTable(Table name) {
55-
table = name;
56-
}
57-
58-
/**
59-
* A list of {@link net.sf.jsqlparser.schema.Column}s either from a "REPLACE
60-
* mytab (col1, col2) [...]" or a "REPLACE mytab SET col1=exp1, col2=exp2".
61-
*
62-
* @return a list of {@link net.sf.jsqlparser.schema.Column}s
63-
*/
64-
public List<Column> getColumns() {
65-
return columns;
66-
}
67-
68-
/**
69-
* An {@link ItemsList} (either from a "REPLACE mytab VALUES (exp1,exp2)" or
70-
* a "REPLACE mytab SELECT * FROM mytab2") it is null in case of a "REPLACE
71-
* mytab SET col1=exp1, col2=exp2"
72-
*/
73-
public ItemsList getItemsList() {
74-
return itemsList;
75-
}
76-
77-
public void setColumns(List<Column> list) {
78-
columns = list;
79-
}
80-
81-
public void setItemsList(ItemsList list) {
82-
itemsList = list;
83-
}
84-
85-
/**
86-
* A list of {@link net.sf.jsqlparser.expression.Expression}s (from a
87-
* "REPLACE mytab SET col1=exp1, col2=exp2"). <br>
88-
* it is null in case of a "REPLACE mytab (col1, col2) [...]"
89-
*/
90-
public List<Expression> getExpressions() {
91-
return expressions;
92-
}
93-
94-
public void setExpressions(List<Expression> list) {
95-
expressions = list;
96-
}
97-
98-
public boolean isUseValues() {
99-
return useValues;
100-
}
101-
102-
public void setUseValues(boolean useValues) {
103-
this.useValues = useValues;
104-
}
105-
106-
@Override
107-
public String toString() {
108-
StringBuilder sql = new StringBuilder();
109-
sql.append("REPLACE ").append(table);
110-
111-
if (expressions != null && columns != null) {
112-
// the SET col1=exp1, col2=exp2 case
113-
sql.append(" SET ");
114-
// each element from expressions match up with a column from columns.
115-
for (int i = 0, s = columns.size(); i < s; i++) {
116-
sql.append(columns.get(i)).append("=").append(expressions.get(i));
117-
sql.append((i < s - 1) ? ", " : "");
118-
}
119-
} else if (columns != null) {
120-
// the REPLACE mytab (col1, col2) [...] case
121-
sql.append(" ").append(PlainSelect.getStringList(columns, true, true));
122-
}
123-
124-
if (itemsList != null) {
125-
// REPLACE mytab SELECT * FROM mytab2
126-
// or VALUES ('as', ?, 565)
127-
128-
if (useValues) {
129-
sql.append(" VALUES");
130-
}
131-
132-
sql.append(" ").append(itemsList);
133-
}
134-
135-
return sql.toString();
136-
}
39+
private Table table;
40+
private List<Column> columns;
41+
private ItemsList itemsList;
42+
private List<Expression> expressions;
43+
private boolean useValues = true;
44+
private boolean useIntoTables = false;
45+
46+
@Override
47+
public void accept(StatementVisitor statementVisitor) {
48+
statementVisitor.visit(this);
49+
}
50+
51+
public Table getTable() {
52+
return table;
53+
}
54+
55+
public void setTable(Table name) {
56+
table = name;
57+
}
58+
59+
public boolean isUseIntoTables() {
60+
return useIntoTables;
61+
}
62+
63+
public void setUseIntoTables(boolean useIntoTables) {
64+
this.useIntoTables = useIntoTables;
65+
}
66+
67+
/**
68+
* A list of {@link net.sf.jsqlparser.schema.Column}s either from a "REPLACE
69+
* mytab (col1, col2) [...]" or a "REPLACE mytab SET col1=exp1, col2=exp2".
70+
*
71+
* @return a list of {@link net.sf.jsqlparser.schema.Column}s
72+
*/
73+
public List<Column> getColumns() {
74+
return columns;
75+
}
76+
77+
/**
78+
* An {@link ItemsList} (either from a "REPLACE mytab VALUES (exp1,exp2)" or
79+
* a "REPLACE mytab SELECT * FROM mytab2") it is null in case of a "REPLACE
80+
* mytab SET col1=exp1, col2=exp2"
81+
*/
82+
public ItemsList getItemsList() {
83+
return itemsList;
84+
}
85+
86+
public void setColumns(List<Column> list) {
87+
columns = list;
88+
}
89+
90+
public void setItemsList(ItemsList list) {
91+
itemsList = list;
92+
}
93+
94+
/**
95+
* A list of {@link net.sf.jsqlparser.expression.Expression}s (from a
96+
* "REPLACE mytab SET col1=exp1, col2=exp2"). <br>
97+
* it is null in case of a "REPLACE mytab (col1, col2) [...]"
98+
*/
99+
public List<Expression> getExpressions() {
100+
return expressions;
101+
}
102+
103+
public void setExpressions(List<Expression> list) {
104+
expressions = list;
105+
}
106+
107+
public boolean isUseValues() {
108+
return useValues;
109+
}
110+
111+
public void setUseValues(boolean useValues) {
112+
this.useValues = useValues;
113+
}
114+
115+
@Override
116+
public String toString() {
117+
StringBuilder sql = new StringBuilder();
118+
sql.append("REPLACE ");
119+
if (isUseIntoTables()) {
120+
sql.append("INTO ");
121+
}
122+
sql.append(table);
123+
124+
if (expressions != null && columns != null) {
125+
// the SET col1=exp1, col2=exp2 case
126+
sql.append(" SET ");
127+
// each element from expressions match up with a column from columns.
128+
for (int i = 0, s = columns.size(); i < s; i++) {
129+
sql.append(columns.get(i)).append("=").append(expressions.get(i));
130+
sql.append((i < s - 1) ? ", " : "");
131+
}
132+
} else if (columns != null) {
133+
// the REPLACE mytab (col1, col2) [...] case
134+
sql.append(" ").append(PlainSelect.getStringList(columns, true, true));
135+
}
136+
137+
if (itemsList != null) {
138+
// REPLACE mytab SELECT * FROM mytab2
139+
// or VALUES ('as', ?, 565)
140+
141+
if (useValues) {
142+
sql.append(" VALUES");
143+
}
144+
145+
sql.append(" ").append(itemsList);
146+
}
147+
148+
return sql.toString();
149+
}
137150
}

0 commit comments

Comments
 (0)