Skip to content

Commit 29ed2cb

Browse files
committed
Merge master into user-variable-assignment
2 parents 51e8428 + 869a7b2 commit 29ed2cb

40 files changed

+605
-431
lines changed

README.md

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ Please provide feedback on:
2222
* API changes: extend visitor with return values (https://github.com/JSQLParser/JSqlParser/issues/901)
2323

2424
## News
25+
* Released version **3.2** of JSqlParser
2526
* Released version **3.1** of JSqlParser
2627
* Released version **3.0** of JSqlParser
2728
* The array parsing is the default behaviour. Square bracket quotation has to be enabled using
@@ -64,32 +65,9 @@ To help JSqlParser's development you are encouraged to provide
6465

6566
Also I would like to know about needed examples or documentation stuff.
6667

67-
## Extensions in the latest SNAPSHOT version 3.2
68-
69-
* added options to **EXPLAIN** statement
70-
* preserved input of **&&** and avoid translation to **AND**
71-
* added multi values in **IN** expression
72-
* added **COMMENT** support for **ALTER TABLE** statement
73-
* added some **FOREIGN KEY** definition improvments
74-
* allow **VALIDATE** as column name
75-
* first support for **CREATE SCHEMA** and **DROP SCHEMA**
76-
* allow **ON** as a value in a set statement (`SET myvalue = ON`)
77-
* support for **ALTER TABLE ONLY mytable ...**
78-
* allow foreign key definition in alter statements without referenced columns specification
79-
* allow datatype **binary** for column definitions
80-
* support for **ALTER TABLE COLUMN DROP NOT NULL**
81-
* allow **order** as column name
82-
* support for table function in **IN** expression
83-
* allow complex expressions within all of a **case when** statement
84-
* support for parameters in **create index** statement
85-
* support for integer parameters for **->>** and **->** JSON expressions
86-
* support for more keywords in following parts of multipart object names (e.g. **mytab.select, mytab.create, ...**)
87-
* support for **OUTER APPLY**
88-
* support for **WITH(NOLOCK)**
89-
* support for **VIEW** as object name
90-
* functions hold now multipart names
91-
* support for **DISABLE** as object name
92-
* API change in `ColumnDefinition.setColumnSpecStrings` to `ColumnDefinition.setColumnSpecs` to better allow the merge between `AlterExpression.ColumnDataType` and `ColumnDefinition`
68+
## Extensions in the latest SNAPSHOT version 3.3
69+
70+
* allowed Jdbc named parameters within interval expressions
9371

9472
## Extensions of JSqlParser releases
9573

nb-configuration.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
That way multiple projects can share the same settings (useful for formatting rules for example).
1414
Any value defined here will override the pom.xml file value but is only applicable to the current project.
1515
-->
16-
<netbeans.compile.on.save>all</netbeans.compile.on.save>
16+
<netbeans.compile.on.save>none</netbeans.compile.on.save>
1717
<com-junichi11-netbeans-changelf.enable>false</com-junichi11-netbeans-changelf.enable>
1818
<com-junichi11-netbeans-changelf.use-project>true</com-junichi11-netbeans-changelf.use-project>
1919
<com-junichi11-netbeans-changelf.lf-kind>LF</com-junichi11-netbeans-changelf.lf-kind>

pom.xml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<modelVersion>4.0.0</modelVersion>
33
<groupId>com.github.jsqlparser</groupId>
44
<artifactId>jsqlparser</artifactId>
5-
<version>3.2-SNAPSHOT</version>
5+
<version>3.3-SNAPSHOT</version>
66
<name>JSQLParser library</name>
77
<inceptionYear>2004</inceptionYear>
88
<organization>
@@ -46,7 +46,7 @@
4646
<dependency>
4747
<groupId>org.assertj</groupId>
4848
<artifactId>assertj-core</artifactId>
49-
<version>3.11.1</version>
49+
<version>3.16.1</version>
5050
<scope>test</scope>
5151
</dependency>
5252
</dependencies>
@@ -246,6 +246,9 @@
246246
<groupId>org.apache.maven.plugins</groupId>
247247
<artifactId>maven-surefire-plugin</artifactId>
248248
<version>3.0.0-M4</version>
249+
<configuration>
250+
<trimStackTrace>false</trimStackTrace>
251+
</configuration>
249252
</plugin>
250253
</plugins>
251254
</build>

src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,10 @@ public void visit(InExpression expr) {
172172
}
173173
if (expr.getRightExpression() != null) {
174174
expr.getRightExpression().accept(this);
175-
} else {
175+
} else if (expr.getRightItemsList() != null) {
176176
expr.getRightItemsList().accept(this);
177+
} else {
178+
expr.getMultiExpressionList().accept(this);
177179
}
178180
}
179181

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import net.sf.jsqlparser.statement.merge.Merge;
2727
import net.sf.jsqlparser.statement.replace.Replace;
2828
import net.sf.jsqlparser.statement.select.Select;
29+
import net.sf.jsqlparser.statement.show.ShowTablesStatement;
2930
import net.sf.jsqlparser.statement.truncate.Truncate;
3031
import net.sf.jsqlparser.statement.update.Update;
3132
import net.sf.jsqlparser.statement.upsert.Upsert;
@@ -69,6 +70,8 @@ public interface StatementVisitor {
6970

7071
void visit(ShowColumnsStatement set);
7172

73+
void visit(ShowTablesStatement showTables);
74+
7275
void visit(Merge merge);
7376

7477
void visit(Select select);

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import net.sf.jsqlparser.statement.merge.Merge;
2727
import net.sf.jsqlparser.statement.replace.Replace;
2828
import net.sf.jsqlparser.statement.select.Select;
29+
import net.sf.jsqlparser.statement.show.ShowTablesStatement;
2930
import net.sf.jsqlparser.statement.truncate.Truncate;
3031
import net.sf.jsqlparser.statement.update.Update;
3132
import net.sf.jsqlparser.statement.upsert.Upsert;
@@ -119,10 +120,6 @@ public void visit(SetStatement set) {
119120

120121
}
121122

122-
@Override
123-
public void visit(ShowColumnsStatement set) {
124-
}
125-
126123
@Override
127124
public void visit(Merge merge) {
128125

@@ -160,6 +157,14 @@ public void visit(ExplainStatement aThis) {
160157
public void visit(ShowStatement aThis) {
161158
}
162159

160+
@Override
161+
public void visit(ShowColumnsStatement set) {
162+
}
163+
164+
@Override
165+
public void visit(ShowTablesStatement showTables) {
166+
}
167+
163168
@Override
164169
public void visit(DeclareStatement aThis) {
165170
}
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
/*-
2+
* #%L
3+
* JSQLParser library
4+
* %%
5+
* Copyright (C) 2004 - 2020 JSQLParser
6+
* %%
7+
* Dual licensed under GNU LGPL 2.1 or Apache License 2.0
8+
* #L%
9+
*/
10+
package net.sf.jsqlparser.statement.show;
11+
12+
import net.sf.jsqlparser.expression.Expression;
13+
import net.sf.jsqlparser.statement.Statement;
14+
import net.sf.jsqlparser.statement.StatementVisitor;
15+
16+
import java.util.EnumSet;
17+
18+
/**
19+
* A {@code SHOW TABLES} statement
20+
* @see <a href="https://dev.mysql.com/doc/refman/8.0/en/show-tables.html">MySQL show tables</a>
21+
*/
22+
public class ShowTablesStatement implements Statement {
23+
24+
private EnumSet<Modifiers> modifiers;
25+
private SelectionMode selectionMode;
26+
private String dbName;
27+
private Expression likeExpression;
28+
private Expression whereCondition;
29+
30+
public EnumSet<Modifiers> getModifiers() {
31+
return modifiers;
32+
}
33+
34+
public void setModifiers(EnumSet<Modifiers> modifiers) {
35+
this.modifiers = modifiers;
36+
}
37+
38+
public SelectionMode getSelectionMode() {
39+
return selectionMode;
40+
}
41+
42+
public void setSelectionMode(SelectionMode selectionMode) {
43+
this.selectionMode = selectionMode;
44+
}
45+
46+
public String getDbName() {
47+
return dbName;
48+
}
49+
50+
public void setDbName(String dbName) {
51+
this.dbName = dbName;
52+
}
53+
54+
public Expression getLikeExpression() {
55+
return likeExpression;
56+
}
57+
58+
public void setLikeExpression(Expression likeExpression) {
59+
this.likeExpression = likeExpression;
60+
}
61+
62+
public Expression getWhereCondition() {
63+
return whereCondition;
64+
}
65+
66+
public void setWhereCondition(Expression whereCondition) {
67+
this.whereCondition = whereCondition;
68+
}
69+
70+
@Override
71+
public String toString() {
72+
StringBuilder builder = new StringBuilder();
73+
builder.append("SHOW");
74+
75+
if (modifiers.contains(Modifiers.EXTENDED)) {
76+
builder.append(" EXTENDED");
77+
}
78+
if (modifiers.contains(Modifiers.FULL)) {
79+
builder.append(" FULL");
80+
}
81+
82+
builder.append(" TABLES");
83+
84+
if (dbName != null) {
85+
builder.append(" ").append(selectionMode.name()).append(" ").append(dbName);
86+
}
87+
88+
if (likeExpression != null) {
89+
builder.append(" ").append("LIKE").append(" ").append(likeExpression);
90+
}
91+
92+
if (whereCondition != null) {
93+
builder.append(" ").append("WHERE").append(" ").append(whereCondition);
94+
}
95+
96+
return builder.toString();
97+
}
98+
99+
@Override
100+
public void accept(StatementVisitor statementVisitor) {
101+
statementVisitor.visit(this);
102+
}
103+
104+
public enum SelectionMode {
105+
FROM, IN
106+
}
107+
108+
public enum Modifiers {
109+
EXTENDED, FULL
110+
}
111+
}

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@
9292
import net.sf.jsqlparser.statement.select.TableFunction;
9393
import net.sf.jsqlparser.statement.select.ValuesList;
9494
import net.sf.jsqlparser.statement.select.WithItem;
95+
import net.sf.jsqlparser.statement.show.ShowTablesStatement;
9596
import net.sf.jsqlparser.statement.truncate.Truncate;
9697
import net.sf.jsqlparser.statement.update.Update;
9798
import net.sf.jsqlparser.statement.upsert.Upsert;
@@ -268,7 +269,13 @@ public void visit(InExpression inExpression) {
268269
} else if (inExpression.getLeftItemsList() != null) {
269270
inExpression.getLeftItemsList().accept(this);
270271
}
271-
inExpression.getRightItemsList().accept(this);
272+
if (inExpression.getRightExpression() != null) {
273+
inExpression.getRightExpression().accept(this);
274+
} else if (inExpression.getRightItemsList() != null) {
275+
inExpression.getRightItemsList().accept(this);
276+
} else {
277+
inExpression.getMultiExpressionList().accept(this);
278+
}
272279
}
273280

274281
@Override
@@ -879,4 +886,9 @@ public void visit(AlterSequence alterSequence) {
879886
public void visit(CreateFunctionalStatement createFunctionalStatement) {
880887
throw new UnsupportedOperationException("Finding tables from CreateFunctionalStatement is not supported");
881888
}
889+
890+
@Override
891+
public void visit(ShowTablesStatement showTables) {
892+
throw new UnsupportedOperationException("Finding tables from ShowTablesStatement is not supported");
893+
}
882894
}

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
/**
1313
* A base for a Statement DeParser
14+
*
1415
* @param <S> the type of statement this DeParser supports
1516
*/
1617
abstract class AbstractDeParser<S> {
@@ -20,8 +21,17 @@ protected AbstractDeParser(StringBuilder buffer) {
2021
this.buffer = buffer;
2122
}
2223

24+
public StringBuilder getBuffer() {
25+
return buffer;
26+
}
27+
28+
public void setBuffer(StringBuilder buffer) {
29+
this.buffer = buffer;
30+
}
31+
2332
/**
2433
* DeParses the given statement into the buffer
34+
*
2535
* @param statement the statement to deparse
2636
*/
2737
abstract void deParse(S statement);

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

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,15 @@
1111

1212
import net.sf.jsqlparser.statement.alter.Alter;
1313

14-
public class AlterDeParser {
15-
16-
protected StringBuilder buffer;
14+
public class AlterDeParser extends AbstractDeParser<Alter> {
1715

1816
public AlterDeParser(StringBuilder buffer) {
19-
this.buffer = buffer;
17+
super(buffer);
2018
}
2119

20+
@Override
2221
public void deParse(Alter alter) {
2322
buffer.append(alter.toString());
2423
}
2524

26-
public StringBuilder getBuffer() {
27-
return buffer;
28-
}
29-
30-
public void setBuffer(StringBuilder buffer) {
31-
this.buffer = buffer;
32-
}
3325
}

0 commit comments

Comments
 (0)