This does sound like my idea of fun, but unfortunately I won't have the time to contribute in the near future. I'll keep this on my radar though. I also shared this message with all the students in our research group and I wouldn't be surprised if there was someone willing to jump in. Thanks for keeping this moving Julian!
-- Michael Mior [email protected] Le lun. 23 juil. 2018 à 13:54, Julian Hyde <[email protected]> a écrit : > > For quite a while we have had partial support for MATCH_RECOGNIZE. We support > it in the parser and validator, but there is no runtime implementation. It’s > a shame, because MATCH_RECOGNIZE is an incredibly powerful SQL feature for > both traditional SQL (it’s in Oracle 12c) and for continuous query (aka > complex event processing - CEP). > > I figure it’s time to change that. My plan is to implement it incrementally, > getting simple queries working to start with, then allow people to add more > complex queries. > > In a dev branch [1], I’ve added a method Enumerables.match[2]. The idea is > that if you supply an Enumerable of input data, a finite state machine to > figure out when a sequence of rows makes a match (represented by a transition > function: (state, row) -> state), and a function to convert a matched set of > rows to a set of output rows. The match method is fairly straightforward, and > I almost have it finished. > > The complexity is in generating the finite state machine, emitter function, > and so forth. > > Can someone help me with this task? If your idea of fun is implementing > database algorithms, this is about as much fun as it gets. You learned about > finite state machines in college - this is your chance to actually write one! > > This might be a good joint project with the Flink community. I know Flink are > thinking of implementing CEP, and the algorithm we write here could be shared > with Flink (for use via Flink SQL or via the Flink API). > > Julian > > [1] https://github.com/julianhyde/calcite/commits/1935-match-recognize > <https://github.com/julianhyde/calcite/commits/1935-match-recognize> > > [2] > https://github.com/julianhyde/calcite/commit/4dfaf1bbee718aa6694a8ce67d829c32d04c7e87#diff-8a97a64204db631471c563df7551f408R73 > > <https://github.com/julianhyde/calcite/commit/4dfaf1bbee718aa6694a8ce67d829c32d04c7e87#diff-8a97a64204db631471c563df7551f408R73>
