Changeset: 203052ceef0b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/203052ceef0b
Branch: Jul2021_debug
Log Message:

merged with jul2021


diffs (truncated from 629 to 300 lines):

diff --git a/cmake/monetdb-toolchain.cmake b/cmake/monetdb-toolchain.cmake
--- a/cmake/monetdb-toolchain.cmake
+++ b/cmake/monetdb-toolchain.cmake
@@ -51,6 +51,8 @@ function(monetdb_default_compiler_option
       add_option_if_available("-Wmissing-declarations")
       add_option_if_available("-Wmissing-format-attribute")
       add_option_if_available("-Wmissing-prototypes")
+      # need this for gcc 4.8.5 on CentOS 7:
+      add_option_if_available("-Wno-missing-braces")
       # need this for clang 9.1.0 on Darwin:
       add_option_if_available("-Wno-missing-field-initializers")
       add_option_if_available("-Wold-style-definition")
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1521,7 +1521,7 @@ BBPexit(void)
  * reclaimed as well.
  */
 static inline int
-heap_entry(FILE *fp, BATiter *bi, BUN size, BUN minpos, BUN maxpos)
+heap_entry(FILE *fp, BATiter *bi, BUN size, oid minpos, oid maxpos)
 {
        BAT *b = bi->b;
        size_t free = bi->hfree;
@@ -1569,8 +1569,8 @@ heap_entry(FILE *fp, BATiter *bi, BUN si
                       free,
                       bi->h->size,
                       0,
-                      minpos < size ? (oid) minpos : oid_nil,
-                      maxpos < size ? (oid) maxpos : oid_nil);
+                      (BUN) minpos < size ? minpos : oid_nil,
+                      (BUN) maxpos < size ? maxpos : oid_nil);
 }
 
 static inline int
@@ -1593,11 +1593,11 @@ vheap_entry(FILE *fp, BATiter *bi, BUN s
                        GDKfree(fname);
                }
        }
-       return fprintf(fp, " %zu %zu %d", bi->vhfree, bi->vh->size, 0);
+       return fprintf(fp, " %zu %zu %d", bi->vhfree, size == 0 ? 0 : 
bi->vh->size, 0);
 }
 
 static gdk_return
