in asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBResultSet.java [135:175]
public boolean next() throws SQLException {
checkClosed();
try {
switch (state) {
case ST_BEFORE_FIRST:
JsonToken token = rowParser.hasCurrentToken() ? rowParser.currentToken() : rowParser.nextToken();
if (token != JsonToken.START_ARRAY) {
throw getErrorReporter().errorInProtocol(String.valueOf(token));
}
initRowStore();
state = ST_NEXT;
// fall thru to ST_NEXT
case ST_NEXT:
token = rowParser.nextToken();
switch (token) {
case START_OBJECT:
if (maxRows > 0 && rowNumber == maxRows) {
state = ST_AFTER_LAST;
return false;
} else {
readRow();
rowNumber++;
return true;
}
case END_ARRAY:
state = ST_AFTER_LAST;
return false;
default:
throw getErrorReporter().errorInProtocol(String.valueOf(token));
}
case ST_AFTER_LAST:
return false;
default:
throw new IllegalStateException(String.valueOf(state));
}
} catch (JsonProcessingException e) {
throw getErrorReporter().errorInProtocol(e);
} catch (IOException e) {
throw getErrorReporter().errorInConnection(e);
}
}