]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/cats/postgresql.c
ebl Modify disk-changer to check if slot contains something before
[bacula/bacula] / bacula / src / cats / postgresql.c
index dc0467041dfa2d322c885278901557597d284e5e..87bf00f9c4d2b444293706d765550014c98f9d70 100644 (file)
@@ -47,6 +47,7 @@
 #ifdef HAVE_POSTGRESQL
 
 #include "postgres_ext.h"       /* needed for NAMEDATALEN */
+#include "pg_config_manual.h"   /* get NAMEDATALEN on version 8.3 or later */
 
 /* -----------------------------------------------------------------------
  *
@@ -307,7 +308,7 @@ db_escape_string(JCR *jcr, B_DB *mdb, char *snew, char *old, int len)
  * Submit a general SQL command (cmd), and for each row returned,
  *  the sqlite_handler is called with the ctx.
  */
-int db_sql_query(B_DB *mdb, const char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
+bool db_sql_query(B_DB *mdb, const char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
 {
    SQL_ROW row;
 
@@ -318,7 +319,7 @@ int db_sql_query(B_DB *mdb, const char *query, DB_RESULT_HANDLER *result_handler
       Mmsg(mdb->errmsg, _("Query failed: %s: ERR=%s\n"), query, sql_strerror(mdb));
       db_unlock(mdb);
       Dmsg0(500, "db_sql_query failed\n");
-      return 0;
+      return false;
    }
    Dmsg0(500, "db_sql_query succeeded. checking handler\n");
 
@@ -342,7 +343,7 @@ int db_sql_query(B_DB *mdb, const char *query, DB_RESULT_HANDLER *result_handler
 
    Dmsg0(500, "db_sql_query finished\n");
 
-   return 1;
+   return true;
 }
 
 
@@ -386,7 +387,7 @@ POSTGRESQL_ROW my_postgresql_fetch_row(B_DB *mdb)
       Dmsg2(500, "my_postgresql_fetch_row row number '%d' is NOT acceptable (0..%d)\n", mdb->row_number, mdb->num_rows);
    }
 
-   Dmsg1(500, "my_postgresql_fetch_row finishes returning %x\n", row);
+   Dmsg1(500, "my_postgresql_fetch_row finishes returning %p\n", row);
 
    return row;
 }
@@ -666,6 +667,7 @@ int my_postgresql_batch_start(JCR *jcr, B_DB *mdb)
    return mdb->status;
 
 bail_out:
+   Mmsg1(&mdb->errmsg, _("error starting batch mode: %s"), PQerrorMessage(mdb->db));
    mdb->status = 0;
    PQclear(mdb->result);
    mdb->result = NULL;
@@ -695,7 +697,7 @@ int my_postgresql_batch_end(JCR *jcr, B_DB *mdb, const char *error)
    if (res <= 0) {
       Dmsg0(500, "we failed\n");
       mdb->status = 0;
-      Mmsg1(&mdb->errmsg, _("error ending batch mode: %s\n"), PQerrorMessage(mdb->db));
+      Mmsg1(&mdb->errmsg, _("error ending batch mode: %s"), PQerrorMessage(mdb->db));
    }
    
    Dmsg0(500, "my_postgresql_batch_end finishing\n");
@@ -742,7 +744,7 @@ int my_postgresql_batch_insert(JCR *jcr, B_DB *mdb, ATTR_DBR *ar)
    if (res <= 0) {
       Dmsg0(500, "we failed\n");
       mdb->status = 0;
-      Mmsg1(&mdb->errmsg, _("error ending batch mode: %s\n"), PQerrorMessage(mdb->db));
+      Mmsg1(&mdb->errmsg, _("error ending batch mode: %s"), PQerrorMessage(mdb->db));
    }
 
    Dmsg0(500, "my_postgresql_batch_insert finishing\n");
@@ -800,24 +802,28 @@ char *my_postgresql_copy_escape(char *dest, char *src, size_t len)
 }
 
 #ifdef HAVE_BATCH_FILE_INSERT
-char *my_pg_batch_lock_path_query = "BEGIN; LOCK TABLE Path IN SHARE ROW EXCLUSIVE MODE";
+const char *my_pg_batch_lock_path_query = 
+   "BEGIN; LOCK TABLE Path IN SHARE ROW EXCLUSIVE MODE";
 
 
-char *my_pg_batch_lock_filename_query = "BEGIN; LOCK TABLE Filename IN SHARE ROW EXCLUSIVE MODE";
+const char *my_pg_batch_lock_filename_query = 
+   "BEGIN; LOCK TABLE Filename IN SHARE ROW EXCLUSIVE MODE";
 
-char *my_pg_batch_unlock_tables_query = "COMMIT";
+const char *my_pg_batch_unlock_tables_query = "COMMIT";
 
-char *my_pg_batch_fill_path_query = "INSERT INTO Path (Path) "
-                                      "SELECT a.Path FROM "
-                                         "(SELECT DISTINCT Path FROM batch) AS a "
-                                           "WHERE NOT EXISTS (SELECT Path FROM Path WHERE Path = a.Path) ";
+const char *my_pg_batch_fill_path_query = 
+   "INSERT INTO Path (Path) "
+    "SELECT a.Path FROM "
+     "(SELECT DISTINCT Path FROM batch) AS a "
+      "WHERE NOT EXISTS (SELECT Path FROM Path WHERE Path = a.Path) ";
 
 
-char *my_pg_batch_fill_filename_query = "INSERT INTO Filename (Name) "
-                                          "SELECT a.Name FROM "
-                                             "(SELECT DISTINCT Name FROM batch) as a "
-                                               "WHERE NOT EXISTS "
-                                                 "(SELECT Name FROM Filename WHERE Name = a.Name)";
+const char *my_pg_batch_fill_filename_query = 
+   "INSERT INTO Filename (Name) "
+    "SELECT a.Name FROM "
+     "(SELECT DISTINCT Name FROM batch) as a "
+      "WHERE NOT EXISTS "
+       "(SELECT Name FROM Filename WHERE Name = a.Name)";
 #endif /* HAVE_BATCH_FILE_INSERT */
 
 #endif /* HAVE_POSTGRESQL */