View Issue Details

IDProjectCategoryView StatusLast Update
0000083bareos-coreinstaller / packagespublic2015-03-25 19:19
Reporterjoergs Assigned To 
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionfixed 
PlatformLinuxOSanyOS Version3
Product Version12.4.1 
Summary0000083: Bareos packages do not contain query.sql
Descriptioncurrently, the Bareos packages do not contain a query.sql file.

In the past, the sample-query.sql has been included.
The file is still referenced in /etc/bareos/bareos-dir.conf

How should be continue here?

The file src/dird/query.sql has following content:
#
# See the file <bareos-source>/examples/sample-query.sql
# for some sample queries.
#
# 1
:The default file is empty, see <bareos-source>/examples/sample-query.sql for samples
SELECT 'See <bareos-source>/examples/sample-query.sql for samples' AS Info;


It references to <bareos-source>/examples/sample-query.sql, but the examples directory does not exist.

Proposal:
- src/dird/query.sql
  - add a working example
  - remove references to examples/sample-query.sql
- install query.sql as config file to /etc/bareos/
- add query.sql to bareos-director package

@Marco: do you agree with this?
TagsNo tags attached.

Activities

mvwieringen

mvwieringen

2013-02-21 13:34

developer   ~0000141

Yes I removed the examples on purpose as the contained very old stuff
which wasn't accurate anymore for the current version.

You can add some samples to the existing query.sql but keep in mind that
it only can be generic SQL queries that work on any database backend
(e.g. currently sqlite3, mysql, postgresql possibly more in the future.)
pstorz

pstorz

2013-02-23 08:01

administrator   ~0000148

I suggest the following:

We start by checking which queries already work on all databases (at least mysql and postgresql) and add them to the query file.

The queries that dont work can be added later.
joergs

joergs

2013-02-25 14:48

developer   ~0000157

as I do not use queries, I assign this ticket to Erol.

@Erol: please provide some useful queries.

user12

2013-04-19 13:39

  ~0000357

I am through: all queries work well. Only query 17: "List Volumes Bacula thinks are eligible for the changer" might need adjustment. I will have to look deeper into it and report back.

user12

2013-05-07 14:52

  ~0000399

I will be able to check on 21th of May

user12

2013-06-05 16:33

  ~0000444

query 18 is somewhat misleading as it gives the sum of JobBytes - is that useful information?

 | 000074L5 | 200 | server | 2013-06-03 19:00:05 | 1,442
| 114234516459126 |

So we have in Volume 000074L5 around 108 TB

user12

2013-07-24 18:01

  ~0000541

query 18 should be this way (without the sum())
SELECT VolumeName, Job.JobId as JobID, Job.Name as JobName, Job.StartTime as
Start, JobFiles AS Files,ROUND(JobBytes/1024.0/1024.0/1024.0,3) AS GB
 FROM Job,JobMedia,Media
 WHERE JobMedia.JobId=Job.JobId
 AND JobMedia.MediaId=Media.MediaId
 GROUP by VolumeName, Job.JobID, Job.Name, Jobbytes, Jobfiles, Job.StartTime
 ORDER by VolumeName;

user12

2013-07-24 18:05

  ~0000542

and so with query 19:
SELECT Job.Name as JobName, Job.JobId as JobID, VolumeName, Job.StartTime as
Start, JobFiles AS Files,ROUND(JobBytes/1024.0/1024.0/1024.0,3) AS GB
 FROM Job,JobMedia,Media
 WHERE JobMedia.JobId=Job.JobId
 AND JobMedia.MediaId=Media.MediaId
 GROUP by VolumeName, Job.JobID, Job.Name, JobBytes, JobFiles, Job.StartTime
 ORDER by JobName, Start;

user12

2013-07-24 18:08

  ~0000543

and so with query 20:
SELECT Job.Name as JobName, Job.JobId as JobID, VolumeName, Job.StartTime as
Start, JobFiles AS Files,ROUND(JobBytes/1024.0/1024.0/1024.0,3) AS Bytes
 FROM Job,JobMedia,Media
 WHERE Job.Name='%1'
 AND JobMedia.JobId=Job.JobId
 AND JobMedia.MediaId=Media.MediaId
 GROUP by VolumeName, Job.JobID, Job.Name, JobFiles, JobBytes, Job.StartTime
 ORDER by JobName, Start;

user12

2013-07-25 15:08

  ~0000544

