Changeset: ebc14728f538 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ebc14728f538
Modified Files:
        sql/server/rel_dump.c
        sql/server/sql_parser.y
        tools/mserver/mserver5.c
Branch: parquet
Log Message:

merged with default


diffs (truncated from 1621 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
@@ -272,7 +272,7 @@ void GDKclrerr(void);
 gdk_return GDKcopyenv(BAT **key, BAT **val, bool writable);
 gdk_return GDKcreatedir(const char *nme);
 gdk_return GDKcreatesem(int id, int count, int *semid);
-int GDKdebug;
+ATOMIC_TYPE GDKdebug;
 bool GDKembedded(void);
 bool GDKexiting(void);
 _Noreturn void GDKfatal(_In_z_ _Printf_format_string_ const char *format, ...) 
__attribute__((__format__(__printf__, 1, 2)));
@@ -281,7 +281,7 @@ bit GDKfataljumpenable;
 str GDKfatalmsg;
 char *GDKfilepath(int farmid, const char *dir, const char *nme, const char 
*ext);
 void GDKfree(void *blk);
-int GDKgetdebug(void);
+unsigned GDKgetdebug(void);
 const char *GDKgetenv(const char *name);
 int GDKgetenv_int(const char *name, int def);
 bool GDKgetenv_istext(const char *name, const char *text);
@@ -315,7 +315,7 @@ gdk_return GDKrebuild_segment_tree(oid n
 gdk_return GDKreleasemmap(void *ptr, size_t size, size_t id);
 gdk_return GDKreleasesem(int sem_id);
 void GDKreset(int status);
-void GDKsetdebug(int debug);
+void GDKsetdebug(unsigned debug);
 gdk_return GDKsetenv(const char *name, const char *value);
 void GDKsetmallocsuccesscount(lng count);
 ssize_t GDKstrFromStr(unsigned char *restrict dst, const unsigned char 
*restrict src, ssize_t len, char quote);
@@ -559,7 +559,7 @@ gdk_return log_tend(logger *lg);
 gdk_return log_tflush(logger *lg, ulng log_file_id, ulng commit_ts);
 gdk_return log_tsequence(logger *lg, int seq, lng id);
 gdk_return log_tstart(logger *lg, bool flushnow, ulng *log_file_id);
-log_level_t lvl_per_component[];
+ATOMIC_TYPE lvl_per_component[];
 void *mdlopen(const char *library, int mode);
 const char *mercurial_revision(void) __attribute__((__const__));
 int mo_add_option(opt **Set, int setlen, opt_kind kind, const char *name, 
const char *value);
diff --git a/gdk/ChangeLog.Sep2022 b/gdk/ChangeLog.Sep2022
--- a/gdk/ChangeLog.Sep2022
+++ b/gdk/ChangeLog.Sep2022
@@ -1,6 +1,10 @@
 # ChangeLog file for GDK
 # This file is updated with Maddlog
 
+* Tue Apr 25 2023 Sjoerd Mullender <sjo...@acm.org>
+- Fixed parsing of the BBP.dir file when BAT ids grow larger than 2**24
+  (i.e. 100000000 in octal).
+
 * Thu Apr 20 2023 Sjoerd Mullender <sjo...@acm.org>
 - Fixed yet another occurrence of a missing .tailN file.  This one could
   happen if a string bat was appended to in stages so that between appends
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -380,40 +380,40 @@ gdk_export _Noreturn void GDKfatal(_In_z
    for a documentation of the following debug options.
 */
 
-#define THRDMASK       (1)
-#define CHECKMASK      (1<<1)
-#define CHECKDEBUG     if (GDKdebug & CHECKMASK)
-#define PROPMASK       (1<<3)  /* unused */
-#define PROPDEBUG      if (GDKdebug & PROPMASK) /* unused */
-#define IOMASK         (1<<4)
-#define BATMASK                (1<<5)
-#define PARMASK                (1<<7)
-#define TMMASK         (1<<9)
-#define TEMMASK                (1<<10)
-#define PERFMASK       (1<<12)
-#define DELTAMASK      (1<<13)
-#define LOADMASK       (1<<14)
-#define PUSHCANDMASK   (1<<15) /* used in opt_pushselect.c */
-#define TAILCHKMASK    (1<<16) /* check .tail file size during commit */
-#define ACCELMASK      (1<<20)
-#define ALGOMASK       (1<<21)
+#define THRDMASK       (1U)
+#define CHECKMASK      (1U<<1)
+#define CHECKDEBUG     if (ATOMIC_GET(&GDKdebug) & CHECKMASK)
+#define PROPMASK       (1U<<3) /* unused */
+#define PROPDEBUG      if (ATOMIC_GET(&GDKdebug) & PROPMASK) /* unused */
+#define IOMASK         (1U<<4)
+#define BATMASK                (1U<<5)
+#define PARMASK                (1U<<7)
+#define TMMASK         (1U<<9)
+#define TEMMASK                (1U<<10)
+#define PERFMASK       (1U<<12)
+#define DELTAMASK      (1U<<13)
+#define LOADMASK       (1U<<14)
+#define PUSHCANDMASK   (1U<<15)        /* used in opt_pushselect.c */
+#define TAILCHKMASK    (1U<<16)        /* check .tail file size during commit 
*/
+#define ACCELMASK      (1U<<20)
+#define ALGOMASK       (1U<<21)
 
-#define NOSYNCMASK     (1<<24)
+#define NOSYNCMASK     (1U<<24)
 
-#define DEADBEEFMASK   (1<<25)
-#define DEADBEEFCHK    if (!(GDKdebug & DEADBEEFMASK))
+#define DEADBEEFMASK   (1U<<25)
+#define DEADBEEFCHK    if (!(ATOMIC_GET(&GDKdebug) & DEADBEEFMASK))
 
-#define ALLOCMASK      (1<<26)
+#define ALLOCMASK      (1U<<26)
 
 /* M5, only; cf.,
  * monetdb5/mal/mal.h
  */
-#define OPTMASK                (1<<27)
+#define OPTMASK                (1U<<27)
 
-#define HEAPMASK       (1<<28)
+#define HEAPMASK       (1U<<28)
 
-#define FORCEMITOMASK  (1<<29)
-#define FORCEMITODEBUG if (GDKdebug & FORCEMITOMASK)
+#define FORCEMITOMASK  (1U<<29)
+#define FORCEMITODEBUG if (ATOMIC_GET(&GDKdebug) & FORCEMITOMASK)
 
 #ifndef TRUE
 #define TRUE           true
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -611,6 +611,7 @@ BATclear(BAT *b, bool force)
                                .farmid = b->tvheap->farmid,
                                .parentid = b->tvheap->parentid,
                                .dirty = true,
+                               .hasfile = b->tvheap->hasfile,
                        };
                        strcpy_len(th->filename, b->tvheap->filename, 
sizeof(th->filename));
                        if (ATOMheap(b->ttype, th, 0) != GDK_SUCCEED) {
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -647,14 +647,14 @@ BBPreadBBPline(FILE *fp, unsigned bbpver
 
        if (bbpversion <= GDKLIBRARY_HSIZE ?
            sscanf(buf,
-                  "%" SCNu64 " %u %128s %19s %u %" SCNu64
+                  "%" SCNu64 " %u %128s %23s %u %" SCNu64
                   " %" SCNu64 " %" SCNu64
                   "%n",
                   &batid, &status, batname, filename,
                   &properties, &count, &capacity, &base,
                   &nread) < 8 :
            sscanf(buf,
-                  "%" SCNu64 " %u %128s %19s %u %" SCNu64
+                  "%" SCNu64 " %u %128s %23s %u %" SCNu64
                   " %" SCNu64
                   "%n",
                   &batid, &status, batname, filename,
@@ -1585,9 +1585,9 @@ BBPinit(void)
        bat nhashbats = 0;
        gdk_return res = GDK_SUCCEED;
 #endif
-       int dbg = GDKdebug;
-
-       GDKdebug &= ~TAILCHKMASK;
+       ATOMIC_BASE_TYPE dbg = ATOMIC_GET(&GDKdebug);
+
+       ATOMIC_AND(&GDKdebug, ~TAILCHKMASK);
 
        /* the maximum number of BATs allowed in the system and the
         * size of the "physical" array are linked in a complicated
@@ -1606,7 +1606,7 @@ BBPinit(void)
                if ((bbpdirstr = GDKfilepath(0, BATDIR, "BBP", "dir")) == NULL) 
{
                        TRC_CRITICAL(GDK, "GDKmalloc failed\n");
                        BBPtmunlock();
-                       GDKdebug = dbg;
+                       ATOMIC_SET(&GDKdebug, dbg);
                        return GDK_FAIL;
                }
 
@@ -1614,7 +1614,7 @@ BBPinit(void)
                        GDKfree(bbpdirstr);
                        TRC_CRITICAL(GDK, "GDKmalloc failed\n");
                        BBPtmunlock();
-                       GDKdebug = dbg;
+                       ATOMIC_SET(&GDKdebug, dbg);
                        return GDK_FAIL;
                }
 
@@ -1623,7 +1623,7 @@ BBPinit(void)
                        GDKfree(backupbbpdirstr);
                        TRC_CRITICAL(GDK, "cannot remove directory %s\n", 
TEMPDIR);
                        BBPtmunlock();
-                       GDKdebug = dbg;
+                       ATOMIC_SET(&GDKdebug, dbg);
                        return GDK_FAIL;
                }
 
@@ -1632,7 +1632,7 @@ BBPinit(void)
                        GDKfree(backupbbpdirstr);
                        TRC_CRITICAL(GDK, "cannot remove directory %s\n", 
DELDIR);
                        BBPtmunlock();
-                       GDKdebug = dbg;
+                       ATOMIC_SET(&GDKdebug, dbg);
                        return GDK_FAIL;
                }
 
@@ -1642,7 +1642,7 @@ BBPinit(void)
                        GDKfree(backupbbpdirstr);
                        TRC_CRITICAL(GDK, "cannot properly recover_subdir 
process %s.", SUBDIR);
                        BBPtmunlock();
-                       GDKdebug = dbg;
+                       ATOMIC_SET(&GDKdebug, dbg);
                        return GDK_FAIL;
                }
 
@@ -1660,7 +1660,7 @@ BBPinit(void)
                                GDKfree(backupbbpdirstr);
                                TRC_CRITICAL(GDK, "cannot open recovered 
BBP.dir.");
                                BBPtmunlock();
-                               GDKdebug = dbg;
+                               ATOMIC_SET(&GDKdebug, dbg);
                                return GDK_FAIL;
                        }
                } else if ((fp = GDKfilelocate(0, "BBP", "r", "dir")) == NULL) {
@@ -1705,7 +1705,7 @@ BBPinit(void)
                lng logno, transid;
                bbpversion = BBPheader(fp, &lineno, &bbpsize, &logno, &transid);
                if (bbpversion == 0) {
-                       GDKdebug = dbg;
+                       ATOMIC_SET(&GDKdebug, dbg);
                        return GDK_FAIL;
                }
                assert(bbpversion > GDKLIBRARY_MINMAX_POS || logno == 0);
@@ -1716,7 +1716,7 @@ BBPinit(void)
 
        /* allocate BBP records */
        if (BBPextend(bbpsize) != GDK_SUCCEED) {
-               GDKdebug = dbg;
+               ATOMIC_SET(&GDKdebug, dbg);
                return GDK_FAIL;
        }
        ATOMIC_SET(&BBPsize, bbpsize);
@@ -1727,7 +1727,7 @@ BBPinit(void)
                                   , &hashbats, &nhashbats
 #endif
                            ) != GDK_SUCCEED) {
-                       GDKdebug = dbg;
+                       ATOMIC_SET(&GDKdebug, dbg);
                        return GDK_FAIL;
                }
                fclose(fp);
@@ -1743,7 +1743,7 @@ BBPinit(void)
                        GDKfree(hashbats);
 #endif
                        TRC_CRITICAL(GDK, "cannot properly prepare process 
%s.", BAKDIR);
-                       GDKdebug = dbg;
+                       ATOMIC_SET(&GDKdebug, dbg);
                        return rc;
                }
        }
@@ -1752,7 +1752,7 @@ BBPinit(void)
 #ifdef GDKLIBRARY_HASHASH
                GDKfree(hashbats);
 #endif
-               GDKdebug = dbg;
+               ATOMIC_SET(&GDKdebug, dbg);
                return GDK_FAIL;
        }
 
@@ -1765,7 +1765,7 @@ BBPinit(void)
 #ifdef GDKLIBRARY_HASHASH
                        GDKfree(hashbats);
 #endif
-                       GDKdebug = dbg;
+                       ATOMIC_SET(&GDKdebug, dbg);
                        return GDK_FAIL;
                }
                if (bbpversion <= GDKLIBRARY_TAILN) {
@@ -1778,7 +1778,7 @@ BBPinit(void)
 #ifdef GDKLIBRARY_HASHASH
                                GDKfree(hashbats);
 #endif
-                               GDKdebug = dbg;
+                               ATOMIC_SET(&GDKdebug, dbg);
                                return GDK_FAIL;
                        }
                        close(fd);
@@ -1799,7 +1799,7 @@ BBPinit(void)
 #ifdef GDKLIBRARY_HASHASH
                                GDKfree(hashbats);
 #endif
-                               GDKdebug = dbg;
+                               ATOMIC_SET(&GDKdebug, dbg);
                                return GDK_FAIL;
                        }
                }
@@ -1816,7 +1816,7 @@ BBPinit(void)
 
        if (bbpversion < GDKLIBRARY && TMcommit() != GDK_SUCCEED) {
                TRC_CRITICAL(GDK, "TMcommit failed\n");
-               GDKdebug = dbg;
+               ATOMIC_SET(&GDKdebug, dbg);
                return GDK_FAIL;
        }
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to