Egor Ryashin created CALCITE-6139:
-------------------------------------

             Summary: Avatica-Go sends the same offset for the FetchRequest
                 Key: CALCITE-6139
                 URL: https://issues.apache.org/jira/browse/CALCITE-6139
             Project: Calcite
          Issue Type: Bug
          Components: avatica-go
    Affects Versions: avatica-go-5.2.0
            Reporter: Egor Ryashin
            Assignee: Francis Chuang


This exception happens when *Apache Druid Avatica* protobuf endpoint is used: 
{_}"Druid can only fetch forward. Requested offset”{_}.
I tried to debug that and saw that any simple query fails if it triggers 
fetching of multiple frames. I speculate that when the first *ExucuteRequest* 
is sent


{code:java}
msg := &message.ExecuteRequest{
StatementHandle:    s.handle,
ParameterValues:    s.parametersToTypedValues(args),
FirstFrameMaxSize:  s.conn.config.frameMaxSize,
HasParameterValues: true,
}{code}


and the result set is created after


{code:java}
rsets = append(rsets, &resultSet{
columns: columns,
done:    frame.Done,
offset:  frame.Offset,
data:    data,
}){code}


then for the next frame *FetchRequest* is sent but it uses the same 0 offset 
(the data for that offset was returned with the {*}ExecuteRequest{*})

res, err := r.conn.httpClient.post(context.Background(), &message.FetchRequest{
{code:java}
ConnectionId: r.conn.connectionId,
StatementId:  r.statementID,
Offset:       resultSet.offset,
FrameMaxSize: r.conn.config.frameMaxSize,
}){code}


So, in short, I think *Avatica-Go* sends 2 requests with the same offset that 
makes Druid to fail.



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

Reply via email to