Changeset: 70c4909be04d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/70c4909be04d
Modified Files:
        sql/storage/bat/bat_storage.c
Branch: properties
Log Message:

Easier way to check for existing updates


diffs (79 lines):

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
@@ -2732,30 +2732,26 @@ static int
 col_min_value(sql_trans *tr, sql_column *c, ValPtr res)
 {
        int ok = 0;
-       BAT *b = NULL, *u = NULL;
+       BAT *b = NULL;
        sql_delta *d = NULL;
 
        assert(tr->active);
-       if (!c || !ATOMIC_PTR_GET(&c->data) || !isTable(c->t) || !c->t->s)
+       if (!c || !isTable(c->t) || !c->t->s)
                return 0;
 
        if (c->storage_type) {
-               sql_delta *d = ATOMIC_PTR_GET(&c->data);
-
-               if (d->cs.st == ST_DICT) {
-                       b = temp_descriptor(d->cs.ebid);
+               if ((d = ATOMIC_PTR_GET(&c->data)) && d->cs.st == ST_DICT && 
d->cs.ucnt == 0 &&
+                       (b = temp_descriptor(d->cs.ebid))) {
                        BATiter bi = bat_iterator(b);
-                       if (bi.minpos != BUN_NONE && d->cs.ucnt == 0 && 
VALinit(res, bi.type, BUNtail(bi, bi.minpos)))
+                       if (bi.minpos != BUN_NONE && VALinit(res, bi.type, 
BUNtail(bi, bi.minpos)))
                                ok = 1;
                        bat_iterator_end(&bi);
                        bat_destroy(b);
                }
                return ok;
        }
-       if ((d = ATOMIC_PTR_GET(&c->data)) &&
-               (b = quick_descriptor(d->cs.bid)) && (u = 
quick_descriptor(d->cs.uvbid)) &&
-               b->tminpos != BUN_NONE && BATcount(u) == 0 &&
-               (b = temp_descriptor(d->cs.bid))) {
+       if ((d = ATOMIC_PTR_GET(&c->data)) && d->cs.ucnt == 0 && (b = 
quick_descriptor(d->cs.bid)) &&
+               b->tminpos != BUN_NONE && (b = temp_descriptor(d->cs.bid))) {
                BATiter bi = bat_iterator(b);
                if (bi.minpos != BUN_NONE && VALinit(res, bi.type, BUNtail(bi, 
bi.minpos)))
                        ok = 1;
@@ -2769,30 +2765,26 @@ static int
 col_max_value(sql_trans *tr, sql_column *c, ValPtr res)
 {
        int ok = 0;
-       BAT *b = NULL, *u = NULL;
+       BAT *b = NULL;
        sql_delta *d = NULL;
 
        assert(tr->active);
-       if (!c || !ATOMIC_PTR_GET(&c->data) || !isTable(c->t) || !c->t->s)
+       if (!c || !isTable(c->t) || !c->t->s)
                return 0;
 
        if (c->storage_type) {
-               sql_delta *d = ATOMIC_PTR_GET(&c->data);
-
-               if (d->cs.st == ST_DICT) {
-                       b = temp_descriptor(d->cs.ebid);
+               if ((d = ATOMIC_PTR_GET(&c->data)) && d->cs.st == ST_DICT && 
d->cs.ucnt == 0 &&
+                       (b = temp_descriptor(d->cs.ebid))) {
                        BATiter bi = bat_iterator(b);
-                       if (bi.maxpos != BUN_NONE && d->cs.ucnt == 0 && 
VALinit(res, bi.type, BUNtail(bi, bi.maxpos)))
+                       if (bi.maxpos != BUN_NONE && VALinit(res, bi.type, 
BUNtail(bi, bi.maxpos)))
                                ok = 1;
                        bat_iterator_end(&bi);
                        bat_destroy(b);
                }
                return ok;
        }
-       if ((d = ATOMIC_PTR_GET(&c->data)) &&
-               (b = quick_descriptor(d->cs.bid)) && (u = 
quick_descriptor(d->cs.uvbid)) &&
-               b->tmaxpos != BUN_NONE && BATcount(u) == 0 &&
-               (b = temp_descriptor(d->cs.bid))) {
+       if ((d = ATOMIC_PTR_GET(&c->data)) && d->cs.ucnt == 0 && (b = 
quick_descriptor(d->cs.bid)) &&
+               b->tmaxpos != BUN_NONE && (b = temp_descriptor(d->cs.bid))) {
                BATiter bi = bat_iterator(b);
                if (bi.maxpos != BUN_NONE && VALinit(res, bi.type, BUNtail(bi, 
bi.maxpos)))
                        ok = 1;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to