結果をクエリキャッシュに格納するタイミングについて

SELECT文が投げられた場合、sql/sql_parse.ccの以下の2667行目付近を通過する。これはSQLCOMのswitchがSQLCOM_SELECTと判定されて、かつExplainではないと判定された場合の、パーサ処理完了後かつオプティマイザ処理開始前に走るコード(のはず)。

      else
      {
        if (!sel_result && !(sel_result= new select_send()))
          goto error;
        query_cache_store_query(thd, all_tables);
        res= handle_select(thd, lex, sel_result, 0);
        if (sel_result != lex->result)
          delete sel_result;
      }

このhandle_selectの行でオプティマイザ→実行レイヤ→ストレージエンジンといった順序で呼出が行われて、さらにネットワーク系APIを使ってクライアントに結果送信が行われる、という風に理解してたのだけど、query_cache_store_queryの呼出がhandle_selectよりも前なのはなんでだろう?