flink-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Fabian Hueske <fhue...@gmail.com>
Subject Re: the Table API `limit` is confused
Date Thu, 12 Oct 2017 08:18:50 GMT
Hi John,

I agree that the Table.limit(offset) method is confusing and that the
semantics should rather be to specify the fetch parameter than the offset
parameter.
However, we can not easily change the behavior of an existing function. The
only way to evolve the functionality is to add new methods and deprecated
the old limit() method.

I also think that it would be better to have separate methods for offset()
and fetch().
We can even implement it in a way that all these combinations are valid:

table.orderBy().offset()
table.orderBy().fetch()
table.orderBy().offset().fetch()
table.orderBy().fetch().offset()

I have created FLINK-7821 to add offset() and fetch() and deprecate
limit(offset) and limit(offset, fetch).
I'll also create a PR for the issue very soon; PR reviews are welcome.

The requirement for orderBy() exists to ensure that queries are
deterministic.

Best, Fabian


2017-10-12 8:39 GMT+02:00 John Fang <hustfxj@gmail.com>:

> Now the Table don't support the limit operator without  orderBy operator.
>
> On Thu, Oct 12, 2017 at 2:30 PM, John Fang <hustfxj@gmail.com> wrote:
>
> > Hi,
> >
> >    In order to support  ORDER BY OFFSET FETCH, we add the Table API
> > `limit`. But the api is confused. For example: "table.limit(3)" means
> > unlimited number of records beginning with the 4th record. In fact I
> prefer
> > "table.limit(3)" means taking the first `3` rows.
> >   So I prefer to use the API "offset().fetch()" support ORDER BY OFFSET
> > FETCH. Of course, the "table.limit(n)" equivalent with the
> > "table.offset(0).fetch(n)",
> >
> > --
> >
> > Regards
> >
> > John Fang
> >
> >
> >
>
>
>
> --
>
> Regards
>
> John Fang
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message