From d9e69e14f3aaa30e1b487a51eb1e1cd594173293 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 1 Jul 2024 16:49:42 +0200 Subject: [PATCH] fix(db)!: Table alias for DELETE and UPDATE no longer supported Signed-off-by: Joas Schilling --- lib/private/DB/QueryBuilder/QueryBuilder.php | 12 ++++++++++-- lib/public/DB/QueryBuilder/IQueryBuilder.php | 13 ++++++++----- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/lib/private/DB/QueryBuilder/QueryBuilder.php b/lib/private/DB/QueryBuilder/QueryBuilder.php index 8410be7c9d1..66ed88f03c8 100644 --- a/lib/private/DB/QueryBuilder/QueryBuilder.php +++ b/lib/private/DB/QueryBuilder/QueryBuilder.php @@ -597,12 +597,16 @@ class QueryBuilder implements IQueryBuilder { * @param string $alias The table alias used in the constructed query. * * @return $this This QueryBuilder instance. + * @since 30.0.0 Alias is no longer supported */ public function delete($delete = null, $alias = null) { + if ($alias !== null) { + $this->logger->debug('DELETE queries with alias are no longer supported and the provided alias is ignored', ['exception' => new \InvalidArgumentException('Table alias provided for DELETE query')]); + } + $this->type = self::DELETE; $this->queryBuilder->delete( $this->getTableName($delete), - $alias ); return $this; @@ -623,12 +627,16 @@ class QueryBuilder implements IQueryBuilder { * @param string $alias The table alias used in the constructed query. * * @return $this This QueryBuilder instance. + * @since 30.0.0 Alias is no longer supported */ public function update($update = null, $alias = null) { + if ($alias !== null) { + $this->logger->debug('UPDATE queries with alias are no longer supported and the provided alias is ignored', ['exception' => new \InvalidArgumentException('Table alias provided for UPDATE query')]); + } + $this->type = self::UPDATE; $this->queryBuilder->update( $this->getTableName($update), - $alias ); return $this; diff --git a/lib/public/DB/QueryBuilder/IQueryBuilder.php b/lib/public/DB/QueryBuilder/IQueryBuilder.php index 271771b5aa2..7d9d56a1f90 100644 --- a/lib/public/DB/QueryBuilder/IQueryBuilder.php +++ b/lib/public/DB/QueryBuilder/IQueryBuilder.php @@ -391,8 +391,8 @@ interface IQueryBuilder { * * * $qb = $conn->getQueryBuilder() - * ->delete('users', 'u') - * ->where('u.id = :user_id'); + * ->delete('users') + * ->where('id = :user_id'); * ->setParameter(':user_id', 1); * * @@ -401,6 +401,7 @@ interface IQueryBuilder { * * @return $this This QueryBuilder instance. * @since 8.2.0 + * @since 30.0.0 Alias is no longer supported * * @psalm-taint-sink sql $delete */ @@ -412,9 +413,10 @@ interface IQueryBuilder { * * * $qb = $conn->getQueryBuilder() - * ->update('users', 'u') - * ->set('u.password', md5('password')) - * ->where('u.id = ?'); + * ->update('users') + * ->set('email', ':email') + * ->where('id = :user_id'); + * ->setParameter(':user_id', 1); * * * @param string $update The table whose rows are subject to the update. @@ -422,6 +424,7 @@ interface IQueryBuilder { * * @return $this This QueryBuilder instance. * @since 8.2.0 + * @since 30.0.0 Alias is no longer supported * * @psalm-taint-sink sql $update */