Many thanks for your reminder, Leonard. Here's the link I mentioned[1].

Best,
Shengkai

[1] https://github.com/apache/flink/pull/26358

Leonard Xu <xbjt...@gmail.com> 于2025年3月27日周四 10:05写道:

> Your link is broken, Shengkai
>
> Best,
> Leonard
>
> > 2025年3月27日 10:01,Shengkai Fang <fskm...@gmail.com> 写道:
> >
> > Hi, All.
> >
> > I write a simple demo to illustrate my idea. Hope this helps.
> >
> > Best,
> > Shengkai
> >
> >
> https://github.com/apache/flink/compare/master...fsk119:flink:example?expand=1
> >
> > Gabor Somogyi <gabor.g.somo...@gmail.com> 于2025年3月26日周三 15:54写道:
> >
> >>> I'm fine with a seperate SQL connector for metadata, so maybe we could
> >> update the FLIP about our discussion?
> >>
> >> Sorry, I've forgotten this part. Yeah, no matter we choose I'm going to
> >> update the FLIP.
> >>
> >> G
> >>
> >>
> >> On Wed, Mar 26, 2025 at 8:51 AM Gabor Somogyi <
> gabor.g.somo...@gmail.com>
> >> wrote:
> >>
> >>> Hi All,
> >>>
> >>> I've also lack of the knowledge of PTF so I've read just the motivation
> >>> part:
> >>>
> >>> "The SQL 2016 standard introduced a way of defining custom SQL
> operators
> >>> defined by ISO/IEC 19075-7:2021 (Part 7: Polymorphic table functions).
> >>> ~200 pages define how this new kind of function can consume and produce
> >>> tables with various execution properties.
> >>> Unfortunately, this part of the standard is not publicly available."
> >>>
> >>> Of course we can take a look at some examples but do we really want to
> >>> expose state data with this construct
> >>> which is described in ~200 pages and part of the standard is not
> publicly
> >>> available? 🙂
> >>> I mean the dataset is couple of rows and the use-case is join with
> >> another
> >>> table like with state data.
> >>> If somebody can give advantages I would buy that but from my limited
> >>> understanding this would be an overkill here.
> >>>
> >>> BR,
> >>> G
> >>>
> >>>
> >>> On Wed, Mar 26, 2025 at 8:28 AM Gyula Fóra <gyula.f...@gmail.com>
> wrote:
> >>>
> >>>> Hi Zakelly , Shengkai!
> >>>>
> >>>> I don't know too much about PTFs, it would be interesting to see how
> the
> >>>> usage would look in practice.
> >>>>
> >>>> Do you have some mockup/example in mind how the PTF would look for
> >> example
> >>>> when want to:
> >>>> - Simply display/aggregate whats in the metadata
> >>>> - Join keyed state with some metadata columns
> >>>>
> >>>> Thanks
> >>>> Gyula
> >>>>
> >>>> On Wed, Mar 26, 2025 at 7:33 AM Zakelly Lan <zakelly....@gmail.com>
> >>>> wrote:
> >>>>
> >>>>> Hi everyone,
> >>>>>
> >>>>> I'm fine with a seperate SQL connector for metadata, so maybe we
> could
> >>>>> update the FLIP about our discussion? And Shengkai provides a PTF
> >>>>> implementation, does that also meet the requirement?
> >>>>>
> >>>>>
> >>>>> Best,
> >>>>> Zakelly
> >>>>>
> >>>>> On Thu, Mar 20, 2025 at 4:47 PM Gabor Somogyi <
> >>>> gabor.g.somo...@gmail.com>
> >>>>> wrote:
> >>>>>
> >>>>>> Hi All,
> >>>>>>
> >>>>>> @Zakelly: Gyula summarised it correctly what I meant so please treat
> >>>> the
> >>>>>> content as mine.
> >>>>>> As an addition I'm not against to add CLI at all, I'm just stating
> >>>> that
> >>>>> in
> >>>>>> some cases like this, users would like to have
> >>>>>> a self-serving solution where they can provide SQL statements which
> >>>> can
> >>>>>> trigger alerts automatically.
> >>>>>>
> >>>>>> My personal opinion is that CLI would be beneficial for several
> >>>> cases. A
> >>>>>> good example is when users want to restart job
> >>>>>> from specific Kafka offsets which are persisted in a savepoint. For
> >>>> such
> >>>>>> scenario users are more than happy since they
> >>>>>> expect manual intervention with full control. So all in all one can
> >>>> count
> >>>>>> on my +1 when CLI FLIP would come up...
> >>>>>>
> >>>>>> BR,
> >>>>>> G
> >>>>>>
> >>>>>>
> >>>>>> On Thu, Mar 20, 2025 at 8:20 AM Gyula Fóra <gyula.f...@gmail.com>
> >>>> wrote:
> >>>>>>
> >>>>>>> Hi!
> >>>>>>>
> >>>>>>> @Zakelly Lan <zakelly....@gmail.com>
> >>>>>>> I think what Gabor means is that users want to have predefined SQL
> >>>>> scripts
> >>>>>>> to perform state analysis tasks to debug/identify problems.
> >>>>>>> Such as write a SQL script that joins the metadata table with the
> >>>> state
> >>>>>>> and
> >>>>>>> do some analytics on it.
> >>>>>>>
> >>>>>>> If we have a meta table then the SQL script that can do this is
> >> fixed
> >>>>> and
> >>>>>>> users can trigger this on demand by simply providing a new
> >> savepoint
> >>>>> path.
> >>>>>>>
> >>>>>>> If we have a different mechanism to extract metadata that is not
> >> SQL
> >>>>>>> native
> >>>>>>> then manual steps need to be executed and a custom SQL script would
> >>>> need
> >>>>>>> to
> >>>>>>> be written that adds the manually extracted metadata into the
> >> script.
> >>>>>>>
> >>>>>>> Cheers,
> >>>>>>> Gyula
> >>>>>>>
> >>>>>>> On Thu, Mar 20, 2025 at 4:32 AM Zakelly Lan <zakelly....@gmail.com
> >>>
> >>>>>>> wrote:
> >>>>>>>
> >>>>>>>> Hi all,
> >>>>>>>>
> >>>>>>>> Thanks for your answers! Getting everyone aligned on this topic
> >> is
> >>>>>>>> challenging, but it’s definitely worth the effort since it will
> >>>> help
> >>>>>>>> streamline things moving forward.
> >>>>>>>>
> >>>>>>>> @Gabor are you saying that users are using some scripts to define
> >>>> the
> >>>>>>> SQL
> >>>>>>>> metadata connector and get the information, right? If so, would a
> >>>> CLI
> >>>>>>> tool
> >>>>>>>> be more convenient? It's easy to invoke and can get the result
> >>>>> swiftly.
> >>>>>>> And
> >>>>>>>> there should be some other systems to track the checkpoint
> >> lineage
> >>>> and
> >>>>>>>> analyze if there are outliers in metadata (e.g. state size of one
> >>>>>>> operator)
> >>>>>>>> right? Well, maybe I missed something so please correct me if I'm
> >>>>> wrong.
> >>>>>>>>
> >>>>>>>> I think the overall vision in Flink SQL is to provide a SQL
> >> native
> >>>>>>>>> environment where we can serve complex use-cases like you would
> >>>>> expect
> >>>>>>>> in a
> >>>>>>>>> regular database.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> @Gyula Well, this is a good point. From the perspective of
> >>>>> comprehensive
> >>>>>>>> SQL experience, I'd +1 for treating metadata as data. Although I
> >>>> doubt
> >>>>>>> if
> >>>>>>>> there is a need for processing metadata, I won't be against a
> >>>> separate
> >>>>>>>> connector.
> >>>>>>>>
> >>>>>>>> Regarding the CLI tool, I still think it’s worth implementing.
> >>>> Such a
> >>>>>>> tool
> >>>>>>>> could provide savepoint information before resuming from a
> >>>> savepoint,
> >>>>>>> which
> >>>>>>>> would enhance the user experience in CLI-based workflows. It
> >> would
> >>>> be
> >>>>>>> good
> >>>>>>>> if someone could implement this feature. We shouldn’t worry about
> >>>>>>> whether
> >>>>>>>> this tool might be retired in the future. Regardless of the
> >>>> SQL-based
> >>>>>>>> solution we eventually adopt, this capability will remain
> >> essential
> >>>>> for
> >>>>>>> CLI
> >>>>>>>> users. This is another topic.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> Best,
> >>>>>>>> Zakelly
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> On Thu, Mar 20, 2025 at 10:37 AM Shengkai Fang <
> >> fskm...@gmail.com>
> >>>>>>> wrote:
> >>>>>>>>
> >>>>>>>>> Hi.
> >>>>>>>>>
> >>>>>>>>> After reading the doc[1], I think Spark provides a function for
> >>>>> users
> >>>>>>> to
> >>>>>>>>> consume the metadata from the savepoint.  In Flink SQL, similar
> >>>>>>>>> functionality is implemented through Polymorphic Table
> >> Functions
> >>>>>>> (PTF) as
> >>>>>>>>> proposed in FLIP-440[2]. Below is a code example[3]
> >> illustrating
> >>>>> this
> >>>>>>>>> concept:
> >>>>>>>>>
> >>>>>>>>> ```
> >>>>>>>>>    public static class ScalarArgsFunction extends
> >>>>>>>>> TestProcessTableFunctionBase {
> >>>>>>>>>        public void eval(Integer i, Boolean b) {
> >>>>>>>>>            collectObjects(i, b);
> >>>>>>>>>        }
> >>>>>>>>>    }
> >>>>>>>>> ```
> >>>>>>>>>
> >>>>>>>>> ```
> >>>>>>>>> INSERT INTO sink SELECT * FROM f(i => 42, b => CAST('TRUE' AS
> >>>>>>> BOOLEAN))
> >>>>>>>>> ``
> >>>>>>>>>
> >>>>>>>>> So we can add a builtin function named `read_state_metadata` to
> >>>> read
> >>>>>>>>> savepoint data.
> >>>>>>>>>
> >>>>>>>>> Best,
> >>>>>>>>> Shengkai
> >>>>>>>>>
> >>>>>>>>> [1]
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>
> >>>>
> >>
> https://docs.databricks.com/aws/en/structured-streaming/read-state?language=SQL
> >>>>>>>>> [2]
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>
> >>>>
> >>
> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=298781093
> >>>>>>>>> [3]
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>
> >>>>
> >>
> https://github.com/apache/flink/blob/master/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/ProcessTableFunctionTestPrograms.java#L140
> >>>>>>>>>
> >>>>>>>>> Gyula Fóra <gyula.f...@gmail.com> 于2025年3月19日周三 18:37写道:
> >>>>>>>>>
> >>>>>>>>>> Hi All!
> >>>>>>>>>>
> >>>>>>>>>> Thank you for the answers and concerns from everyone.
> >>>>>>>>>>
> >>>>>>>>>> On the CLI vs State Metadata Connector/Table question I would
> >>>> also
> >>>>>>> like
> >>>>>>>>> to
> >>>>>>>>>> step back a little and look at the bigger picture.
> >>>>>>>>>>
> >>>>>>>>>> I think the overall vision in Flink SQL is to provide a SQL
> >>>> native
> >>>>>>>>>> environment where we can serve complex use-cases like you
> >> would
> >>>>>>> expect
> >>>>>>>>> in a
> >>>>>>>>>> regular database.
> >>>>>>>>>> Most features, developments in the recent years have gone
> >> this
> >>>>> way.
> >>>>>>>>>>
> >>>>>>>>>> The State Metadata Table would be a natural and
> >> straightforward
> >>>>> fit
> >>>>>>>> here.
> >>>>>>>>>> So from my side, +1 for that.
> >>>>>>>>>>
> >>>>>>>>>> However I could understand if we are not ready to add a new
> >>>>>>>>>> connector/format due to maintenance concerns (and in general
> >>>>> concern
> >>>>>>>>> about
> >>>>>>>>>> the design).
> >>>>>>>>>> If that's the issue then we should spend more time on the
> >>>> design
> >>>>> to
> >>>>>>> get
> >>>>>>>>>> comfortable with the approach and seek feedback from the
> >> wider
> >>>>>>>> community
> >>>>>>>>>>
> >>>>>>>>>> I am -1 for the CLI/tooling approach as that will not provide
> >>>> the
> >>>>>>>>>> featureset we are looking for that is not already covered by
> >>>> the
> >>>>>>> Java
> >>>>>>>>>> connector. And that approach would come with the same
> >>>> maintenance
> >>>>>>>>>> implications.
> >>>>>>>>>>
> >>>>>>>>>> Cheers
> >>>>>>>>>> Gyula
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> On Wed, Mar 19, 2025 at 11:24 AM Gabor Somogyi <
> >>>>>>>>> gabor.g.somo...@gmail.com>
> >>>>>>>>>> wrote:
> >>>>>>>>>>
> >>>>>>>>>>> Hi Zaklely, Shengkai
> >>>>>>>>>>>
> >>>>>>>>>>> Several topics are going on so adding gist answers to them.
> >>>> When
> >>>>>>> some
> >>>>>>>>>> topic
> >>>>>>>>>>> is not touched please highlight it.
> >>>>>>>>>>>
> >>>>>>>>>>> @Shengkai: I've read through all the previous FLIPs related
> >>>>>>> catalogs
> >>>>>>>>> and
> >>>>>>>>>> if
> >>>>>>>>>>> we would like to keep the concepts there
> >>>>>>>>>>> then one-to-one mapping relationship between savepoint and
> >>>>> catalog
> >>>>>>>> is a
> >>>>>>>>>>> reasonable direction. In short I'm happy that
> >>>>>>>>>>> you've highlighted this and agree as a whole. I've written
> >> it
> >>>>> down
> >>>>>>>>>>> previously, just want to double confirm that state catalog
> >> is
> >>>>>>>>>>> essential and planned. When we reach this point then your
> >>>> input
> >>>>> is
> >>>>>>>> more
> >>>>>>>>>>> than welcome.
> >>>>>>>>>>>
> >>>>>>>>>>> @Zakelly: We've tried the CLI and separate library
> >> approaches
> >>>>> with
> >>>>>>>>> users
> >>>>>>>>>>> already and these are not something which is welcome
> >> because
> >>>> of
> >>>>>>> the
> >>>>>>>>>>> following:
> >>>>>>>>>>> * Users want to have automated tasks and not manual
> >>>> CLI/library
> >>>>>>>> output
> >>>>>>>>>>> parsing. This can be hacked around but our experience is
> >>>>> negative
> >>>>>>> on
> >>>>>>>>> this
> >>>>>>>>>>> because it's just brittle.
> >>>>>>>>>>> * From development perspective It's way much bigger effort
> >>>> than
> >>>>> a
> >>>>>>>>>> connector
> >>>>>>>>>>> (hard to test, packaging/version handling is and extra
> >> layer
> >>>> of
> >>>>>>>>>> complexity,
> >>>>>>>>>>> external FS authentication is pain for users, expecting
> >> them
> >>>> to
> >>>>>>>>> download
> >>>>>>>>>>> savepoints also)
> >>>>>>>>>>> * Purely personal opinion but if we would find better ways
> >>>> later
> >>>>>>> then
> >>>>>>>>>>> retire a CLI is not more lightweight than retire a
> >> connector
> >>>>>>>>>>>
> >>>>>>>>>>>> It would be great if you give some examples on how user
> >>>> could
> >>>>>>>>> leverage
> >>>>>>>>>>> the separate connector to process the metadata.
> >>>>>>>>>>>
> >>>>>>>>>>> The most simplest cases:
> >>>>>>>>>>> * give me the overgroving state uids
> >>>>>>>>>>> * give me the not known (new or renamed) state uids
> >>>>>>>>>>> * give me the state uids where state size drastically
> >> dropped
> >>>>>>> compare
> >>>>>>>>> to
> >>>>>>>>>> a
> >>>>>>>>>>> previous savepoint (accidental state loss)
> >>>>>>>>>>>
> >>>>>>>>>>> Since it was mentioned: as a general offtopic teaser, yeah
> >> it
> >>>>>>> would
> >>>>>>>> be
> >>>>>>>>>> good
> >>>>>>>>>>> to have some sort of checkpoint/savepoint lineage or
> >> however
> >>>> we
> >>>>>>> call
> >>>>>>>>> it.
> >>>>>>>>>>> Since we've not yet reached this point there are no
> >> technical
> >>>>>>>> details,
> >>>>>>>>>> it's
> >>>>>>>>>>> more like a vision. It's a common pattern that
> >>>>>>>>>>> jobs are physically running but somehow the state
> >> processing
> >>>> is
> >>>>>>> stuck
> >>>>>>>>> and
> >>>>>>>>>>> it would be good to add some way to find it out
> >>>> automatically.
> >>>>>>>>>>> The important saying here is automation and not manual
> >>>>> evaluation
> >>>>>>>> since
> >>>>>>>>>>> handling 10k+ jobs is just not allowing that.
> >>>>>>>>>>>
> >>>>>>>>>>> BR,
> >>>>>>>>>>> G
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> On Wed, Mar 19, 2025 at 6:46 AM Shengkai Fang <
> >>>>> fskm...@gmail.com>
> >>>>>>>>> wrote:
> >>>>>>>>>>>
> >>>>>>>>>>>> Hi, All.
> >>>>>>>>>>>>
> >>>>>>>>>>>> About State Catalog, I want to share more thoughts about
> >>>> this.
> >>>>>>>>>>>>
> >>>>>>>>>>>> In the initial design concept, I understood that a
> >>>> savepoint
> >>>>>>> and a
> >>>>>>>>>> state
> >>>>>>>>>>>> catalog have a one-to-one mapping relationship. Each
> >>>> operator
> >>>>>>>>>> corresponds
> >>>>>>>>>>>> to a database, and the state of each operator is
> >>>> represented
> >>>>> as
> >>>>>>>>>>> individual
> >>>>>>>>>>>> tables. The rationale behind this design is:
> >>>>>>>>>>>>
> >>>>>>>>>>>> *State Diversity*: An operator may involve multiple types
> >>>> of
> >>>>>>>> states.
> >>>>>>>>>> For
> >>>>>>>>>>>> example, in our VVR design, a "multi-join" operator uses
> >>>> keyed
> >>>>>>>> states
> >>>>>>>>>> for
> >>>>>>>>>>>> two input streams and a broadcast state for the third
> >>>> stream.
> >>>>>>> This
> >>>>>>>>>> makes
> >>>>>>>>>>> it
> >>>>>>>>>>>> challenging to represent all states of an operator
> >> within a
> >>>>>>> single
> >>>>>>>>>> table.
> >>>>>>>>>>>> *Scalability*: Internally, an operator might have
> >> multiple
> >>>>> keyed
> >>>>>>>>> states
> >>>>>>>>>>>> (e.g., value state and list state). However, large list
> >>>> states
> >>>>>>> may
> >>>>>>>>> not
> >>>>>>>>>>> fit
> >>>>>>>>>>>> entirely in memory. To address this, we recommend
> >>>> implementing
> >>>>>>> each
> >>>>>>>>>> state
> >>>>>>>>>>>> as a separate table.
> >>>>>>>>>>>>
> >>>>>>>>>>>> To resolve the loosely coupled relationships between
> >>>> operator
> >>>>>>>> states,
> >>>>>>>>>> we
> >>>>>>>>>>>> propose embedding predefined views within the catalog.
> >>>> These
> >>>>>>> views
> >>>>>>>>>>> simplify
> >>>>>>>>>>>> user understanding of operator implementations and
> >> provide
> >>>> a
> >>>>>>> more
> >>>>>>>>>>> intuitive
> >>>>>>>>>>>> perspective. For instance, a join operator may have
> >>>> multiple
> >>>>>>> state
> >>>>>>>>>>>> implementations (depending on whether the join key
> >> includes
> >>>>>>> unique
> >>>>>>>>>>>> attributes), but users primarily care about the data
> >>>>> associated
> >>>>>>>> with
> >>>>>>>>> a
> >>>>>>>>>>>> specific join key across input streams.
> >>>>>>>>>>>>
> >>>>>>>>>>>> Returning to the one-to-one mapping between savepoints
> >> and
> >>>>>>>> catalogs,
> >>>>>>>>> we
> >>>>>>>>>>> aim
> >>>>>>>>>>>> to manage multiple user state catalogs through a catalog
> >>>>> store.
> >>>>>>>> When
> >>>>>>>>> a
> >>>>>>>>>>> user
> >>>>>>>>>>>> triggers a savepoint for a job on the platform:
> >>>>>>>>>>>>
> >>>>>>>>>>>> 1. The platform sends a REST request to the JobManager.
> >>>>>>>>>>>> 2. Simultaneously, it registers a new state catalog in
> >> the
> >>>>>>> catalog
> >>>>>>>>>> store,
> >>>>>>>>>>>> enabling immediate analysis of state data on the
> >> platform.
> >>>>>>>>>>>> 3. Deleting a savepoint would also trigger the removal of
> >>>> its
> >>>>>>>>>> associated
> >>>>>>>>>>>> catalog.
> >>>>>>>>>>>>
> >>>>>>>>>>>> This vision assumes that states are self-describing or
> >>>> that a
> >>>>>>> state
> >>>>>>>>>>>> metaservice is introduced to analyze savepoint
> >> structures.
> >>>>>>>>>>>>
> >>>>>>>>>>>>> How can users create logic to identify differences
> >>>> between
> >>>>>>>> multiple
> >>>>>>>>>>>> savepoints?
> >>>>>>>>>>>>
> >>>>>>>>>>>> Since savepoints and state catalogs are one-to-one
> >> mapped,
> >>>>> users
> >>>>>>>> can
> >>>>>>>>>>> query
> >>>>>>>>>>>> metadata via their respective catalogs. For example:
> >>>>>>>>>>>>
> >>>>>>>>>>>> 1.
> >>>>> `savepoint-${id}`.`system`.`metadata_table`.`<operator-name>`
> >>>>>>>>>> provides
> >>>>>>>>>>>> operator-specific metadata (e.g., state size, type).
> >>>>>>>>>>>> 2. Comparing metadata tables (e.g., schema versions,
> >> state
> >>>>> entry
> >>>>>>>>>> counts)
> >>>>>>>>>>>> across catalogs reveals structural or quantitative
> >>>>> differences.
> >>>>>>>>>>>> 3. For deeper analysis, users could write SQL queries to
> >>>>> compare
> >>>>>>>>>> specific
> >>>>>>>>>>>> state partitions or leverage the metaservice to track
> >> state
> >>>>>>>> evolution
> >>>>>>>>>>>> (e.g., added/removed operators, modified state
> >>>>> configurations).
> >>>>>>>>>>>>
> >>>>>>>>>>>> If we plan to introduce a state catalog in the future, I
> >>>> would
> >>>>>>> lean
> >>>>>>>>>>> toward
> >>>>>>>>>>>> using metadata tables. If a utility tool can address the
> >>>>>>> challenges
> >>>>>>>>> we
> >>>>>>>>>>>> face, could we avoid introducing an additional connector?
> >>>>>>>>>>>>
> >>>>>>>>>>>> Best,
> >>>>>>>>>>>> Shengkai
> >>>>>>>>>>>>
> >>>>>>>>>>>> Gyula Fóra <gyula.f...@gmail.com> 于2025年3月17日周一 20:25写道:
> >>>>>>>>>>>>
> >>>>>>>>>>>>> Hi All!
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Without going into too much detail here are my 2 cents
> >>>>>>> regarding
> >>>>>>>>> the
> >>>>>>>>>>>>> virtual column / catalog metadata / table (connector)
> >>>>>>> discussion
> >>>>>>>>> for
> >>>>>>>>>>> the
> >>>>>>>>>>>>> State metadata.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> State metadata such as the types of states, their
> >>>>> properties,
> >>>>>>>>> names,
> >>>>>>>>>>>> sizes
> >>>>>>>>>>>>> etc are all valuable information that can be used to
> >>>> enrich
> >>>>>>> the
> >>>>>>>>>>>>> computations we do on state.
> >>>>>>>>>>>>> We can either analyze it standalone (such as discover
> >>>>>>> anomalies,
> >>>>>>>>> for
> >>>>>>>>>>>> large
> >>>>>>>>>>>>> jobs with many states), across multiple savepoints
> >>>> (discover
> >>>>>>> how
> >>>>>>>>>> state
> >>>>>>>>>>>>> changed over time) or by joining it with keyed or
> >>>> non-keyed
> >>>>>>> state
> >>>>>>>>>> data
> >>>>>>>>>>> to
> >>>>>>>>>>>>> serve more complex queries on the state.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> The only solution that seems to serve all these
> >> use-cases
> >>>>> and
> >>>>>>>>>>>> requirements
> >>>>>>>>>>>>> in a straightforward and SQL canonical way is to simply
> >>>>> expose
> >>>>>>>> the
> >>>>>>>>>>> state
> >>>>>>>>>>>>> metadata as a separate table. This is a metadata table
> >>>> but
> >>>>> you
> >>>>>>>> can
> >>>>>>>>>> also
> >>>>>>>>>>>>> think of it as data table, it makes no practical
> >>>> difference
> >>>>>>> here.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Once we have a catalog later, the catalog can offer
> >> this
> >>>>> table
> >>>>>>>> out
> >>>>>>>>> of
> >>>>>>>>>>> the
> >>>>>>>>>>>>> box, the same way databases provide metadata tables.
> >> For
> >>>>> this
> >>>>>>> to
> >>>>>>>>> work
> >>>>>>>>>>>>> however we need another, simpler connector that creates
> >>>> this
> >>>>>>>> table.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> +1 for state metadata as a separate connector/table,
> >>>> instead
> >>>>>>> of
> >>>>>>>>>> adding
> >>>>>>>>>>>>> virtual columns and adhoc catalog metadata that is hard
> >>>> to
> >>>>> use
> >>>>>>>> in a
> >>>>>>>>>>> large
> >>>>>>>>>>>>> number of queries.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Cheers,
> >>>>>>>>>>>>> Gyula
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> On Mon, Mar 17, 2025 at 12:44 PM Gabor Somogyi <
> >>>>>>>>>>>> gabor.g.somo...@gmail.com>
> >>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>> 1. State TTL for Value Columns
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> I’m planning on adding this, and we may collaborate
> >>>> on
> >>>>> it
> >>>>>>> in
> >>>>>>>>> the
> >>>>>>>>>>>>> future.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> +1 on this, just ping me.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> 2. Metadata Table vs. Metadata Column
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> After some code digging and POC all I can say that
> >> with
> >>>>>>> heavy
> >>>>>>>>>> effort
> >>>>>>>>>>> we
> >>>>>>>>>>>>> can
> >>>>>>>>>>>>>> maybe add such changes that we're able to show
> >> metadata
> >>>>> of a
> >>>>>>>>>>> savepoint
> >>>>>>>>>>>>> from
> >>>>>>>>>>>>>> catalog.
> >>>>>>>>>>>>>> I'm not against that but from user perspective this
> >> has
> >>>>>>> limited
> >>>>>>>>>>> value,
> >>>>>>>>>>>>> let
> >>>>>>>>>>>>>> me explain why.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> From high level perspective I see the following
> >> which I
> >>>>> see
> >>>>>>>>>> agreement
> >>>>>>>>>>>> on:
> >>>>>>>>>>>>>> * We should have a catalog which is representing one
> >> or
> >>>>> more
> >>>>>>>> jobs
> >>>>>>>>>>>>> savepoint
> >>>>>>>>>>>>>> data set (future plan)
> >>>>>>>>>>>>>> * Savepoints should be able to be registered in the
> >>>>> catalog
> >>>>>>>> which
> >>>>>>>>>> are
> >>>>>>>>>>>>> then
> >>>>>>>>>>>>>> databases (future plan)
> >>>>>>>>>>>>>> * There must be a possiblity to create tables from
> >>>>> databases
> >>>>>>>>> where
> >>>>>>>>>>>> users
> >>>>>>>>>>>>>> can read state data (exists already)
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> In terms of metadata, If I understand correctly then
> >>>> the
> >>>>>>>>> suggested
> >>>>>>>>>>>>> approach
> >>>>>>>>>>>>>> would be to access
> >>>>>>>>>>>>>> it from the catalog describe command, right? Adding
> >>>> that
> >>>>>>> info
> >>>>>>>>> when
> >>>>>>>>>>>>> specific
> >>>>>>>>>>>>>> database describe command
> >>>>>>>>>>>>>> is executed could be done.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> The question is for instance how can users create
> >> such
> >>>> a
> >>>>>>> logic
> >>>>>>>>> that
> >>>>>>>>>>>> tells
> >>>>>>>>>>>>>> them what is
> >>>>>>>>>>>>>> the difference between multiple savepoints?
> >>>>>>>>>>>>>> Just to give some examples:
> >>>>>>>>>>>>>> * per operator size changes between savepoints
> >>>>>>>>>>>>>> * show values from operator data where state size
> >>>> reaches
> >>>>> a
> >>>>>>>>>> boundary
> >>>>>>>>>>>>>> * in general "find which checkpoint ruined things" is
> >>>>> quite
> >>>>>>>>> common
> >>>>>>>>>>>>> pattern
> >>>>>>>>>>>>>> What I would like to highlight here is that from
> >> Flink
> >>>>>>> point of
> >>>>>>>>>> view
> >>>>>>>>>>>> the
> >>>>>>>>>>>>>> metadata can be
> >>>>>>>>>>>>>> considered as a static side output information but
> >> for
> >>>>> users
> >>>>>>>>> these
> >>>>>>>>>>>> values
> >>>>>>>>>>>>>> are actual real data
> >>>>>>>>>>>>>> where logic is planned to build around.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> The metadata is more like one-time information
> >>>> instead
> >>>>> of
> >>>>>>> a
> >>>>>>>>>>> streaming
> >>>>>>>>>>>>>> data that changes all
> >>>>>>>>>>>>>> the time, so a single connector seems to be an
> >>>> overkill.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> State data is also static within a savepoint and
> >> that's
> >>>>> the
> >>>>>>>>> reason
> >>>>>>>>>>> why
> >>>>>>>>>>>>> the
> >>>>>>>>>>>>>> state processor API is working in batch mode.
> >>>>>>>>>>>>>> When we handle multiple checkpoints in a streaming
> >>>> fashion
> >>>>>>> then
> >>>>>>>>>> this
> >>>>>>>>>>>> can
> >>>>>>>>>>>>> be
> >>>>>>>>>>>>>> viewed from another angle.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> We can come up with more lightweight solution other
> >>>> than a
> >>>>>>> new
> >>>>>>>>>>>> connector
> >>>>>>>>>>>>>> but enforcing users to parse the catalog
> >>>>>>>>>>>>>> describe command output in order to compare multiple
> >>>>>>> savepoints
> >>>>>>>>>>> doesn't
> >>>>>>>>>>>>>> sound smooth user experience.
> >>>>>>>>>>>>>> Honestly I've no other idea how exposing metadata as
> >>>> real
> >>>>>>> user
> >>>>>>>>> data
> >>>>>>>>>>> so
> >>>>>>>>>>>>>> waiting on other approaches.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> BR,
> >>>>>>>>>>>>>> G
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> On Thu, Mar 13, 2025 at 2:44 AM Shengkai Fang <
> >>>>>>>> fskm...@gmail.com
> >>>>>>>>>>
> >>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Looking forward to hearing the good news!
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Best,
> >>>>>>>>>>>>>>> Shengkai
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Gabor Somogyi <gabor.g.somo...@gmail.com>
> >>>> 于2025年3月12日周三
> >>>>>>>>> 22:24写道:
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Thanks for both the valuable input!
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Let me take a closer look at the suggestions,
> >> like
> >>>> the
> >>>>>>>>> Catalog
> >>>>>>>>>>>>>>> capabilities
> >>>>>>>>>>>>>>>> and possibility of embedding TypeInformation or
> >>>>>>>>>>>>>>>> StateDescriptor metadata directly into the raw
> >>>> state
> >>>>>>>> files...
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> BR,
> >>>>>>>>>>>>>>>> G
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> On Wed, Mar 12, 2025 at 8:17 AM Shengkai Fang <
> >>>>>>>>>> fskm...@gmail.com
> >>>>>>>>>>>>
> >>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Thanks for Zakelly's clarification.
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> 1. State TTL for Value Columns
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> +1 to delay the discussion about this.
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> 2. Metadata Table vs. Metadata Column
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> I’d like to share my perspective on the State
> >>>>> Catalog
> >>>>>>>>>> proposal.
> >>>>>>>>>>>>> While
> >>>>>>>>>>>>>>>>> introducing this capability is beneficial,
> >> there
> >>>> is
> >>>>> a
> >>>>>>>>>> blocker:
> >>>>>>>>>>>> the
> >>>>>>>>>>>>>>>> current
> >>>>>>>>>>>>>>>>> StateBackend architecture does not permit
> >>>> operators
> >>>>> to
> >>>>>>>>> encode
> >>>>>>>>>>>>>>>>> TypeInformation into the state—it only
> >> preserves
> >>>> the
> >>>>>>>>>>> Serializer.
> >>>>>>>>>>>>> This
> >>>>>>>>>>>>>>>>> limitation creates an asymmetry, as operators
> >>>> alone
> >>>>>>>> retain
> >>>>>>>>>>>>> knowledge
> >>>>>>>>>>>>>> of
> >>>>>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>> data structure’s schema.
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> To address this, I suggest allowing operators
> >> to
> >>>>> embed
> >>>>>>>>>>>>>> TypeInformation
> >>>>>>>>>>>>>>> or
> >>>>>>>>>>>>>>>>> StateDescriptor metadata directly into the raw
> >>>> state
> >>>>>>>> files.
> >>>>>>>>>>> Such
> >>>>>>>>>>>> a
> >>>>>>>>>>>>>>> design
> >>>>>>>>>>>>>>>>> would enable the Catalog to:
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> 1. Parse state files and programmatically
> >> derive
> >>>> the
> >>>>>>>> schema
> >>>>>>>>>> and
> >>>>>>>>>>>>>>>> structural
> >>>>>>>>>>>>>>>>> guarantees for each state.
> >>>>>>>>>>>>>>>>> 2. Leverage existing Flink Table utilities,
> >> such
> >>>> as
> >>>>>>>>>>>>>>>>> LegacyTypeInfoDataTypeConverter (in
> >>>>>>>>>>>>>>> org.apache.flink.table.types.utils),
> >>>>>>>>>>>>>>>> to
> >>>>>>>>>>>>>>>>> bridge TypeInformation and DataType
> >> conversions.
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> If we can not store the TypeInformation or
> >>>>>>>> StateDescriptor
> >>>>>>>>>> into
> >>>>>>>>>>>> the
> >>>>>>>>>>>>>> raw
> >>>>>>>>>>>>>>>>> state files, I am +1 for this FLIP to use
> >>>> metadata
> >>>>>>> column
> >>>>>>>>> to
> >>>>>>>>>>>>> retrieve
> >>>>>>>>>>>>>>>>> information.
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Best,
> >>>>>>>>>>>>>>>>> Shengkai
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Zakelly Lan <zakelly....@gmail.com>
> >>>> 于2025年3月12日周三
> >>>>>>>> 12:43写道:
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> Hi Gabor and Shengkai,
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> Thanks for sharing your thoughts! This is a
> >>>> long
> >>>>>>>>> discussion
> >>>>>>>>>>> and
> >>>>>>>>>>>>>> sorry
> >>>>>>>>>>>>>>>> for
> >>>>>>>>>>>>>>>>>> the late reply (I'm busy catching up with
> >>>> release
> >>>>>>> 2.0
> >>>>>>>>> these
> >>>>>>>>>>>>> days).
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> 1. State TTL for Value Columns
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> Let me first clarify your thoughts to ensure
> >> I
> >>>>>>>> understand
> >>>>>>>>>>>>>> correctly.
> >>>>>>>>>>>>>>>>> IIUC,
> >>>>>>>>>>>>>>>>>> there is no persistent configuration for
> >> state
> >>>> TTL
> >>>>>>> in
> >>>>>>>> the
> >>>>>>>>>>>>>> checkpoint.
> >>>>>>>>>>>>>>>>> While
> >>>>>>>>>>>>>>>>>> you can infer that TTL is enabled by reading
> >>>> the
> >>>>>>>>>> serializer,
> >>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>> checkpoint
> >>>>>>>>>>>>>>>>>> itself only stores the last access time for
> >>>> each
> >>>>>>> value.
> >>>>>>>>> So
> >>>>>>>>>>> the
> >>>>>>>>>>>>> only
> >>>>>>>>>>>>>>>> thing
> >>>>>>>>>>>>>>>>>> we can show is the last access time for each
> >>>>> value.
> >>>>>>> But
> >>>>>>>>> it
> >>>>>>>>>> is
> >>>>>>>>>>>> not
> >>>>>>>>>>>>>>>>> required
> >>>>>>>>>>>>>>>>>> for all state backends to store this, as they
> >>>> may
> >>>>>>>>> directly
> >>>>>>>>>>>> store
> >>>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>>> expired time. This will also increase the
> >>>>>>> difficulty of
> >>>>>>>>>>>>>>> implementation
> >>>>>>>>>>>>>>>> &
> >>>>>>>>>>>>>>>>>> maintenance.
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> This once again reiterates the importance of
> >>>>> unified
> >>>>>>>>>> metadata
> >>>>>>>>>>>> for
> >>>>>>>>>>>>>>>>>> checkpoints. I’m planning on adding this, and
> >>>> we
> >>>>> may
> >>>>>>>>>>>> collaborate
> >>>>>>>>>>>>> on
> >>>>>>>>>>>>>>> it
> >>>>>>>>>>>>>>>> in
> >>>>>>>>>>>>>>>>>> the future.
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> 2. Metadata Table vs. Metadata Column
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> I'm not in favor of adding a new connector
> >> for
> >>>>>>>> metadata.
> >>>>>>>>>> The
> >>>>>>>>>>>>>> metadata
> >>>>>>>>>>>>>>>> is
> >>>>>>>>>>>>>>>>>> more like one-time information instead of a
> >>>>>>> streaming
> >>>>>>>>> data
> >>>>>>>>>>> that
> >>>>>>>>>>>>>>> changes
> >>>>>>>>>>>>>>>>> all
> >>>>>>>>>>>>>>>>>> the time, so a single connector seems to be
> >> an
> >>>>>>>> overkill.
> >>>>>>>>> It
> >>>>>>>>>>> is
> >>>>>>>>>>>>> not
> >>>>>>>>>>>>>>> easy
> >>>>>>>>>>>>>>>>> to
> >>>>>>>>>>>>>>>>>> withdraw a connector if we have a better
> >>>> solution
> >>>>> in
> >>>>>>>>>> future.
> >>>>>>>>>>>> I'm
> >>>>>>>>>>>>>> not
> >>>>>>>>>>>>>>>>>> familiar with current Catalog capabilities,
> >>>> and if
> >>>>>>> it
> >>>>>>>>> could
> >>>>>>>>>>>>> extract
> >>>>>>>>>>>>>>> and
> >>>>>>>>>>>>>>>>>> show some operator-level information from
> >>>>> savepoint,
> >>>>>>>> that
> >>>>>>>>>>> would
> >>>>>>>>>>>>> be
> >>>>>>>>>>>>>>>> great.
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> If the Catalog can't do that, I would
> >> consider
> >>>> the
> >>>>>>>>> current
> >>>>>>>>>>> FLIP
> >>>>>>>>>>>>> to
> >>>>>>>>>>>>>>> be a
> >>>>>>>>>>>>>>>>>> compromise solution.
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> And if we have that unified metadata for
> >>>>>>>>>> checkpoint/savepoint
> >>>>>>>>>>>> in
> >>>>>>>>>>>>>>>> future,
> >>>>>>>>>>>>>>>>> we
> >>>>>>>>>>>>>>>>>> may directly register savepoint in catalog,
> >> and
> >>>>>>> create
> >>>>>>>> a
> >>>>>>>>>>> source
> >>>>>>>>>>>>>>> without
> >>>>>>>>>>>>>>>>>> specifying complex columns, as well as
> >> describe
> >>>>> the
> >>>>>>>>>> savepoint
> >>>>>>>>>>>>>> catalog
> >>>>>>>>>>>>>>>> to
> >>>>>>>>>>>>>>>>>> get the metadata. That's a good solution in
> >> my
> >>>>> mind.
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> Best,
> >>>>>>>>>>>>>>>>>> Zakelly
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> On Wed, Mar 12, 2025 at 10:35 AM Shengkai
> >> Fang
> >>>> <
> >>>>>>>>>>>>> fskm...@gmail.com>
> >>>>>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> Hi Gabor,
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> 2. Adding a new connector with
> >>>>>>> `savepoint-metadata`
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> I would argue against introducing a new
> >>>>> connector
> >>>>>>>> type
> >>>>>>>>>>> named
> >>>>>>>>>>>>>>>>>>> savepoint-metadata, as the existing Catalog
> >>>>>>> mechanism
> >>>>>>>>> can
> >>>>>>>>>>>>>>> inherently
> >>>>>>>>>>>>>>>>>>> provide the necessary connector factory
> >>>>>>> capabilities.
> >>>>>>>>>> I’ve
> >>>>>>>>>>>>>> detailed
> >>>>>>>>>>>>>>>>> this
> >>>>>>>>>>>>>>>>>>> proposal in branch[1]. Please take a moment
> >>>> to
> >>>>>>> review
> >>>>>>>>> it.
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> If we introduce a connector named
> >>>>>>>> `savepoint-metadata`,
> >>>>>>>>>> it
> >>>>>>>>>>>>> means
> >>>>>>>>>>>>>>> user
> >>>>>>>>>>>>>>>>> can
> >>>>>>>>>>>>>>>>>>> create a temporary table with connector
> >>>>>>>>>>> `savepoint-metadata`
> >>>>>>>>>>>>> and
> >>>>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>>>> connector needs to check whether table
> >>>> schema is
> >>>>>>> same
> >>>>>>>>> to
> >>>>>>>>>>> the
> >>>>>>>>>>>>>> schema
> >>>>>>>>>>>>>>>> we
> >>>>>>>>>>>>>>>>>>> proposed in the FLIP. On the other hand,
> >> it's
> >>>>> not
> >>>>>>>> easy
> >>>>>>>>>> work
> >>>>>>>>>>>> for
> >>>>>>>>>>>>>>>> others
> >>>>>>>>>>>>>>>>> to
> >>>>>>>>>>>>>>>>>>> users a metadata table with same schema.
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> [1]
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>
> >>>>
> >>
> https://github.com/apache/flink/compare/master...fsk119:flink:state-metadata?expand=1#diff-712a7bc92fe46c405fb0e61b475bb2a005cb7a72bab7df28bbb92744bcb5f465R63
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> Best,
> >>>>>>>>>>>>>>>>>>> Shengkai
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> Gabor Somogyi <gabor.g.somo...@gmail.com>
> >>>>>>>>> 于2025年3月11日周二
> >>>>>>>>>>>>> 16:56写道:
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> Hi Shengkai,
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> 1. State TTL for Value Columns
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> From directional perspective I agree your
> >>>> idea
> >>>>>>> how
> >>>>>>>> it
> >>>>>>>>>> can
> >>>>>>>>>>>> be
> >>>>>>>>>>>>>>>>>> implemented.
> >>>>>>>>>>>>>>>>>>>> Previously I've mentioned that TTL
> >>>> information
> >>>>>>> is
> >>>>>>>> not
> >>>>>>>>>>>> exposed
> >>>>>>>>>>>>>> on
> >>>>>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>>>> state
> >>>>>>>>>>>>>>>>>>>> processor API (which the SQL state
> >>>> connector
> >>>>>>> uses
> >>>>>>>> to
> >>>>>>>>>> read
> >>>>>>>>>>>>> data)
> >>>>>>>>>>>>>>>>>>>> and unless somebody show me the opposite
> >>>> this
> >>>>>>> FLIP
> >>>>>>>> is
> >>>>>>>>>> not
> >>>>>>>>>>>>> going
> >>>>>>>>>>>>>>> to
> >>>>>>>>>>>>>>>>>>> address
> >>>>>>>>>>>>>>>>>>>> this to avoid feature creep. Our users
> >> are
> >>>>> also
> >>>>>>>>>>> interested
> >>>>>>>>>>>> in
> >>>>>>>>>>>>>> TTL
> >>>>>>>>>>>>>>>> so
> >>>>>>>>>>>>>>>>>>>> sooner or later we're going to expose it,
> >>>> this
> >>>>>>> is
> >>>>>>>>>> matter
> >>>>>>>>>>> of
> >>>>>>>>>>>>>>>>> scheduling.
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> 2. Adding a new connector with
> >>>>>>>> `savepoint-metadata`
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> Not sure I understand your point at all
> >>>>> related
> >>>>>>>>>>>> StateCatalog.
> >>>>>>>>>>>>>>> First
> >>>>>>>>>>>>>>>>> of
> >>>>>>>>>>>>>>>>>>> all
> >>>>>>>>>>>>>>>>>>>> I can't agree more that StateCatalog is
> >>>> needed
> >>>>>>> and
> >>>>>>>>> is a
> >>>>>>>>>>>>> planned
> >>>>>>>>>>>>>>>>>> building
> >>>>>>>>>>>>>>>>>>>> block in an upcoming
> >>>>>>>>>>>>>>>>>>>> FLIP but not sure how can it help now? No
> >>>>> matter
> >>>>>>>>> what,
> >>>>>>>>>>> your
> >>>>>>>>>>>>>>>> knowledge
> >>>>>>>>>>>>>>>>>> is
> >>>>>>>>>>>>>>>>>>>> essential when we add StateCatalog. Let
> >> me
> >>>>>>> expose
> >>>>>>>> my
> >>>>>>>>>>>>>>> understanding
> >>>>>>>>>>>>>>>> in
> >>>>>>>>>>>>>>>>>>> this
> >>>>>>>>>>>>>>>>>>>> area:
> >>>>>>>>>>>>>>>>>>>> * First we need create table statements
> >> to
> >>>>>>> access
> >>>>>>>>> state
> >>>>>>>>>>>> data
> >>>>>>>>>>>>>> and
> >>>>>>>>>>>>>>>>>> metadata
> >>>>>>>>>>>>>>>>>>>> * When we have that then we can add
> >>>>> StateCatalog
> >>>>>>>>> which
> >>>>>>>>>>>> could
> >>>>>>>>>>>>>>>>>> potentially
> >>>>>>>>>>>>>>>>>>>> ease the life of users by for ex. giving
> >>>>>>>>> off-the-shelf
> >>>>>>>>>>>> tables
> >>>>>>>>>>>>>>>> without
> >>>>>>>>>>>>>>>>>>>> sweating with create table statements
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> User expectations:
> >>>>>>>>>>>>>>>>>>>> * See state data (this is fulfilled with
> >>>> the
> >>>>>>>> existing
> >>>>>>>>>>>>>> connector)
> >>>>>>>>>>>>>>>>>>>> * See metadata about state data like TTL
> >>>> (this
> >>>>>>> can
> >>>>>>>> be
> >>>>>>>>>>> added
> >>>>>>>>>>>>> as
> >>>>>>>>>>>>>>>>> metadata
> >>>>>>>>>>>>>>>>>>>> column as you suggested since it belongs
> >> to
> >>>>> the
> >>>>>>>> data)
> >>>>>>>>>>>>>>>>>>>> * See metadata about operators (this can
> >> be
> >>>>>>> added
> >>>>>>>>> from
> >>>>>>>>>>>>>>>>>>> savepoint-metadata)
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> Important to highlight that state data
> >>>> table
> >>>>>>> format
> >>>>>>>>>>> differs
> >>>>>>>>>>>>>> from
> >>>>>>>>>>>>>>>>> state
> >>>>>>>>>>>>>>>>>>>> metadata table format. Namely one table
> >> has
> >>>>> rows
> >>>>>>>> for
> >>>>>>>>>>> state
> >>>>>>>>>>>>>> values
> >>>>>>>>>>>>>>>> and
> >>>>>>>>>>>>>>>>>>>> another has rows for operators, right?
> >>>>>>>>>>>>>>>>>>>> I think that's the reason why you've
> >>>>> pinpointed
> >>>>>>> out
> >>>>>>>>>> that
> >>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>> suggested
> >>>>>>>>>>>>>>>>>>>> metadata columns are somewhat clunky.
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> As a conclusion I agree to add
> >>>>> ${state-name}_ttl
> >>>>>>>>>> metadata
> >>>>>>>>>>>>>> column
> >>>>>>>>>>>>>>>>> later
> >>>>>>>>>>>>>>>>>> on
> >>>>>>>>>>>>>>>>>>>> since it belongs to the state value and
> >>>>> adding a
> >>>>>>>> new
> >>>>>>>>>>> table
> >>>>>>>>>>>>> type
> >>>>>>>>>>>>>>>> (like
> >>>>>>>>>>>>>>>>>> you
> >>>>>>>>>>>>>>>>>>>> suggested similar to PG [1])
> >>>>>>>>>>>>>>>>>>>> for metadata. Please see how Spark does
> >>>> that
> >>>>> too
> >>>>>>>> [2].
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> If you have better approach then please
> >>>>>>> elaborate
> >>>>>>>>> with
> >>>>>>>>>>> more
> >>>>>>>>>>>>>>> details
> >>>>>>>>>>>>>>>>> and
> >>>>>>>>>>>>>>>>>>>> help me to understand your point.
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> Up until now we've seen even in TB
> >>>>> savepoints
> >>>>>>>> that
> >>>>>>>>>> the
> >>>>>>>>>>>>> number
> >>>>>>>>>>>>>>> of
> >>>>>>>>>>>>>>>>> keys
> >>>>>>>>>>>>>>>>>>> can
> >>>>>>>>>>>>>>>>>>>>> be extremely huge but not the per key
> >>>> state
> >>>>>>>> itself.
> >>>>>>>>>>>>>>>>>>>>> But again, this is a good feature as-is
> >>>> and
> >>>>>>> can
> >>>>>>>> be
> >>>>>>>>>>>> handled
> >>>>>>>>>>>>>> in a
> >>>>>>>>>>>>>>>>>>> separate
> >>>>>>>>>>>>>>>>>>>>> jira.
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> I've just created
> >>>>>>>>>>>>>>>>
> >> https://issues.apache.org/jira/browse/FLINK-37456.
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> [1]
> >>>>>>>>>>>>>>
> >>>>> https://www.postgresql.org/docs/current/view-pg-tables.html
> >>>>>>>>>>>>>>>>>>>> [2]
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>
> >>>>
> >>
> https://www.databricks.com/blog/announcing-state-reader-api-new-statestore-data-source
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> BR,
> >>>>>>>>>>>>>>>>>>>> G
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> On Tue, Mar 11, 2025 at 3:55 AM Shengkai
> >>>> Fang
> >>>>> <
> >>>>>>>>>>>>>> fskm...@gmail.com
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> Hi, Gabor. Thanks for your response.
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> 1. State TTL for Value Columns
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> Thank you for addressing the
> >> limitations
> >>>>> here.
> >>>>>>>>>>> However, I
> >>>>>>>>>>>>>>> believe
> >>>>>>>>>>>>>>>>> it
> >>>>>>>>>>>>>>>>>>>> would
> >>>>>>>>>>>>>>>>>>>>> be beneficial to further clarify the
> >> API
> >>>> in
> >>>>>>> this
> >>>>>>>>> FLIP
> >>>>>>>>>>>>>> regarding
> >>>>>>>>>>>>>>>> how
> >>>>>>>>>>>>>>>>>>> users
> >>>>>>>>>>>>>>>>>>>>> can specify the TTL column.
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> One potential approach that comes to
> >>>> mind is
> >>>>>>>> using
> >>>>>>>>> a
> >>>>>>>>>>>>>>> standardized
> >>>>>>>>>>>>>>>>>>> naming
> >>>>>>>>>>>>>>>>>>>>> convention such as ${state-name}_ttl
> >> for
> >>>> the
> >>>>>>>>> metadata
> >>>>>>>>>>>>> column
> >>>>>>>>>>>>>>> that
> >>>>>>>>>>>>>>>>>>> defines
> >>>>>>>>>>>>>>>>>>>>> the TTL value. In terms of
> >>>> implementation,
> >>>>> the
> >>>>>>>>>>>>>>>> listReadableMetadata
> >>>>>>>>>>>>>>>>>>>>> function could:
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> 1. Read the table’s columns and
> >>>>> configuration,
> >>>>>>>>>>>>>>>>>>>>> 2. Extract all defined state names, and
> >>>>>>>>>>>>>>>>>>>>> 3. Return a structured list of metadata
> >>>>>>> entries
> >>>>>>>>>>> formatted
> >>>>>>>>>>>>> as
> >>>>>>>>>>>>>>>>>>>>> ${state-name}_ttl.
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> WDYT?
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> 2. Adding a new connector with
> >>>>>>>>> `savepoint-metadata`
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> Introducing a new connector type at
> >> this
> >>>>> stage
> >>>>>>>> may
> >>>>>>>>>>>>>>> unnecessarily
> >>>>>>>>>>>>>>>>>>>> complicate
> >>>>>>>>>>>>>>>>>>>>> the system. Given that every table
> >>>> already
> >>>>>>>> belongs
> >>>>>>>>>> to a
> >>>>>>>>>>>>>>> Catalog,
> >>>>>>>>>>>>>>>>>> which
> >>>>>>>>>>>>>>>>>>> is
> >>>>>>>>>>>>>>>>>>>>> designed to provide a Factory for
> >>>> building
> >>>>>>> source
> >>>>>>>>> or
> >>>>>>>>>>> sink
> >>>>>>>>>>>>>>>>>> connectors, I
> >>>>>>>>>>>>>>>>>>>>> propose integrating a dedicated
> >>>> StateCatalog
> >>>>>>>>> instead.
> >>>>>>>>>>>> This
> >>>>>>>>>>>>>>>> approach
> >>>>>>>>>>>>>>>>>>> would
> >>>>>>>>>>>>>>>>>>>>> allow us to:
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> 1. Leverage the Catalog’s existing
> >>>>>>> capabilities
> >>>>>>>> to
> >>>>>>>>>>> manage
> >>>>>>>>>>>>> TTL
> >>>>>>>>>>>>>>>>>> metadata
> >>>>>>>>>>>>>>>>>>>>> (e.g., state names and TTL logic)
> >> without
> >>>>>>>>> duplicating
> >>>>>>>>>>>>>>>>> functionality.
> >>>>>>>>>>>>>>>>>>>>> 2. Provide a unified interface for
> >>>> connector
> >>>>>>>>>>>> instantiation
> >>>>>>>>>>>>>> and
> >>>>>>>>>>>>>>>>>> metadata
> >>>>>>>>>>>>>>>>>>>>> handling through the Catalog’s Factory
> >>>>>>> pattern.
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> Would this design decision better align
> >>>> with
> >>>>>>> our
> >>>>>>>>>>>>>> architecture’s
> >>>>>>>>>>>>>>>>>>>>> extensibility and reduce redundancy?
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> Up until now we've seen even in TB
> >>>>>>> savepoints
> >>>>>>>>> that
> >>>>>>>>>>> the
> >>>>>>>>>>>>>> number
> >>>>>>>>>>>>>>>> of
> >>>>>>>>>>>>>>>>>> keys
> >>>>>>>>>>>>>>>>>>>> can
> >>>>>>>>>>>>>>>>>>>>>> be extremely huge but not the per key
> >>>>> state
> >>>>>>>>> itself.
> >>>>>>>>>>>>>>>>>>>>>> But again, this is a good feature
> >> as-is
> >>>>> and
> >>>>>>> can
> >>>>>>>>> be
> >>>>>>>>>>>>> handled
> >>>>>>>>>>>>>>> in a
> >>>>>>>>>>>>>>>>>>>> separate
> >>>>>>>>>>>>>>>>>>>>>> jira.
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> +1 for a separate jira.
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> Best,
> >>>>>>>>>>>>>>>>>>>>> Shengkai
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> Gabor Somogyi <
> >> gabor.g.somo...@gmail.com
> >>>>>
> >>>>>>>>>>> 于2025年3月10日周一
> >>>>>>>>>>>>>>> 19:05写道:
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> Hi Shengkai,
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> Please see my comments inline.
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> BR,
> >>>>>>>>>>>>>>>>>>>>>> G
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> On Mon, Mar 3, 2025 at 7:07 AM
> >> Shengkai
> >>>>>>> Fang <
> >>>>>>>>>>>>>>>> fskm...@gmail.com>
> >>>>>>>>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>> Hi, Gabor. Thanks for your the
> >> FLIP.
> >>>> I
> >>>>>>> have
> >>>>>>>>> some
> >>>>>>>>>>>>>> questions
> >>>>>>>>>>>>>>>>> about
> >>>>>>>>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>>>>>>> FLIP:
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>> 1. State TTL for Value Columns
> >>>>>>>>>>>>>>>>>>>>>>> How can users retrieve the state
> >> TTL
> >>>>>>>>>> (Time-to-Live)
> >>>>>>>>>>>> for
> >>>>>>>>>>>>>>> each
> >>>>>>>>>>>>>>>>>> value
> >>>>>>>>>>>>>>>>>>>>>> column?
> >>>>>>>>>>>>>>>>>>>>>>> From my understanding of the
> >> current
> >>>>>>> design,
> >>>>>>>> it
> >>>>>>>>>>> seems
> >>>>>>>>>>>>>> that
> >>>>>>>>>>>>>>>> this
> >>>>>>>>>>>>>>>>>>>>>>> functionality is not supported.
> >> Could
> >>>>> you
> >>>>>>>>> clarify
> >>>>>>>>>>> if
> >>>>>>>>>>>>>> there
> >>>>>>>>>>>>>>>> are
> >>>>>>>>>>>>>>>>>>> plans
> >>>>>>>>>>>>>>>>>>>> to
> >>>>>>>>>>>>>>>>>>>>>>> address this limitation?
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> Since the state processor API is not
> >>>> yet
> >>>>>>>> exposing
> >>>>>>>>>>> this
> >>>>>>>>>>>>>>>>> information
> >>>>>>>>>>>>>>>>>>> this
> >>>>>>>>>>>>>>>>>>>>>> would require several steps.
> >>>>>>>>>>>>>>>>>>>>>> First, the state processor API
> >> support
> >>>>>>> needs to
> >>>>>>>>> be
> >>>>>>>>>>>> added
> >>>>>>>>>>>>>>> which
> >>>>>>>>>>>>>>>>> can
> >>>>>>>>>>>>>>>>>> be
> >>>>>>>>>>>>>>>>>>>>> then
> >>>>>>>>>>>>>>>>>>>>>> exposed on the SQL API.
> >>>>>>>>>>>>>>>>>>>>>> This is definitely a future
> >> improvement
> >>>>>>> which
> >>>>>>>> is
> >>>>>>>>>>> useful
> >>>>>>>>>>>>> and
> >>>>>>>>>>>>>>> can
> >>>>>>>>>>>>>>>>> be
> >>>>>>>>>>>>>>>>>>>>> handled
> >>>>>>>>>>>>>>>>>>>>>> in a separate jira.
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>> 2. Metadata Table vs. Metadata
> >> Column
> >>>>>>>>>>>>>>>>>>>>>>> The metadata information described
> >> in
> >>>>> the
> >>>>>>>> FLIP
> >>>>>>>>>>>> appears
> >>>>>>>>>>>>> to
> >>>>>>>>>>>>>>> be
> >>>>>>>>>>>>>>>>>>> intended
> >>>>>>>>>>>>>>>>>>>>> to
> >>>>>>>>>>>>>>>>>>>>>>> describe the state files stored at
> >> a
> >>>>>>> specific
> >>>>>>>>>>>> location.
> >>>>>>>>>>>>>> To
> >>>>>>>>>>>>>>>> me,
> >>>>>>>>>>>>>>>>>> this
> >>>>>>>>>>>>>>>>>>>>>> concept
> >>>>>>>>>>>>>>>>>>>>>>> aligns more closely with system
> >>>> tables
> >>>>>>> like
> >>>>>>>>>>> pg_tables
> >>>>>>>>>>>>> in
> >>>>>>>>>>>>>>>>>> PostgreSQL
> >>>>>>>>>>>>>>>>>>>> [1]
> >>>>>>>>>>>>>>>>>>>>>> or
> >>>>>>>>>>>>>>>>>>>>>>> the INFORMATION_SCHEMA in MySQL
> >> [2].
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> Adding a new connector with
> >>>>>>>> `savepoint-metadata`
> >>>>>>>>>> is a
> >>>>>>>>>>>>>>>> possibility
> >>>>>>>>>>>>>>>>>>> where
> >>>>>>>>>>>>>>>>>>>>> we
> >>>>>>>>>>>>>>>>>>>>>> can create such functionality.
> >>>>>>>>>>>>>>>>>>>>>> I'm not against that, just want to
> >>>> have a
> >>>>>>>> common
> >>>>>>>>>>>>> agreement
> >>>>>>>>>>>>>>> that
> >>>>>>>>>>>>>>>>> we
> >>>>>>>>>>>>>>>>>>>> would
> >>>>>>>>>>>>>>>>>>>>>> like to move that direction.
> >>>>>>>>>>>>>>>>>>>>>> (As a side note not just PG but Spark
> >>>> also
> >>>>>>> has
> >>>>>>>>>>> similar
> >>>>>>>>>>>>>>> approach
> >>>>>>>>>>>>>>>>>> and I
> >>>>>>>>>>>>>>>>>>>>>> basically like the idea).
> >>>>>>>>>>>>>>>>>>>>>> If we would go that direction
> >> savepoint
> >>>>>>>> metadata
> >>>>>>>>>> can
> >>>>>>>>>>> be
> >>>>>>>>>>>>>>> reached
> >>>>>>>>>>>>>>>>> in
> >>>>>>>>>>>>>>>>>> a
> >>>>>>>>>>>>>>>>>>>> way
> >>>>>>>>>>>>>>>>>>>>>> that one row would represent
> >>>>>>>>>>>>>>>>>>>>>> an operator with it's values
> >> something
> >>>>> like
> >>>>>>>> this:
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>
> >>>>
> >>
> ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬────────┐
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>
> >>>>
> >>
> │operatorN│operatorU│operatorH│paralleli│maxParall│subtaskSt│coordinat│totalSta│
> >>>>>>>>>>>>>>>>>>>>>> │ame      │id       │ash      │sm
> >>>>>>> │elism
> >>>>>>>>>>>>>>>>>>>>>> │atesCount│orStateSi│tesSizeI│
> >>>>>>>>>>>>>>>>>>>>>> │         │         │         │
> >>>> │
> >>>>>>>>> │
> >>>>>>>>>>>>>>>>>>>>>> │zeInBytes│nBytes  │
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>
> >>>>
> >>
> ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼────────┤
> >>>>>>>>>>>>>>>>>>>>>> │Source:  │datagen-s│47aee9439│2
> >>>>> │128
> >>>>>>>>>> │2
> >>>>>>>>>>>>>>> │16
> >>>>>>>>>>>>>>>>>>>>>> │546     │
> >>>>>>>>>>>>>>>>>>>>>> │datagen-s│ource-uid│4d6ea26e2│
> >>>> │
> >>>>>>>>> │
> >>>>>>>>>>>>>> │
> >>>>>>>>>>>>>>>>>>> │
> >>>>>>>>>>>>>>>>>>>>>>    │
> >>>>>>>>>>>>>>>>>>>>>> │ource    │         │d544bef0a│
> >>>> │
> >>>>>>>>> │
> >>>>>>>>>>>>>> │
> >>>>>>>>>>>>>>>>>>> │
> >>>>>>>>>>>>>>>>>>>>>>    │
> >>>>>>>>>>>>>>>>>>>>>> │         │         │37bb5    │
> >>>> │
> >>>>>>>>> │
> >>>>>>>>>>>>>> │
> >>>>>>>>>>>>>>>>>>> │
> >>>>>>>>>>>>>>>>>>>>>>    │
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>
> >>>>
> >>
> ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼────────┤
> >>>>>>>>>>>>>>>>>>>>>> │long-udf-│long-udf-│6ed3f40bf│2
> >>>>> │128
> >>>>>>>>>> │2
> >>>>>>>>>>>>>>> │0
> >>>>>>>>>>>>>>>>>>>> │0
> >>>>>>>>>>>>>>>>>>>>>>     │
> >>>>>>>>>>>>>>>>>>>>>> │with-mast│with-mast│f3c8dfcdf│
> >>>> │
> >>>>>>>>> │
> >>>>>>>>>>>>>> │
> >>>>>>>>>>>>>>>>>>> │
> >>>>>>>>>>>>>>>>>>>>>>    │
> >>>>>>>>>>>>>>>>>>>>>> │er-hook  │er-hook-u│cb95128a1│
> >>>> │
> >>>>>>>>> │
> >>>>>>>>>>>>>> │
> >>>>>>>>>>>>>>>>>>> │
> >>>>>>>>>>>>>>>>>>>>>>    │
> >>>>>>>>>>>>>>>>>>>>>> │         │id       │018f1    │
> >>>> │
> >>>>>>>>> │
> >>>>>>>>>>>>>> │
> >>>>>>>>>>>>>>>>>>> │
> >>>>>>>>>>>>>>>>>>>>>>    │
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>
> >>>>
> >>
> ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼────────┤
> >>>>>>>>>>>>>>>>>>>>>> │value-pro│value-pro│ca4f5fe9a│2
> >>>>> │128
> >>>>>>>>>> │2
> >>>>>>>>>>>>>>> │0
> >>>>>>>>>>>>>>>>>>>>>> │40726   │
> >>>>>>>>>>>>>>>>>>>>>> │cess     │cess-uid │637b656f0│
> >>>> │
> >>>>>>>>> │
> >>>>>>>>>>>>>> │
> >>>>>>>>>>>>>>>>>>> │
> >>>>>>>>>>>>>>>>>>>>>>    │
> >>>>>>>>>>>>>>>>>>>>>> │         │         │9ea78b3e7│
> >>>> │
> >>>>>>>>> │
> >>>>>>>>>>>>>> │
> >>>>>>>>>>>>>>>>>>> │
> >>>>>>>>>>>>>>>>>>>>>>    │
> >>>>>>>>>>>>>>>>>>>>>> │         │         │a15b9    │
> >>>> │
> >>>>>>>>> │
> >>>>>>>>>>>>>> │
> >>>>>>>>>>>>>>>>>>> │
> >>>>>>>>>>>>>>>>>>>>>>    │
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>
> >>>>
> >>
> ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼────────┤
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> This table can then be joined with
> >> the
> >>>>>>> actually
> >>>>>>>>>>>> existing
> >>>>>>>>>>>>>>>>>> `savepoint`
> >>>>>>>>>>>>>>>>>>>>>> connector created tables based on UID
> >>>> hash
> >>>>>>>> (which
> >>>>>>>>>> is
> >>>>>>>>>>>>> unique
> >>>>>>>>>>>>>>> and
> >>>>>>>>>>>>>>>>>>> always
> >>>>>>>>>>>>>>>>>>>>>> exists).
> >>>>>>>>>>>>>>>>>>>>>> This would mean that the already
> >>>> existing
> >>>>>>> table
> >>>>>>>>>> would
> >>>>>>>>>>>>> need
> >>>>>>>>>>>>>>>> only a
> >>>>>>>>>>>>>>>>>>>> single
> >>>>>>>>>>>>>>>>>>>>>> metadata column which is the UID
> >> hash.
> >>>>>>>>>>>>>>>>>>>>>> WDYT?
> >>>>>>>>>>>>>>>>>>>>>> @zakelly, plz share your thoughts
> >> too.
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>> If we opt to use metadata columns,
> >>>> every
> >>>>>>>> record
> >>>>>>>>>> in
> >>>>>>>>>>>> the
> >>>>>>>>>>>>>>> table
> >>>>>>>>>>>>>>>>>> would
> >>>>>>>>>>>>>>>>>>>> end
> >>>>>>>>>>>>>>>>>>>>> up
> >>>>>>>>>>>>>>>>>>>>>>> having identical values for these
> >>>>> columns
> >>>>>>>>> (please
> >>>>>>>>>>>>> correct
> >>>>>>>>>>>>>>> me
> >>>>>>>>>>>>>>>> if
> >>>>>>>>>>>>>>>>>> I’m
> >>>>>>>>>>>>>>>>>>>>>>> mistaken). On the other hand, the
> >>>> state
> >>>>>>>>> connector
> >>>>>>>>>>>>>> requires
> >>>>>>>>>>>>>>>>> users
> >>>>>>>>>>>>>>>>>> to
> >>>>>>>>>>>>>>>>>>>>>> specify
> >>>>>>>>>>>>>>>>>>>>>>> an operator UID or operator UID
> >> hash,
> >>>>>>> after
> >>>>>>>>> which
> >>>>>>>>>>> it
> >>>>>>>>>>>>>>> outputs
> >>>>>>>>>>>>>>>>>>>>> user-defined
> >>>>>>>>>>>>>>>>>>>>>>> values in its records. This
> >> approach
> >>>>> feels
> >>>>>>>>>> somewhat
> >>>>>>>>>>>>>>> redundant
> >>>>>>>>>>>>>>>>> to
> >>>>>>>>>>>>>>>>>>> me.
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> If we would add a new
> >>>> `savepoint-metadata`
> >>>>>>>>>> connector
> >>>>>>>>>>>> then
> >>>>>>>>>>>>>>> this
> >>>>>>>>>>>>>>>>> can
> >>>>>>>>>>>>>>>>>> be
> >>>>>>>>>>>>>>>>>>>>>> addressed.
> >>>>>>>>>>>>>>>>>>>>>> On the other hand UID and UID hash
> >> are
> >>>>>>> having
> >>>>>>>>>>> either-or
> >>>>>>>>>>>>>>>>>> relationship
> >>>>>>>>>>>>>>>>>>>> from
> >>>>>>>>>>>>>>>>>>>>>> config perspective,
> >>>>>>>>>>>>>>>>>>>>>> so when a user provides the UID then
> >>>>> he/she
> >>>>>>> can
> >>>>>>>>> be
> >>>>>>>>>>>>>> interested
> >>>>>>>>>>>>>>>> in
> >>>>>>>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>>>>> hash
> >>>>>>>>>>>>>>>>>>>>>> for further calculations
> >>>>>>>>>>>>>>>>>>>>>> (the whole Flink internals are
> >>>> depending
> >>>>> on
> >>>>>>> the
> >>>>>>>>>>> hash).
> >>>>>>>>>>>>>>> Printing
> >>>>>>>>>>>>>>>>> out
> >>>>>>>>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>>>>>>> human readable UID
> >>>>>>>>>>>>>>>>>>>>>> is an explicit requirement from the
> >>>> user
> >>>>>>> side
> >>>>>>>>>> because
> >>>>>>>>>>>>>> hashes
> >>>>>>>>>>>>>>>> are
> >>>>>>>>>>>>>>>>>> not
> >>>>>>>>>>>>>>>>>>>>> human
> >>>>>>>>>>>>>>>>>>>>>> readable.
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>> 3. Handling LIST and MAP States in
> >>>> the
> >>>>>>> State
> >>>>>>>>>>>> Connector
> >>>>>>>>>>>>>>>>>>>>>>> I have concerns about how the
> >> current
> >>>>>>> design
> >>>>>>>>>>> handles
> >>>>>>>>>>>>> LIST
> >>>>>>>>>>>>>>> and
> >>>>>>>>>>>>>>>>> MAP
> >>>>>>>>>>>>>>>>>>>>> states.
> >>>>>>>>>>>>>>>>>>>>>>> Specifically, the state connector
> >>>> uses
> >>>>>>> Flink
> >>>>>>>>>> SQL’s
> >>>>>>>>>>>> MAP
> >>>>>>>>>>>>>> and
> >>>>>>>>>>>>>>>>> ARRAY
> >>>>>>>>>>>>>>>>>>>> types,
> >>>>>>>>>>>>>>>>>>>>>>> which implies that it attempts to
> >>>> load
> >>>>>>> entire
> >>>>>>>>> MAP
> >>>>>>>>>>> or
> >>>>>>>>>>>>> LIST
> >>>>>>>>>>>>>>>>> states
> >>>>>>>>>>>>>>>>>>> into
> >>>>>>>>>>>>>>>>>>>>>>> memory.
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>> However, in many real-world
> >>>> scenarios,
> >>>>>>> these
> >>>>>>>>>> states
> >>>>>>>>>>>> can
> >>>>>>>>>>>>>>> grow
> >>>>>>>>>>>>>>>>> very
> >>>>>>>>>>>>>>>>>>>>> large.
> >>>>>>>>>>>>>>>>>>>>>>> Typically, the state API addresses
> >>>> this
> >>>>> by
> >>>>>>>>>>> providing
> >>>>>>>>>>>> an
> >>>>>>>>>>>>>>>>> iterator
> >>>>>>>>>>>>>>>>>> to
> >>>>>>>>>>>>>>>>>>>>>>> traverse elements within the state
> >>>>>>>>> incrementally.
> >>>>>>>>>>> I’m
> >>>>>>>>>>>>>>> unsure
> >>>>>>>>>>>>>>>>>>> whether
> >>>>>>>>>>>>>>>>>>>>> I’ve
> >>>>>>>>>>>>>>>>>>>>>>> missed something in FLIP-496 or
> >>>>> FLIP-512,
> >>>>>>> but
> >>>>>>>>> it
> >>>>>>>>>>>> seems
> >>>>>>>>>>>>>> that
> >>>>>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>>>>> current
> >>>>>>>>>>>>>>>>>>>>>>> design might struggle with
> >>>> scalability
> >>>>> in
> >>>>>>>> such
> >>>>>>>>>>> cases.
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> You see it good, the current
> >>>>> implementation
> >>>>>>>> keeps
> >>>>>>>>>>> state
> >>>>>>>>>>>>>> for a
> >>>>>>>>>>>>>>>>>> single
> >>>>>>>>>>>>>>>>>>>> key
> >>>>>>>>>>>>>>>>>>>>> in
> >>>>>>>>>>>>>>>>>>>>>> memory.
> >>>>>>>>>>>>>>>>>>>>>> Back in the days we've considered
> >> this
> >>>>>>>> potential
> >>>>>>>>>>> issue
> >>>>>>>>>>>>> and
> >>>>>>>>>>>>>>>>>> concluded
> >>>>>>>>>>>>>>>>>>>> that
> >>>>>>>>>>>>>>>>>>>>>> this is not necessarily
> >>>>>>>>>>>>>>>>>>>>>> needed for the initial version and
> >> can
> >>>> be
> >>>>>>> done
> >>>>>>>>> as a
> >>>>>>>>>>>> later
> >>>>>>>>>>>>>>>>>>> improvement.
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> Up until now we've seen even in TB
> >>>>>>> savepoints
> >>>>>>>>> that
> >>>>>>>>>>> the
> >>>>>>>>>>>>>> number
> >>>>>>>>>>>>>>>> of
> >>>>>>>>>>>>>>>>>> keys
> >>>>>>>>>>>>>>>>>>>> can
> >>>>>>>>>>>>>>>>>>>>>> be extremely huge but not the per key
> >>>>> state
> >>>>>>>>> itself.
> >>>>>>>>>>>>>>>>>>>>>> But again, this is a good feature
> >> as-is
> >>>>> and
> >>>>>>> can
> >>>>>>>>> be
> >>>>>>>>>>>>> handled
> >>>>>>>>>>>>>>> in a
> >>>>>>>>>>>>>>>>>>>> separate
> >>>>>>>>>>>>>>>>>>>>>> jira.
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>> Best,
> >>>>>>>>>>>>>>>>>>>>>>> Shengkai
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>> [1]
> >>>>>>>>>>>>>>>>>
> >>>>>>>>> https://www.postgresql.org/docs/current/view-pg-tables.html
> >>>>>>>>>>>>>>>>>>>>>>> [2]
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>
> >>>>
> >>
> https://dev.mysql.com/doc/refman/8.4/en/information-schema-tables-table.html
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>> Gabor Somogyi <
> >>>>> gabor.g.somo...@gmail.com>
> >>>>>>>>>>>> 于2025年3月3日周一
> >>>>>>>>>>>>>>>>> 02:00写道:
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>> Hi Zakelly,
> >>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>> In order to shoot for simplicity
> >>>>>>> `METADATA
> >>>>>>>>>>> VIRTUAL`
> >>>>>>>>>>>>> as
> >>>>>>>>>>>>>>> key
> >>>>>>>>>>>>>>>>>> words
> >>>>>>>>>>>>>>>>>>>> for
> >>>>>>>>>>>>>>>>>>>>>>>> definition is the target.
> >>>>>>>>>>>>>>>>>>>>>>>> When it's not super complex the
> >>>> latter
> >>>>>>> can
> >>>>>>>> be
> >>>>>>>>>>> added
> >>>>>>>>>>>>>> too.
> >>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>> BR,
> >>>>>>>>>>>>>>>>>>>>>>>> G
> >>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>> On Sun, Mar 2, 2025 at 3:37 PM
> >>>> Zakelly
> >>>>>>> Lan
> >>>>>>>> <
> >>>>>>>>>>>>>>>>>>> zakelly....@gmail.com>
> >>>>>>>>>>>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>> Hi Gabor,
> >>>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>> +1 for this.
> >>>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>> Will the metadata column use
> >>>>> `METADATA
> >>>>>>>>>> VIRTUAL`
> >>>>>>>>>>>> as
> >>>>>>>>>>>>>> key
> >>>>>>>>>>>>>>>>> words
> >>>>>>>>>>>>>>>>>>> for
> >>>>>>>>>>>>>>>>>>>>>>>>> definition, or `METADATA FROM
> >> xxx
> >>>>>>>> VIRTUAL`
> >>>>>>>>>> for
> >>>>>>>>>>>>>>> renaming,
> >>>>>>>>>>>>>>>>> just
> >>>>>>>>>>>>>>>>>>>> like
> >>>>>>>>>>>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>>>>>>>>>> Kafka table?
> >>>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>> Best,
> >>>>>>>>>>>>>>>>>>>>>>>>> Zakelly
> >>>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>> On Sat, Mar 1, 2025 at 1:31 PM
> >>>> Gabor
> >>>>>>>>> Somogyi
> >>>>>>>>>> <
> >>>>>>>>>>>>>>>>>>>>>>> gabor.g.somo...@gmail.com>
> >>>>>>>>>>>>>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>>> Hi All,
> >>>>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>>> I'd like to start a
> >> discussion
> >>>> of
> >>>>>>>>> FLIP-512:
> >>>>>>>>>>> Add
> >>>>>>>>>>>>>> meta
> >>>>>>>>>>>>>>>>>>>> information
> >>>>>>>>>>>>>>>>>>>>> to
> >>>>>>>>>>>>>>>>>>>>>>> SQL
> >>>>>>>>>>>>>>>>>>>>>>>>>> state connector [1].
> >>>>>>>>>>>>>>>>>>>>>>>>>> Feel free to add your
> >> thoughts
> >>>> to
> >>>>>>> make
> >>>>>>>>> this
> >>>>>>>>>>>>> feature
> >>>>>>>>>>>>>>>>> better.
> >>>>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>>> [1]
> >>>>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>
> >>>>
> >>
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-512%3A+Add+meta+information+to+SQL+state+connector
> >>>>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>>> BR,
> >>>>>>>>>>>>>>>>>>>>>>>>>> G
> >>>>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>>
> >>
>
>

Reply via email to