Changeset: 67918c4ef78d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/67918c4ef78d
Modified Files:
sql/server/rel_basetable.c
sql/storage/bat/bat_storage.c
Branch: nested
Log Message:
cleanup count* functions
diffs (42 lines):
diff --git a/sql/server/rel_basetable.c b/sql/server/rel_basetable.c
--- a/sql/server/rel_basetable.c
+++ b/sql/server/rel_basetable.c
@@ -290,7 +290,7 @@ rel_nested_basetable(mvc *sql, sql_table
ba->basenr = sql->nid;
sql->nid += end;
if (isTable(t) && t->s && !isDeclaredTable(t)) /* count active rows
only */
- set_count_prop(sql->sa, rel,
(BUN)store->storage_api.count_del(sql->session->tr, t, CNT_ACTIVE));
+ set_count_prop(sql->sa, rel,
(BUN)store->storage_api.count_col(sql->session->tr,
ol_last_node(t->columns)->data, CNT_ACTIVE));
assert(atname);
if (!a_cmp_obj_name(atname, t->base.name))
ba->name = atname;
@@ -381,7 +381,7 @@ rel_basetable(mvc *sql, sql_table *t, sq
ba->basenr = sql->nid;
sql->nid += end;
if (isTable(t) && t->s && !isDeclaredTable(t)) /* count active rows
only */
- set_count_prop(sql->sa, rel,
(BUN)store->storage_api.count_del(sql->session->tr, t, CNT_ACTIVE));
+ set_count_prop(sql->sa, rel,
(BUN)store->storage_api.count_col(sql->session->tr,
ol_last_node(t->columns)->data, CNT_ACTIVE));
assert(atname);
if (!a_cmp_obj_name(atname, t->base.name))
ba->name = atname;
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
@@ -2836,8 +2836,16 @@ count_del(sql_trans *tr, sql_table *t, i
return d->cs.ucnt;
if (access == RD_INS)
return count_inserts(d->segs->h, tr);
- if (access == CNT_ACTIVE) /* special case for counting the number of
segments */
+ assert(access != CNT_ACTIVE);
+ if (access == CNT_SEGS) /* special case for counting the number of
segments */
return count_segs(d->segs->h);
+ if (access == CNT_RDONLY) {
+ size_t cnt = segs_end(d->segs, tr, t);
+ lock_table(tr->store, t);
+ cnt -= count_deletes_in_range(d->segs->h, tr, 0, cnt);
+ unlock_table(tr->store, t);
+ return cnt;
+ }
return count_deletes(d->segs->h, tr);
}
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]