]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/cats/postgresql.c
Tweak version date
[bacula/bacula] / bacula / src / cats / postgresql.c
index a0cb1302a1612e87d98c75280e324dbc356b6a1d..1f35b1634f282856f4c51d0daaab83f47193ab65 100644 (file)
@@ -118,6 +118,7 @@ B_DB_POSTGRESQL::B_DB_POSTGRESQL(JCR *jcr,
    path = get_pool_memory(PM_FNAME);
    esc_name = get_pool_memory(PM_FNAME);
    esc_path = get_pool_memory(PM_FNAME);
+   esc_obj = get_pool_memory(PM_FNAME);
    m_buf =  get_pool_memory(PM_FNAME);
    m_allow_transactions = mult_db_connections;
 
@@ -272,9 +273,9 @@ void B_DB_POSTGRESQL::db_close_database(JCR *jcr)
 {
    db_end_transaction(jcr);
    P(mutex);
-   sql_free_result();
    m_ref_count--;
    if (m_ref_count == 0) {
+      sql_free_result();
       db_list->remove(this);
       if (m_connected && m_db_handle) {
          PQfinish(m_db_handle);
@@ -287,6 +288,7 @@ void B_DB_POSTGRESQL::db_close_database(JCR *jcr)
       free_pool_memory(path);
       free_pool_memory(esc_name);
       free_pool_memory(esc_path);
+      free_pool_memory(esc_obj);
       free_pool_memory(m_buf);
       if (m_db_driver) {
          free(m_db_driver);
@@ -306,9 +308,6 @@ void B_DB_POSTGRESQL::db_close_database(JCR *jcr)
       if (m_db_socket) {
          free(m_db_socket);
       }
-      if (esc_obj) {
-         PQfreemem(esc_obj);
-      }
       delete this;
       if (db_list->size() == 0) {
          delete db_list;
@@ -510,9 +509,10 @@ bool B_DB_POSTGRESQL::db_big_sql_query(const char *query,
       
    } while (m_num_rows > 0);    /* TODO: Can probably test against 100 */
 
-   sql_free_result();
+   sql_query("CLOSE _bac_cursor");
 
    Dmsg0(500, "db_big_sql_query finished\n");
+   sql_free_result();
    retval = true;
 
 bail_out:
@@ -938,13 +938,13 @@ bool B_DB_POSTGRESQL::sql_batch_start(JCR *jcr)
    Dmsg0(500, "sql_batch_start started\n");
 
    if (!sql_query("CREATE TEMPORARY TABLE batch ("
-                          "fileindex int,"
-                          "jobid int,"
-                          "path varchar,"
-                          "name varchar,"
-                          "lstat varchar,"
-                          "md5 varchar,"
-                          "markid int)")) {
+                          "FileIndex int,"
+                          "JobId int,"
+                          "Path varchar,"
+                          "Name varchar,"
+                          "LStat varchar,"
+                          "Md5 varchar,"
+                          "DeltaSeq smallint)")) {
       Dmsg0(500, "sql_batch_start failed\n");
       return false;
    }