X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fcats%2Fsql_cmds.c;h=88afd3e024719478f321bc1921712c8c8018c3c2;hb=638e67a8c6628604327df2bb2f57cffb61a08016;hp=c0a1a42dead2c25cd7078da47352e1ade6a3e1a7;hpb=2f3d775e160e78b1431df7d7c8f0b525f1917883;p=bacula%2Fbacula diff --git a/bacula/src/cats/sql_cmds.c b/bacula/src/cats/sql_cmds.c index c0a1a42dea..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 */ @@ -854,7 +899,7 @@ const char *uar_create_temp[5] = { "Level CHAR(1)," "JobFiles INTEGER," "JobBytes BIGINT," - "StartTime VARBYTE(32)," + "StartTime TIMESTAMP WITHOUT TIME ZONE," "VolumeName VARBYTE(128)," "StartFile INTEGER," "VolSessionId INTEGER," @@ -954,7 +999,7 @@ const char *sql_media_order_most_recently_written[5] = { /* SQLite3 */ "ORDER BY LastWritten IS NULL,LastWritten DESC,MediaId", /* Ingres */ - "ORDER BY IFNULL(LastWritten, '') DESC,MediaId" + "ORDER BY IFNULL(LastWritten, '1970-01-01 00:00:00') DESC,MediaId" }; const char *sql_get_max_connections[5] = {