From 6fc18e330d8ecd57dc9a4af871d6cc30cffd3f7d Mon Sep 17 00:00:00 2001
From: Asmir Mustafic <goetas@lignano.it>
Date: Tue, 2 Apr 2013 10:04:15 +0200
Subject: [PATCH] indexby metadata column

---
 lib/Doctrine/ORM/Query/ResultSetMapping.php         |  2 +-
 .../Tests/ORM/Hydration/ResultSetMappingTest.php    | 13 +++++++++++++
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/lib/Doctrine/ORM/Query/ResultSetMapping.php b/lib/Doctrine/ORM/Query/ResultSetMapping.php
index 50dacea41..b06b68385 100644
--- a/lib/Doctrine/ORM/Query/ResultSetMapping.php
+++ b/lib/Doctrine/ORM/Query/ResultSetMapping.php
@@ -211,7 +211,7 @@ class ResultSetMapping
     {
         $found = false;
 
-        foreach ($this->fieldMappings as $columnName => $columnFieldName) {
+        foreach (array_merge($this->metaMappings, $this->fieldMappings) as $columnName => $columnFieldName) {
             if ( ! ($columnFieldName === $fieldName && $this->columnOwnerMap[$columnName] === $alias)) continue;
 
             $this->addIndexByColumn($alias, $columnName);
diff --git a/tests/Doctrine/Tests/ORM/Hydration/ResultSetMappingTest.php b/tests/Doctrine/Tests/ORM/Hydration/ResultSetMappingTest.php
index 801937f2d..5a198a944 100644
--- a/tests/Doctrine/Tests/ORM/Hydration/ResultSetMappingTest.php
+++ b/tests/Doctrine/Tests/ORM/Hydration/ResultSetMappingTest.php
@@ -255,5 +255,18 @@ class ResultSetMappingTest extends \Doctrine\Tests\OrmTestCase
         $this->assertEquals('Doctrine\Tests\Models\CMS\CmsUser', $rsm->getDeclaringClass('status'));
         $this->assertEquals('Doctrine\Tests\Models\CMS\CmsUser', $rsm->getDeclaringClass('username'));
     }
+    public function testIndexByMetadataColumn()
+    {
+        $rms = $this->_rsm;
+        $rms->addEntityResult('Doctrine\Tests\Models\Legacy\LegacyUser', 'u')
+            ->addJoinedEntityResult('Doctrine\Tests\Models\Legacy', 'lu', 'u', '_references')
+            ->addMetaResult('lu', '_source',  '_source', true)
+            ->addMetaResult('lu', '_target',  '_target', true)
+            ->addIndexBy('lu', '_source');
+
+
+          $this->assertTrue($rms->hasIndexBy('lu'));
+
+    }
 }