浏览代码

#1123/#1133 The optimization on loaded columns in SQL queries was inoperant for some queries, resulting in a stopper issue if such queries were added to a union query (2.2.0 beta)

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@3700 a333f486-631f-4898-b8df-5754b55c2be0
romainq 9 年之前
父节点
当前提交
61383b5378
共有 1 个文件被更改,包括 5 次插入5 次删除
  1. 5 5
      core/dbobjectsearch.class.php

+ 5 - 5
core/dbobjectsearch.class.php

@@ -1243,7 +1243,7 @@ class DBObjectSearch extends DBSearch
 		self::DbgTrace("Main (=leaf) class, call MakeSQLObjectQuerySingleTable()");
 		if (MetaModel::HasTable($sClass))
 		{
-			$oSelectBase = $this->MakeSQLObjectQuerySingleTable($oBuild, $sClass, $aExtKeys, $aValues);
+			$oSelectBase = $this->MakeSQLObjectQuerySingleTable($oBuild, $aAttToLoad, $sClass, $aExtKeys, $aValues);
 		}
 		else
 		{
@@ -1261,7 +1261,7 @@ class DBObjectSearch extends DBSearch
 			if (!MetaModel::HasTable($sParentClass)) continue;
 
 			self::DbgTrace("Parent class: $sParentClass... let's call MakeSQLObjectQuerySingleTable()");
-			$oSelectParentTable = $this->MakeSQLObjectQuerySingleTable($oBuild, $sParentClass, $aExtKeys, $aValues);
+			$oSelectParentTable = $this->MakeSQLObjectQuerySingleTable($oBuild, $aAttToLoad, $sParentClass, $aExtKeys, $aValues);
 			if (is_null($oSelectBase))
 			{
 				$oSelectBase = $oSelectParentTable;
@@ -1313,7 +1313,7 @@ class DBObjectSearch extends DBSearch
 		foreach ($aFNJoinAlias as $sSubClass => $sSubClassAlias)
 		{
 			$oSubClassFilter = new DBObjectSearch($sSubClass, $sSubClassAlias);
-			$oSelectFN = $oSubClassFilter->MakeSQLObjectQuerySingleTable($oBuild, $sSubClass, $aExtKeys, array());
+			$oSelectFN = $oSubClassFilter->MakeSQLObjectQuerySingleTable($oBuild, $aAttToLoad, $sSubClass, $aExtKeys, array());
 			$oSelectBase->AddLeftJoin($oSelectFN, $sKeyField, MetaModel::DBGetKey($sSubClass));
 		}
 
@@ -1325,7 +1325,7 @@ class DBObjectSearch extends DBSearch
 		return $oSelectBase;
 	}
 
-	protected function MakeSQLObjectQuerySingleTable(&$oBuild, $sTableClass, $aExtKeys, $aValues)
+	protected function MakeSQLObjectQuerySingleTable(&$oBuild, $aAttToLoad, $sTableClass, $aExtKeys, $aValues)
 	{
 		// $aExtKeys is an array of sTableClass => array of (sAttCode (keys) => array of sAttCode (fields))
 //echo "MakeSQLObjectQuery($sTableClass)-liste des clefs externes($sTableClass): <pre>".print_r($aExtKeys, true)."</pre><br/>\n";
@@ -1530,7 +1530,7 @@ class DBObjectSearch extends DBSearch
 							$oBuild->m_oQBExpressions->PushJoinField(new FieldExpression('id', $sKeyClassAlias));
 			
 //echo "<p>Recursive MakeSQLObjectQuery ".__LINE__.": <pre>\n".print_r($oBuild->GetRootFilter()->GetSelectedClasses(), true)."</pre></p>\n";
-							$oSelectExtKey = $oExtFilter->MakeSQLObjectQuery($oBuild);
+							$oSelectExtKey = $oExtFilter->MakeSQLObjectQuery($oBuild, $aAttToLoad);
 			
 							$oJoinExpr = $oBuild->m_oQBExpressions->PopJoinField();
 							$sExternalKeyTable = $oJoinExpr->GetParent();