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

Reply via email to