# Get the list of the last recent version per Delta with a given jobid list
# This is a tricky part because with SQL the result of
#
# SELECT MAX(A), B, C, D FROM... GROUP BY (B,C)
#
# doesn't give the good result (for D).
#
# With PostgreSQL, we can use DISTINCT ON(), but with Mysql or Sqlite,
# we need an extra join using JobTDate.
SELECT FileId,
       Job.JobId AS JobId,
       FileIndex,
       File.PathId AS PathId,
       File.Name AS Name,
       LStat,
       MD5,
       DeltaSeq,
       Fhinfo,
       Fhnode,
       Job.JobTDate AS JobTDate
FROM Job,
     File,

  (SELECT MAX(JobTDate) AS JobTDate,
          PathId,
          FileName
   FROM
     (SELECT JobTDate,
             PathId,
             File.Name AS FileName
      FROM File
      JOIN Job USING (JobId)
      WHERE File.JobId IN (%s)
        UNION ALL
        SELECT JobTDate,
               PathId,
               File.Name AS FileName
        FROM BaseFiles
        JOIN File USING (FileId)
        JOIN Job ON (BaseJobId = Job.JobId) WHERE BaseFiles.JobId IN (%s) ) AS tmp
   GROUP BY PathId,
            FileName) AS T1
WHERE (Job.JobId IN
         (SELECT DISTINCT BaseJobId
          FROM BaseFiles
          WHERE JobId IN (%s))
       OR Job.JobId IN (%s))
  AND T1.JobTDate = Job.JobTDate
  AND Job.JobId = File.JobId
  AND T1.PathId = File.PathId
  AND T1.FileName = File.Name
