protected List<ODocument> executeQuery(String sql, ODatabaseDocumentInternal db, Object... args) {
final List<ODocument> synchResult = db.query(new OSQLSynchQuery<ODocument>(sql), args);
final List<ODocument> asynchResult = new ArrayList<ODocument>();
final AtomicBoolean endWasCalled = new AtomicBoolean();
db.query(new OSQLAsynchQuery<ODocument>(sql, new OCommandResultListener() {
@Override
public boolean result(Object iRecord) {
asynchResult.add((ODocument) iRecord);
return true;
}