]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/cats/cats.h
Merge branch 'master' into basejobv3
[bacula/bacula] / bacula / src / cats / cats.h
index ae57dc1009338daa4a971aaf58dfc435006be2e9..2c264d6a106ff9b450220547bba87515e60c31e3 100644 (file)
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2009 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -166,18 +166,20 @@ struct B_DB {
 #ifdef HAVE_SQLITE3
 #define sql_insert_id(x,y)    sqlite3_last_insert_rowid((x)->db)
 #define sql_close(x)          sqlite3_close((x)->db)
+#define sql_affected_rows(x)  sqlite3_changes((x)->db)
 #else
 #define sql_insert_id(x,y)    sqlite_last_insert_rowid((x)->db)
 #define sql_close(x)          sqlite_close((x)->db)
+#define sql_affected_rows(x)  1
 #endif
 #define sql_strerror(x)       (x)->sqlite_errmsg?(x)->sqlite_errmsg:"unknown"
 #define sql_num_rows(x)       (x)->nrow
 #define sql_data_seek(x, i)   (x)->row = (i)
-#define sql_affected_rows(x)  1
 #define sql_field_seek(x, y)  my_sqlite_field_seek((x), (y))
 #define sql_fetch_field(x)    my_sqlite_fetch_field(x)
 #define sql_num_fields(x)     ((x)->ncolumn)
 #define SQL_ROW               char**
+#define SQL_MATCH             "MATCH"
 
 #define sql_batch_start(x,y)    my_batch_start(x,y)
 #define sql_batch_end(x,y,z)    my_batch_end(x,y,z)
@@ -304,7 +306,7 @@ struct B_DB {
 #define sql_strerror(x)       (x)->sqlite_errmsg?(x)->sqlite_errmsg:"unknown"
 #define sql_num_rows(x)       (x)->nrow
 #define sql_data_seek(x, i)   (x)->row = (i)
-#define sql_affected_rows(x)  1
+#define sql_affected_rows(x)  sqlite3_changes((x)->db)
 #define sql_field_seek(x, y)  my_sqlite_field_seek((x), (y))
 #define sql_fetch_field(x)    my_sqlite_fetch_field(x)
 #define sql_num_fields(x)     ((x)->ncolumn)
@@ -312,6 +314,7 @@ struct B_DB {
 #define sql_batch_end(x,y,z)    my_batch_end(x,y,z)
 #define sql_batch_insert(x,y,z) my_batch_insert(x,y,z)
 #define SQL_ROW               char**
+#define SQL_MATCH             "MATCH"
 #define sql_batch_lock_path_query       my_sqlite_batch_lock_query
 #define sql_batch_lock_filename_query   my_sqlite_batch_lock_query
 #define sql_batch_unlock_tables_query   my_sqlite_batch_unlock_query
@@ -395,6 +398,7 @@ struct B_DB {
 #define sql_num_fields(x)     (int)mysql_num_fields((x)->result)
 #define SQL_ROW               MYSQL_ROW
 #define SQL_FIELD             MYSQL_FIELD
+#define SQL_MATCH             "MATCH"
 
 #define sql_batch_start(x,y)    my_batch_start(x,y)
 #define sql_batch_end(x,y,z)    my_batch_end(x,y,z)
@@ -526,6 +530,7 @@ extern const char* my_pg_batch_fill_path_query;
 
 #define SQL_ROW               POSTGRESQL_ROW
 #define SQL_FIELD             POSTGRESQL_FIELD
+#define SQL_MATCH             "~"
 
 #else
 
@@ -633,6 +638,7 @@ extern const char* my_dbi_batch_lock_filename_query[4];
 extern const char* my_dbi_batch_unlock_tables_query[4];
 extern const char* my_dbi_batch_fill_filename_query[4];
 extern const char* my_dbi_batch_fill_path_query[4];
+extern const char* my_dbi_match[4];
 
 /* "Generic" names for easier conversion */
 #define sql_store_result(x)   (x)->result
@@ -643,6 +649,7 @@ extern const char* my_dbi_batch_fill_path_query[4];
 #define sql_strerror(x)       my_dbi_strerror(x)
 #define sql_num_rows(x)       dbi_result_get_numrows((x)->result)
 #define sql_data_seek(x, i)   my_dbi_data_seek((x), (i))
+#define SQL_MATCH             my_dbi_match[db_type]
 /* #define sql_affected_rows(x)  dbi_result_get_numrows_affected((x)->result) */
 #define sql_affected_rows(x)  1
 #define sql_insert_id(x,y)    my_dbi_sql_insert_id((x), (y))
@@ -1038,6 +1045,22 @@ struct db_int64_ctx {
    int count;                         /* number of values seen */
 };
 
+/* Call back context for getting a list of comma separated strings from the
+ * database 
+ */
+class db_list_ctx {
+public:
+   POOLMEM *list;                     /* list */
+   int count;                         /* number of values seen */
+
+   db_list_ctx() { list = get_pool_memory(PM_FNAME); *list = 0; count = 0; }
+   ~db_list_ctx() { free_pool_memory(list); list = NULL; }
+
+private:
+   db_list_ctx(const db_list_ctx&);            /* prohibit pass by value */
+   db_list_ctx &operator=(const db_list_ctx&); /* prohibit class assignment */
+};
+
 
 #include "protos.h"
 #include "jcr.h"