Changeset: 6f24d085d2bc for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6f24d085d2bc
Modified Files:
        sql/storage/bat/bat_logger.c
Branch: hot-snapshot
Log Message:

The heap files in the BACKUP do not have leading dirs


diffs (42 lines):

diff --git a/sql/storage/bat/bat_logger.c b/sql/storage/bat/bat_logger.c
--- a/sql/storage/bat/bat_logger.c
+++ b/sql/storage/bat/bat_logger.c
@@ -1068,10 +1068,9 @@ snapshot_bats(stream *plan, const char *
        stream *cat = NULL;
        char line[1024];
        int gdk_version;
-       char heapfile[FILENAME_MAX];
-       char alt_heapfile[FILENAME_MAX];
-       size_t heapfile_pos, alt_heapfile_pos;
-       int id;
+       char stable_heapfile[FILENAME_MAX];
+       char bak_heapfile[FILENAME_MAX];
+       size_t stable_heapfile_pos, bak_heapfile_pos;
        gdk_return ret = GDK_FAIL;
 
        snprintf(bbpdir, FILENAME_MAX, "%s/%s/%s", db_dir, BAKDIR, "BBP.dir");
@@ -1106,15 +1105,19 @@ snapshot_bats(stream *plan, const char *
                goto end;
        }
 
-       heapfile_pos = snprintf(heapfile, FILENAME_MAX, "%s/%s/%s/", db_dir, 
BAKDIR, BATDIR);
-       alt_heapfile_pos = snprintf(alt_heapfile, FILENAME_MAX, "%s/%s/", 
db_dir, BATDIR);
+       bak_heapfile_pos = snprintf(bak_heapfile, FILENAME_MAX, "%s/%s/", 
db_dir, BAKDIR);
+       stable_heapfile_pos = snprintf(stable_heapfile, FILENAME_MAX, "%s/%s/", 
db_dir, BATDIR);
        while (mnstr_readline(cat, line, sizeof(line)) > 0) {
-               if (sscanf(line, "%d %*s %*s %s", &id, heapfile + heapfile_pos) 
!= 2) {
+               int scanned = sscanf(line, "%*s %*s %*s %s",
+                               stable_heapfile + stable_heapfile_pos);
+               if (scanned != 1) {
                        GDKerror("Couldn't parse %s line: %s", bbpdir, line);
                        goto end;
                }
-               strcpy(alt_heapfile + alt_heapfile_pos, heapfile + 
heapfile_pos);
-               ret = snapshot_one_bat(plan, heapfile, alt_heapfile, 
strlen(db_dir) + 1);
+               char *last_component = strrchr(stable_heapfile, '/');
+               assert(last_component);
+               strcpy(bak_heapfile + bak_heapfile_pos, last_component);
+               ret = snapshot_one_bat(plan, bak_heapfile, stable_heapfile, 
strlen(db_dir) + 1);
                if (ret != GDK_SUCCEED)
                        goto end;
        }
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to