Changeset: d8eae374e99d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d8eae374e99d
Branch: extract_types
Log Message:
Merge with default.
diffs (truncated from 1864 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
@@ -574,7 +574,6 @@ void mo_print_options(opt *set, int setl
int mo_system_config(opt **Set, int setlen);
const oid oid_nil;
log_bid old_logger_find_bat(old_logger *lg, const char *name, char tpe, oid
id);
-gdk_return old_logger_load(logger *lg, const char *fn, const char *logdir,
FILE *fp, int version, const char *filename);
DIR *opendir(const char *dirname);
void print_trace(void);
ssize_t ptrFromStr(const char *src, size_t *len, ptr **dst, bool external);
diff --git a/common/utils/matomic.h b/common/utils/matomic.h
--- a/common/utils/matomic.h
+++ b/common/utils/matomic.h
@@ -161,7 +161,7 @@ typedef __declspec(align(8)) volatile AT
/* should we use _InterlockedExchangeAdd64(var, 0) instead? */
#endif
#define ATOMIC_SET(var, val) _InterlockedExchange64(var, (ATOMIC_BASE_TYPE)
(val))
-#define ATOMIC_XCG(var, val) _InterlockedExchange64(var, (ATOMIC_BASE_TYPE)
(val))
+#define ATOMIC_XCG(var, val) ((ATOMIC_BASE_TYPE) _InterlockedExchange64(var,
(ATOMIC_BASE_TYPE) (val)))
static inline bool
ATOMIC_CAS(ATOMIC_TYPE *var, ATOMIC_BASE_TYPE *exp, ATOMIC_BASE_TYPE des)
{
@@ -173,35 +173,35 @@ ATOMIC_CAS(ATOMIC_TYPE *var, ATOMIC_BASE
return false;
}
#define ATOMIC_CAS(var, exp, des) ATOMIC_CAS(var, exp, (ATOMIC_BASE_TYPE)
(des))
-#define ATOMIC_ADD(var, val) _InterlockedExchangeAdd64(var,
(ATOMIC_BASE_TYPE) (val))
-#define ATOMIC_SUB(var, val) _InterlockedExchangeAdd64(var, -(val))
-#define ATOMIC_INC(var) _InterlockedIncrement64(var)
-#define ATOMIC_DEC(var) _InterlockedDecrement64(var)
-#define ATOMIC_OR(var, val) _InterlockedOr64(var,
(ATOMIC_BASE_TYPE) (val))
-#define ATOMIC_AND(var, val) _InterlockedAnd64(var, (ATOMIC_BASE_TYPE) (val))
+#define ATOMIC_ADD(var, val) ((ATOMIC_BASE_TYPE)
_InterlockedExchangeAdd64(var, (LONG64) (val)))
+#define ATOMIC_SUB(var, val) ((ATOMIC_BASE_TYPE)
_InterlockedExchangeAdd64(var, -(LONG64) (val)))
+#define ATOMIC_INC(var) ((ATOMIC_BASE_TYPE)
_InterlockedIncrement64(var))
+#define ATOMIC_DEC(var) ((ATOMIC_BASE_TYPE)
_InterlockedDecrement64(var))
+#define ATOMIC_OR(var, val) ((ATOMIC_BASE_TYPE)
_InterlockedOr64(var, (ATOMIC_BASE_TYPE) (val)))
+#define ATOMIC_AND(var, val) ((ATOMIC_BASE_TYPE) _InterlockedAnd64(var,
(ATOMIC_BASE_TYPE) (val)))
#else
#ifdef DECLSPEC_NOINITALL
#define ATOMIC_GET(var) ((ATOMIC_BASE_TYPE)
_InlineInterlockedExchangeAdd64(var, 0))
#define ATOMIC_SET(var, val) _InlineInterlockedExchange64(var,
(ATOMIC_BASE_TYPE) (val))
-#define ATOMIC_XCG(var, val) _InlineInterlockedExchange64(var,
(ATOMIC_BASE_TYPE) (val))
-#define ATOMIC_ADD(var, val) _InlineInterlockedExchangeAdd64(var,
(ATOMIC_BASE_TYPE) (val))
-#define ATOMIC_SUB(var, val) _InlineInterlockedExchangeAdd64(var, -(val))
-#define ATOMIC_INC(var)
_InlineInterlockedIncrement64(var)
-#define ATOMIC_DEC(var)
_InlineInterlockedDecrement64(var)
-#define ATOMIC_OR(var, val) _InlineInterlockedOr64(var,
(ATOMIC_BASE_TYPE) (val))
-#define ATOMIC_AND(var, val) _InlineInterlockedAnd64(var, (ATOMIC_BASE_TYPE)
(val))
+#define ATOMIC_XCG(var, val) ((ATOMIC_BASE_TYPE)
_InlineInterlockedExchange64(var, (ATOMIC_BASE_TYPE) (val)))
+#define ATOMIC_ADD(var, val) ((ATOMIC_BASE_TYPE)
_InlineInterlockedExchangeAdd64(var, (LONG64) (val)))
+#define ATOMIC_SUB(var, val) ((ATOMIC_BASE_TYPE)
_InlineInterlockedExchangeAdd64(var, -(LONG64) (val)))
+#define ATOMIC_INC(var) ((ATOMIC_BASE_TYPE)
_InlineInterlockedIncrement64(var))
+#define ATOMIC_DEC(var) ((ATOMIC_BASE_TYPE)
_InlineInterlockedDecrement64(var))
+#define ATOMIC_OR(var, val) ((ATOMIC_BASE_TYPE)
_InlineInterlockedOr64(var, (ATOMIC_BASE_TYPE) (val)))
+#define ATOMIC_AND(var, val) ((ATOMIC_BASE_TYPE)
_InlineInterlockedAnd64(var, (ATOMIC_BASE_TYPE) (val)))
#else
#define ATOMIC_GET(var) ((ATOMIC_BASE_TYPE)
_InterlockedExchangeAdd64(var, 0))
#define ATOMIC_SET(var, val) _InterlockedExchange64(var, (ATOMIC_BASE_TYPE)
(val))
-#define ATOMIC_XCG(var, val) _InterlockedExchange64(var, (ATOMIC_BASE_TYPE)
(val))
-#define ATOMIC_ADD(var, val) _InterlockedExchangeAdd64(var,
(ATOMIC_BASE_TYPE) (val))
-#define ATOMIC_SUB(var, val) _InterlockedExchangeAdd64(var, -(val))
-#define ATOMIC_INC(var) _InterlockedIncrement64(var)
-#define ATOMIC_DEC(var) _InterlockedDecrement64(var)
-#define ATOMIC_OR(var, val) _InterlockedOr64(var,
(ATOMIC_BASE_TYPE) (val))
-#define ATOMIC_AND(var, val) _InterlockedAnd64(var, (ATOMIC_BASE_TYPE) (val))
+#define ATOMIC_XCG(var, val) ((ATOMIC_BASE_TYPE) _InterlockedExchange64(var,
(ATOMIC_BASE_TYPE) (val)))
+#define ATOMIC_ADD(var, val) ((ATOMIC_BASE_TYPE)
_InterlockedExchangeAdd64(var, (LONG64) (val)))
+#define ATOMIC_SUB(var, val) ((ATOMIC_BASE_TYPE)
_InterlockedExchangeAdd64(var, -(LONG64) (val)))
+#define ATOMIC_INC(var) ((ATOMIC_BASE_TYPE)
_InterlockedIncrement64(var))
+#define ATOMIC_DEC(var) ((ATOMIC_BASE_TYPE)
_InterlockedDecrement64(var))
+#define ATOMIC_OR(var, val) ((ATOMIC_BASE_TYPE)
_InterlockedOr64(var, (ATOMIC_BASE_TYPE) (val)))
+#define ATOMIC_AND(var, val) ((ATOMIC_BASE_TYPE) _InterlockedAnd64(var,
(ATOMIC_BASE_TYPE) (val)))
#endif
static inline bool
ATOMIC_CAS(ATOMIC_TYPE *var, ATOMIC_BASE_TYPE *exp, ATOMIC_BASE_TYPE des)
diff --git a/ctest/tools/monetdbe/Tests/example_proxy.SQL.py
b/ctest/tools/monetdbe/Tests/example_proxy.SQL.py
--- a/ctest/tools/monetdbe/Tests/example_proxy.SQL.py
+++ b/ctest/tools/monetdbe/Tests/example_proxy.SQL.py
@@ -24,7 +24,7 @@ lines = results.stdout.splitlines()
if len(lines) != 3:
print(results.stdout)
- print("Too many output lines.")
+ print("Received {} lines, expected 3".format(len(lines)))
exit(1)
def test_equal(expected, received):
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -541,6 +541,7 @@ typedef size_t BUN;
typedef enum {
PERSISTENT = 0,
TRANSIENT,
+ SYSTRANS,
} role_t;
/* Heap storage modes */
@@ -1568,46 +1569,51 @@ BATsettrivprop(BAT *b)
b->tnosorted = b->tnorevsorted = 0;
b->tnokey[0] = b->tnokey[1] = 0;
b->tunique_est = (double) b->batCount;
+ b->tkey = true;
if (ATOMlinear(b->ttype)) {
b->tsorted = true;
b->trevsorted = true;
- }
- b->tkey = true;
- if (b->batCount == 0) {
- b->tminpos = BUN_NONE;
- b->tmaxpos = BUN_NONE;
- b->tnonil = true;
- b->tnil = false;
- if (b->ttype == TYPE_oid) {
- b->tseqbase = 0;
- }
- } else if (b->ttype == TYPE_oid) {
- oid sqbs = ((const oid *) b->theap->base)[b->tbaseoff];
- if (is_oid_nil(sqbs)) {
- b->tnonil = false;
- b->tnil = true;
+ if (b->batCount == 0) {
+ b->tminpos = BUN_NONE;
+ b->tmaxpos = BUN_NONE;
+ b->tnonil = true;
+ b->tnil = false;
+ if (b->ttype == TYPE_oid) {
+ b->tseqbase = 0;
+ }
+ } else if (b->ttype == TYPE_oid) {
+ oid sqbs = ((const oid *)
b->theap->base)[b->tbaseoff];
+ if (is_oid_nil(sqbs)) {
+ b->tnonil = false;
+ b->tnil = true;
+ b->tminpos = BUN_NONE;
+ b->tmaxpos = BUN_NONE;
+ } else {
+ b->tnonil = true;
+ b->tnil = false;
+ b->tminpos = 0;
+ b->tmaxpos = 0;
+ }
+ b->tseqbase = sqbs;
+ } else if ((b->tvheap
+ ? ATOMcmp(b->ttype,
+ b->tvheap->base +
VarHeapVal(Tloc(b, 0), 0, b->twidth),
+ ATOMnilptr(b->ttype))
+ : ATOMcmp(b->ttype, Tloc(b, 0),
+ ATOMnilptr(b->ttype))) == 0) {
+ /* the only value is NIL */
b->tminpos = BUN_NONE;
b->tmaxpos = BUN_NONE;
} else {
- b->tnonil = true;
- b->tnil = false;
+ /* the only value is both min and max */
b->tminpos = 0;
b->tmaxpos = 0;
}
- b->tseqbase = sqbs;
- } else if ((b->tvheap
- ? ATOMcmp(b->ttype,
- b->tvheap->base + VarHeapVal(Tloc(b, 0),
0, b->twidth),
- ATOMnilptr(b->ttype))
- : ATOMcmp(b->ttype, Tloc(b, 0),
- ATOMnilptr(b->ttype))) == 0) {
- /* the only value is NIL */
+ } else {
+ b->tsorted = false;
+ b->trevsorted = false;
b->tminpos = BUN_NONE;
b->tmaxpos = BUN_NONE;
- } else {
- /* the only value is both min and max */
- b->tminpos = 0;
- b->tmaxpos = 0;
}
} else if (b->batCount == 2 && ATOMlinear(b->ttype)) {
int c;
@@ -1628,6 +1634,8 @@ BATsettrivprop(BAT *b)
} else if (!ATOMlinear(b->ttype)) {
b->tsorted = false;
b->trevsorted = false;
+ b->tminpos = BUN_NONE;
+ b->tmaxpos = BUN_NONE;
}
}
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -2808,6 +2808,8 @@ BATassertProps(BAT *b)
mask = (BUN) 1 << 16;
else
mask = HASHmask(b->batCount);
+ hs->heapbckt.parentid = b->batCacheid;
+ hs->heaplink.parentid = b->batCacheid;
if ((hs->heaplink.farmid = BBPselectfarm(
TRANSIENT, b->ttype, hashheap)) < 0 ||
(hs->heapbckt.farmid = BBPselectfarm(
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -960,7 +960,8 @@ BBPcheckbats(unsigned bbpversion)
if (statb.st_size > (off_t) hfree) {
int fd;
if ((fd = MT_open(path, O_RDWR | O_CLOEXEC |
O_BINARY)) >= 0) {
- (void) ftruncate(fd, hfree);
+ if (ftruncate(fd, hfree) == -1)
+ perror("ftruncate");
(void) close(fd);
}
}
@@ -988,7 +989,8 @@ BBPcheckbats(unsigned bbpversion)
if (statb.st_size > (off_t) hfree) {
int fd;
if ((fd = MT_open(path, O_RDWR | O_CLOEXEC |
O_BINARY)) >= 0) {
- (void) ftruncate(fd, hfree);
+ if (ftruncate(fd, hfree) == -1)
+ perror("ftruncate");
(void) close(fd);
}
}
@@ -1108,7 +1110,7 @@ BBPaddfarm(const char *dirname, uint32_t
GDKerror("no newline allowed in directory name\n");
return GDK_FAIL;
}
- if (rolemask == 0 || (rolemask & 1 && BBPfarms[0].dirname != NULL)) {
+ if (rolemask == 0 || (rolemask & 1 && BBPfarms[0].roles != 0)) {
if (logerror)
GDKerror("bad rolemask\n");
return GDK_FAIL;
@@ -1181,6 +1183,36 @@ BBPaddfarm(const char *dirname, uint32_t
return GDK_FAIL;
}
+gdk_return
+BBPchkfarms(void)
+{
+ const char *dir = NULL;
+ uint32_t rolemask = 0;
+ if ((BBPfarms[0].roles & 1) == 0) {
+ GDKerror("Must at least call BBPaddfarms for once for
persistent data\n");
+ return GDK_FAIL;
+ }
+ for (int i = 0; i < MAXFARMS; i++) {
+ if (BBPfarms[i].roles != 0) {
+ dir = BBPfarms[i].dirname;
+ rolemask |= BBPfarms[i].roles;
+ }
+ }
+ if (dir == NULL)
+ dir = "in-memory";
+ if ((rolemask & (1U << TRANSIENT)) == 0) {
+ gdk_return rc = BBPaddfarm(dir, 1U << TRANSIENT, true);
+ if (rc != GDK_SUCCEED)
+ return rc;
+ }
+ if ((rolemask & (1U << SYSTRANS)) == 0) {
+ gdk_return rc = BBPaddfarm(dir, 1U << SYSTRANS, true);
+ if (rc != GDK_SUCCEED)
+ return rc;
+ }
+ return GDK_SUCCEED;
+}
+
#ifdef GDKLIBRARY_HASHASH
static gdk_return
fixhashashbat(BAT *b)
diff --git a/gdk/gdk_cand.c b/gdk/gdk_cand.c
--- a/gdk/gdk_cand.c
+++ b/gdk/gdk_cand.c
@@ -1308,6 +1308,7 @@ BATnegcands(BUN nr, BAT *odels)
}
strconcat_len(dels->filename, sizeof(dels->filename),
nme, ".theap", NULL);
+ dels->parentid = bn->batCacheid;
if (HEAPalloc(dels, hi - lo + (sizeof(ccand_t)/sizeof(oid)),
sizeof(oid)) != GDK_SUCCEED) {
GDKfree(dels);
@@ -1319,7 +1320,6 @@ BATnegcands(BUN nr, BAT *odels)
*c = (ccand_t) {
.type = CAND_NEGOID,
};
- dels->parentid = bn->batCacheid;
dels->free = sizeof(ccand_t) + sizeof(oid) * (hi - lo);
dels->dirty = true;
BATiter bi = bat_iterator(odels);
@@ -1374,6 +1374,7 @@ BATmaskedcands(oid hseq, BUN nr, BAT *ma
}
strconcat_len(msks->filename, sizeof(msks->filename),
nme, ".theap", NULL);
+ msks->parentid = bn->batCacheid;
nmask = (nr + 31) / 32;
if (HEAPalloc(msks, nmask + (sizeof(ccand_t)/sizeof(uint32_t)),
sizeof(uint32_t)) != GDK_SUCCEED) {
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]