From: Eric Bollengier Date: Wed, 6 Sep 2023 08:25:52 +0000 (+0200) Subject: Backport sql_get.c X-Git-Tag: Beta-15.0.0~113 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3153e256749a6a659bbe5c12880166da69105e23;p=thirdparty%2Fbacula.git Backport sql_get.c --- diff --git a/bacula/src/cats/sql_get.c b/bacula/src/cats/sql_get.c index d2c4caaa9..816f9019c 100644 --- a/bacula/src/cats/sql_get.c +++ b/bacula/src/cats/sql_get.c @@ -257,34 +257,30 @@ bool BDB::bdb_get_job_record(JCR *jcr, JOB_DBR *jr) "PoolId,StartTime,EndTime,JobFiles,JobBytes,JobTDate,Job,JobStatus," "Type,Level,ClientId,Job.Name,PriorJobId,RealEndTime,JobId,FileSetId," "SchedTime,RealStartTime,ReadBytes,HasBase,PurgedFiles,PriorJob,Comment," -"Reviewed,Client.Name AS Client, isVirtualFull,WriteStorageId,LastReadstorageId,StatusInfo,LastReadDevice,WriteDevice,Encrypted " -"FROM Job WHERE Job='%s'", esc); +"Reviewed,isVirtualFull,WriteStorageId,LastReadstorageId,StatusInfo,LastReadDevice,WriteDevice,Encrypted, Client.Name AS Client " +"FROM Job JOIN Client USING (ClientId) WHERE Job='%s'", esc); } else if (jr->PriorJob[0]) { bdb_escape_string(jcr, esc, jr->PriorJob, strlen(jr->PriorJob)); Mmsg(cmd, "SELECT VolSessionId,VolSessionTime," "PoolId,StartTime,EndTime,JobFiles,JobBytes,JobTDate,Job,JobStatus," -"Type,Level,ClientId,Name,PriorJobId,RealEndTime,JobId,FileSetId," +"Type,Level,ClientId,Job.Name AS Name,PriorJobId,RealEndTime,JobId,FileSetId," "SchedTime,RealStartTime,ReadBytes,HasBase,PurgedFiles,PriorJob,Comment," -"Reviewed,Client.Name AS Client,isVirtualFull,WriteStorageId,LastReadstorageId,StatusInfo,LastReadDevice,WriteDevice,Encrypted " -"FROM Job WHERE PriorJob='%s' ORDER BY Type ASC LIMIT 1", esc); +"Reviewed,isVirtualFull,WriteStorageId,LastReadstorageId,StatusInfo,LastReadDevice,WriteDevice,Encrypted, Client.Name AS Client " +"FROM Job JOIN CLient USING (ClientId) WHERE PriorJob='%s' ORDER BY Type ASC LIMIT 1", esc); } else { Mmsg0(errmsg, _("No Job found\n")); bdb_unlock(); return false; /* failed */ } - } else { // 0 1 + } else { Mmsg(cmd, "SELECT VolSessionId,VolSessionTime," -// 2 3 4 5 6 7 8 9 "PoolId,StartTime,EndTime,JobFiles,JobBytes,JobTDate,Job,JobStatus," -// 10 11 12 13 14 15 16 17 -"Type,Level,ClientId,Name,PriorJobId,RealEndTime,JobId,FileSetId," -// 18 19 20 21 22 23 24 25 26 -"SchedTime,RealStartTime,ReadBytes,HasBase,PurgedFiles,PriorJob,Comment,Reviewed,Client.Name AS Client," -// 27 28 29 30 31 32 33 -"isVirtualFull,WriteStorageId,LastReadStorageId,StatusInfo,LastReadDevice,WriteDevice,Encrypted " -"FROM Job WHERE JobId=%s", +"Type,Level,ClientId,Job.Name AS Name,PriorJobId,RealEndTime,JobId,FileSetId," +"SchedTime,RealStartTime,ReadBytes,HasBase,PurgedFiles,PriorJob,Comment," +"Reviewed,isVirtualFull,WriteStorageId,LastReadStorageId,StatusInfo,LastReadDevice,WriteDevice,Encrypted, Client.Name AS Client " +"FROM Job JOIN Client USING (ClientId) WHERE JobId=%s", edit_int64(jr->JobId, ed1)); } @@ -339,14 +335,14 @@ bool BDB::bdb_get_job_record(JCR *jcr, JOB_DBR *jr) bstrncpy(jr->PriorJob, NPRTB(row[23]), sizeof(jr->PriorJob)); bstrncpy(jr->Comment, NPRTB(row[24]), sizeof(jr->Comment)); jr->Reviewed = str_to_int64(row[25]); - bstrncpy(jr->Client, NPRTB(row[26]), sizeof(jr->Client)); - jr->isVirtualFull = str_to_int64(row[27]); - jr->WriteStorageId = str_to_int64(row[28]); - jr->LastReadStorageId = str_to_int64(row[29]); - bstrncpy(jr->StatusInfo, NPRTB(row[30]), sizeof(jr->StatusInfo)); - bstrncpy(jr->LastReadDevice, NPRTB(row[31]), sizeof(jr->LastReadDevice)); - bstrncpy(jr->WriteDevice, NPRTB(row[32]), sizeof(jr->WriteDevice)); - jr->Encrypted = str_to_int64(row[33]); + jr->isVirtualFull = str_to_int64(row[26]); + jr->WriteStorageId = str_to_int64(row[27]); + jr->LastReadStorageId = str_to_int64(row[28]); + bstrncpy(jr->StatusInfo, NPRTB(row[29]), sizeof(jr->StatusInfo)); + bstrncpy(jr->LastReadDevice, NPRTB(row[30]), sizeof(jr->LastReadDevice)); + bstrncpy(jr->WriteDevice, NPRTB(row[31]), sizeof(jr->WriteDevice)); + jr->Encrypted = str_to_int64(row[32]); + bstrncpy(jr->Client, NPRTB(row[33]), sizeof(jr->Client)); sql_free_result(); bdb_unlock(); @@ -1378,14 +1374,14 @@ bool BDB::bdb_get_media_record(JCR *jcr, MEDIA_DBR *mr) Mmsg(cmd, "SELECT MediaId,VolumeName,VolJobs,VolFiles," "VolBlocks,VolBytes,VolABytes,VolHoleBytes,VolHoles,VolMounts," - "VolErrors,VolWrites,MaxVolBytes,VolCapacityBytes," - "MediaType,VolStatus,PoolId,VolRetention,VolUseDuration,MaxVolJobs," - "MaxVolFiles,Recycle,Slot,FirstWritten,LastWritten,InChanger," + "VolErrors,VolWrites,Media.MaxVolBytes,Media.VolCapacityBytes," + "MediaType,VolStatus,Media.PoolId,Media.VolRetention,Media.VolUseDuration,Media.MaxVolJobs," + "Media.MaxVolFiles,Media.Recycle,Slot,FirstWritten,LastWritten,InChanger," "EndFile,EndBlock,VolType,VolParts,VolCloudParts,LastPartBytes," - "LabelType,LabelDate,StorageId," - "Enabled,LocationId,RecycleCount,InitialWrite," - "ScratchPoolId,RecyclePoolId,VolReadTime,VolWriteTime,ActionOnPurge," - "CacheRetention,Pool.Name,Protected,UseProtect,VolEncrypted " + "Media.LabelType,LabelDate,StorageId," + "Media.Enabled,LocationId,RecycleCount,InitialWrite," + "Media.ScratchPoolId,Media.RecyclePoolId,VolReadTime,VolWriteTime,Media.ActionOnPurge," + "Media.CacheRetention,Protected,UseProtect,VolEncrypted,Pool.Name " "FROM Media JOIN Pool USING (PoolId) %s", filter.c_str()); if (QueryDB(jcr, cmd)) { @@ -1449,10 +1445,10 @@ bool BDB::bdb_get_media_record(JCR *jcr, MEDIA_DBR *mr) mr->VolWriteTime = str_to_int64(row[42]); mr->ActionOnPurge = str_to_int32(row[43]); mr->CacheRetention = str_to_int64(row[44]); - bstrncpy(mr->Pool, row[45], sizeof(mr->Pool)); - mr->Protected = str_to_int64(row[46]); - mr->UseProtect = str_to_int64(row[47]); - mr->VolEncrypted = str_to_int64(row[48]); + mr->Protected = str_to_int64(row[45]); + mr->UseProtect = str_to_int64(row[46]); + mr->VolEncrypted = str_to_int64(row[47]); + bstrncpy(mr->Pool, row[48], sizeof(mr->Pool)); ok = true; }