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)