From 5eef54c63651d41af0b3014f66ea5839f638f909 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Thu, 20 Jul 2017 20:14:31 +0200 Subject: [PATCH] Quote aliases as well Signed-off-by: Joas Schilling --- lib/private/DB/QueryBuilder/QueryBuilder.php | 32 ++++++++++++++------ lib/private/DB/QueryBuilder/QuoteHelper.php | 2 +- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/lib/private/DB/QueryBuilder/QueryBuilder.php b/lib/private/DB/QueryBuilder/QueryBuilder.php index eac13b452ac..99109c6a51b 100644 --- a/lib/private/DB/QueryBuilder/QueryBuilder.php +++ b/lib/private/DB/QueryBuilder/QueryBuilder.php @@ -560,7 +560,7 @@ class QueryBuilder implements IQueryBuilder { public function from($from, $alias = null) { $this->queryBuilder->from( $this->getTableName($from), - $alias + $this->quoteAlias($alias) ); return $this; @@ -585,9 +585,9 @@ class QueryBuilder implements IQueryBuilder { */ public function join($fromAlias, $join, $alias, $condition = null) { $this->queryBuilder->join( - $fromAlias, + $this->quoteAlias($fromAlias), $this->getTableName($join), - $alias, + $this->quoteAlias($alias), $condition ); @@ -613,9 +613,9 @@ class QueryBuilder implements IQueryBuilder { */ public function innerJoin($fromAlias, $join, $alias, $condition = null) { $this->queryBuilder->innerJoin( - $fromAlias, + $this->quoteAlias($fromAlias), $this->getTableName($join), - $alias, + $this->quoteAlias($alias), $condition ); @@ -641,9 +641,9 @@ class QueryBuilder implements IQueryBuilder { */ public function leftJoin($fromAlias, $join, $alias, $condition = null) { $this->queryBuilder->leftJoin( - $fromAlias, + $this->quoteAlias($fromAlias), $this->getTableName($join), - $alias, + $this->quoteAlias($alias), $condition ); @@ -669,9 +669,9 @@ class QueryBuilder implements IQueryBuilder { */ public function rightJoin($fromAlias, $join, $alias, $condition = null) { $this->queryBuilder->rightJoin( - $fromAlias, + $this->quoteAlias($fromAlias), $this->getTableName($join), - $alias, + $this->quoteAlias($alias), $condition ); @@ -1193,4 +1193,18 @@ class QueryBuilder implements IQueryBuilder { return $this->helper->quoteColumnName($tableAlias . $column); } + + /** + * Returns the column name quoted and with table alias prefix as needed by the implementation + * + * @param string $alias + * @return string + */ + public function quoteAlias($alias) { + if ($alias === '' || $alias === null) { + return $alias; + } + + return $this->helper->quoteColumnName($alias); + } } diff --git a/lib/private/DB/QueryBuilder/QuoteHelper.php b/lib/private/DB/QueryBuilder/QuoteHelper.php index 705c3a89712..8821863ed07 100644 --- a/lib/private/DB/QueryBuilder/QuoteHelper.php +++ b/lib/private/DB/QueryBuilder/QuoteHelper.php @@ -70,7 +70,7 @@ class QuoteHelper { list($alias, $columnName) = explode('.', $string, 2); if ($columnName === '*') { - return $string; + return '`' . $alias . '`.*'; } return '`' . $alias . '`.`' . $columnName . '`'; -- 2.39.5