Hi, zelin. Thanks for your update. LGTM.
Best, Shengkai yu zelin <yuzelin....@gmail.com> 于2022年12月20日周二 11:00写道: > Hi all, > > Recently I have received some feedbacks about the REST Endpoint > modification. The main point > is use ‘ResultSet’ as a part of FetchResultsResponseBody’ is not > convenient for serialization and > deserialization. So I think it’s better to introduce a new ‘ResultInfo’ to > carry the data. The ‘ResultInfo’ > will carry the row format information and be serialized and deserialized > according to the row format. > > In FLIP, I have modified the Section: Public Interface -> REST Endpoint > Modification. The main > change is the ‘FetchJsonFormatResultsResponseBody' and > ‘FetchPlainTextResultsResponseBody’ > was deleted and the ‘overview of fetching results REST API’ was minor > modified. > > Best, > Yu Zelin > > > 2022年12月13日 17:13,yu zelin <yuzelin....@gmail.com> 写道: > > > > Hi everyone, > > > > Sorry for the incorrect message in my last email. I want to start the > vote on Wednesday > > as long as there are no questions in this period. > > > > Best, > > Yu Zelin > > > > On Tue, Dec 13, 2022 at 5:08 PM yu zelin <yuzelin....@gmail.com <mailto: > yuzelin....@gmail.com>> wrote: > >> Hi, everyone, > >> > >> Looks like our new design is similar to Timo’s suggestion, and > considering that there has > >> no response from other devs for a long time, I want to start the vote > on Thursday. > >> > >> > >> Best, > >> Yu Zelin > >> > >>> 2022年12月13日 16:23,yu zelin <yuzelin....@gmail.com <mailto: > yuzelin....@gmail.com>> 写道: > >>> > >>> Hi, Timo, > >>> > >>> Thanks for your suggestion. Recently I have discussed with @Godfrey > He, @Shengkai Fang > >>> and @Jark Wu about the `RowFormat` (Thanks for all your suggestions). > We finally came to > >>> a consensus which is similar to your suggestion. The details are as > follows: > >>> > >>> 1. Add a REST query parameter ‘RowFormat’ = JSON/PLAIN_TEXT to tell > the REST Endpoint > >>> how to deserialize the RowData int ResultSet. > >>> > >>> JSON format means the RowData will be serialized to JSON format, > which contains original > >>> LogicalType information, so it can be deserialized back to RowData. > >>> > >>> PLAIN_TEXT format means the RowData will be serialized to > SQL-compliant, plain strings. > >>> The SQL Client can print the strings directly. > >>> > >>> The example URI for fetching results is: > >>> > > /v2/sessions/:session_handle/operations/:operation_handle/result/:token?rowFormat=PLAIN_TEXT > >>> > >>> 2. Introduce two response bodies for fetching results in two formats. > >>> > >>> For more details, please take a look at the FLIP [ > https://cwiki.apache.org/confluence/x/T48ODg]. > >>> I have updated it with an example of query response bodies in two > format in section: > >>> Public Interface -> REST Endpoint Modification. > >>> > >>>> 2022年12月12日 18:09,Timo Walther <twal...@apache.org <mailto: > twal...@apache.org>> 写道: > >>>> > >>>> Hi everyone, > >>>> > >>>> sorry to jump into this discussion so late. > >>>> > >>>> > So we decided to revert the RowFormat related changes and let the > client to resolve the print format. > >>>> > >>>> Could you elaborate a bit on this topic in the FLIP? I still believe > that we need 2 types of output formats. > >>>> > >>>> Format A: for the SQL Client CLI and other interactive notebooks that > just uses SQL CAST(... AS STRING) semantics executed on the server side > >>>> > >>>> Format B: for JDBC SDK or other machine-readable downstream libraries > >>>> > >>>> Take a TIMESTAMP WITH LOCAL TIME ZONE as an example. The string > representation depends on a session configuration option. Clients might not > be aware of this session option, so the formatting must happen on the > server side. > >>>> > >>>> However, when the downstream consumer is a library, maybe the library > would like to get the raw millis/nanos since epoch. > >>>> > >>>> Also nested rows and collections might be better encoded with format > B for libraries but interactive sessions are happy if nested types are > already formatted server-side, so not every client needs custom code for > the formatting. > >>>> > >>>> Regards, > >>>> Timo > >>>> > >>>> > >>>> > >>>> On 06.12.22 15:13, godfrey he wrote: > >>>>> Hi, zeklin > >>>>>> The CLI will use default print style for the non-query result. > >>>>> Please make sure the print results of EXPLAIN/DESC/SHOW CREATE TABLE > >>>>> commands are clear. > >>>>>> We think it’s better to add the root cause to the ErrorResponseBody. > >>>>> LGTM > >>>>> Best, > >>>>> Godfrey > >>>>> yu zelin <yuzelin....@gmail.com <mailto:yuzelin....@gmail.com>> > 于2022年12月6日周二 17:51写道: > >>>>>> > >>>>>> Hi, Godfrey > >>>>>> > >>>>>> Thanks for your feedback. Below is my thoughts about your questions. > >>>>>> > >>>>>> 1. About RowFormat. > >>>>>> I agree to your opinion. So we decided to revert the RowFormat > related changes > >>>>>> and let the client to resolve the print format. > >>>>>> > >>>>>> 2. About ContentType > >>>>>> I agree that the definition of the ContentType is not clear. But > how to define the > >>>>>> statement type is another big question. So, we decided to only tell > the query result > >>>>>> and non-query result apart. The CLI will use default print style > for the non-query > >>>>>> result. > >>>>>> > >>>>>> 3. About ErrorHandling > >>>>>> I think reuse the current ErrorResponseBody is good, but parse the > root cause > >>>>>> from the exception stack strings is quite hacking. We think it’s > better to add the > >>>>>> root cause to the ErrorResponseBody. > >>>>>> > >>>>>> 4. About Runtime REST API Modifications > >>>>>> I agree, too. This part is moved to the ‘Future Work’. > >>>>>> > >>>>>> Best, > >>>>>> Yu Zelin > >>>>>> > >>>>>> > >>>>>>> 2022年12月5日 18:33,godfrey he <godfre...@gmail.com <mailto: > godfre...@gmail.com>> 写道: > >>>>>>> > >>>>>>> Hi Zelin, > >>>>>>> > >>>>>>> Thanks for driving this discussion. > >>>>>>> > >>>>>>> I have a few comments, > >>>>>>> > >>>>>>>> Add RowFormat to ResultSet to indicate the format of rows. > >>>>>>> We should not require SqlGateway server to meet the display > >>>>>>> requirements of a CliClient. > >>>>>>> Because different CliClients may have different display style. The > >>>>>>> server just need to response the data, > >>>>>>> and the CliClient prints the result as needed. So RowFormat is not > needed. > >>>>>>> > >>>>>>>> Add ContentType to ResultSet to indicate what kind of data the > result contains. > >>>>>>> from my first sight, the values of ContentType are intersected, > such > >>>>>>> as: A select query will return QUERY_RESULT, > >>>>>>> but it also has JOB_ID. OTHER is too ambiguous, I don't know which > >>>>>>> kind of query will return OTHER. > >>>>>>> I recommend returning the concrete type for each statement, such as > >>>>>>> "CREATE TABLE" for "create table xx (...) with ()", > >>>>>>> "SELECT" for "select * from xxx". The statement type can be > maintained > >>>>>>> in `Operation`s. > >>>>>>> > >>>>>>>> Error Handling > >>>>>>> I think current design of error handling mechanism can meet the > >>>>>>> requirement of CliClient, we can get the root cause from > >>>>>>> the stack (see ErrorResponseBody#errors). If it becomes a common > >>>>>>> requirement (for many clients) in the future, > >>>>>>> we can introduce this interface. > >>>>>>> > >>>>>>>> Runtime REST API Modification for Local Client Migration > >>>>>>> I think this part is over-engineered, this part belongs to > optimization. > >>>>>>> The client does not require very high performance, the current > design > >>>>>>> can already meet our needs. > >>>>>>> If we find performance problems in the future, do such > optimizations. > >>>>>>> > >>>>>>> Best, > >>>>>>> Godfrey > >>>>>>> > >>>>>>> yu zelin <yuzelin....@gmail.com <mailto:yuzelin....@gmail.com>> > 于2022年12月5日周一 11:11写道: > >>>>>>>> > >>>>>>>> Hi, Shammon > >>>>>>>> > >>>>>>>> Thanks for your feedback. I think it’s good to support jdbc-sdk. > However, > >>>>>>>> it's not supported in the gateway side yet. In my opinion, this > FLIP is more > >>>>>>>> concerned with the SQL Client. How about put “supporting > jdbc-sdk” in > >>>>>>>> ‘Future Work’? We can discuss how to implement it in another > thread. > >>>>>>>> > >>>>>>>> Best, > >>>>>>>> Yu Zelin > >>>>>>>>> 2022年12月2日 18:12,Shammon FY <zjur...@gmail.com <mailto: > zjur...@gmail.com>> 写道: > >>>>>>>>> > >>>>>>>>> Hi zelin > >>>>>>>>> > >>>>>>>>> Thanks for driving this discussion. > >>>>>>>>> > >>>>>>>>> I notice that the sql-client will interact with sql-gateway by > `REST > >>>>>>>>> Client` in the `Executor` in the FLIP, how about introducing > jdbc-sdk for > >>>>>>>>> sql-gateway? > >>>>>>>>> > >>>>>>>>> Then the sql-client can connect the gateway with jdbc-sdk, on > the other > >>>>>>>>> hand, the other applications and tools such as jmeter can use > the jdbc-sdk > >>>>>>>>> to connect sql-gateway too. > >>>>>>>>> > >>>>>>>>> Best, > >>>>>>>>> Shammon > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> On Fri, Dec 2, 2022 at 4:10 PM yu zelin <yuzelin....@gmail.com > <mailto:yuzelin....@gmail.com>> wrote: > >>>>>>>>> > >>>>>>>>>> Hi Jim, > >>>>>>>>>> > >>>>>>>>>> Thanks for your feedback! > >>>>>>>>>> > >>>>>>>>>>> Should this configuration be mentioned in the FLIP? > >>>>>>>>>> > >>>>>>>>>> Sure. > >>>>>>>>>> > >>>>>>>>>>> some way for the server to be able to limit the number of > requests it > >>>>>>>>>> receives. > >>>>>>>>>> I’m sorry that this FLIP is dedicated in implementing the > Remote mode, so > >>>>>>>>>> we > >>>>>>>>>> didn't consider much about this. I think the option is enough > currently. > >>>>>>>>>> I will add > >>>>>>>>>> the improvement suggestions to the ‘Future Work’. > >>>>>>>>>> > >>>>>>>>>>> I wonder if two other options are possible > >>>>>>>>>> > >>>>>>>>>> To forward the raw format to gateway and then to client is > possible. The > >>>>>>>>>> raw > >>>>>>>>>> results from sink is in ‘CollectResultIterator#bufferedResult’. > First, we > >>>>>>>>>> can find > >>>>>>>>>> a way to get this result without wrapping it. Second, > constructing a > >>>>>>>>>> ‘InternalTypeInfo’. > >>>>>>>>>> We can construct it using the schema information (data’s > logical type). > >>>>>>>>>> After > >>>>>>>>>> construction, we can get the ’TypeSerializer’ to deserialize > the raw > >>>>>>>>>> result. > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>>> 2022年12月1日 04:54,Jim Hughes <jhug...@confluent.io.INVALID> 写道: > >>>>>>>>>>> > >>>>>>>>>>> Hi Yu, > >>>>>>>>>>> > >>>>>>>>>>> Thanks for moving my comments to this thread! Also, thank you > for > >>>>>>>>>>> answering my questions; it is helping me understand the SQL > Gateway > >>>>>>>>>>> better. > >>>>>>>>>>> > >>>>>>>>>>> 5. > >>>>>>>>>>>> Our idea is to introduce a new session option (like > >>>>>>>>>>> 'sql-client.result.fetch-interval') to control > >>>>>>>>>>> the fetching requests sending frequency. What do you think? > >>>>>>>>>>> > >>>>>>>>>>> Should this configuration be mentioned in the FLIP? > >>>>>>>>>>> > >>>>>>>>>>> One slight concern I have with having > 'sql-client.result.fetch-interval' > >>>>>>>>>> as > >>>>>>>>>>> a session configuration is that users could set it low and > cause the > >>>>>>>>>> client > >>>>>>>>>>> to send a large volume of requests to the SQL gateway. > >>>>>>>>>>> > >>>>>>>>>>> Generally, I'd like to see some way for the server to be able > to limit > >>>>>>>>>> the > >>>>>>>>>>> number of requests it receives. If that really needs to be > done by a > >>>>>>>>>> proxy > >>>>>>>>>>> in front of the SQL gateway, that is fine as well. (To be > clear, I don't > >>>>>>>>>>> think my concern here should be blocking in any way.) > >>>>>>>>>>> > >>>>>>>>>>> 7. > >>>>>>>>>>>> What is the serialization lifecycle for results? > >>>>>>>>>>> > >>>>>>>>>>> I wonder if two other options are possible: > >>>>>>>>>>> 3) Could the Gateway just forward the result byte array? (Or > does the > >>>>>>>>>>> Gateway need to deserialize the response in order to > understand it for > >>>>>>>>>> some > >>>>>>>>>>> reason?) > >>>>>>>>>>> 4) Could the JobManager prepare the results in JSON? (Or > similarly could > >>>>>>>>>>> the Client read the format which the JobManager sends?) > >>>>>>>>>>> > >>>>>>>>>>> Thanks again! > >>>>>>>>>>> > >>>>>>>>>>> Cheers, > >>>>>>>>>>> > >>>>>>>>>>> Jim > >>>>>>>>>>> > >>>>>>>>>>> On Wed, Nov 30, 2022 at 9:40 AM yu zelin < > yuzelin....@gmail.com <mailto:yuzelin....@gmail.com>> wrote: > >>>>>>>>>>> > >>>>>>>>>>>> Hi, all > >>>>>>>>>>>> > >>>>>>>>>>>> Thanks Jim’s questions below. Here I’d like to reply to them. > >>>>>>>>>>>> > >>>>>>>>>>>>> 1. For the Client Parser, is it going to work with the > extended syntax > >>>>>>>>>>>>> from the Flink Table Store? > >>>>>>>>>>>>> > >>>>>>>>>>>>> 2. Relatedly, what will happen if an older Client tries to > handle > >>>>>>>>>>>> syntax > >>>>>>>>>>>>> that a newer service supports? (Suppose I use a 1.17 client > with a > >>>>>>>>>>>> 1.18 > >>>>>>>>>>>>> Gateway/system which has a new keyword. Is there anything > we should > >>>>>>>>>> be > >>>>>>>>>>>>> designing for upfront?) > >>>>>>>>>>>>> > >>>>>>>>>>>>> 3. How will client and server version mismatches be > handled? Will a > >>>>>>>>>>>>> single gateway be able to support multiple endpoint versions? > >>>>>>>>>>>>> 4. How are commands which change a session handled? Are > those sent > >>>>>>>>>> via > >>>>>>>>>>>>> an ExecuteStatementRequest? > >>>>>>>>>>>>> > >>>>>>>>>>>>> 5. The remote POC uses polling for getting back status and > getting > >>>>>>>>>> back > >>>>>>>>>>>>> results. Would it be possible to switch to web sockets or > some other > >>>>>>>>>>>>> mechanism to avoid polling? If polling is used for both, > the polling > >>>>>>>>>>>>> frequency should be different between local and remote > configurations. > >>>>>>>>>>>>> > >>>>>>>>>>>>> 6. What does this sentence mean? "The reason why we didn't > get the > >>>>>>>>>> sql > >>>>>>>>>>>>> type in client side is because it's hard for the lightweight > >>>>>>>>>>>> client-level > >>>>>>>>>>>>> parser to recognize some sql type sql, such as query with > CTE. " > >>>>>>>>>>>>> > >>>>>>>>>>>>> 7. What is the serialization lifecycle for results? It > makes sense to > >>>>>>>>>>>>> have some control over whether the gateway returns results > as SQL or > >>>>>>>>>>>> JSON. > >>>>>>>>>>>>> I'd love to see a way to avoid needing to serialize and > deserialize > >>>>>>>>>>>> results > >>>>>>>>>>>>> on the SQL Gateway if possible. I'm still new enough to the > project > >>>>>>>>>>>> that > >>>>>>>>>>>>> I'm not sure if that's readily possible. Maybe the SQL > Gateway's > >>>>>>>>>>>> return > >>>>>>>>>>>>> type can be sent as part of the request so that the > JobManager can > >>>>>>>>>> send > >>>>>>>>>>>>> back results in an advantageous format? > >>>>>>>>>>>>> > >>>>>>>>>>>>> 8. Does ErrorType need to be marked as @PublicEvolving? > >>>>>>>>>>>>> > >>>>>>>>>>>>> I'm excited for the SQL client to support gateway mode! > Given the > >>>>>>>>>> change > >>>>>>>>>>>>> in design, do you think it'll still be part of the Flink > 1.17 release? > >>>>>>>>>>>> > >>>>>>>>>>>> 1. ClientParser can work with new (and unknown) SQL syntax. > It is > >>>>>>>>>> because > >>>>>>>>>>>> if the > >>>>>>>>>>>> sql type is not recognized, the sql will be submitted to the > gateway > >>>>>>>>>>>> directly. > >>>>>>>>>>>> > >>>>>>>>>>>> For more information: Actually, the proposed ClientParser > only do two > >>>>>>>>>>>> things: > >>>>>>>>>>>> (1) Tell client commands (help, clear, etc) and sqls apart. > >>>>>>>>>>>> (2) parses several sql types (e.g. SHOW CREATE statement, we > can print > >>>>>>>>>> raw > >>>>>>>>>>>> string > >>>>>>>>>>>> for the SHOW CREATE result instead of table). Here the > recognization of > >>>>>>>>>>>> sql types > >>>>>>>>>>>> mostly affects the print style, and unrecognized sql also can > be > >>>>>>>>>> submitted > >>>>>>>>>>>> to cluster. > >>>>>>>>>>>> So the Client with new ClientParser can work compatible with > new syntax. > >>>>>>>>>>>> > >>>>>>>>>>>> 2. First, I'd like to explain that the gateway APIs and > supported syntax > >>>>>>>>>>>> is two things. > >>>>>>>>>>>> For example, ‘configureSession' and 'completeStatement' are > APIs. As > >>>>>>>>>>>> mentioned > >>>>>>>>>>>> in #1, the sql statements which syntax is unknown will be > submitted to > >>>>>>>>>> the > >>>>>>>>>>>> gateway, > >>>>>>>>>>>> and whether they can be executed normally depends on whether > the > >>>>>>>>>> execution > >>>>>>>>>>>> environment supports the syntax. > >>>>>>>>>>>> > >>>>>>>>>>>>> Is there anything we should be designing for upfront? > >>>>>>>>>>>> > >>>>>>>>>>>> The 'SqlGatewayRestAPIVersion’ has been introduced. But it is > for sql > >>>>>>>>>>>> gateway APIs. > >>>>>>>>>>>> > >>>>>>>>>>>> 3. > >>>>>>>>>>>>> How will client and server version mismatches be handled? > >>>>>>>>>>>> > >>>>>>>>>>>> A lower version client can work compatible with a higher > version gateway > >>>>>>>>>>>> because the > >>>>>>>>>>>> old interfaces won’t be deleted. When a higher version client > connects > >>>>>>>>>> to > >>>>>>>>>>>> a lower version > >>>>>>>>>>>> gateway, the client should notify the users if they try to use > >>>>>>>>>> unsupported > >>>>>>>>>>>> features. For > >>>>>>>>>>>> example, the client start option ‘-i’ means using > initialization file > >>>>>>>>>> to > >>>>>>>>>>>> initialize the session. > >>>>>>>>>>>> We plan to use the gateway’s ‘configureSession’ to implement > it. But > >>>>>>>>>> this > >>>>>>>>>>>> API is not > >>>>>>>>>>>> implemented in 1.16 Gateway (SqlGatewayRestAPIVersion = V1), > so if the > >>>>>>>>>>>> user try to > >>>>>>>>>>>> use ‘-i’ option to start the client with the 1.16 gateway, > the client > >>>>>>>>>>>> should tell the user that > >>>>>>>>>>>> Can’t execute ‘-i’ option with gateway which version is lower > than V2. > >>>>>>>>>>>> > >>>>>>>>>>>>> Will a single gateway be able to support multiple endpoint > versions? > >>>>>>>>>>>> > >>>>>>>>>>>> Currently, the gateway only starts a highest version endpoint > and the > >>>>>>>>>>>> higher version endpoint > >>>>>>>>>>>> is compatible with the lower version endpoint’s protocol. > >>>>>>>>>>>> > >>>>>>>>>>>> 4. Yes. Mostly, we use ’SET’ and ‘RESET’ statements to change > the > >>>>>>>>>> session > >>>>>>>>>>>> configuration. > >>>>>>>>>>>> Notice: the client can’t change the session (I mean, close > current > >>>>>>>>>> session > >>>>>>>>>>>> and open another > >>>>>>>>>>>> one). I’m not sure if you have need to change the session > itself? > >>>>>>>>>>>> > >>>>>>>>>>>> 5. > >>>>>>>>>>>>> Would it be possible to switch to web sockets or some other > mechanism > >>>>>>>>>>>> to avoid polling? > >>>>>>>>>>>> > >>>>>>>>>>>> Your suggestion is very good, but this flip is for supporting > the remote > >>>>>>>>>>>> client. How about taking > >>>>>>>>>>>> it as a future work? > >>>>>>>>>>>> > >>>>>>>>>>>>> If polling is used for both, the polling frequency should be > different > >>>>>>>>>>>> between local and remote > >>>>>>>>>>>> configurations. > >>>>>>>>>>>> > >>>>>>>>>>>> Our idea is to introduce a new session option (like > >>>>>>>>>>>> 'sql-client.result.fetch-interval') to control > >>>>>>>>>>>> the fetching requests sending frequency. What do you think? > >>>>>>>>>>>> > >>>>>>>>>>>> For more information: we are inclined to keep the polling > behavior in > >>>>>>>>>> this > >>>>>>>>>>>> version. For streaming > >>>>>>>>>>>> query, fetching results synchronously may occupy resources of > the > >>>>>>>>>> gateway > >>>>>>>>>>>> in a long period. > >>>>>>>>>>>> For example, if the job doesn’t return results for a long > time because > >>>>>>>>>> the > >>>>>>>>>>>> window has not been > >>>>>>>>>>>> triggered, the synchronously fetching will keep occupying the > >>>>>>>>>> connection. > >>>>>>>>>>>> In asynchronous > >>>>>>>>>>>> situation, the gateway can return a NOT_READY_RESULT quickly > and release > >>>>>>>>>>>> the resources > >>>>>>>>>>>> for other clients to use. I think we can make some > improvements for the > >>>>>>>>>>>> whole flow path in the > >>>>>>>>>>>> future. > >>>>>>>>>>>> > >>>>>>>>>>>> 6. Sorry for that there is mistakes in this sentence. Let me > make it > >>>>>>>>>> clear. > >>>>>>>>>>>> > >>>>>>>>>>>> We proposed to add 'ContentType' to indicates the result is > for what > >>>>>>>>>> kind > >>>>>>>>>>>> of sql. In this sentence, > >>>>>>>>>>>> I want to explain why we add 'ContentType' since the > ClientParser can > >>>>>>>>>>>> recognize the sql type too. > >>>>>>>>>>>> It is because the proposed ClientParser can't recognize > complex syntax. > >>>>>>>>>>>> For example, it can’t > >>>>>>>>>>>> recognize query with CTE. So the result should carry content > type > >>>>>>>>>>>> information to help the client to > >>>>>>>>>>>> know the sql type. For example, the > 'ContentType.QUERY_RESULT' indicates > >>>>>>>>>>>> the result is for a > >>>>>>>>>>>> query statement. > >>>>>>>>>>>> > >>>>>>>>>>>> 7. > >>>>>>>>>>>>> What is the serialization lifecycle for results? > >>>>>>>>>>>> > >>>>>>>>>>>> 1) Sink to JobManager : RowData -> Byte[ ] (serialize) > >>>>>>>>>>>> 2) JobManager to Gateway : Byte[ ] -> RowData (deserialize) > >>>>>>>>>>>> 3) Gateway sending : RowData -> Byte[ ] > (serialized to JSON > >>>>>>>>>>>> format) > >>>>>>>>>>>> 4) Client receiving : Byte[ ] -> RowData > (deserialize) > >>>>>>>>>>>> > >>>>>>>>>>>>> Maybe the SQL Gateway's return type can be sent as part of > the request > >>>>>>>>>>>> so that the > >>>>>>>>>>>> JobManager can send back results in an advantageous format? > >>>>>>>>>>>> > >>>>>>>>>>>> Yes. I think it's an improvement for the Client and Gateway. > We have > >>>>>>>>>> some > >>>>>>>>>>>> ideas. For example, > >>>>>>>>>>>> > >>>>>>>>>>>> 1) We can move the Gateway into the JobManager and reduce the > Ser/De > >>>>>>>>>> costs > >>>>>>>>>>>> from JM to Gateway. > >>>>>>>>>>>> 2) Or the Gateway can collect the data from the sink function > directly > >>>>>>>>>>>> instead of JobManager. > >>>>>>>>>>>> > >>>>>>>>>>>> But I think we can leave this as a future work and discuss in > another > >>>>>>>>>>>> thread. > >>>>>>>>>>>> > >>>>>>>>>>>> 8. Yes. > >>>>>>>>>>>> > >>>>>>>>>>>>> Do you think it'll still be part of the Flink 1.17 release? > >>>>>>>>>>>> Yes. We will try our best to finish the work. > >>>>>>>>>>>> > >>>>>>>>>>>> Feel free to talk to me if I’m wrong or you have any other > questions. > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>>> 2022年11月25日 11:48,yu zelin <yuzelin....@gmail.com <mailto: > yuzelin....@gmail.com>> 写道: > >>>>>>>>>>>>> > >>>>>>>>>>>>> Hi, all > >>>>>>>>>>>>> > >>>>>>>>>>>>> I want to initiate a discussion on the FLIP-275: Support > Remote SQL > >>>>>>>>>>>> Client Based on SQL Gateway[1]. > >>>>>>>>>>>>> The motivation of this FLIP is that the current SQL Client > allows only > >>>>>>>>>>>> local connection which can not satisfy > >>>>>>>>>>>>> the common need of connecting to a remote cluster. > >>>>>>>>>>>>> > >>>>>>>>>>>>> Since the FLIP-91[2] has introduced SQL Gateway, we proposed > to > >>>>>>>>>>>> implement the Remote SQL Client > >>>>>>>>>>>>> based on SQL Gateway. In our design, we proposed two main > changes: > >>>>>>>>>>>>> > >>>>>>>>>>>>> 1. New remote mode client which performs connection to the > remote > >>>>>>>>>>>> gateway through REST API. > >>>>>>>>>>>>> 2. Migration of the current local mode client. We proposed > to refactor > >>>>>>>>>>>> the local client based on SQL Gateway > >>>>>>>>>>>>> to unify the interface for two modes. > >>>>>>>>>>>>> > >>>>>>>>>>>>> Looking forward to your suggestions. > >>>>>>>>>>>>> > >>>>>>>>>>>>> Best, > >>>>>>>>>>>>> Yu Zelin > >>>>>>>>>>>>> > >>>>>>>>>>>>> [1] https://cwiki.apache.org/confluence/x/T48ODg > >>>>>>>>>>>>> [2] https://cwiki.apache.org/confluence/x/rIyMC > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>> > >>>>>> > >>>> > >>> > >> > >