Changeset: 9d71fc88713d for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9d71fc88713d Added Files: sql/test/BugTracker-2019/Tests/slow-inner-join.Bug-6737.sql sql/test/BugTracker-2019/Tests/slow-inner-join.Bug-6737.stable.err sql/test/BugTracker-2019/Tests/slow-inner-join.Bug-6737.stable.out sql/test/rename/Tests/rename11.py sql/test/rename/Tests/rename11.stable.err sql/test/rename/Tests/rename11.stable.out Modified Files: .hgtags MonetDB.spec NT/monetdb_config.h.in NT/rules.msc buildtools/selinux/monetdb.te clients/mapilib/mapi.c clients/mapilib/mapi.rc clients/odbc/driver/driver.rc clients/odbc/winsetup/setup.rc configure.ag debian/changelog gdk/libbat.rc monetdb5/mal/mal_profiler.c monetdb5/optimizer/opt_mergetable.c monetdb5/tools/libmonetdb5.rc sql/backends/monet5/sql_upgrades.c sql/server/rel_rel.c sql/server/rel_unnest.c sql/server/rel_updates.c sql/storage/bat/bat_storage.c sql/storage/bat/bat_storage.h sql/storage/bat/bat_utils.c sql/storage/bat/bat_utils.h sql/storage/store.c sql/test/BugTracker-2018/Tests/sqlitelogictest-having-not-null-not-in.Bug-6557.sql sql/test/BugTracker-2018/Tests/sqlitelogictest-having-not-null-not-in.Bug-6557.stable.out sql/test/BugTracker-2019/Tests/All sql/test/rename/Tests/All testing/monet_options.py.in vertoo.data Branch: candidate-exceptions Log Message:
Merge with default branch. diffs (truncated from 1652 to 300 lines): diff --git a/.hgtags b/.hgtags --- a/.hgtags +++ b/.hgtags @@ -727,3 +727,6 @@ 643dfa328c71d7891c8358b4969aa9ebf81e0f4c 2c9089e1dde297caaf347bf27f88b10e5622a735 Apr2019_release 2366418b3d88b268117a6f981638c4da686497aa Apr2019_5 2366418b3d88b268117a6f981638c4da686497aa Apr2019_SP1_release +02147798590c5f9d7c837bec07277313c1fa29cc Apr2019_7 +2366418b3d88b268117a6f981638c4da686497aa Apr2019_SP1_release +02147798590c5f9d7c837bec07277313c1fa29cc Apr2019_SP1_release diff --git a/MonetDB.spec b/MonetDB.spec --- a/MonetDB.spec +++ b/MonetDB.spec @@ -1061,6 +1061,9 @@ done %postun -p /sbin/ldconfig %changelog +* Wed Aug 07 2019 Panagiotis Koutsourakis <kutsu...@monetdbsolutions.com> - 11.33.7-20190807 +- Rebuilt. + * Thu Aug 01 2019 Panagiotis Koutsourakis <kutsu...@monetdbsolutions.com> - 11.33.5-20190801 - Rebuilt. - BZ#6697: Duplicate expressions not eliminated with long CASE statement diff --git a/buildtools/selinux/monetdb.te b/buildtools/selinux/monetdb.te --- a/buildtools/selinux/monetdb.te +++ b/buildtools/selinux/monetdb.te @@ -1,4 +1,4 @@ -policy_module(monetdb, 0.5) +policy_module(monetdb, 0.6) # The above line declares that this file is a SELinux policy file. Its # name is monetdb, so the file should be saved as monetdb.te @@ -8,12 +8,14 @@ require { type tmp_t; type var_t; type user_home_t; + type unconfined_service_t; # for EPEL 7 + type proc_t; # for EPEL 7 class dir { read }; class fd { use }; class fifo_file { getattr read write }; class file { entrypoint execute getattr manage_file_perms map open read }; class netlink_selinux_socket create_socket_perms; - class process { rlimitinh siginh signal sigterm sigkill transition }; + class process { rlimitinh siginh signal sigchld sigterm sigkill transition }; class tcp_socket create_stream_socket_perms; class udp_socket create_stream_socket_perms; class unix_dgram_socket create_socket_perms; @@ -41,6 +43,10 @@ type_transition monetdbd_t mserver5_exec # monetdbd must be allowed to kill the server it started allow monetdbd_t mserver5_t:process { sigterm sigkill }; +# on EPEL 7 we need these as well +allow mserver5_t monetdbd_t:process sigchld; +allow monetdbd_t unconfined_service_t:process signal; +allow mserver5_t proc_t:file { open read getattr }; # read /proc/meminfo # declare a type for the systemd unit file (monetdbd.service) type monetdbd_unit_file_t; @@ -123,6 +129,9 @@ manage_sock_files_pattern(mserver5_t, ms allow mserver5_t monetdbd_t:fifo_file { read write getattr }; allow mserver5_t monetdbd_t:unix_stream_socket { read write getopt shutdown }; allow mserver5_t var_t:dir { read }; +# we want to be able to read some cgroup files +fs_search_cgroup_dirs(mserver5_t); +fs_read_cgroup_files(mserver5_t); allow monetdbd_t var_t:dir { read }; gen_tunable(mserver5_can_read_home, false) tunable_policy(`mserver5_can_read_home', ` diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c --- a/clients/mapilib/mapi.c +++ b/clients/mapilib/mapi.c @@ -2483,6 +2483,24 @@ mapi_reconnect(Mapi mid) return mapi_setError(mid, errbuf, "mapi_reconnect", MERROR); } #endif + /* compare our own address with that of our peer and + * if they are the same, we were connected to our own + * socket, so then we can't use this connection */ + union { + struct sockaddr s; + struct sockaddr_in i; + } myaddr, praddr; + socklen_t myaddrlen, praddrlen; + myaddrlen = (socklen_t) sizeof(myaddr); + praddrlen = (socklen_t) sizeof(praddr); + if (getsockname(s, &myaddr.s, &myaddrlen) == 0 && + getpeername(s, &praddr.s, &praddrlen) == 0 && + myaddr.i.sin_addr.s_addr == praddr.i.sin_addr.s_addr && + myaddr.i.sin_port == praddr.i.sin_port) { + closesocket(s); + return mapi_setError(mid, "connected to self", + "mapi_reconnect", MERROR); + } } mid->to = socket_wstream(s, "Mapi client write"); @@ -2989,6 +3007,7 @@ close_connection(Mapi mid) close_stream(mid->from); mid->from = 0; } + mid->redircnt = 0; mapi_log_record(mid, "Connection closed\n"); } diff --git a/debian/changelog b/debian/changelog --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +monetdb (11.33.7) unstable; urgency=low + + * Rebuilt. + + -- Panagiotis Koutsourakis <kutsu...@monetdbsolutions.com> Wed, 07 Aug 2019 13:35:13 +0200 + monetdb (11.33.5) unstable; urgency=low * Rebuilt. diff --git a/monetdb5/mal/mal_profiler.c b/monetdb5/mal/mal_profiler.c --- a/monetdb5/mal/mal_profiler.c +++ b/monetdb5/mal/mal_profiler.c @@ -167,7 +167,7 @@ renderProfilerEvent(MalBlkPtr mb, MalStk logadd("\"pc\":%d,%s", mb?getPC(mb,pci):0, prettify); logadd("\"tag\":%d,%s", stk?stk->tag:0, prettify); logadd("\"module\":\"%s\",%s", pci->modname ? pci->modname : "", prettify); - if (strcmp(pci->modname, "user") == 0) { + if (pci->modname && strcmp(pci->modname, "user") == 0) { int caller_tag = 0; if(stk && stk->up) { caller_tag = stk->up->tag; diff --git a/monetdb5/optimizer/opt_mergetable.c b/monetdb5/optimizer/opt_mergetable.c --- a/monetdb5/optimizer/opt_mergetable.c +++ b/monetdb5/optimizer/opt_mergetable.c @@ -1781,7 +1781,7 @@ OPTmergetableImplementation(Client cntxt matlist_t ml; int oldtop, fm, fn, fo, fe, i, k, m, n, o, e, slimit, bailout = 0; int size=0, match, actions=0, distinct_topn = 0, /*topn_res = 0,*/ groupdone = 0, *vars; - char buf[256]; + char buf[256], *group_input; lng usec = GDKusec(); str msg = MAL_SUCCEED; @@ -1794,12 +1794,15 @@ OPTmergetableImplementation(Client cntxt fprintFunction(stderr, mb, 0, LIST_MAL_ALL); #endif - vars= (int*) GDKmalloc(sizeof(int)* mb->vtop); - if( vars == NULL){ + vars = (int*) GDKmalloc(sizeof(int)* mb->vtop); + group_input = (char*) GDKzalloc(sizeof(char)* mb->vtop); + if (vars == NULL || group_input == NULL){ + if (vars) + GDKfree(vars); throw(MAL, "optimizer.mergetable", SQLSTATE(HY001) MAL_MALLOC_FAIL); } /* check for bailout conditions */ - for (i = 1; i < oldtop; i++) { + for (i = 1; i < oldtop && !bailout; i++) { int j; p = old[i]; @@ -1820,9 +1823,30 @@ OPTmergetableImplementation(Client cntxt if (getFunctionId(q) == subgroupdoneRef || getFunctionId(q) == groupdoneRef) groupdone = 1; } + /* bail out if there is a input for a group, which has been used for a group already (solves problems with qube like groupings) */ + if (getModuleId(p) == groupRef && + (getFunctionId(p) == subgroupRef || + getFunctionId(p) == subgroupdoneRef || + getFunctionId(p) == groupRef || + getFunctionId(p) == groupdoneRef)) { + int input = getArg(p, p->retc); /* argument one is first input */ + + if (group_input[input]) { +#ifdef DEBUG_OPT_MERGETABLE + fprintf(stderr,"WARNING::: mergetable bailout on group input reuse in group statement \n"); +#endif + bailout = 1; + } + + group_input[input] = 1; + } if (getModuleId(p) == algebraRef && - getFunctionId(p) == selectNotNilRef ) + getFunctionId(p) == selectNotNilRef ) { +#ifdef DEBUG_OPT_MERGETABLE + fprintf(stderr,"WARNING::: mergetable bailout not nil ref \n"); +#endif bailout = 1; + } /* if (isTopn(p)) topn_res = getArg(p, 0); @@ -1831,15 +1855,14 @@ OPTmergetableImplementation(Client cntxt //distinct_topn = 1; } GDKfree(vars); + GDKfree(group_input); ml.horigin = 0; ml.torigin = 0; ml.v = 0; ml.vars = 0; - if (bailout){ - msg = createException(MAL,"optimizer.mergetable", SQLSTATE(HY001) MAL_MALLOC_FAIL); + if (bailout) goto cleanup; - } /* the number of MATs is limited to the variable stack*/ ml.size = mb->vtop; 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 @@ -1042,6 +1042,7 @@ sql_update_mar2018(Client c, mvc *sql) if (schema) pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", schema); pos += snprintf(buf + pos, bufsize - pos, "commit;\n"); + assert(pos < bufsize); printf("Running database upgrade commands:\n%s\n", buf); err = SQLstatementIntern(c, &buf, "update", 1, 0, NULL); } @@ -1591,6 +1592,7 @@ sql_update_apr2019(Client c, mvc *sql) if (schema) pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", schema); pos += snprintf(buf + pos, bufsize - pos, "commit;\n"); + assert(pos < bufsize); printf("Running database upgrade commands:\n%s\n", buf); err = SQLstatementIntern(c, &buf, "update", 1, 0, NULL); } @@ -1976,6 +1978,7 @@ sql_update_deltas(Client c, mvc *sql) " and name in ('deltas') and type = %d;\n", F_UNION); if (schema) pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", schema); + pos += snprintf(buf + pos, bufsize - pos, "commit;\n"); assert(pos < bufsize); printf("Running database upgrade commands:\n%s\n", buf); diff --git a/sql/server/rel_rel.c b/sql/server/rel_rel.c --- a/sql/server/rel_rel.c +++ b/sql/server/rel_rel.c @@ -807,7 +807,8 @@ rel_groupby(mvc *sql, sql_rel *l, list * e->card = rel->card; if (!exp_name(e)) exp_label(sql->sa, e, ++sql->label); - ne = exp_column(sql->sa, exp_relname(e), exp_name(e), exp_subtype(e), exp_card(e), has_nil(e), 0); + ne = exp_ref(sql->sa, e); + ne = exp_propagate(sql->sa, ne, e); append(aggrs, ne); } } 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 @@ -393,7 +393,7 @@ push_up_project(mvc *sql, sql_rel *rel) if (rel && is_join(rel->op) && is_dependent(rel)) { sql_rel *r = rel->r; - if (r && r->op == op_project) { + if (r && r->op == op_project && r->l) { node *m; /* move project up, ie all attributes of left + the old expression list */ sql_rel *n = rel_project( sql->sa, rel, @@ -415,6 +415,12 @@ push_up_project(mvc *sql, sql_rel *rel) r->l = NULL; rel_destroy(r); return n; + } else if (r && r->op == op_project && !r->l) { + sql_rel *l = rel->l; + + rel->l = NULL; + rel_destroy(rel); + return l; } } /* a dependent semi/anti join with a project on the right side, could be removed */ diff --git a/sql/server/rel_updates.c b/sql/server/rel_updates.c --- a/sql/server/rel_updates.c +++ b/sql/server/rel_updates.c @@ -1403,7 +1403,7 @@ extern sql_rel *rel_list(sql_allocator * static sql_rel * validate_merge_update_delete(mvc *sql, sql_table *t, str alias, sql_rel *joined_table, tokens upd_token, - sql_rel *upd_del, sql_rel *bt, sql_rel *join_rel) + sql_rel *upd_del, sql_rel *bt, sql_rel *extra_selection) { char buf[BUFSIZ]; sql_exp *aggr, *bigger, *ex; @@ -1415,7 +1415,7 @@ validate_merge_update_delete(mvc *sql, s assert(upd_token == SQL_UPDATE || upd_token == SQL_DELETE); - groupby = rel_groupby(sql, rel_dup(join_rel), NULL); //aggregate by all column and count (distinct values) + groupby = rel_groupby(sql, rel_dup(extra_selection), NULL); //aggregate by all column and count (distinct values) groupby->r = rel_projections(sql, bt, NULL, 1, 0); aggr = exp_aggr(sql->sa, NULL, cf, 0, 0, groupby->card, 0); (void) rel_groupby_add_aggr(sql, groupby, aggr); @@ -1454,7 +1454,8 @@ merge_into_table(sql_query *query, dlist char *sname = qname_schema(qname), *tname = qname_table(qname), *alias_name; sql_schema *s = NULL; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list