Skip to content

Commit 83dbac2

Browse files
committed
fixes #450
1 parent 9ce65cd commit 83dbac2

File tree

12 files changed

+151
-20
lines changed

12 files changed

+151
-20
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ Also I would like to know about needed examples or documentation stuff.
6060

6161
## Extensions in the latest SNAPSHOT version 2.1
6262

63+
* support for **show** statment (API - change)
6364
* introduces Statement streaming support by **CCJSqlParserUtil.streamStatements**
6465
* improved nested bracket parsing performance by a large scale
6566

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*-
2+
* #%L
3+
* JSQLParser library
4+
* %%
5+
* Copyright (C) 2004 - 2019 JSQLParser
6+
* %%
7+
* Dual licensed under GNU LGPL 2.1 or Apache License 2.0
8+
* #L%
9+
*/
10+
package net.sf.jsqlparser.statement;
11+
12+
public class ShowColumnsStatement implements Statement {
13+
14+
private String tableName;
15+
16+
public ShowColumnsStatement(String tableName) {
17+
this.tableName = tableName;
18+
}
19+
20+
public String getTableName() {
21+
return tableName;
22+
}
23+
24+
public void setTableName(String tableName) {
25+
this.tableName = tableName;
26+
}
27+
28+
@Override
29+
public String toString() {
30+
return "SHOW COLUMNS FROM " + tableName;
31+
}
32+
33+
@Override
34+
public void accept(StatementVisitor statementVisitor) {
35+
statementVisitor.visit(this);
36+
}
37+
}

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

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

