diff options
author | ctrlaltca@gmail.com <> | 2012-02-14 08:13:27 +0000 |
---|---|---|
committer | ctrlaltca@gmail.com <> | 2012-02-14 08:13:27 +0000 |
commit | 1eaa6ca1775d335e2307d958c7f0ad27f7cd6807 (patch) | |
tree | 7a5727afab407a03047ae2435da03beadab7d941 | |
parent | 978dc9648c959b77365fed2d954e1bab54aa2e32 (diff) |
further SqlMap optimizations; refs #337
3 files changed, 59 insertions, 6 deletions
diff --git a/framework/Data/SqlMap/Configuration/TSqlMapStatement.php b/framework/Data/SqlMap/Configuration/TSqlMapStatement.php index 3a62cbed..880e1057 100644 --- a/framework/Data/SqlMap/Configuration/TSqlMapStatement.php +++ b/framework/Data/SqlMap/Configuration/TSqlMapStatement.php @@ -295,7 +295,22 @@ class TSqlMapStatement extends TComponent public function __sleep()
{
- return array_diff(parent::__sleep(),array("\0TSqlMapStatement\0_resultMap"));
+ $cn = __CLASS__;
+ $exprops = array("\0$cn\0_resultMap");
+ if (!$this->_parameterMapName) $exprops[] = "\0$cn\0_parameterMapName";
+ if (!$this->_parameterMap) $exprops[] = "\0$cn\0_parameterMap";
+ if (!$this->_parameterClassName) $exprops[] = "\0$cn\0_parameterClassName";
+ if (!$this->_resultMapName) $exprops[] = "\0$cn\0_resultMapName";
+ if (!$this->_resultMap) $exprops[] = "\0$cn\0_resultMap";
+ if (!$this->_resultClassName) $exprops[] = "\0$cn\0_resultClassName";
+ if (!$this->_cacheModelName) $exprops[] = "\0$cn\0_cacheModelName";
+ if (!$this->_SQL) $exprops[] = "\0$cn\0_SQL";
+ if (!$this->_listClass) $exprops[] = "\0$cn\0_listClass";
+ if (!$this->_typeHandler) $exprops[] = "\0$cn\0_typeHandler";
+ if (!$this->_extendStatement) $exprops[] = "\0$cn\0_extendStatement";
+ if (!$this->_cache) $exprops[] = "\0$cn\0_cache";
+
+ return array_diff(parent::__sleep(),$exprops);
}
}
diff --git a/framework/Data/SqlMap/Statements/TMappedStatement.php b/framework/Data/SqlMap/Statements/TMappedStatement.php index f58a6b39..982a8ce9 100644 --- a/framework/Data/SqlMap/Statements/TMappedStatement.php +++ b/framework/Data/SqlMap/Statements/TMappedStatement.php @@ -41,7 +41,7 @@ class TMappedStatement extends TComponent implements IMappedStatement /**
* @var TPostSelectBinding[] post select statement queue.
*/
- private $_selectQueque=array();
+ private $_selectQueue=array();
/**
* @var boolean true when data is mapped to a particular row.
@@ -506,9 +506,9 @@ class TMappedStatement extends TComponent implements IMappedStatement */
protected function executePostSelect($connection)
{
- while(count($this->_selectQueque))
+ while(count($this->_selectQueue))
{
- $postSelect = array_shift($this->_selectQueque);
+ $postSelect = array_shift($this->_selectQueue);
$method = $postSelect->getMethod();
$statement = $postSelect->getStatement();
$property = $postSelect->getResultProperty()->getProperty();
@@ -869,7 +869,7 @@ class TMappedStatement extends TComponent implements IMappedStatement $postSelect->setMethod(self::QUERY_FOR_OBJECT);
if(!$property->getLazyLoad())
- $this->_selectQueque[] = $postSelect;
+ $this->_selectQueue[] = $postSelect;
}
/**
@@ -918,6 +918,21 @@ class TMappedStatement extends TComponent implements IMappedStatement $this->_IsRowDataFound = $dataFound;
return $dataFound;
}
+
+ public function __wakeup()
+ {
+ parent::__wakeup();
+ if (is_null($this->_selectQueue)) $this->_selectQueue = array();
+ }
+
+ public function __sleep()
+ {
+ $exprops = array(); $cn = __CLASS__;
+ if (!count($this->_selectQueue)) $exprops[] = "\0$cn\0_selectQueue";
+ if (is_null($this->_groupBy)) $exprops[] = "\0$cn\0_groupBy";
+ if (!$this->_IsRowDataFound) $exprops[] = "\0$cn\0_IsRowDataFound";
+ return array_diff(parent::__sleep(),$exprops);
+ }
}
/**
@@ -964,7 +979,7 @@ class TPostSelectBinding * @package System.Data.SqlMap.Statements
* @since 3.1
*/
-class TSqlMapObjectCollectionTree
+class TSqlMapObjectCollectionTree extends TComponent
{
/**
* @var array object graph as tree
@@ -1133,6 +1148,15 @@ class TSqlMapObjectCollectionTree {
return $this->_list;
}
+
+ public function __sleep()
+ {
+ $exprops = array(); $cn = __CLASS__;
+ if (!count($this->_tree)) $exprops[] = "\0$cn\0_tree";
+ if (!count($this->_entries)) $exprops[] = "\0$cn\0_entries";
+ if (!count($this->_list)) $exprops[] = "\0$cn\0_list";
+ return array_diff(parent::__sleep(),$exprops);
+ }
}
/**
diff --git a/framework/Data/SqlMap/Statements/TPreparedStatement.php b/framework/Data/SqlMap/Statements/TPreparedStatement.php index 372c9e88..4bd19c4e 100644 --- a/framework/Data/SqlMap/Statements/TPreparedStatement.php +++ b/framework/Data/SqlMap/Statements/TPreparedStatement.php @@ -39,5 +39,19 @@ class TPreparedStatement extends TComponent public function getParameterValues(){ return $this->_parameterValues; }
public function setParameterValues($value){ $this->_parameterValues = $value; }
+ public function __wakeup()
+ {
+ parent::__wakeup();
+ if (!$this->_parameterNames) $this->_parameterNames = new TList;
+ if (!$this->_parameterValues) $this->_parameterValues = new TMap;
+ }
+
+ public function __sleep()
+ {
+ $exprops = array(); $cn = __CLASS__;
+ if (!$this->_parameterNames->getCount()) $exprops[] = "\0$cn\0_parameterNames";
+ if (!$this->_parameterValues->getCount()) $exprops[] = "\0$cn\0_parameterValues";
+ return array_diff(parent::__sleep(),$exprops);
+ }
}
|