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

Reply via email to