You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flink.apache.org by John Fang <hu...@gmail.com> on 2017/10/12 06:30:43 UTC
the Table API `limit` is confused
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
Re: the Table API `limit` is confused
Posted by John Fang <hu...@gmail.com>.
Hi Fabian,
Thank you for your replay.
On Thu, Oct 12, 2017 at 4:18 PM, Fabian Hueske <fh...@gmail.com> wrote:
> 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 <hu...@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 <hu...@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
> >
>
--
Regards
John Fang
Re: the Table API `limit` is confused
Posted by Fabian Hueske <fh...@gmail.com>.
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 <hu...@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 <hu...@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
>
Re: the Table API `limit` is confused
Posted by John Fang <hu...@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 <hu...@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