src/cats/sql_create.c
bool bdb_write_batch_file_records(JCR *jcr)
{
   bool retval = false; 
   int JobStatus = jcr->JobStatus;

   if (!jcr->batch_started) {         /* no files to backup ? */
      Dmsg0(50,"db_write_batch_file_records: no files\n");
      return true;
   }

   if (job_canceled(jcr)) {
      goto bail_out; 
   }

   jcr->JobStatus = JS_AttrInserting;

   /* Check if batch mode is on hold */
   while (!batch_mode_enabled) {
      Dmsg0(50, "batch mode is on hold\n");
      bmicrosleep(10, 0);

      if (job_canceled(jcr)) {
         goto bail_out; 
      }
   }

   Dmsg1(50,"db_write_batch_file_records changes=%u\n",jcr->db_batch->changes);

   if (!jcr->db_batch->sql_batch_end(jcr, NULL)) {
      Jmsg1(jcr, M_FATAL, 0, "Batch end %s\n", jcr->db_batch->errmsg);
      goto bail_out; 
   }
   if (job_canceled(jcr)) {
      goto bail_out; 
   }

   /* We have to lock tables */
   if (!jcr->db_batch->bdb_sql_query(batch_lock_path_query[jcr->db_batch->bdb_get_type_index()], NULL, NULL)) {
      Jmsg1(jcr, M_FATAL, 0, "Lock Path table %s\n", jcr->db_batch->errmsg);
      goto bail_out; 
   }

   if (!jcr->db_batch->bdb_sql_query(batch_fill_path_query[jcr->db_batch->bdb_get_type_index()], NULL, NULL)) {
      Jmsg1(jcr, M_FATAL, 0, "Fill Path table %s\n",jcr->db_batch->errmsg);
      jcr->db_batch->bdb_sql_query(batch_unlock_tables_query[jcr->db_batch->bdb_get_type_index()], NULL, NULL);
      goto bail_out; 
   }

   if (!jcr->db_batch->bdb_sql_query(batch_unlock_tables_query[jcr->db_batch->bdb_get_type_index()], NULL, NULL)) {
      Jmsg1(jcr, M_FATAL, 0, "Unlock Path table %s\n", jcr->db_batch->errmsg);
      goto bail_out; 
   }

   /* We have to lock tables */
   if (!db_sql_query(jcr->db_batch, batch_lock_filename_query[db_get_type_index(jcr->db_batch)], NULL, NULL)) { 
      Jmsg1(jcr, M_FATAL, 0, "Lock Filename table %s\n", jcr->db_batch->errmsg);
      goto bail_out; 
   }
   
   if (!db_sql_query(jcr->db_batch, batch_fill_filename_query[db_get_type_index(jcr->db_batch)], NULL, NULL)) { 
      Jmsg1(jcr,M_FATAL,0,"Fill Filename table %s\n",jcr->db_batch->errmsg);
      db_sql_query(jcr->db_batch, batch_unlock_tables_query[db_get_type_index(jcr->db_batch)], NULL, NULL); 
      goto bail_out; 
   }

   if (!db_sql_query(jcr->db_batch, batch_unlock_tables_query[db_get_type_index(jcr->db_batch)], NULL, NULL)) { 
      Jmsg1(jcr, M_FATAL, 0, "Unlock Filename table %s\n", jcr->db_batch->errmsg);
      goto bail_out; 
   }
   
   if (!db_sql_query(jcr->db_batch, 
"INSERT INTO File (FileIndex, JobId, PathId, FilenameId, LStat, MD5, DeltaSeq) "
    "SELECT batch.FileIndex, batch.JobId, Path.PathId, "
           "Filename.FilenameId,batch.LStat, batch.MD5, batch.DeltaSeq "
      "FROM batch "
      "JOIN Path ON (batch.Path = Path.Path) "
      "JOIN Filename ON (batch.Name = Filename.Name)",
         NULL, NULL))
   {
      Jmsg1(jcr, M_FATAL, 0, "Fill File table %s\n", jcr->db_batch->errmsg);
      goto bail_out; 
   }

   jcr->JobStatus = JobStatus;    /* reset entry status */
   retval = true; 
 
bail_out: 
   jcr->db_batch->bdb_sql_query("DROP TABLE batch", NULL,NULL);
   jcr->batch_started = false;

   return retval; 
}
/*
 *  Returns true if OK
 *          false if failed
 */
