From 892deba061cc87abf960141fa932252b54b4fba3 Mon Sep 17 00:00:00 2001 From: Kern Sibbald Date: Fri, 13 Feb 2004 13:52:10 +0000 Subject: [PATCH] Fix find_next_volume sorting again git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@1052 91ce42f0-d328-0410-95d8-f526ca767f89 --- bacula/src/cats/create_bacula_database.in | 2 +- bacula/src/cats/sql_find.c | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/bacula/src/cats/create_bacula_database.in b/bacula/src/cats/create_bacula_database.in index 27e2efa46a..9609be8ad6 100644 --- a/bacula/src/cats/create_bacula_database.in +++ b/bacula/src/cats/create_bacula_database.in @@ -12,6 +12,6 @@ else @scriptdir@/create_mysql_database $* else echo "Creating PostgreSQL database" - @scriptdir@/create_postgresql_database + @scriptdir@/create_postgresql_database template1 fi fi diff --git a/bacula/src/cats/sql_find.c b/bacula/src/cats/sql_find.c index 347c2a01bc..8a9371bccb 100644 --- a/bacula/src/cats/sql_find.c +++ b/bacula/src/cats/sql_find.c @@ -226,7 +226,7 @@ db_find_next_volume(JCR *jcr, B_DB *mdb, int item, bool InChanger, MEDIA_DBR *mr Mmsg(&mdb->cmd, "SELECT MediaId,VolumeName,VolJobs,VolFiles,VolBlocks," "VolBytes,VolMounts,VolErrors,VolWrites,MaxVolBytes,VolCapacityBytes," "VolRetention,VolUseDuration,MaxVolJobs,MaxVolFiles,Recycle,Slot," - "FirstWritten,COALESCE(LastWritten,0),VolStatus " + "FirstWritten,LastWritten,VolStatus " "FROM Media WHERE PoolId=%u AND MediaType='%s' AND VolStatus IN ('Full'," "'Recycle','Purged','Used','Append') " "ORDER BY LastWritten LIMIT 1", mr->PoolId, mr->MediaType); @@ -242,12 +242,12 @@ db_find_next_volume(JCR *jcr, B_DB *mdb, int item, bool InChanger, MEDIA_DBR *mr strcmp(mr->VolStatus, "Purged") == 0) { order = "ORDER BY LastWritten ASC,MediaId"; /* take oldest */ } else { - order = "ORDER BY LastWritten DESC,MediaId"; /* take most recently written */ + order = "ORDER BY LastWritten IS NULL,LastWritten DESC,MediaId"; /* take most recently written */ } Mmsg(&mdb->cmd, "SELECT MediaId,VolumeName,VolJobs,VolFiles,VolBlocks," "VolBytes,VolMounts,VolErrors,VolWrites,MaxVolBytes,VolCapacityBytes," "VolRetention,VolUseDuration,MaxVolJobs,MaxVolFiles,Recycle,Slot," - "FirstWritten,COALESCE(LastWritten,0),VolStatus " + "FirstWritten,LastWritten,VolStatus " "FROM Media WHERE PoolId=%u AND MediaType='%s' AND VolStatus='%s' " "%s " "%s LIMIT 1", @@ -298,8 +298,7 @@ db_find_next_volume(JCR *jcr, B_DB *mdb, int item, bool InChanger, MEDIA_DBR *mr mr->Slot = str_to_int64(row[16]); bstrncpy(mr->cFirstWritten, row[17]!=NULL?row[17]:"", sizeof(mr->cFirstWritten)); mr->FirstWritten = (time_t)str_to_utime(mr->cFirstWritten); - /* LastWritten cannot be NULL because of COALESCE() in SQL */ - bstrncpy(mr->cLastWritten, row[18], sizeof(mr->cLastWritten)); + bstrncpy(mr->cLastWritten, row[18]!=NULL?row[18]:"", sizeof(mr->cLastWritten)); mr->LastWritten = (time_t)str_to_utime(mr->cLastWritten); bstrncpy(mr->VolStatus, row[19], sizeof(mr->VolStatus)); sql_free_result(mdb); -- 2.39.5