Browse Source
Add a method to compare empty strings with an expression
Signed-off-by: Joas Schilling <coding@schilljs.com>
pull/5816/head
Joas Schilling
8 years ago
No known key found for this signature in database
GPG Key ID: E166FD8976B3BAC8
4 changed files with
64 additions and
1 deletions
-
lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php
-
lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php
-
lib/private/Repair/NC13/RepairInvalidPaths.php
-
lib/public/DB/QueryBuilder/IExpressionBuilder.php
|
|
|
@ -31,6 +31,7 @@ use OC\DB\QueryBuilder\QueryFunction; |
|
|
|
use OC\DB\QueryBuilder\QuoteHelper; |
|
|
|
use OCP\DB\QueryBuilder\IExpressionBuilder; |
|
|
|
use OCP\DB\QueryBuilder\ILiteral; |
|
|
|
use OCP\DB\QueryBuilder\IQueryBuilder; |
|
|
|
use OCP\DB\QueryBuilder\IQueryFunction; |
|
|
|
use OCP\IDBConnection; |
|
|
|
|
|
|
|
@ -350,6 +351,28 @@ class ExpressionBuilder implements IExpressionBuilder { |
|
|
|
return $this->expressionBuilder->notIn($x, $y); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Creates a $x = '' statement, because Oracle needs a different check |
|
|
|
* |
|
|
|
* @param string $x The field in string format to be inspected by the comparison. |
|
|
|
* @return string |
|
|
|
* @since 13.0.0 |
|
|
|
*/ |
|
|
|
public function emptyString($x) { |
|
|
|
return $this->eq($x, $this->literal('', IQueryBuilder::PARAM_STR)); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Creates a `$x <> ''` statement, because Oracle needs a different check |
|
|
|
* |
|
|
|
* @param string $x The field in string format to be inspected by the comparison. |
|
|
|
* @return string |
|
|
|
* @since 13.0.0 |
|
|
|
*/ |
|
|
|
public function nonEmptyString($x) { |
|
|
|
return $this->neq($x, $this->literal('', IQueryBuilder::PARAM_STR)); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Binary AND Operator copies a bit to the result if it exists in both operands. |
|
|
|
* |
|
|
|
|
|
|
|
@ -137,6 +137,28 @@ class OCIExpressionBuilder extends ExpressionBuilder { |
|
|
|
return $this->expressionBuilder->notIn($x, $y); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Creates a $x = '' statement, because Oracle needs a different check |
|
|
|
* |
|
|
|
* @param string $x The field in string format to be inspected by the comparison. |
|
|
|
* @return string |
|
|
|
* @since 13.0.0 |
|
|
|
*/ |
|
|
|
public function emptyString($x) { |
|
|
|
return $this->isNull($x); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Creates a `$x <> ''` statement, because Oracle needs a different check |
|
|
|
* |
|
|
|
* @param string $x The field in string format to be inspected by the comparison. |
|
|
|
* @return string |
|
|
|
* @since 13.0.0 |
|
|
|
*/ |
|
|
|
public function nonEmptyString($x) { |
|
|
|
return $this->isNotNull($x); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Returns a IQueryFunction that casts the column to the given type |
|
|
|
* |
|
|
|
|
|
|
|
@ -70,7 +70,7 @@ class RepairInvalidPaths implements IRepairStep { |
|
|
|
->from('filecache', 'f') |
|
|
|
->innerJoin('f', 'filecache', 'p', $builder->expr()->andX( |
|
|
|
$builder->expr()->eq('f.parent', 'p.fileid'), |
|
|
|
$builder->expr()->isNotNull('p.name') |
|
|
|
$builder->expr()->nonEmptyString('p.name') |
|
|
|
)) |
|
|
|
->where($builder->expr()->neq('f.path', $computedPath)) |
|
|
|
->setMaxResults(self::MAX_ROWS); |
|
|
|
|
|
|
|
@ -305,6 +305,24 @@ interface IExpressionBuilder { |
|
|
|
*/ |
|
|
|
public function notIn($x, $y, $type = null); |
|
|
|
|
|
|
|
/** |
|
|
|
* Creates a $x = '' statement, because Oracle needs a different check |
|
|
|
* |
|
|
|
* @param string $x The field in string format to be inspected by the comparison. |
|
|
|
* @return string |
|
|
|
* @since 13.0.0 |
|
|
|
*/ |
|
|
|
public function emptyString($x); |
|
|
|
|
|
|
|
/** |
|
|
|
* Creates a `$x <> ''` statement, because Oracle needs a different check |
|
|
|
* |
|
|
|
* @param string $x The field in string format to be inspected by the comparison. |
|
|
|
* @return string |
|
|
|
* @since 13.0.0 |
|
|
|
*/ |
|
|
|
public function nonEmptyString($x); |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* Creates a bitwise AND comparison |
|
|
|
|