Skip to content

Commit 9f87b66

Browse files
nishantmonu51jcamachor
authored andcommitted
[CALCITE-1734] Fix select query result parsing with druid 0.9.2 (Nishant Bangarwa)
Close #416
1 parent 95c6918 commit 9f87b66

File tree

1 file changed

+32
-27
lines changed

1 file changed

+32
-27
lines changed

druid/src/main/java/org/apache/calcite/adapter/druid/DruidConnectionImpl.java

Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -188,36 +188,41 @@ private void parse(QueryType queryType, InputStream in, Sink sink,
188188
if (parser.nextToken() == JsonToken.FIELD_NAME
189189
&& parser.getCurrentName().equals("result")
190190
&& parser.nextToken() == JsonToken.START_OBJECT) {
191-
if (parser.nextToken() == JsonToken.FIELD_NAME
192-
&& parser.getCurrentName().equals("pagingIdentifiers")
193-
&& parser.nextToken() == JsonToken.START_OBJECT) {
194-
JsonToken token = parser.nextToken();
195-
while (parser.getCurrentToken() == JsonToken.FIELD_NAME) {
196-
page.pagingIdentifier = parser.getCurrentName();
197-
if (parser.nextToken() == JsonToken.VALUE_NUMBER_INT) {
198-
page.offset = parser.getIntValue();
191+
while (parser.nextToken() == JsonToken.FIELD_NAME) {
192+
if (parser.getCurrentName().equals("pagingIdentifiers")
193+
&& parser.nextToken() == JsonToken.START_OBJECT) {
194+
JsonToken token = parser.nextToken();
195+
while (parser.getCurrentToken() == JsonToken.FIELD_NAME) {
196+
page.pagingIdentifier = parser.getCurrentName();
197+
if (parser.nextToken() == JsonToken.VALUE_NUMBER_INT) {
198+
page.offset = parser.getIntValue();
199+
}
200+
token = parser.nextToken();
199201
}
200-
token = parser.nextToken();
201-
}
202-
expect(token, JsonToken.END_OBJECT);
203-
}
204-
if (parser.nextToken() == JsonToken.FIELD_NAME
205-
&& parser.getCurrentName().equals("events")
206-
&& parser.nextToken() == JsonToken.START_ARRAY) {
207-
while (parser.nextToken() == JsonToken.START_OBJECT) {
208-
expectScalarField(parser, "segmentId");
209-
expectScalarField(parser, "offset");
210-
if (parser.nextToken() == JsonToken.FIELD_NAME
211-
&& parser.getCurrentName().equals("event")
212-
&& parser.nextToken() == JsonToken.START_OBJECT) {
213-
parseFields(fieldNames, fieldTypes, posTimestampField, rowBuilder, parser);
214-
sink.send(rowBuilder.build());
215-
rowBuilder.reset();
216-
page.totalRowCount += 1;
202+
expect(token, JsonToken.END_OBJECT);
203+
} else if (parser.getCurrentName().equals("events")
204+
&& parser.nextToken() == JsonToken.START_ARRAY) {
205+
while (parser.nextToken() == JsonToken.START_OBJECT) {
206+
expectScalarField(parser, "segmentId");
207+
expectScalarField(parser, "offset");
208+
if (parser.nextToken() == JsonToken.FIELD_NAME
209+
&& parser.getCurrentName().equals("event")
210+
&& parser.nextToken() == JsonToken.START_OBJECT) {
211+
parseFields(fieldNames, fieldTypes, posTimestampField, rowBuilder, parser);
212+
sink.send(rowBuilder.build());
213+
rowBuilder.reset();
214+
page.totalRowCount += 1;
215+
}
216+
expect(parser, JsonToken.END_OBJECT);
217+
}
218+
parser.nextToken();
219+
} else if (parser.getCurrentName().equals("dimensions")
220+
|| parser.getCurrentName().equals("metrics")) {
221+
expect(parser, JsonToken.START_ARRAY);
222+
while (parser.nextToken() != JsonToken.END_ARRAY) {
223+
// empty
217224
}
218-
expect(parser, JsonToken.END_OBJECT);
219225
}
220-
parser.nextToken();
221226
}
222227
}
223228
}

0 commit comments

Comments
 (0)