Returns true if OK
false if failed
Returns true if OK false if failed
bool bdb_write_batch_file_records(JCR *jcr)
{
   bool retval = false; 
   int JobStatus = jcr->JobStatus;
   if (!jcr->batch_started) {         
      Dmsg0(50,"db_write_batch_file_records: no files\n");
      return true;
   }
   if (job_canceled(jcr)) {
      goto bail_out; 
   }
   jcr->JobStatus = JS_AttrInserting;
   while (!batch_mode_enabled) {
      Dmsg0(50, "batch mode is on hold\n");
      bmicrosleep(10, 0);
      if (job_canceled(jcr)) {
         goto bail_out; 
      }
   }
   Dmsg1(50,"db_write_batch_file_records changes=%u\n",jcr->db_batch->changes);
   if (!jcr->db_batch->sql_batch_end(jcr, NULL)) {
      Jmsg1(jcr, M_FATAL, 0, "Batch end %s\n", jcr->db_batch->errmsg);
      goto bail_out; 
   }
   if (job_canceled(jcr)) {
      goto bail_out; 
   }
   if (!jcr->db_batch->bdb_sql_query(batch_lock_path_query[jcr->db_batch->bdb_get_type_index()], NULL, NULL)) {
      Jmsg1(jcr, M_FATAL, 0, "Lock Path table %s\n", jcr->db_batch->errmsg);
      goto bail_out; 
   }
   if (!jcr->db_batch->bdb_sql_query(batch_fill_path_query[jcr->db_batch->bdb_get_type_index()], NULL, NULL)) {
      Jmsg1(jcr, M_FATAL, 0, "Fill Path table %s\n",jcr->db_batch->errmsg);
      jcr->db_batch->bdb_sql_query(batch_unlock_tables_query[jcr->db_batch->bdb_get_type_index()], NULL, NULL);
      goto bail_out; 
   }
   if (!jcr->db_batch->bdb_sql_query(batch_unlock_tables_query[jcr->db_batch->bdb_get_type_index()], NULL, NULL)) {
      Jmsg1(jcr, M_FATAL, 0, "Unlock Path table %s\n", jcr->db_batch->errmsg);
      goto bail_out; 
   }
   if (!db_sql_query(jcr->db_batch, batch_lock_filename_query[db_get_type_index(jcr->db_batch)], NULL, NULL)) { 
      Jmsg1(jcr, M_FATAL, 0, "Lock Filename table %s\n", jcr->db_batch->errmsg);
      goto bail_out; 
   }
   if (!db_sql_query(jcr->db_batch, batch_fill_filename_query[db_get_type_index(jcr->db_batch)], NULL, NULL)) { 
      Jmsg1(jcr,M_FATAL,0,"Fill Filename table %s\n",jcr->db_batch->errmsg);
      db_sql_query(jcr->db_batch, batch_unlock_tables_query[db_get_type_index(jcr->db_batch)], NULL, NULL); 
      goto bail_out; 
   }
   if (!db_sql_query(jcr->db_batch, batch_unlock_tables_query[db_get_type_index(jcr->db_batch)], NULL, NULL)) { 
      Jmsg1(jcr, M_FATAL, 0, "Unlock Filename table %s\n", jcr->db_batch->errmsg);
      goto bail_out; 
   }
   if (!db_sql_query(jcr->db_batch, 
"INSERT INTO File (FileIndex, JobId, PathId, FilenameId, LStat, MD5, DeltaSeq) "
    "SELECT batch.FileIndex, batch.JobId, Path.PathId, "
           "Filename.FilenameId,batch.LStat, batch.MD5, batch.DeltaSeq "
      "FROM batch "
      "JOIN Path ON (batch.Path = Path.Path) "
      "JOIN Filename ON (batch.Name = Filename.Name)",
         NULL, NULL))
   {
      Jmsg1(jcr, M_FATAL, 0, "Fill File table %s\n", jcr->db_batch->errmsg);
      goto bail_out; 
   }
   jcr->JobStatus = JobStatus;    
   retval = true; 
bail_out: 
   jcr->db_batch->bdb_sql_query("DROP TABLE batch", NULL,NULL);
   jcr->batch_started = false;
   return retval; 
}
bool bdb_write_batch_file_records ( JCR * jcr ) { bool retval = false ; int JobStatus = jcr -> JobStatus ; if ( ! jcr -> batch_started ) { Dmsg0 ( 50 , " \n " ) ; return true ; } if ( job_canceled ( jcr ) ) { goto bail_out ; } jcr -> JobStatus = JS_AttrInserting ; while ( ! batch_mode_enabled ) { Dmsg0 ( 50 , " \n " ) ; bmicrosleep ( 10 , 0 ) ; if ( job_canceled ( jcr ) ) { goto bail_out ; } } Dmsg1 ( 50 , " \n " , jcr -> db_batch -> changes ) ; if ( ! jcr -> db_batch -> sql_batch_end ( jcr , NULL ) ) { Jmsg1 ( jcr , M_FATAL , 0 , " \n " , jcr -> db_batch -> errmsg ) ; goto bail_out ; } if ( job_canceled ( jcr ) ) { goto bail_out ; } if ( ! jcr -> db_batch -> bdb_sql_query ( batch_lock_path_query [ jcr -> db_batch -> bdb_get_type_index ( ) ] , NULL , NULL ) ) { Jmsg1 ( jcr , M_FATAL , 0 , " \n " , jcr -> db_batch -> errmsg ) ; goto bail_out ; } if ( ! jcr -> db_batch -> bdb_sql_query ( batch_fill_path_query [ jcr -> db_batch -> bdb_get_type_index ( ) ] , NULL , NULL ) ) { Jmsg1 ( jcr , M_FATAL , 0 , " \n " , jcr -> db_batch -> errmsg ) ; jcr -> db_batch -> bdb_sql_query ( batch_unlock_tables_query [ jcr -> db_batch -> bdb_get_type_index ( ) ] , NULL , NULL ) ; goto bail_out ; } if ( ! jcr -> db_batch -> bdb_sql_query ( batch_unlock_tables_query [ jcr -> db_batch -> bdb_get_type_index ( ) ] , NULL , NULL ) ) { Jmsg1 ( jcr , M_FATAL , 0 , " \n " , jcr -> db_batch -> errmsg ) ; goto bail_out ; } if ( ! db_sql_query ( jcr -> db_batch , batch_lock_filename_query [ db_get_type_index ( jcr -> db_batch ) ] , NULL , NULL ) ) { Jmsg1 ( jcr , M_FATAL , 0 , " \n " , jcr -> db_batch -> errmsg ) ; goto bail_out ; } if ( ! db_sql_query ( jcr -> db_batch , batch_fill_filename_query [ db_get_type_index ( jcr -> db_batch ) ] , NULL , NULL ) ) { Jmsg1 ( jcr , M_FATAL , 0 , " \n " , jcr -> db_batch -> errmsg ) ; db_sql_query ( jcr -> db_batch , batch_unlock_tables_query [ db_get_type_index ( jcr -> db_batch ) ] , NULL , NULL ) ; goto bail_out ; } if ( ! db_sql_query ( jcr -> db_batch , batch_unlock_tables_query [ db_get_type_index ( jcr -> db_batch ) ] , NULL , NULL ) ) { Jmsg1 ( jcr , M_FATAL , 0 , " \n " , jcr -> db_batch -> errmsg ) ; goto bail_out ; } if ( ! db_sql_query ( jcr -> db_batch , " " " " " " " " " " " " , NULL , NULL ) ) { Jmsg1 ( jcr , M_FATAL , 0 , " \n " , jcr -> db_batch -> errmsg ) ; goto bail_out ; } jcr -> JobStatus = JobStatus ; retval = true ; bail_out : jcr -> db_batch -> bdb_sql_query ( " " , NULL , NULL ) ; jcr -> batch_started = false ; return retval ; }
Returns true if OK
          false if failed
Returns true if OK false if failed
/* no files to backup ? */ /* Check if batch mode is on hold */ /* We have to lock tables */ /* We have to lock tables */ /* reset entry status */