Skip to content

Commit e32c502

Browse files
committed
fixes #676
1 parent e85f1a4 commit e32c502

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

src/main/java/net/sf/jsqlparser/statement/merge/MergeInsert.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ public void setValues(List<Expression> values) {
5353

5454
@Override
5555
public String toString() {
56-
return " WHEN NOT MATCHED THEN INSERT " + PlainSelect.getStringList(columns, true, true)
56+
return " WHEN NOT MATCHED THEN INSERT "
57+
+ (columns.isEmpty() ? "" : PlainSelect.getStringList(columns, true, true))
5758
+ " VALUES " + PlainSelect.getStringList(values, true, true);
5859
}
5960
}

src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -945,7 +945,7 @@ MergeInsert MergeInsertClause() : {
945945
}
946946
{
947947
<K_WHEN> <K_NOT> <K_MATCHED> <K_THEN>
948-
<K_INSERT> "(" col=Column() { columns.add(col); } ("," col=Column() { columns.add(col); } )* ")" <K_VALUES>
948+
<K_INSERT> ["(" col=Column() { columns.add(col); } ("," col=Column() { columns.add(col); } )* ")"] <K_VALUES>
949949
"(" exp=SimpleExpression() { expList.add(exp); } ("," exp=SimpleExpression() { expList.add(exp); } )* ")"
950950
{
951951
mi.setColumns(columns);

src/test/java/net/sf/jsqlparser/statement/merge/MergeTest.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121
import net.sf.jsqlparser.JSQLParserException;
2222
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
2323
import net.sf.jsqlparser.statement.Statement;
24-
import org.junit.Test;
2524
import static net.sf.jsqlparser.test.TestUtils.*;
2625
import static org.junit.Assert.fail;
26+
import org.junit.Test;
2727

2828
/**
2929
*
@@ -64,6 +64,21 @@ public void testMergeIssue232() throws JSQLParserException {
6464
assertSqlCanBeParsedAndDeparsed(sql, true);
6565
}
6666

67+
@Test
68+
public void testMergeIssue676() throws JSQLParserException {
69+
String sql = "merge INTO M_KC21 USING\n"
70+
+ "(SELECT AAA, BBB FROM I_KC21 WHERE I_KC21.aaa = 'li_kun'\n"
71+
+ ") TEMP ON (TEMP.AAA = M_KC21.AAA)\n"
72+
+ "WHEN MATCHED THEN\n"
73+
+ "UPDATE SET M_KC21.BBB = 6 WHERE enterprise_id IN (0, 1)\n"
74+
+ "WHEN NOT MATCHED THEN\n"
75+
+ "INSERT VALUES\n"
76+
+ "(TEMP.AAA,TEMP.BBB\n"
77+
+ ")";
78+
79+
assertSqlCanBeParsedAndDeparsed(sql, true);
80+
}
81+
6782
@Test
6883
public void testComplexOracleMergeIntoStatement() throws JSQLParserException {
6984
String sql = "MERGE INTO DestinationValue Dest USING\n"

0 commit comments

Comments
 (0)