]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/cats/cats.h
Remove old code from bdb.c
[bacula/bacula] / bacula / src / cats / cats.h
index 6968b0a6a483b0ef8a69f589a299743128f1581f..1dd5f08424eca7acff1af2a433b06919ade45b11 100644 (file)
@@ -1,6 +1,8 @@
 /*
  * SQL header file
  *
+ *   by Kern E. Sibbald
+ *
  *   Anyone who accesses the database will need to include
  *   this file.
  *
@@ -8,6 +10,8 @@
  * the external world, and definitions destined only
  * for the external world. This is control with
  * the define __SQL_C, which is defined only in sql.c
+ *
+ *    Version $Id$
  */
 
 /*
 
 #ifndef __SQL_H_
 #define __SQL_H_ 1
+
 
 typedef void (DB_LIST_HANDLER)(void *, char *);
 typedef int (DB_RESULT_HANDLER)(void *, int, char **);
+
+#define db_lock(mdb)   _db_lock(__FILE__, __LINE__, mdb)
+#define db_unlock(mdb) _db_unlock(__FILE__, __LINE__, mdb)
+
+#ifdef xxxxx_old_way_of_doing_it
+#define db_lock(mdb)   P(mdb->mutex)
+#define db_unlock(mdb) V(mdb->mutex)
+#define db_lock(mdb) \
+   do { int errstat; if ((errstat=rwl_writelock(&(mdb->lock)))) \
+      e_msg(__FILE__, __LINE__, M_ABORT, 0, "rwl_writelock failure. ERR=%s\n",\
+           strerror(errstat)); \
+   } while(0)
+
+#define db_unlock(x) \
+   do { int errstat; if ((errstat=rwl_writeunlock(&(mdb->lock)))) \
+         e_msg(__FILE__, __LINE__, M_ABORT, 0, "rwl_writeunlock failure. ERR=%s\n",\
+           strerror(errstat)); \
+   } while(0)
+#endif
+
  
 #ifdef __SQL_C
 
 #ifdef HAVE_SQLITE
 
+#define BDB_VERSION 1
+
 #include <sqlite.h>
 
 /* Define opaque structure for sqlite */
