public function testSubgroupHandoff()
 {
     $dq = new DataQuery('DataQueryTest_A');
     $subDq = $dq->disjunctiveGroup();
     $orgDq = clone $dq;
     $subDq->sort('"DataQueryTest_A"."Name"');
     $orgDq->sort('"DataQueryTest_A"."Name"');
     $this->assertEquals($dq->sql(), $orgDq->sql());
     $subDq->limit(5, 7);
     $orgDq->limit(5, 7);
     $this->assertEquals($dq->sql(), $orgDq->sql());
 }
 /**
  * @param DataQuery $query
  *
  * @return $this|DataQuery
  */
 public function apply(DataQuery $query)
 {
     $orGroup = $query->disjunctiveGroup();
     $orGroup = parent::apply($orGroup);
     if (count($this->subfilters) > 0) {
         foreach ($this->subfilters as $f) {
             $orGroup = $f->apply($orGroup);
         }
     }
     // The original query will have been affected by the things added to $orGroup above
     // but returning this instead of that will cause new filters to be added as AND
     return $query;
 }