commit 14bcc0f

default  ·  2022-11-23 12:49:30 +0000 UTC
parent 3e3e091
New db_layout 2.1.
1 files changed,  +19, -8
M data.c
M data.c
+19, -8
 1@@ -13,7 +13,7 @@
 2 #include <glob.h>
 3 #include <sys/stat.h>
 4 
 5-double db_layout = 2.0;
 6+double db_layout = 2.1;
 7 
 8 
 9 int db_upgrade(d_char **error);
10@@ -1246,25 +1246,34 @@ int db_upgrade(d_char **error)
11 
12     do {
13         char *layout = xs_dict_get(srv_config, "layout");
14+        double nf;
15 
16-        f = xs_number_get(layout);
17+        f = nf = xs_number_get(layout);
18 
19         if (f < 2.0) {
20-            *error = xs_fmt("ERROR: unsupported old disk layout %lf\n", f);
21+            *error = xs_fmt("ERROR: unsupported old disk layout %1.1lf\n", f);
22             ret    = 0;
23             break;
24         }
25-/*        else
26+        else
27         if (f < 2.1) {
28-            srv_log(xs_dup("upgrading db layout to version 2.1"));
29-
30             xs *dir = xs_fmt("%s/object", srv_basedir);
31             mkdir(dir, 0755);
32 
33-            xs *nv = xs_number_new(2.1);
34+            nf = 2.1;
35+        }
36+
37+        if (f < nf) {
38+            f          = nf;
39+            xs *nv     = xs_number_new(f);
40             srv_config = xs_dict_set(srv_config, "layout", nv);
41+
42+            srv_log(xs_fmt("upgraded db layout to version %1.1lf", f));
43             changed++;
44-        }*/
45+        }
46+        else
47+            break;
48+
49     } while (f < db_layout);
50 
51     if (f > db_layout) {
52@@ -1281,6 +1290,8 @@ int db_upgrade(d_char **error)
53             xs *j = xs_json_dumps_pp(srv_config, 4);
54             fwrite(j, strlen(j), 1, f);
55             fclose(f);
56+
57+            srv_log(xs_fmt("upgraded db %s after %d changes", fn, changed));
58         }
59         else
60             ret = 0;