+ db_unlock(mdb);
+ return ok;
+}
+
+
+/* Create a JobMedia record for medium used this job
+ * Returns: false on failure
+ * true on success
+ */
+bool
+db_create_jobmedia_record(JCR *jcr, B_DB *mdb, JOBMEDIA_DBR *jm)
+{
+ bool ok = true;;
+ int count;
+ char ed1[50], ed2[50];
+
+ db_lock(mdb);
+
+ /* Now get count for VolIndex */
+ Mmsg(mdb->cmd, "SELECT count(*) from JobMedia WHERE JobId=%s",
+ edit_int64(jm->JobId, ed1));
+ count = get_sql_record_max(jcr, mdb);
+ if (count < 0) {
+ count = 0;
+ }
+ count++;
+
+ /* Note, jm->Strip is not used and is not likely to be used
+ * in the near future, so I have removed it from the insert
+ * to save space in the DB. KES June 2006.
+ */
+ Mmsg(mdb->cmd,
+ "INSERT INTO JobMedia (JobId,MediaId,FirstIndex,LastIndex,"
+ "StartFile,EndFile,StartBlock,EndBlock,VolIndex,Copy) "
+ "VALUES (%s,%s,%u,%u,%u,%u,%u,%u,%u,%u)",
+ edit_int64(jm->JobId, ed1),
+ edit_int64(jm->MediaId, ed2),
+ jm->FirstIndex, jm->LastIndex,
+ jm->StartFile, jm->EndFile, jm->StartBlock, jm->EndBlock,count,
+ jm->Copy);
+
+ Dmsg0(300, mdb->cmd);
+ if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
+ Mmsg2(&mdb->errmsg, _("Create JobMedia record %s failed: ERR=%s\n"), mdb->cmd,
+ sql_strerror(mdb));
+ ok = false;
+ } else {
+ /* Worked, now update the Media record with the EndFile and EndBlock */
+ Mmsg(mdb->cmd,
+ "UPDATE Media SET EndFile=%u, EndBlock=%u WHERE MediaId=%u",
+ jm->EndFile, jm->EndBlock, jm->MediaId);
+ if (!UPDATE_DB(jcr, mdb, mdb->cmd)) {
+ Mmsg2(&mdb->errmsg, _("Update Media record %s failed: ERR=%s\n"), mdb->cmd,
+ sql_strerror(mdb));
+ ok = false;
+ }
+ }
+ db_unlock(mdb);
+ Dmsg0(300, "Return from JobMedia\n");
+ return ok;
+}
+
+
+
+/* Create Unique Pool record
+ * Returns: false on failure
+ * true on success
+ */
+bool
+db_create_pool_record(JCR *jcr, B_DB *mdb, POOL_DBR *pr)
+{
+ bool stat;
+ char ed1[30], ed2[30], ed3[50];
+
+ Dmsg0(200, "In create pool\n");
+ db_lock(mdb);
+ Mmsg(mdb->cmd, "SELECT PoolId,Name FROM Pool WHERE Name='%s'", pr->Name);
+ Dmsg1(200, "selectpool: %s\n", mdb->cmd);
+
+ if (QUERY_DB(jcr, mdb, mdb->cmd)) {
+ mdb->num_rows = sql_num_rows(mdb);
+ if (mdb->num_rows > 0) {
+ Mmsg1(&mdb->errmsg, _("pool record %s already exists\n"), pr->Name);
+ sql_free_result(mdb);
+ db_unlock(mdb);
+ return false;
+ }
+ sql_free_result(mdb);
+ }
+