1212
public class ShowStatement implements Statement {
1313

14-
private String tableName;
14+
private String name;
1515

16-
public ShowStatement(String tableName) {
17-
this.tableName = tableName;
16+
public ShowStatement(String name) {
17+
this.name = name;
1818
}
1919

20-
public String getTableName() {
21-
return tableName;
20+
public String getName() {
21+
return name;
2222
}
2323

24-
public void setTableName(String tableName) {
25-
this.tableName = tableName;
24+
public void setName(String name) {
25+
this.name = name;
2626
}
2727

2828
@Override
2929
public String toString() {
30-
return "SHOW COLUMNS FROM " + tableName;
30+
return "SHOW " + name;
3131
}
3232

3333
@Override

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public interface StatementVisitor {
6161

6262
void visit(SetStatement set);
6363

64-
void visit(ShowStatement set);
64+
void visit(ShowColumnsStatement set);
6565

6666
void visit(Merge merge);
6767

@@ -78,4 +78,6 @@ public interface StatementVisitor {
7878
void visit(DescribeStatement describe);
7979

8080
public void visit(ExplainStatement aThis);
81+
82+
public void visit(ShowStatement aThis);
8183
}

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ public void visit(SetStatement set) {
112112
}
113113

114114
@Override
115-
public void visit(ShowStatement set) {
115+
public void visit(ShowColumnsStatement set) {
116116
}
117117

118118
@Override
@@ -147,4 +147,8 @@ public void visit(DescribeStatement describe) {
147147
@Override
148148
public void visit(ExplainStatement aThis) {
149149
}
150+
151+
@Override
152+
public void visit(ShowStatement aThis) {
153+
}
150154
}

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@
8888
import net.sf.jsqlparser.statement.DescribeStatement;
8989
import net.sf.jsqlparser.statement.ExplainStatement;
9090
import net.sf.jsqlparser.statement.SetStatement;
91+
import net.sf.jsqlparser.statement.ShowColumnsStatement;
9192
import net.sf.jsqlparser.statement.ShowStatement;
9293
import net.sf.jsqlparser.statement.Statement;
9394
import net.sf.jsqlparser.statement.StatementVisitor;
@@ -733,7 +734,7 @@ public void visit(SetStatement set) {
733734
}
734735

735736
@Override
736-
public void visit(ShowStatement set) {
737+
public void visit(ShowColumnsStatement set) {
737738
throw new UnsupportedOperationException(NOT_SUPPORTED_YET);
738739
}
739740

@@ -851,4 +852,8 @@ public void visit(NextValExpression nextVal) {
851852
public void visit(CollateExpression col) {
852853
col.getLeftExpression().accept(this);
853854
}
855+
856+
@Override
857+
public void visit(ShowStatement aThis) {
858+
}
854859
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*-
2+
* #%L
3+
* JSQLParser library
4+
* %%
5+
* Copyright (C) 2004 - 2019 JSQLParser
6+
* %%
7+
* Dual licensed under GNU LGPL 2.1 or Apache License 2.0
8+
* #L%
9+
*/
10+
package net.sf.jsqlparser.util.deparser;
11+
12+
import net.sf.jsqlparser.statement.ShowColumnsStatement;
13+
14+
public class ShowColumnsStatementDeParser {
15+
16+
protected StringBuilder buffer;
17+
18+
public ShowColumnsStatementDeParser(StringBuilder buffer) {
19+
this.buffer = buffer;
20+
}
21+
22+
public StringBuilder getBuffer() {
23+
return buffer;
24+
}
25+
26+
public void setBuffer(StringBuilder buffer) {
27+
this.buffer = buffer;
28+
}
29+
30+
public void deParse(ShowColumnsStatement show) {
31+
buffer.append("SHOW COLUMNS FROM ").append(show.getTableName());
32+
}
33+
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@ public void setBuffer(StringBuilder buffer) {
2828
}
2929

3030
public void deParse(ShowStatement show) {
31-
buffer.append("SHOW COLUMNS FROM ").append(show.getTableName());
31+
buffer.append("SHOW ").append(show.getName());
3232
}
3333
}

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import net.sf.jsqlparser.statement.DescribeStatement;
1616
import net.sf.jsqlparser.statement.ExplainStatement;
1717
import net.sf.jsqlparser.statement.SetStatement;
18+
import net.sf.jsqlparser.statement.ShowColumnsStatement;
1819
import net.sf.jsqlparser.statement.ShowStatement;
1920
import net.sf.jsqlparser.statement.Statement;
2021
import net.sf.jsqlparser.statement.StatementVisitor;
@@ -223,8 +224,8 @@ public void visit(UseStatement use) {
223224
}
224225

225226
@Override
226-
public void visit(ShowStatement show) {
227-
new ShowStatementDeParser(buffer).deParse(show);
227+
public void visit(ShowColumnsStatement show) {
228+
new ShowColumnsStatementDeParser(buffer).deParse(show);
228229
}
229230

230231
@Override
@@ -261,4 +262,9 @@ public void visit(ExplainStatement explain) {
261262
buffer.append("EXPLAIN ");
262263
explain.getStatement().accept(this);
263264
}
265+
266+
@Override
267+
public void visit(ShowStatement show) {
268+
new ShowStatementDeParser(buffer).deParse(show);
269+
}
264270
}

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

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,8 @@ Statement SingleStatement() :
407407
|
408408
stm = Set()
409409
|
410+
LOOKAHEAD(2) stm = ShowColumns()
411+
|
410412
stm = Show()
411413
|
412414
stm = Use()
@@ -538,13 +540,23 @@ UseStatement Use(): {
538540
}
539541
}
540542

541-
ShowStatement Show(): {
543+
ShowColumnsStatement ShowColumns(): {
542544
String tableName;
543545
}
544546
{
545547
<K_SHOW> <K_COLUMNS> <K_FROM> tableName = RelObjectNameExt()
546548
{
547-
return new ShowStatement(tableName);
549+
return new ShowColumnsStatement(tableName);
550+
}
551+
}
552+
553+
ShowStatement Show(): {
554+
String name;
555+
}
556+
{
557+
<K_SHOW> name = RelObjectNameExt()
558+
{
559+
return new ShowStatement(name);
548560
}
549561
}
550562

0 commit comments

Comments
 (0)