Hi,

I've found a minor bug and sent the PR [1] with the fix. Similar behavior
is noticed with *or* operator as well (Even after the fix). I have given
the code and the output below for your concern.

// Query: e1 or e2 -> e3

define stream Stream1 (symbol string, price float, volume int);
define stream Stream2 (symbol string, price float, volume int);

@info(name = 'query1')
from e1=Stream1[price > 20] or e2=Stream2[price >30] -> e3=Stream2['IBM' ==
symbol]
select e1.symbol as symbol1, e2.price as price2, e3.price as price3
insert into OutputStream;

// Input
Stream1.send(new Object[]{"WSO2", 55.6f, 100});
Stream2.send(new Object[]{"GOOG", 72.7f, 100});
Stream2.send(new Object[]{"IBM", 4.7f, 100});

// Output
Event{timestamp=1494203709496, data=[WSO2, null, 4.7], isExpired=false}
Event{timestamp=1494203709496, data=[WSO2, null, 4.7], isExpired=false}

If it is also a bug, please do let me know without merging the PR. I will
fix it under the same PR.

[1] https://github.com/wso2/siddhi/pull/345


Thanks & Regards,
Gobinath

On Sun, May 7, 2017 at 2:06 PM, Gobinath <[email protected]> wrote:

> Sure. I'll check the issue and send a separate PR with the fix.
>
>
> Thanks & Regards,
> Gobinath
>
> On Sun, May 7, 2017 at 1:51 PM, Sriskandarajah Suhothayan <[email protected]>
> wrote:
>
>> Yes, it looks like a bug to me, can you check why it's happening.
>>
>> Regards
>> Suho
>>
>> On Sun, May 7, 2017 at 8:56 PM, Nirmal Fernando <[email protected]> wrote:
>>
>>> Looks like a bug to me. I would expect only 1 event.
>>>
>>> On Sun, May 7, 2017 at 8:49 PM, Gobinath <[email protected]> wrote:
>>>
>>>> Hi,
>>>>
>>>> Thanks for accepting my proposal. I have a question regarding the
>>>> behavior of *and* in a pattern.
>>>>
>>>> // Query: e1 and e2 -> e3
>>>>
>>>> define stream Stream1 (symbol string, price float, volume int);
>>>> define stream Stream2 (symbol string, price float, volume int);
>>>>
>>>> @info(name = 'query1')
>>>> from e1=Stream1[price > 50.0f] and e2=Stream2['IBM' == symbol] ->
>>>> e3=Stream2[price > 20]
>>>> select e1.symbol as symbol1, e2.price as price2, e3.price as price3
>>>> insert into OutputStream;
>>>>
>>>> // Input
>>>> Stream1.send(new Object[]{"GOOGLE", 72.7f, 100});
>>>> Stream2.send(new Object[]{"IBM", 4.7f, 100});
>>>> Stream2.send(new Object[]{"WSO2", 55.6f, 100});
>>>>
>>>>
>>>> // Output
>>>> Event{timestamp=1494169305631, data=[GOOGLE, 4.7, 55.6],
>>>> isExpired=false}
>>>> Event{timestamp=1494169305631, data=[GOOGLE, 4.7, 55.6],
>>>> isExpired=false}
>>>>
>>>> Is this the expected output?. Note that the output contains two exactly
>>>> similar events but the pattern *e1 -> e2 and e3* outputs a single
>>>> event [1].
>>>>
>>>> [1] https://github.com/wso2/siddhi/blob/master/modules/siddh
>>>> i-core/src/test/java/org/wso2/siddhi/core/query/pattern/Logi
>>>> calPatternTestCase.java#L98
>>>>
>>>>
>>>> Thanks & Regards,
>>>> Gobinath
>>>>
>>>> On Mon, Apr 17, 2017 at 7:58 AM, Gobinath <[email protected]> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> Please see the PR at [1]. Please do not merge it.
>>>>>
>>>>>
>>>>> Thanks & Regards,
>>>>> Gobinath
>>>>>
>>>>> [1] https://github.com/wso2/siddhi/pull/313
>>>>>
>>>>>
>>>>> On Mon, Apr 17, 2017 at 7:44 AM, Sriskandarajah Suhothayan <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Based on first look, it looks great.
>>>>>>
>>>>>> Can you send it as a PR so I can see the exact implementations and
>>>>>> also give comments.
>>>>>>
>>>>>> Regards
>>>>>> Suho
>>>>>>
>>>>>> On Mon, Apr 17, 2017 at 5:30 AM, Gobinath <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> A prototype is implemented and available at [1]. Currently the query
>>>>>>> support for absent patterns and two simple pattern identifications (e1
>>>>>>> -> not e2 and not e1 -> e2) are implemented. Please have a look at
>>>>>>> the unit test [2] to get the idea. Class names and variable names are
>>>>>>> subject to change (will finalize later). I am waiting for your feedback.
>>>>>>>
>>>>>>>
>>>>>>> Thanks & Regards,
>>>>>>> Gobinath
>>>>>>>
>>>>>>>
>>>>>>> [1] https://github.com/lgobinath/siddhi/tree/feature-absent-
>>>>>>> event-pattern
>>>>>>> [2] https://github.com/lgobinath/siddhi/blob/feature-absent-
>>>>>>> event-pattern/modules/siddhi-core/src/test/java/org/wso2/sid
>>>>>>> dhi/core/query/pattern/EveryAbsentPatternTestCase.java
>>>>>>>
>>>>>>>
>>>>>>> On Fri, Mar 31, 2017 at 6:28 AM, Gobinath <[email protected]>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi all,
>>>>>>>>
>>>>>>>> Thanks Suho for your feedback. I have made the changes based on
>>>>>>>> your suggestions and submitted the final proposal. Started working on a
>>>>>>>> prototype and will update you soon with the results.
>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks & Regards,
>>>>>>>> Gobinath
>>>>>>>>
>>>>>>>> On Thu, Mar 30, 2017 at 12:28 PM, Sriskandarajah Suhothayan <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> I have given some feedback on the gsoc site.
>>>>>>>>>
>>>>>>>>> Suho
>>>>>>>>>
>>>>>>>>> On Mon, Mar 27, 2017 at 9:03 PM, Gobinath <[email protected]>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hi all,
>>>>>>>>>>
>>>>>>>>>> Thanks. I have shared the draft of my proposal titled
>>>>>>>>>> "Non-Occurrence of Events for Siddhi Patterns" with WSO2 through GSoC
>>>>>>>>>> dashboard and requesting your feedback on this.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks & Regards,
>>>>>>>>>> Gobinath
>>>>>>>>>>
>>>>>>>>>> On Wed, Mar 15, 2017 at 1:30 PM, Sriskandarajah Suhothayan <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> Thanks for the GSoC idea, I hope this will be a good way to
>>>>>>>>>>> improve the Siddhi language and make it more powerfull.
>>>>>>>>>>> If time permits we can also add other use-cases of patterns &
>>>>>>>>>>> sequences and improve it further.
>>>>>>>>>>>
>>>>>>>>>>> Since you are still not a commuter I hope these contributions
>>>>>>>>>>> will help you be a committer to Siddhi as well :)
>>>>>>>>>>> I'll make this as a formal idea, do work on a proposal as well.
>>>>>>>>>>>
>>>>>>>>>>> Regards
>>>>>>>>>>> Suho
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Wed, Mar 15, 2017 at 6:09 PM, Gobinath <[email protected]>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi team,
>>>>>>>>>>>>
>>>>>>>>>>>> This is Gobinath a former software engineer at WSO2 currently
>>>>>>>>>>>> doing masters at Western University. This time I plan to do GSoC 
>>>>>>>>>>>> with WSO2
>>>>>>>>>>>> and this is the basic idea of what I have discussed with Suho.
>>>>>>>>>>>> Based on Suho's suggestion, I come up with a proposal to
>>>>>>>>>>>> implement detecting non-occurring events using Siddhi patterns. 
>>>>>>>>>>>> The current
>>>>>>>>>>>> Siddhi patterns allow identifying the patterns that present.
>>>>>>>>>>>>
>>>>>>>>>>>> See an example:
>>>>>>>>>>>> from every e1=Stream1[price>20] -> e2=Stream2[price>e1.price]
>>>>>>>>>>>> within 1 sec
>>>>>>>>>>>> select e1.symbol as symbol1, e2.symbol as symbol2
>>>>>>>>>>>> insert into OutputStream;
>>>>>>>>>>>>
>>>>>>>>>>>> Detecting the absence of a pattern is not natively supported by
>>>>>>>>>>>> Siddhi patterns for the moment. In other words, identifying 
>>>>>>>>>>>> event_a not
>>>>>>>>>>>> followed by event_b within 2 minutes is not possible using the 
>>>>>>>>>>>> current
>>>>>>>>>>>> patterns implementation (Note that a time frame is required 
>>>>>>>>>>>> otherwise we
>>>>>>>>>>>> have to wait for infinite time to say event_b has not arrived). 
>>>>>>>>>>>> The current
>>>>>>>>>>>> workaround [1] to detect non-delivered items is shown below:
>>>>>>>>>>>>
>>>>>>>>>>>> from arrivals_stream#window.time(2 minutes)
>>>>>>>>>>>> select *
>>>>>>>>>>>> insert expired events into overdue_deliveries_stream;
>>>>>>>>>>>>
>>>>>>>>>>>> from every arrivalEvent = arrivals_stream ->
>>>>>>>>>>>> deliveryEvent = deliveries_stream[arrivalEvent.trackingId ==
>>>>>>>>>>>> trackingId]
>>>>>>>>>>>>     or overdue_delivery = 
>>>>>>>>>>>> overdue_deliveries_stream[arrivalEvent.trackingId
>>>>>>>>>>>> == trackingId]
>>>>>>>>>>>> select arrivalEvent.trackingId as trackingId,
>>>>>>>>>>>> arrivalEvent.customerName as customerName, 
>>>>>>>>>>>> arrivalEvent.telephoneNo as
>>>>>>>>>>>> telephoneNo, deliveryEvent.trackingId as deliveryId
>>>>>>>>>>>> insert into filter_stream;
>>>>>>>>>>>>
>>>>>>>>>>>> from filter_stream [ (deliveryId is null)]
>>>>>>>>>>>> select trackingId, customerName, telephoneNo
>>>>>>>>>>>> insert into alert_stream;
>>>>>>>>>>>>
>>>>>>>>>>>> This solution requires a time window and it is inefficient if
>>>>>>>>>>>> we are interested only on one occurrence of such a pattern (In 
>>>>>>>>>>>> other words
>>>>>>>>>>>> same query without every keyword). Further, the query is more 
>>>>>>>>>>>> complex and
>>>>>>>>>>>> not user-friendly.
>>>>>>>>>>>>
>>>>>>>>>>>> If we provide patterns to detect absence of patterns, the above
>>>>>>>>>>>> query can be rewritten as below:
>>>>>>>>>>>>
>>>>>>>>>>>> from every arrivalEvent = arrivals_stream ->  (not
>>>>>>>>>>>> deliveries_stream[arrivalEvent.trackingId == trackingId]
>>>>>>>>>>>> within 2 min )
>>>>>>>>>>>> select arrivalEvent.trackingId as trackingId,
>>>>>>>>>>>> arrivalEvent.customerName as customerName, 
>>>>>>>>>>>> arrivalEvent.telephoneNo as
>>>>>>>>>>>> telephoneNo
>>>>>>>>>>>> insert into alert_stream;
>>>>>>>>>>>>
>>>>>>>>>>>> As you can see, we can use the existing language components
>>>>>>>>>>>> like not & within. This can be achieved by extending the existing
>>>>>>>>>>>> StreamPreStateProcessors and StreamPostStateProcessors with an 
>>>>>>>>>>>> internal
>>>>>>>>>>>> timer so that they can expire their internal list of events based 
>>>>>>>>>>>> on the
>>>>>>>>>>>> time limit. It is somewhat similar to time windows but the 
>>>>>>>>>>>> processor can
>>>>>>>>>>>> turn off the timer and ignore the events if it is a one time 
>>>>>>>>>>>> pattern
>>>>>>>>>>>> detection.
>>>>>>>>>>>>
>>>>>>>>>>>> I hope it gives the basic idea and I am waiting for your
>>>>>>>>>>>> suggestions and feedback.
>>>>>>>>>>>>
>>>>>>>>>>>> [1] https://docs.wso2.com/display/CEP400/Sample+0111+-+Detec
>>>>>>>>>>>> ting+non-occurrences+with+Patterns
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks & Regards,
>>>>>>>>>>>> Gobinath
>>>>>>>>>>>> --
>>>>>>>>>>>> *Gobinath** Loganathan*
>>>>>>>>>>>> Graduate Student,
>>>>>>>>>>>> Electrical and Computer Engineering,
>>>>>>>>>>>> Western University.
>>>>>>>>>>>> Email  : [email protected]
>>>>>>>>>>>> Mobile : (+1) 416-895-0721
>>>>>>>>>>>> Blog    : javahelps.com <http://www.javahelps.com/>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>>
>>>>>>>>>>> *S. Suhothayan*
>>>>>>>>>>> Associate Director / Architect & Team Lead of WSO2 Complex
>>>>>>>>>>> Event Processor
>>>>>>>>>>> *WSO2 Inc. *http://wso2.com
>>>>>>>>>>> * <http://wso2.com/>*
>>>>>>>>>>> lean . enterprise . middleware
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> *cell: (+94) 779 756 757 <077%20975%206757> | blog:
>>>>>>>>>>> http://suhothayan.blogspot.com/ 
>>>>>>>>>>> <http://suhothayan.blogspot.com/>twitter:
>>>>>>>>>>> http://twitter.com/suhothayan <http://twitter.com/suhothayan> | 
>>>>>>>>>>> linked-in:
>>>>>>>>>>> http://lk.linkedin.com/in/suhothayan 
>>>>>>>>>>> <http://lk.linkedin.com/in/suhothayan>*
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> *Gobinath** Loganathan*
>>>>>>>>>> Graduate Student,
>>>>>>>>>> Electrical and Computer Engineering,
>>>>>>>>>> Western University.
>>>>>>>>>> Email  : [email protected]
>>>>>>>>>> Mobile : (+1) 416-895-0721
>>>>>>>>>> Blog    : javahelps.com <http://www.javahelps.com/>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>>
>>>>>>>>> *S. Suhothayan*
>>>>>>>>> Associate Director / Architect
>>>>>>>>> *WSO2 Inc. *http://wso2.com
>>>>>>>>> * <http://wso2.com/>*
>>>>>>>>> lean . enterprise . middleware
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> *cell: (+94) 779 756 757 <077%20975%206757> | blog:
>>>>>>>>> http://suhothayan.blogspot.com/ 
>>>>>>>>> <http://suhothayan.blogspot.com/>twitter:
>>>>>>>>> http://twitter.com/suhothayan <http://twitter.com/suhothayan> | 
>>>>>>>>> linked-in:
>>>>>>>>> http://lk.linkedin.com/in/suhothayan 
>>>>>>>>> <http://lk.linkedin.com/in/suhothayan>*
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> *Gobinath** Loganathan*
>>>>>>>> Graduate Student,
>>>>>>>> Electrical and Computer Engineering,
>>>>>>>> Western University.
>>>>>>>> Email  : [email protected]
>>>>>>>> Mobile : (+1) 416-895-0721
>>>>>>>> Blog    : javahelps.com <http://www.javahelps.com/>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> *Gobinath** Loganathan*
>>>>>>> Graduate Student,
>>>>>>> Electrical and Computer Engineering,
>>>>>>> Western University.
>>>>>>> Email  : [email protected]
>>>>>>> Mobile : (+1) 416-895-0721
>>>>>>> Blog    : javahelps.com <http://www.javahelps.com/>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>>
>>>>>> *S. Suhothayan*
>>>>>> Associate Director / Architect
>>>>>> *WSO2 Inc. *http://wso2.com
>>>>>> * <http://wso2.com/>*
>>>>>> lean . enterprise . middleware
>>>>>>
>>>>>>
>>>>>> *cell: (+94) 779 756 757 <+94%2077%20975%206757> | blog:
>>>>>> http://suhothayan.blogspot.com/ <http://suhothayan.blogspot.com/>twitter:
>>>>>> http://twitter.com/suhothayan <http://twitter.com/suhothayan> | 
>>>>>> linked-in:
>>>>>> http://lk.linkedin.com/in/suhothayan 
>>>>>> <http://lk.linkedin.com/in/suhothayan>*
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *Gobinath** Loganathan*
>>>>> Graduate Student,
>>>>> Electrical and Computer Engineering,
>>>>> Western University.
>>>>> Email  : [email protected]
>>>>> Mobile : (+1) 416-895-0721
>>>>> Blog    : javahelps.com <http://www.javahelps.com/>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> *Gobinath** Loganathan*
>>>> Graduate Student,
>>>> Electrical and Computer Engineering,
>>>> Western University.
>>>> Email  : [email protected]
>>>> Mobile : (+1) 416-895-0721
>>>> Blog    : javahelps.com <http://www.javahelps.com/>
>>>>
>>>>
>>>> _______________________________________________
>>>> Dev mailing list
>>>> [email protected]
>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>
>>>>
>>>
>>>
>>> --
>>>
>>> Thanks & regards,
>>> Nirmal
>>>
>>> Technical Lead, WSO2 Inc.
>>> Mobile: +94715779733 <071%20577%209733>
>>> Blog: http://nirmalfdo.blogspot.com/
>>>
>>>
>>>
>>
>>
>> --
>>
>> *S. Suhothayan*
>> Associate Director / Architect
>> *WSO2 Inc. *http://wso2.com
>> * <http://wso2.com/>*
>> lean . enterprise . middleware
>>
>>
>> *cell: (+94) 779 756 757 | blog: http://suhothayan.blogspot.com/
>> <http://suhothayan.blogspot.com/>twitter: http://twitter.com/suhothayan
>> <http://twitter.com/suhothayan> | linked-in:
>> http://lk.linkedin.com/in/suhothayan <http://lk.linkedin.com/in/suhothayan>*
>>
>
>
>
> --
> *Gobinath** Loganathan*
> Graduate Student,
> Electrical and Computer Engineering,
> Western University.
> Email  : [email protected]
> Mobile : (+1) 416-895-0721
> Blog    : javahelps.com <http://www.javahelps.com/>
>
>



-- 
*Gobinath** Loganathan*
Graduate Student,
Electrical and Computer Engineering,
Western University.
Email  : [email protected]
Mobile : (+1) 416-895-0721
Blog    : javahelps.com <http://www.javahelps.com/>
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to