# Can Calcite support this syntax ` VERSION AS OF`  ?

This also depends on whether this is defined in standard or any known
databases that have implemented this. If not, it would be hard to push it
to Calcite.

# getTable(ObjectPath object, long timestamp)

Then we again come to the problem of "casting between timestamp and
numeric", which has been disabled in FLINK-21978[1]. If you're gonna use
this, then we need to clarify that problem first.

[1] https://issues.apache.org/jira/browse/FLINK-21978


Feng Jin <jinfeng1...@gmail.com> 于2023年5月29日周一 15:57写道:

> hi, thanks for your reply.
>
> @Benchao
> > did you consider the pushdown abilities compatible
>
> In the current design, the implementation of TimeTravel is delegated to
> Catalog. We have added a function called getTable(ObjectPath tablePath,
> long timestamp) to obtain the corresponding CatalogBaseTable at a specific
> time.  Therefore, I think it will not have any impact on the original
> pushdown abilities.
>
>
> >   I see there is a rejected  design for adding SupportsTimeTravel, but I
> didn't see the alternative in  the FLIP doc
>
> Sorry, the document description is not very clear.  Regarding whether to
> support SupportTimeTravel, I have discussed it with yuxia. Since we have
> already passed the corresponding time in getTable(ObjectPath, long
> timestamp) of Catalog, SupportTimeTravel may not be necessary.
>
> In getTable(ObjectPath object, long timestamp), we can obtain the schema of
> the corresponding time point and put the SNAPSHOT that needs to be consumed
> into options.
>
>
> @Shammon
> > Could we support this in Flink too?
>
> I personally think it's possible, but limited by Calcite's syntax
> restrictions. I believe we should first support this syntax in Calcite.
> Currently, I think it may not be easy  to support this syntax in Flink's
> parser. @Benchao, what do you think? Can Calcite support this syntax
> ` VERSION AS OF`  ?
>
>
> Best,
> Feng.
>
>
> On Fri, May 26, 2023 at 2:55 PM Shammon FY <zjur...@gmail.com> wrote:
>
> > Thanks Feng, the feature of time travel sounds great!
> >
> > In addition to SYSTEM_TIME, lake houses such as paimon and iceberg
> support
> > snapshot or version. For example, users can query snapshot 1 for paimon
> by
> > the following statement
> > SELECT * FROM t VERSION AS OF 1
> >
> > Could we support this in Flink too?
> >
> > Best,
> > Shammon FY
> >
> > On Fri, May 26, 2023 at 1:20 PM Benchao Li <libenc...@apache.org> wrote:
> >
> > > Regarding the implementation, did you consider the pushdown abilities
> > > compatible, e.g., projection pushdown, filter pushdown, partition
> > pushdown.
> > > Since `Snapshot` is not handled much in existing rules, I have a
> concern
> > > about this. Of course, it depends on your implementation detail, what
> is
> > > important is that we'd better add some cross tests for these.
> > >
> > > Regarding the interface exposed to Connector, I see there is a rejected
> > > design for adding SupportsTimeTravel, but I didn't see the alternative
> in
> > > the FLIP doc. IMO, this is an important thing we need to clarify
> because
> > we
> > > need to know whether the Connector supports this, and what
> > column/metadata
> > > corresponds to 'system_time'.
> > >
> > > Feng Jin <jinfeng1...@gmail.com> 于2023年5月25日周四 22:50写道:
> > >
> > > > Thanks for your reply
> > > >
> > > > @Timo @BenChao @yuxia
> > > >
> > > > Sorry for the mistake,  Currently , calcite only supports  `FOR
> > > SYSTEM_TIME
> > > > AS OF `  syntax.  We can only support `FOR SYSTEM_TIME AS OF` .  I've
> > > > updated the syntax part of the FLIP.
> > > >
> > > >
> > > > @Timo
> > > >
> > > > > We will convert it to TIMESTAMP_LTZ?
> > > >
> > > > Yes, I think we need to convert TIMESTAMP to TIMESTAMP_LTZ and then
> > > convert
> > > > it into a long value.
> > > >
> > > > > How do we want to query the most recent version of a table
> > > >
> > > > I think we can use `AS OF CURRENT_TIMESTAMP` ,But it does cause
> > > > inconsistency with the real-time concept.
> > > > However, from my personal understanding, the scope of  `AS OF
> > > > CURRENT_TIMESTAMP` is the table itself, not the table record.  So, I
> > > think
> > > > using CURRENT_TIMESTAMP should also be reasonable?.
> > > > Additionally, if no version is specified, the latest version should
> be
> > > used
> > > > by default.
> > > >
> > > >
> > > >
> > > > Best,
> > > > Feng
> > > >
> > > >
> > > > On Thu, May 25, 2023 at 7:47 PM yuxia <luoyu...@alumni.sjtu.edu.cn>
> > > wrote:
> > > >
> > > > > Thanks Feng for bringing this up. It'll be great to introduce time
> > > travel
> > > > > to Flink to have a better integration with external data soruces.
> > > > >
> > > > > I also share same concern about the syntax.
> > > > > I see in the part of `Whether to support other syntax
> > implementations`
> > > in
> > > > > this FLIP, seems the syntax in Calcite should be `FOR SYSTEM_TIME
> AS
> > > OF`,
> > > > > right?
> > > > > But the the syntax part in this FLIP, it seems to be `AS OF
> > TIMESTAMP`
> > > > > instead of  `FOR SYSTEM_TIME AS OF`. Is it just a mistake or by
> > design?
> > > > >
> > > > >
> > > > > Best regards,
> > > > > Yuxia
> > > > >
> > > > > ----- 原始邮件 -----
> > > > > 发件人: "Benchao Li" <libenc...@apache.org>
> > > > > 收件人: "dev" <dev@flink.apache.org>
> > > > > 发送时间: 星期四, 2023年 5 月 25日 下午 7:27:17
> > > > > 主题: Re: [DISCUSS] FLIP-308: Support Time Travel In Batch Mode
> > > > >
> > > > > Thanks Feng, it's exciting to have this ability.
> > > > >
> > > > > Regarding the syntax section, are you proposing `AS OF` instead of
> > `FOR
> > > > > SYSTEM AS OF` to do this? I know `FOR SYSTEM AS OF` is in the SQL
> > > > standard
> > > > > and has been supported in some database vendors such as SQL Server.
> > > About
> > > > > `AS OF`, is it in the standard or any database vendor supports
> this,
> > if
> > > > > yes, I think it's worth to add this support to Calcite, and I would
> > > give
> > > > a
> > > > > hand in Calcite side. Otherwise, I think we'd better to use `FOR
> > SYSTEM
> > > > AS
> > > > > OF`.
> > > > >
> > > > > Timo Walther <twal...@apache.org> 于2023年5月25日周四 19:02写道:
> > > > >
> > > > > > Also: How do we want to query the most recent version of a table?
> > > > > >
> > > > > > `AS OF CURRENT_TIMESTAMP` would be ideal, but according to the
> docs
> > > > both
> > > > > > the type is TIMESTAMP_LTZ and what is even more concerning is the
> > it
> > > > > > actually is evalated row-based:
> > > > > >
> > > > > >  > Returns the current SQL timestamp in the local time zone, the
> > > return
> > > > > > type is TIMESTAMP_LTZ(3). It is evaluated for each record in
> > > streaming
> > > > > > mode. But in batch mode, it is evaluated once as the query starts
> > and
> > > > > > uses the same result for every row.
> > > > > >
> > > > > > This could make it difficult to explain in a join scenario of
> > > multiple
> > > > > > snapshotted tables.
> > > > > >
> > > > > > Regards,
> > > > > > Timo
> > > > > >
> > > > > >
> > > > > > On 25.05.23 12:29, Timo Walther wrote:
> > > > > > > Hi Feng,
> > > > > > >
> > > > > > > thanks for proposing this FLIP. It makes a lot of sense to
> > finally
> > > > > > > support querying tables at a specific point in time or
> hopefully
> > > also
> > > > > > > ranges soon. Following time-versioned tables.
> > > > > > >
> > > > > > > Here is some feedback from my side:
> > > > > > >
> > > > > > > 1. Syntax
> > > > > > >
> > > > > > > Can you elaborate a bit on the Calcite restrictions?
> > > > > > >
> > > > > > > Does Calcite currently support `AS OF` syntax for this but not
> > `FOR
> > > > > > > SYSTEM_TIME AS OF`?
> > > > > > >
> > > > > > > It would be great to support `AS OF` also for time-versioned
> > joins
> > > > and
> > > > > > > have a unified and short syntax.
> > > > > > >
> > > > > > > Once a fix is merged in Calcite for this, we can make this
> > > available
> > > > in
> > > > > > > Flink earlier by copying the corresponding classes until the
> next
> > > > > > > Calcite upgrade is performed.
> > > > > > >
> > > > > > > 2. Semantics
> > > > > > >
> > > > > > > How do we interpret the timestamp? In Flink we have 2 timestamp
> > > types
> > > > > > > (TIMESTAMP and TIMESTAMP_LTZ). If users specify AS OF TIMESTAMP
> > > > > > > '2023-04-27 00:00:00', in which timezone will the timestamp be?
> > We
> > > > will
> > > > > > > convert it to TIMESTAMP_LTZ?
> > > > > > >
> > > > > > > We definely need to clarify this because the past has shown
> that
> > > > > > > daylight saving times make our lives hard.
> > > > > > >
> > > > > > > Thanks,
> > > > > > > Timo
> > > > > > >
> > > > > > > On 25.05.23 10:57, Feng Jin wrote:
> > > > > > >> Hi, everyone.
> > > > > > >>
> > > > > > >> I’d like to start a discussion about FLIP-308: Support Time
> > Travel
> > > > In
> > > > > > >> Batch
> > > > > > >> Mode [1]
> > > > > > >>
> > > > > > >>
> > > > > > >> Time travel is a SQL syntax used to query historical versions
> of
> > > > data.
> > > > > > It
> > > > > > >> allows users to specify a point in time and retrieve the data
> > and
> > > > > > >> schema of
> > > > > > >> a table as it appeared at that time. With time travel, users
> can
> > > > > easily
> > > > > > >> analyze and compare historical versions of data.
> > > > > > >>
> > > > > > >>
> > > > > > >> With the widespread use of data lake systems such as Paimon,
> > > > Iceberg,
> > > > > > and
> > > > > > >> Hudi, time travel can provide more convenience for users' data
> > > > > analysis.
> > > > > > >>
> > > > > > >>
> > > > > > >> Looking forward to your opinions, any suggestions are
> welcomed.
> > > > > > >>
> > > > > > >>
> > > > > > >>
> > > > > > >> 1.
> > > > > > >>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-308%3A+Support+Time+Travel+In+Batch+Mode
> > > > > > >>
> > > > > > >>
> > > > > > >>
> > > > > > >> Best.
> > > > > > >>
> > > > > > >> Feng
> > > > > > >>
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > > --
> > > > >
> > > > > Best,
> > > > > Benchao Li
> > > > >
> > > >
> > >
> > >
> > > --
> > >
> > > Best,
> > > Benchao Li
> > >
> >
>


-- 

Best,
Benchao Li

Reply via email to