Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Bacula® is a registered trademark of John Walker.
+ Bacula® is a registered trademark of Kern Sibbald.
The licensor of Bacula is the Free Software Foundation Europe
(FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
Switzerland, email:ftf@fsfeurope.org.
const char *uar_sel_files =
"SELECT Path.Path,Filename.Name,FileIndex,JobId,LStat "
"FROM File,Filename,Path "
- "WHERE File.JobId=%s AND Filename.FilenameId=File.FilenameId "
+ "WHERE File.JobId IN (%s) AND Filename.FilenameId=File.FilenameId "
"AND Path.PathId=File.PathId";
const char *uar_del_temp = "DROP TABLE temp";
"FROM Client,Job,JobMedia,Media,FileSet WHERE Client.ClientId=%s "
"AND Job.ClientId=%s "
"AND Job.StartTime<'%s' "
- "AND Level='F' AND JobStatus='T' AND Type='B' "
+ "AND Level='F' AND JobStatus='T' "
"AND JobMedia.JobId=Job.JobId "
"AND Media.Enabled=1 "
"AND JobMedia.MediaId=Media.MediaId "
const char *uar_full =
"INSERT INTO temp SELECT Job.JobId,Job.JobTDate,"
- "Job.ClientId,Job.Level,Job.JobFiles,Job.JobBytes,"
- "StartTime,VolumeName,JobMedia.StartFile,VolSessionId,VolSessionTime "
- "FROM temp1,Job,JobMedia,Media WHERE temp1.JobId=Job.JobId "
- "AND Level='F' AND JobStatus='T' AND Type='B' "
- "AND Media.Enabled=1 "
- "AND JobMedia.JobId=Job.JobId "
- "AND JobMedia.MediaId=Media.MediaId";
+ "Job.ClientId,Job.Level,Job.JobFiles,Job.JobBytes,"
+ "StartTime,VolumeName,JobMedia.StartFile,VolSessionId,VolSessionTime "
+ "FROM temp1,Job,JobMedia,Media "
+ "WHERE temp1.JobId=Job.JobId "
+ "AND Level='F' AND JobStatus='T' "
+ "AND Media.Enabled=1 "
+ "AND JobMedia.JobId=Job.JobId "
+ "AND JobMedia.MediaId=Media.MediaId";
const char *uar_dif =
"INSERT INTO temp SELECT Job.JobId,Job.JobTDate,Job.ClientId,"
"AND JobMedia.JobId=Job.JobId "
"AND Media.Enabled=1 "
"AND JobMedia.MediaId=Media.MediaId "
- "AND Job.Level='D' AND JobStatus='T' AND Type='B' "
+ "AND Job.Level='D' AND JobStatus='T' "
"AND Job.FileSetId=FileSet.FileSetId "
"AND FileSet.FileSet='%s' "
"%s"
"AND Media.Enabled=1 "
"AND JobMedia.JobId=Job.JobId "
"AND JobMedia.MediaId=Media.MediaId "
- "AND Job.Level='I' AND JobStatus='T' AND Type='B' "
+ "AND Job.Level='I' AND JobStatus='T' "
"AND Job.FileSetId=FileSet.FileSetId "
"AND FileSet.FileSet='%s' "
"%s";
/* ====== ua_prune.c */
/* List of SQL commands to create temp table and indicies */
-const char *create_deltabs[3] = {
+const char *create_deltabs[4] = {
/* MySQL */
"CREATE TEMPORARY TABLE DelCandidates ("
"JobId INTEGER UNSIGNED NOT NULL, "
"PurgedFiles TINYINT, "
"FileSetId INTEGER UNSIGNED, "
"JobFiles INTEGER UNSIGNED, "
+ "JobStatus CHAR)",
+ /* SQLite3 */
+ "CREATE TEMPORARY TABLE DelCandidates ("
+ "JobId INTEGER UNSIGNED NOT NULL, "
+ "PurgedFiles TINYINT, "
+ "FileSetId INTEGER UNSIGNED, "
+ "JobFiles INTEGER UNSIGNED, "
"JobStatus CHAR)"};
/* ======= ua_restore.c */
/* List Jobs where a particular file is saved */
-const char *uar_file[3] = {
+const char *uar_file[4] = {
/* Mysql */
"SELECT Job.JobId as JobId,"
"CONCAT(Path.Path,Filename.Name) as Name, "
"AND Client.ClientId=Job.ClientId "
"AND Job.JobId=File.JobId "
"AND Path.PathId=File.PathId AND Filename.FilenameId=File.FilenameId "
+ "AND Filename.Name='%s' ORDER BY StartTime DESC LIMIT 20",
+ /* SQLite3 */
+ "SELECT Job.JobId as JobId,"
+ "Path.Path||Filename.Name as Name, "
+ "StartTime,Type as JobType,JobStatus,JobFiles,JobBytes "
+ "FROM Client,Job,File,Filename,Path WHERE Client.Name='%s' "
+ "AND Client.ClientId=Job.ClientId "
+ "AND Job.JobId=File.JobId "
+ "AND Path.PathId=File.PathId AND Filename.FilenameId=File.FilenameId "
"AND Filename.Name='%s' ORDER BY StartTime DESC LIMIT 20"};
-const char *uar_create_temp[3] = {
+const char *uar_create_temp[4] = {
/* Mysql */
"CREATE TEMPORARY TABLE temp ("
"JobId INTEGER UNSIGNED NOT NULL,"
"VolumeName TEXT,"
"StartFile INTEGER UNSIGNED,"
"VolSessionId INTEGER UNSIGNED,"
+ "VolSessionTime INTEGER UNSIGNED)",
+ /* SQLite3 */
+ "CREATE TEMPORARY TABLE temp ("
+ "JobId INTEGER UNSIGNED NOT NULL,"
+ "JobTDate BIGINT UNSIGNED,"
+ "ClientId INTEGER UNSIGNED,"
+ "Level CHAR,"
+ "JobFiles INTEGER UNSIGNED,"
+ "JobBytes BIGINT UNSIGNED,"
+ "StartTime TEXT,"
+ "VolumeName TEXT,"
+ "StartFile INTEGER UNSIGNED,"
+ "VolSessionId INTEGER UNSIGNED,"
"VolSessionTime INTEGER UNSIGNED)"};
-const char *uar_create_temp1[3] = {
+const char *uar_create_temp1[4] = {
/* Mysql */
"CREATE TEMPORARY TABLE temp1 ("
"JobId INTEGER UNSIGNED NOT NULL,"
/* SQLite */
"CREATE TEMPORARY TABLE temp1 ("
"JobId INTEGER UNSIGNED NOT NULL,"
+ "JobTDate BIGINT UNSIGNED)",
+ /* SQLite3 */
+ "CREATE TEMPORARY TABLE temp1 ("
+ "JobId INTEGER UNSIGNED NOT NULL,"
"JobTDate BIGINT UNSIGNED)"};
/* Query to get all files in a directory -- no recursing
* for each time it was backed up.
*/
-const char *uar_jobid_fileindex_from_dir[3] = {
+const char *uar_jobid_fileindex_from_dir[4] = {
/* Mysql */
"SELECT Job.JobId,File.FileIndex FROM Job,File,Path,Filename,Client "
"WHERE Job.JobId IN (%s) "
"AND Job.ClientId=Client.ClientId "
"AND Path.PathId=File.Pathid "
"AND Filename.FilenameId=File.FilenameId "
+ "GROUP BY File.FileIndex ",
+ /* SQLite3 */
+ "SELECT Job.JobId,File.FileIndex FROM Job,File,Path,Filename,Client "
+ "WHERE Job.JobId IN (%s) "
+ "AND Job.JobId=File.JobId "
+ "AND Path.Path='%s' "
+ "AND Client.Name='%s' "
+ "AND Job.ClientId=Client.ClientId "
+ "AND Path.PathId=File.Pathid "
+ "AND Filename.FilenameId=File.FilenameId "
"GROUP BY File.FileIndex "};