Changeset 4572

Show
Ignore:
Timestamp:
06/28/08 00:19:59 (6 months ago)
Author:
jwage
Message:

fixes #1175

Location:
branches/0.11
Files:
11 modified

Legend:

Unmodified
Added
Removed
  • branches/0.11/lib/Doctrine/Query.php

    r4519 r4572  
    10271027 
    10281028            // preserve LEFT JOINs only if needed 
    1029                         // Check if it's JOIN, if not add a comma separator instead of space 
     1029            // Check if it's JOIN, if not add a comma separator instead of space 
    10301030            if (!preg_match('/\bJOIN\b/i', $part) && !isset($this->_pendingJoinConditions[$k])) { 
    10311031                $q .= ', ' . $part; 
    10321032            } else { 
     1033                $e = explode(' ', $part); 
     1034 
    10331035                if (substr($part, 0, 9) === 'LEFT JOIN') { 
    1034                     $e = explode(' ', $part); 
    1035  
    10361036                    $aliases = array_merge($this->_subqueryAliases, 
    10371037                                array_keys($this->_neededTables)); 
     
    10591059                } 
    10601060 
    1061                 $q .= ' ' . $part; 
     1061                $tableAlias = trim($e[3], '"'); 
     1062                $componentAlias = $this->getComponentAlias($tableAlias); 
     1063 
     1064                $string = $this->getInheritanceCondition($componentAlias); 
     1065 
     1066                if ($string) { 
     1067                    $q .= ' ' . $part . ' AND ' . $string; 
     1068                } else { 
     1069                    $q .= ' ' . $part; 
     1070                } 
    10621071            } 
    10631072 
     
    11421151        } 
    11431152 
    1144         $string = $this->applyInheritance(); 
     1153        $string = $this->getInheritanceCondition($this->getRootAlias()); 
    11451154 
    11461155        // apply inheritance to WHERE part 
     
    17821791 
    17831792        // append column aggregation inheritance (if needed) 
    1784         $string = $this->applyInheritance(); 
     1793        $string = $this->getInheritanceCondition($this->getRootAlias()); 
    17851794 
    17861795        if ( ! empty($string)) { 
  • branches/0.11/lib/Doctrine/Query/Abstract.php

    r4530 r4572  
    596596 
    597597    /** 
    598      * applyInheritance 
    599      * applies column aggregation inheritance to DQL / SQL query 
    600      * 
    601      * @return string 
    602      */ 
    603     public function applyInheritance() 
    604     { 
    605         // get the inheritance maps 
    606         $array = array(); 
    607  
    608         foreach ($this->_queryComponents as $componentAlias => $data) { 
    609             $tableAlias = $this->getSqlTableAlias($componentAlias); 
    610             $array[$tableAlias][] = $data['table']->inheritanceMap; 
    611         } 
    612  
    613         // apply inheritance maps 
    614         $str = ''; 
    615         $c = array(); 
    616  
    617         $index = 0; 
    618         foreach ($array as $tableAlias => $maps) { 
    619             $a = array(); 
    620  
    621             // don't use table aliases if the query isn't a select query 
    622             if ($this->_type !== Doctrine_Query::SELECT) { 
    623                 $tableAlias = ''; 
    624             } else { 
    625                 $tableAlias .= '.'; 
    626             } 
    627  
    628             foreach ($maps as $map) { 
    629                 $b = array(); 
    630                 foreach ($map as $field => $value) { 
    631                     $identifier = $this->_conn->quoteIdentifier($tableAlias . $field); 
    632  
    633                     if ($index > 0) { 
    634                         $b[] = '(' . $identifier . ' = ' . $this->_conn->quote($value) 
    635                              . ' OR ' . $identifier . ' IS NULL)'; 
    636                     } else { 
    637                         $b[] = $identifier . ' = ' . $this->_conn->quote($value); 
    638                     } 
    639                 } 
    640  
    641                 if ( ! empty($b)) { 
    642                     $a[] = implode(' AND ', $b); 
    643                 } 
    644             } 
    645  
    646             if ( ! empty($a)) { 
    647                 $c[] = implode(' AND ', $a); 
    648             } 
    649             $index++; 
    650         } 
    651  
    652         $str .= implode(' AND ', $c); 
    653  
    654         return $str; 
     598     * Returns the inheritance condition for the passed componentAlias 
     599     * If no component alias is specified it defaults to the root component 
     600     * 
     601     * This function is used to append a SQL condition to models which have inheritance mapping 
     602     * The condition is applied to the FROM component in the WHERE, but the condition is applied to  
     603     * JOINS in the ON condition and not the WHERE 
     604     * 
     605     * @return string $str  SQL condition string 
     606     */ 
     607    public function getInheritanceCondition($componentAlias) 
     608    { 
     609        $map = $this->_queryComponents[$componentAlias]['table']->inheritanceMap; 
     610 
     611        // No inheritance map so lets just return 
     612        if (empty($map)) { 
     613          return; 
     614        } 
     615 
     616        $tableAlias = $this->getSqlTableAlias($componentAlias); 
     617 
     618        if ($this->_type !== Doctrine_Query::SELECT) { 
     619            $tableAlias = ''; 
     620        } else { 
     621            $tableAlias .= '.'; 
     622        } 
     623 
     624        $field = key($map); 
     625        $value = current($map); 
     626        $identifier = $this->_conn->quoteIdentifier($tableAlias . $field); 
     627 
     628        return $identifier . ' = ' . $this->_conn->quote($value);; 
    655629    } 
    656630 
  • branches/0.11/lib/Doctrine/RawSql.php

    r4252 r4572  
    234234        } 
    235235 
    236         $string = $this->applyInheritance(); 
     236        $string = $this->getInheritanceCondition($this->getRootAlias()); 
    237237        if ( ! empty($string)) { 
    238238            $this->_sqlParts['where'][] = $string; 
  • branches/0.11/tests/Query/ApplyInheritanceTestCase.php

    r3884 r4572  
    5151        $query->where('u.id = 1'); 
    5252         
    53         $sql = 'SELECT i.id AS i__id, i.name AS i__name, i2.id AS i2__id, i2.username AS i2__username FROM inheritance_deal i LEFT JOIN inheritance_entity_user i3 ON i.id = i3.entity_id LEFT JOIN inheritance_user i2 ON i2.id = i3.user_id WHERE i2.id = 1 AND (i3.type = 1 OR i3.type IS NULL)'; 
     53        $sql = 'SELECT i.id AS i__id, i.name AS i__name, i2.id AS i2__id, i2.username AS i2__username FROM inheritance_deal i LEFT JOIN inheritance_entity_user i3 ON i.id = i3.entity_id AND i3.type = 1 LEFT JOIN inheritance_user i2 ON i2.id = i3.user_id WHERE i2.id = 1'; 
    5454         
    5555        $this->assertEqual($sql, $query->getSql()); 
  • branches/0.11/tests/Query/ComponentAliasTestCase.php

    r3884 r4572  
    6666        $this->assertTrue($users[0]->Phonenumber instanceof Doctrine_Collection); 
    6767        $this->assertEqual($q->getQuery(), 
    68         "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id, p.id AS p__id, p.phonenumber AS p__phonenumber, p.entity_id AS p__entity_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id LEFT JOIN phonenumber p ON e2.id = p.entity_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))"); 
     68        "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id, p.id AS p__id, p.phonenumber AS p__phonenumber, p.entity_id AS p__entity_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 LEFT JOIN phonenumber p ON e2.id = p.entity_id WHERE (e.type = 0)"); 
    6969        $this->assertEqual(($count + 1), count($this->conn)); 
    7070    } 
     
    9999        $this->assertTrue($users[0]->Phonenumber instanceof Doctrine_Collection);  
    100100        $this->assertEqual($q->getQuery(), 
    101         "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, p.id AS p__id, p.phonenumber AS p__phonenumber, p.entity_id AS p__entity_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id, p2.id AS p2__id, p2.phonenumber AS p2__phonenumber, p2.entity_id AS p2__entity_id FROM entity e LEFT JOIN phonenumber p ON e.id = p.entity_id LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id LEFT JOIN phonenumber p2 ON e2.id = p2.entity_id WHERE e.id IN (5, 6) AND (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))"); 
     101        "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, p.id AS p__id, p.phonenumber AS p__phonenumber, p.entity_id AS p__entity_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id, p2.id AS p2__id, p2.phonenumber AS p2__phonenumber, p2.entity_id AS p2__entity_id FROM entity e LEFT JOIN phonenumber p ON e.id = p.entity_id LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 LEFT JOIN phonenumber p2 ON e2.id = p2.entity_id WHERE e.id IN (5, 6) AND (e.type = 0)"); 
    102102        $this->assertEqual(count($users), 2); 
    103103        $this->assertEqual(count($users[0]['Group']), 1); 
  • branches/0.11/tests/Query/FromTestCase.php

    r4263 r4572  
    4848        $q->from('User u LEFT JOIN u.Group'); 
    4949 
    50         $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))"); 
     50        $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 WHERE (e.type = 0)"); 
    5151    } 
    5252 
     
    5757        $q->from('User u JOIN u.Group'); 
    5858 
    59         $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))"); 
     59        $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 WHERE (e.type = 0)"); 
    6060    } 
    6161 
     
    6666        $q->from('User u INNER JOIN u.Group'); 
    6767 
    68         $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))"); 
     68        $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 WHERE (e.type = 0)"); 
    6969    } 
    7070 
     
    7575        $q->from('User u LEFT JOIN u.Group LEFT JOIN u.Phonenumber'); 
    7676 
    77         $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id, p.id AS p__id, p.phonenumber AS p__phonenumber, p.entity_id AS p__entity_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id LEFT JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))"); 
     77        $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id, p.id AS p__id, p.phonenumber AS p__phonenumber, p.entity_id AS p__entity_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 LEFT JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0)"); 
    7878    } 
    7979    public function testMultipleLeftJoin2()  
     
    8383        $q->from('User u LEFT JOIN u.Group LEFT JOIN u.Phonenumber'); 
    8484 
    85         $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id, p.id AS p__id, p.phonenumber AS p__phonenumber, p.entity_id AS p__entity_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id LEFT JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))"); 
     85        $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id, p.id AS p__id, p.phonenumber AS p__phonenumber, p.entity_id AS p__entity_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 LEFT JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0)"); 
    8686    } 
    8787    public function testMultipleInnerJoin()  
     
    9191        $q->select('u.name')->from('User u INNER JOIN u.Group INNER JOIN u.Phonenumber'); 
    9292 
    93         $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id INNER JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))"); 
     93        $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 INNER JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0)"); 
    9494    } 
    9595    public function testMultipleInnerJoin2()  
     
    9999        $q->select('u.name')->from('User u INNER JOIN u.Group, u.Phonenumber'); 
    100100 
    101         $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id INNER JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))"); 
     101        $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 INNER JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0)"); 
    102102    } 
    103103    public function testMixingOfJoins()  
     
    107107        $q->select('u.name, g.name, p.phonenumber')->from('User u INNER JOIN u.Group g LEFT JOIN u.Phonenumber p'); 
    108108 
    109         $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e2.id AS e2__id, e2.name AS e2__name, p.id AS p__id, p.phonenumber AS p__phonenumber FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id LEFT JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))"); 
     109        $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e2.id AS e2__id, e2.name AS e2__name, p.id AS p__id, p.phonenumber AS p__phonenumber FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 LEFT JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0)"); 
    110110    }  
    111111    public function testMixingOfJoins2() 
     
    115115        $q->select('u.name, g.name, p.phonenumber')->from('User u INNER JOIN u.Group g LEFT JOIN g.Phonenumber p'); 
    116116 
    117         $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e2.id AS e2__id, e2.name AS e2__name, p.id AS p__id, p.phonenumber AS p__phonenumber FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id LEFT JOIN phonenumber p ON e2.id = p.entity_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))"); 
     117        $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e2.id AS e2__id, e2.name AS e2__name, p.id AS p__id, p.phonenumber AS p__phonenumber FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 LEFT JOIN phonenumber p ON e2.id = p.entity_id WHERE (e.type = 0)"); 
    118118    } 
    119119} 
  • branches/0.11/tests/Query/JoinConditionTestCase.php

    r3884 r4572  
    5959        $q->parseQuery("SELECT u.name, g.id FROM User u LEFT JOIN u.Group g ON g.id > 2"); 
    6060 
    61         $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e2.id AS e2__id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id > 2 WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))"); 
     61        $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e2.id AS e2__id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id > 2 AND e2.type = 1 WHERE (e.type = 0)"); 
    6262    } 
    6363    public function testJoinConditionsAreSupportedForManyToManyInnerJoins() 
     
    6767        $q->parseQuery("SELECT u.name, g.id FROM User u INNER JOIN u.Group g ON g.id > 2"); 
    6868     
    69         $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e2.id AS e2__id FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id > 2 WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))"); 
     69        $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e2.id AS e2__id FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id > 2 AND e2.type = 1 WHERE (e.type = 0)"); 
    7070    } 
    7171} 
  • branches/0.11/tests/Query/JoinTestCase.php

    r4560 r4572  
    186186        $q->select('u.name')->from('User u INNER JOIN u.Group g'); 
    187187 
    188         $this->assertEqual($q->getQuery(), 'SELECT e.id AS e__id, e.name AS e__name FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))'); 
     188        $this->assertEqual($q->getQuery(), 'SELECT e.id AS e__id, e.name AS e__name FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 WHERE (e.type = 0)'); 
    189189    } 
    190190 
     
    204204          ->leftJoin('u.Group g')->leftJoin('g.Email e'); 
    205205 
    206         $this->assertEqual($q->getQuery(), 'SELECT e.id AS e__id, e2.id AS e2__id, e3.id AS e3__id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id LEFT JOIN email e3 ON e2.email_id = e3.id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))'); 
     206        $this->assertEqual($q->getQuery(), 'SELECT e.id AS e__id, e2.id AS e2__id, e3.id AS e3__id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 LEFT JOIN email e3 ON e2.email_id = e3.id WHERE (e.type = 0)'); 
    207207        try { 
    208208            $q->execute(); 
     
    219219          ->leftJoin('g.User u')->leftJoin('u.Account a'); 
    220220 
    221         $this->assertEqual($q->getQuery(), 'SELECT e.id AS e__id, e2.id AS e2__id FROM entity e LEFT JOIN groupuser g ON e.id = g.group_id LEFT JOIN entity e2 ON e2.id = g.user_id LEFT JOIN account a ON e2.id = a.entity_id WHERE (e.type = 1 AND (e2.type = 0 OR e2.type IS NULL))'); 
     221        $this->assertEqual($q->getQuery(), 'SELECT e.id AS e__id, e2.id AS e2__id FROM entity e LEFT JOIN groupuser g ON e.id = g.group_id LEFT JOIN entity e2 ON e2.id = g.user_id AND e2.type = 0 LEFT JOIN account a ON e2.id = a.entity_id WHERE (e.type = 1)'); 
    222222        try { 
    223223            $q->execute(); 
  • branches/0.11/tests/Query/LimitTestCase.php

    r4336 r4572  
    257257        $this->assertEqual($users->count(), 3); 
    258258 
    259         $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id WHERE e2.name = ? AND (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL)) ORDER BY e.id DESC LIMIT 5"); 
     259        $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 WHERE e2.name = ? AND (e.type = 0) ORDER BY e.id DESC LIMIT 5"); 
    260260        $this->manager->setAttribute(Doctrine::ATTR_QUERY_LIMIT, Doctrine::LIMIT_RECORDS); 
    261261    } 
  • branches/0.11/tests/Query/SubqueryTestCase.php

    r3884 r4572  
    4141 
    4242        $this->assertEqual($q->getQuery(), 
    43         "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id FROM entity e WHERE e.id NOT IN (SELECT e2.id AS e2__id FROM entity e2 WHERE e2.name = 'zYne' AND (e.type = 0 AND (e2.type = 0 OR e2.type IS NULL))) AND (e.type = 0)"); 
     43        "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id FROM entity e WHERE e.id NOT IN (SELECT e2.id AS e2__id FROM entity e2 WHERE e2.name = 'zYne' AND (e.type = 0)) AND (e.type = 0)"); 
    4444 
    4545        $users = $q->execute(); 
  • branches/0.11/tests/Query/WhereTestCase.php

    r3884 r4572  
    253253        $q->select('u.id')->from('User u')->where("u.Group.name ='some group'"); 
    254254 
    255         $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id WHERE e2.name = 'some group' AND (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))"); 
     255        $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 WHERE e2.name = 'some group' AND (e.type = 0)"); 
    256256    } 
    257257    public function testDeepComponentReferencingIsSupported2() 
     
    261261        $q->select('u.id')->from('User u')->addWhere("u.Group.name ='some group'"); 
    262262 
    263         $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id WHERE e2.name = 'some group' AND (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))"); 
     263        $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 WHERE e2.name = 'some group' AND (e.type = 0)"); 
    264264    } 
    265265    public function testEnumValuesWorkInPlaceholders() 
     
    323323        $q->select('u.id')->from('User u')->where('u.name IN (SELECT u2.name FROM User u2 WHERE u2.id = u.id)'); 
    324324 
    325         $this->assertEqual($q->getSql(), 'SELECT e.id AS e__id FROM entity e WHERE e.name IN (SELECT e2.name AS e2__name FROM entity e2 WHERE e2.id = e.id AND (e.type = 0 AND (e2.type = 0 OR e2.type IS NULL))) AND (e.type = 0)'); 
     325        $this->assertEqual($q->getSql(), 'SELECT e.id AS e__id FROM entity e WHERE e.name IN (SELECT e2.name AS e2__name FROM entity e2 WHERE e2.id = e.id AND (e.type = 0)) AND (e.type = 0)'); 
    326326    } 
    327327}