summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php9
-rw-r--r--lib/private/DB/QueryBuilder/FunctionBuilder/OCIFunctionBuilder.php9
-rw-r--r--lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php9
-rw-r--r--lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php9
-rw-r--r--lib/public/DB/QueryBuilder/IFunctionBuilder.php6
5 files changed, 33 insertions, 9 deletions
diff --git a/lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php b/lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php
index 37518bda3ec..03630ea14a3 100644
--- a/lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php
+++ b/lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php
@@ -50,8 +50,13 @@ class FunctionBuilder implements IFunctionBuilder {
return new QueryFunction('MD5(' . $this->helper->quoteColumnName($input) . ')');
}
- public function concat($x, $y): IQueryFunction {
- return new QueryFunction('CONCAT(' . $this->helper->quoteColumnName($x) . ', ' . $this->helper->quoteColumnName($y) . ')');
+ public function concat($x, ...$expr): IQueryFunction {
+ $args = func_get_args();
+ $list = [];
+ foreach ($args as $item) {
+ $list[] = $this->helper->quoteColumnName($item);
+ }
+ return new QueryFunction(sprintf('CONCAT(%s)', implode(', ', $list)));
}
public function groupConcat($expr, ?string $separator = ','): IQueryFunction {
diff --git a/lib/private/DB/QueryBuilder/FunctionBuilder/OCIFunctionBuilder.php b/lib/private/DB/QueryBuilder/FunctionBuilder/OCIFunctionBuilder.php
index 3871070a583..43ecf599eba 100644
--- a/lib/private/DB/QueryBuilder/FunctionBuilder/OCIFunctionBuilder.php
+++ b/lib/private/DB/QueryBuilder/FunctionBuilder/OCIFunctionBuilder.php
@@ -73,6 +73,15 @@ class OCIFunctionBuilder extends FunctionBuilder {
return parent::least($x, $y);
}
+ public function concat($x, ...$expr): IQueryFunction {
+ $args = func_get_args();
+ $list = [];
+ foreach ($args as $item) {
+ $list[] = $this->helper->quoteColumnName($item);
+ }
+ return new QueryFunction(sprintf('(%s)', implode(' || ', $list)));
+ }
+
public function groupConcat($expr, ?string $separator = ','): IQueryFunction {
$orderByClause = ' WITHIN GROUP(ORDER BY NULL)';
if (is_null($separator)) {
diff --git a/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php b/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php
index 0b22775acc8..444f6aa83a4 100644
--- a/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php
+++ b/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php
@@ -28,8 +28,13 @@ use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\DB\QueryBuilder\IQueryFunction;
class PgSqlFunctionBuilder extends FunctionBuilder {
- public function concat($x, $y): IQueryFunction {
- return new QueryFunction('(' . $this->helper->quoteColumnName($x) . ' || ' . $this->helper->quoteColumnName($y) . ')');
+ public function concat($x, ...$expr): IQueryFunction {
+ $args = func_get_args();
+ $list = [];
+ foreach ($args as $item) {
+ $list[] = $this->queryBuilder->expr()->castColumn($item, IQueryBuilder::PARAM_STR);
+ }
+ return new QueryFunction(sprintf('(%s)', implode(' || ', $list)));
}
public function groupConcat($expr, ?string $separator = ','): IQueryFunction {
diff --git a/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php b/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php
index 1067f8f0925..fe700075a82 100644
--- a/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php
+++ b/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php
@@ -27,8 +27,13 @@ use OC\DB\QueryBuilder\QueryFunction;
use OCP\DB\QueryBuilder\IQueryFunction;
class SqliteFunctionBuilder extends FunctionBuilder {
- public function concat($x, $y): IQueryFunction {
- return new QueryFunction('(' . $this->helper->quoteColumnName($x) . ' || ' . $this->helper->quoteColumnName($y) . ')');
+ public function concat($x, ...$expr): IQueryFunction {
+ $args = func_get_args();
+ $list = [];
+ foreach ($args as $item) {
+ $list[] = $this->helper->quoteColumnName($item);
+ }
+ return new QueryFunction(sprintf('(%s)', implode(' || ', $list)));
}
public function groupConcat($expr, ?string $separator = ','): IQueryFunction {
diff --git a/lib/public/DB/QueryBuilder/IFunctionBuilder.php b/lib/public/DB/QueryBuilder/IFunctionBuilder.php
index 1e8d8c89f81..04c5cbd07bd 100644
--- a/lib/public/DB/QueryBuilder/IFunctionBuilder.php
+++ b/lib/public/DB/QueryBuilder/IFunctionBuilder.php
@@ -43,13 +43,13 @@ interface IFunctionBuilder {
/**
* Combines two input strings
*
- * @param string|ILiteral|IParameter|IQueryFunction $x The first input string
- * @param string|ILiteral|IParameter|IQueryFunction $y The second input string
+ * @param string|ILiteral|IParameter|IQueryFunction $x Expressions or literal strings
+ * @param string|ILiteral|IParameter|IQueryFunction ...$exprs Expressions or literal strings
*
* @return IQueryFunction
* @since 12.0.0
*/
- public function concat($x, $y): IQueryFunction;
+ public function concat($x, ...$expr): IQueryFunction;
/**
* Returns a string which is the concatenation of all non-NULL values of X