Changeset: 71f83b84c6f6 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/71f83b84c6f6 Modified Files: sql/backends/monet5/sql_statistics.c Branch: analyze-fix Log Message:
Compute capacity beforehand diffs (52 lines): diff --git a/sql/backends/monet5/sql_statistics.c b/sql/backends/monet5/sql_statistics.c --- a/sql/backends/monet5/sql_statistics.c +++ b/sql/backends/monet5/sql_statistics.c @@ -178,6 +178,7 @@ sql_statistics(Client cntxt, MalBlkPtr m bat *rrevsorted = getArgReference_bat(stk, pci, 12); str sname = NULL, tname = NULL, cname = NULL, msg = MAL_SUCCEED; struct os_iter si = {0}; + BUN nrows = 0; int sfnd = 0, tfnd = 0, cfnd = 0; if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != NULL) @@ -233,6 +234,7 @@ sql_statistics(Client cntxt, MalBlkPtr m if (cname && strcmp(c->base.name, cname)) continue; cfnd = 1; + nrows++; if (!column_privs(m, c, PRIV_SELECT)) throw(SQL, "sql.statistics", SQLSTATE(42000) "STATISTICS: access denied for %s to column '%s' on table '%s.%s'", get_string_global_var(m, "current_user"), c->base.name, t->s->base.name, t->base.name); @@ -247,19 +249,19 @@ sql_statistics(Client cntxt, MalBlkPtr m if (cname && !cfnd) throw(SQL, "sql.statistics", SQLSTATE(38000) "Column '%s' does not exist", cname); - cid = COLnew(0, TYPE_int, 0, TRANSIENT); - sch = COLnew(0, TYPE_str, 0, TRANSIENT); - tab = COLnew(0, TYPE_str, 0, TRANSIENT); - col = COLnew(0, TYPE_str, 0, TRANSIENT); - type = COLnew(0, TYPE_str, 0, TRANSIENT); - width = COLnew(0, TYPE_int, 0, TRANSIENT); - count = COLnew(0, TYPE_lng, 0, TRANSIENT); - unique = COLnew(0, TYPE_bit, 0, TRANSIENT); - nils = COLnew(0, TYPE_bit, 0, TRANSIENT); - minval = COLnew(0, TYPE_str, 0, TRANSIENT); - maxval = COLnew(0, TYPE_str, 0, TRANSIENT); - sorted = COLnew(0, TYPE_bit, 0, TRANSIENT); - revsorted = COLnew(0, TYPE_bit, 0, TRANSIENT); + cid = COLnew(0, TYPE_int, nrows, TRANSIENT); + sch = COLnew(0, TYPE_str, nrows, TRANSIENT); + tab = COLnew(0, TYPE_str, nrows, TRANSIENT); + col = COLnew(0, TYPE_str, nrows, TRANSIENT); + type = COLnew(0, TYPE_str, nrows, TRANSIENT); + width = COLnew(0, TYPE_int, nrows, TRANSIENT); + count = COLnew(0, TYPE_lng, nrows, TRANSIENT); + unique = COLnew(0, TYPE_bit, nrows, TRANSIENT); + nils = COLnew(0, TYPE_bit, nrows, TRANSIENT); + minval = COLnew(0, TYPE_str, nrows, TRANSIENT); + maxval = COLnew(0, TYPE_str, nrows, TRANSIENT); + sorted = COLnew(0, TYPE_bit, nrows, TRANSIENT); + revsorted = COLnew(0, TYPE_bit, nrows, TRANSIENT); if (!cid || !sch || !tab || !col || !type || !width || !count || !unique || !nils || !minval || !maxval || !sorted || !revsorted) { msg = createException(SQL, "sql.statistics", SQLSTATE(HY013) MAL_MALLOC_FAIL); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list