Added RecycleCounts and changed the order in favor of VolError instead of Volstatus for query 16
:List Volumes likely to need replacement from age or errors
SELECT VolumeName AS Volume,VolErrors AS Errors, VolMounts AS Mounts,
         VolWrites AS Writes,RecycleCount,VolStatus AS Status
  FROM Media
  WHERE (VolErrors>0) OR (VolStatus='Error') OR (VolMounts>50) OR
         (VolStatus='Disabled') OR (VolWrites>3999999)
  ORDER BY VolErrors DESC, VolStatus, VolMounts,VolumeName DESC;

user12

2013-07-25 15:11

  ~0000545

added ROUND()
# 15
:List Volumes Bacula thinks are in changer

SELECT MediaId,VolumeName,ROUND(VolBytes/(1024.0*1024.0*1024.0),3) AS GB,Storage.Name
  AS Storage,Slot,Pool.Name AS Pool,MediaType,VolStatus
  FROM Media,Pool,Storage
  WHERE Media.PoolId=Pool.PoolId
  AND Slot>0 AND InChanger=1
  AND Media.StorageId=Storage.StorageId
  ORDER BY MediaType ASC, Slot ASC;

user12

2013-07-25 16:43

 

query.sql (9,350 bytes)   
#
# This file contains sample queries that you can possibly use in
# your query.sql file.  However, please note that these examples
# are not supported. They may or may not work -- in fact, they may
# work with one SQL engine and not another.  As a consequence,
# please do not submit bug reports on either query.sql or 
# sample-query.sql
#
# If you find that they work for MySQL and not for PostgreSQL,
#  then please send us a whole new file corrected for PostgreSQL
#  and we will post it in the examples directory for everyone
#  to use.
#

# 1 
:List up to 20 places where a File is saved regardless of the directory and Client
*Enter Filename (no path):
SELECT DISTINCT Job.JobId AS JobId, Client.Name AS Client,
  Path.Path,Filename.Name,StartTime,Level,JobFiles,ROUND(JobBytes/1024.0/1024.0/1024.0,3) AS GB
 FROM Client,Job,File,Filename,Path WHERE Client.ClientId=Job.ClientId
 AND JobStatus IN ('T','W') AND Job.JobId=File.JobId
 AND Path.PathId=File.PathId AND Filename.FilenameId=File.FilenameId
 AND Filename.Name='%1' 
 ORDER BY Job.StartTime LIMIT 20;
# 2
:List where the most recent copies of a file with path of a Client are saved
*Enter path with trailing slash:
*Enter filename:
*Enter Client name:
SELECT DISTINCT Job.JobId,StartTime AS JobStartTime,VolumeName,Client.Name AS ClientName
 FROM Job,File,Path,Filename,Media,JobMedia,Client
 WHERE File.JobId=Job.JobId
 AND Path.Path='%1'
 AND Filename.Name='%2'
 AND Client.Name='%3'
 AND Path.PathId=File.PathId
 AND Filename.FilenameId=File.FilenameId
 AND JobMedia.JobId=Job.JobId
 AND JobMedia.MediaId=Media.MediaId
 AND Client.ClientId=Job.ClientId
 ORDER BY Job.StartTime DESC LIMIT 5;
# 3
:List last 20 Full Backups for a Client
*Enter Client name:
SELECT DISTINCT Job.JobId,Client.Name AS Client,Starttime,JobFiles,ROUND(JobBytes/1024.0/1024.0/1024.0,3) AS GB
 FROM Client,Job,JobMedia,Media
 WHERE Client.Name='%1'
 AND Client.ClientId=Job.ClientId
 AND Level='F' AND JobStatus IN ('T', 'W')
 AND JobMedia.JobId=Job.JobId
 AND JobMedia.MediaId=Media.MediaId
 ORDER BY Job.StartTime DESC LIMIT 20;
# 4
:List all backups for a Client after a specified time
*Enter Client Name:
*Enter time in YYYY-MM-DD HH:MM:SS format:
SELECT DISTINCT Job.JobId,Client.Name AS Client,Level,StartTime,JobFiles,ROUND(JobBytes/1024.0/1024.0/1024.0,3) AS GB,Count(VolumeName) AS Volumes
 FROM Client,Job,JobMedia,Media
 WHERE Client.Name='%1'
 AND Client.ClientId=Job.ClientId
 AND JobStatus IN ('T', 'W')
 AND JobMedia.JobId=Job.JobId AND JobMedia.MediaId=Media.MediaId
 AND Job.StartTime >= '%2'
 GROUP BY Job.JobId,Client.Name,Level,StartTime,JobFiles,JobBytes
 ORDER BY Job.StartTime;
