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]