-new_bbpentry(FILE *fp, bat i, BUN size, BATiter *bi, BUN minpos, BUN maxpos)
+new_bbpentry(FILE *fp, bat i, BUN size, BATiter *bi, oid minpos, oid maxpos)
 {
 #ifndef NDEBUG
        assert(i > 0);
@@ -1725,7 +1725,7 @@ BBPdir_first(bool subcommit, lng logno, 
 static bat
 BBPdir_step(bat bid, BUN size, int n, char *buf, size_t bufsize,
            FILE **obbpfp, FILE *nbbpf, bool subcommit, BATiter *bi,
-           BUN minpos, BUN maxpos)
+           oid minpos, oid maxpos)
 {
        if (n < -1)             /* safety catch */
                return n;
@@ -3686,39 +3686,45 @@ BBPsync(int cnt, bat *restrict subcommit
 #ifndef NDEBUG
                                bi.locked = true;
 #endif
-                               const ValRecord *prop;
-                               prop = BATgetprop_nolock(bi.b, GDK_MIN_POS);
-                               if (prop)
-                                       minpos = prop->val.oval;
-                               prop = BATgetprop_nolock(bi.b, GDK_MAX_POS);
-                               if (prop)
-                                       maxpos = prop->val.oval;
-                               MT_lock_unset(&bi.b->theaplock);
-                               if (b) {
-                                       /* wait for BBPSAVING so that we
-                                        * can set it, wait for
-                                        * BBPUNLOADING before
-                                        * attempting to save */
-                                       for (;;) {
-                                               if (lock)
-                                                       
MT_lock_set(&GDKswapLock(i));
-                                               if (!(BBP_status(i) & 
(BBPSAVING|BBPUNLOADING)))
-                                                       break;
+                               assert(sizes == NULL || size <= bi.count);
+                               assert(sizes == NULL || bi.width == 0 || 
(bi.type == TYPE_msk ? ((size + 31) / 32) * 4 : size << bi.shift) <= bi.hfree);
+                               if (size > bi.count) /* includes sizes==NULL */
+                                       size = bi.count;
+                               if (size == 0) {
+                                       /* no need to save anything */
+                                       MT_lock_unset(&bi.b->theaplock);
+                               } else {
+                                       const ValRecord *prop;
+                                       prop = BATgetprop_nolock(bi.b, 
GDK_MIN_POS);
+                                       if (prop)
+                                               minpos = prop->val.oval;
+                                       prop = BATgetprop_nolock(bi.b, 
GDK_MAX_POS);
+                                       if (prop)
+                                               maxpos = prop->val.oval;
+                                       MT_lock_unset(&bi.b->theaplock);
+                                       if (b) {
+                                               /* wait for BBPSAVING so
+                                                * that we can set it,
+                                                * wait for BBPUNLOADING
+                                                * before attempting to
+                                                * save */
+                                               for (;;) {
+                                                       if (lock)
+                                                               
MT_lock_set(&GDKswapLock(i));
+                                                       if (!(BBP_status(i) & 
(BBPSAVING|BBPUNLOADING)))
+                                                               break;
+                                                       if (lock)
+                                                               
MT_lock_unset(&GDKswapLock(i));
+                                                       BBPspin(i, __func__, 
BBPSAVING|BBPUNLOADING);
+                                               }
+                                               BBP_status_on(i, BBPSAVING);
                                                if (lock)
                                                        
MT_lock_unset(&GDKswapLock(i));
-                                               BBPspin(i, __func__, 
BBPSAVING|BBPUNLOADING);
+                                               MT_rwlock_rdlock(&b->thashlock);
+                                               ret = BATsave_locked(b, &bi, 
size);
+                                               
MT_rwlock_rdunlock(&b->thashlock);
+                                               BBP_status_off(i, BBPSAVING);
                                        }
-                                       BBP_status_on(i, BBPSAVING);
-                                       if (lock)
-                                               MT_lock_unset(&GDKswapLock(i));
-                                       assert(sizes == NULL || size <= 
bi.count);
-                                       assert(sizes == NULL || bi.width == 0 
|| (bi.type == TYPE_msk ? ((size + 31) / 32) * 4 : size << bi.shift) <= 
bi.hfree);
-                                       if (size > bi.count)
-                                               size = bi.count;
-                                       MT_rwlock_rdlock(&b->thashlock);
-                                       ret = BATsave_locked(b, &bi, size);
-                                       MT_rwlock_rdunlock(&b->thashlock);
-                                       BBP_status_off(i, BBPSAVING);
                                }
                        } else {
                                bi = bat_iterator(NULL);
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -2316,7 +2316,7 @@ logger_flush(logger *lg, ulng ts)
 lng
 logger_changes(logger *lg)
 {
-       return (lg->id - lg->saved_id - 1);
+       return LOG_DISABLED(lg) ? 0 : (lg->id - lg->saved_id - 1);
 }
 
 int
diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c
--- a/gdk/gdk_storage.c
+++ b/gdk/gdk_storage.c
@@ -888,7 +888,9 @@ BATload_intern(bat bid, bool lock)
        /* LOAD bun heap */
        if (b->ttype != TYPE_void) {
                b->theap->storage = b->theap->newstorage = STORE_INVALID;
-               if (HEAPload(b->theap, b->theap->filename, NULL, 
b->batRestricted == BAT_READ) != GDK_SUCCEED) {
+               if ((b->batCount == 0 ?
+                    HEAPalloc(b->theap, b->batCapacity, b->twidth, 
ATOMsize(b->ttype)) :
+                    HEAPload(b->theap, b->theap->filename, NULL, 
b->batRestricted == BAT_READ)) != GDK_SUCCEED) {
                        HEAPfree(b->theap, false);
                        return NULL;
                }
@@ -905,7 +907,9 @@ BATload_intern(bat bid, bool lock)
        /* LOAD tail heap */
        if (ATOMvarsized(b->ttype)) {
                b->tvheap->storage = b->tvheap->newstorage = STORE_INVALID;
-               if (HEAPload(b->tvheap, nme, "theap", b->batRestricted == 
BAT_READ) != GDK_SUCCEED) {
+               if ((b->tvheap->free == 0 ?
+                    ATOMheap(b->ttype, b->tvheap, b->batCapacity) :
+                    HEAPload(b->tvheap, nme, "theap", b->batRestricted == 
BAT_READ)) != GDK_SUCCEED) {
                        HEAPfree(b->theap, false);
                        HEAPfree(b->tvheap, false);
                        return NULL;
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -2212,7 +2212,7 @@ store_apply_deltas(sqlstore *store)
        store_lock(store);
        ulng oldest = store_oldest_pending(store);
        store_unlock(store);
-       TRC_DEBUG(SQL_STORE, "Store aplly deltas (" ULLFMT ")\n", oldest-1);
+       TRC_DEBUG(SQL_STORE, "Store apply deltas (" ULLFMT ")\n", oldest-1);
        if (oldest)
            res = store->logger_api.flush(store, oldest-1);
        flusher.working = false;
@@ -2308,7 +2308,7 @@ store_manager(sqlstore *store)
        MT_lock_set(&store->flush);
 
        for (;;) {
-               int res;
+               int res = LOG_OK;
 
                if (ATOMIC_GET(&store->nr_active) == 0 &&
                        (store->debug&128 || ATOMIC_GET(&store->lastactive) + 
IDLE_TIME < (ATOMIC_BASE_TYPE) (GDKusec() / 1000000))) {
@@ -2339,7 +2339,7 @@ store_manager(sqlstore *store)
                        break;
 
                MT_thread_setworking("flushing");
-               while (store->logger_api.changes(store) > 0)
+               while (res == LOG_OK && store->logger_api.changes(store) > 0)
                        res = store_apply_deltas(store);
 
                if (res != LOG_OK) {
diff --git a/sql/test/pg_regress/Tests/date.test 
b/sql/test/pg_regress/Tests/date.test
--- a/sql/test/pg_regress/Tests/date.test
+++ b/sql/test/pg_regress/Tests/date.test
@@ -1253,8 +1253,10 @@ SELECT date '1/18/1999'
 statement error
 SELECT date '18/1/1999'
 
-statement error
+query T rowsort
 SELECT date '01/02/03'
+----
+0001-02-03
 
 statement error
 SELECT date '19990108'
@@ -1268,163 +1270,15 @@ SELECT date '1999.008'
 statement error
 SELECT date 'J2451187'
 
-statement error
+query T rowsort
 SELECT date 'January 8, 99 BC'
-
-statement error
-SELECT date '99-Jan-08'
-
-query T rowsort
-SELECT date '1999-Jan-08'
 ----
-1999-01-08
-
-statement error
-SELECT date '08-Jan-99'
-
-statement error
-SELECT date '08-Jan-1999'
-
-statement error
-SELECT date 'Jan-08-99'
-
-statement error
-SELECT date 'Jan-08-1999'
-
-statement error
-SELECT date '99-08-Jan'
-
-statement error
-SELECT date '1999-08-Jan'
-
-statement error
-SELECT date '99 Jan 08'
-
-query T rowsort
-SELECT date '1999 Jan 08'
-----
-1999-01-08
-
-statement error
-SELECT date '08 Jan 99'
-
-statement error
-SELECT date '08 Jan 1999'
-
-statement error
-SELECT date 'Jan 08 99'
-
-query T rowsort
-SELECT date 'Jan 08 1999'
-----
-1999-01-08
-
-statement error
-SELECT date '99 08 Jan'
-
-statement error
-SELECT date '1999 08 Jan'
-
-statement error
-SELECT date '99-01-08'
+0099-01-08
 
 query T rowsort
-SELECT date '1999-01-08'
-----
-1999-01-08
-
-statement error
-SELECT date '08-01-99'
-
-statement error
-SELECT date '08-01-1999'
-
-statement error
-SELECT date '01-08-99'
-
-statement error
-SELECT date '01-08-1999'
-
-statement error
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to