/** INTERNAL: Monitoring is done on the endOperation only. */ public Object profileExecutionOfQuery(DatabaseQuery query, Record row, AbstractSession session) { if (this.profileWeight < SessionProfiler.HEAVY) { return session.internalExecuteQuery(query, (AbstractRecord) row); } startOperationProfile(TIMER + query.getMonitorName()); startOperationProfile(TIMER + query.getClass().getSimpleName()); occurred(COUNTER + query.getClass().getSimpleName()); occurred(COUNTER + query.getMonitorName()); try { return session.internalExecuteQuery(query, (AbstractRecord) row); } finally { endOperationProfile(TIMER + query.getMonitorName()); endOperationProfile(TIMER + query.getClass().getSimpleName()); checkDumpTime(); } }