X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fcats%2Fsql_cmds.c;h=88afd3e024719478f321bc1921712c8c8018c3c2;hb=638e67a8c6628604327df2bb2f57cffb61a08016;hp=7ed398e2ca59c274e8c0a8a6f02b4e88634704c6;hpb=e6022d0f66283b05aa92e57dfad605891741a13d;p=bacula%2Fbacula diff --git a/bacula/src/cats/sql_cmds.c b/bacula/src/cats/sql_cmds.c index 7ed398e2ca..88afd3e024 100644 --- a/bacula/src/cats/sql_cmds.c +++ b/bacula/src/cats/sql_cmds.c @@ -742,6 +742,51 @@ const char *create_deltabs[5] = { "ON COMMIT PRESERVE ROWS WITH NORECOVERY" }; +/* ======= ua_purge.c */ + +/* Select the first available Copy Job that must be upgraded to a Backup job when the original backup job is expired. */ + +const char *uap_upgrade_copies_oldest_job_default = +"CREATE TEMPORARY TABLE cpy_tmp AS " + "SELECT MIN(JobId) AS JobId FROM Job " /* Choose the oldest job */ + "WHERE Type='%c' " /* JT_JOB_COPY */ + "AND ( PriorJobId IN (%s) " /* JobId selection */ + "OR " + " PriorJobId IN ( " + "SELECT PriorJobId " + "FROM Job " + "WHERE JobId IN (%s) " /* JobId selection */ + " AND Type='B' " + ") " + ") " + "GROUP BY PriorJobId "; /* one result per copy */ + +const char *uap_upgrade_copies_oldest_job[5] = { + /* Mysql */ + uap_upgrade_copies_oldest_job_default, + /* Postgresql */ + uap_upgrade_copies_oldest_job_default, + /* SQLite */ + uap_upgrade_copies_oldest_job_default, + /* SQLite3 */ + uap_upgrade_copies_oldest_job_default, + /* Ingres */ + "DECLARE GLOBAL TEMPORARY TABLE cpy_tmp AS " + "SELECT MIN(JobId) AS JobId FROM Job " /* Choose the oldest job */ + "WHERE Type='%c' " /* JT_JOB_COPY */ + "AND ( PriorJobId IN (%s) " /* JobId selection */ + "OR " + " PriorJobId IN ( " + "SELECT PriorJobId " + "FROM Job " + "WHERE JobId IN (%s) " /* JobId selection */ + " AND Type='B' " + ") " + ") " + "GROUP BY PriorJobId " /* one result per copy */ + "ON COMMIT PRESERVE ROWS WITH NORECOVERY" +}; + /* ======= ua_restore.c */ /* List Jobs where a particular file is saved */