Changeset: 508acbeae96d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=508acbeae96d
Modified Files:
sql/backends/monet5/sql_optimizer.c
Branch: Jun2020
Log Message:
do not call getBatSpace when we have enough info at the sql storage layer
(which doesn't
require a bat (sometimes causing a load))
diffs (74 lines):
diff --git a/sql/backends/monet5/sql_optimizer.c
b/sql/backends/monet5/sql_optimizer.c
--- a/sql/backends/monet5/sql_optimizer.c
+++ b/sql/backends/monet5/sql_optimizer.c
@@ -29,33 +29,17 @@ static lng
SQLgetColumnSize(sql_trans *tr, sql_column *c, int access)
{
lng size = 0;
- BAT *b;
+
switch(access){
- case 0:
- b= store_funcs.bind_col(tr, c, RDONLY);
- if (b) {
- size += getBatSpace(b);
- BBPunfix(b->batCacheid);
- }
+ case 0: /* Read only */
+ size = store_funcs.count_col(tr, c, 1);
break;
- case 1:
- b = store_funcs.bind_col(tr, c, RD_INS);
- if (b) {
- size+= getBatSpace(b);
- BBPunfix(b->batCacheid);
- }
+ case 1: /* inserts */
+ size = store_funcs.count_col(tr, c, 0);
break;
- case 2:
- b = store_funcs.bind_col(tr, c, RD_UPD_VAL);
- if (b) {
- size += getBatSpace(b);
- BBPunfix(b->batCacheid);
- }
- b = store_funcs.bind_col(tr, c, RD_UPD_ID);
- if (b) {
- size+= getBatSpace(b);
- BBPunfix(b->batCacheid);
- }
+ case 2: /* updates */
+ size = store_funcs.count_col_upd(tr, c);
+ break;
}
return size;
}
@@ -118,24 +102,16 @@ SQLgetSpace(mvc *m, MalBlkPtr mb, int pr
char *idxname = getVarConstant(mb, getArg(p, 3 +
p->retc)).val.sval;
int access = getVarConstant(mb, getArg(p, 4 +
p->retc)).val.ival;
sql_schema *s = mvc_bind_schema(m, sname);
- BAT *b;
if (getFunctionId(p) == bindidxRef) {
sql_idx *i = mvc_bind_idx(m, s, idxname);
if (i && (!isRemote(i->t) &&
!isMergeTable(i->t))) {
- b = store_funcs.bind_idx(tr, i, RDONLY);
- if (b) {
- space += (size =getBatSpace(b));
- if (!size) {
- sql_column *c =
i->t->columns.set->h->data;
- size =
SQLgetColumnSize(tr, c, access);
- }
+ sql_column *c =
i->t->columns.set->h->data;
+ size = SQLgetColumnSize(tr, c, access);
- if( !prepare && size == 0 && !
i->t->system){
- setFunctionId(p,
emptybindidxRef);
- }
- BBPunfix(b->batCacheid);
+ if( !prepare && size == 0 && !
i->t->system){
+ setFunctionId(p,
emptybindidxRef);
}
}
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list