Skip to content

Commit 585cbbd

Browse files
committed
fixes #430
1 parent 275fbbe commit 585cbbd

File tree

7 files changed

+167
-15
lines changed

7 files changed

+167
-15
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/*
2+
* #%L
3+
* JSQLParser library
4+
* %%
5+
* Copyright (C) 2004 - 2017 JSQLParser
6+
* %%
7+
* This program is free software: you can redistribute it and/or modify
8+
* it under the terms of the GNU Lesser General Public License as
9+
* published by the Free Software Foundation, either version 2.1 of the
10+
* License, or (at your option) any later version.
11+
*
12+
* This program is distributed in the hope that it will be useful,
13+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15+
* GNU General Lesser Public License for more details.
16+
*
17+
* You should have received a copy of the GNU General Lesser Public
18+
* License along with this program. If not, see
19+
* <http://www.gnu.org/licenses/lgpl-2.1.html>.
20+
* #L%
21+
*/
22+
package net.sf.jsqlparser.statement;
23+
24+
public class Commit implements Statement {
25+
@Override
26+
public void accept(StatementVisitor statementVisitor) {
27+
statementVisitor.visit(this);
28+
}
29+
30+
@Override
31+
public String toString() {
32+
return "COMMIT";
33+
}
34+
}

src/main/java/net/sf/jsqlparser/statement/StatementVisitor.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939
public interface StatementVisitor {
4040

41-
void visit(Select select);
41+
void visit(Commit commit);
4242

4343
void visit(Delete delete);
4444

@@ -69,4 +69,6 @@ public interface StatementVisitor {
6969
void visit(SetStatement set);
7070

7171
void visit(Merge merge);
72+
73+
void visit(Select select);
7274
}

src/main/java/net/sf/jsqlparser/statement/StatementVisitorAdapter.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@
3737
import net.sf.jsqlparser.statement.update.Update;
3838

3939
public class StatementVisitorAdapter implements StatementVisitor {
40+
@Override
41+
public void visit(Commit commit) {
42+
43+
}
4044

4145
@Override
4246
public void visit(Select select) {

src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java

Lines changed: 94 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,77 @@
2121
*/
2222
package net.sf.jsqlparser.util;
2323

24-
import net.sf.jsqlparser.expression.*;
25-
import net.sf.jsqlparser.expression.operators.arithmetic.*;
24+
import java.util.ArrayList;
25+
import java.util.List;
26+
27+
import net.sf.jsqlparser.expression.AllComparisonExpression;
28+
import net.sf.jsqlparser.expression.AnalyticExpression;
29+
import net.sf.jsqlparser.expression.AnyComparisonExpression;
30+
import net.sf.jsqlparser.expression.BinaryExpression;
31+
import net.sf.jsqlparser.expression.CaseExpression;
32+
import net.sf.jsqlparser.expression.CastExpression;
33+
import net.sf.jsqlparser.expression.DateTimeLiteralExpression;
34+
import net.sf.jsqlparser.expression.DateValue;
35+
import net.sf.jsqlparser.expression.DoubleValue;
36+
import net.sf.jsqlparser.expression.Expression;
37+
import net.sf.jsqlparser.expression.ExpressionVisitor;
38+
import net.sf.jsqlparser.expression.ExtractExpression;
39+
import net.sf.jsqlparser.expression.Function;
40+
import net.sf.jsqlparser.expression.HexValue;
41+
import net.sf.jsqlparser.expression.IntervalExpression;
42+
import net.sf.jsqlparser.expression.JdbcNamedParameter;
43+
import net.sf.jsqlparser.expression.JdbcParameter;
44+
import net.sf.jsqlparser.expression.JsonExpression;
45+
import net.sf.jsqlparser.expression.KeepExpression;
46+
import net.sf.jsqlparser.expression.LongValue;
47+
import net.sf.jsqlparser.expression.MySQLGroupConcat;
48+
import net.sf.jsqlparser.expression.NotExpression;
49+
import net.sf.jsqlparser.expression.NullValue;
50+
import net.sf.jsqlparser.expression.NumericBind;
51+
import net.sf.jsqlparser.expression.OracleHierarchicalExpression;
52+
import net.sf.jsqlparser.expression.OracleHint;
53+
import net.sf.jsqlparser.expression.Parenthesis;
54+
import net.sf.jsqlparser.expression.RowConstructor;
55+
import net.sf.jsqlparser.expression.SignedExpression;
56+
import net.sf.jsqlparser.expression.StringValue;
57+
import net.sf.jsqlparser.expression.TimeKeyExpression;
58+
import net.sf.jsqlparser.expression.TimeValue;
59+
import net.sf.jsqlparser.expression.TimestampValue;
60+
import net.sf.jsqlparser.expression.UserVariable;
61+
import net.sf.jsqlparser.expression.WhenClause;
62+
import net.sf.jsqlparser.expression.WithinGroupExpression;
63+
import net.sf.jsqlparser.expression.operators.arithmetic.Addition;
64+
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseAnd;
65+
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseOr;
66+
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseXor;
67+
import net.sf.jsqlparser.expression.operators.arithmetic.Concat;
68+
import net.sf.jsqlparser.expression.operators.arithmetic.Division;
69+
import net.sf.jsqlparser.expression.operators.arithmetic.Modulo;
70+
import net.sf.jsqlparser.expression.operators.arithmetic.Multiplication;
71+
import net.sf.jsqlparser.expression.operators.arithmetic.Subtraction;
2672
import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
2773
import net.sf.jsqlparser.expression.operators.conditional.OrExpression;
28-
import net.sf.jsqlparser.expression.operators.relational.*;
74+
import net.sf.jsqlparser.expression.operators.relational.Between;
75+
import net.sf.jsqlparser.expression.operators.relational.EqualsTo;
76+
import net.sf.jsqlparser.expression.operators.relational.ExistsExpression;
77+
import net.sf.jsqlparser.expression.operators.relational.ExpressionList;
78+
import net.sf.jsqlparser.expression.operators.relational.GreaterThan;
79+
import net.sf.jsqlparser.expression.operators.relational.GreaterThanEquals;
80+
import net.sf.jsqlparser.expression.operators.relational.InExpression;
81+
import net.sf.jsqlparser.expression.operators.relational.IsNullExpression;
82+
import net.sf.jsqlparser.expression.operators.relational.ItemsListVisitor;
83+
import net.sf.jsqlparser.expression.operators.relational.JsonOperator;
84+
import net.sf.jsqlparser.expression.operators.relational.LikeExpression;
85+
import net.sf.jsqlparser.expression.operators.relational.Matches;
86+
import net.sf.jsqlparser.expression.operators.relational.MinorThan;
87+
import net.sf.jsqlparser.expression.operators.relational.MinorThanEquals;
88+
import net.sf.jsqlparser.expression.operators.relational.MultiExpressionList;
89+
import net.sf.jsqlparser.expression.operators.relational.NotEqualsTo;
90+
import net.sf.jsqlparser.expression.operators.relational.RegExpMatchOperator;
91+
import net.sf.jsqlparser.expression.operators.relational.RegExpMySQLOperator;
2992
import net.sf.jsqlparser.schema.Column;
3093
import net.sf.jsqlparser.schema.Table;
31-
import net.sf.jsqlparser.statement.delete.Delete;
32-
import net.sf.jsqlparser.statement.insert.Insert;
33-
import net.sf.jsqlparser.statement.replace.Replace;
34-
import net.sf.jsqlparser.statement.select.*;
35-
import net.sf.jsqlparser.statement.update.Update;
36-
37-
import java.util.ArrayList;
38-
import java.util.List;
39-
94+
import net.sf.jsqlparser.statement.Commit;
4095
import net.sf.jsqlparser.statement.SetStatement;
4196
import net.sf.jsqlparser.statement.Statement;
4297
import net.sf.jsqlparser.statement.StatementVisitor;
@@ -46,11 +101,32 @@
46101
import net.sf.jsqlparser.statement.create.table.CreateTable;
47102
import net.sf.jsqlparser.statement.create.view.AlterView;
48103
import net.sf.jsqlparser.statement.create.view.CreateView;
104+
import net.sf.jsqlparser.statement.delete.Delete;
49105
import net.sf.jsqlparser.statement.drop.Drop;
50106
import net.sf.jsqlparser.statement.execute.Execute;
107+
import net.sf.jsqlparser.statement.insert.Insert;
51108
import net.sf.jsqlparser.statement.merge.Merge;
109+
import net.sf.jsqlparser.statement.replace.Replace;
110+
import net.sf.jsqlparser.statement.select.AllColumns;
111+
import net.sf.jsqlparser.statement.select.AllTableColumns;
112+
import net.sf.jsqlparser.statement.select.FromItemVisitor;
113+
import net.sf.jsqlparser.statement.select.Join;
114+
import net.sf.jsqlparser.statement.select.LateralSubSelect;
115+
import net.sf.jsqlparser.statement.select.PlainSelect;
116+
import net.sf.jsqlparser.statement.select.Select;
117+
import net.sf.jsqlparser.statement.select.SelectBody;
118+
import net.sf.jsqlparser.statement.select.SelectExpressionItem;
119+
import net.sf.jsqlparser.statement.select.SelectItem;
120+
import net.sf.jsqlparser.statement.select.SelectItemVisitor;
121+
import net.sf.jsqlparser.statement.select.SelectVisitor;
122+
import net.sf.jsqlparser.statement.select.SetOperationList;
123+
import net.sf.jsqlparser.statement.select.SubJoin;
124+
import net.sf.jsqlparser.statement.select.SubSelect;
125+
import net.sf.jsqlparser.statement.select.TableFunction;
126+
import net.sf.jsqlparser.statement.select.ValuesList;
127+
import net.sf.jsqlparser.statement.select.WithItem;
52128
import net.sf.jsqlparser.statement.truncate.Truncate;
53-
import net.sf.jsqlparser.expression.operators.relational.JsonOperator;
129+
import net.sf.jsqlparser.statement.update.Update;
54130

55131
/**
56132
* Find all used tables within an select statement.
@@ -639,4 +715,9 @@ public void visit(TimeKeyExpression timeKeyExpression) {
639715
public void visit(DateTimeLiteralExpression literal) {
640716

641717
}
718+
719+
@Override
720+
public void visit(Commit commit) {
721+
722+
}
642723
}

src/main/java/net/sf/jsqlparser/util/deparser/StatementDeParser.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@
2222
package net.sf.jsqlparser.util.deparser;
2323

2424
import java.util.Iterator;
25-
import net.sf.jsqlparser.statement.SetStatement;
2625

26+
import net.sf.jsqlparser.statement.Commit;
27+
import net.sf.jsqlparser.statement.SetStatement;
2728
import net.sf.jsqlparser.statement.StatementVisitor;
2829
import net.sf.jsqlparser.statement.Statements;
2930
import net.sf.jsqlparser.statement.alter.Alter;
@@ -189,4 +190,9 @@ public void visit(Merge merge) {
189190
//TODO implementation of a deparser
190191
buffer.append(merge.toString());
191192
}
193+
194+
@Override
195+
public void visit(Commit commit) {
196+
buffer.append(commit.toString());
197+
}
192198
}

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,8 @@ Statement SingleStatement() :
374374
stm = Execute()
375375
|
376376
stm = Set()
377+
|
378+
stm = Commit()
377379
)
378380
} catch (ParseException e) {
379381
if (errorRecovery) {
@@ -3316,3 +3318,14 @@ Wait Wait():
33163318
return wait;
33173319
}
33183320
}
3321+
3322+
Commit Commit():
3323+
{
3324+
Commit commit=new Commit();
3325+
}
3326+
{
3327+
<K_COMMIT>
3328+
{
3329+
return commit;
3330+
}
3331+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package net.sf.jsqlparser.test;
2+
3+
import static net.sf.jsqlparser.test.TestUtils.assertSqlCanBeParsedAndDeparsed;
4+
5+
import org.junit.Test;
6+
7+
public class CommitTest {
8+
@Test
9+
public void testCommit() throws Exception {
10+
assertSqlCanBeParsedAndDeparsed("COMMIT");
11+
}
12+
}

0 commit comments

Comments
 (0)