From: Eric Bollengier Date: Thu, 5 Aug 2021 09:06:19 +0000 (+0200) Subject: Fix SQL query generated with ACLs X-Git-Tag: Release-11.3.2~405 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c33cac5e8886e982897c4ad313a42d4d50427973;p=thirdparty%2Fbacula.git Fix SQL query generated with ACLs Issue reported by the console-acl-test 05-Aug 10:59 localhost-dir JobId 0: bdb.h:141 SELECT JobId,Media.VolumeName,FirstIndex,LastIndex FROM JobMedia JOIN Media USING (MediaId) JOIN Job USING (JobId) JOIN Client USING (ClientId) JOIN Pool USING (PoolId) LEFT JOIN FileSet USING ( FileSetId) WHERE (Client.Name IN ('localhost-fd')) ORDER BY JobMediaId ASC 05-Aug 10:59 localhost-dir JobId 0: Fatal error: bdb.h:141 bdb.h:141 query SELECT JobMediaId,JobId,Media.MediaId,Media.VolumeName,FirstIndex,LastIndex,StartFile,JobMedia.EndFile,StartBlock,JobMedia.EndBlock FROM JobMedia JOIN Media USING (MediaId) JOIN Job USING (JobId) JOIN Client USING (ClientId) JOIN Pool USING (PoolId) LEFT JOIN FileSet USING (FileSetId) WHERE (Client.Name IN ('localhost-fd')) ORDER BY JobMediaId ASC failed: ERROR: common column name "poolid" appears more than once in left table The Pool restriction was introduced recently and is not mandatory. --- diff --git a/bacula/src/cats/sql_list.c b/bacula/src/cats/sql_list.c index bc180fd45..d0ebc6dc2 100644 --- a/bacula/src/cats/sql_list.c +++ b/bacula/src/cats/sql_list.c @@ -399,12 +399,10 @@ void BDB::bdb_list_jobmedia_records(JCR *jcr, uint32_t JobId, char *volume, /* Get some extra SQL parameters if needed */ const char *where = get_acls(DB_ACL_BIT(DB_ACL_JOB) | DB_ACL_BIT(DB_ACL_FILESET) | - DB_ACL_BIT(DB_ACL_POOL) | DB_ACL_BIT(DB_ACL_CLIENT), (JobId == 0 || volume != NULL)); const char *join = *where ? get_acl_join_filter(DB_ACL_BIT(DB_ACL_JOB) | DB_ACL_BIT(DB_ACL_FILESET) | - DB_ACL_BIT(DB_ACL_POOL) | DB_ACL_BIT(DB_ACL_CLIENT)) : ""; if (JobId) {