Skip to content

Commit 6ba57e5

Browse files
committed
Merge origin/master
Conflicts: src/test/java/net/sf/jsqlparser/test/select/SelectTest.java
2 parents 75be426 + 012874f commit 6ba57e5

File tree

11 files changed

+345
-23
lines changed

11 files changed

+345
-23
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
[![PayPal donate button](http://img.shields.io/paypal/donate.png?color=yellow)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=64CCN9JJANZXA "Help this JSqlParser version using Paypal")
66

7+
[![Gitter](https://badges.gitter.im/JSQLParser/JSqlParser.svg)](https://gitter.im/JSQLParser/JSqlParser?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
8+
79
Look here for more information and examples: https://github.com/JSQLParser/JSqlParser/wiki.
810

911
## License
@@ -41,6 +43,7 @@ Also I would like to know about needed examples or documentation stuff.
4143
## Extensions in the latest SNAPSHOT version 0.9.6
4244

4345
* allowed negative interval expressions like **INTERVAL -420 MINUTES**.
46+
* support for **ALTER VIEW** statements
4447

4548
## Extensions of JSqlParser releases
4649

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import net.sf.jsqlparser.statement.alter.Alter;
2525
import net.sf.jsqlparser.statement.create.index.CreateIndex;
2626
import net.sf.jsqlparser.statement.create.table.CreateTable;
27+
import net.sf.jsqlparser.statement.create.view.AlterView;
2728
import net.sf.jsqlparser.statement.create.view.CreateView;
2829
import net.sf.jsqlparser.statement.delete.Delete;
2930
import net.sf.jsqlparser.statement.drop.Drop;
@@ -56,6 +57,8 @@ public interface StatementVisitor {
5657
void visit(CreateTable createTable);
5758

5859
void visit(CreateView createView);
60+
61+
void visit(AlterView alterView);
5962

6063
void visit(Alter alter);
6164

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import net.sf.jsqlparser.statement.alter.Alter;
2525
import net.sf.jsqlparser.statement.create.index.CreateIndex;
2626
import net.sf.jsqlparser.statement.create.table.CreateTable;
27+
import net.sf.jsqlparser.statement.create.view.AlterView;
2728
import net.sf.jsqlparser.statement.create.view.CreateView;
2829
import net.sf.jsqlparser.statement.delete.Delete;
2930
import net.sf.jsqlparser.statement.drop.Drop;
@@ -110,4 +111,8 @@ public void visit(SetStatement set) {
110111
public void visit(Merge merge) {
111112

112113
}
114+
115+
@Override
116+
public void visit(AlterView alterView) {
117+
}
113118
}
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
/*
2+
* #%L
3+
* JSQLParser library
4+
* %%
5+
* Copyright (C) 2004 - 2013 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.create.view;
23+
24+
import java.util.List;
25+
import net.sf.jsqlparser.schema.Table;
26+
import net.sf.jsqlparser.statement.Statement;
27+
import net.sf.jsqlparser.statement.StatementVisitor;
28+
import net.sf.jsqlparser.statement.select.PlainSelect;
29+
import net.sf.jsqlparser.statement.select.SelectBody;
30+
31+
/**
32+
* A "CREATE VIEW" statement
33+
*/
34+
public class AlterView implements Statement {
35+
36+
private Table view;
37+
private SelectBody selectBody;
38+
private List<String> columnNames = null;
39+
40+
@Override
41+
public void accept(StatementVisitor statementVisitor) {
42+
statementVisitor.visit(this);
43+
}
44+
45+
/**
46+
* In the syntax tree, a view looks and acts just like a Table.
47+
*
48+
* @return The name of the view to be created.
49+
*/
50+
public Table getView() {
51+
return view;
52+
}
53+
54+
public void setView(Table view) {
55+
this.view = view;
56+
}
57+
58+
/**
59+
* @return the SelectBody
60+
*/
61+
public SelectBody getSelectBody() {
62+
return selectBody;
63+
}
64+
65+
public void setSelectBody(SelectBody selectBody) {
66+
this.selectBody = selectBody;
67+
}
68+
69+
public List<String> getColumnNames() {
70+
return columnNames;
71+
}
72+
73+
public void setColumnNames(List<String> columnNames) {
74+
this.columnNames = columnNames;
75+
}
76+
77+
@Override
78+
public String toString() {
79+
StringBuilder sql = new StringBuilder("ALTER ");
80+
sql.append("VIEW ");
81+
sql.append(view);
82+
if (columnNames != null) {
83+
sql.append(PlainSelect.getStringList(columnNames, true, true));
84+
}
85+
sql.append(" AS ").append(selectBody);
86+
return sql.toString();
87+
}
88+
}

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

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import net.sf.jsqlparser.statement.alter.Alter;
4444
import net.sf.jsqlparser.statement.create.index.CreateIndex;
4545
import net.sf.jsqlparser.statement.create.table.CreateTable;
46+
import net.sf.jsqlparser.statement.create.view.AlterView;
4647
import net.sf.jsqlparser.statement.create.view.CreateView;
4748
import net.sf.jsqlparser.statement.drop.Drop;
4849
import net.sf.jsqlparser.statement.execute.Execute;
@@ -575,17 +576,17 @@ public void visit(Replace replace) {
575576

576577
@Override
577578
public void visit(Drop drop) {
578-
throw new UnsupportedOperationException(NOT_SUPPORTED_YET); //To change body of generated methods, choose Tools | Templates.
579+
throw new UnsupportedOperationException(NOT_SUPPORTED_YET);
579580
}
580581

581582
@Override
582583
public void visit(Truncate truncate) {
583-
throw new UnsupportedOperationException(NOT_SUPPORTED_YET); //To change body of generated methods, choose Tools | Templates.
584+
throw new UnsupportedOperationException(NOT_SUPPORTED_YET);
584585
}
585586

586587
@Override
587588
public void visit(CreateIndex createIndex) {
588-
throw new UnsupportedOperationException(NOT_SUPPORTED_YET); //To change body of generated methods, choose Tools | Templates.
589+
throw new UnsupportedOperationException(NOT_SUPPORTED_YET);
589590
}
590591

591592
@Override
@@ -598,27 +599,27 @@ public void visit(CreateTable create) {
598599

599600
@Override
600601
public void visit(CreateView createView) {
601-
throw new UnsupportedOperationException(NOT_SUPPORTED_YET); //To change body of generated methods, choose Tools | Templates.
602+
throw new UnsupportedOperationException(NOT_SUPPORTED_YET);
602603
}
603604

604605
@Override
605606
public void visit(Alter alter) {
606-
throw new UnsupportedOperationException(NOT_SUPPORTED_YET); //To change body of generated methods, choose Tools | Templates.
607+
throw new UnsupportedOperationException(NOT_SUPPORTED_YET);
607608
}
608609

609610
@Override
610611
public void visit(Statements stmts) {
611-
throw new UnsupportedOperationException(NOT_SUPPORTED_YET); //To change body of generated methods, choose Tools | Templates.
612+
throw new UnsupportedOperationException(NOT_SUPPORTED_YET);
612613
}
613614

614615
@Override
615616
public void visit(Execute execute) {
616-
throw new UnsupportedOperationException(NOT_SUPPORTED_YET); //To change body of generated methods, choose Tools | Templates.
617+
throw new UnsupportedOperationException(NOT_SUPPORTED_YET);
617618
}
618619

619620
@Override
620621
public void visit(SetStatement set) {
621-
throw new UnsupportedOperationException(NOT_SUPPORTED_YET); //To change body of generated methods, choose Tools | Templates.
622+
throw new UnsupportedOperationException(NOT_SUPPORTED_YET);
622623
}
623624

624625
@Override
@@ -635,7 +636,7 @@ public void visit(HexValue hexValue) {
635636

636637
@Override
637638
public void visit(Merge merge) {
638-
throw new UnsupportedOperationException(NOT_SUPPORTED_YET); //To change body of generated methods, choose Tools | Templates.
639+
throw new UnsupportedOperationException(NOT_SUPPORTED_YET);
639640
}
640641

641642
@Override
@@ -646,4 +647,9 @@ public void visit(OracleHint hint) {
646647
public void visit(TableFunction valuesList) {
647648
}
648649

650+
@Override
651+
public void visit(AlterView alterView) {
652+
throw new UnsupportedOperationException(NOT_SUPPORTED_YET);
653+
}
654+
649655
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
/*
2+
* #%L
3+
* JSQLParser library
4+
* %%
5+
* Copyright (C) 2004 - 2013 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.util.deparser;
23+
24+
import net.sf.jsqlparser.statement.create.view.AlterView;
25+
import net.sf.jsqlparser.statement.select.PlainSelect;
26+
import net.sf.jsqlparser.statement.select.SelectVisitor;
27+
28+
/**
29+
* A class to de-parse (that is, tranform from JSqlParser hierarchy into a
30+
* string) a {@link net.sf.jsqlparser.statement.create.view.AlterView}
31+
*/
32+
public class AlterViewDeParser {
33+
34+
private StringBuilder buffer;
35+
private SelectVisitor selectVisitor;
36+
37+
/**
38+
* @param buffer the buffer that will be filled with the select
39+
*/
40+
public AlterViewDeParser(StringBuilder buffer) {
41+
SelectDeParser selectDeParser = new SelectDeParser();
42+
selectDeParser.setBuffer(buffer);
43+
ExpressionDeParser expressionDeParser = new ExpressionDeParser(selectDeParser, buffer);
44+
selectDeParser.setExpressionVisitor(expressionDeParser);
45+
selectVisitor = selectDeParser;
46+
this.buffer = buffer;
47+
}
48+
49+
public AlterViewDeParser(StringBuilder buffer, SelectVisitor selectVisitor) {
50+
this.buffer = buffer;
51+
this.selectVisitor = selectVisitor;
52+
}
53+
54+
public void deParse(AlterView alterView) {
55+
buffer.append("ALTER ");
56+
buffer.append("VIEW ").append(alterView.getView().getFullyQualifiedName());
57+
if (alterView.getColumnNames() != null) {
58+
buffer.append(PlainSelect.getStringList(alterView.getColumnNames(), true, true));
59+
}
60+
buffer.append(" AS ");
61+
62+
alterView.getSelectBody().accept(selectVisitor);
63+
}
64+
65+
public StringBuilder getBuffer() {
66+
return buffer;
67+
}
68+
69+
public void setBuffer(StringBuilder buffer) {
70+
this.buffer = buffer;
71+
}
72+
}

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import net.sf.jsqlparser.statement.alter.Alter;
3030
import net.sf.jsqlparser.statement.create.index.CreateIndex;
3131
import net.sf.jsqlparser.statement.create.table.CreateTable;
32+
import net.sf.jsqlparser.statement.create.view.AlterView;
3233
import net.sf.jsqlparser.statement.create.view.CreateView;
3334
import net.sf.jsqlparser.statement.delete.Delete;
3435
import net.sf.jsqlparser.statement.drop.Drop;
@@ -66,6 +67,12 @@ public void visit(CreateView createView) {
6667
CreateViewDeParser createViewDeParser = new CreateViewDeParser(buffer);
6768
createViewDeParser.deParse(createView);
6869
}
70+
71+
@Override
72+
public void visit(AlterView alterView) {
73+
AlterViewDeParser alterViewDeParser = new AlterViewDeParser(buffer);
74+
alterViewDeParser.deParse(alterView);
75+
}
6976

7077
@Override
7178
public void visit(Delete delete) {

0 commit comments

Comments
 (0)