44import com .google .common .reflect .TypeToken ;
55import com .google .gson .Gson ;
66import com .hufudb .openhufu .benchmark .enums .SpatialTableName ;
7- import com .hufudb .openhufu .benchmark .enums .TPCHTableName ;
87import com .hufudb .openhufu .core .table .GlobalTableConfig ;
9- import com .hufudb .openhufu .data .schema .Schema ;
108import com .hufudb .openhufu .data .storage .DataSet ;
119import com .hufudb .openhufu .data .storage .DataSetIterator ;
12- import com .hufudb .openhufu .expression .AggFuncType ;
1310import com .hufudb .openhufu .expression .ExpressionFactory ;
1411import com .hufudb .openhufu .owner .user .OpenHuFuUser ;
15- import com .hufudb .openhufu .plan .BinaryPlan ;
1612import com .hufudb .openhufu .plan .LeafPlan ;
1713import com .hufudb .openhufu .proto .OpenHuFuData .ColumnType ;
1814import com .hufudb .openhufu .proto .OpenHuFuData .Modifier ;
19- import com .hufudb .openhufu .proto .OpenHuFuPlan ;
20- import com .hufudb .openhufu .proto .OpenHuFuPlan .Collation ;
21- import com .hufudb .openhufu .proto .OpenHuFuPlan .JoinCondition ;
22- import com .hufudb .openhufu .proto .OpenHuFuPlan .JoinType ;
15+ import com .hufudb .openhufu .proto .OpenHuFuPlan .Expression ;
2316import org .junit .BeforeClass ;
2417import org .junit .Test ;
2518import org .slf4j .Logger ;
@@ -42,13 +35,13 @@ public static void setUp() throws IOException {
4235
4336 List <String > endpoints =
4437 new Gson ().fromJson (Files .newBufferedReader (
45- Path .of (OpenHuFuBenchmark .class .getClassLoader ().getResource ("spatialEndpoints .json" )
38+ Path .of (OpenHuFuBenchmark .class .getClassLoader ().getResource ("spatial-endpoints .json" )
4639 .getPath ())),
4740 new TypeToken <ArrayList <String >>() {
4841 }.getType ());
4942 List <GlobalTableConfig > globalTableConfigs =
5043 new Gson ().fromJson (Files .newBufferedReader (
51- Path .of (OpenHuFuBenchmark .class .getClassLoader ().getResource ("spatialTables .json" )
44+ Path .of (OpenHuFuBenchmark .class .getClassLoader ().getResource ("spatial-tables .json" )
5245 .getPath ())),
5346 new TypeToken <ArrayList <GlobalTableConfig >>() {
5447 }.getType ());
@@ -84,4 +77,31 @@ public void testSelect() {
8477 dataset .close ();
8578 }
8679
80+ @ Test
81+ public void testSpatialDistance () {
82+ String tableName = SpatialTableName .SPATIAL .getName ();
83+ LeafPlan plan = new LeafPlan ();
84+ plan .setTableName (tableName );
85+ plan .setSelectExps (ExpressionFactory .createInputRef (user .getOpenHuFuTableSchema (tableName ).getSchema ()));
86+ // select * from spatial where DWithin(S_POINT, Point(1404050.076199729, -4762163.267865509), 0.1);
87+ Expression pointFunc =
88+ ExpressionFactory .createScalarFunc (ColumnType .POINT , "Point" ,
89+ ImmutableList .of (ExpressionFactory .createLiteral (ColumnType .DOUBLE , 1404050.076199729 ),
90+ ExpressionFactory .createLiteral (ColumnType .DOUBLE , -4762163.267865509 )));
91+ Expression dwithinFunc =
92+ ExpressionFactory .createScalarFunc (ColumnType .BOOLEAN , "DWithin" ,
93+ ImmutableList .of (ExpressionFactory .createInputRef (1 , ColumnType .POINT , Modifier .PUBLIC ),
94+ pointFunc , ExpressionFactory .createLiteral (ColumnType .DOUBLE , 0.1 )));
95+ plan .setWhereExps (ImmutableList .of (dwithinFunc ));
96+ DataSet dataset = user .executeQuery (plan );
97+ DataSetIterator it = dataset .getIterator ();
98+ int count = 0 ;
99+ assertEquals (2 , it .size ());
100+ while (it .next ()) {
101+ assertEquals (0L , it .get (0 ));
102+ count ++;
103+ }
104+ assertEquals (1 , count );
105+ }
106+
87107}
0 commit comments