Doctrine 2 - ORM
  1. Doctrine 2 - ORM
  2. DDC-2043

Extra cache operation in DBAL\Cache\ResultCacheStatement.php

    Details

    • Type: Improvement Improvement
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 2.3
    • Fix Version/s: None
    • Component/s: ORM
    • Security Level: All
    • Labels:
      None
    • Environment:
      CentOS, PHP 5.3.10

      Description

      This is the closeCursor() method in DBAL\Cache\ResultCacheStatement.php:

      public function closeCursor()
          {
              $this->statement->closeCursor();
              if ($this->emptied && $this->data !== null) {
                  $data = $this->resultCache->fetch($this->cacheKey);
                  if ( ! $data) {
                      $data = array();
                  }
                  $data[$this->realKey] = $this->data;
      
                  $this->resultCache->save($this->cacheKey, $data, $this->lifetime);
                  unset($this->data);
              }
          }
      

      We are using Memcache and I noticed an extra GET operation on all cache misses. In the code above I believe the fetch call is not necessary and that the code would do the same without it.
      Also, may I ask why is the SQL used as a key in the cached data?

        Activity

        Hide
        Bogdan Albei added a comment -

        The cacheKey already identifies the query(or at least it should). Would we have cases where different queries would want to use the same cache key?

        Show
        Bogdan Albei added a comment - The cacheKey already identifies the query(or at least it should). Would we have cases where different queries would want to use the same cache key?
        Hide
        Christophe Coevoet added a comment -

        The SQL is used as a key because it is what identifies the query which is done (well, the statement and the parameters)

        Show
        Christophe Coevoet added a comment - The SQL is used as a key because it is what identifies the query which is done (well, the statement and the parameters)

          People

          • Assignee:
            Benjamin Eberlei
            Reporter:
            Bogdan Albei
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated: