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