# 5
:List all backups for a Client and COUNT the Volumes which been used
*Enter Client Name:
SELECT DISTINCT Job.JobId AS JobId,Client.Name AS Client,
   FileSet.FileSet AS FileSet,Level,StartTime,
   JobFiles,ROUND(JobBytes/1024.0/1024.0/1024.0,3) AS GB,Count(VolumeName) AS Volumes
 FROM Client,Job,JobMedia,Media,FileSet
 WHERE Client.Name='%1'
 AND Client.ClientId=Job.ClientId AND Job.Type='B'
 AND Job.JobStatus IN ('T','W') AND Job.FileSetId=FileSet.FileSetId
 AND JobMedia.JobId=Job.JobId AND JobMedia.MediaId=Media.MediaId
 GROUP BY Job.JobId,Client.Name,FileSet.FileSet,Level,StartTime,JobFiles,JobBytes
 ORDER BY Job.StartTime;
# 6
:List Volume Attributes for a selected Volume
*Enter Volume name:
SELECT Slot,MaxVolBytes,VolCapacityBytes,VolStatus,Recycle,VolRetention,
  VolUseDuration,MaxVolJobs,MaxVolFiles
 FROM Media   
 WHERE VolumeName='%1';
# 7
:List Volumes used by selected JobId
*Enter JobId:
SELECT DISTINCT Job.JobId,VolumeName 
 FROM Job,JobMedia,Media 
 WHERE Job.JobId=%1 
 AND Job.JobId=JobMedia.JobId 
 AND JobMedia.MediaId=Media.MediaId;
# 8
:List Volumes to Restore All Files
*Enter Client Name:
!DROP TABLE temp;
!DROP TABLE temp2;
CREATE TABLE temp (JobId BIGINT NOT NULL,
 JobTDate BIGINT,
 ClientId BIGINT,
 Level CHAR,
 StartTime TEXT,
 VolumeName TEXT,
 StartFile BIGINT, 
 VolSessionId BIGINT,
 VolSessionTime BIGINT );
CREATE TABLE temp2 (JobId BIGINT NOT NULL,
 StartTime TEXT,
 VolumeName TEXT,
 Level CHAR,
 StartFile BIGINT, 
 VolSessionId BIGINT,
 VolSessionTime BIGINT);
# Select last Full save
INSERT INTO temp SELECT Job.JobId,JobTDate,Job.ClientId,Job.Level,
  StartTime,VolumeName,JobMedia.StartFile,VolSessionId,VolSessionTime
 FROM Client,Job,JobMedia,Media WHERE Client.Name='%1'
 AND Client.ClientId=Job.ClientId
 AND Level='F' AND JobStatus IN ('T', 'W')
 AND JobMedia.JobId=Job.JobId 
 AND JobMedia.MediaId=Media.MediaId
 ORDER BY Job.JobTDate DESC LIMIT 1;
# Copy into temp 2 getting all volumes of Full save
INSERT INTO temp2 SELECT Job.JobId,Job.StartTime,Media.VolumeName,Job.Level,
  JobMedia.StartFile,Job.VolSessionId,Job.VolSessionTime
 FROM temp,Job,JobMedia,Media WHERE temp.JobId=Job.JobId
 AND Job.Level='F' AND Job.JobStatus IN ('T', 'W')
 AND JobMedia.JobId=Job.JobId
 AND JobMedia.MediaId=Media.MediaId;
# Now add subsequent incrementals
INSERT INTO temp2 SELECT DISTINCT Job.JobId,Job.StartTime,Media.VolumeName,
  Job.Level,JobMedia.StartFile,Job.VolSessionId,Job.VolSessionTime
 FROM Job,temp,JobMedia,Media
 WHERE Job.JobTDate>temp.JobTDate 
 AND Job.ClientId=temp.ClientId
 AND Job.Level IN ('I','D') AND JobStatus IN ('T', 'W')
 AND JobMedia.JobId=Job.JobId 
 AND JobMedia.MediaId=Media.MediaId;
# list results
SELECT DISTINCT VolumeName from temp2;
!DROP TABLE temp;
!DROP TABLE temp2;
# 9
:List Pool Attributes for a selected Pool
*Enter Pool name:
SELECT Recycle,VolRetention,VolUseDuration,MaxVolJobs,MaxVolFiles,MaxVolBytes
 FROM Pool
 WHERE Name='%1';
# 10
:List total files/bytes by Job
SELECT COUNT(*) AS Jobs,SUM(JobFiles) AS Files,ROUND(SUM(JobBytes/1024.0/1024.0/1024.0),3) AS GB, Name AS Job
 FROM Job 
 GROUP by Name;
