Changeset: f0232f6c3c2b for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/f0232f6c3c2b Modified Files: sql/backends/monet5/rel_bin.c sql/backends/monet5/sql_cat.c sql/server/rel_exp.c sql/server/rel_optimizer.c sql/server/rel_optimizer.h sql/server/rel_select.c sql/server/rel_unnest.c sql/server/rel_updates.c sql/server/sql_mvc.c sql/server/sql_mvc.h Branch: antipush Log Message:
Merged with default diffs (truncated from 1115 to 300 lines): diff --git a/sql/ChangeLog b/sql/ChangeLog --- a/sql/ChangeLog +++ b/sql/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog file for sql # This file is updated with Maddlog +* Mon Oct 18 2021 Pedro Ferreira <[email protected]> +- The COPY INTO command would use the double quote as the default string + delimiter to produce output, while COPY FROM would use the empty string. + As a consequence, this created incompatibility between the two commands + when using default values from the parser. As a solution, the COPY INTO + command changed to use the empty string as the default string delimiter. + * Tue Oct 12 2021 Pedro Ferreira <[email protected]> - Many improvements were done for REMOTE table plans. As a consequence, master or slave servers from this feature release are not compatible 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 @@ -16,8 +16,6 @@ #include "rel_prop.h" #include "rel_select.h" #include "rel_updates.h" -#include "rel_unnest.h" -#include "rel_optimizer.h" #include "rel_predicates.h" #include "sql_env.h" #include "sql_optimizer.h" @@ -3883,7 +3881,7 @@ sql_parse(backend *be, sql_schema *s, co sql_rel *rel = rel_parse(be->mvc, s, query, mode); stmt *sq = NULL; - if ((rel = sql_processrelation(be->mvc, rel, 1, 1))) + if ((rel = sql_processrelation(be->mvc, rel, 1, 1, 1))) sq = rel_bin(be, rel); return sq; } @@ -5824,8 +5822,8 @@ rel2bin_output(backend *be, sql_rel *rel { mvc *sql = be->mvc; node *n; - const char *tsep, *rsep, *ssep, *ns; - const char *fn = NULL; + const char *tsep, *rsep, *ssep, *ns, *fn = NULL; + atom *tatom, *ratom, *satom, *natom; int onclient = 0; stmt *s = NULL, *fns = NULL; list *slist = sa_list(sql->sa); @@ -5839,10 +5837,14 @@ rel2bin_output(backend *be, sql_rel *rel if (!rel->exps) return s; n = rel->exps->h; - tsep = sa_strdup(sql->sa, E_ATOM_STRING(n->data)); - rsep = sa_strdup(sql->sa, E_ATOM_STRING(n->next->data)); - ssep = sa_strdup(sql->sa, E_ATOM_STRING(n->next->next->data)); - ns = sa_strdup(sql->sa, E_ATOM_STRING(n->next->next->next->data)); + tatom = ((sql_exp*) n->data)->l; + tsep = sa_strdup(sql->sa, tatom->isnull ? "" : tatom->data.val.sval); + ratom = ((sql_exp*) n->next->data)->l; + rsep = sa_strdup(sql->sa, ratom->isnull ? "" : ratom->data.val.sval); + satom = ((sql_exp*) n->next->next->data)->l; + ssep = sa_strdup(sql->sa, satom->isnull ? "" : satom->data.val.sval); + natom = ((sql_exp*) n->next->next->next->data)->l; + ns = sa_strdup(sql->sa, natom->isnull ? "" : natom->data.val.sval); if (n->next->next->next->next) { fn = E_ATOM_STRING(n->next->next->next->next->data); 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 @@ -24,10 +24,7 @@ #include "sql_optimizer.h" #include "sql_datetime.h" #include "sql_partition.h" -#include "rel_unnest.h" -#include "rel_optimizer.h" #include "rel_partition.h" -#include "rel_distribute.h" #include "rel_select.h" #include "rel_rel.h" #include "rel_exp.h" @@ -130,9 +127,7 @@ sql_symbol2relation(backend *be, symbol rel = rel_semantic(query, sym); Tbegin = GDKusec(); if (rel) - rel = sql_processrelation(be->mvc, rel, extra_opts, extra_opts); - if (rel) - rel = rel_distribute(be->mvc, rel); + rel = sql_processrelation(be->mvc, rel, 1, extra_opts, extra_opts); if (rel) rel = rel_partition(be->mvc, rel); if (rel && (rel_no_mitosis(be->mvc, rel) || rel_need_distinct_query(rel))) @@ -492,7 +487,7 @@ create_table_or_view(mvc *sql, char *sna r = rel_parse(sql, s, nt->query, m_deps); if (r) - r = sql_processrelation(sql, r, 0, 0); + r = sql_processrelation(sql, r, 0, 0, 0); if (r) { list *blist = rel_dependencies(sql, r); if (mvc_create_dependencies(sql, blist, nt->base.id, VIEW_DEPENDENCY)) { diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c --- a/sql/backends/monet5/sql_cat.c +++ b/sql/backends/monet5/sql_cat.c @@ -27,14 +27,11 @@ #include "mal_debugger.h" #include "rel_select.h" -#include "rel_unnest.h" -#include "rel_optimizer.h" #include "rel_prop.h" #include "rel_rel.h" #include "rel_exp.h" #include "rel_bin.h" #include "rel_dump.h" -#include "rel_remote.h" #include "orderidx.h" #define initcontext() \ @@ -577,7 +574,7 @@ create_trigger(mvc *sql, char *sname, ch } r = rel_parse(sql, s, buf, m_deps); if (r) - r = sql_processrelation(sql, r, 0, 0); + r = sql_processrelation(sql, r, 0, 0, 0); if (r) { list *blist = rel_dependencies(sql, r); if (mvc_create_dependencies(sql, blist, tri->base.id, TRIGGER_DEPENDENCY)) { @@ -1062,7 +1059,7 @@ create_func(mvc *sql, char *sname, char } r = rel_parse(sql, s, buf, m_deps); if (r) - r = sql_processrelation(sql, r, 0, 0); + r = sql_processrelation(sql, r, 0, 0, 0); if (r) { node *n; list *blist = rel_dependencies(sql, r); diff --git a/sql/backends/monet5/sql_execute.c b/sql/backends/monet5/sql_execute.c --- a/sql/backends/monet5/sql_execute.c +++ b/sql/backends/monet5/sql_execute.c @@ -26,10 +26,6 @@ #include "sql_user.h" #include "sql_optimizer.h" #include "sql_datetime.h" -#include "rel_unnest.h" -#include "rel_optimizer.h" -#include "rel_partition.h" -#include "rel_distribute.h" #include "rel_select.h" #include "rel_rel.h" #include "rel_exp.h" @@ -775,7 +771,7 @@ RAstatement(Client c, MalBlkPtr mb, MalS refs = sa_list(m->sa); rel = rel_read(m, *expr, &pos, refs); if (*opt && rel) - rel = sql_processrelation(m, rel, 1, 1); + rel = sql_processrelation(m, rel, 0, 1, 1); if (!rel) { if (strlen(m->errstr) > 6 && m->errstr[5] == '!') msg = createException(SQL, "RAstatement", "%s", m->errstr); @@ -971,7 +967,7 @@ RAstatement2(Client cntxt, MalBlkPtr mb, refs = sa_list(m->sa); rel = rel_read(m, expr, &pos, refs); if (rel) - rel = sql_processrelation(m, rel, 1, 1); + rel = sql_processrelation(m, rel, 0, 1, 1); if (!rel) { if (strlen(m->errstr) > 6 && m->errstr[5] == '!') msg = createException(SQL, "RAstatement2", "%s", m->errstr); diff --git a/sql/backends/monet5/sql_gencode.c b/sql/backends/monet5/sql_gencode.c --- a/sql/backends/monet5/sql_gencode.c +++ b/sql/backends/monet5/sql_gencode.c @@ -40,17 +40,12 @@ #include "mal_debugger.h" #include "rel_select.h" -#include "rel_unnest.h" -#include "rel_optimizer.h" -#include "rel_distribute.h" -#include "rel_partition.h" #include "rel_prop.h" #include "rel_rel.h" #include "rel_exp.h" #include "rel_psm.h" #include "rel_bin.h" #include "rel_dump.h" -#include "rel_remote.h" #include "msabaoth.h" /* msab_getUUID */ #include "muuid.h" @@ -1228,11 +1223,7 @@ backend_create_sql_func(backend *be, sql f->sql++; r = rel_parse(m, f->s, f->query, m_instantiate); if (r) - r = sql_processrelation(m, r, 1, 0); - if (r) - r = rel_distribute(m, r); - if (r) - r = rel_partition(m, r); + r = sql_processrelation(m, r, 1, 1, 0); if (r && !f->sql) /* native function */ return 0; diff --git a/sql/backends/monet5/sql_statement.c b/sql/backends/monet5/sql_statement.c --- a/sql/backends/monet5/sql_statement.c +++ b/sql/backends/monet5/sql_statement.c @@ -14,8 +14,6 @@ #include "rel_rel.h" #include "rel_exp.h" #include "rel_prop.h" -#include "rel_unnest.h" -#include "rel_optimizer.h" #include "mal_namespace.h" #include "mal_builder.h" @@ -3412,7 +3410,7 @@ stmt_func(backend *be, stmt *ops, const rel->p = prop_remove(rel->p, p); /* sql_processrelation may split projections, so make sure the topmost relation only contains references */ rel = rel_project(be->mvc->sa, rel, rel_projections(be->mvc, rel, NULL, 1, 1)); - if (!(rel = sql_processrelation(be->mvc, rel, 1, 1))) + if (!(rel = sql_processrelation(be->mvc, rel, 0, 1, 1))) return NULL; if (p) { p->p = rel->p; diff --git a/sql/backends/monet5/sql_transaction.c b/sql/backends/monet5/sql_transaction.c --- a/sql/backends/monet5/sql_transaction.c +++ b/sql/backends/monet5/sql_transaction.c @@ -26,13 +26,11 @@ #include "mal_debugger.h" #include "rel_select.h" -#include "rel_optimizer.h" #include "rel_prop.h" #include "rel_rel.h" #include "rel_exp.h" #include "rel_bin.h" #include "rel_dump.h" -#include "rel_remote.h" #include "orderidx.h" #define initcontext() \ 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 @@ -19,10 +19,7 @@ #include "sql_upgrades.h" #include "rel_rel.h" #include "rel_semantic.h" -#include "rel_unnest.h" -#include "rel_optimizer.h" - -#include "rel_remote.h" + #include "mal_authorize.h" /* this function can be used to recreate the system tables (types, @@ -850,7 +847,7 @@ sql_update_nov2019_missing_dependencies( r = rel_parse(sql, s, relt, m_deps); if (r) - r = sql_processrelation(sql, r, 0, 0); + r = sql_processrelation(sql, r, 0, 0, 0); if (r) { list *id_l = rel_dependencies(sql, r); @@ -886,7 +883,7 @@ sql_update_nov2019_missing_dependencies( r = rel_parse(sql, s, relt, m_deps); if (r) - r = sql_processrelation(sql, r, 0, 0); + r = sql_processrelation(sql, r, 0, 0, 0); if (r) { list *id_l = rel_dependencies(sql, r); @@ -914,7 +911,7 @@ sql_update_nov2019_missing_dependencies( r = rel_parse(sql, s, relt, m_deps); if (r) - r = sql_processrelation(sql, r, 0, 0); + r = sql_processrelation(sql, r, 0, 0, 0); if (r) { list *id_l = rel_dependencies(sql, r); diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c --- a/sql/common/sql_types.c +++ b/sql/common/sql_types.c @@ -479,23 +479,14 @@ sql_dup_subfunc(sql_allocator *sa, sql_f unsigned int mscale = 0, mdigits = 0; if (ops) { - if (ops->h && ops->h->data && f->imp && - strcmp(f->imp, "round") == 0) { - /* special case for round(): result is - * same type as first argument */ - sql_subtype *a = ops->h->data; - mscale = a->scale; - mdigits = a->digits; - } else { - for (tn = ops->h; tn; tn = tn->next) { _______________________________________________ checkin-list mailing list [email protected] https://www.monetdb.org/mailman/listinfo/checkin-list
