Skip to content

Commit 1c2ac7a

Browse files
committed
1 parent 9ecbb28 commit 1c2ac7a

File tree

4 files changed

+28
-9
lines changed

4 files changed

+28
-9
lines changed

src/main/java/net/sf/jsqlparser/expression/operators/relational/ExpressionList.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public ExpressionList(List<Expression> expressions) {
3434
}
3535

3636
public ExpressionList(Expression... expressions) {
37-
this.expressions = Arrays.asList(expressions);
37+
this.expressions = new ArrayList<>(Arrays.asList(expressions));
3838
}
3939

4040
public List<Expression> getExpressions() {
@@ -55,7 +55,7 @@ public ExpressionList withExpressions(List<Expression> expressions) {
5555
public void setExpressions(List<Expression> expressions) {
5656
this.expressions = expressions;
5757
}
58-
58+
5959
public ExpressionList withBrackets(boolean brackets) {
6060
this.withBrackets = brackets;
6161
return this;

src/main/java/net/sf/jsqlparser/statement/values/ValuesStatement.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,21 @@ public ValuesStatement withExpressions(ItemsList expressions) {
6262
return this;
6363
}
6464

65-
public ValuesStatement addExpressions(Expression... expressions) {
66-
return this.withExpressions(new ExpressionList(expressions));
65+
public ValuesStatement addExpressions(Expression... addExpressions) {
66+
if (expressions != null && expressions instanceof ExpressionList) {
67+
((ExpressionList) expressions).addExpressions(addExpressions);
68+
return this;
69+
} else {
70+
return this.withExpressions(new ExpressionList(addExpressions));
71+
}
6772
}
6873

69-
public ValuesStatement addExpressions(Collection<? extends Expression> expressions) {
70-
return this.withExpressions(new ExpressionList(new ArrayList<>(expressions)));
74+
public ValuesStatement addExpressions(Collection<? extends Expression> addExpressions) {
75+
if (expressions != null && expressions instanceof ExpressionList) {
76+
((ExpressionList) expressions).addExpressions(addExpressions);
77+
return this;
78+
} else {
79+
return this.withExpressions(new ExpressionList(new ArrayList<>(addExpressions)));
80+
}
7181
}
7282
}

src/test/java/net/sf/jsqlparser/statement/select/SpecialOracleTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ public void testAllSqlsParseDeparse() throws IOException {
244244

245245
LOG.
246246
log(Level.INFO, "tested {0} files. got {1} correct parse results", new Object[]{count, success});
247-
assertTrue(success >= 166);
247+
assertTrue(success >= 176);
248248
}
249249

250250
@Test

src/test/java/net/sf/jsqlparser/statement/values/ValuesTest.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111

1212
import net.sf.jsqlparser.JSQLParserException;
1313
import net.sf.jsqlparser.expression.LongValue;
14+
import net.sf.jsqlparser.expression.RowConstructor;
1415
import net.sf.jsqlparser.expression.StringValue;
16+
import net.sf.jsqlparser.expression.operators.relational.ExpressionList;
1517
import net.sf.jsqlparser.statement.Statement;
1618
import net.sf.jsqlparser.statement.select.Select;
1719
import net.sf.jsqlparser.statement.select.SetOperationList;
@@ -26,9 +28,16 @@ public class ValuesTest {
2628
public void testDuplicateKey() throws JSQLParserException {
2729
String statement = "VALUES (1, 2, 'test')";
2830
Statement parsed = assertSqlCanBeParsedAndDeparsed(statement);
31+
32+
ExpressionList list = new ExpressionList(new LongValue(1))
33+
.addExpressions(asList(new LongValue(2), new StringValue("test"))).withBrackets(true);
34+
2935
Select created = new Select().withSelectBody(new SetOperationList()
30-
.addBrackets(Boolean.FALSE).addSelects(new ValuesStatement().addExpressions(new LongValue(1))
31-
.addExpressions(asList(new LongValue(2), new StringValue("test")))));
36+
.addBrackets(Boolean.FALSE).addSelects(
37+
new ValuesStatement().withExpressions(
38+
new ExpressionList(
39+
new RowConstructor().withExprList(list))
40+
.withBrackets(false))));
3241

3342
assertDeparse(created, statement);
3443
assertEqualsObjectTree(parsed, created);

0 commit comments

Comments
 (0)