Skip to content

Commit dab36b9

Browse files
committed
Merge origin/master
2 parents 424c81c + 3dee404 commit dab36b9

File tree

10 files changed

+213
-94
lines changed

10 files changed

+213
-94
lines changed

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

Lines changed: 6 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -9,35 +9,10 @@
99
*/
1010
package net.sf.jsqlparser.expression;
1111

12-
import net.sf.jsqlparser.expression.operators.arithmetic.Addition;
13-
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseAnd;
14-
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseLeftShift;
15-
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseOr;
16-
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseRightShift;
17-
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseXor;
18-
import net.sf.jsqlparser.expression.operators.arithmetic.Concat;
19-
import net.sf.jsqlparser.expression.operators.arithmetic.Division;
20-
import net.sf.jsqlparser.expression.operators.arithmetic.Modulo;
21-
import net.sf.jsqlparser.expression.operators.arithmetic.Multiplication;
22-
import net.sf.jsqlparser.expression.operators.arithmetic.Subtraction;
12+
import net.sf.jsqlparser.expression.operators.arithmetic.*;
2313
import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
2414
import net.sf.jsqlparser.expression.operators.conditional.OrExpression;
25-
import net.sf.jsqlparser.expression.operators.relational.Between;
26-
import net.sf.jsqlparser.expression.operators.relational.EqualsTo;
27-
import net.sf.jsqlparser.expression.operators.relational.ExistsExpression;
28-
import net.sf.jsqlparser.expression.operators.relational.GreaterThan;
29-
import net.sf.jsqlparser.expression.operators.relational.GreaterThanEquals;
30-
import net.sf.jsqlparser.expression.operators.relational.InExpression;
31-
import net.sf.jsqlparser.expression.operators.relational.IsNullExpression;
32-
import net.sf.jsqlparser.expression.operators.relational.JsonOperator;
33-
import net.sf.jsqlparser.expression.operators.relational.LikeExpression;
34-
import net.sf.jsqlparser.expression.operators.relational.Matches;
35-
import net.sf.jsqlparser.expression.operators.relational.MinorThan;
36-
import net.sf.jsqlparser.expression.operators.relational.MinorThanEquals;
37-
import net.sf.jsqlparser.expression.operators.relational.NotEqualsTo;
38-
import net.sf.jsqlparser.expression.operators.relational.RegExpMatchOperator;
39-
import net.sf.jsqlparser.expression.operators.relational.RegExpMySQLOperator;
40-
import net.sf.jsqlparser.expression.operators.relational.SimilarToExpression;
15+
import net.sf.jsqlparser.expression.operators.relational.*;
4116
import net.sf.jsqlparser.schema.Column;
4217
import net.sf.jsqlparser.statement.select.SubSelect;
4318

