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 {
188188 void visit (AllValue allValue );
189189
190190 void visit (IsDistinctExpression isDistinctExpression );
191+
192+ void visit (GeometryDistance geometryDistance );
191193}
Original file line number Diff line number Diff line change @@ -634,7 +634,12 @@ public void visit(ConnectByRootOperator connectByRootOperator) {
634634 public void visit (OracleNamedFunctionParameter oracleNamedFunctionParameter ) {
635635 oracleNamedFunctionParameter .getExpression ().accept (this );
636636 }
637-
637+
638+ @ Override
639+ public void visit (GeometryDistance geometryDistance ) {
640+ visitBinaryExpression (geometryDistance );
641+ }
642+
638643 public void visit (ColumnDefinition columnDefinition ) {
639644 columnDefinition .accept (this );
640645 }
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) {
10311031 public void visit (AlterSystemStatement alterSystemStatement ) {
10321032 // no tables involved in this statement
10331033 }
1034+
1035+ @ Override
1036+ public void visit (GeometryDistance geometryDistance ) {
1037+ visitBinaryExpression (geometryDistance );
1038+ }
10341039}
Original file line number Diff line number Diff line change 3434import net .sf .jsqlparser .expression .operators .relational .ExistsExpression ;
3535import net .sf .jsqlparser .expression .operators .relational .ExpressionList ;
3636import net .sf .jsqlparser .expression .operators .relational .FullTextSearch ;
37+ import net .sf .jsqlparser .expression .operators .relational .GeometryDistance ;
3738import net .sf .jsqlparser .expression .operators .relational .GreaterThan ;
3839import net .sf .jsqlparser .expression .operators .relational .GreaterThanEquals ;
3940import net .sf .jsqlparser .expression .operators .relational .InExpression ;
@@ -996,4 +997,9 @@ public void visit(IsDistinctExpression isDistinctExpression) {
996997 isDistinctExpression .getStringExpression () +
997998 isDistinctExpression .getRightExpression ());
998999 }
1000+
1001+ @ Override
1002+ public void visit (GeometryDistance geometryDistance ) {
1003+ visitOldOracleJoinBinaryExpression (geometryDistance , " <-> " );
1004+ }
9991005}
Original file line number Diff line number Diff line change 3030import net .sf .jsqlparser .expression .operators .relational .ExistsExpression ;
3131import net .sf .jsqlparser .expression .operators .relational .ExpressionList ;
3232import net .sf .jsqlparser .expression .operators .relational .FullTextSearch ;
33+ import net .sf .jsqlparser .expression .operators .relational .GeometryDistance ;
3334import net .sf .jsqlparser .expression .operators .relational .GreaterThan ;
3435import net .sf .jsqlparser .expression .operators .relational .GreaterThanEquals ;
3536import net .sf .jsqlparser .expression .operators .relational .InExpression ;
@@ -586,4 +587,8 @@ public void visit(IsDistinctExpression isDistinctExpression) {
586587 isDistinctExpression .getRightExpression ().accept (this );
587588 }
588589
590+ @ Override
591+ public void visit (GeometryDistance geometryDistance ) {
592+ visitOldOracleJoinBinaryExpression (geometryDistance , " <-> " );
593+ }
589594}
Original file line number Diff line number Diff line change @@ -3112,6 +3112,8 @@ Expression RegularCondition() #RegularCondition:
31123112 | <OP_CONCAT> { result = new JsonOperator("||"); }
31133113 | "-" { result = new JsonOperator("-"); }
31143114 | "-#" { result = new JsonOperator("-#"); }
3115+ | <-> { result = new GeometryDistance("<->"); }
3116+ | <#> { result = new GeometryDistance("<#>"); }
31153117 )
31163118
31173119 ( 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 {
28192819 assertSqlCanBeParsedAndDeparsed ("SELECT * FROM foo WHERE a <> b" );
28202820 }
28212821
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+
28222828 @ Test
28232829 public void testJsonExpression () throws JSQLParserException {
28242830 assertSqlCanBeParsedAndDeparsed ("SELECT data->'images'->'thumbnail'->'url' AS thumb FROM instagram" );
You can’t perform that action at this time.
0 commit comments