From e089bef998945678563b823feb51a61b20ef49de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81ojewski?= Date: Sat, 22 Dec 2018 10:37:12 +0100 Subject: [PATCH 1/3] Add aliases to queries issue#83 Error when same column names --- lib/Query/QueryProvider.php | 78 ++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/lib/Query/QueryProvider.php b/lib/Query/QueryProvider.php index cd027d0..d259fe7 100644 --- a/lib/Query/QueryProvider.php +++ b/lib/Query/QueryProvider.php @@ -102,65 +102,65 @@ class QueryProvider implements \ArrayAccess $this->queries = [ Query::BELONGS_TO_ADMIN => - "SELECT COUNT($gGID) > 0 AS admin " . - "FROM $group, $userGroup " . - "WHERE $ugGID = $gGID " . - "AND $ugUID = :$uidParam " . - "AND $gAdmin", + "SELECT COUNT(g.$gGID) > 0 AS admin " . + "FROM $group g, $userGroup ug " . + "WHERE ug.$ugGID = g.$gGID " . + "AND ug.$ugUID = :$uidParam " . + "AND g.$gAdmin", Query::COUNT_GROUPS => - "SELECT COUNT($ugGID) " . - "FROM $userGroup " . - "WHERE $ugGID = :$gidParam " . - "AND $ugUID " . + "SELECT COUNT(ug.$ugGID) " . + "FROM $userGroup ug " . + "WHERE ug.$ugGID = :$gidParam " . + "AND ug.$ugUID " . "LIKE :$searchParam", Query::COUNT_USERS => - "SELECT COUNT($uUID) AS count " . - "FROM $user " . - "WHERE $uUID LIKE :$searchParam", + "SELECT COUNT(u.$uUID) AS count " . + "FROM $user u " . + "WHERE u.$uUID LIKE :$searchParam", Query::FIND_GROUP => - "SELECT $groupColumns " . - "FROM $group " . - "WHERE $gGID = :$gidParam", + "SELECT g.$groupColumns " . + "FROM $group g " . + "WHERE g.$gGID = :$gidParam", Query::FIND_GROUP_USERS => - "SELECT $ugUID AS uid " . - "FROM $userGroup " . - "WHERE $ugGID = :$gidParam " . - "AND $ugUID " . + "SELECT ug.$ugUID AS uid " . + "FROM ug.$userGroup " . + "WHERE ug.$ugGID = :$gidParam " . + "AND ug.$ugUID " . "LIKE :$searchParam " . - "ORDER BY $ugUID", + "ORDER BY ug.$ugUID", Query::FIND_GROUPS => - "SELECT $groupColumns " . - "FROM $group " . - "WHERE $gGID LIKE :$searchParam " . - "ORDER BY $gGID", + "SELECT g.$groupColumns " . + "FROM g.$group " . + "WHERE g.$gGID LIKE :$searchParam " . + "ORDER BY g.$gGID", Query::FIND_USER => - "SELECT $userColumns, $uPassword AS password " . - "FROM $user " . - "WHERE $uUID = :$uidParam", + "SELECT u.$userColumns, u.$uPassword AS password " . + "FROM u.$user " . + "WHERE u.$uUID = :$uidParam", Query::FIND_USER_CASE_INSENSITIVE => - "SELECT $userColumns, $uPassword AS password " . - "FROM $user " . - "WHERE lower($uUID) = lower(:$uidParam)", + "SELECT u.$userColumns, u.$uPassword AS password " . + "FROM $user u " . + "WHERE lower(u.$uUID) = lower(:$uidParam)", Query::FIND_USER_GROUPS => - "SELECT $groupColumns " . - "FROM $group, $userGroup " . - "WHERE $ugGID = $gGID " . - "AND $ugUID = :$uidParam " . - "ORDER BY $gGID", + "SELECT g.$groupColumns " . + "FROM $group g, $userGroup ug " . + "WHERE ug.$ugGID = g.$gGID " . + "AND ug.$ugUID = :$uidParam " . + "ORDER BY g.$gGID", Query::FIND_USERS => - "SELECT $userColumns " . - "FROM $user " . - "WHERE $uUID LIKE :$searchParam " . - "ORDER BY $uUID", + "SELECT u.$userColumns " . + "FROM $user u " . + "WHERE u.$uUID LIKE :$searchParam " . + "ORDER BY u.$uUID", Query::UPDATE_DISPLAY_NAME => "UPDATE $user " . From 6f56e449a567dd31022751739e1d3664c02728f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81ojewski?= Date: Sat, 22 Dec 2018 10:48:39 +0100 Subject: [PATCH 2/3] Release v4.2.1 --- CHANGELOG.md | 5 +++++ appinfo/info.xml | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f07ac7..6937e05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## [4.2.1] - 2018-12-22 +### Fixed +- SQL error when same column names given in several tables + ## [4.2.0] - 2018-12-16 ### Added - Support for Nextcloud 15 @@ -108,6 +112,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Changed - Supported version of ownCloud, Nextcloud: ownCloud 10, Nextcloud 12 +[4.2.1]: https://github.com/nextcloud/user_sql/compare/v4.2.0...v4.2.1 [4.2.0]: https://github.com/nextcloud/user_sql/compare/v4.1.0...v4.2.0 [4.1.0]: https://github.com/nextcloud/user_sql/compare/v4.0.1...v4.1.0 [4.0.1]: https://github.com/nextcloud/user_sql/compare/v4.0.0...v4.0.1 diff --git a/appinfo/info.xml b/appinfo/info.xml index 83ded89..6652457 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -8,7 +8,7 @@ Retrieve the users and groups info. Allow the users to change their passwords. Sync the users' email addresses with the addresses stored by Nextcloud. - 4.2.0 + 4.2.1 agpl Marcin Łojewski Andreas Böhler From 1c1cd89bb2d0b62bcb2cfd84a6741ec57a1bfdee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81ojewski?= Date: Sat, 22 Dec 2018 19:01:37 +0100 Subject: [PATCH 3/3] Fix queries after tests --- lib/Query/QueryProvider.php | 40 ++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/lib/Query/QueryProvider.php b/lib/Query/QueryProvider.php index d259fe7..0a1bf76 100644 --- a/lib/Query/QueryProvider.php +++ b/lib/Query/QueryProvider.php @@ -87,18 +87,18 @@ class QueryProvider implements \ArrayAccess $uidParam = Query::UID_PARAM; $groupColumns - = "$gGID AS gid, " . - (empty($gName) ? $gGID : $gName) . " AS name, " . - (empty($gAdmin) ? "false" : $gAdmin) . " AS admin"; + = "g.$gGID AS gid, " . + (empty($gName) ? "g." . $gGID : "g." . $gName) . " AS name, " . + (empty($gAdmin) ? "false" : "g." . $gAdmin) . " AS admin"; $userColumns - = "$uUID AS uid, " . - (empty($uName) ? $uUID : $uName) . " AS name, " . - (empty($uEmail) ? "null" : $uEmail) . " AS email, " . - (empty($uQuota) ? "null" : $uQuota) . " AS quota, " . - (empty($uHome) ? "null" : $uHome) . " AS home, " . - (empty($uActive) ? "true" : $uActive) . " AS active, " . - (empty($uAvatar) ? "false" : $uAvatar) . " AS avatar, " . - (empty($uSalt) ? "null" : $uSalt) . " AS salt"; + = "u.$uUID AS uid, " . + (empty($uName) ? "u." . $uUID : "u." . $uName) . " AS name, " . + (empty($uEmail) ? "null" : "u." . $uEmail) . " AS email, " . + (empty($uQuota) ? "null" : "u." . $uQuota) . " AS quota, " . + (empty($uHome) ? "null" : "u." . $uHome) . " AS home, " . + (empty($uActive) ? "true" : "u." . $uActive) . " AS active, " . + (empty($uAvatar) ? "false" : "u." . $uAvatar) . " AS avatar, " . + (empty($uSalt) ? "null" : "u." . $uSalt) . " AS salt"; $this->queries = [ Query::BELONGS_TO_ADMIN => @@ -121,43 +121,43 @@ class QueryProvider implements \ArrayAccess "WHERE u.$uUID LIKE :$searchParam", Query::FIND_GROUP => - "SELECT g.$groupColumns " . + "SELECT $groupColumns " . "FROM $group g " . "WHERE g.$gGID = :$gidParam", Query::FIND_GROUP_USERS => "SELECT ug.$ugUID AS uid " . - "FROM ug.$userGroup " . + "FROM $userGroup ug " . "WHERE ug.$ugGID = :$gidParam " . "AND ug.$ugUID " . "LIKE :$searchParam " . "ORDER BY ug.$ugUID", Query::FIND_GROUPS => - "SELECT g.$groupColumns " . - "FROM g.$group " . + "SELECT $groupColumns " . + "FROM $group g " . "WHERE g.$gGID LIKE :$searchParam " . "ORDER BY g.$gGID", Query::FIND_USER => - "SELECT u.$userColumns, u.$uPassword AS password " . - "FROM u.$user " . + "SELECT $userColumns, u.$uPassword AS password " . + "FROM $user u " . "WHERE u.$uUID = :$uidParam", Query::FIND_USER_CASE_INSENSITIVE => - "SELECT u.$userColumns, u.$uPassword AS password " . + "SELECT $userColumns, u.$uPassword AS password " . "FROM $user u " . "WHERE lower(u.$uUID) = lower(:$uidParam)", Query::FIND_USER_GROUPS => - "SELECT g.$groupColumns " . + "SELECT $groupColumns " . "FROM $group g, $userGroup ug " . "WHERE ug.$ugGID = g.$gGID " . "AND ug.$ugUID = :$uidParam " . "ORDER BY g.$gGID", Query::FIND_USERS => - "SELECT u.$userColumns " . + "SELECT $userColumns " . "FROM $user u " . "WHERE u.$uUID LIKE :$searchParam " . "ORDER BY u.$uUID",