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