Changeset: f18ad1b06096 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/f18ad1b06096 Modified Files: gdk/gdk.h gdk/gdk_strimps.c monetdb5/mal/mal_profiler.c monetdb5/modules/mal/remote.c sql/backends/monet5/sql_statistics.c sql/storage/bat/bat_storage.c Branch: Dec2023 Log Message:
isVIEW(x) == true does not imply VIEWtparent(x) != 0. diffs (114 lines): diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -906,9 +906,10 @@ gdk_export size_t HEAPmemsize(Heap *h); gdk_export void HEAPdecref(Heap *h, bool remove); gdk_export void HEAPincref(Heap *h); -#define isVIEW(x) \ - (((x)->theap && (x)->theap->parentid != (x)->batCacheid) || \ - ((x)->tvheap && (x)->tvheap->parentid != (x)->batCacheid)) +#define VIEWtparent(x) ((x)->theap == NULL || (x)->theap->parentid == (x)->batCacheid ? 0 : (x)->theap->parentid) +#define VIEWvtparent(x) ((x)->tvheap == NULL || (x)->tvheap->parentid == (x)->batCacheid ? 0 : (x)->tvheap->parentid) + +#define isVIEW(x) (VIEWtparent(x) != 0 || VIEWvtparent(x) != 0) /* * @+ BAT Buffer Pool @@ -1091,7 +1092,7 @@ bat_iterator_nolock(BAT *b) { /* does not get matched by bat_iterator_end */ if (b) { - bool isview = isVIEW(b); + bool isview = VIEWtparent(b); return (BATiter) { .b = b, .h = b->theap, @@ -2191,9 +2192,6 @@ gdk_export void VIEWbounds(BAT *b, BAT * } \ } while (false) -#define VIEWtparent(x) ((x)->theap == NULL || (x)->theap->parentid == (x)->batCacheid ? 0 : (x)->theap->parentid) -#define VIEWvtparent(x) ((x)->tvheap == NULL || (x)->tvheap->parentid == (x)->batCacheid ? 0 : (x)->tvheap->parentid) - /* * @+ BAT Iterators * @multitable @columnfractions 0.15 0.7 diff --git a/gdk/gdk_strimps.c b/gdk/gdk_strimps.c --- a/gdk/gdk_strimps.c +++ b/gdk/gdk_strimps.c @@ -551,7 +551,7 @@ STRMPfilter(BAT *b, BAT *s, const char * TRC_DEBUG_IF(ACCELERATOR) t0 = GDKusec(); - if (isVIEW(b)) { + if (VIEWtparent(b)) { pb = BATdescriptor(VIEWtparent(b)); if (pb == NULL) return NULL; diff --git a/monetdb5/mal/mal_profiler.c b/monetdb5/mal/mal_profiler.c --- a/monetdb5/mal/mal_profiler.c +++ b/monetdb5/mal/mal_profiler.c @@ -399,7 +399,7 @@ prepareMalEvent(Client cntxt, MalBlkPtr * without further locking */ MT_lock_unset(&d->theaplock); cnt = di.count; - if (isVIEW(d)) { + if (VIEWtparent(d)) { BAT *v = BBP_desc(VIEWtparent(d)); bool vtransient = true; if (v) { diff --git a/monetdb5/modules/mal/remote.c b/monetdb5/modules/mal/remote.c --- a/monetdb5/modules/mal/remote.c +++ b/monetdb5/modules/mal/remote.c @@ -1536,7 +1536,7 @@ RMTbincopyto(Client cntxt, MalBlkPtr mb, sendtheap = b->ttype != TYPE_void; sendtvheap = sendtheap && b->tvheap; - if (isVIEW(b) && sendtvheap && VIEWvtparent(b) + if (sendtvheap && VIEWvtparent(b) && BATcount(b) < BATcount(BBP_desc(VIEWvtparent(b)))) { if ((b = BATdescriptor(bid)) == NULL) { BBPunfix(bid); diff --git a/sql/backends/monet5/sql_statistics.c b/sql/backends/monet5/sql_statistics.c --- a/sql/backends/monet5/sql_statistics.c +++ b/sql/backends/monet5/sql_statistics.c @@ -183,7 +183,7 @@ sql_analyze(Client cntxt, MalBlkPtr mb, int access = c->storage_type && c->storage_type[0] == 'D' ? RD_EXT : RDONLY; if (!(b = store->storage_api.bind_col(tr, c, access))) continue; /* At the moment we ignore the error, but maybe we can change this */ - if (isVIEW(b)) { /* If it is a view get the parent BAT */ + if (VIEWtparent(b)) { /* If it is a view get the parent BAT */ BAT *nb = BATdescriptor(VIEWtparent(b)); BBPunfix(b->batCacheid); b = nb; @@ -370,7 +370,7 @@ sql_statistics(Client cntxt, MalBlkPtr m goto bailout; } BATiter rei = bat_iterator(re); - if (isVIEW(re)) { /* If it is a view get the parent BAT */ + if (VIEWtparent(re)) { /* If it is a view get the parent BAT */ BAT *nb = BATdescriptor(VIEWtparent(re)); BBPunfix(re->batCacheid); re = nb; @@ -423,7 +423,7 @@ sql_statistics(Client cntxt, MalBlkPtr m msg = createException(SQL, "sql.statistics", SQLSTATE(HY005) "Cannot access column descriptor"); goto bailout; } - if (isVIEW(fb)) { /* If it is a view get the parent BAT */ + if (VIEWtparent(fb)) { /* If it is a view get the parent BAT */ BAT *nb = BATdescriptor(VIEWtparent(fb)); BBPunfix(fb->batCacheid); fb = nb; 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 @@ -2712,7 +2712,7 @@ dcount_col(sql_trans *tr, sql_column *c) static BAT * bind_no_view(BAT *b, bool quick) { - if (isVIEW(b)) { /* If it is a view get the parent BAT */ + if (VIEWtparent(b)) { /* If it is a view get the parent BAT */ BAT *nb = BBP_desc(VIEWtparent(b)); bat_destroy(b); if (!(b = quick ? quick_descriptor(nb->batCacheid) : temp_descriptor(nb->batCacheid))) _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org