siddhi gpl выполнение функции расстояния географического расширения выдает ошибку типа данных

Я пытаюсь создать приложение сиддхи, в котором он добавляет вывод, когда человек находится рядом с определенными предустановленными местоположениями. Эти местоположения хранятся в базе данных. На данный момент информация отправлена ​​почтальоном.

Но я все время получаю сообщение об ошибке, что тип данных не является «двойным». Я даже проверил детали таблицы, и тип данных в таблице mysql установлен на удвоение.

Ниже приведены сведения о коде сиддхи и ошибке. Кто-нибудь может помочь мне.

расположение расширения siddhi: https://wso2-extensions.github.io/siddhi-gpl-execution-geo/api/latest/

Код сиддхи:

@App:name('ShipmentHistoryApp')

@source(type = 'http', receiver.url='http://localhost:5008/RawMaterials', @map(type = 'json'))
define stream WalkingStream(latitude DOUBLE, longitude DOUBLE, device_id string);

@store(type='rdbms', jdbc.url="jdbc:mysql://127.0.0.1:3306/SweetFactoryDB", username="root", password="root" , jdbc.driver.name="com.mysql.jdbc.Driver")
define table Offers(c string, offer string, latitude DOUBLE, longitude DOUBLE);

@sink(type='log')
define stream SetLocation(a string, b string,one bool, two bool, dis double);

@sink(type='log', prefix='Only log')
define stream info(one bool, two bool);

from WalkingStream as w
join SetLocation as o
select o.a, o.b, instanceOfDouble(o.latitude) as one, instanceOfDouble(o.longitude) as two, geo:distance(w.latitude,w.longitude,o.latitude,o.longitude) as dis insert into Output;  

Я получаю эту ошибку при попытке определить расстояние между двумя точками.

org.wso2.siddhi.core.exception.SiddhiAppRuntimeException: Invalid input given to geo:distance() function. Third argument should be double
    at org.wso2.extension.siddhi.gpl.execution.geo.function.GeoDistanceFunctionExecutor.execute(GeoDistanceFunctionExecutor.java:123)
    at org.wso2.siddhi.core.executor.function.FunctionExecutor.execute(FunctionExecutor.java:109)
    at org.wso2.siddhi.core.query.selector.attribute.processor.AttributeProcessor.process(AttributeProcessor.java:41)
    at org.wso2.siddhi.core.query.selector.QuerySelector.processNoGroupBy(QuerySelector.java:145)
    at org.wso2.siddhi.core.query.selector.QuerySelector.process(QuerySelector.java:87)
    at org.wso2.siddhi.core.query.input.stream.join.JoinProcessor.process(JoinProcessor.java:110)
    at org.wso2.siddhi.core.query.processor.stream.window.LengthWindowProcessor.process(LengthWindowProcessor.java:135)
    at org.wso2.siddhi.core.query.processor.stream.window.WindowProcessor.processEventChunk(WindowProcessor.java:66)
    at org.wso2.siddhi.core.query.processor.stream.AbstractStreamProcessor.process(AbstractStreamProcessor.java:123)
    at org.wso2.siddhi.core.query.input.stream.join.JoinProcessor.process(JoinProcessor.java:118)
    at org.wso2.siddhi.core.query.input.ProcessStreamReceiver.processAndClear(ProcessStreamReceiver.java:187)
    at org.wso2.siddhi.core.query.input.ProcessStreamReceiver.process(ProcessStreamReceiver.java:97)
    at org.wso2.siddhi.core.query.input.ProcessStreamReceiver.receive(ProcessStreamReceiver.java:133)
    at org.wso2.siddhi.core.stream.StreamJunction.sendEvent(StreamJunction.java:151)
    at org.wso2.siddhi.core.stream.StreamJunction$Publisher.send(StreamJunction.java:358)
    at org.wso2.siddhi.core.stream.input.InputDistributor.send(InputDistributor.java:34)
    at org.wso2.siddhi.core.stream.input.InputEntryValve.send(InputEntryValve.java:44)
    at org.wso2.siddhi.core.stream.input.InputHandler.send(InputHandler.java:61)
    at org.wso2.siddhi.core.stream.input.source.PassThroughSourceHandler.sendEvent(PassThroughSourceHandler.java:35)
    at org.wso2.siddhi.core.stream.input.source.InputEventHandler.sendEvent(InputEventHandler.java:76)
    at org.wso2.extension.siddhi.map.json.sourcemapper.JsonSourceMapper.mapAndProcess(JsonSourceMapper.java:211)
    at org.wso2.siddhi.core.stream.input.source.SourceMapper.onEvent(SourceMapper.java:132)
    at org.wso2.extension.siddhi.io.http.source.HttpWorkerThread.run(HttpWorkerThread.java:62)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

В качестве альтернативы я также попытался преобразовать широту из таблицы в двойную в запросе.


person dhruv shah    schedule 27.02.2018    source источник
comment
Мои выводы привели меня к stackoverflow.com/questions / 39484771 /. Решено ли это в потоковом процессоре wso2 4.0? Или есть обходной путь.   -  person dhruv shah    schedule 03.03.2018


Ответы (1)


Это может произойти, когда 3-й аргумент функции geo: distance становится нулевым. Можете ли вы проверить, может ли o.latitude стать нулевым?

person Minudika Malshan Gammanpila    schedule 01.03.2018
comment
Привет, я проверил null (ness) o.latitude с помощью: [not (latitude is null or longitude is null)], а также пользовательской функции javascript, которую я написал с if условиями. - person dhruv shah; 03.03.2018