diff --git a/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php index 59d619b533f84..465e03cada841 100644 --- a/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php +++ b/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php @@ -427,11 +427,11 @@ public function literal($input, $type = null): ILiteral { * * @param string $column * @param mixed $type One of IQueryBuilder::PARAM_* - * @return string + * @return IQueryFunction */ - public function castColumn(string $column, $type): string { - return (string)(new QueryFunction( + public function castColumn(string $column, $type): IQueryFunction { + return new QueryFunction( $this->helper->quoteColumnName($column) - )); + ); } } diff --git a/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php index 6a700dffb1228..5d315de37b467 100644 --- a/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php +++ b/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php @@ -163,16 +163,16 @@ public function nonEmptyString(string $x): string { * * @param string $column * @param mixed $type One of IQueryBuilder::PARAM_* - * @return string + * @return IQueryFunction */ - public function castColumn(string $column, $type): string { + public function castColumn(string $column, $type): IQueryFunction { if ($type === IQueryBuilder::PARAM_STR) { $column = $this->helper->quoteColumnName($column); - return (string)(new QueryFunction('to_char(' . $column . ')')); + return new QueryFunction('to_char(' . $column . ')'); } if ($type === IQueryBuilder::PARAM_INT) { $column = $this->helper->quoteColumnName($column); - return (string)(new QueryFunction('to_number(to_char(' . $column . '))')); + return new QueryFunction('to_number(to_char(' . $column . '))'); } return parent::castColumn($column, $type); diff --git a/lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php index b03cbf7ef0f7a..3e8cdd698b488 100644 --- a/lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php +++ b/lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php @@ -26,6 +26,7 @@ use OC\DB\QueryBuilder\QueryFunction; use OCP\DB\QueryBuilder\IQueryBuilder; +use OCP\DB\QueryBuilder\IQueryFunction; class PgSqlExpressionBuilder extends ExpressionBuilder { @@ -34,14 +35,14 @@ class PgSqlExpressionBuilder extends ExpressionBuilder { * * @param string $column * @param mixed $type One of IQueryBuilder::PARAM_* - * @return string + * @return IQueryFunction */ - public function castColumn($column, $type): string { + public function castColumn($column, $type): IQueryFunction { switch ($type) { case IQueryBuilder::PARAM_INT: - return (string)(new QueryFunction('CAST(' . $this->helper->quoteColumnName($column) . ' AS INT)')); + return new QueryFunction('CAST(' . $this->helper->quoteColumnName($column) . ' AS INT)'); case IQueryBuilder::PARAM_STR: - return (string)(new QueryFunction('CAST(' . $this->helper->quoteColumnName($column) . ' AS TEXT)')); + return new QueryFunction('CAST(' . $this->helper->quoteColumnName($column) . ' AS TEXT)'); default: return parent::castColumn($column, $type); } diff --git a/lib/public/DB/QueryBuilder/IExpressionBuilder.php b/lib/public/DB/QueryBuilder/IExpressionBuilder.php index 29439aac7d300..23e98f56a541e 100644 --- a/lib/public/DB/QueryBuilder/IExpressionBuilder.php +++ b/lib/public/DB/QueryBuilder/IExpressionBuilder.php @@ -434,11 +434,11 @@ public function literal($input, $type = null): ILiteral; * * @param string $column * @param mixed $type One of IQueryBuilder::PARAM_* - * @return string + * @return IQueryFunction * @since 9.0.0 * * @psalm-taint-sink sql $column * @psalm-taint-sink sql $type */ - public function castColumn(string $column, $type): string; + public function castColumn(string $column, $type): IQueryFunction; }