Changeset: e67ce51fe0de for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/e67ce51fe0de Modified Files: sql/storage/bat/bat_storage.c sql/storage/objectset.c sql/storage/store.c sql/test/miscellaneous/Tests/All Branch: iso Log Message:
Merged with Jul2021 diffs (truncated from 507 to 300 lines): diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c --- a/gdk/gdk_aggr.c +++ b/gdk/gdk_aggr.c @@ -3637,7 +3637,7 @@ BATmin_skipnil(BAT *b, void *aggr, bit s if (BATcheckorderidx(b) || (/* DISABLES CODE */ (0) && VIEWtparent(b) && - (pb = BBPdescriptor(VIEWtparent(b))) != NULL && + (pb = BBP_cache(VIEWtparent(b))) != NULL && pb->tbaseoff == b->tbaseoff && BATcount(pb) == BATcount(b) && pb->hseqbase == b->hseqbase && @@ -3668,9 +3668,9 @@ BATmin_skipnil(BAT *b, void *aggr, bit s } } else if ((VIEWtparent(b) == 0 || (/* DISABLES CODE */ (0) && - BATcount(b) == BATcount(BBPdescriptor(VIEWtparent(b))))) && + BATcount(b) == BATcount(BBP_cache(VIEWtparent(b))))) && BATcheckimprints(b)) { - Imprints *imprints = VIEWtparent(b) ? BBPdescriptor(VIEWtparent(b))->timprints : b->timprints; + Imprints *imprints = VIEWtparent(b) ? BBP_cache(VIEWtparent(b))->timprints : b->timprints; int i; MT_thread_setalgorithm(VIEWtparent(b) ? "using parent imprints" : "using imprints"); @@ -3751,7 +3751,7 @@ BATmax_skipnil(BAT *b, void *aggr, bit s if (BATcheckorderidx(b) || (/* DISABLES CODE */ (0) && VIEWtparent(b) && - (pb = BBPdescriptor(VIEWtparent(b))) != NULL && + (pb = BBP_cache(VIEWtparent(b))) != NULL && pb->tbaseoff == b->tbaseoff && BATcount(pb) == BATcount(b) && pb->hseqbase == b->hseqbase && @@ -3773,9 +3773,9 @@ BATmax_skipnil(BAT *b, void *aggr, bit s } } else if ((VIEWtparent(b) == 0 || (/* DISABLES CODE */ (0) && - BATcount(b) == BATcount(BBPdescriptor(VIEWtparent(b))))) && + BATcount(b) == BATcount(BBP_cache(VIEWtparent(b))))) && BATcheckimprints(b)) { - Imprints *imprints = VIEWtparent(b) ? BBPdescriptor(VIEWtparent(b))->timprints : b->timprints; + Imprints *imprints = VIEWtparent(b) ? BBP_cache(VIEWtparent(b))->timprints : b->timprints; int i; MT_thread_setalgorithm(VIEWtparent(b) ? "using parent imprints" : "using imprints"); @@ -4059,7 +4059,7 @@ doBATgroupquantile(BAT *b, BAT *g, BAT * if (BATcheckorderidx(b) || (/* DISABLES CODE */ (0) && VIEWtparent(b) && - (pb = BBPdescriptor(VIEWtparent(b))) != NULL && + (pb = BBP_cache(VIEWtparent(b))) != NULL && pb->tbaseoff == b->tbaseoff && BATcount(pb) == BATcount(b) && pb->hseqbase == b->hseqbase && diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c --- a/gdk/gdk_batop.c +++ b/gdk/gdk_batop.c @@ -1929,7 +1929,7 @@ BATkeyed(BAT *b) BAThash(b) == GDK_SUCCEED) || (/* DISABLES CODE */ (0) && VIEWtparent(b) != 0 && - BATcheckhash(BBPdescriptor(VIEWtparent(b))))) { + BATcheckhash(BBP_cache(VIEWtparent(b))))) { /* we already have a hash table on b, or b is * persistent and we could create a hash * table, or b is a view on a bat that already @@ -1939,7 +1939,7 @@ BATkeyed(BAT *b) MT_rwlock_rdlock(&b->thashlock); hs = b->thash; if (hs == NULL && VIEWtparent(b) != 0) { - BAT *b2 = BBPdescriptor(VIEWtparent(b)); + BAT *b2 = BBP_cache(VIEWtparent(b)); lo = b->tbaseoff - b2->tbaseoff; hs = b2->thash; } @@ -2445,7 +2445,7 @@ BATsort(BAT **sorted, BAT **order, BAT * return GDK_SUCCEED; } if (VIEWtparent(b)) { - pb = BBPdescriptor(VIEWtparent(b)); + pb = BBP_cache(VIEWtparent(b)); if (/* DISABLES CODE */ (1) || b->tbaseoff != pb->tbaseoff || BATcount(b) != BATcount(pb) || diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -2375,9 +2375,10 @@ decref(bat i, bool logical, bool release if (BBP_refs(i) > 0 || (BBP_lrefs(i) > 0 && (b == NULL || - (BATdirty(b) && (BBP_status(i) & BBPHOT)) || - (BBP_status(i) & BBPSYNCING) || /* no swap during (sub)commit */ - (BBP_status(i) & (BBPPERSISTENT | BBPHOT)) == BBPHOT || + BATdirty(b) || + (BBP_status(i) & BBPHOT) || + (BBP_status(i) & BBPSYNCING) || + !(BBP_status(i) & BBPPERSISTENT) || GDKinmemory(b->theap->farmid)))) { /* bat cannot be swapped out */ } else if (b ? b->batSharecnt == 0 : (BBP_status(i) & BBPTMP)) { diff --git a/gdk/gdk_group.c b/gdk/gdk_group.c --- a/gdk/gdk_group.c +++ b/gdk/gdk_group.c @@ -1010,7 +1010,7 @@ BATgroup_internal(BAT **groups, BAT **ex BAThash(b) == GDK_SUCCEED) || (/* DISABLES CODE */ (0) && (parent = VIEWtparent(b)) != 0 && - BATcheckhash(BBPdescriptor(parent))))) { + BATcheckhash(BBP_cache(parent))))) { /* we already have a hash table on b, or b is * persistent and we could create a hash table, or b * is a view on a bat that already has a hash table; @@ -1027,7 +1027,7 @@ BATgroup_internal(BAT **groups, BAT **ex /* b is a view on another bat (b2 for now). * calculate the bounds [lo, lo+BATcount(b)) * in the parent that b uses */ - BAT *b2 = BBPdescriptor(parent); + BAT *b2 = BBP_cache(parent); MT_rwlock_rdunlock(&b->thashlock); lo = b->tbaseoff - b2->tbaseoff; b = b2; diff --git a/gdk/gdk_imprints.c b/gdk/gdk_imprints.c --- a/gdk/gdk_imprints.c +++ b/gdk/gdk_imprints.c @@ -303,7 +303,7 @@ BATcheckimprints(BAT *b) if (/* DISABLES CODE */ (0) && VIEWtparent(b)) { assert(b->timprints == NULL); - b = BBPdescriptor(VIEWtparent(b)); + b = BBP_cache(VIEWtparent(b)); } if (b->timprints == (Imprints *) 1) { @@ -472,7 +472,7 @@ BATimprints(BAT *b) /* views always keep null pointer and need to obtain * the latest imprint from the parent at query time */ s2 = b; /* remember for ACCELDEBUG print */ - b = BBPdescriptor(VIEWtparent(b)); + b = BBP_cache(VIEWtparent(b)); assert(b); if (BATcheckimprints(b)) return GDK_SUCCEED; diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c --- a/gdk/gdk_join.c +++ b/gdk/gdk_join.c @@ -2655,7 +2655,7 @@ hashjoin(BAT **r1p, BAT **r2p, BAT *l, B } else if (phash) { /* there is a hash on the parent which we should use */ MT_thread_setalgorithm(swapped ? "hashjoin using parent hash (swapped)" : "hashjoin using parent hash"); - BAT *b = BBPdescriptor(VIEWtparent(r)); + BAT *b = BBP_cache(VIEWtparent(r)); TRC_DEBUG(ALGO, "%s(%s): using " "parent(" ALGOBATFMT ") for hash%s\n", __func__, @@ -3222,7 +3222,7 @@ joincost(BAT *r, struct canditer *lci, s /* average chain length */ rcost *= (double) cnt / nheads; } else if ((parent = VIEWtparent(r)) != 0 && - (b = BBPdescriptor(parent)) != NULL && + (b = BBP_cache(parent)) != NULL && BATcheckhash(b)) { MT_rwlock_rdlock(&b->thashlock); rhash = prhash = b->thash != NULL; @@ -3658,7 +3658,7 @@ leftjoin(BAT **r1p, BAT **r2p, BAT *l, B rcnt = canditer_init(&rci, r, sr); if ((parent = VIEWtparent(l)) != 0) { - BAT *b = BBPdescriptor(parent); + BAT *b = BBP_cache(parent); if (l->hseqbase == b->hseqbase && BATcount(l) == BATcount(b) && ATOMtype(l->ttype) == ATOMtype(b->ttype)) { @@ -3666,7 +3666,7 @@ leftjoin(BAT **r1p, BAT **r2p, BAT *l, B } } if ((parent = VIEWtparent(r)) != 0) { - BAT *b = BBPdescriptor(parent); + BAT *b = BBP_cache(parent); if (r->hseqbase == b->hseqbase && BATcount(r) == BATcount(b) && ATOMtype(r->ttype) == ATOMtype(b->ttype)) { @@ -4002,14 +4002,14 @@ BATjoin(BAT **r1p, BAT **r2p, BAT *l, BA canditer_init(&rci, r, sr); if ((parent = VIEWtparent(l)) != 0) { - BAT *b = BBPdescriptor(parent); + BAT *b = BBP_cache(parent); if (l->hseqbase == b->hseqbase && BATcount(l) == BATcount(b) && ATOMtype(l->ttype) == ATOMtype(b->ttype)) l = b; } if ((parent = VIEWtparent(r)) != 0) { - BAT *b = BBPdescriptor(parent); + BAT *b = BBP_cache(parent); if (r->hseqbase == b->hseqbase && BATcount(r) == BATcount(b) && ATOMtype(r->ttype) == ATOMtype(b->ttype)) diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -2654,7 +2654,6 @@ gdk_return log_tend(logger *lg) { logformat l; - gdk_return res = GDK_SUCCEED; if (lg->debug & 1) fprintf(stderr, "#log_tend %d\n", lg->tid); @@ -2663,8 +2662,7 @@ log_tend(logger *lg) l.id = lg->tid; if (lg->flushnow) { lg->flushnow = 0; - gdk_return res = logger_commit(lg); - return res; + return logger_commit(lg); } if (LOG_DISABLED(lg)) { @@ -2672,8 +2670,7 @@ log_tend(logger *lg) return GDK_SUCCEED; } - if (res != GDK_SUCCEED || - log_write_format(lg, &l) != GDK_SUCCEED || + if (log_write_format(lg, &l) != GDK_SUCCEED || mnstr_flush(lg->output_log, MNSTR_FLUSH_DATA) || (!(GDKdebug & NOSYNCMASK) && mnstr_fsync(lg->output_log)) || new_logfile(lg) != GDK_SUCCEED) { diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c --- a/gdk/gdk_select.c +++ b/gdk/gdk_select.c @@ -111,7 +111,7 @@ hashselect(BAT *b, BATiter *bi, struct c *algo = "hashselect"; if (phash) { - BAT *b2 = BBPdescriptor(VIEWtparent(b)); + BAT *b2 = BBP_cache(VIEWtparent(b)); *algo = "hashselect on parent"; TRC_DEBUG(ALGO, ALGOBATFMT " using parent(" ALGOBATFMT ") " @@ -527,7 +527,7 @@ NAME##_##TYPE(BAT *b, BATiter *bi, struc assert(lval); \ assert(hval); \ if (use_imprints && /* DISABLES CODE */ (0) && (parent = VIEWtparent(b))) { \ - BAT *pbat = BBPdescriptor(parent); \ + BAT *pbat = BBP_cache(parent); \ assert(pbat); \ /* NOTE: this code is incorrect since pbat could be changed while */ \ /* we're using the heap, but this code is disabled, so we don't */ \ @@ -1564,7 +1564,7 @@ BATselect(BAT *b, BAT *s, const void *tl BAT *view = NULL; if (/* DISABLES CODE */ (0) && VIEWtparent(b) && !BATcheckorderidx(b)) { view = b; - b = BBPdescriptor(VIEWtparent(b)); + b = BBP_cache(VIEWtparent(b)); } /* Is query selective enough to use the ordered index ? */ /* TODO: Test if this heuristic works in practice */ @@ -2038,7 +2038,7 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT (BATcheckorderidx(l) || (/* DISABLES CODE */ (0) && VIEWtparent(l) && BATcheckorderidx(BBPquickdesc(VIEWtparent(l), false))))) { use_orderidx = true; if (/* DISABLES CODE */ (0) && VIEWtparent(l) && !BATcheckorderidx(l)) { - l = BBPdescriptor(VIEWtparent(l)); + l = BBP_cache(VIEWtparent(l)); } } diff --git a/sql/benchmarks/tpcds/Tests/one.test.in b/sql/benchmarks/tpcds/Tests/one.test.in --- a/sql/benchmarks/tpcds/Tests/one.test.in +++ b/sql/benchmarks/tpcds/Tests/one.test.in @@ -1,4 +1,7 @@ statement ok +select sys.debug(0) + +statement ok start transaction statement ok diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c --- a/sql/storage/bat/bat_storage.c +++ b/sql/storage/bat/bat_storage.c @@ -31,6 +31,8 @@ static int commit_create_del(sql_trans * static int tc_gc_col( sql_store Store, sql_change *c, ulng oldest); static int tc_gc_idx( sql_store Store, sql_change *c, ulng oldest); static int tc_gc_del( sql_store Store, sql_change *c, ulng oldest); +static int tc_gc_drop_col( sql_store Store, sql_change *c, ulng oldest); +static int tc_gc_drop_idx( sql_store Store, sql_change *c, ulng oldest); static int merge_delta( sql_delta *obat); @@ -2698,7 +2700,7 @@ drop_col(sql_trans *tr, sql_column *c) { assert(!isNew(c) && !isTempTable(c->t)); sql_delta *d = ATOMIC_PTR_GET(&c->data); - trans_add(tr, &c->base, d, &tc_gc_col, &commit_destroy_del, &log_destroy_col); + trans_add(tr, &c->base, d, &tc_gc_drop_col, &commit_destroy_del, &log_destroy_col); return LOG_OK; } _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list