mirror of
https://gitee.com/hyperf/hyperf.git
synced 2024-11-29 18:27:44 +08:00
Fixed memory leak for join queries in hyperf/database
. (#3222)
* Fix join clause memory leak * Update CHANGELOG-2.0.md Co-authored-by: 李铭昕 <715557344@qq.com>
This commit is contained in:
parent
0acc0f1834
commit
b8eb394d95
@ -5,6 +5,7 @@
|
|||||||
- [#3047](https://github.com/hyperf/hyperf/pull/3047) Fixed bug that renew sid in all namespaces failed.
|
- [#3047](https://github.com/hyperf/hyperf/pull/3047) Fixed bug that renew sid in all namespaces failed.
|
||||||
- [#3087](https://github.com/hyperf/hyperf/pull/3087) Fixed memory leak when using pipeline sometimes.
|
- [#3087](https://github.com/hyperf/hyperf/pull/3087) Fixed memory leak when using pipeline sometimes.
|
||||||
- [#3179](https://github.com/hyperf/hyperf/pull/3179) Fixed json-rpc client failed to receive data when the target server restart.
|
- [#3179](https://github.com/hyperf/hyperf/pull/3179) Fixed json-rpc client failed to receive data when the target server restart.
|
||||||
|
- [#3222](https://github.com/hyperf/hyperf/pull/3222) Fixed memory leak for join queries in `hyperf/database`.
|
||||||
|
|
||||||
# v2.0.25 - 2020-12-28
|
# v2.0.25 - 2020-12-28
|
||||||
|
|
||||||
|
@ -30,16 +30,36 @@ class JoinClause extends Builder
|
|||||||
public $table;
|
public $table;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The parent query builder instance.
|
* The connection of the parent query builder.
|
||||||
*
|
*
|
||||||
* @var \Hyperf\Database\Query\Builder
|
* @var \Hyperf\Database\ConnectionInterface
|
||||||
*/
|
*/
|
||||||
private $parentQuery;
|
protected $parentConnection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The grammar of the parent query builder.
|
||||||
|
*
|
||||||
|
* @var \Hyperf\Database\Query\Grammars\Grammar
|
||||||
|
*/
|
||||||
|
protected $parentGrammar;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The processor of the parent query builder.
|
||||||
|
*
|
||||||
|
* @var \Hyperf\Database\Query\Processors\Processor
|
||||||
|
*/
|
||||||
|
protected $parentProcessor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The class name of the parent query builder.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $parentClass;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new join clause instance.
|
* Create a new join clause instance.
|
||||||
*
|
*
|
||||||
* @param \Hyperf\Database\Query\Builder $parentQuery
|
|
||||||
* @param string $type
|
* @param string $type
|
||||||
* @param string $table
|
* @param string $table
|
||||||
*/
|
*/
|
||||||
@ -47,12 +67,15 @@ class JoinClause extends Builder
|
|||||||
{
|
{
|
||||||
$this->type = $type;
|
$this->type = $type;
|
||||||
$this->table = $table;
|
$this->table = $table;
|
||||||
$this->parentQuery = $parentQuery;
|
$this->parentClass = get_class($parentQuery);
|
||||||
|
$this->parentGrammar = $parentQuery->getGrammar();
|
||||||
|
$this->parentProcessor = $parentQuery->getProcessor();
|
||||||
|
$this->parentConnection = $parentQuery->getConnection();
|
||||||
|
|
||||||
parent::__construct(
|
parent::__construct(
|
||||||
$parentQuery->getConnection(),
|
$this->parentConnection,
|
||||||
$parentQuery->getGrammar(),
|
$this->parentGrammar,
|
||||||
$parentQuery->getProcessor()
|
$this->parentProcessor
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,7 +93,7 @@ class JoinClause extends Builder
|
|||||||
*
|
*
|
||||||
* @param \Closure|string $first
|
* @param \Closure|string $first
|
||||||
* @param null|string $operator
|
* @param null|string $operator
|
||||||
* @param null|string $second
|
* @param null|\Hyperf\Database\Query\Expression|string $second
|
||||||
* @param string $boolean
|
* @param string $boolean
|
||||||
* @throws \InvalidArgumentException
|
* @throws \InvalidArgumentException
|
||||||
* @return $this
|
* @return $this
|
||||||
@ -104,7 +127,7 @@ class JoinClause extends Builder
|
|||||||
*/
|
*/
|
||||||
public function newQuery()
|
public function newQuery()
|
||||||
{
|
{
|
||||||
return new static($this->parentQuery, $this->type, $this->table);
|
return new static($this->newParentQuery(), $this->type, $this->table);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -114,6 +137,18 @@ class JoinClause extends Builder
|
|||||||
*/
|
*/
|
||||||
protected function forSubQuery()
|
protected function forSubQuery()
|
||||||
{
|
{
|
||||||
return $this->parentQuery->newQuery();
|
return $this->newParentQuery()->newQuery();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
/**
|
||||||
|
* Create a new parent query instance.
|
||||||
|
*
|
||||||
|
* @return \Hyperf\Database\Query\Builder
|
||||||
|
*/
|
||||||
|
protected function newParentQuery()
|
||||||
|
{
|
||||||
|
$class = $this->parentClass;
|
||||||
|
|
||||||
|
return new $class($this->parentConnection, $this->parentGrammar, $this->parentProcessor);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user