/**
  * Process stored queries and change store accordingly. The query obj is modified
  * so that it contains non-recursive description of a select to execute for getting
  * the actual result.
  *
  * @param integer $id
  * @throws RuntimeException
  */
 public function doExecuteSubqueryJoinDependenciesFor($id)
 {
     $this->hierarchyTempTableBuilder->emptyHierarchyCache();
     $this->executedQueries = array();
     // Should never happen
     if (!isset($this->querySegmentList[$id])) {
         throw new RuntimeException("{$id} doesn't exist");
     }
     $this->doResolveBySegment($this->querySegmentList[$id]);
 }
 public function testCreateHierarchyTempTable()
 {
     $this->connection->expects($this->once())->method('tableName')->with($this->stringContains('bar'))->will($this->returnValue('_bar'));
     $this->connection->expects($this->atLeastOnce())->method('query');
     $instance = new HierarchyTempTableBuilder($this->connection, $this->temporaryIdTableCreator);
     $instance->setClassHierarchyTableDefinition('bar', 3);
     $instance->createHierarchyTempTableFor('class', 'foobar', '(42)');
     $expected = array('(42)' => 'foobar');
     $this->assertEquals($expected, $instance->getHierarchyCache());
     $instance->emptyHierarchyCache();
     $this->assertEmpty($instance->getHierarchyCache());
 }