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 checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list