Changeset: c4ec310d5378 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c4ec310d5378 Modified Files: gdk/gdk.h gdk/gdk_bat.c gdk/gdk_bbp.c gdk/gdk_posix.c gdk/gdk_storage.c Branch: default Log Message:
Merge with Feb2013 branch.
diffs (190 lines):
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1721,86 +1721,57 @@ gdk_export void GDKqsort_rev(void *h, vo
do { \
if ((col)->type == TYPE_void) { \
if ((col)->seq == oid_nil) { \
- if (!(col)->nil && (b)->batCount >= 1) { \
- (col)->nil = 1; \
- (b)->batDirtydesc = 1; \
- } \
- if (!(col)->revsorted) { \
- (col)->revsorted = 1; \
- (b)->batDirtydesc = 1; \
- } \
+ (col)->nonil = (b)->batCount == 0; \
+ (col)->nil = !(col)->nonil; \
+ (col)->revsorted = 1; \
+ (col)->key = (b)->batCount <= 1; \
+ (col)->dense = 0; \
} else { \
- if (!(col)->dense) { \
- (col)->dense = 1; \
- (b)->batDirtydesc = 1; \
- } \
- if (!(col)->nonil) { \
- (col)->nonil = 1; \
- (b)->batDirtydesc = 1; \
- } \
- if (!(col)->key) { \
- (col)->key = 1; \
- (b)->batDirtydesc = 1; \
- } \
- if ((col)->revsorted && (b)->batCount > 1) { \
- (col)->revsorted = 0; \
- (b)->batDirtydesc = 1; \
- } \
+ (col)->dense = 1; \
+ (col)->nonil = 1; \
+ (col)->nil = 0; \
+ (col)->key = 1; \
+ (col)->revsorted = (b)->batCount <= 1; \
} \
- if (!(col)->sorted) { \
+ (col)->sorted = 1; \
+ } else if ((b)->batCount <= 1) { \
+ if (BATatoms[(col)->type].linear) { \
(col)->sorted = 1; \
- (b)->batDirtydesc = 1; \
+ (col)->revsorted = 1; \
} \
- } else if ((b)->batCount <= 1) { \
- oid sqbs; \
- if (BATatoms[(col)->type].linear) { \
- if (!(col)->sorted) { \
- (col)->sorted = 1; \
- (b)->batDirtydesc = 1; \
- } \
- if (!(col)->revsorted) { \
- (col)->revsorted = 1; \
- (b)->batDirtydesc = 1; \
- } \
- } \
- if (!(col)->key) { \
- (col)->key = 1; \
- (b)->batDirtydesc = 1; \
- } \
+ (col)->key = 1; \
if ((b)->batCount == 0) { \
(col)->nonil = 1; \
(col)->nil = 0; \
- if (!(col)->dense && \
- (col)->type == TYPE_oid) { \
+ if ((col)->type == TYPE_oid) { \
(col)->dense = 1; \
(col)->seq = 0; \
- (b)->batDirtydesc = 1; \
} \
- } else if (!(col)->dense && \
- (col)->type == TYPE_oid && \
- (sqbs = ((oid *)
(col)->heap.base)[(b)->batFirst]) != oid_nil) { \
- (col)->dense = 1; \
+ } else if ((col)->type == TYPE_oid) { \
+ /* b->batCount == 1 */ \
+ oid sqbs; \
+ if ((sqbs = ((oid *)
(col)->heap.base)[(b)->batFirst]) == oid_nil) { \
+ (col)->dense = 0; \
+ (col)->nonil = 0; \
+ (col)->nil = 1; \
+ } else { \
+ (col)->dense = 1; \
+ (col)->nonil = 1; \
+ (col)->nil = 0; \
+ } \
(col)->seq = sqbs; \
- (col)->nonil = 1; \
- (col)->nil = 0; \
- (b)->batDirtydesc = 1; \
} \
} \
if (!BATatoms[(col)->type].linear) { \
- if ((col)->sorted) { \
- (col)->sorted = 0; \
- (b)->batDirtydesc = 1; \
- } \
- if ((col)->revsorted) { \
- (col)->revsorted = 0; \
- (b)->batDirtydesc = 1; \
- } \
+ (col)->sorted = 0; \
+ (col)->revsorted = 0; \
} \
} while (0)
-#define BATsettrivprop(b) \
- do { \
- COLsettrivprop((b), (b)->H); \
- COLsettrivprop((b), (b)->T); \
+#define BATsettrivprop(b) \
+ do { \
+ (b)->batDirtydesc = 1; /* likely already set */ \
+ COLsettrivprop((b), (b)->H); \
+ COLsettrivprop((b), (b)->T); \
} while (0)
/*
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -2189,6 +2189,8 @@ BATseqbase(BAT *b, oid o)
b->halign = 0;
}
b->hseqbase = o;
+ if (b->htype == TYPE_oid && o == oid_nil)
+ b->hdense = 0;
/* adapt keyness */
if (BAThvoid(b)) {
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1319,7 +1319,7 @@ BBPdir_subcommit(int cnt, bat *subcommit
}
if (mnstr_flush(s) != 0 ||
- mnstr_fsync(s) != 0)
+ (!(GDKdebug & FORCEMITOMASK) && mnstr_fsync(s) != 0))
goto bailout;
mnstr_close(s);
mnstr_destroy(s);
diff --git a/gdk/gdk_posix.c b/gdk/gdk_posix.c
--- a/gdk/gdk_posix.c
+++ b/gdk/gdk_posix.c
@@ -398,17 +398,18 @@ MT_munmap(void *p, size_t len)
int
MT_msync(void *p, size_t off, size_t len, int mode)
{
- int ret = msync(((char *) p) + off, len, (mode & MMAP_SYNC) ? MS_SYNC :
((mode & MMAP_ASYNC) ? MS_ASYNC : MS_INVALIDATE));
+ int ret = msync(((char *) p) + off, len,
+ (mode & MMAP_SYNC) ? MS_SYNC :
+ ((mode & MMAP_ASYNC) ? MS_ASYNC : MS_INVALIDATE));
#ifdef MMAP_DEBUG
mnstr_printf(GDKstdout,
- "#msync(" LLFMT "," LLFMT ",%s) = %d\n",
- (long long) p, (long long) len,
- (mode & MMAP_SYNC) ? "MS_SYNC" : ((mode & MMAP_ASYNC) ?
"MS_ASYNC" : "MS_INVALIDATE"),
- ret);
+ "#msync(" LLFMT "," LLFMT ",%s) = %d\n",
+ (long long) p, (long long) len,
+ (mode & MMAP_SYNC) ? "MS_SYNC" :
+ ((mode & MMAP_ASYNC) ? "MS_ASYNC" : "MS_INVALIDATE"),
+ ret);
#endif
- if (ret < 0)
- return errno;
return ret;
}
diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c
--- a/gdk/gdk_storage.c
+++ b/gdk/gdk_storage.c
@@ -324,7 +324,7 @@ GDKsave(const char *nme, const char *ext
}
}
if (fd >= 0) {
- if (
+ if (!(GDKdebug & FORCEMITOMASK) &&
#ifdef NATIVE_WIN32
_commit(fd) < 0
#else
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list
