Changeset: 884125e13bd8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=884125e13bd8
Modified Files:
        gdk/gdk_hash.c
        gdk/gdk_imprints.c
        gdk/gdk_join.c
        gdk/gdk_orderidx.c
Branch: Apr2019
Log Message:

Merge with Aug2018 branch.


diffs (101 lines):

diff --git a/gdk/gdk_hash.c b/gdk/gdk_hash.c
--- a/gdk/gdk_hash.c
+++ b/gdk/gdk_hash.c
@@ -270,6 +270,7 @@ BAThashsync(void *arg)
                                                        fsync(fd);
 #endif
                                                }
+                                               hp->dirty = false;
                                        } else {
                                                perror("write hash");
                                        }
@@ -278,8 +279,12 @@ BAThashsync(void *arg)
                        } else {
                                ((size_t *) hp->base)[0] |= (size_t) 1 << 24;
                                if (!(GDKdebug & NOSYNCMASK) &&
-                                   MT_msync(hp->base, SIZEOF_SIZE_T) < 0)
+                                   MT_msync(hp->base, SIZEOF_SIZE_T) < 0) {
                                        ((size_t *) hp->base)[0] &= ~((size_t) 
1 << 24);
+                               } else {
+                                       hp->dirty = false;
+                                       failed = ""; /* not failed */
+                               }
                        }
                        ALGODEBUG fprintf(stderr, "#BAThash: persisting hash %s 
(" LLFMT " usec)%s\n", hp->filename, GDKusec() - t0, failed);
                }
diff --git a/gdk/gdk_imprints.c b/gdk/gdk_imprints.c
--- a/gdk/gdk_imprints.c
+++ b/gdk/gdk_imprints.c
@@ -298,7 +298,9 @@ BATimpsync(void *arg)
                                                        fsync(fd);
 #endif
                                                }
+                                               hp->dirty = false;
                                        } else {
+                                               failed = " write failed";
                                                perror("write hash");
                                        }
                                        close(fd);
@@ -309,8 +311,13 @@ BATimpsync(void *arg)
                                /* sync-on-disk checked bit */
                                ((size_t *) hp->base)[0] |= (size_t) 1 << 16;
                                if (!(GDKdebug & NOSYNCMASK) &&
-                                   MT_msync(hp->base, SIZEOF_SIZE_T) < 0)
+                                   MT_msync(hp->base, SIZEOF_SIZE_T) < 0) {
+                                       failed = " sync failed";
                                        ((size_t *) hp->base)[0] &= ~((size_t) 
IMPRINTS_VERSION << 8);
+                               } else {
+                                       hp->dirty = false;
+                                       failed = ""; /* not failed */
+                               }
                        }
                        ALGODEBUG fprintf(stderr, "#BATimpsync(" ALGOBATFMT "): 
"
                                          "imprints persisted "
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -3755,6 +3755,19 @@ BATjoin(BAT **r1p, BAT **r2p, BAT *l, BA
 
        ALGODEBUG t0 = GDKusec();
 
+       if ((parent = VIEWtparent(l)) != 0) {
+               BAT *b = BBPdescriptor(parent);
+               if (l->hseqbase == b->hseqbase &&
+                   BATcount(l) == BATcount(b))
+                       l = b;
+       }
+       if ((parent = VIEWtparent(r)) != 0) {
+               BAT *b = BBPdescriptor(parent);
+               if (r->hseqbase == b->hseqbase &&
+                   BATcount(r) == BATcount(b))
+                       r = b;
+       }
+
        CANDINIT(l, sl, lstart, lend, lcnt, lcand, lcandend);
        CANDINIT(r, sr, rstart, rend, rcnt, rcand, rcandend);
        lcnt = lcand ? (BUN) (lcandend - lcand) : lend - lstart;
diff --git a/gdk/gdk_orderidx.c b/gdk/gdk_orderidx.c
--- a/gdk/gdk_orderidx.c
+++ b/gdk/gdk_orderidx.c
@@ -41,6 +41,7 @@ BATidxsync(void *arg)
                                                        fsync(fd);
 #endif
                                                }
+                                               hp->dirty = false;
                                        } else {
                                                perror("write hash");
                                        }
@@ -49,8 +50,12 @@ BATidxsync(void *arg)
                        } else {
                                ((oid *) hp->base)[0] |= (oid) 1 << 24;
                                if (!(GDKdebug & NOSYNCMASK) &&
-                                   MT_msync(hp->base, SIZEOF_OID) < 0)
+                                   MT_msync(hp->base, SIZEOF_OID) < 0) {
                                        ((oid *) hp->base)[0] &= ~((oid) 1 << 
24);
+                               } else {
+                                       hp->dirty = false;
+                                       failed = ""; /* not failed */
+                               }
                        }
                        ALGODEBUG fprintf(stderr, "#BATidxsync(%s): orderidx 
persisted"
                                          " (" LLFMT " usec)%s\n",
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to