Changeset: ec63f71ee3ed for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ec63f71ee3ed
Modified Files:
        gdk/gdk_logger.c
        gdk/gdk_logger_internals.h
        gdk/gdk_logger_old.c
        sql/storage/bat/bat_logger.c
        sql/storage/store.c
Branch: no_type_bat
Log Message:

Implemented upgrade for removal of BAT type.
We have a new SQL catalog version number.


diffs (164 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -881,19 +881,19 @@ la_bat_create(logger *lg, logaction *la,
 }
 
 static gdk_return
-log_write_new_types(logger *lg, FILE *fp, bool append)
+log_write_new_types(logger *lg, FILE *fp)
 {
        bte id = 0;
 
        /* write types and insert into bats */
+       memset(lg->type_id, -1, sizeof(lg->type_id));
+       memset(lg->type_nr, 255, sizeof(lg->type_nr));
        /* first the fixed sized types */
        for (int i = 0; i < GDKatomcnt; i++) {
                if (ATOMvarsized(i))
                        continue;
-               if (append) {
-                       lg->type_id[i] = id;
-                       lg->type_nr[id] = i;
-               }
+               lg->type_id[i] = id;
+               lg->type_nr[id] = i;
                if (fprintf(fp, "%d,%s\n", id, BATatoms[i].name) < 0)
                        return GDK_FAIL;
                id++;
@@ -903,10 +903,8 @@ log_write_new_types(logger *lg, FILE *fp
        for (int i = 0; i < GDKatomcnt; i++) {
                if (!ATOMvarsized(i))
                        continue;
-               if (append) {
-                       lg->type_id[i] = id;
-                       lg->type_nr[256 + id] = i;
-               }
+               lg->type_id[i] = id;
+               lg->type_nr[256 + id] = i;
                if (fprintf(fp, "%d,%s\n", id, BATatoms[i].name) < 0)
                        return GDK_FAIL;
                id++;
@@ -1036,13 +1034,15 @@ tr_commit(logger *lg, trans *tr)
 }
 
 static gdk_return
-log_read_types_file(logger *lg, FILE *fp)
+log_read_types_file(logger *lg, FILE *fp, int version)
 {
        int id = 0;
        char atom_name[IDLENGTH];
 
        /* scanf should use IDLENGTH somehow */
        while (fscanf(fp, "%d,%63s\n", &id, atom_name) == 2) {
+               if (version < 52303 && strcmp(atom_name, "BAT") == 0)
+                       continue;
                int i = ATOMindex(atom_name);
 
                if (id < -127 || id > 127 || i < 0) {
@@ -1057,7 +1057,7 @@ log_read_types_file(logger *lg, FILE *fp
 
 
 gdk_return
-log_create_types_file(logger *lg, const char *filename, bool append)
+log_create_types_file(logger *lg, const char *filename)
 {
        FILE *fp;
 
@@ -1073,7 +1073,7 @@ log_create_types_file(logger *lg, const 
                return GDK_FAIL;
        }
 
-       if (log_write_new_types(lg, fp, append) != GDK_SUCCEED) {
+       if (log_write_new_types(lg, fp) != GDK_SUCCEED) {
                fclose(fp);
                GDKerror("writing log file %s failed", filename);
                if (MT_remove(filename) < 0)
@@ -1544,7 +1544,7 @@ check_version(logger *lg, FILE *fp, cons
                fclose(fp);
                return GDK_FAIL;
        }
-       if (log_read_types_file(lg, fp) != GDK_SUCCEED) {
+       if (log_read_types_file(lg, fp, version) != GDK_SUCCEED) {
                fclose(fp);
                return GDK_FAIL;
        }
@@ -2106,7 +2106,7 @@ log_load(const char *fn, const char *log
                                GDKerror("cannot create directory for log file 
%s\n", filename);
                                goto error;
                        }
-                       if (log_create_types_file(lg, filename, true) != 
GDK_SUCCEED)
+                       if (log_create_types_file(lg, filename) != GDK_SUCCEED)
                                goto error;
                }
 
@@ -2284,7 +2284,7 @@ log_load(const char *fn, const char *log
                                TRC_CRITICAL(GDK, "couldn't move log to 
log.bak\n");
                                return GDK_FAIL;
                        }
-                       if (log_create_types_file(lg, filename, false) != 
GDK_SUCCEED) {
+                       if (log_create_types_file(lg, filename) != GDK_SUCCEED) 
{
                                TRC_CRITICAL(GDK, "couldn't write new log\n");
                                return GDK_FAIL;
                        }
diff --git a/gdk/gdk_logger_internals.h b/gdk/gdk_logger_internals.h
--- a/gdk/gdk_logger_internals.h
+++ b/gdk/gdk_logger_internals.h
@@ -124,6 +124,6 @@ struct old_logger {
 };
 
 gdk_return old_logger_load(logger *lg, const char *fn, const char *logdir, 
FILE *fp, int version, const char *filename);
-gdk_return log_create_types_file(logger *lg, const char *filename, bool 
append);
+gdk_return log_create_types_file(logger *lg, const char *filename);
 
 #endif /* _LOGGER_INTERNALS_H_ */
diff --git a/gdk/gdk_logger_old.c b/gdk/gdk_logger_old.c
--- a/gdk/gdk_logger_old.c
+++ b/gdk/gdk_logger_old.c
@@ -1788,7 +1788,7 @@ old_logger_destroy(old_logger *lg)
                GDKfree(subcommit);
                return rc;
        }
-       if ((rc = log_create_types_file(lg->lg, lg->filename, true)) != 
GDK_SUCCEED) {
+       if ((rc = log_create_types_file(lg->lg, lg->filename)) != GDK_SUCCEED) {
                TRC_CRITICAL(GDK, "logger_destroy failed\n");
                GDKfree(subcommit);
                return rc;
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
@@ -23,6 +23,7 @@
 #define CATALOG_OCT2020 52205  /* first in Oct2020 */
 #define CATALOG_JUL2021 52300  /* first in Jul2021 */
 #define CATALOG_JAN2022 52301  /* first in Jan2022 */
+#define CATALOG_SEP2022 52302  /* first in Sep2022 */
 
 /* Note, CATALOG version 52300 is the first one where the basic system
  * tables (the ones created in store.c) have fixed and unchangeable
@@ -83,6 +84,14 @@ bl_preversion(sqlstore *store, int oldve
        }
 #endif
 
+#ifdef CATALOG_SEP2022
+       if (oldversion == CATALOG_SEP2022) {
+               /* upgrade to default releases */
+               store->catalog_version = oldversion;
+               return GDK_SUCCEED;
+       }
+#endif
+
        return GDK_FAIL;
 }
 
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -23,7 +23,7 @@
 #include "bat/bat_logger.h"
 
 /* version 05.23.02 of catalog */
-#define CATALOG_VERSION 52302  /* first in Sep2022 */
+#define CATALOG_VERSION 52303  /* first after Dec2023 */
 
 ulng
 store_function_counter(sqlstore *store)
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to