Skip to content

Commit 0b03c85

Browse files
committed
1 parent 1479149 commit 0b03c85

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,7 @@ Statement SingleStatement() :
376376
{
377377
try {
378378
(
379+
LOOKAHEAD(3)
379380
stm = Select()
380381
|
381382
stm = Update()
@@ -674,6 +675,7 @@ Insert Insert():
674675
boolean useAs = false;
675676
}
676677
{
678+
[ WithList() ]
677679
<K_INSERT>
678680
[(tk = <K_LOW_PRIORITY> | tk = <K_DELAYED> | tk = <K_HIGH_PRIORITY>)
679681
{if (tk!=null)

src/test/java/net/sf/jsqlparser/statement/insert/InsertTest.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package net.sf.jsqlparser.statement.insert;
22

33
import java.io.StringReader;
4-
54
import net.sf.jsqlparser.JSQLParserException;
65
import net.sf.jsqlparser.expression.DoubleValue;
76
import net.sf.jsqlparser.expression.JdbcParameter;
@@ -12,10 +11,8 @@
1211
import net.sf.jsqlparser.schema.Column;
1312
import net.sf.jsqlparser.schema.Table;
1413
import net.sf.jsqlparser.statement.select.PlainSelect;
15-
1614
import static net.sf.jsqlparser.test.TestUtils.assertSqlCanBeParsedAndDeparsed;
1715
import static org.junit.Assert.*;
18-
1916
import org.junit.Test;
2017

2118
public class InsertTest {
@@ -83,7 +80,7 @@ public void testInsertFromSelect() throws JSQLParserException {
8380
String statementToString = "INSERT INTO mytable (col1, col2, col3) SELECT * FROM mytable2";
8481
assertEquals(statementToString, "" + insert);
8582
}
86-
83+
8784
@Test
8885
public void testInsertFromSet() throws JSQLParserException {
8986
String statement = "INSERT INTO mytable SET col1 = 12, col2 = name1 * name2";
@@ -97,7 +94,7 @@ public void testInsertFromSet() throws JSQLParserException {
9794
assertEquals("name1 * name2", insert.getSetExpressionList().get(1).toString());
9895
assertEquals(statement, "" + insert);
9996
}
100-
97+
10198
@Test
10299
public void testInsertValuesWithDuplicateElimination() throws JSQLParserException {
103100
String statement = "INSERT INTO TEST (ID, COUNTER) VALUES (123, 0) "
@@ -121,7 +118,7 @@ public void testInsertValuesWithDuplicateElimination() throws JSQLParserExceptio
121118
assertTrue(insert.isUseDuplicate());
122119
assertEquals(statement, "" + insert);
123120
}
124-
121+
125122
@Test
126123
public void testInsertFromSetWithDuplicateElimination() throws JSQLParserException {
127124
String statement = "INSERT INTO mytable SET col1 = 122 "
@@ -238,7 +235,7 @@ public void testModifierPriority3() throws JSQLParserException {
238235
public void testIssue223() throws JSQLParserException {
239236
assertSqlCanBeParsedAndDeparsed("INSERT INTO user VALUES (2001, '\\'Clark\\'', 'Kent')");
240237
}
241-
238+
242239
@Test
243240
public void testKeywordPrecisionIssue363() throws JSQLParserException {
244241
assertSqlCanBeParsedAndDeparsed("INSERT INTO test (user_id, precision) VALUES (1, '111')");
@@ -248,31 +245,36 @@ public void testKeywordPrecisionIssue363() throws JSQLParserException {
248245
public void testWithDeparsingIssue406() throws JSQLParserException {
249246
assertSqlCanBeParsedAndDeparsed("insert into mytab3 (a,b,c) select a,b,c from mytab where exists(with t as (select * from mytab2) select * from t)", true);
250247
}
251-
248+
252249
@Test
253250
public void testInsertSetInDeparsing() throws JSQLParserException {
254251
assertSqlCanBeParsedAndDeparsed("INSERT INTO mytable SET col1 = 12, col2 = name1 * name2");
255252
}
256-
253+
257254
@Test
258255
public void testInsertValuesWithDuplicateEliminationInDeparsing() throws JSQLParserException {
259256
assertSqlCanBeParsedAndDeparsed("INSERT INTO TEST (ID, COUNTER) VALUES (123, 0) "
260257
+ "ON DUPLICATE KEY UPDATE COUNTER = COUNTER + 1");
261258
}
262-
259+
263260
@Test
264261
public void testInsertSetWithDuplicateEliminationInDeparsing() throws JSQLParserException {
265262
assertSqlCanBeParsedAndDeparsed("INSERT INTO mytable SET col1 = 122 "
266263
+ "ON DUPLICATE KEY UPDATE col2 = col2 + 1, col3 = 'saint'");
267264
}
268-
265+
269266
@Test
270267
public void testInsertTableWithAliasIssue526() throws JSQLParserException {
271268
assertSqlCanBeParsedAndDeparsed("INSERT INTO account t (name, addr, phone) SELECT * FROM user");
272269
}
273-
270+
274271
@Test
275272
public void testInsertKeyWordEnableIssue592() throws JSQLParserException {
276273
assertSqlCanBeParsedAndDeparsed("INSERT INTO T_USER (ID, EMAIL_VALIDATE, ENABLE, PASSWORD) VALUES (?, ?, ?, ?)");
277274
}
275+
276+
@Test
277+
public void testWithAtFront() throws JSQLParserException {
278+
assertSqlCanBeParsedAndDeparsed("WITH foo AS ( SELECT attr FROM bar ) INSERT INTO lalelu (attr) SELECT attr FROM foo");
279+
}
278280
}

0 commit comments

Comments
 (0)