[
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)