Changeset: d19a85eed73b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d19a85eed73b
Modified Files:
sql/server/rel_select.c
Branch: default
Log Message:
merged
diffs (truncated from 853 to 300 lines):
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;
}
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/server/rel_distribute.c b/sql/server/rel_distribute.c
--- a/sql/server/rel_distribute.c
+++ b/sql/server/rel_distribute.c
@@ -11,8 +11,6 @@
#include "rel_rel.h"
#include "rel_basetable.h"
#include "rel_exp.h"
-#include "rel_prop.h"
-#include "rel_dump.h"
#include "sql_privileges.h"
static int
@@ -158,8 +156,8 @@ replica_rewrite(visitor *v, sql_table *t
return res;
}
-static sql_rel *
-replica(visitor *v, sql_rel *rel)
+sql_rel *
+rel_rewrite_replica(visitor *v, sql_rel *rel)
{
/* for merge statement join, ignore the multiple references */
if (rel_is_ref(rel) && !(rel->flag&MERGE_LEFT)) {
@@ -187,8 +185,8 @@ replica(visitor *v, sql_rel *rel)
return rel;
}
-static sql_rel *
-distribute(visitor *v, sql_rel *rel)
+sql_rel *
+rel_rewrite_remote(visitor *v, sql_rel *rel)
{
prop *p, *pl, *pr;
@@ -248,9 +246,9 @@ distribute(visitor *v, sql_rel *rel)
/* cleanup replica's */
visitor rv = { .sql = v->sql };
- l = rel->l = rel_visitor_bottomup(&rv, l, &replica);
+ l = rel->l = rel_visitor_bottomup(&rv, l,
&rel_rewrite_replica);
rv.data = NULL;
- r = rel->r = rel_visitor_bottomup(&rv, r, &replica);
+ r = rel->r = rel_visitor_bottomup(&rv, r,
&rel_rewrite_replica);
if ((!l || !r) && v->sql->session->status) /* if the
recursive calls failed */
return NULL;
}
@@ -259,20 +257,20 @@ distribute(visitor *v, sql_rel *rel)
find_prop(r->p, PROP_REMOTE) == NULL) {
visitor rv = { .sql = v->sql, .data = pl->value };
- if (!(r = rel_visitor_bottomup(&rv, r, &replica)) &&
v->sql->session->status)
+ if (!(r = rel_visitor_bottomup(&rv, r,
&rel_rewrite_replica)) && v->sql->session->status)
return NULL;
rv.data = NULL;
- if (!(r = rel->r = rel_visitor_bottomup(&rv, r,
&distribute)) && v->sql->session->status)
+ if (!(r = rel->r = rel_visitor_bottomup(&rv, r,
&rel_rewrite_remote)) && v->sql->session->status)
return NULL;
} else if ((is_join(rel->op) || is_semi(rel->op) ||
is_set(rel->op)) &&
find_prop(l->p, PROP_REMOTE) == NULL &&
(pr = find_prop(r->p, PROP_REMOTE)) != NULL) {
visitor rv = { .sql = v->sql, .data = pr->value };
- if (!(l = rel_visitor_bottomup(&rv, l, &replica)) &&
v->sql->session->status)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list