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