db_lock(mdb);
Mmsg(&mdb->cmd,
-"SELECT VolumeName FROM JobMedia,Media WHERE JobMedia.JobId=%u \
-AND JobMedia.MediaId=Media.MediaId", JobId);
+"SELECT VolumeName FROM JobMedia,Media WHERE JobMedia.JobId=%u "
+"AND JobMedia.MediaId=Media.MediaId GROUP BY VolumeName", JobId);
Dmsg1(130, "VolNam=%s\n", mdb->cmd);
*VolumeNames[0] = 0;
Mmsg(&mdb->cmd,
"SELECT VolumeName,FirstIndex,LastIndex,StartFile,EndFile,StartBlock,EndBlock"
" FROM JobMedia,Media WHERE JobMedia.JobId=%u"
-" AND JobMedia.MediaId=Media.MediaId ORDER BY JobMediaId", JobId);
+" AND JobMedia.MediaId=Media.MediaId ORDER BY VolIndex,JobMediaId", JobId);
Dmsg1(130, "VolNam=%s\n", mdb->cmd);
if (QUERY_DB(jcr, mdb, mdb->cmd)) {
return stat;
}
+/*
+ * Get Counter Record
+ *
+ * Returns: 0 on failure
+ * 1 on success
+ */
+int db_get_counter_record(JCR *jcr, B_DB *mdb, COUNTER_DBR *cr)
+{
+ SQL_ROW row;
+
+ db_lock(mdb);
+ Mmsg(&mdb->cmd, "SELECT MinValue,MaxValue,CurrentValue,WrapCounter "
+ "FROM Counters WHERE Counter='%s'", cr->Counter);
+
+ if (QUERY_DB(jcr, mdb, mdb->cmd)) {
+
+ mdb->num_rows = sql_num_rows(mdb);
+
+ /* If more than one, report error, but return first row */
+ if (mdb->num_rows > 1) {
+ Mmsg1(&mdb->errmsg, _("More than one Counter!: %d\n"), (int)(mdb->num_rows));
+ Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
+ }
+ if (mdb->num_rows >= 1) {
+ if ((row = sql_fetch_row(mdb)) == NULL) {
+ Mmsg1(&mdb->errmsg, _("error fetching Counter row: %s\n"), sql_strerror(mdb));
+ Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
+ sql_free_result(mdb);
+ db_unlock(mdb);
+ return 0;
+ }
+ cr->MinValue = atoi(row[0]);
+ cr->MaxValue = atoi(row[1]);
+ cr->CurrentValue = atoi(row[2]);
+ if (row[3]) {
+ bstrncpy(cr->WrapCounter, row[3], sizeof(cr->WrapCounter));
+ } else {
+ cr->WrapCounter[0] = 0;
+ }
+ sql_free_result(mdb);
+ db_unlock(mdb);
+ return 1;
+ }
+ sql_free_result(mdb);
+ }
+ db_unlock(mdb);
+ return 0;
+}
+
/* Get FileSet Record
* If the FileSetId is non-zero, we get its record,
"WHERE FileSetId=%u", fsr->FileSetId);
} else { /* find by name */
Mmsg(&mdb->cmd,
- "SELECT FileSetId,FileSet,CreateTime MD5,FROM FileSet "
+ "SELECT FileSetId,FileSet,CreateTime,MD5 FROM FileSet "
"WHERE FileSet='%s'", fsr->FileSet);
}
/*
- * This function returns a list of all the Media record ids.
+ * This function returns a list of all the Media record ids for
+ * the current Pool.
* The caller must free ids if non-NULL.
*
* Returns 0: on failure
* 1: on success
*/
-int db_get_media_ids(JCR *jcr, B_DB *mdb, int *num_ids, uint32_t *ids[])
+int db_get_media_ids(JCR *jcr, B_DB *mdb, uint32_t PoolId, int *num_ids, uint32_t *ids[])
{
SQL_ROW row;
int stat = 0;
db_lock(mdb);
*ids = NULL;
- Mmsg(&mdb->cmd, "SELECT MediaId FROM Media");
+ Mmsg(&mdb->cmd, "SELECT MediaId FROM Media WHERE PoolId=%u", PoolId);
if (QUERY_DB(jcr, mdb, mdb->cmd)) {
*num_ids = sql_num_rows(mdb);
if (*num_ids > 0) {