@@ -77,6 +52,8 @@ public interface ExpressionVisitor {
7752

7853
void visit(Division division);
7954

55+
void visit(IntegerDivision division);
56+
8057
void visit(Multiplication multiplication);
8158

8259
void visit(Subtraction subtraction);
@@ -97,6 +74,8 @@ public interface ExpressionVisitor {
9774

9875
void visit(IsNullExpression isNullExpression);
9976

77+
void visit(IsBooleanExpression isBooleanExpression);
78+
10079
void visit(LikeExpression likeExpression);
10180

10281
void visit(MinorThan minorThan);

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,11 @@ public void visit(Division expr) {
115115
visitBinaryExpression(expr);
116116
}
117117

118+
@Override
119+
public void visit(IntegerDivision expr) {
120+
visitBinaryExpression(expr);
121+
}
122+
118123
@Override
119124
public void visit(Multiplication expr) {
120125
visitBinaryExpression(expr);
@@ -172,6 +177,11 @@ public void visit(IsNullExpression expr) {
172177
expr.getLeftExpression().accept(this);
173178
}
174179

180+
@Override
181+
public void visit(IsBooleanExpression expr) {
182+
expr.getLeftExpression().accept(this);
183+
}
184+
175185
@Override
176186
public void visit(LikeExpression expr) {
177187
visitBinaryExpression(expr);
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
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.expression.operators.arithmetic;
11+
12+
import net.sf.jsqlparser.expression.BinaryExpression;
13+
import net.sf.jsqlparser.expression.ExpressionVisitor;
14+
15+
public class IntegerDivision extends BinaryExpression {
16+
17+
@Override
18+
public void accept(ExpressionVisitor expressionVisitor) {
19+
expressionVisitor.visit(this);
20+
}
21+
22+
@Override
23+
public String getStringExpression() {
24+
return "DIV";
25+
}
26+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
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.expression.operators.relational;
11+
12+
import net.sf.jsqlparser.expression.Expression;
13+
import net.sf.jsqlparser.expression.ExpressionVisitor;
14+
import net.sf.jsqlparser.parser.ASTNodeAccessImpl;
15+
16+
public class IsBooleanExpression extends ASTNodeAccessImpl implements Expression {
17+
18+
private Expression leftExpression;
19+
private boolean not = false;
20+
private boolean isTrue = false;
21+
22+
public Expression getLeftExpression() {
23+
return leftExpression;
24+
}
25+
26+
public boolean isNot() {
27+
return not;
28+
}
29+
30+
public void setLeftExpression(Expression expression) {
31+
leftExpression = expression;
32+
}
33+
34+
public void setNot(boolean b) {
35+
not = b;
36+
}
37+
38+
public boolean isTrue() {
39+
return isTrue;
40+
}
41+
42+
public void setIsTrue(boolean isTrue) {
43+
this.isTrue = isTrue;
44+
}
45+
46+
@Override
47+
public void accept(ExpressionVisitor expressionVisitor) {
48+
expressionVisitor.visit(this);
49+
}
50+
51+
@Override
52+
public String toString() {
53+
if (isTrue()) {
54+
return leftExpression + " IS" + (not ? " NOT" : "") + " TRUE";
55+
} else {
56+
return leftExpression + " IS" + (not ? " NOT" : "") + " FALSE";
57+
}
58+
}
59+
}

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

Lines changed: 11 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -49,39 +49,10 @@
4949
import net.sf.jsqlparser.expression.UserVariable;
5050
import net.sf.jsqlparser.expression.ValueListExpression;
5151
import net.sf.jsqlparser.expression.WhenClause;
52-
import net.sf.jsqlparser.expression.operators.arithmetic.Addition;
53-
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseAnd;
54-
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseLeftShift;
55-
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseOr;
56-
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseRightShift;
57-
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseXor;
58-
import net.sf.jsqlparser.expression.operators.arithmetic.Concat;
59-
import net.sf.jsqlparser.expression.operators.arithmetic.Division;
60-
import net.sf.jsqlparser.expression.operators.arithmetic.Modulo;
61-
import net.sf.jsqlparser.expression.operators.arithmetic.Multiplication;
62-
import net.sf.jsqlparser.expression.operators.arithmetic.Subtraction;
52+
import net.sf.jsqlparser.expression.operators.arithmetic.*;
6353
import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
6454
import net.sf.jsqlparser.expression.operators.conditional.OrExpression;
65-
import net.sf.jsqlparser.expression.operators.relational.Between;
66-
import net.sf.jsqlparser.expression.operators.relational.EqualsTo;
67-
import net.sf.jsqlparser.expression.operators.relational.ExistsExpression;
68-
import net.sf.jsqlparser.expression.operators.relational.ExpressionList;
69-
import net.sf.jsqlparser.expression.operators.relational.GreaterThan;
70-
import net.sf.jsqlparser.expression.operators.relational.GreaterThanEquals;
71-
import net.sf.jsqlparser.expression.operators.relational.InExpression;
72-
import net.sf.jsqlparser.expression.operators.relational.IsNullExpression;
73-
import net.sf.jsqlparser.expression.operators.relational.ItemsListVisitor;
74-
import net.sf.jsqlparser.expression.operators.relational.JsonOperator;
75-
import net.sf.jsqlparser.expression.operators.relational.LikeExpression;
76-
import net.sf.jsqlparser.expression.operators.relational.Matches;
77-
import net.sf.jsqlparser.expression.operators.relational.MinorThan;
78-
import net.sf.jsqlparser.expression.operators.relational.MinorThanEquals;
79-
import net.sf.jsqlparser.expression.operators.relational.MultiExpressionList;
80-
import net.sf.jsqlparser.expression.operators.relational.NamedExpressionList;
81-
import net.sf.jsqlparser.expression.operators.relational.NotEqualsTo;
82-
import net.sf.jsqlparser.expression.operators.relational.RegExpMatchOperator;
83-
import net.sf.jsqlparser.expression.operators.relational.RegExpMySQLOperator;
84-
import net.sf.jsqlparser.expression.operators.relational.SimilarToExpression;
55+
import net.sf.jsqlparser.expression.operators.relational.*;
8556
import net.sf.jsqlparser.schema.Column;
8657
import net.sf.jsqlparser.schema.Table;
8758
import net.sf.jsqlparser.statement.Block;
@@ -263,6 +234,11 @@ public void visit(Division division) {
263234
visitBinaryExpression(division);
264235
}
265236

237+
@Override
238+
public void visit(IntegerDivision division) {
239+
visitBinaryExpression(division);
240+
}
241+
266242
@Override
267243
public void visit(DoubleValue doubleValue) {
268244
}
@@ -309,6 +285,10 @@ public void visit(SignedExpression signedExpression) {
309285
public void visit(IsNullExpression isNullExpression) {
310286
}
311287

288+
@Override
289+
public void visit(IsBooleanExpression isBooleanExpression) {
290+
}
291+
312292
@Override
313293
public void visit(JdbcParameter jdbcParameter) {
314294
}

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

Lines changed: 25 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -50,41 +50,10 @@
5050
import net.sf.jsqlparser.expression.ValueListExpression;
5151
import net.sf.jsqlparser.expression.WhenClause;
5252
import net.sf.jsqlparser.expression.WindowElement;
53-
import net.sf.jsqlparser.expression.operators.arithmetic.Addition;
54-
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseAnd;
55-
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseLeftShift;
56-
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseOr;
57-
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseRightShift;
58-
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseXor;
59-
import net.sf.jsqlparser.expression.operators.arithmetic.Concat;
60-
import net.sf.jsqlparser.expression.operators.arithmetic.Division;
61-
import net.sf.jsqlparser.expression.operators.arithmetic.Modulo;
62-
import net.sf.jsqlparser.expression.operators.arithmetic.Multiplication;
63-
import net.sf.jsqlparser.expression.operators.arithmetic.Subtraction;
53+
import net.sf.jsqlparser.expression.operators.arithmetic.*;
6454
import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
6555
import net.sf.jsqlparser.expression.operators.conditional.OrExpression;
66-
import net.sf.jsqlparser.expression.operators.relational.Between;
67-
import net.sf.jsqlparser.expression.operators.relational.EqualsTo;
68-
import net.sf.jsqlparser.expression.operators.relational.ExistsExpression;
69-
import net.sf.jsqlparser.expression.operators.relational.ExpressionList;
70-
import net.sf.jsqlparser.expression.operators.relational.GreaterThan;
71-
import net.sf.jsqlparser.expression.operators.relational.GreaterThanEquals;
72-
import net.sf.jsqlparser.expression.operators.relational.InExpression;
73-
import net.sf.jsqlparser.expression.operators.relational.IsNullExpression;
74-
import net.sf.jsqlparser.expression.operators.relational.ItemsListVisitor;
75-
import net.sf.jsqlparser.expression.operators.relational.JsonOperator;
76-
import net.sf.jsqlparser.expression.operators.relational.LikeExpression;
77-
import net.sf.jsqlparser.expression.operators.relational.Matches;
78-
import net.sf.jsqlparser.expression.operators.relational.MinorThan;
79-
import net.sf.jsqlparser.expression.operators.relational.MinorThanEquals;
80-
import net.sf.jsqlparser.expression.operators.relational.MultiExpressionList;
81-
import net.sf.jsqlparser.expression.operators.relational.NamedExpressionList;
82-
import net.sf.jsqlparser.expression.operators.relational.NotEqualsTo;
83-
import net.sf.jsqlparser.expression.operators.relational.OldOracleJoinBinaryExpression;
84-
import net.sf.jsqlparser.expression.operators.relational.RegExpMatchOperator;
85-
import net.sf.jsqlparser.expression.operators.relational.RegExpMySQLOperator;
86-
import net.sf.jsqlparser.expression.operators.relational.SimilarToExpression;
87-
import net.sf.jsqlparser.expression.operators.relational.SupportsOldOracleJoinSyntax;
56+
import net.sf.jsqlparser.expression.operators.relational.*;
8857
import net.sf.jsqlparser.schema.Column;
8958
import net.sf.jsqlparser.schema.Table;
9059
import net.sf.jsqlparser.statement.select.OrderByElement;
@@ -155,6 +124,11 @@ public void visit(Division division) {
155124
visitBinaryExpression(division, " / ");
156125
}
157126

127+
@Override
128+
public void visit(IntegerDivision division) {
129+
visitBinaryExpression(division, " DIV ");
130+
}
131+
158132
@Override
159133
public void visit(DoubleValue doubleValue) {
160134
buffer.append(doubleValue.toString());
@@ -253,6 +227,24 @@ public void visit(IsNullExpression isNullExpression) {
253227
}
254228
}
255229

230+
@Override
231+
public void visit(IsBooleanExpression isBooleanExpression) {
232+
isBooleanExpression.getLeftExpression().accept(this);
233+
if (isBooleanExpression.isTrue()) {
234+
if (isBooleanExpression.isNot()) {
235+
buffer.append(" IS NOT TRUE");
236+
} else {
237+
buffer.append(" IS TRUE");
238+
}
239+
} else {
240+
if (isBooleanExpression.isNot()) {
241+
buffer.append(" IS NOT FALSE");
242+
} else {
243+
buffer.append(" IS FALSE");
244+
}
245+
}
246+
}
247+
256248
@Override
257249
public void visit(JdbcParameter jdbcParameter) {
258250
buffer.append("?");

0 commit comments

Comments
 (0)