From baaa23637cf3f37944fdd16cd5792be2e3025285 Mon Sep 17 00:00:00 2001 From: Marco van Wieringen Date: Thu, 1 Sep 2016 18:59:28 +0200 Subject: [PATCH] cats: Use JOIN USING() instead of JOIN ON() Try using as much as possible the JOIN USING() SQL syntax and only the JOIN ON() SQL syntax when we JOIN tables not on an unique fieldname or when the query becomes unambiguous. --- src/cats/bvfs.c | 2 +- src/cats/sql_cmds.c | 80 ++++++++++++++++++++++----------------------- src/cats/sql_get.c | 4 +-- src/cats/sql_list.c | 4 +-- src/dird/dbcheck.c | 14 ++++---- src/dird/ua_prune.c | 2 +- 6 files changed, 53 insertions(+), 53 deletions(-) diff --git a/src/cats/bvfs.c b/src/cats/bvfs.c index 0a2bf405fa0..878b7e81aa5 100644 --- a/src/cats/bvfs.c +++ b/src/cats/bvfs.c @@ -283,7 +283,7 @@ bool B_DB::update_path_hierarchy_cache(JCR *jcr, pathid_cache &ppathid_cache, Jo "JOIN PathVisibility AS p ON (h.PathId=p.PathId) " "WHERE p.JobId=%s) AS a " "LEFT JOIN PathVisibility AS b " - "ON (b.JobId=%s and a.PathId = b.PathId) " + "ON (b.JobId=%s AND a.PathId = b.PathId) " "WHERE b.PathId IS NULL", jobid, jobid, jobid); } diff --git a/src/cats/sql_cmds.c b/src/cats/sql_cmds.c index 04fb500b428..3c3e07764cf 100644 --- a/src/cats/sql_cmds.c +++ b/src/cats/sql_cmds.c @@ -86,10 +86,10 @@ const char *list_jobs = "SELECT DISTINCT Job.JobId,Job.Name, Client.Name as Client, " "Job.StartTime,Job.Type,Job.Level,Job.JobFiles,Job.JobBytes,Job.JobStatus " "FROM Job " - "LEFT JOIN Client ON Client.ClientId=Job.ClientId " - "LEFT JOIN JobMedia ON JobMedia.JobId=Job.JobId " - "LEFT JOIN Media ON JobMedia.MediaId=Media.MediaId " - "LEFT JOIN FileSet ON FileSet.FileSetId=Job.FileSetId " + "LEFT JOIN Client USING(ClientId) " + "LEFT JOIN JobMedia USING(JobId) " + "LEFT JOIN Media USING(MediaId) " + "LEFT JOIN FileSet USING(FileSetId) " "WHERE Job.JobId > 0 " "%s " "ORDER BY StartTime%s"; @@ -98,18 +98,18 @@ const char *list_jobs_last = "SELECT DISTINCT Job.JobId,Job.Name, Client.Name as Client, " "Job.StartTime,Job.Type,Job.Level,Job.JobFiles,Job.JobBytes,Job.JobStatus " "FROM Job " - "LEFT JOIN Client ON Client.ClientId=Job.ClientId " - "LEFT JOIN JobMedia ON JobMedia.JobId=Job.JobId " - "LEFT JOIN Media ON JobMedia.MediaId=Media.MediaId " - "LEFT JOIN FileSet ON FileSet.FileSetId=Job.FileSetId " + "LEFT JOIN Client USING(ClientId) " + "LEFT JOIN JobMedia USING(JobId) " + "LEFT JOIN Media USING(MediaId) " + "LEFT JOIN FileSet USING(FileSetId) " "INNER JOIN ( " "SELECT MAX(Job.JobId) as MaxJobId " "FROM Job " - "LEFT JOIN Client ON Client.ClientId=Job.ClientId " - "LEFT JOIN Pool ON Pool.PoolId=Job.PoolId " - "LEFT JOIN JobMedia ON JobMedia.JobId=Job.JobId " - "LEFT JOIN Media ON JobMedia.MediaId=Media.MediaId " - "LEFT JOIN FileSet ON FileSet.FileSetId=Job.FileSetId " + "LEFT JOIN Client USING(ClientId) " + "LEFT JOIN Pool USING(PoolId) " + "LEFT JOIN JobMedia USING(JobId) " + "LEFT JOIN Media USING(MediaId) " + "LEFT JOIN FileSet USING(FileSetId) " "WHERE Job.JobId > 0 " "%s " "GROUP BY Job.Name " @@ -120,10 +120,10 @@ const char *list_jobs_last = const char *list_jobs_count = "SELECT DISTINCT COUNT(DISTINCT Job.JobId) as count " "FROM Job " - "LEFT JOIN Client ON Client.ClientId=Job.ClientId " - "LEFT JOIN JobMedia ON JobMedia.JobId=Job.JobId " - "LEFT JOIN Media ON JobMedia.MediaId=Media.MediaId " - "LEFT JOIN FileSet ON FileSet.FileSetId=Job.FileSetId " + "LEFT JOIN Client USING(ClientId) " + "LEFT JOIN JobMedia USING(JobId) " + "LEFT JOIN Media USING(MediaId) " + "LEFT JOIN FileSet USING(FileSetId) " "WHERE Job.JobId > 0 " "%s " "%s"; @@ -135,11 +135,11 @@ const char *list_jobs_long = "Job.JobFiles, Job.JobBytes, Job.JobErrors, Job.JobMissingFiles, Job.PoolId, " "Pool.Name as PoolName, Job.PriorJobId, Job.FileSetId, FileSet.FileSet " "FROM Job " - "LEFT JOIN Client ON Client.ClientId=Job.ClientId " - "LEFT JOIN Pool ON Pool.PoolId=Job.PoolId " - "LEFT JOIN JobMedia ON JobMedia.JobId=Job.JobId " - "LEFT JOIN Media ON JobMedia.MediaId=Media.MediaId " - "LEFT JOIN FileSet ON FileSet.FileSetId=Job.FileSetId " + "LEFT JOIN Client USING(ClientId) " + "LEFT JOIN Pool USING(PoolId) " + "LEFT JOIN JobMedia USING(JobId) " + "LEFT JOIN Media USING(MediaId) " + "LEFT JOIN FileSet USING(FileSetId) " "WHERE Job.JobId > 0 " "%s " "ORDER BY StartTime%s"; @@ -151,19 +151,19 @@ const char *list_jobs_long_last = "Job.JobFiles, Job.JobBytes, Job.JobErrors, Job.JobMissingFiles, Job.PoolId, " "Pool.Name as PoolName, Job.PriorJobId, Job.FileSetId, FileSet.FileSet " "FROM Job " - "LEFT JOIN Client ON Client.ClientId=Job.ClientId " - "LEFT JOIN Pool ON Pool.PoolId=Job.PoolId " - "LEFT JOIN JobMedia ON JobMedia.JobId=Job.JobId " - "LEFT JOIN Media ON JobMedia.MediaId=Media.MediaId " - "LEFT JOIN FileSet ON FileSet.FileSetId=Job.FileSetId " + "LEFT JOIN Client USING(ClientId) " + "LEFT JOIN Pool USING(PoolId) " + "LEFT JOIN JobMedia USING(JobId) " + "LEFT JOIN Media USING(MediaId) " + "LEFT JOIN FileSet USING(FileSetId) " "INNER JOIN ( " "SELECT MAX(Job.JobId) as MaxJobId " "FROM Job " - "LEFT JOIN Client ON Client.ClientId=Job.ClientId " - "LEFT JOIN Pool ON Pool.PoolId=Job.PoolId " - "LEFT JOIN JobMedia ON JobMedia.JobId=Job.JobId " - "LEFT JOIN Media ON JobMedia.MediaId=Media.MediaId " - "LEFT JOIN FileSet ON FileSet.FileSetId=Job.FileSetId " + "LEFT JOIN Client USING(ClientId) " + "LEFT JOIN Pool USING(PoolId) " + "LEFT JOIN JobMedia USING(JobId) " + "LEFT JOIN Media USING(MediaId) " + "LEFT JOIN FileSet USING(FileSetId) " "WHERE Job.JobId > 0 " "%s " "GROUP BY Job.Name " @@ -627,8 +627,8 @@ const char *create_temp_new_basefile[] = { "Temp.JobId AS JobId, Temp.LStat AS LStat, Temp.FileId AS FileId, " "Temp.MD5 AS MD5 " "FROM ( %s ) AS Temp " - "JOIN Filename ON (Filename.FilenameId = Temp.FilenameId) " - "JOIN Path ON (Path.PathId = Temp.PathId) " + "JOIN Filename USING(FilenameId) " + "JOIN Path USING(PathId) " "WHERE Temp.FileIndex > 0", /* Postgresql */ @@ -637,8 +637,8 @@ const char *create_temp_new_basefile[] = { "Temp.JobId AS JobId, Temp.LStat AS LStat, Temp.FileId AS FileId, " "Temp.MD5 AS MD5 " "FROM ( %s ) AS Temp " - "JOIN Filename ON (Filename.FilenameId = Temp.FilenameId) " - "JOIN Path ON (Path.PathId = Temp.PathId) " + "JOIN Filename USING(FilenameId) " + "JOIN Path USING(PathId) " "WHERE Temp.FileIndex > 0", /* SQLite3 */ @@ -647,8 +647,8 @@ const char *create_temp_new_basefile[] = { "Temp.JobId AS JobId, Temp.LStat AS LStat, Temp.FileId AS FileId, " "Temp.MD5 AS MD5 " "FROM ( %s ) AS Temp " - "JOIN Filename ON (Filename.FilenameId = Temp.FilenameId) " - "JOIN Path ON (Path.PathId = Temp.PathId) " + "JOIN Filename USING(FilenameId) " + "JOIN Path USING(PathId) " "WHERE Temp.FileIndex > 0", /* Ingres */ @@ -657,8 +657,8 @@ const char *create_temp_new_basefile[] = { "Temp.JobId AS JobId, Temp.LStat AS LStat, Temp.FileId AS FileId, " "Temp.MD5 AS MD5 " "FROM ( %s ) AS Temp " - "JOIN Filename ON (Filename.FilenameId = Temp.FilenameId) " - "JOIN Path ON (Path.PathId = Temp.PathId) " + "JOIN Filename USING(FilenameId) " + "JOIN Path USING(PathId) " "WHERE Temp.FileIndex > 0 " "ON COMMIT PRESERVE ROWS WITH NORECOVERY" }; diff --git a/src/cats/sql_get.c b/src/cats/sql_get.c index ad9232ab0f2..dd56825e671 100644 --- a/src/cats/sql_get.c +++ b/src/cats/sql_get.c @@ -1256,8 +1256,8 @@ bool B_DB::get_file_list(JCR *jcr, char *jobids, bool use_md5, bool use_delta, Mmsg(query, "SELECT Path.Path, Filename.Name, T1.FileIndex, T1.JobId, LStat, DeltaSeq, MD5 " "FROM ( %s ) AS T1 " - "JOIN Filename ON (Filename.FilenameId = T1.FilenameId) " - "JOIN Path ON (Path.PathId = T1.PathId) " + "JOIN Filename USING(FilenameId) " + "JOIN Path USING(PathId) " "WHERE FileIndex > 0 " "ORDER BY T1.JobTDate, FileIndex ASC",/* Return sorted by JobTDate */ /* FileIndex for restore code */ diff --git a/src/cats/sql_list.c b/src/cats/sql_list.c index 7d6f643950f..314761c813b 100644 --- a/src/cats/sql_list.c +++ b/src/cats/sql_list.c @@ -86,13 +86,13 @@ void B_DB::list_pool_records(JCR *jcr, POOL_DBR *pdbr, OUTPUT_FORMATTER *sendit, "AcceptAnyVolume,VolRetention,VolUseDuration,MaxVolJobs,MaxVolBytes," "AutoPrune,Recycle,PoolType,LabelFormat,Enabled,ScratchPoolId," "RecyclePoolId,LabelType " - " FROM Pool WHERE Name='%s'", esc); + "FROM Pool WHERE Name='%s'", esc); } else { Mmsg(cmd, "SELECT PoolId,Name,NumVols,MaxVols,UseOnce,UseCatalog," "AcceptAnyVolume,VolRetention,VolUseDuration,MaxVolJobs,MaxVolBytes," "AutoPrune,Recycle,PoolType,LabelFormat,Enabled,ScratchPoolId," "RecyclePoolId,LabelType " - " FROM Pool ORDER BY PoolId"); + "FROM Pool ORDER BY PoolId"); } } else { if (pdbr->Name[0] != 0) { diff --git a/src/dird/dbcheck.c b/src/dird/dbcheck.c index 822caabab9e..9caa2117f6a 100644 --- a/src/dird/dbcheck.c +++ b/src/dird/dbcheck.c @@ -818,7 +818,7 @@ static void eliminate_duplicate_paths() static void eliminate_orphaned_jobmedia_records() { const char *query = "SELECT JobMedia.JobMediaId,Job.JobId FROM JobMedia " - "LEFT OUTER JOIN Job ON (JobMedia.JobId=Job.JobId) " + "LEFT OUTER JOIN Job USING(JobId) " "WHERE Job.JobId IS NULL LIMIT 300000"; printf(_("Checking for orphaned JobMedia entries.\n")); @@ -861,7 +861,7 @@ static void eliminate_orphaned_jobmedia_records() static void eliminate_orphaned_file_records() { const char *query = "SELECT File.FileId,Job.JobId FROM File " - "LEFT OUTER JOIN Job ON (File.JobId=Job.JobId) " + "LEFT OUTER JOIN Job USING (JobId) " "WHERE Job.JobId IS NULL LIMIT 300000"; printf(_("Checking for orphaned File entries. This may take some time!\n")); @@ -928,7 +928,7 @@ static void eliminate_orphaned_path_records() } const char *query = "SELECT DISTINCT Path.PathId,File.PathId FROM Path " - "LEFT OUTER JOIN File ON (Path.PathId=File.PathId) " + "LEFT OUTER JOIN File USING(PathId) " "WHERE File.PathId IS NULL LIMIT 300000"; printf(_("Checking for orphaned Path entries. This may take some time!\n")); @@ -986,7 +986,7 @@ static void eliminate_orphaned_filename_records() } const char *query = "SELECT Filename.FilenameId,File.FilenameId FROM Filename " - "LEFT OUTER JOIN File ON (Filename.FilenameId=File.FilenameId) " + "LEFT OUTER JOIN File USING(FilenameId) " "WHERE File.FilenameId IS NULL LIMIT 300000"; printf(_("Checking for orphaned Filename entries. This may take some time!\n")); @@ -1035,7 +1035,7 @@ static void eliminate_orphaned_fileset_records() printf(_("Checking for orphaned FileSet entries. This takes some time!\n")); query = "SELECT FileSet.FileSetId,Job.FileSetId FROM FileSet " - "LEFT OUTER JOIN Job ON (FileSet.FileSetId=Job.FileSetId) " + "LEFT OUTER JOIN Job USING(FileSetId) " "WHERE Job.FileSetId IS NULL"; if (verbose > 1) { printf("%s\n", query); @@ -1077,7 +1077,7 @@ static void eliminate_orphaned_client_records() * i.e. Job.Client is NULL */ query = "SELECT Client.ClientId,Client.Name FROM Client " - "LEFT OUTER JOIN Job ON (Client.ClientId=Job.ClientId) " + "LEFT OUTER JOIN Job USING(ClientId) " "WHERE Job.ClientId IS NULL"; if (verbose > 1) { printf("%s\n", query); @@ -1119,7 +1119,7 @@ static void eliminate_orphaned_job_records() * i.e. Client.Name is NULL */ query = "SELECT Job.JobId,Job.Name FROM Job " - "LEFT OUTER JOIN Client ON (Job.ClientId=Client.ClientId) " + "LEFT OUTER JOIN Client USING(ClientId) " "WHERE Client.Name IS NULL"; if (verbose > 1) { printf("%s\n", query); diff --git a/src/dird/ua_prune.c b/src/dird/ua_prune.c index 6c133bb35c1..9d3818d53cd 100644 --- a/src/dird/ua_prune.c +++ b/src/dird/ua_prune.c @@ -433,7 +433,7 @@ static bool prune_set_filter(UAContext *ua, CLIENTRES *client, Mmsg(tmp, " AND Pool.Name = '%s' ", ed2); pm_strcat(*add_where, tmp.c_str()); /* Use ON() instead of USING for some old SQLite */ - pm_strcat(*add_from, " JOIN Pool ON (Job.PoolId = Pool.PoolId) "); + pm_strcat(*add_from, " JOIN Pool USING(PoolId) "); } Dmsg2(150, "f=%s w=%s\n", add_from->c_str(), add_where->c_str()); db_unlock(ua->db);