Changeset: 762809db0879 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=762809db0879 Modified Files: sql/backends/monet5/rel_bin.c sql/backends/monet5/sql_optimizer.c sql/backends/monet5/sql_optimizer.h Branch: Mar2018 Log Message:
Proper way to calculate the number of rows in a table in a middle of a transaction diffs (38 lines): diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -4619,7 +4619,10 @@ check_for_foreign_key_references(mvc *sq if (k->t != t && !cascade) { node *n = t->columns.set->h; sql_column *c = n->data; - if(SQLgetColumnSize(sql->session->tr, c, 2) > 0) { + size_t n_rows = store_funcs.count_col(sql->session->tr, c, 1); + size_t n_deletes = store_funcs.count_del(sql->session->tr, c->t); + assert (n_rows >= n_deletes); + if(n_rows - n_deletes > 0) { *error = sql_error(sql, 02, SQLSTATE(42000) "TRUNCATE: FOREIGN KEY %s.%s depends on %s", k->t->base.name, k->base.name, t->base.name); return; } 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 @@ -25,7 +25,7 @@ /* calculate the footprint for optimizer pipe line choices * and identify empty columns upfront for just in time optimizers. */ -lng +static lng SQLgetColumnSize(sql_trans *tr, sql_column *c, int access) { lng size = 0; diff --git a/sql/backends/monet5/sql_optimizer.h b/sql/backends/monet5/sql_optimizer.h --- a/sql/backends/monet5/sql_optimizer.h +++ b/sql/backends/monet5/sql_optimizer.h @@ -11,7 +11,6 @@ #include "sql.h" //#define _SQL_OPTIMIZER_DEBUG -sql5_export lng SQLgetColumnSize(sql_trans *tr, sql_column *c, int access); sql5_export str SQLoptimizeQuery(Client c, MalBlkPtr mb); sql5_export str SQLoptimizeFunction(Client c, MalBlkPtr mb); sql5_export void SQLaddQueryToCache(Client c); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list