You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Julian Hyde (Jira)" <ji...@apache.org> on 2022/10/26 00:55:00 UTC

[jira] [Commented] (CALCITE-668) [Avatica] Support sessionless query requests

    [ https://issues.apache.org/jira/browse/CALCITE-668?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17624095#comment-17624095 ] 

Julian Hyde commented on CALCITE-668:
-------------------------------------

I agree that putting the complete "session state" in all requests is required.

But there is also the issue of result sets that require more than one fetch. If "select * from orders" returns 350 rows, you just can't fetch the rows 0..99 from one instance and then send a fetch request for rows 100..199 that might go to a different instance. One possible answer is to use provide a streaming RPC response - a single RPC message, of unbounded size, that contains all rows. The client might apply back-pressure, and only read the first 1M bytes of the response, and then a few seconds later read the next 1M bytes. Streaming responses would place requirements on the wire format (say http) and also on the message encoding (say a form of JSON or protobuf where messages can be parsed before the complete message has arrived).

> [Avatica] Support sessionless query requests
> --------------------------------------------
>
>                 Key: CALCITE-668
>                 URL: https://issues.apache.org/jira/browse/CALCITE-668
>             Project: Calcite
>          Issue Type: Improvement
>          Components: avatica
>            Reporter: Nick Dimiduk
>            Priority: Major
>
> Brought up over on CALCITE-663. One goal I have for Avatica is to support hosting a number of Avatica instances behind a "dumb" load balancer (i.e., round robin). This places the burden of implicit connection and statement creation on the protocol. A single client request should have everything it needs for a server to execute it, even if the server has never seen this client before.
> There are different ways to accomplish this goal, some of which mentioned already include:
>  - complete "session state" in all requests
>  - multiple rpc methods passed in a single wire transaction



--
This message was sent by Atlassian Jira
(v8.20.10#820010)