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

Reply via email to