File tree Expand file tree Collapse file tree 8 files changed +51
-1
lines changed
jjtree/net/sf/jsqlparser/parser
test/java/net/sf/jsqlparser/statement/select Expand file tree Collapse file tree 8 files changed +51
-1
lines changed Original file line number Diff line number Diff line change @@ -188,4 +188,6 @@ public interface ExpressionVisitor {
188
188
void visit (AllValue allValue );
189
189
190
190
void visit (IsDistinctExpression isDistinctExpression );
191
+
192
+ void visit (GeometryDistance geometryDistance );
191
193
}
Original file line number Diff line number Diff line change @@ -634,7 +634,12 @@ public void visit(ConnectByRootOperator connectByRootOperator) {
634
634
public void visit (OracleNamedFunctionParameter oracleNamedFunctionParameter ) {
635
635
oracleNamedFunctionParameter .getExpression ().accept (this );
636
636
}
637
-
637
+
638
+ @ Override
639
+ public void visit (GeometryDistance geometryDistance ) {
640
+ visitBinaryExpression (geometryDistance );
641
+ }
642
+
638
643
public void visit (ColumnDefinition columnDefinition ) {
639
644
columnDefinition .accept (this );
640
645
}
Original file line number Diff line number Diff line change
1
+ package net .sf .jsqlparser .expression .operators .relational ;
2
+
3
+ import net .sf .jsqlparser .expression .ExpressionVisitor ;
4
+
5
+ public class GeometryDistance extends ComparisonOperator {
6
+
7
+ public GeometryDistance () {
8
+ super ("<->" );
9
+ }
10
+
11
+ public GeometryDistance (String operator ) {
12
+ super (operator );
13
+ }
14
+
15
+ @ Override
16
+ public void accept (ExpressionVisitor expressionVisitor ) {
17
+ expressionVisitor .visit (this );
18
+ }
19
+ }
Original file line number Diff line number Diff line change @@ -1031,4 +1031,9 @@ public void visit(PurgeStatement purgeStatement) {
1031
1031
public void visit (AlterSystemStatement alterSystemStatement ) {
1032
1032
// no tables involved in this statement
1033
1033
}
1034
+
1035
+ @ Override
1036
+ public void visit (GeometryDistance geometryDistance ) {
1037
+ visitBinaryExpression (geometryDistance );
1038
+ }
1034
1039
}
Original file line number Diff line number Diff line change 34
34
import net .sf .jsqlparser .expression .operators .relational .ExistsExpression ;
35
35
import net .sf .jsqlparser .expression .operators .relational .ExpressionList ;
36
36
import net .sf .jsqlparser .expression .operators .relational .FullTextSearch ;
37
+ import net .sf .jsqlparser .expression .operators .relational .GeometryDistance ;
37
38
import net .sf .jsqlparser .expression .operators .relational .GreaterThan ;
38
39
import net .sf .jsqlparser .expression .operators .relational .GreaterThanEquals ;
39
40
import net .sf .jsqlparser .expression .operators .relational .InExpression ;
@@ -996,4 +997,9 @@ public void visit(IsDistinctExpression isDistinctExpression) {
996
997
isDistinctExpression .getStringExpression () +
997
998
isDistinctExpression .getRightExpression ());
998
999
}
1000
+
1001
+ @ Override
1002
+ public void visit (GeometryDistance geometryDistance ) {
1003
+ visitOldOracleJoinBinaryExpression (geometryDistance , " <-> " );
1004
+ }
999
1005
}
Original file line number Diff line number Diff line change 30
30
import net .sf .jsqlparser .expression .operators .relational .ExistsExpression ;
31
31
import net .sf .jsqlparser .expression .operators .relational .ExpressionList ;
32
32
import net .sf .jsqlparser .expression .operators .relational .FullTextSearch ;
33
+ import net .sf .jsqlparser .expression .operators .relational .GeometryDistance ;
33
34
import net .sf .jsqlparser .expression .operators .relational .GreaterThan ;
34
35
import net .sf .jsqlparser .expression .operators .relational .GreaterThanEquals ;
35
36
import net .sf .jsqlparser .expression .operators .relational .InExpression ;
@@ -586,4 +587,8 @@ public void visit(IsDistinctExpression isDistinctExpression) {
586
587
isDistinctExpression .getRightExpression ().accept (this );
587
588
}
588
589
590
+ @ Override
591
+ public void visit (GeometryDistance geometryDistance ) {
592
+ visitOldOracleJoinBinaryExpression (geometryDistance , " <-> " );
593
+ }
589
594
}
Original file line number Diff line number Diff line change @@ -3112,6 +3112,8 @@ Expression RegularCondition() #RegularCondition:
3112
3112
| <OP_CONCAT> { result = new JsonOperator("||"); }
3113
3113
| "-" { result = new JsonOperator("-"); }
3114
3114
| "-#" { result = new JsonOperator("-#"); }
3115
+ | <-> { result = new GeometryDistance("<->"); }
3116
+ | <#> { result = new GeometryDistance("<#>"); }
3115
3117
)
3116
3118
3117
3119
( LOOKAHEAD(2) <K_PRIOR> rightExpression=ComparisonItem() { oraclePrior = EqualsTo.ORACLE_PRIOR_END; }
Original file line number Diff line number Diff line change @@ -2819,6 +2819,12 @@ public void testNotEqualsTo() throws JSQLParserException {
2819
2819
assertSqlCanBeParsedAndDeparsed ("SELECT * FROM foo WHERE a <> b" );
2820
2820
}
2821
2821
2822
+ @ Test
2823
+ public void testGeometryDistance () throws JSQLParserException {
2824
+ assertSqlCanBeParsedAndDeparsed ("SELECT * FROM foo ORDER BY a <-> b" );
2825
+ assertSqlCanBeParsedAndDeparsed ("SELECT * FROM foo ORDER BY a <#> b" );
2826
+ }
2827
+
2822
2828
@ Test
2823
2829
public void testJsonExpression () throws JSQLParserException {
2824
2830
assertSqlCanBeParsedAndDeparsed ("SELECT data->'images'->'thumbnail'->'url' AS thumb FROM instagram" );
You can’t perform that action at this time.
0 commit comments