Hi Yanquan,

Thanks for the feedback.

> (1) I agree with the design of SecretStore. I hope to add the results of
the 'SHOW Connections' query to the document, 'secret.id' should be
included in the results, This helps us establish the association between
tables and connections.

I think we can output "secret.id" field in `describe connection` query.
`show connections` can show the names of connections similar to other show
command such as `show tables` or `show models`?

> Can you clearly point out this point. It seems that we cannot create a
CatalogConnection under any catalog. For example, we cannot save
CatalogConnection in the JDBC catalog.

I didn't mean we can't create connection under catalog. I meant we can't
create catalog using connection if connection exists in catalog. We need to
introduce some System Connection later to be used to create catalog. If you
already have a JDBC catalog, we can still save CatalogConnection in it.

Thanks,
Hao

On Sun, Jul 27, 2025 at 7:24 PM Yanquan Lv <decq12y...@gmail.com> wrote:

> Hi Mayank and Hao,
> Thanks for the updates and comments. Here are some of my opinions:
>
> (1) I agree with the design of SecretStore. I hope to add the results of
> the 'SHOW Connections' query to the document, 'secret.id' should be
> included in the results, This helps us establish the association between
> tables and connections.
> (2)
> > I think for connections to be used for catalog
> > creation, it needs to be system connection similar to system function
> which
> > exist outside of CatalogManager.
> Can you clearly point out this point. It seems that we cannot create a
> CatalogConnection under any catalog. For example, we cannot save
> CatalogConnection in the JDBC catalog.
>
> Hao Li <h...@confluent.io.invalid> 于2025年7月25日周五 06:54写道:
>
> > Hi Shengkai, Leonard,
> >
> > Thanks for the feedback.
> >
> > For Shengkai's feedback:
> >
> > > 1. Why SecretStoreFactory#open throws a CatalogException? I think the
> > exteranl system can not handle this exception.
> > You are right, we can make it throw `Exception`
> >
> > > 2. I think we can also modify the create catalog ddl syntax.
> >
> > ```
> > CREATE CATALOG cat USING CONNECTION mycat.mydb.mysql_prod
> > WITH (
> >     'type' = 'jdbc'
> > );
> > ```
> >
> > Does `mycat.mydb.mysql_prod` exist in another catalog? This feels like a
> > chicken-egg problem. I think for connections to be used for catalog
> > creation, it needs to be system connection similar to system function
> which
> > exist outside of CatalogManager. Maybe we can defer this to later
> > functionality?
> >
> > > 3. It seems the connector factory should merge the with options and
> > connection options together and then create the source/sink. It's
> > better that framework can merge all these options and connectors don't
> need
> > any codes.
> >
> > I think it's better to separate connections with table options and make
> it
> > explicit. Reasons is: the connection here should be a decrypted one. It's
> > sensitive and should be handled carefully regarding logging, usage etc.
> > Mixing with original table options makes it hard to do. But the Flip used
> > `CatalogConnection` which is an encrypted one. I'll update it to
> > `SensitveConnection`.
> >
> > > 4. Why we need to introduce ConnectionFactory? I think connection is
> like
> > CatalogTable. It should hold the basic information and all information in
> > the connection should be stored into secret store.
> >
> > The main reason is to enable user defined connection handling for
> different
> > types. For example, if connection type is `basic`, the corresponding
> > factory can handle basic type secrets (e.g. extract username/password
> from
> > connection options and do encryption).
> >
> > For Leonard's feedback:
> > > (1) Minor: Interface Hierarchy : Why doesn't WritableSecretStore extend
> > SecretStore?
> >
> > Good catch. Let me update it.
> >
> > >  (2) Configurability of SECRET_FIELDS : Could the hardcoded
> SECRET_FIELDS
> > in BasicConnectionFactory be made configurable (e.g., 'token' vs
> > 'accessKey') for better connector compatibility?
> >
> > This depends on `ConnectionFactory` implementation and can be self
> defined
> > by user.
> >
> > > (3)Inconsistent Return Types : ConnectionFactory#resolveConnection
> > returns SensitiveConnection, while
> BasicConnectionFactory#resolveConnection
> > returns Map<String, String>. Should these be aligned?
> >
> > Good catch. Let me update the FLIP.
> >
> > > (4)Framework-level Resolution : +1 to Shengkai's point about having the
> > framework (DynamicTableFactory) return complete options to reduce
> connector
> > adaptation cost.
> >
> > Please see my explanation for Shengkai's similar question.
> >
> > > (5)Secret ID Handling : When no encryption is needed, secretId is null
> > (from secrets.isEmpty() ? null : secretStore.storeSecret(secrets)). This
> > behavior should be explicitly documented in the interfaces.
> >
> > It's an example in the FLIP about how `ConnectionFactory` could be
> > implemented. How encryption is done depends on actual implementation
> > though. Let me update the example to make it more clear.
> >
> > Thanks,
> > Hao
> >
> > On Thu, Jul 24, 2025 at 5:04 AM Leonard Xu <xbjt...@gmail.com> wrote:
> >
> > > Hi friends
> > >
> > > I like the updated FLIP goals, that’s what I want. I’ve some feedback:
> > >
> > > (1) Minor: Interface Hierarchy : Why doesn't WritableSecretStore extend
> > > SecretStore?
> > > (2) Configurability of SECRET_FIELDS : Could the hardcoded
> SECRET_FIELDS
> > > in BasicConnectionFactory be made configurable (e.g., 'token' vs
> > > 'accessKey') for better connector compatibility?
> > > (3)Inconsistent Return Types : ConnectionFactory#resolveConnection
> > returns
> > > SensitiveConnection, while BasicConnectionFactory#resolveConnection
> > returns
> > > Map<String, String>. Should these be aligned?
> > > (4)Framework-level Resolution : +1 to Shengkai's point about having the
> > > framework (DynamicTableFactory) return complete options to reduce
> > connector
> > > adaptation cost.
> > > (5)Secret ID Handling : When no encryption is needed, secretId is null
> > > (from secrets.isEmpty() ? null : secretStore.storeSecret(secrets)).
> This
> > > behavior should be explicitly documented in the interfaces.
> > >
> > > Best,
> > > Leonard
> > >
> > > > 2025 7月 24 11:44,Shengkai Fang <fskm...@gmail.com> 写道:
> > > >
> > > > hi.
> > > >
> > > > Sorry for the late reply. I just have some questions:
> > > >
> > > > 1. Why SecretStoreFactory#open throws a CatalogException? I think the
> > > > exteranl system can not handle this exception.
> > > >
> > > > 2. I think we can also modify the create catalog ddl syntax.
> > > >
> > > > ```
> > > > CREATE CATALOG cat USING CONNECTION mycat.mydb.mysql_prod
> > > > WITH (
> > > >    'type' = 'jdbc'
> > > > );
> > > > ```
> > > >
> > > > 3. It seems the connector factory should merge the with options and
> > > > connection options together and then create the source/sink. It's
> > > > better that framework can merge all these options and connectors
> don't
> > > need
> > > > any codes.
> > > >
> > > > 4. Why we need to introduce ConnectionFactory? I think connection is
> > like
> > > > CatalogTable. It should hold the basic information and all
> information
> > in
> > > > the connection should be stored into secret store.
> > > >
> > > >
> > > > Best,
> > > > Shengkai
> > > >
> > > >
> > > > Timo Walther <twal...@apache.org> 于2025年7月22日周二 22:04写道:
> > > >
> > > >> Hi Mayank,
> > > >>
> > > >> Thanks for updating the FLIP and clearly documenting our discussion.
> > > >>
> > > >> +1 for moving forward with the vote, unless there are objections
> from
> > > >> others.
> > > >>
> > > >> Cheers,
> > > >> Timo
> > > >>
> > > >> On 22.07.25 02:14, Mayank Juneja wrote:
> > > >>> Hi Ryan and Austin,
> > > >>>
> > > >>> Thanks for your suggestions. I've updated the FLIP with the
> following
> > > >>> additional info -
> > > >>>
> > > >>> 1. *table.secret-store.kind* key to register the SecretStore in a
> > yaml
> > > >> file
> > > >>> 2. *updateSecret* method in WritableSecretStore interface
> > > >>>
> > > >>> Thanks,
> > > >>> Mayank
> > > >>>
> > > >>> On Thu, Jul 17, 2025 at 5:42 PM Austin Cawley-Edwards <
> > > >>> austin.caw...@gmail.com> wrote:
> > > >>>
> > > >>>> Hey all,
> > > >>>>
> > > >>>> Thanks for the nice flip all! I’m just reading through – had one
> > > >> question
> > > >>>> on the ALTER CONNECTION implementation flow. Would it make sense
> for
> > > the
> > > >>>> WritableSecretStore to expose a method for updating a secret by
> ID,
> > so
> > > >> it
> > > >>>> can be done atomically? Else, would we need to call delete and
> > create
> > > >>>> again, potentially introducing concurrent resolution errors?
> > > >>>>
> > > >>>> Best,
> > > >>>> Austin
> > > >>>>
> > > >>>> On Thu, Jul 17, 2025 at 13:07 Ryan van Huuksloot
> > > >>>> <ryan.vanhuuksl...@shopify.com.invalid> wrote:
> > > >>>>
> > > >>>>> Hi Mayank,
> > > >>>>>
> > > >>>>> Thanks for updating the FLIP. Overall it looks good to me.
> > > >>>>>
> > > >>>>> One question I had related to how someone could choose the
> > > SecretStore
> > > >>>> they
> > > >>>>> want to use if they use something like the SQL Gateway as the
> > > >> entrypoint
> > > >>>> on
> > > >>>>> top of a remote Session cluster. I don't see an explicit way to
> set
> > > the
> > > >>>>> SecretStore in the FLIP.
> > > >>>>> I assume we'll do it similar to the CatalogStore but I wanted to
> > call
> > > >>>> this
> > > >>>>> out.
> > > >>>>>
> > > >>>>> table.catalog-store.kind: filetable.catalog-store.file.path:
> > > >>>>> file:///path/to/catalog/store/
> > > >>>>>
> > > >>>>> Ryan van Huuksloot
> > > >>>>> Staff Engineer, Infrastructure | Streaming Platform
> > > >>>>> [image: Shopify]
> > > >>>>> <
> > > >>
> > https://www.shopify.com/?utm_medium=salessignatures&utm_source=hs_email
> > > >>>>>
> > > >>>>>
> > > >>>>>
> > > >>>>> On Wed, Jul 16, 2025 at 2:22 PM Mayank Juneja <
> > > >> mayankjunej...@gmail.com>
> > > >>>>> wrote:
> > > >>>>>
> > > >>>>>> Hi everyone,
> > > >>>>>>
> > > >>>>>> Thanks for your valuable inputs. I have updated the FLIP with
> the
> > > >> ideas
> > > >>>>>> proposed earlier in the thread. Looking forward to your
> feedback.
> > > >>>>>> https://cwiki.apache.org/confluence/x/cYroF
> > > >>>>>>
> > > >>>>>> Best,
> > > >>>>>> Mayank
> > > >>>>>>
> > > >>>>>> On Fri, Jun 27, 2025 at 2:59 AM Leonard Xu <xbjt...@gmail.com>
> > > wrote:
> > > >>>>>>
> > > >>>>>>> Quick response, thanks Mayank, Hao and Timo for the effort.
> The
> > > new
> > > >>>>>>> proposal looks well, +1 from my side.
> > > >>>>>>>
> > > >>>>>>> Could you draft(update) current FLIP docs thus we can have some
> > > >>>>> specific
> > > >>>>>>> discussions later?
> > > >>>>>>>
> > > >>>>>>>
> > > >>>>>>> Best,
> > > >>>>>>> Leonard
> > > >>>>>>>
> > > >>>>>>>
> > > >>>>>>>> 2025 6月 26 15:06,Timo Walther <twal...@apache.org> 写道:
> > > >>>>>>>>
> > > >>>>>>>> Hi everyone,
> > > >>>>>>>>
> > > >>>>>>>> sorry for the late reply, feature freeze kept me busy. Mayank,
> > Hao
> > > >>>>> and
> > > >>>>>> I
> > > >>>>>>> synced offline and came up we an improved proposal. Before we
> > > update
> > > >>>>> the
> > > >>>>>>> FLIP let me summarize the most important key facts that
> hopefully
> > > >>>>> address
> > > >>>>>>> most concerns:
> > > >>>>>>>>
> > > >>>>>>>> 1) SecretStore
> > > >>>>>>>> - Similar to CatalogStore, we introduce a SecretStore as the
> > > >>>> highest
> > > >>>>>>> level in TableEnvironment.
> > > >>>>>>>> - SecretStore is initialized with options and potentially
> > > >>>> environment
> > > >>>>>>> variables. Including
> > > >>>> EnvironmentSettings.withSecretStore(SecretStore).
> > > >>>>>>>> - The SecretStore is pluggable and discovered using the
> regular
> > > >>>>>>> factory-approach.
> > > >>>>>>>> - For example, it could implement Azure Key Vault or other
> cloud
> > > >>>>>>> provider secrets stores.
> > > >>>>>>>> - Goal: Flink and Flink catalogs do not have to deal with
> > > sensitive
> > > >>>>>> data.
> > > >>>>>>>>
> > > >>>>>>>> 2) Connections
> > > >>>>>>>> - Connections are catalog objects identified with 3-part
> > > >>>> identifiers.
> > > >>>>>>> 3-part identifiers are crucial for managability of larger
> > projects
> > > >>>> and
> > > >>>>>>> align with existing catalog objects.
> > > >>>>>>>> - They contain connection details, e.g. URL, query parameters,
> > and
> > > >>>>>> other
> > > >>>>>>> configuration.
> > > >>>>>>>> - They do not contain secrets, but only pointers to secrets in
> > the
> > > >>>>>>> SecretStore.
> > > >>>>>>>>
> > > >>>>>>>> 3) Connection DDL
> > > >>>>>>>>
> > > >>>>>>>> CREATE [TEMPORARY] CONNECTION mycat.mydb.OpenAPI WITH (
> > > >>>>>>>>  'type' = 'basic' | 'bearer' | 'jwt' | 'oauth' | ...,
> > > >>>>>>>>  ...
> > > >>>>>>>> )
> > > >>>>>>>>
> > > >>>>>>>> - Connection type is pluggable and discovered using the
> regular
> > > >>>>>>> factory-approach.
> > > >>>>>>>> - The factory extracts secrets and puts them into SecretStore.
> > > >>>>>>>> - The factory only leaves non-confidential options left that
> can
> > > be
> > > >>>>>>> stored in a catalog.
> > > >>>>>>>>
> > > >>>>>>>> When executing:
> > > >>>>>>>> CREATE [TEMPORARY] CONNECTION mycat.mydb.OpenAPI WITH (
> > > >>>>>>>>  'type' = 'basic',
> > > >>>>>>>>  'url' = 'api.example.com',
> > > >>>>>>>>  'username' = 'bob',
> > > >>>>>>>>  'password' = 'xyz'
> > > >>>>>>>> )
> > > >>>>>>>>
> > > >>>>>>>> The catalog will receive something similar to:
> > > >>>>>>>> CREATE [TEMPORARY] CONNECTION mycat.mydb.OpenAPI WITH (
> > > >>>>>>>>  'type' = 'basic',
> > > >>>>>>>>  'url' = 'api.example.com',
> > > >>>>>>>>  'secret.store' = 'azure-key-vault'
> > > >>>>>>>>  'secret.id' = 'secretId'
> > > >>>>>>>> )
> > > >>>>>>>>
> > > >>>>>>>> - However, the exact property design is up to the connection
> > > >>>> factory.
> > > >>>>>>>>
> > > >>>>>>>> 4) Connection Usage
> > > >>>>>>>>
> > > >>>>>>>> CREATE TABLE t (...) USING CONNECTION mycat.mydb.OpenAPI;
> > > >>>>>>>>
> > > >>>>>>>> - MODEL, FUNCTION, TABLE DDL will support USING CONNECTION
> > keyword
> > > >>>>>>> similar to BigQuery.
> > > >>>>>>>> - The connection will be provided in a table/model
> > > >>>> provider/function
> > > >>>>>>> definition factory.
> > > >>>>>>>>
> > > >>>>>>>> 5) CatalogStore / Catalog Initialization
> > > >>>>>>>>
> > > >>>>>>>> Catalog store or catalog can make use of SecretStore to
> retrieve
> > > >>>>>> initial
> > > >>>>>>> credentials for bootstrapping. All objects lower then catalog
> > > >>>>>> store/catalog
> > > >>>>>>> can then use connections. If you think we still need system
> level
> > > >>>>>>> connections, we can support CREATE SYSTEM CONNECTION GlobalName
> > > WITH
> > > >>>>> (..)
> > > >>>>>>> similar to SYSTEM functions directly store in a
> ConnectioManager
> > in
> > > >>>>>>> TableEnvironment. But for now I would suggest to start simple
> > with
> > > >>>>>>> per-catalog connections and later evolve the design.
> > > >>>>>>>>
> > > >>>>>>>> Dealing with secrets is a very sensitive topic and I'm clearly
> > not
> > > >>>> an
> > > >>>>>>> expert on it. This is why we should try to push the problem to
> > > >>>> existing
> > > >>>>>>> solutions and don't start storing secrets in Flink in any way.
> > > Thus,
> > > >>>>> the
> > > >>>>>>> interfaces will be defined very generic.
> > > >>>>>>>>
> > > >>>>>>>> Looking forward to your feedback.
> > > >>>>>>>>
> > > >>>>>>>> Cheers,
> > > >>>>>>>> Timo
> > > >>>>>>>>
> > > >>>>>>>>
> > > >>>>>>>>
> > > >>>>>>>>
> > > >>>>>>>>
> > > >>>>>>>> On 09.06.25 04:01, Leonard Xu wrote:
> > > >>>>>>>>> Thanks  Timo for joining this thread.
> > > >>>>>>>>> I agree that this feature is needed by the community; the
> > current
> > > >>>>>>> disagreement is only about the implementation method or
> solution.
> > > >>>>>>>>> Your thoughts looks generally good to me, looking forward to
> > your
> > > >>>>>>> proposal.
> > > >>>>>>>>> Best,
> > > >>>>>>>>> Leonard
> > > >>>>>>>>>> 2025 6月 6 22:46,Timo Walther <twal...@apache.org> 写道:
> > > >>>>>>>>>>
> > > >>>>>>>>>> Hi everyone,
> > > >>>>>>>>>>
> > > >>>>>>>>>> thanks for this healthy discussion. Looking at high number
> of
> > > >>>>>>> participants, it looks like we definitely want this feature. We
> > > just
> > > >>>>> need
> > > >>>>>>> to figure out the "how".
> > > >>>>>>>>>>
> > > >>>>>>>>>> This reminds me very much of the discussion we had for
> CREATE
> > > >>>>>>> FUNCTION. There, we discussed whether functions should be named
> > > >>>>> globally
> > > >>>>>> or
> > > >>>>>>> catalog-specific. In the end, we decided for both `CREATE
> SYSTEM
> > > >>>>>> FUNCTION`
> > > >>>>>>> and `CREATE FUNCTION`, satisfying both the data platform team
> of
> > an
> > > >>>>>>> organization (which might provide system functions) and
> > individual
> > > >>>> data
> > > >>>>>>> teams or use cases (scoped by catalog/database).
> > > >>>>>>>>>>
> > > >>>>>>>>>> Looking at other modern vendors like Snowflake there is
> SECRET
> > > >>>>>> (scoped
> > > >>>>>>> to schema) [1] and API INTEGRATION [2] (scoped to account). So
> > also
> > > >>>>> other
> > > >>>>>>> vendors offer global and per-team / per-use case connections
> > > details.
> > > >>>>>>>>>>
> > > >>>>>>>>>> In general, I think fitting connections into the existing
> > > >>>> concepts
> > > >>>>>> for
> > > >>>>>>> catalog objects (with three-part identifier) makes managing
> them
> > > >>>>> easier.
> > > >>>>>>> But I also see the need for global defaults.
> > > >>>>>>>>>>
> > > >>>>>>>>>> Btw keep in mind that a catalog implementation should only
> > store
> > > >>>>>>> metadata. Similar how a CatalogTable doesn't store the actual
> > > data, a
> > > >>>>>>> CatalogConnection should not store the credentials. It should
> > only
> > > >>>>> offer
> > > >>>>>> a
> > > >>>>>>> factory that allows for storing and retrieving them. In real
> > world
> > > >>>>>>> scenarios a factory is most likely backed by a product like
> Azure
> > > Key
> > > >>>>>> Vault.
> > > >>>>>>>>>>
> > > >>>>>>>>>> So code-wise having a ConnectionManager that behaves similar
> > to
> > > >>>>>>> FunctionManager sounds reasonable.
> > > >>>>>>>>>>
> > > >>>>>>>>>> +1 for having special syntax instead of using properties.
> This
> > > >>>>> allows
> > > >>>>>>> to access connections in tables, models, functions. And
> catalogs,
> > > if
> > > >>>> we
> > > >>>>>>> agree to have global ones as well.
> > > >>>>>>>>>>
> > > >>>>>>>>>> What do you think?
> > > >>>>>>>>>>
> > > >>>>>>>>>> Let me spend some more thoughts on this and come back with a
> > > >>>>> concrete
> > > >>>>>>> proposal by early next week.
> > > >>>>>>>>>>
> > > >>>>>>>>>> Cheers,
> > > >>>>>>>>>> Timo
> > > >>>>>>>>>>
> > > >>>>>>>>>> [1]
> > > >>>> https://docs.snowflake.com/en/sql-reference/sql/create-secret
> > > >>>>>>>>>> [2]
> > > >>>>>>>
> > > >>>>
> > > https://docs.snowflake.com/en/sql-reference/sql/create-api-integration
> > > >>>>>>>>>>
> > > >>>>>>>>>> On 04.06.25 10:47, Leonard Xu wrote:
> > > >>>>>>>>>>> Hey,Mayank
> > > >>>>>>>>>>> Please see my feedback as following:
> > > >>>>>>>>>>> 1. One of the motivations of this FLIP is to improve
> > security.
> > > >>>>>>> However, the current design stores all connection information
> in
> > > the
> > > >>>>>>> catalog,
> > > >>>>>>>>>>> and each Flink SQL job reads from the catalog during
> > > >>>> compilation.
> > > >>>>>> The
> > > >>>>>>> connection information is passed between SQL Gateway and the
> > > >>>>>>>>>>> catalog in plaintext, which actually introduces new
> security
> > > >>>>> risks.
> > > >>>>>>>>>>> 2. The name "Connection" should be changed to something
> like
> > > >>>>>>> ConnectionSpec to clearly indicate that it is a object
> containing
> > > >>>> only
> > > >>>>>>> static
> > > >>>>>>>>>>> properties without a lifecycle. Putting aside the naming
> > issue,
> > > >>>> I
> > > >>>>>>> think the current model and hierarchy design is somewhat
> strange.
> > > >>>>> Storing
> > > >>>>>>>>>>> various kinds of connections (e.g., Kafka, MySQL) in the
> same
> > > >>>>>> Catalog
> > > >>>>>>> with hierarchical identifiers like
> > > >>>> catalog-name.db-name.connection-name
> > > >>>>>>>>>>> raises the following questions:
> > > >>>>>>>>>>> (1) What is the purpose of this hierarchical structure of
> > > >>>>> Connection
> > > >>>>>>> object ?
> > > >>>>>>>>>>> (2) If we can use a Connection to create a MySQL table, why
> > > >>>> can't
> > > >>>>> we
> > > >>>>>>> use a Connection to create a MySQL Catalog?
> > > >>>>>>>>>>> 3. Regarding the connector usage examples given in this
> FLIP:
> > > >>>>>>>>>>> ```sql
> > > >>>>>>>>>>> 1  -- Example 2: Using connection for jdbc tables
> > > >>>>>>>>>>> 2  CREATE OR REPLACE CONNECTION mysql_customer_db
> > > >>>>>>>>>>> 3  WITH (
> > > >>>>>>>>>>> 4    'type' = 'jdbc',
> > > >>>>>>>>>>> 5    'jdbc.url' = 'jdbc:mysql://
> > > >>>>>>> customer-db.example.com:3306/customerdb',
> > > >>>>>>>>>>> 6    'jdbc.connection.ssl.enabled' = 'true'
> > > >>>>>>>>>>> 7  );
> > > >>>>>>>>>>> 8
> > > >>>>>>>>>>> 9  CREATE TABLE customers (
> > > >>>>>>>>>>> 10   customer_id INT,
> > > >>>>>>>>>>> 11   PRIMARY KEY (customer_id) NOT ENFORCED
> > > >>>>>>>>>>> 12 ) WITH (
> > > >>>>>>>>>>> 13   'connector' = 'jdbc',
> > > >>>>>>>>>>> 14   'jdbc.connection' = 'mysql_customer_db',
> > > >>>>>>>>>>> 15   'jdbc.connection.ssl.enabled' = 'true',
> > > >>>>>>>>>>> 16   'jdbc.connection.max-retry-timeout' = '60s',
> > > >>>>>>>>>>> 17   'jdbc.table-name' = 'customers',
> > > >>>>>>>>>>> 18   'jdbc.lookup.cache' = 'PARTIAL'
> > > >>>>>>>>>>> 19 );
> > > >>>>>>>>>>> ```
> > > >>>>>>>>>>> I see three issues from SQL semantics and Connector
> > > >>>> compatibility
> > > >>>>>>> perspectives:
> > > >>>>>>>>>>> (1) Look at line 14: `mysql_customer_db` is an object
> > > identifier
> > > >>>>> of
> > > >>>>>> a
> > > >>>>>>> CONNECTION defined in SQL. However, this identifier is
> referenced
> > > >>>>>>>>>>>     via a string value inside the table’s WITH clause,
> which
> > > >>>> feel
> > > >>>>>>> hack for me.
> > > >>>>>>>>>>> (2) Look at lines 14–16: the use of the specific prefix
> > > >>>>>>> `jdbc.connection` will confuse users because `connection.xx`
> > maybe
> > > >>>>>> already
> > > >>>>>>> used as
> > > >>>>>>>>>>>  a prefix for existing configuration items.
> > > >>>>>>>>>>> (3) Look at lines 14–18: Why do all existing configuration
> > > >>>> options
> > > >>>>>>> need to be prefixed with `jdbc`, even they’re not related to
> > > >>>> Connection
> > > >>>>>>> properties?
> > > >>>>>>>>>>> This completely changes user habits — is it backward
> > > compatible?
> > > >>>>>>>>>>>  In my opinion, Connection should be a model independent of
> > > both
> > > >>>>>>> Catalog and Table, and can be referenced by all
> > > >>>> catalog/table/udf/model
> > > >>>>>>> object.
> > > >>>>>>>>>>> It should be managed by a Component such as a
> > ConnectionManager
> > > >>>> to
> > > >>>>>>> enable reuse. For security purposes, authentication mechanisms
> > > could
> > > >>>>>>>>>>> be supported within the ConnectionManager.
> > > >>>>>>>>>>> Best,
> > > >>>>>>>>>>> Leonard
> > > >>>>>>>>>>>> 2025 6月 4 02:04,Martijn Visser <martijnvis...@apache.org>
> > 写道:
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> Hi all,
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> First of all, I think having a Connection resource is
> > > something
> > > >>>>>> that
> > > >>>>>>> will
> > > >>>>>>>>>>>> be beneficial for Apache Flink. I could see that being
> > > extended
> > > >>>>> in
> > > >>>>>>> the
> > > >>>>>>>>>>>> future to allow for easier secret handling [1].
> > > >>>>>>>>>>>> In my mental mind, I'm comparing this proposal against
> > SQL/MED
> > > >>>>> from
> > > >>>>>>> the ISO
> > > >>>>>>>>>>>> standard [2]. I do think that SQL/MED isn't a very user
> > > >>>> friendly
> > > >>>>>>> syntax
> > > >>>>>>>>>>>> though, looking at Postgres for example [3].
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> I think it's a valid question if Connection should be
> > > >>>> considered
> > > >>>>>>> with a
> > > >>>>>>>>>>>> catalog or database-level scope. @Ryan can you share
> > something
> > > >>>>>> more,
> > > >>>>>>> since
> > > >>>>>>>>>>>> you've mentioned "Note: I much prefer catalogs for this
> > case.
> > > >>>>> Which
> > > >>>>>>> is what
> > > >>>>>>>>>>>> we use internally to manage connection properties". It
> looks
> > > >>>> like
> > > >>>>>>> there
> > > >>>>>>>>>>>> isn't a strong favourable approach looking at other
> vendors
> > > >>>>> (like,
> > > >>>>>>>>>>>> Databricks does scopes it on a Unity catalog, Snowflake
> on a
> > > >>>>>> database
> > > >>>>>>>>>>>> level).
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> Also looking forward to Leonard's input.
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> Best regards,
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> Martijn
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> [1] https://issues.apache.org/jira/browse/FLINK-36818
> > > >>>>>>>>>>>> [2] https://www.iso.org/standard/84804.html
> > > >>>>>>>>>>>> [3]
> > > >>>>> https://www.postgresql.org/docs/current/sql-createserver.html
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> On Fri, May 30, 2025 at 5:07 AM Leonard Xu <
> > xbjt...@gmail.com
> > > >
> > > >>>>>>> wrote:
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>>> Hey Mayank.
> > > >>>>>>>>>>>>>
> > > >>>>>>>>>>>>> Thanks for the FLIP, I went through this FLIP quickly and
> > > >>>> found
> > > >>>>>> some
> > > >>>>>>>>>>>>> issues which I think we
> > > >>>>>>>>>>>>> need to deep discuss later. As we’re on a short Dragon
> boat
> > > >>>>>>> Festival,
> > > >>>>>>>>>>>>> could you kindly hold
> > > >>>>>>>>>>>>> on this thread? and we will back to continue the FLIP
> > > discuss.
> > > >>>>>>>>>>>>>
> > > >>>>>>>>>>>>> Best,
> > > >>>>>>>>>>>>> Leonard
> > > >>>>>>>>>>>>>
> > > >>>>>>>>>>>>>
> > > >>>>>>>>>>>>>> 2025 4月 29 23:07,Mayank Juneja <
> mayankjunej...@gmail.com>
> > > >>>> 写道:
> > > >>>>>>>>>>>>>>
> > > >>>>>>>>>>>>>> Hi all,
> > > >>>>>>>>>>>>>>
> > > >>>>>>>>>>>>>> I would like to open up for discussion a new FLIP-529
> [1].
> > > >>>>>>>>>>>>>>
> > > >>>>>>>>>>>>>> Motivation:
> > > >>>>>>>>>>>>>> Currently, Flink SQL handles external connectivity by
> > > >>>> defining
> > > >>>>>>> endpoints
> > > >>>>>>>>>>>>>> and credentials in table configuration. This approach
> > > >>>> prevents
> > > >>>>>>>>>>>>> reusability
> > > >>>>>>>>>>>>>> of these connections and makes table definition less
> > secure
> > > >>>> by
> > > >>>>>>> exposing
> > > >>>>>>>>>>>>>> sensitive information.
> > > >>>>>>>>>>>>>> We propose the introduction of a new "connection"
> resource
> > > in
> > > >>>>>>> Flink. This
> > > >>>>>>>>>>>>>> will be a pluggable resource configured with a remote
> > > >>>> endpoint
> > > >>>>>> and
> > > >>>>>>>>>>>>>> associated access key. Once defined, connections can be
> > > >>>> reused
> > > >>>>>>> across
> > > >>>>>>>>>>>>> table
> > > >>>>>>>>>>>>>> definitions, and eventually for model definition (as
> > > >>>> discussed
> > > >>>>> in
> > > >>>>>>>>>>>>> FLIP-437)
> > > >>>>>>>>>>>>>> for inference, enabling seamless and secure integration
> > with
> > > >>>>>>> external
> > > >>>>>>>>>>>>>> systems.
> > > >>>>>>>>>>>>>> The connection resource will provide a new, optional way
> > to
> > > >>>>>> manage
> > > >>>>>>>>>>>>> external
> > > >>>>>>>>>>>>>> connectivity in Flink. Existing methods for table
> > > definitions
> > > >>>>>> will
> > > >>>>>>> remain
> > > >>>>>>>>>>>>>> unchanged.
> > > >>>>>>>>>>>>>>
> > > >>>>>>>>>>>>>> [1] https://cwiki.apache.org/confluence/x/cYroF
> > > >>>>>>>>>>>>>>
> > > >>>>>>>>>>>>>> Best Regards,
> > > >>>>>>>>>>>>>> Mayank Juneja
> > > >>>>>>>>>>>>>
> > > >>>>>>>>>>>>>
> > > >>>>>>>>>>
> > > >>>>>>>>
> > > >>>>>>>
> > > >>>>>>>
> > > >>>>>>
> > > >>>>>> --
> > > >>>>>> *Mayank Juneja*
> > > >>>>>> Product Manager | Data Streaming and AI
> > > >>>>>>
> > > >>>>>
> > > >>>>
> > > >>>
> > > >>>
> > > >>
> > > >>
> > >
> > >
> >
>

Reply via email to