# 11
:List total files/bytes by Volume
SELECT COUNT(*) AS Jobs,SUM(JobFiles) AS Files,ROUND(SUM(JobBytes/1024.0/1024.0/1024.0),3) AS GB, VolumeName
 FROM Job,JobMedia,Media
 WHERE JobMedia.JobId=Job.JobId
 AND JobMedia.MediaId=Media.MediaId
 GROUP by VolumeName;  
# 12
:List Files for a selected JobId
*Enter JobId:
SELECT Path.Path,Filename.Name FROM File,Filename,Path WHERE File.JobId=%1 
 AND Filename.FilenameId=File.FilenameId 
 AND Path.PathId=File.PathId ORDER BY
 Path.Path,Filename.Name;
# 13
:List Jobs stored on a selected MediaId
*Enter MediaId:
SELECT DISTINCT Job.JobId,Job.Name,Job.StartTime,Job.Type,
  Job.Level,Job.JobFiles,ROUND(Job.JobBytes/1024.0/1024.0/1024.0,3) AS GB,Job.JobStatus
 FROM JobMedia,Job
 WHERE JobMedia.JobId=Job.JobId
 AND JobMedia.MediaId=%1 
 ORDER by Job.StartTime;
# 14  
:List Jobs stored for a given Volume name
*Enter Volume name:
SELECT DISTINCT Job.JobId AS JobId,Job.Name AS Name,Job.StartTime AS StartTime,
  Job.Type AS Type,Job.Level AS Level,Job.JobFiles AS Files,
  ROUND(Job.JobBytes/1024.0/1024.0/1024.0,3) AS GB ,Job.JobStatus AS Status
 FROM Media,JobMedia,Job
 WHERE Media.VolumeName='%1'
 AND Media.MediaId=JobMedia.MediaId              
 AND JobMedia.JobId=Job.JobId
 ORDER by Job.StartTime;
# 15
:List Volumes Bareos thinks are in changer
SELECT MediaId,VolumeName,ROUND(VolBytes/(1024.0*1024.0*1024.0),3) AS GB,Storage.Name
  AS Storage,Slot,Pool.Name AS Pool,MediaType,VolStatus
  FROM Media,Pool,Storage
  WHERE Media.PoolId=Pool.PoolId
  AND Slot>0 AND InChanger=1
  AND Media.StorageId=Storage.StorageId
  ORDER BY MediaType ASC, Slot ASC;
# 16
:List Volumes likely to need replacement from age or errors
SELECT VolumeName AS Volume,VolErrors AS Errors, VolMounts AS Mounts,
VolWrites AS Writes,RecycleCount,VolStatus AS Status
  FROM Media
  WHERE (VolErrors>0) OR (VolStatus='Error') OR (VolMounts>50) OR
        (VolStatus='Disabled') OR (VolWrites>3999999)
  ORDER BY VolErrors DESC, VolStatus, VolMounts,VolumeName DESC;
#  17
:List Volumes Bareos thinks are eligible for the changer
SELECT VolumeName,VolStatus,Storage.Name AS Location,
   VolBytes/(1024*1024*1024) AS GB,MediaId,MediaType,Pool.Name AS Pool
   FROM Media,Pool,Storage
   WHERE Media.PoolId=Pool.PoolId
   AND Media.StorageId=Storage.StorageId
   AND InChanger=0
   AND ((VolStatus='Purged') OR (VolStatus='Append') OR (VolStatus='Recycle'))
   ORDER BY VolMounts ASC, Pool.Name ASC, VolumeName ASC
# 18
:List Volumes by Volume:
SELECT VolumeName, Job.JobId AS JobID, Job.Name AS JobName, Job.StartTime AS
Start, JobFiles AS Files,ROUND(JobBytes/1024.0/1024.0/1024.0,3) AS GB
 FROM Job,JobMedia,Media
 WHERE JobMedia.JobId=Job.JobId
 AND JobMedia.MediaId=Media.MediaId
 GROUP by VolumeName, Job.JobID, Job.Name, JobBytes, JobFiles, Job.StartTime
 ORDER by VolumeName; 
# 19
:List Volumes by Jobs:
SELECT Job.Name AS JobName, Job.JobId AS JobID, VolumeName, Job.StartTime AS
Start, JobFiles AS Files,ROUND(JobBytes/1024.0/1024.0/1024.0,3) AS GB
 FROM Job,JobMedia,Media
 WHERE JobMedia.JobId=Job.JobId
 AND JobMedia.MediaId=Media.MediaId
 GROUP by VolumeName, Job.JobID, Job.Name, JobBytes, JobFiles, Job.StartTime
 ORDER by JobName, Start; 
