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