@Override
public double plan() throws Exception {
try{
final RecordingObserver recording = new RecordingObserver();
final AttemptObservers observers = AttemptObservers.of(observer, recording);
observers.planStart(sql);
plan = handler.getPlan(config.cloneWithNewObserver(observers), sql, sqlNode);
PreparedPlan prepared = new PreparedPlan(context.getQueryId(), context.getQueryUserName(), sql, plan, recording);
final Long handle = PREPARE_ID.getAndIncrement();
state = ServerPreparedStatementState.newBuilder()
.setHandle(handle)
.setSqlQuery(sql)
.setPrepareId(context.getQueryId())
.build();
planCache.put(handle, prepared);
observers.planCompleted(new ExecutionPlan(plan, ImmutableList.of(), ImmutableList.of()));
return 1;
}catch(Exception ex){
throw SqlExceptionHelper.coerceException(logger, sql, ex, true);
}
}