Browse Source

Prevent query error when use subquery

Signed-off-by: Vitor Mattos <vitor@php.rio>
pull/30379/head
Vitor Mattos 4 years ago
parent
commit
afe5b6dd8a
No known key found for this signature in database GPG Key ID: B7AB4B76A7CA7318
  1. 4
      build/psalm-baseline.xml
  2. 4
      lib/private/DB/QueryBuilder/QueryBuilder.php
  3. 4
      lib/public/DB/QueryBuilder/IQueryBuilder.php
  4. 9
      tests/lib/DB/QueryBuilder/QueryBuilderTest.php

4
build/psalm-baseline.xml

@ -4387,10 +4387,6 @@
</TypeDoesNotContainType>
</file>
<file src="lib/private/Repair/RemoveLinkShares.php">
<ImplicitToStringCast occurrences="2">
<code>$query-&gt;createFunction('(' . $subQuery-&gt;getSQL() . ')')</code>
<code>$subQuery-&gt;createFunction('(' . $subSubQuery-&gt;getSQL() . ')')</code>
</ImplicitToStringCast>
<InvalidPropertyAssignmentValue occurrences="1">
<code>$this-&gt;userToNotify</code>
</InvalidPropertyAssignmentValue>

4
lib/private/DB/QueryBuilder/QueryBuilder.php

@ -694,7 +694,7 @@ class QueryBuilder implements IQueryBuilder {
* ->from('users', 'u')
* </code>
*
* @param string $from The table.
* @param string|IQueryFunction $from The table.
* @param string|null $alias The alias of the table.
*
* @return $this This QueryBuilder instance.
@ -1303,7 +1303,7 @@ class QueryBuilder implements IQueryBuilder {
/**
* Returns the table name quoted and with database prefix as needed by the implementation
*
* @param string $table
* @param string|IQueryFunction $table
* @return string
*/
public function getTableName($table) {

4
lib/public/DB/QueryBuilder/IQueryBuilder.php

@ -470,7 +470,7 @@ interface IQueryBuilder {
* ->from('users', 'u')
* </code>
*
* @param string $from The table.
* @param string|IQueryFunction $from The table.
* @param string|null $alias The alias of the table.
*
* @return $this This QueryBuilder instance.
@ -994,7 +994,7 @@ interface IQueryBuilder {
/**
* Returns the table name quoted and with database prefix as needed by the implementation
*
* @param string $table
* @param string|IQueryFunction $table
* @return string
* @since 9.0.0
*/

9
tests/lib/DB/QueryBuilder/QueryBuilderTest.php

@ -1204,6 +1204,9 @@ class QueryBuilderTest extends \Test\TestCase {
}
public function dataGetTableName() {
$config = $this->createMock(SystemConfig::class);
$logger = $this->createMock(ILogger::class);
$qb = new QueryBuilder(\OC::$server->getDatabaseConnection(), $config, $logger);
return [
['*PREFIX*table', null, '`*PREFIX*table`'],
['*PREFIX*table', true, '`*PREFIX*table`'],
@ -1212,13 +1215,17 @@ class QueryBuilderTest extends \Test\TestCase {
['table', null, '`*PREFIX*table`'],
['table', true, '`*PREFIX*table`'],
['table', false, '`table`'],
[$qb->createFunction('(' . $qb->select('*')->from('table')->getSQL() . ')'), null, '(SELECT * FROM `*PREFIX*table`)'],
[$qb->createFunction('(' . $qb->select('*')->from('table')->getSQL() . ')'), true, '(SELECT * FROM `*PREFIX*table`)'],
[$qb->createFunction('(' . $qb->select('*')->from('table')->getSQL() . ')'), false, '(SELECT * FROM `*PREFIX*table`)'],
];
}
/**
* @dataProvider dataGetTableName
*
* @param string $tableName
* @param string|IQueryFunction $tableName
* @param bool $automatic
* @param string $expected
*/

Loading…
Cancel
Save