MonetDB: Jul2021 - merge heads
Changeset: 1258a1b4b80c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/1258a1b4b80c Modified Files: .hgtags Branch: Jul2021 Log Message: merge heads diffs (8 lines): diff --git a/.hgtags b/.hgtags --- a/.hgtags +++ b/.hgtags @@ -840,3 +840,4 @@ 700e099bfee85318da09aabcd78ec7ea6e8fb6ef 8a95168e853382b9b89ac7b67e343788ea837f3a Jul2021_31 8a95168e853382b9b89ac7b67e343788ea837f3a Jul2021_SP9_release 24385ee6130494440e09d31ec73f4aa2e2893e98 Jul2021_33 +05b3d9ea9165baf1d2956d5b06ad85f817ecc6d2 Jul2021_33 ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: Jul2021 - Merge heads
Changeset: 2f44594a914e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/2f44594a914e Modified Files: sql/server/sql_scan.c Branch: Jul2021 Log Message: Merge heads diffs (truncated from 5186 to 300 lines): diff --git a/clients/Tests/MAL-signatures.stable.out b/clients/Tests/MAL-signatures.stable.out --- a/clients/Tests/MAL-signatures.stable.out +++ b/clients/Tests/MAL-signatures.stable.out @@ -9170,6 +9170,7 @@ stdout of test 'MAL-signatures` in direc [ "rapi", "eval_aggr","pattern rapi.eval_aggr(X_0:ptr, X_1:str, X_2:any...):any... ", "RAPIevalAggr;","" ] [ "rapi", "prelude", "command rapi.prelude():void ", "RAPIprelude;", "" ] [ "rapi", "subeval_aggr", "pattern rapi.subeval_aggr(X_0:ptr, X_1:str, X_2:any...):any... ", "RAPIevalAggr;","" ] +[ "remote","assert", "pattern remote.assert(X_0:bit, X_1:str):void ","RMTassert;", "" ] [ "remote","batbincopy", "pattern remote.batbincopy():bat[:any] ", "RMTbincopyfrom;", "" ] [ "remote","batbincopy", "pattern remote.batbincopy(X_0:bat[:any]):void ", "RMTbincopyto;","" ] [ "remote","batload", "pattern remote.batload(X_0:any_1, X_1:int):bat[:any_1] ", "RMTbatload;", "" ] @@ -9271,6 +9272,7 @@ stdout of test 'MAL-signatures` in direc [ "sql", "deltas", "pattern sql.deltas(X_0:str, X_1:str) (X_2:bat[:int], X_3:bat[:lng], X_4:bat[:lng], X_5:bat[:lng], X_6:bat[:lng], X_7:bat[:lng], X_8:bat[:int]) ", "mvc_delta_values;","" ] [ "sql", "deltas", "pattern sql.deltas(X_0:str, X_1:str, X_2:str) (X_3:bat[:int], X_4:bat[:lng], X_5:bat[:lng], X_6:bat[:lng], X_7:bat[:lng], X_8:bat[:lng], X_9:bat[:int]) ", "mvc_delta_values;","" ] [ "sql", "dense_rank", "pattern sql.dense_rank(X_0:any_1, X_1:bit, X_2:bit):int ", "SQLdense_rank;", "" ] +[ "sql", "deregister", "pattern sql.deregister():int ", "RAstatementEnd;", "" ] [ "sql", "diff", "pattern sql.diff(X_0:any_1):bit ", "SQLdiff;", "" ] [ "sql", "diff", "pattern sql.diff(X_0:bit, X_1:any_1):bit ", "SQLdiff;", "" ] [ "sql", "drop_hash","unsafe pattern sql.drop_hash(X_0:str, X_1:str):void ", "SQLdrop_hash;","" ] diff --git a/clients/Tests/MAL-signatures.stable.out.int128 b/clients/Tests/MAL-signatures.stable.out.int128 --- a/clients/Tests/MAL-signatures.stable.out.int128 +++ b/clients/Tests/MAL-signatures.stable.out.int128 @@ -12471,6 +12471,7 @@ stdout of test 'MAL-signatures` in direc [ "rapi", "eval_aggr","pattern rapi.eval_aggr(X_0:ptr, X_1:str, X_2:any...):any... ", "RAPIevalAggr;","" ] [ "rapi", "prelude", "command rapi.prelude():void ", "RAPIprelude;", "" ] [ "rapi", "subeval_aggr", "pattern rapi.subeval_aggr(X_0:ptr, X_1:str, X_2:any...):any... ", "RAPIevalAggr;","" ] +[ "remote","assert", "pattern remote.assert(X_0:bit, X_1:str):void ","RMTassert;", "" ] [ "remote","batbincopy", "pattern remote.batbincopy():bat[:any] ", "RMTbincopyfrom;", "" ] [ "remote","batbincopy", "pattern remote.batbincopy(X_0:bat[:any]):void ", "RMTbincopyto;","" ] [ "remote","batload", "pattern remote.batload(X_0:any_1, X_1:int):bat[:any_1] ", "RMTbatload;", "" ] @@ -12577,6 +12578,7 @@ stdout of test 'MAL-signatures` in direc [ "sql", "deltas", "pattern sql.deltas(X_0:str, X_1:str) (X_2:bat[:int], X_3:bat[:lng], X_4:bat[:lng], X_5:bat[:lng], X_6:bat[:lng], X_7:bat[:lng], X_8:bat[:int]) ", "mvc_delta_values;","" ] [ "sql", "deltas", "pattern sql.deltas(X_0:str, X_1:str, X_2:str) (X_3:bat[:int], X_4:bat[:lng], X_5:bat[:lng], X_6:bat[:lng], X_7:bat[:lng], X_8:bat[:lng], X_9:bat[:int]) ", "mvc_delta_values;","" ] [ "sql", "dense_rank", "pattern sql.dense_rank(X_0:any_1, X_1:bit, X_2:bit):int ", "SQLdense_rank;", "" ] +[ "sql", "deregister", "pattern sql.deregister():int ", "RAstatementEnd;", "" ] [ "sql", "diff", "pattern sql.diff(X_0:any_1):bit ", "SQLdiff;", "" ] [ "sql", "diff", "pattern sql.diff(X_0:bit, X_1:any_1):bit ", "SQLdiff;", "" ] [ "sql", "drop_hash","unsafe pattern sql.drop_hash(X_0:str, X_1:str):void ", "SQLdrop_hash;","" ] diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out --- a/clients/Tests/exports.stable.out +++ b/clients/Tests/exports.stable.out @@ -937,6 +937,7 @@ const char *deleteRef; void deleteSymbol(Module scope, Symbol prg); const char *deltaRef; const char *dense_rankRef; +const char *deregisterRef; malType destinationType(MalBlkPtr mb, InstrPtr p); const char *diffRef; const char *diffcandRef; diff --git
MonetDB: Jul2021 - Merge heads
Changeset: 870192670926 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/870192670926 Branch: Jul2021 Log Message: Merge heads diffs (truncated from 3493 to 300 lines): diff --git a/clients/odbc/driver/SQLSpecialColumns.c b/clients/odbc/driver/SQLSpecialColumns.c --- a/clients/odbc/driver/SQLSpecialColumns.c +++ b/clients/odbc/driver/SQLSpecialColumns.c @@ -221,7 +221,7 @@ MNDBSpecialColumns(ODBCStmt *stmt, "sys.tables t, " "sys.columns c, " "sys.keys k, " - "sys.objects kc" + "sys.objects kc " "where s.id = t.schema_id and " "t.id = c.table_id and " "t.id = k.table_id and " diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c --- a/gdk/gdk_batop.c +++ b/gdk/gdk_batop.c @@ -398,6 +398,7 @@ insert_string_bat(BAT *b, BAT *n, struct r++; } } + assert(b->batCapacity >= b->batCount); b->theap->dirty = true; /* maintain hash */ for (r = oldcnt, cnt = BATcount(b); b->thash && r < cnt; r++) { @@ -1293,10 +1294,12 @@ BATreplace(BAT *b, BAT *p, BAT *n, bool * there are no nils in b afterward if there weren't * any in either b or n to begin with */ b->tnonil &= n->tnonil; - if (b->thash != NULL && b->thash != (Hash *) 1) { - for (BUN i = updid, j = updid + BATcount(p); i < j; i++) - HASHdelete(b, i, Tloc(b, i)); - } + /* if there is no hash, we don't start the loop, if +* there is only a persisted hash, it will get destroyed +* in the first iteration, after which there is no hash +* and the loop ends */ + for (BUN i = updid, j = updid + BATcount(p); i < j && b->thash; i++) + HASHdelete(b, i, Tloc(b, i)); if (n->ttype == TYPE_void) { assert(b->ttype == TYPE_oid); oid *o = Tloc(b, updid); @@ -1365,7 +1368,11 @@ BATreplace(BAT *b, BAT *p, BAT *n, bool memcpy(Tloc(b, updid), Tloc(n, 0), BATcount(p) * b->twidth); } - if (b->thash != NULL && b->thash != (Hash *) 1) { + /* either we have a hash that was updated above, or we +* have no hash; we cannot have the case where there is +* only a persisted (unloaded) hash since it would have +* been destroyed above */ + if (b->thash != NULL) { for (BUN i = updid, j = updid + BATcount(p); i < j; i++) HASHinsert(b, i, Tloc(b, i)); } diff --git a/gdk/gdk_heap.c b/gdk/gdk_heap.c --- a/gdk/gdk_heap.c +++ b/gdk/gdk_heap.c @@ -435,6 +435,8 @@ GDKupgradevarheap(BAT *b, var_t v, BUN c if (b->twidth == width) { if (newsize <= old->size) { /* nothing to do */ + if (cap > b->batCapacity) + BATsetcapacity(b, cap); return GDK_SUCCEED; } return BATextend(b, newsize >> shift); diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c --- a/gdk/gdk_join.c +++ b/gdk/gdk_join.c @@ -3931,13 +3931,15 @@ BATjoin(BAT **r1p, BAT **r2p, BAT *l, BA if ((parent = VIEWtparent(l)) != 0) { BAT *b = BBPdescriptor(parent); if (l->hseqbase == b->hseqbase && - BATcount(l) == BATcount(b)) + BATcount(l) == BATcount(b) && + ATOMtype(l->ttype) == ATOMtype(b->ttype)) l = b; } if ((parent = VIEWtparent(r)) != 0) { BAT *b = BBPdescriptor(parent); if (r->hseqbase == b->hseqbase && - BATcount(r) == BATcount(b)) + BATcount(r) == BATcount(b) && + ATOMtype(r->ttype) == ATOMtype(b->ttype)) r = b; } diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c --- a/gdk/gdk_storage.c +++ b/gdk/gdk_storage.c @@ -761,22 +761,19 @@ BATsave(BAT *bd) { gdk_return err = GDK_SUCCEED; const char *nme; - BAT bs; - Heap hs, vhs; - BAT *b = bd; - bool dosync = (BBP_status(b->batCacheid) & BBPPERSISTENT) != 0; + bool dosync = (BBP_status(bd->batCacheid) & BBPPERSISTENT) != 0; - assert(!GDKinmemory(b->theap->farmid)); - BATcheck(b, GDK_FAIL); + assert(!GDKinmemory(bd->theap->farmid)); + BATcheck(bd, GDK_FAIL); - assert(b->batCacheid > 0); + assert(bd->batCacheid > 0); /* views cannot be saved, but make an exception for *
MonetDB: Jul2021 - Merge heads.
Changeset: d001f016cdd7 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/d001f016cdd7 Branch: Jul2021 Log Message: Merge heads. diffs (truncated from 753 to 300 lines): diff --git a/sql/backends/monet5/sql_upgrades.c b/sql/backends/monet5/sql_upgrades.c --- a/sql/backends/monet5/sql_upgrades.c +++ b/sql/backends/monet5/sql_upgrades.c @@ -2382,9 +2382,9 @@ sql_update_jul2021(Client c, mvc *sql, c "drop procedure sys.flush_log();\n"); pos += snprintf(buf + pos, bufsize - pos, - "drop procedure sys.deltas(string);\n" - "drop procedure sys.deltas(string, string);\n" - "drop procedure sys.deltas(string, string, string);\n"); + "drop function sys.deltas(string);\n" + "drop function sys.deltas(string, string);\n" + "drop function sys.deltas(string, string, string);\n"); pos += snprintf(buf + pos, bufsize - pos, "create function sys.deltas (\"schema\" string)\n" "returns table (id int, segments bigint, \"all\" bigint, inserted bigint, updates bigint, deletes bigint, level int)\n" diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c --- a/sql/server/rel_unnest.c +++ b/sql/server/rel_unnest.c @@ -1555,37 +1555,92 @@ static sql_rel * return rel; } +static void reset_has_nil(sql_rel *rel, sql_exp *e); + static void -reset_has_nil(sql_exp *e) +exps_reset_has_nil(sql_rel *rel, list *exps) +{ + if (!list_empty(exps)) + for(node *n=exps->h; n; n=n->next) + reset_has_nil(rel, n->data); +} + +static void +reset_has_nil(sql_rel *rel, sql_exp *e) { - set_has_nil(e); - if (is_convert(e->type)) - reset_has_nil(e->l); + switch (e->type) { + case e_column: { + if (((is_right(rel->op) || is_full(rel->op)) && rel_find_exp(rel->l, e) != NULL) || + ((is_left(rel->op) || is_full(rel->op)) && rel_find_exp(rel->r, e) != NULL)) + set_has_nil(e); + } break; + case e_convert: { + reset_has_nil(rel, e->l); + if (has_nil((sql_exp*)e->l)) + set_has_nil(e); + } break; + case e_func: { + sql_subfunc *f = e->f; + + exps_reset_has_nil(rel, e->l); + if (!f->func->semantics && e->l && have_nil(e->l)) + set_has_nil(e); + } break; + case e_aggr: { + sql_subfunc *a = e->f; + + exps_reset_has_nil(rel, e->l); + if ((a->func->s || strcmp(a->func->base.name, "count") != 0) && !a->func->semantics && !has_nil(e) && e->l && have_nil(e->l)) + set_has_nil(e); + } break; + case e_cmp: { + if (e->flag == cmp_or || e->flag == cmp_filter) { + exps_reset_has_nil(rel, e->l); + exps_reset_has_nil(rel, e->r); + if (have_nil(e->l) || have_nil(e->r)) + set_has_nil(e); + } else if (e->flag == cmp_in || e->flag == cmp_notin) { + reset_has_nil(rel, e->l); + exps_reset_has_nil(rel, e->r); + if (has_nil((sql_exp*)e->l) || have_nil(e->r)) + set_has_nil(e); + } else { + reset_has_nil(rel, e->l); + reset_has_nil(rel, e->r); + if (e->f) + reset_has_nil(rel, e->f); + if (!is_semantics(e) && (((sql_exp*)e->l) || has_nil((sql_exp*)e->r) || (e->f && has_nil((sql_exp*)e->f + set_has_nil(e); + } + } break; + default: + break; + } } static sql_exp * -rewrite_inner(mvc *sql, sql_rel *rel, sql_rel *inner, operator_type *op) +rewrite_inner(mvc *sql, sql_rel *rel, sql_rel *inner, operator_type op, sql_rel **rewrite) { int single = is_single(inner); sql_rel *d = NULL; reset_single(inner); if (single && is_project(rel->op)) - *op = op_left; + op = op_left; if (!is_project(inner->op)) inner = rel_project(sql->sa, inner, rel_projections(sql, inner, NULL, 1, 1)); if (is_join(rel->op)){ /* TODO handle set operators etc */ if (is_right(rel->op)) - d = rel->l = rel_crossproduct(sql->sa, rel->l,