Spatio-Temporal-Lab / start-db-achive

GNU General Public License v3.0
15 stars 9 forks source link

部分字段类型的等值查询结果有误 #288

Closed ihongyang closed 2 years ago

ihongyang commented 2 years ago

目前只有 bool、geometry、point、linestring、multiPoint、multiLineString、trajectory、roadSegment 这8个字段类型在不加where条件的情况下可以查询出结果, 但是加上where条件后,查询都报错了,只有multiLineString类型可以正常返回结果

示例SQL create table t_bool (bool7 bool); create table t_boolean (boolean8 boolean); create table t_geometry (geometry12 geometry); create table t_point (point13 point); create table t_linestring (linestring14 linestring); create table t_MultiPoint (MultiPoint16 MultiPoint); create table t_MultiLineString (MultiLineString17 MultiLineString); create table t_trajectory (trajectory20 trajectory); create table t_roadSegment (roadSegment21 roadSegment);

insert into t_bool values (true); insert into t_boolean values (false); insert into t_geometry values (st_GeomFromWkt("Point(10 20)")); insert into t_point values (st_PointFromWkt("Point(10 20)")); insert into t_linestring values (st_LineStringFromWkt("LINESTRING (1 1, 2 2, 3 3)")); insert into t_MultiPoint values (st_mPointFromWkt("MULTIPOINT(3.5 5.6, 4.8 10.5)")); insert into t_MultiLineString values (st_mLineStringFromWkt("MULTILINESTRING((3 4,10 50,20 25),(-5 -8,-10 -8,-15 -4))")); insert into t_trajectory values (st_traj_fromGeoJSON( '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"time":"2018-10-09 07:30:41.0"},"geometry":{"type":"Point","coordinates":[108.93430687732173,34.2154503607423]}},{"type":"Feature","properties":{"time":"2018-10-09 07:30:56.0"},"geometry":{"type":"Point","coordinates":[108.93428701026465,34.21445074385308]}}],"properties":{"oid":"9ae8398a7748c9c5ed8ad60f7c5436d7","tid":"9ae8398a7748c9c5ed8ad60f7c5436d72018-10-09 07:30:41.0"}}' )); insert into t_roadSegment values (st_rs_fromGeoJSON('{"type":"Feature","properties":{"endId":70832,"level":3,"startId":70831,"rsId":100320,"speedLimit":50.0,"lengthInMeter":50.57964091335451,"direction":1},"geometry":{"type":"LineString","coordinates":[[108.88093234592,34.1634619140625],[108.881090494792,34.1630268012153]]}}'));

select from t_bool; select from t_boolean; select from t_geometry; select from t_point; select from t_linestring; select from t_MultiPoint; select from t_MultiLineString; select from t_trajectory; select * from t_roadSegment;

select from t_bool where bool7 = true; select from t_boolean where boolean8 = false; select from t_geometry where geometry12 = st_GeomFromWkt("Point(10 20)"); select from t_point where point13 = st_PointFromWkt("Point(10 20)"); select from t_linestring where linestring14 = st_LineStringFromWkt("LINESTRING (1 1, 2 2, 3 3)"); select from t_MultiPoint where multipoint16 = st_mPointFromWkt("MULTIPOINT(3.5 5.6, 4.8 10.5)"); select from t_MultiLineString MultiLineString17 = where st_mLineStringFromWkt("MULTILINESTRING((3 4,10 50,20 25),(-5 -8,-10 -8,-15 -4))"); select from t_trajectory where trajectory20 = st_traj_fromGeoJSON( '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"time":"2018-10-09 07:30:41.0"},"geometry":{"type":"Point","coordinates":[108.93430687732173,34.2154503607423]}},{"type":"Feature","properties":{"time":"2018-10-09 07:30:56.0"},"geometry":{"type":"Point","coordinates":[108.93428701026465,34.21445074385308]}}],"properties":{"oid":"9ae8398a7748c9c5ed8ad60f7c5436d7","tid":"9ae8398a7748c9c5ed8ad60f7c5436d72018-10-09 07:30:41.0"}}' ); select * from t_roadSegment where roadSegment21 = st_rs_fromGeoJSON('{"type":"Feature","properties":{"endId":70832,"level":3,"startId":70831,"rsId":100320,"speedLimit":50.0,"lengthInMeter":50.57964091335451,"direction":1},"geometry":{"type":"LineString","coordinates":[[108.88093234592,34.1634619140625],[108.881090494792,34.1630268012153]]}}');

image image

ihongyang commented 2 years ago

boolean类型的等值查询已经可以正常返回了,其他类型仍报错 image

zaiyuan-ljw commented 2 years ago

这部分大部分已经修复完成了,其原因在于上层我们自定义的UDF,到了Geomesa那一层,ECQL无法识别。前面已经可以了,但是轨迹和路网还需要思考一下怎么支持。

ihongyang commented 2 years ago

重新复测了下, 现在boolean和multiLineString类型可以正常返回等值查询结果, 其他的geometry、point、linestring、multiPoint、trajectory、roadSegment,这六种还不行, @zaiyuan-ljw 辛苦钧文有时间看下 image