Changeset: d43ebc45a034 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d43ebc45a034 Added Files: documentation/source/manual_pages/README Modified Files: documentation/source/manual_pages/monetdb.rst sql/backends/monet5/sql_upgrades.c sql/include/sql_relation.h sql/server/rel_unnest.c sql/storage/bat/bat_logger.c tools/merovingian/client/monetdb.1 Branch: default Log Message:
Merge with Jun2020 branch. diffs (truncated from 397 to 300 lines): diff --git a/documentation/source/manual_pages/README b/documentation/source/manual_pages/README new file mode 100644 --- /dev/null +++ b/documentation/source/manual_pages/README @@ -0,0 +1,7 @@ +These files were created using the command + +pandoc --columns=72 $INPUTFILE -f man -t rst -o $OUTPUTFILE + +with some very minor hand editing, where $INPUTFILE and $OUTPUTFILE +refer to the manual page source file (*.1 file) and the corresponding +reStructuredText (*.rst) file. diff --git a/documentation/source/manual_pages/monetdb.rst b/documentation/source/manual_pages/monetdb.rst --- a/documentation/source/manual_pages/monetdb.rst +++ b/documentation/source/manual_pages/monetdb.rst @@ -34,6 +34,9 @@ of *monetdb*. Connect to *hostname* instead of attempting a connection over the local UNIX socket. This allows *monetdb* to connect to a remote *monetdbd*\ (1). The use of this option requires **-P** (see below). + If *hostname* starts with a forward slash (/), *hostname* is assumed + to be the directory where the UNIX sockets are stored. In that case, + the **-P** option is not allowed. **-p** *port* Connects to the given portnumber instead of the default (50000). 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 @@ -2865,7 +2865,7 @@ SQLupgrades(Client c, mvc *m) sql_column *col; bool systabfixed = false; - if (!prev_schema) { + if (prev_schema == NULL) { TRC_CRITICAL(SQL_PARSER, "Allocation failure while running SQL upgrades\n"); return -1; } @@ -2877,6 +2877,7 @@ SQLupgrades(Client c, mvc *m) if ((err = sql_update_hugeint(c, m, prev_schema, &systabfixed)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } } @@ -2901,6 +2902,7 @@ SQLupgrades(Client c, mvc *m) if ((err = sql_update_geom(c, m, 1, prev_schema)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } } else if (geomsqlfix_get() != NULL) { @@ -2912,6 +2914,7 @@ SQLupgrades(Client c, mvc *m) if ((err = sql_update_geom(c, m, 0, prev_schema)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } } @@ -2923,6 +2926,7 @@ SQLupgrades(Client c, mvc *m) if ((err = sql_update_mar2018_geom(c, t, prev_schema)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } } @@ -2932,6 +2936,7 @@ SQLupgrades(Client c, mvc *m) if ((err = sql_update_mar2018(c, m, prev_schema, &systabfixed)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } #ifdef HAVE_NETCDF @@ -2939,6 +2944,7 @@ SQLupgrades(Client c, mvc *m) (err = sql_update_mar2018_netcdf(c, prev_schema)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } #endif @@ -2948,6 +2954,7 @@ SQLupgrades(Client c, mvc *m) if ((err = sql_update_mar2018_sp1(c, prev_schema)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } } @@ -2960,6 +2967,7 @@ SQLupgrades(Client c, mvc *m) if (err) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } else { BAT *b = BATdescriptor(output->cols[0].b); @@ -2970,6 +2978,7 @@ SQLupgrades(Client c, mvc *m) TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); BBPunfix(b->batCacheid); + GDKfree(prev_schema); return -1; } } @@ -2991,6 +3000,7 @@ SQLupgrades(Client c, mvc *m) if ((err = sql_update_gsl(c, prev_schema)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } } @@ -3001,6 +3011,7 @@ SQLupgrades(Client c, mvc *m) if ((err = sql_update_aug2018(c, m, prev_schema)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } } @@ -3025,6 +3036,7 @@ SQLupgrades(Client c, mvc *m) if ((err = sql_drop_functions_dependencies_Xs_on_Ys(c, prev_schema)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } } @@ -3032,6 +3044,7 @@ SQLupgrades(Client c, mvc *m) if ((err = sql_update_aug2018_sp2(c, prev_schema)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } @@ -3041,12 +3054,14 @@ SQLupgrades(Client c, mvc *m) (err = sql_fix_system_tables(c, m, prev_schema)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } systabfixed = true; if ((err = sql_update_apr2019(c, m, prev_schema)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } } @@ -3060,6 +3075,7 @@ SQLupgrades(Client c, mvc *m) if ((err = sql_update_storagemodel(c, m, prev_schema)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } } @@ -3067,6 +3083,7 @@ SQLupgrades(Client c, mvc *m) if ((err = sql_update_apr2019_sp1(c)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } @@ -3074,6 +3091,7 @@ SQLupgrades(Client c, mvc *m) if ((err = sql_update_apr2019_sp2(c, m, prev_schema, &systabfixed)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } } @@ -3083,18 +3101,21 @@ SQLupgrades(Client c, mvc *m) if ((err = sql_update_nov2019_missing_dependencies(c, m)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } if (!systabfixed && (err = sql_fix_system_tables(c, m, prev_schema)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } systabfixed = true; if ((err = sql_update_nov2019(c, m, prev_schema, &systabfixed)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } } @@ -3106,6 +3127,7 @@ SQLupgrades(Client c, mvc *m) if ((err = sql_update_nov2019_sp1_hugeint(c, m, prev_schema, &systabfixed)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } } @@ -3116,6 +3138,7 @@ SQLupgrades(Client c, mvc *m) if ((err = sql_update_jun2020(c, m, prev_schema, &systabfixed)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } } @@ -3123,12 +3146,14 @@ SQLupgrades(Client c, mvc *m) if ((err = sql_update_jun2020_bam(c, m, prev_schema)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } if ((err = sql_update_default(c, m, prev_schema)) != NULL) { TRC_CRITICAL(SQL_PARSER, "%s\n", err); freeException(err); + GDKfree(prev_schema); return -1; } diff --git a/sql/include/sql_relation.h b/sql/include/sql_relation.h --- a/sql/include/sql_relation.h +++ b/sql/include/sql_relation.h @@ -276,7 +276,8 @@ typedef struct relation { outer:1, /* used as outer (ungrouped) */ grouped:1, /* groupby processed all the group by exps */ single:1, - subquery:1; /* is this part a subquery, this is needed for proper name binding */ + subquery:1, /* is this part a subquery, this is needed for proper name binding */ + used:1; /* used by rewrite_fix_count at rel_unnest, so a relation is not modified twice */ void *p; /* properties for the optimizer, distribution */ } sql_rel; 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 @@ -2616,7 +2616,7 @@ rewrite_ifthenelse(mvc *sql, sql_rel *re set_single(usq); e = exp_rel(sql, usq); } else - if ((has_nil(cond) || (inner && is_outerjoin(inner->op))) && (cond->type != e_func || !is_isnull_func(nf))) { + if (!e->used && (has_nil(cond) || (inner && is_outerjoin(inner->op))) && (cond->type != e_func || !is_isnull_func(nf))) { /* add is null */ sql_exp *condnil = rel_unop_(sql, rel, cond, NULL, "isnull", card_value); @@ -2624,6 +2624,7 @@ rewrite_ifthenelse(mvc *sql, sql_rel *re cond = exp_copy(sql, cond); cond = rel_nop_(sql, rel, condnil, exp_atom_bool(sql->sa, 0), cond, NULL, NULL, "ifthenelse", card_value); l->h->data = cond; + e->used = 1; } } return e; @@ -2709,39 +2710,43 @@ rewrite_fix_count(mvc *sql, sql_rel *rel if (rel->op == op_left && !is_single(rel)) { int rel_changes = 0; sql_rel *r = rel->r; - /* TODO create an exp iterator */ - list *rexps = rel_projections(sql, r, NULL, 1, 1), *exps; - for(node *n = rexps->h; n; n=n->next) { - sql_exp *e = n->data, *ne; + if (!r->used) { + /* TODO create an exp iterator */ + list *rexps = rel_projections(sql, r, NULL, 1, 1), *exps; - if (exp_is_count(e, r)) { - const char *rname = exp_relname(e), *name = exp_name(e); - /* rewrite count in subquery */ - list *args, *targs; - sql_subfunc *isnil = sql_bind_func(sql->sa, NULL, "isnull", exp_subtype(e), NULL, F_FUNC), *ifthen; + for(node *n = rexps->h; n; n=n->next) { + sql_exp *e = n->data, *ne; + + if (exp_is_count(e, r)) { + const char *rname = exp_relname(e), *name = exp_name(e); + /* rewrite count in subquery */ + list *args, *targs; + sql_subfunc *isnil = sql_bind_func(sql->sa, NULL, "isnull", exp_subtype(e), NULL, F_FUNC), *ifthen; - rel_changes = 1; - ne = exp_unop(sql->sa, e, isnil); - set_has_no_nil(ne); - targs = sa_list(sql->sa); - append(targs, sql_bind_localtype("bit")); - append(targs, exp_subtype(e)); - append(targs, exp_subtype(e)); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list