Thank you Alieh, After discussion with Matthias, we decide use oldTimeFrom and oldTimeTo(these two will Deprecated soom) to implement withWindowStartRange() and use timeFrom and timeTo to implement withAllKey() and withKeyRange(), I will update the KIP.
Sincerely, Hanyu On Sun, Dec 3, 2023 at 3:11 PM Alieh Saeedi <asae...@confluent.io.invalid> wrote: > Thanks, Hanyu, for the KIP and all the updates. > I just do not understand the purpose of defining new time ranges > (`newTimeFrom`, `newTimeTo`). Why don't we simply re-use the existing time > range variables? > > Bests, > Alieh > > On Thu, Nov 30, 2023 at 8:34 PM Hanyu (Peter) Zheng > <pzh...@confluent.io.invalid> wrote: > > > new KIP link: > > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-997%3A++update+WindowRangeQuery+and+unify+WindowKeyQuery+and+WindowRangeQuery > > > > On Wed, Nov 29, 2023 at 10:12 PM Hanyu (Peter) Zheng < > pzh...@confluent.io> > > wrote: > > > > > Thank you Bruno, > > > 1. Thank you for the notification. I have updated the ticket link > > > accordingly. > > > 2. Certainly, I'll update the KIP name. Should I initiate a new > > discussion > > > for it, because if I change the name, the link will change. > > > 3. Understood, I will add that to the KIP. > > > 4. I propose we accept both > > > `WindowRangeQuery.withAllKeys().fromTime(time1).toTime(time2)` and > > > `WindowRangeQuery.withKeyRange(key1, > > key2).fromTime(time1).toTime(time2)`, > > > while also reusing the existing `withKey` method. > > > 5. Following a discussion with Matthias, we've decided to defer the > > > implementation of order guarantees to a future KIP. > > > > > > Sincerely, > > > Hanyu > > > > > > On Wed, Nov 29, 2023 at 6:22 AM Bruno Cadonna <cado...@apache.org> > > wrote: > > > > > >> Hi, > > >> > > >> Thanks for the updates! > > >> > > >> > > >> 1. > > >> Could you please link the correct ticket in the KIP? > > >> > > >> 2. > > >> Could you please adapt the motivation section and the title to the > > >> updated goal of the KIP? There is no fetch() or fetchAll() method in > the > > >> query class. > > >> > > >> 3. > > >> Could you please add the "// newly added" comment to all parts that > were > > >> newly added? That is methods lowerKeyBound() and upperKeyBound(). > > >> > > >> 4. > > >> We should use a more fluent API as I proposed in my last e-mail: > > >> > > >> Here again > > >> > > >> WindowRangeQuery.withAllKeys().fromTime(time1).toTime(time2); > > >> WindowRangeQuery.withKey(key1).fromTime(time1).toTime(time2); > > >> WindowRangeQuery.withKeyRange(key1, > key2).fromTime(time1).toTime(time2); > > >> > > >> 5. > > >> We should also consider the order of the results similar as we did in > > >> KIP-968. Alternatively, we do not guarantee any order and postpone the > > >> order guarantees to a future KIP. > > >> > > >> > > >> Best, > > >> Bruno > > >> > > >> > > >> > > >> On 11/17/23 3:11 AM, Matthias J. Sax wrote: > > >> > Thanks for the KIP. > > >> > > > >> > Given how `WindowRangeQuery` works right now, it's really time to > > >> > improve it. > > >> > > > >> > > > >> > 1) Agree. It's not clear what will be added right now. I think we > > >> should > > >> > deprecate existing `getKey()` w/o an actually replacement? For > > >> > `getFromKey` and `getToKey` we should actually be `lowerKeyBound()` > > and > > >> > `upperKeyBound()` to align to KIP-969? > > >> > > > >> > Also wondering if we should deprecate existing `withKey()` and > > >> > `withWindowStartRange`? `withKey` only works for SessionStores and > > >> > implements a single-key full-time-range query. Similarly, > > >> > `withWindowStartRange` only works for WindowedStore and implements > an > > >> > all-key time-range query. Thus, both are rather special and it seems > > >> the > > >> > aim of this KIP is to generalize `WindowRangeQuery` to arbitrary > > >> > key-range/time-range queries? > > >> > > > >> > What raises one question about time-range semantics, given that we > > >> query > > >> > windows with different semantics. > > >> > > > >> > - The current `WindowStore` semantics used for > > >> > `WindowRangeQuery#withWindowStartRange` is considering only the > window > > >> > start time, ie, the window-start time must fall into the query > > >> > time-range to be returned. > > >> > > > >> > - In contrast, `SessionStore` time ranges base on `findSession` > use > > >> > earliest-session-end-time and latest-session-end-time and thus > > >> implement > > >> > an "window-bounds / search-time-range overlap query". > > >> > > > >> > Is there any concern about semantic differences? I would also be > > >> > possible to use the same semantics for both query types, and maybe > > even > > >> > let the user pick with semantics they want (let users chose might > > >> > actually be the best thing to do)? -- We can also do this > > >> incrementally, > > >> > and limit the scope of this KIP (or keep the full KIP scope but > > >> > implement it incrementally only) > > >> > > > >> > Btw: I think we should not add any ordering at this point, and > > >> > explicitly state that no ordering is guarantee whatsoever at this > > point. > > >> > > > >> > > > >> > > > >> > 2) Agreed. We should deprecate `getFromTime` and `getToTime` and add > > >> new > > >> > method `fromTime` and `toTime`. > > >> > > > >> > > > >> > > > >> > 3) About the API. If we move forward with general > key-range/time-range > > >> I > > >> > agree that a more modular approach might be nice. Not sure right > now, > > >> > what the best approach would be for this? Looking into KIP-969, we > > >> might > > >> > want to have: > > >> > > > >> > - static withKeyRange > > >> > - static withLowerKeyBound > > >> > - static withUpperKeyBound > > >> > - static withAllKeys (KIP-969 actually uses `allKeys` ?) > > >> > - fromTime > > >> > - toTime > > >> > > > >> > with default-time range would be "all / unbounded" ? > > >> > > > >> > > > >> > > > >> > 10: you mentioned that `WindowKeyQuery` functionality can be covered > > by > > >> > `WindowRangeQuery`. I agree. For this case, it seems we want to > > >> > deprecate `WindowKeyQuery` entirely? > > >> > > > >> > > > >> > > > >> > -Matthias > > >> > > > >> > On 11/16/23 1:19 AM, Bruno Cadonna wrote: > > >> >> Hi Hanyu, > > >> >> > > >> >> Thanks for the KIP! > > >> >> > > >> >> 1) > > >> >> Could you please mark the pieces that you want to add to the API in > > >> >> the code listing in the KIP? You can add a comment like "// newly > > >> >> added" or similar. That would make reading the KIP a bit easier > > >> >> because one does not need to compare your code with the code in the > > >> >> current codebase. > > >> >> > > >> >> 2) > > >> >> Could you -- as a side cleanup -- also change the getters to not > use > > >> >> the get-prefix anymore, please? That was apparently an oversight > when > > >> >> those methods were added. Although the API is marked as Evolving, I > > >> >> think we should still deprecate the getX() methods, since it does > not > > >> >> cost us anything. > > >> >> > > >> >> 3) > > >> >> I propose to make the API a bit more fluent. For example, something > > >> like > > >> >> > > >> >> WindowRangeQuery.withKey(key).fromTime(t1).toTime(t2) > > >> >> > > >> >> and > > >> >> > > >> >> WindowRangeQuery.withAllKeys().fromTime(t1).toTime(t2) > > >> >> > > >> >> and > > >> >> > > >> >> WindowRangeQuery.withKeyRange(key1, key2).fromTime(t1).toTime(t2) > > >> >> > > >> >> and maybe even in addition to the above add also the option to > start > > >> >> with the time range > > >> >> > > >> >> WindowRangeQuery.withWindowStartRange(t1, > > t2).fromKey(key1).toKey(key2) > > >> >> > > >> >> > > >> >> 4) > > >> >> Could you also add some usage examples? Alieh did quite a nice job > > >> >> regarding usage examples in KIP-986. > > >> >> > > >> >> > > >> >> Best, > > >> >> Bruno > > >> >> > > >> >> On 11/8/23 8:02 PM, Hanyu (Peter) Zheng wrote: > > >> >>> Hello everyone, > > >> >>> > > >> >>> I would like to start the discussion for KIP-997: Support > > >> fetch(fromKey, > > >> >>> toKey, from, to) to WindowRangeQuery and unify WindowKeyQuery and > > >> >>> WindowRangeQuery > > >> >>> The KIP can be found here: > > >> >>> > > >> > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-997%3A++Support+fetch%28fromKey%2C+toKey%2C+from%2C+to%29+to+WindowRangeQuery+and+unify+WindowKeyQuery+and+WindowRangeQuery > > >> >>> > > >> >>> Any suggestions are more than welcome. > > >> >>> > > >> >>> Many thanks, > > >> >>> Hanyu > > >> >>> > > >> >>> On Wed, Nov 8, 2023 at 10:38 AM Hanyu (Peter) Zheng > > >> >>> <pzh...@confluent.io> > > >> >>> wrote: > > >> >>> > > >> >>>> > > >> >>>> > > >> > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-997%3A++Support+fetch%28fromKey%2C+toKey%2C+from%2C+to%29+to+WindowRangeQuery+and+unify+WindowKeyQuery+and+WindowRangeQuery > > >> >>>> > > >> >>>> -- > > >> >>>> > > >> >>>> [image: Confluent] <https://www.confluent.io> > > >> >>>> Hanyu (Peter) Zheng he/him/his > > >> >>>> Software Engineer Intern > > >> >>>> +1 (213) 431-7193 <+1+(213)+431-7193> > > >> >>>> Follow us: [image: Blog] > > >> >>>> < > > >> > > > https://www.confluent.io/blog?utm_source=footer&utm_medium=email&utm_campaign=ch.email-signature_type.community_content.blog > > >> >[image: > > >> >>>> Twitter] <https://twitter.com/ConfluentInc>[image: LinkedIn] > > >> >>>> <https://www.linkedin.com/in/hanyu-peter-zheng/>[image: Slack] > > >> >>>> <https://slackpass.io/confluentcommunity>[image: YouTube] > > >> >>>> <https://youtube.com/confluent> > > >> >>>> > > >> >>>> [image: Try Confluent Cloud for Free] > > >> >>>> < > > >> > > > https://www.confluent.io/get-started?utm_campaign=tm.fm-apac_cd.inbound&utm_source=gmail&utm_medium=organic > > >> > > > >> >>>> > > >> >>> > > >> >>> > > >> > > > > > > > > > -- > > > > > > [image: Confluent] <https://www.confluent.io> > > > Hanyu (Peter) Zheng he/him/his > > > Software Engineer Intern > > > +1 (213) 431-7193 <+1+(213)+431-7193> > > > Follow us: [image: Blog] > > > < > > > https://www.confluent.io/blog?utm_source=footer&utm_medium=email&utm_campaign=ch.email-signature_type.community_content.blog > > >[image: > > > Twitter] <https://twitter.com/ConfluentInc>[image: LinkedIn] > > > <https://www.linkedin.com/in/hanyu-peter-zheng/>[image: Slack] > > > <https://slackpass.io/confluentcommunity>[image: YouTube] > > > <https://youtube.com/confluent> > > > > > > [image: Try Confluent Cloud for Free] > > > < > > > https://www.confluent.io/get-started?utm_campaign=tm.fm-apac_cd.inbound&utm_source=gmail&utm_medium=organic > > > > > > > > > > > > -- > > > > [image: Confluent] <https://www.confluent.io> > > Hanyu (Peter) Zheng he/him/his > > Software Engineer Intern > > +1 (213) 431-7193 <+1+(213)+431-7193> > > Follow us: [image: Blog] > > < > > > https://www.confluent.io/blog?utm_source=footer&utm_medium=email&utm_campaign=ch.email-signature_type.community_content.blog > > >[image: > > Twitter] <https://twitter.com/ConfluentInc>[image: LinkedIn] > > <https://www.linkedin.com/in/hanyu-peter-zheng/>[image: Slack] > > <https://slackpass.io/confluentcommunity>[image: YouTube] > > <https://youtube.com/confluent> > > > > [image: Try Confluent Cloud for Free] > > < > > > https://www.confluent.io/get-started?utm_campaign=tm.fm-apac_cd.inbound&utm_source=gmail&utm_medium=organic > > > > > > -- [image: Confluent] <https://www.confluent.io> Hanyu (Peter) Zheng he/him/his Software Engineer Intern +1 (213) 431-7193 <+1+(213)+431-7193> Follow us: [image: Blog] <https://www.confluent.io/blog?utm_source=footer&utm_medium=email&utm_campaign=ch.email-signature_type.community_content.blog>[image: Twitter] <https://twitter.com/ConfluentInc>[image: LinkedIn] <https://www.linkedin.com/in/hanyu-peter-zheng/>[image: Slack] <https://slackpass.io/confluentcommunity>[image: YouTube] <https://youtube.com/confluent> [image: Try Confluent Cloud for Free] <https://www.confluent.io/get-started?utm_campaign=tm.fm-apac_cd.inbound&utm_source=gmail&utm_medium=organic>