# 20
:List Volumes for a jobname:
*Enter Job name:
SELECT Job.Name AS JobName, Job.JobId AS JobID, VolumeName, Job.StartTime AS
Start, JobFiles AS Files,ROUND(JobBytes/1024.0/1024.0/1024.0,3) AS Bytes
 FROM Job,JobMedia,Media
 WHERE Job.Name='%1'
 AND JobMedia.JobId=Job.JobId
 AND JobMedia.MediaId=Media.MediaId
 GROUP by VolumeName, Job.JobID, Job.Name, JobBytes, JobFiles, Job.StartTime
 ORDER by JobName, Start;
query.sql (9,350 bytes)   

user12

2013-07-25 16:44

  ~0000549

Dear Jörg,

please integrate.

Thanks!

Best regards,

Erol
mvwieringen

mvwieringen

2013-07-27 17:11

developer   ~0000559

Fix committed to bareos master branch with changesetid 532.
mvwieringen adm

mvwieringen adm

2013-08-13 03:12

administrator   ~0000573

Fix committed to bareos master branch with changesetid 596.
mvwieringen

mvwieringen

2015-03-25 16:51

developer   ~0001491

Fix committed to bareos2015 bareos-14.2 branch with changesetid 5084.
joergs

joergs

2015-03-25 19:19

developer   ~0001641

Due to the reimport of the Github repository to bugs.bareos.org, the status of some tickets have been changed. These tickets will be closed again.
Sorry for the noise.

Related Changesets

bareos: master aa9861c5

2013-07-26 17:21

joergs


Committer: mvwieringen adm

Ported: N/A

Details Diff
sample sql queries

provide sample sql queries, that can be used by the bconsole query command.

Fixes 0000083: Bareos packages do not contain query.sql

Signed-off-by: Marco van Wieringen <marco.van.wieringen@bareos.com>
Affected Issues
0000083
mod - src/dird/query.sql Diff File

bareos2015: bareos-14.2 e75cb33b

2013-07-26 19:21

joergs


Committer: mvwieringen

Ported: N/A

Details Diff
sample sql queries

provide sample sql queries, that can be used by the bconsole query command.

Fixes 0000083: Bareos packages do not contain query.sql

Signed-off-by: Marco van Wieringen <marco.van.wieringen@bareos.com>
Affected Issues
0000083
mod - src/dird/query.sql Diff File

Issue History

Date Modified Username Field Change
2013-02-21 11:48 joergs New Issue
2013-02-21 11:48 joergs Status new => assigned
2013-02-21 11:48 joergs Assigned To => mvwieringen
2013-02-21 13:34 mvwieringen Note Added: 0000141
2013-02-21 13:34 mvwieringen Assigned To mvwieringen => joergs
2013-02-23 08:01 pstorz Note Added: 0000148
2013-02-25 14:48 joergs Assigned To joergs => user12
2013-02-25 14:48 joergs Note Added: 0000157
2013-04-19 13:39 user12 Note Added: 0000357
2013-05-07 14:52 user12 Note Added: 0000399
2013-06-05 16:33 user12 Note Added: 0000444
2013-07-24 18:01 user12 Note Added: 0000541
2013-07-24 18:05 user12 Note Added: 0000542
2013-07-24 18:08 user12 Note Added: 0000543
2013-07-25 15:08 user12 Note Added: 0000544
2013-07-25 15:11 user12 Note Added: 0000545
2013-07-25 16:43 user12 File Added: query.sql
2013-07-25 16:44 user12 Assigned To user12 => joergs
2013-07-25 16:44 user12 Note Added: 0000549
2013-07-27 17:11 mvwieringen Changeset attached => bareos master 3279438d
2013-07-27 17:11 mvwieringen Note Added: 0000559
2013-07-27 17:11 mvwieringen Assigned To joergs => mvwieringen
2013-07-27 17:11 mvwieringen Status assigned => resolved
2013-07-27 17:11 mvwieringen Resolution open => fixed
2013-08-13 03:12 mvwieringen adm Changeset attached => bareos master aa9861c5
2013-08-13 03:12 mvwieringen adm Note Added: 0000573
2013-08-13 03:12 mvwieringen adm Assigned To mvwieringen => mvwieringen adm
2013-09-06 13:11 mvwieringen Status resolved => closed
2013-09-06 13:11 mvwieringen Assigned To mvwieringen adm =>
2015-03-25 16:51 mvwieringen Changeset attached => bareos2015 bareos-14.2 e75cb33b
2015-03-25 16:51 mvwieringen Note Added: 0001491
2015-03-25 16:51 mvwieringen Status closed => resolved
2015-03-25 19:19 joergs Note Added: 0001641
2015-03-25 19:19 joergs Status resolved => closed