@@ -67,7 +93,8 @@ typedef struct s_sql_field {
  */
 typedef struct s_db {
    BQUEUE bq;                         /* queue control */
-   pthread_mutex_t mutex;
+/* pthread_mutex_t mutex; */
+   rwlock_t lock;                     /* transaction lock */
    struct sqlite *db;
    char **result;
    int nrow;                          /* nrow returned from sqlite */
@@ -84,8 +111,10 @@ typedef struct s_db {
    char *db_password;
    int connected;
    char *sqlite_errmsg;               /* error message returned by sqlite */
-   char *errmsg;                      /* nicely edited error message */
-   char *cmd;                         /* SQL command string */
+   POOLMEM *errmsg;                   /* nicely edited error message */
+   POOLMEM *cmd;                      /* SQL command string */
+   POOLMEM *cached_path;
+   uint32_t cached_path_id;
 } B_DB;
 
 
@@ -120,6 +149,8 @@ extern void my_sqlite_free_table(B_DB *mdb);
 
 #ifdef HAVE_MYSQL
 
+#define BDB_VERSION 1
+
 #include <mysql.h>
 
 /*
@@ -131,7 +162,8 @@ extern void my_sqlite_free_table(B_DB *mdb);
  */
 typedef struct s_db {
    BQUEUE bq;                         /* queue control */
-   pthread_mutex_t mutex;
+/* pthread_mutex_t mutex; */
+   rwlock_t lock;                     /* transaction lock */
    MYSQL mysql;
    MYSQL *db;
    MYSQL_RES *result;
@@ -142,8 +174,10 @@ typedef struct s_db {
    char *db_password;
    int have_insert_id;                /* do have insert_id() */
    int connected;
-   char *errmsg;                      /* nicely edited error message */
-   char *cmd;                         /* SQL command string */
+   POOLMEM *errmsg;                   /* nicely edited error message */
+   POOLMEM *cmd;                      /* SQL command string */
+   POOLMEM *cached_path;
+   uint32_t cached_path_id;
 } B_DB;
 
 
@@ -171,7 +205,7 @@ typedef struct s_db {
 /* Change this each time there is some incompatible
  * file format change!!!!
  */
-#define BDB_VERSION 7                 /* file version number */
+#define BDB_VERSION 9                 /* file version number */
 
 struct s_control {
    int bdb_version;                   /* Version number */
@@ -190,7 +224,8 @@ struct s_control {
  */
 typedef struct s_db {
    BQUEUE bq;                         /* queue control */
-   pthread_mutex_t mutex;             /* single thread lock */
+/* pthread_mutex_t mutex;  */         /* single thread lock */
+   rwlock_t lock;                     /* transaction lock */
    int ref_count;                     /* number of times opened */
    struct s_control control;          /* control file structure */
    int cfd;                           /* control file device */
@@ -201,8 +236,10 @@ typedef struct s_db {
    FILE *clientfd;                    /* Client records fd */
    FILE *filesetfd;                   /* FileSet records fd */
    char *db_name;                     /* name of database */
-   char *errmsg;                      /* nicely edited error message */
-   char *cmd;                         /* Command string */
+   POOLMEM *errmsg;                   /* nicely edited error message */
+   POOLMEM *cmd;                      /* Command string */
+   POOLMEM *cached_path;
+   uint32_t cached_path_id;
 } B_DB;
 
 #endif /* HAVE_MYSQL */
@@ -238,7 +275,7 @@ typedef uint32_t JobId_t;
  */
 /* Job record */
 typedef struct {
-   uint32_t JobId;
+   JobId_t JobId;
    char Job[MAX_NAME_LENGTH];         /* Job unique name */
    char Name[MAX_NAME_LENGTH];        /* Job base name */
    int Type;                          /* actually char(1) */
@@ -250,6 +287,7 @@ typedef struct {
    time_t SchedTime;                  /* Time job scheduled */
    time_t StartTime;                  /* Job start time */
    time_t EndTime;                    /* Job termination time */
+   btime_t JobTDate;                  /* Backup time/date in seconds */
    uint32_t VolSessionId;
    uint32_t VolSessionTime;
    uint32_t JobFiles;
@@ -280,7 +318,7 @@ typedef struct {
 /* JobMedia record */
 typedef struct {
    uint32_t JobMediaId;               /* record id */
-   uint32_t JobId;                    /* JobId */
+   JobId_t  JobId;                    /* JobId */
    uint32_t MediaId;                  /* MediaId */
    uint32_t FirstIndex;               /* First index this Volume */
    uint32_t LastIndex;                /* Last index this Volume */
@@ -291,8 +329,6 @@ typedef struct {
 } JOBMEDIA_DBR;
 
 
-
-
 /* Attributes record -- NOT same as in database because
  *  in general, this "record" creates multiple database
  *  records (e.g. pathname, filename, fileattributes).
@@ -303,7 +339,7 @@ typedef struct {
    char *attr;                        /* attributes statp */
    uint32_t FileIndex;
    uint32_t Stream;
-   uint32_t JobId;
+   JobId_t  JobId;
    uint32_t ClientId;
    uint32_t PathId;
    uint32_t FilenameId;
@@ -315,7 +351,7 @@ typedef struct {
 typedef struct {
    FileId_t FileId;
    uint32_t FileIndex;
-   uint32_t JobId;
+   JobId_t  JobId;
    uint32_t FilenameId;
    uint32_t PathId;
    char LStat[256];
@@ -332,8 +368,9 @@ typedef struct {
    int UseOnce;                       /* set to use once only */
    int UseCatalog;                    /* set to use catalog */
    int AcceptAnyVolume;               /* set to accept any volume sequence */
-   int AutoRecycle;                   /* set to recycle automatically */
-   uint32_t VolumeRetention;          /* retention period in seconds */
+   int AutoPrune;                     /* set to prune automatically */
+   int Recycle;                       /* default Vol recycle flag */
+   btime_t VolRetention;              /* retention period in seconds */
    char PoolType[MAX_NAME_LENGTH];             
    char LabelFormat[MAX_NAME_LENGTH];
    /* Extra stuff not in DB */
@@ -359,8 +396,9 @@ typedef struct {
    uint64_t VolBytes;                 /* Number of bytes written */
    uint64_t VolMaxBytes;              /* max bytes to write */
    uint64_t VolCapacityBytes;         /* capacity estimate */
+   btime_t  VolRetention;             /* Volume retention in seconds */
+   int Recycle;                       /* recycle yes/no */
    char VolStatus[20];                /* Volume status */
-   char Recycle[20];                  /* Recycle yes/no */
    /* Extra stuff not in DB */
    faddr_t rec_addr;                  /* found record address */
 } MEDIA_DBR;
@@ -368,6 +406,9 @@ typedef struct {
 /* Client record -- same as the database */
 typedef struct {
    uint32_t ClientId;                 /* Unique Client id */
+   int AutoPrune;
+   btime_t FileRetention;
+   btime_t JobRetention;
    char Name[MAX_NAME_LENGTH];        /* Client name */
    char Uname[256];                   /* Uname for client */
 } CLIENT_DBR;
@@ -380,9 +421,7 @@ typedef struct {
 } FILESET_DBR;
 
 
-
 #include "protos.h"
-
 #include "jcr.h"
-
 #endif /* __SQL_H_ */