Changeset: eac848448663 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=eac848448663
Added Files:
        sql/test/miscellaneous/Tests/select_groupby.sql
        sql/test/miscellaneous/Tests/select_groupby.stable.err
        sql/test/miscellaneous/Tests/select_groupby.stable.out
Modified Files:
        clients/mapiclient/dump.c
        clients/mapiclient/msqldump.c
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/server/rel_exp.c
        sql/server/rel_optimizer.c
        sql/server/rel_psm.c
        sql/server/rel_rel.c
        sql/server/rel_updates.c
        
sql/test/BugDay_2005-12-19_2.9.3/Tests/default_next_value_for_non_ex_seq.SF.1246631.stable.err
        sql/test/BugTracker-2014/Tests/current_timestamp.Bug-3427.stable.err
        sql/test/BugTracker-2014/Tests/current_timestamp.Bug-3427.stable.out
        sql/test/Tests/comment-dump.stable.out
        sql/test/miscellaneous/Tests/All
Branch: default
Log Message:

Merge with Nov2019


diffs (truncated from 796 to 300 lines):

diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -2575,8 +2575,7 @@ dump_database(Mapi mid, stream *toConsol
                goto bailout;
 
        /* start a transaction for the dump */
-       if (!describe)
-               mnstr_printf(toConsole, "%s;\n", start_trx);
+       mnstr_printf(toConsole, "%s;\n", start_trx);
 
        if ((hdl = mapi_query(mid, start_trx)) == NULL || mapi_error(mid))
                goto bailout;
@@ -3095,8 +3094,7 @@ dump_database(Mapi mid, stream *toConsol
        mapi_close_handle(hdl);
 
        /* finally commit the whole transaction */
-       if (!describe)
-               mnstr_printf(toConsole, "COMMIT;\n");
+       mnstr_printf(toConsole, "COMMIT;\n");
        if (sname)
                free(sname);
        if (query)
diff --git a/clients/mapiclient/msqldump.c b/clients/mapiclient/msqldump.c
--- a/clients/mapiclient/msqldump.c
+++ b/clients/mapiclient/msqldump.c
@@ -226,11 +226,15 @@ main(int argc, char **argv)
                dump_version(mid, out, "-- server:");
                mnstr_printf(out, "-- %s\n", buf);
        }
-       if (functions)
+       if (functions) {
+               mnstr_printf(out, "START TRANSACTION;\n");
                c = dump_functions(mid, out, true, NULL, NULL, NULL);
-       else if (table)
+               mnstr_printf(out, "COMMIT;\n");
+       } else if (table) {
+               mnstr_printf(out, "START TRANSACTION;\n");
                c = dump_table(mid, NULL, table, out, describe, true, 
useinserts, false);
-       else
+               mnstr_printf(out, "COMMIT;\n");
+       } else
                c = dump_database(mid, out, describe, useinserts);
        mnstr_flush(out);
 
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
@@ -645,7 +645,7 @@ exp_bin(backend *be, sql_exp *e, stmt *l
                }
                if (cond_execution) {
                        /* var_x = nil; */
-                       nme = number2name(name, 16, ++sql->label);
+                       nme = number2name(name, sizeof(name), ++sql->label);
                        (void)stmt_var(be, nme, exp_subtype(e), 1, 2);
                        /* if_barrier ... */
                        cond_execution = stmt_cond(be, cond_execution, NULL, 0, 
0);
@@ -1674,7 +1674,7 @@ rel2bin_table(backend *be, sql_rel *rel,
                char name[16], *nme;
                sql_rel *fr;
 
-               nme = number2name(name, 16, ++sql->remote);
+               nme = number2name(name, sizeof(name), ++sql->remote);
 
                l = rel2bin_args(be, rel->l, sa_list(sql->sa));
                if(!l)
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -311,18 +311,18 @@ create_table_or_view(mvc *sql, char* sna
                        list *id_l;
 
                        sql->sa = sa_create();
-                       if(!sql->sa) {
+                       if (!sql->sa) {
                                sql->sa = osa;
                                throw(SQL, "sql.catalog",SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
                        }
                        buf = sa_alloc(sql->sa, strlen(c->def) + 8);
-                       if(!buf) {
+                       if (!buf) {
                                sa_destroy(sql->sa);
                                sql->sa = osa;
                                throw(SQL, "sql.catalog",SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
                        }
                        typestr = subtype2string2(&c->type);
-                       if(!typestr) {
+                       if (!typestr) {
                                sa_destroy(sql->sa);
                                sql->sa = osa;
                                throw(SQL, "sql.catalog",SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
@@ -332,11 +332,14 @@ create_table_or_view(mvc *sql, char* sna
                        r = rel_parse(sql, s, buf, m_deps);
                        if (!r || !is_project(r->op) || !r->exps || 
list_length(r->exps) != 1 ||
                                rel_check_type(sql, &c->type, r, 
r->exps->h->data, type_equal) == NULL) {
-                               if(r)
+                               if (r)
                                        rel_destroy(r);
                                sa_destroy(sql->sa);
                                sql->sa = osa;
-                               throw(SQL, "sql.catalog", SQLSTATE(42000) "%s", 
sql->errstr);
+                               if (strlen(sql->errstr) > 6 && sql->errstr[5] 
== '!')
+                                       throw(SQL, "sql.catalog", "%s", 
sql->errstr);
+                               else 
+                                       throw(SQL, "sql.catalog", 
SQLSTATE(42000) "%s", sql->errstr);
                        }
                        id_l = rel_dependencies(sql, r);
                        mvc_create_dependencies(sql, id_l, nt->base.id, 
FUNC_DEPENDENCY);
@@ -353,16 +356,16 @@ create_table_or_view(mvc *sql, char* sna
                        sql->sa = osa;
                        throw(SQL, "sql.catalog", SQLSTATE(42000) "CREATE 
TABLE: %s_%s_%s conflicts", s->base.name, t->base.name, c->base.name);
                }
-               if(isPartitionedByColumnTable(t) && c->base.id == 
t->part.pcol->base.id)
+               if (isPartitionedByColumnTable(t) && c->base.id == 
t->part.pcol->base.id)
                        nt->part.pcol = copied;
        }
-       if(isPartitionedByExpressionTable(t)) {
+       if (isPartitionedByExpressionTable(t)) {
                char *err = NULL;
 
                nt->part.pexp->exp = sa_strdup(sql->session->tr->sa, 
t->part.pexp->exp);
 
                sql->sa = sa_create();
-               if(!sql->sa) {
+               if (!sql->sa) {
                        sql->sa = osa;
                        throw(SQL, "sql.catalog",SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
                }
@@ -370,16 +373,16 @@ create_table_or_view(mvc *sql, char* sna
                err = bootstrap_partition_expression(sql, sql->session->tr->sa, 
nt, 1);
                sa_destroy(sql->sa);
                sql->sa = NULL;
-               if(err) {
+               if (err) {
                        sql->sa = osa;
                        return err;
                }
        }
        check = sql_trans_set_partition_table(sql->session->tr, nt);
-       if(check == -1) {
+       if (check == -1) {
                sql->sa = osa;
                throw(SQL, "sql.catalog", SQLSTATE(42000) "CREATE TABLE: %s_%s: 
the partition's expression is too long", s->base.name, t->base.name);
-       } else if(check) {
+       } else if (check) {
                sql->sa = osa;
                throw(SQL, "sql.catalog", SQLSTATE(42000) "CREATE TABLE: %s_%s: 
an internal error occurred", s->base.name, t->base.name);
        }
@@ -404,7 +407,7 @@ create_table_or_view(mvc *sql, char* sna
                        err = sql_partition_validate_key(sql, nt, k, "CREATE");
                        sa_destroy(sql->sa);
                        sql->sa = NULL;
-                       if(err) {
+                       if (err) {
                                sql->sa = osa;
                                return err;
                        }
@@ -428,7 +431,7 @@ create_table_or_view(mvc *sql, char* sna
                sql_rel *r = NULL;
 
                sql->sa = sa_create();
-               if(!sql->sa) {
+               if (!sql->sa) {
                        sql->sa = osa;
                        throw(SQL, "sql.catalog",SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
                }
diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c
--- a/sql/server/rel_exp.c
+++ b/sql/server/rel_exp.c
@@ -516,7 +516,7 @@ exp_alias(sql_allocator *sa, const char 
 }
 
 sql_exp *
-exp_alias_or_copy( mvc *sql, const char *tname, const char *cname, sql_rel 
*orel, sql_exp *old)
+exp_alias_or_copy(mvc *sql, const char *tname, const char *cname, sql_rel 
*orel, sql_exp *old)
 {
        sql_exp *ne = NULL;
 
@@ -526,12 +526,12 @@ exp_alias_or_copy( mvc *sql, const char 
        if (!tname && old->type == e_column)
                tname = old->l;
 
-       if (!cname && exp_name(old) && exp_name(old)[0] == 'L') {
+       if (!cname && exp_name(old) && has_label(old)) {
                ne = exp_column(sql->sa, exp_relname(old), exp_name(old), 
exp_subtype(old), orel?orel->card:CARD_ATOM, has_nil(old), is_intern(old));
                return exp_propagate(sql->sa, ne, old);
        } else if (!cname) {
                char name[16], *nme;
-               nme = number2name(name, 16, ++sql->label);
+               nme = number2name(name, sizeof(name), ++sql->label);
 
                exp_setname(sql->sa, old, nme, nme);
                ne = exp_column(sql->sa, exp_relname(old), exp_name(old), 
exp_subtype(old), orel?orel->card:CARD_ATOM, has_nil(old), is_intern(old));
@@ -701,7 +701,7 @@ exp_setrelname(sql_allocator *sa, sql_ex
 {
        char name[16], *nme;
 
-       nme = number2name(name, 16, nr);
+       nme = number2name(name, sizeof(name), nr);
        e->alias.label = 0;
        e->alias.rname = sa_strdup(sa, nme);
 }
@@ -711,7 +711,7 @@ make_label(sql_allocator *sa, int nr)
 {
        char name[16], *nme;
 
-       nme = number2name(name, 16, nr);
+       nme = number2name(name, sizeof(name), nr);
        return sa_strdup(sa, nme);
 }
 
@@ -1880,7 +1880,7 @@ is_identity( sql_exp *e, sql_rel *r)
                        sql_exp *re = NULL;
                        if (e->l)
                                re = exps_bind_column2(r->exps, e->l, e->r);
-                       if (!re && ((char*)e->r)[0] == 'L')
+                       if (!re && has_label(e))
                                re = exps_bind_column(r->exps, e->r, NULL);
                        if (re)
                                return is_identity(re, r->l);
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -8330,13 +8330,13 @@ rel_dicttable(mvc *sql, sql_column *c, c
 
        ie = exp_indexcol(sql, e, tname, c->base.name, de, 1);
         nr = ++sql->label;
-       nme = sa_strdup(sql->sa, number2name(name, 16, nr));
+       nme = sa_strdup(sql->sa, number2name(name, sizeof(name), nr));
        exp_setname(sql->sa, ie, nme, nme);
        append(rel->exps, ie);
 
        ie = exp_stringscol(sql, e, tname, c->base.name);
         nr = ++sql->label;
-       nme = sa_strdup(sql->sa, number2name(name, 16, nr));
+       nme = sa_strdup(sql->sa, number2name(name, sizeof(name), nr));
        exp_setname(sql->sa, ie, nme, nme);
        append(rel->exps, ie);
        e->p = prop_create(sql->sa, PROP_HASHCOL, e->p);
@@ -8369,7 +8369,7 @@ rel_add_dicts(int *changes, mvc *sql, sq
                                        char name[16], *nme;
                                        sql_rel *vt = rel_dicttable(sql, c, 
rname, de);
 
-                                       nme = sa_strdup(sql->sa, 
number2name(name, 16, nr));
+                                       nme = sa_strdup(sql->sa, 
number2name(name, sizeof(name), nr));
                                        if (!vcols)
                                                vcols = sa_list(sql->sa);
                                        append(vcols, vt);
diff --git a/sql/server/rel_psm.c b/sql/server/rel_psm.c
--- a/sql/server/rel_psm.c
+++ b/sql/server/rel_psm.c
@@ -485,7 +485,7 @@ rel_psm_return( sql_query *query, sql_su
                        char name[16];
 
                        if (!cname)
-                               cname = sa_strdup(sql->sa, number2name(name, 
16, ++sql->label));
+                               cname = sa_strdup(sql->sa, number2name(name, 
sizeof(name), ++sql->label));
                        if (!isproject) 
                                e = exp_ref(sql->sa, e);
                        e = rel_check_type(sql, &ce->type, oexps_rel, e, 
type_equal);
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
@@ -509,7 +509,7 @@ rel_label( mvc *sql, sql_rel *r, int all
        char tname[16], *tnme;
        char cname[16], *cnme = NULL;
 
-       tnme = number2name(tname, 16, nr);
+       tnme = number2name(tname, sizeof(tname), nr);
        if (!is_project(r->op)) {
                r = rel_project(sql->sa, r, rel_projections(sql, r, NULL, 1, 
1));
                set_processed(r);
@@ -524,7 +524,7 @@ rel_label( mvc *sql, sql_rel *r, int all
                        if (!e->freevar) {
                                if (all) {
                                        nr = ++sql->label;
-                                       cnme = number2name(cname, 16, nr);
+                                       cnme = number2name(cname, 
sizeof(cname), nr);
                                }
                                exp_setname(sql->sa, e, tnme, cnme );
                        }
@@ -539,7 +539,7 @@ rel_label( mvc *sql, sql_rel *r, int all
                for (; ne; ne = ne->next) {
                        if (all) {
                                nr = ++sql->label;
-                               cnme = number2name(cname, 16, nr);
+                               cnme = number2name(cname, sizeof(cname), nr);
                        }
                        exp_setname(sql->sa, ne->data, tnme, cnme );
                }
@@ -664,7 +664,7 @@ rel_groupby_add_aggr(mvc *sql, sql_rel *
 
        if ((m=exps_find_match_exp(rel->exps, e)) == NULL) {
                if (!exp_name(e)) {
-                       nme = number2name(name, 16, ++sql->label);
+                       nme = number2name(name, sizeof(name), ++sql->label);
                        exp_setname(sql->sa, e, nme, nme);
                }
                append(rel->exps, e);
diff --git a/sql/server/rel_updates.c b/sql/server/rel_updates.c
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to