* Version $Id$
*/
/*
- Copyright (C) 2002-2005 Kern Sibbald
+ Copyright (C) 2002-2006 Kern Sibbald
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
/* For ua_dotcmds.c */
const char *client_backups =
"SELECT DISTINCT Job.JobId,Client.Name as Client,Level,StartTime,"
- "JobFiles,JobBytes,VolumeName,MediaType"
- " FROM Client,Job,JobMedia,Media"
+ "JobFiles,JobBytes,VolumeName,MediaType,FileSet"
+ " FROM Client,Job,JobMedia,Media,FileSet"
" WHERE Client.Name='%s'"
+ " AND FileSet='%s'"
" AND Client.ClientId=Job.ClientId"
- " AND JobStatus='T'"
+ " AND JobStatus='T' AND Type='B'"
" AND JobMedia.JobId=Job.JobId AND JobMedia.MediaId=Media.MediaId"
+ " AND Job.FileSetId=FileSet.FileSetId"
" ORDER BY Job.StartTime";
const char *upd_Purged = "UPDATE Job Set PurgedFiles=1 WHERE JobId=%s";
const char *cnt_DelCand = "SELECT count(*) FROM DelCandidates";
const char *del_Job = "DELETE FROM Job WHERE JobId=%s";
+const char *del_MAC = "DELETE FROM MAC WHERE JobId=%s";
const char *del_JobMedia = "DELETE FROM JobMedia WHERE JobId=%s";
const char *cnt_JobMedia = "SELECT count(*) FROM JobMedia WHERE MediaId=%s";
const char *sel_JobMedia = "SELECT JobId FROM JobMedia WHERE MediaId=%s";
/* List of SQL commands to create temp table and indicies */
const char *create_deltabs[] = {
- "CREATE TABLE DelCandidates ("
-#ifdef HAVE_MYSQL
+ "CREATE TEMPORARY TABLE DelCandidates ("
+#if defined(HAVE_MYSQL)
"JobId INTEGER UNSIGNED NOT NULL, "
"PurgedFiles TINYINT, "
"FileSetId INTEGER UNSIGNED, "
"JobFiles INTEGER UNSIGNED, "
"JobStatus BINARY(1))",
-#else
-#ifdef HAVE_POSTGRESQL
+#elif defined(HAVE_POSTGRESQL)
"JobId INTEGER NOT NULL, "
"PurgedFiles SMALLINT, "
"FileSetId INTEGER, "
"FileSetId INTEGER UNSIGNED, "
"JobFiles INTEGER UNSIGNED, "
"JobStatus CHAR)",
-#endif
#endif
"CREATE INDEX DelInx1 ON DelCandidates (JobId)",
NULL};
* (i.e. no files, ...) for deletion.
*/
const char *select_backup_del =
- "SELECT DISTINCT DelCandidates.JobId "
+ "SELECT DISTINCT DelCandidates.JobId,DelCandidates.PurgedFiles "
"FROM Job,DelCandidates "
"WHERE (Job.JobTDate<%s AND ((DelCandidates.JobFiles=0) OR "
"(DelCandidates.JobStatus!='T'))) OR "
"(Job.JobTDate>%s "
"AND Job.ClientId=%s "
- "AND Job.Type='B' "
- "AND Job.Level='F' "
- "AND Job.JobStatus='T' "
+ "AND Job.Level='F' AND Job.JobStatus='T' AND Job.Type='B' "
"AND Job.FileSetId=DelCandidates.FileSetId)";
/* Select Jobs from the DelCandidates table that have a
* This is the list of Jobs to delete for a Verify Job.
*/
const char *select_verify_del =
- "SELECT DISTINCT DelCandidates.JobId "
+ "SELECT DISTINCT DelCandidates.JobId,DelCandidates.PurgedFiles "
"FROM Job,DelCandidates "
"WHERE (Job.JobTdate<%s AND DelCandidates.JobStatus!='T') OR "
"(Job.JobTDate>%s "
"AND Job.ClientId=%s "
- "AND Job.Type='V' "
- "AND Job.Level='V' "
- "AND Job.JobStatus='T' "
+ "AND Job.Type='V' AND Job.Level='V' AND Job.JobStatus='T' "
"AND Job.FileSetId=DelCandidates.FileSetId)";
* This is the list of Jobs to delete for a Restore Job.
*/
const char *select_restore_del =
- "SELECT DISTINCT DelCandidates.JobId "
+ "SELECT DISTINCT DelCandidates.JobId,DelCandidates.PurgedFiles "
"FROM Job,DelCandidates "
"WHERE (Job.JobTdate<%s AND DelCandidates.JobStatus!='T') OR "
"(Job.JobTDate>%s "
* This is the list of Jobs to delete for an Admin Job.
*/
const char *select_admin_del =
- "SELECT DISTINCT DelCandidates.JobId "
+ "SELECT DISTINCT DelCandidates.JobId,DelCandidates.PurgedFiles "
"FROM Job,DelCandidates "
"WHERE (Job.JobTdate<%s AND DelCandidates.JobStatus!='T') OR "
"(Job.JobTDate>%s "
"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";
- #endif
+#endif
/*
const char *uar_del_temp1 = "DROP TABLE temp1";
const char *uar_create_temp =
- "CREATE TABLE temp ("
+ "CREATE TEMPORARY TABLE temp ("
#ifdef HAVE_POSTGRESQL
"JobId INTEGER NOT NULL,"
"JobTDate BIGINT,"
#endif
const char *uar_create_temp1 =
- "CREATE TABLE temp1 ("
+ "CREATE TEMPORARY TABLE temp1 ("
#ifdef HAVE_POSTGRESQL
"JobId INTEGER NOT NULL,"
"JobTDate BIGINT)";
"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 Level='F' AND JobStatus='T' AND Type='B' "
"AND JobMedia.JobId=Job.JobId "
"AND JobMedia.MediaId=Media.MediaId "
"AND Job.FileSetId=FileSet.FileSetId "
"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 Level='F' AND JobStatus='T' AND Type='B' "
"AND JobMedia.JobId=Job.JobId "
"AND JobMedia.MediaId=Media.MediaId";
"AND Job.ClientId=%s "
"AND JobMedia.JobId=Job.JobId "
"AND JobMedia.MediaId=Media.MediaId "
- "AND Job.Level='D' AND JobStatus='T' "
+ "AND Job.Level='D' AND JobStatus='T' AND Type='B' "
"AND Job.FileSetId=FileSet.FileSetId "
"AND FileSet.FileSet='%s' "
"%s"
"AND Job.ClientId=%s "
"AND JobMedia.JobId=Job.JobId "
"AND JobMedia.MediaId=Media.MediaId "
- "AND Job.Level='I' AND JobStatus='T' "
+ "AND Job.Level='I' AND JobStatus='T' AND Type='B' "
"AND Job.FileSetId=FileSet.FileSetId "
"AND FileSet.FileSet='%s' "
"%s";
"GROUP BY File.FileIndex ";
#endif
+/* Query to get list of files from table -- presuably built by an external program */
+const char *uar_jobid_fileindex_from_table =
+ "SELECT JobId, FileIndex from %s";