Skip to content

Commit 55f083f

Browse files
Merge remote-tracking branch 'origin/master' into Issue1438
# Conflicts: # build.gradle # src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt # src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java
2 parents e25ee10 + 82f63a3 commit 55f083f

33 files changed

Lines changed: 596 additions & 133 deletions

README.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +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 **4.2** of JSqlParser
26-
* Released version **4.1** of JSqlParser
27-
* Released version **4.0** of JSqlParser
25+
* Released version **4.4** of JSqlParser
2826
* The array parsing is the default behaviour. Square bracket quotation has to be enabled using
2927
a parser flag (**CCJSqlParser.withSquareBracketQuotation**).
3028
* due to an API change the version will be 3.0
@@ -54,7 +52,7 @@ To help JSqlParser's development you are encouraged to provide
5452

5553
Also I would like to know about needed examples or documentation stuff.
5654

57-
## Extensions in the latest SNAPSHOT version 4.4
55+
## Extensions in the latest SNAPSHOT version 4.5
5856

5957
Additionally, we have fixed many errors and improved the code quality and the test coverage.
6058

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ jacocoTestCoverageVerification {
114114
limit {
115115
counter = 'LINE'
116116
value = 'MISSEDCOUNT'
117-
maximum = 5500
117+
maximum = 5513
118118
}
119119
excludes = [
120120
'net.sf.jsqlparser.util.validation.*',

pom.xml

Lines changed: 2 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>4.4-SNAPSHOT</version>
5+
<version>4.5-SNAPSHOT</version>
66
<name>JSQLParser library</name>
77
<inceptionYear>2004</inceptionYear>
88
<organization>
@@ -114,7 +114,7 @@
114114
<configuration>
115115
<rulesets>
116116
<!-- Custom local file system rule set -->
117-
<ruleset>${basedir}/ruleset.xml</ruleset>
117+
<ruleset>${project.basedir}/ruleset.xml</ruleset>
118118
</rulesets>
119119
<excludes>
120120
<exclude>**/*Bean.java</exclude>

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,4 +186,8 @@ public interface ExpressionVisitor {
186186
void visit(AllTableColumns allTableColumns);
187187

188188
void visit(AllValue allValue);
189+
190+
void visit(IsDistinctExpression isDistinctExpression);
191+
192+
void visit(GeometryDistance geometryDistance);
189193
}

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

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -492,18 +492,21 @@ public void visit(UnPivot unpivot) {
492492

493493
@Override
494494
public void visit(AllColumns allColumns) {
495-
allColumns.accept((ExpressionVisitor) this);
496495
}
497496

498497
@Override
499498
public void visit(AllTableColumns allTableColumns) {
500-
allTableColumns.accept((ExpressionVisitor) this);
501499
}
502500

503501
@Override
504502
public void visit(AllValue allValue) {
505503
}
506504

505+
@Override
506+
public void visit(IsDistinctExpression isDistinctExpression) {
507+
visitBinaryExpression(isDistinctExpression);
508+
}
509+
507510
@Override
508511
public void visit(SelectExpressionItem selectExpressionItem) {
509512
selectExpressionItem.getExpression().accept(this);
@@ -629,7 +632,12 @@ public void visit(ConnectByRootOperator connectByRootOperator) {
629632
public void visit(OracleNamedFunctionParameter oracleNamedFunctionParameter) {
630633
oracleNamedFunctionParameter.getExpression().accept(this);
631634
}
632-
635+
636+
@Override
637+
public void visit(GeometryDistance geometryDistance) {
638+
visitBinaryExpression(geometryDistance);
639+
}
640+
633641
public void visit(ColumnDefinition columnDefinition) {
634642
columnDefinition.accept(this);
635643
}

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ public void add(int i, JsonFunctionExpression expression) {
5757
expressions.add(i, expression);
5858
}
5959

60+
public boolean isEmpty() {
61+
return keyValuePairs.isEmpty();
62+
}
63+
6064
public JsonAggregateOnNullType getOnNullType() {
6165
return onNullType;
6266
}
@@ -122,6 +126,9 @@ public StringBuilder append(StringBuilder builder) {
122126
case POSTGRES_OBJECT:
123127
appendPostgresObject(builder);
124128
break;
129+
case MYSQL_OBJECT:
130+
appendMySqlObject(builder);
131+
break;
125132
case ARRAY:
126133
appendArray(builder);
127134
break;
@@ -200,6 +207,22 @@ public StringBuilder appendPostgresObject(StringBuilder builder) {
200207
return builder;
201208
}
202209

210+
public StringBuilder appendMySqlObject(StringBuilder builder) {
211+
builder.append("JSON_OBJECT( ");
212+
int i=0;
213+
for (JsonKeyValuePair keyValuePair : keyValuePairs) {
214+
if (i>0) {
215+
builder.append(", ");
216+
}
217+
builder.append(keyValuePair.getKey());
218+
builder.append(", ").append(keyValuePair.getValue());
219+
i++;
220+
}
221+
builder.append(" ) ");
222+
223+
return builder;
224+
}
225+
203226
@SuppressWarnings({"PMD.CyclomaticComplexity", "PMD.NPathComplexity"})
204227
public StringBuilder appendArray(StringBuilder builder) {
205228
builder.append("JSON_ARRAY( ");

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,5 @@ public enum JsonFunctionType {
1818
OBJECT
1919
, ARRAY
2020
, POSTGRES_OBJECT
21+
, MYSQL_OBJECT
2122
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/*-
2+
* #%L
3+
* JSQLParser library
4+
* %%
5+
* Copyright (C) 2004 - 2022 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.ExpressionVisitor;
13+
14+
public class GeometryDistance extends ComparisonOperator {
15+
16+
public GeometryDistance() {
17+
super("<->");
18+
}
19+
20+
public GeometryDistance(String operator) {
21+
super(operator);
22+
}
23+
24+
@Override
25+
public void accept(ExpressionVisitor expressionVisitor) {
26+
expressionVisitor.visit(this);
27+
}
28+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
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.BinaryExpression;
13+
import net.sf.jsqlparser.expression.ExpressionVisitor;
14+
15+
public class IsDistinctExpression extends BinaryExpression {
16+
17+
private boolean not = false;
18+
19+
public boolean isNot() {
20+
return not;
21+
}
22+
23+
public void setNot(boolean b) {
24+
not = b;
25+
}
26+
27+
@Override
28+
public void accept(ExpressionVisitor expressionVisitor) {
29+
expressionVisitor.visit(this);
30+
}
31+
32+
@Override
33+
public String getStringExpression() {
34+
return " IS " + (isNot() ? "NOT " : "") + "DISTINCT FROM ";
35+
}
36+
37+
@Override
38+
public String toString() {
39+
String retval = getLeftExpression() + getStringExpression() + getRightExpression();
40+
return retval;
41+
}
42+
}

src/main/java/net/sf/jsqlparser/parser/feature/Feature.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -699,7 +699,7 @@ public enum Feature {
699699
// MYSQL
700700

701701
mySqlHintStraightJoin,
702-
mysqlSqlNoCache,
702+
mysqlSqlCacheFlag,
703703
mysqlCalcFoundRows,
704704

705705
// SQLSERVER

0 commit comments

Comments
 (0)