Changeset: 0d06dda34d2d for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/0d06dda34d2d Modified Files: clients/Tests/exports.stable.out gdk/ChangeLog gdk/gdk.h gdk/gdk_bbp.c gdk/gdk_bbp.h gdk/gdk_logger.c gdk/gdk_logger_old.c gdk/gdk_private.h gdk/gdk_tm.c monetdb5/modules/mal/querylog.c sql/backends/monet5/sql.c sql/backends/monet5/sql_upgrades.c sql/storage/bat/bat_logger.c Branch: default Log Message:
Get rid of transaction ID in BBP.dir file. diffs (truncated from 446 to 300 lines): diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out --- a/clients/Tests/exports.stable.out +++ b/clients/Tests/exports.stable.out @@ -215,7 +215,7 @@ BBPrec *BBP[N_BBPINIT]; gdk_return BBPaddfarm(const char *dirname, uint32_t rolemask, bool logerror); void BBPcold(bat i); int BBPfix(bat b); -unsigned BBPheader(FILE *fp, int *lineno, bat *bbpsize, lng *logno, lng *transid, bool allow_hge_upgrade); +unsigned BBPheader(FILE *fp, int *lineno, bat *bbpsize, lng *logno, bool allow_hge_upgrade); bat BBPindex(const char *nme); gdk_return BBPjson_upgrade(json_storage_conversion); void BBPkeepref(BAT *b) __attribute__((__nonnull__(1))); @@ -227,7 +227,6 @@ int BBPrelease(bat b); int BBPrename(BAT *b, const char *nme); int BBPretain(bat b); gdk_return BBPsave(BAT *b); -gdk_return BBPsync(int cnt, bat *restrict subcommit, BUN *restrict sizes, lng logno, lng transid); void BBPtmlock(void); void BBPtmunlock(void); int BBPunfix(bat b); @@ -416,7 +415,7 @@ void STRMPdestroy(BAT *b); BAT *STRMPfilter(BAT *b, BAT *s, const char *q, const bool keep_nils); bool THRhighwater(void); gdk_return TMsubcommit(BAT *bl) __attribute__((__warn_unused_result__)); -gdk_return TMsubcommit_list(bat *restrict subcommit, BUN *restrict sizes, int cnt, lng logno, lng transid) __attribute__((__warn_unused_result__)); +gdk_return TMsubcommit_list(bat *restrict subcommit, BUN *restrict sizes, int cnt, lng logno) __attribute__((__warn_unused_result__)); void VALclear(ValPtr v); int VALcmp(const ValRecord *p, const ValRecord *q); void *VALconvert(int typ, ValPtr t); diff --git a/gdk/ChangeLog b/gdk/ChangeLog --- a/gdk/ChangeLog +++ b/gdk/ChangeLog @@ -1,6 +1,9 @@ # ChangeLog file for GDK # This file is updated with Maddlog +* Tue Feb 6 2024 Sjoerd Mullender <sjo...@acm.org> +- The SQL transaction ID is no longer saved in the BBP.dir file. + * Wed Jan 3 2024 Sjoerd Mullender <sjo...@acm.org> - Made some changes to the TIMEOUT macros. Most importantly, they now get a pointer to a QryCtx structure as argument instead of the diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -2104,7 +2104,7 @@ BUNtoid(BAT *b, BUN p) */ gdk_export gdk_return TMsubcommit(BAT *bl) __attribute__((__warn_unused_result__)); -gdk_export gdk_return TMsubcommit_list(bat *restrict subcommit, BUN *restrict sizes, int cnt, lng logno, lng transid) +gdk_export gdk_return TMsubcommit_list(bat *restrict subcommit, BUN *restrict sizes, int cnt, lng logno) __attribute__((__warn_unused_result__)); /* diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -134,7 +134,6 @@ static void BBPcallbacks(void); /* two lngs of extra info in BBP.dir */ /* these two are atomic because of their use in log_new() */ static ATOMIC_TYPE BBPlogno = ATOMIC_VAR_INIT(0); -static ATOMIC_TYPE BBPtransid = ATOMIC_VAR_INIT(0); #define BBPtmpcheck(s) (strncmp(s, "tmp_", 4) == 0) @@ -182,12 +181,6 @@ getBBPlogno(void) return (lng) ATOMIC_GET(&BBPlogno); } -lng -getBBPtransid(void) -{ - return (lng) ATOMIC_GET(&BBPtransid); -} - /* * @+ BBP Consistency and Concurrency @@ -1016,7 +1009,7 @@ BBPcheckbats(unsigned bbpversion) #endif unsigned -BBPheader(FILE *fp, int *lineno, bat *bbpsize, lng *logno, lng *transid, bool allow_hge_upgrade) +BBPheader(FILE *fp, int *lineno, bat *bbpsize, lng *logno, bool allow_hge_upgrade) { char buf[BUFSIZ]; int sz, ptrsize, oidsize, intsize; @@ -1090,12 +1083,14 @@ BBPheader(FILE *fp, int *lineno, bat *bb TRC_CRITICAL(GDK, "short BBP"); return 0; } - if (sscanf(buf, "BBPinfo=" LLSCN " " LLSCN, logno, transid) != 2) { + if (bbpversion <= GDKLIBRARY_STATUS ? + sscanf(buf, "BBPinfo=" LLSCN " %*d", logno) != 1 : + sscanf(buf, "BBPinfo=" LLSCN, logno) != 1) { TRC_CRITICAL(GDK, "no info value found\n"); return 0; } } else { - *logno = *transid = 0; + *logno = 0; } return bbpversion; } @@ -1736,7 +1731,7 @@ BBPjson_upgrade(json_storage_conversion } BBPunlock(); if (nupd > 1 && - TMsubcommit_list(upd, NULL, nupd, -1, -1) != GDK_SUCCEED) { + TMsubcommit_list(upd, NULL, nupd, -1) != GDK_SUCCEED) { TRC_CRITICAL(GDK, "failed to commit changes\n"); GDKfree(upd); return GDK_FAIL; @@ -1964,16 +1959,14 @@ BBPinit(bool allow_hge_upgrade) if (GDKinmemory(0)) { bbpversion = GDKLIBRARY; } else { - lng logno, transid; - bbpversion = BBPheader(fp, &lineno, &bbpsize, &logno, &transid, allow_hge_upgrade); + lng logno; + bbpversion = BBPheader(fp, &lineno, &bbpsize, &logno, allow_hge_upgrade); if (bbpversion == 0) { ATOMIC_SET(&GDKdebug, dbg); return GDK_FAIL; } assert(bbpversion > GDKLIBRARY_MINMAX_POS || logno == 0); - assert(bbpversion > GDKLIBRARY_MINMAX_POS || transid == 0); ATOMIC_SET(&BBPlogno, logno); - ATOMIC_SET(&BBPtransid, transid); } /* allocate BBP records */ @@ -2352,16 +2345,16 @@ new_bbpentry(FILE *fp, bat i, BUN size, } static gdk_return -BBPdir_header(FILE *f, int n, lng logno, lng transid) +BBPdir_header(FILE *f, int n, lng logno) { - if (fprintf(f, "BBP.dir, GDKversion %u\n%d %d %d\nBBPsize=%d\nBBPinfo=" LLFMT " " LLFMT "\n", + if (fprintf(f, "BBP.dir, GDKversion %u\n%d %d %d\nBBPsize=%d\nBBPinfo=" LLFMT "\n", GDKLIBRARY, SIZEOF_SIZE_T, SIZEOF_OID, #ifdef HAVE_HGE SIZEOF_HGE #else SIZEOF_LNG #endif - , n, logno, transid) < 0 || + , n, logno) < 0 || ferror(f)) { GDKsyserror("Writing BBP.dir header failed\n"); return GDK_FAIL; @@ -2370,12 +2363,11 @@ BBPdir_header(FILE *f, int n, lng logno, } static gdk_return -BBPdir_first(bool subcommit, lng logno, lng transid, - FILE **obbpfp, FILE **nbbpfp) +BBPdir_first(bool subcommit, lng logno, FILE **obbpfp, FILE **nbbpfp) { FILE *obbpf = NULL, *nbbpf = NULL; int n = 0; - lng ologno, otransid; + lng ologno; if (obbpfp) *obbpfp = NULL; @@ -2410,7 +2402,7 @@ BBPdir_first(bool subcommit, lng logno, } /* fourth line contains BBPinfo */ if (fgets(buf, sizeof(buf), obbpf) == NULL || - sscanf(buf, "BBPinfo=" LLSCN " " LLSCN, &ologno, &otransid) != 2) { + sscanf(buf, "BBPinfo=" LLSCN, &ologno) != 1) { GDKerror("cannot read BBPinfo in backup BBP.dir."); goto bailout; } @@ -2421,7 +2413,7 @@ BBPdir_first(bool subcommit, lng logno, TRC_DEBUG(IO_, "writing BBP.dir (%d bats).\n", n); - if (BBPdir_header(nbbpf, n, logno, transid) != GDK_SUCCEED) { + if (BBPdir_header(nbbpf, n, logno) != GDK_SUCCEED) { goto bailout; } @@ -2545,7 +2537,7 @@ BBPdir_init(void) FILE *fp; gdk_return rc; - rc = BBPdir_first(false, 0, 0, NULL, &fp); + rc = BBPdir_first(false, 0, NULL, &fp); if (rc == GDK_SUCCEED) rc = BBPdir_last(-1, NULL, 0, NULL, fp); return rc; @@ -3962,7 +3954,7 @@ BBPcheckBBPdir(void) int lineno = 0; bat bbpsize = 0; unsigned bbpversion; - lng logno, transid; + lng logno; fp = GDKfileopen(0, BAKDIR, "BBP", "dir", "r"); assert(fp != NULL); @@ -3972,7 +3964,7 @@ BBPcheckBBPdir(void) if (fp == NULL) return; } - bbpversion = BBPheader(fp, &lineno, &bbpsize, &logno, &transid, false); + bbpversion = BBPheader(fp, &lineno, &bbpsize, &logno, false); if (bbpversion == 0) { fclose(fp); return; /* error reading file */ @@ -4044,7 +4036,7 @@ BBPcheckBBPdir(void) * The BBP.dir is also moved into the BAKDIR. */ gdk_return -BBPsync(int cnt, bat *restrict subcommit, BUN *restrict sizes, lng logno, lng transid) +BBPsync(int cnt, bat *restrict subcommit, BUN *restrict sizes, lng logno) { gdk_return ret = GDK_SUCCEED; lng t0 = 0, t1 = 0; @@ -4103,8 +4095,7 @@ BBPsync(int cnt, bat *restrict subcommit /* PHASE 2: save the repository and write new BBP.dir file */ if (ret == GDK_SUCCEED) { - ret = BBPdir_first(subcommit != NULL, logno, transid, - &obbpf, &nbbpf); + ret = BBPdir_first(subcommit != NULL, logno, &obbpf, &nbbpf); } for (int idx = 1; ret == GDK_SUCCEED && idx < cnt; idx++) { @@ -4199,7 +4190,6 @@ BBPsync(int cnt, bat *restrict subcommit /* AFTERMATH */ if (ret == GDK_SUCCEED) { ATOMIC_SET(&BBPlogno, logno); /* the new value */ - ATOMIC_SET(&BBPtransid, transid); backup_files = subcommit ? (backup_files - backup_subdir) : 0; backup_dir = backup_subdir = 0; if (GDKremovedir(0, DELDIR) != GDK_SUCCEED) diff --git a/gdk/gdk_bbp.h b/gdk/gdk_bbp.h --- a/gdk/gdk_bbp.h +++ b/gdk/gdk_bbp.h @@ -61,7 +61,7 @@ #define BBPTRIM_ALL (((size_t)1) << (sizeof(size_t)*8 - 2)) /* very large positive size_t */ gdk_export bat getBBPsize(void); /* current occupied size of BBP array */ -gdk_export unsigned BBPheader(FILE *fp, int *lineno, bat *bbpsize, lng *logno, lng *transid, bool allow_hge_upgrade); +gdk_export unsigned BBPheader(FILE *fp, int *lineno, bat *bbpsize, lng *logno, bool allow_hge_upgrade); gdk_export int BBPreadBBPline(FILE *fp, unsigned bbpversion, int *lineno, BAT *bn, #ifdef GDKLIBRARY_HASHASH int *hashash, @@ -79,7 +79,6 @@ gdk_export int BBPrename(BAT *b, const c gdk_export bat BBPindex(const char *nme); /* swapping interface */ -gdk_export gdk_return BBPsync(int cnt, bat *restrict subcommit, BUN *restrict sizes, lng logno, lng transid); gdk_export int BBPfix(bat b); gdk_export int BBPunfix(bat b); static inline void diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -1903,7 +1903,7 @@ bm_subcommit(logger *lg, logged_range *p log_unlock(lg); TRC_DEBUG_IF(WAL) t0 = GDKusec(); - res = TMsubcommit_list(n, cnts ? sizes : NULL, i, lg->saved_id, lg->saved_tid); + res = TMsubcommit_list(n, cnts ? sizes : NULL, i, lg->saved_id); TRC_DEBUG(WAL, "subcommit " LLFMT "usec\n", GDKusec() - t0); if (res == GDK_SUCCEED) { /* now cleanup */ for (i = 0; i < rcnt; i++) { @@ -2361,7 +2361,6 @@ log_new(int debug, const char *fn, const .id = 0, .saved_id = getBBPlogno(), /* get saved log numer from bbp */ - .saved_tid = (int) getBBPtransid(), /* get saved transaction id from bbp */ }; /* probably open file and check version first, then call call old logger code */ 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 @@ -1795,7 +1795,7 @@ old_logger_destroy(old_logger *lg) } lg->lg->id = (ulng) lg->id; lg->lg->saved_id = lg->lg->id; - rc = TMsubcommit_list(subcommit, NULL, i, lg->lg->saved_id, lg->lg->saved_tid); + rc = TMsubcommit_list(subcommit, NULL, i, lg->lg->saved_id); GDKfree(subcommit); if (rc != GDK_SUCCEED) { TRC_CRITICAL(GDK, "logger_destroy failed\n"); diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h --- a/gdk/gdk_private.h +++ b/gdk/gdk_private.h @@ -116,6 +116,8 @@ void BBPrelinquish(void) __attribute__((__visibility__("hidden"))); int BBPselectfarm(role_t role, int type, enum heaptype hptype) __attribute__((__visibility__("hidden"))); +gdk_return BBPsync(int cnt, bat *restrict subcommit, BUN *restrict sizes, lng logno) + __attribute__((__visibility__("hidden"))); _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org