Changeset: fcd32a0c78d5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/fcd32a0c78d5
Modified Files:
sql/server/rel_optimizer.c
sql/server/rel_rewriter.c
Branch: default
Log Message:
Simple atoms and safe functions without parameters can always be pushed down of
course
diffs (128 lines):
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
@@ -1321,9 +1321,7 @@ exp_rename(mvc *sql, sql_exp *e, sql_rel
case e_func: {
list *l = e->l, *nl = NULL;
- if (!l) {
- return e;
- } else {
+ if (!list_empty(l)) {
nl = exps_rename(sql, l, f, t);
if (!nl)
return NULL;
@@ -1337,14 +1335,14 @@ exp_rename(mvc *sql, sql_exp *e, sql_rel
case e_atom: {
list *l = e->f, *nl = NULL;
- if (!l) {
- return e;
- } else {
+ if (!list_empty(l)) {
nl = exps_rename(sql, l, f, t);
if (!nl)
return NULL;
- }
- ne = exp_values(sql->sa, nl);
+ ne = exp_values(sql->sa, nl);
+ } else {
+ ne = exp_copy(sql, e);
+ }
break;
}
case e_psm:
@@ -2286,9 +2284,7 @@ exp_push_down_prj(mvc *sql, sql_exp *e,
if (e->type == e_func && exp_unsafe(e,0))
return NULL;
- if (!l) {
- return e;
- } else {
+ if (!list_empty(l)) {
nl = exps_push_down_prj(sql, l, f, t);
if (!nl)
return NULL;
@@ -2302,14 +2298,14 @@ exp_push_down_prj(mvc *sql, sql_exp *e,
case e_atom: {
list *l = e->f, *nl = NULL;
- if (!l) {
- return e;
- } else {
+ if (!list_empty(l)) {
nl = exps_push_down_prj(sql, l, f, t);
if (!nl)
return NULL;
- }
- ne = exp_values(sql->sa, nl);
+ ne = exp_values(sql->sa, nl);
+ } else {
+ ne = exp_copy(sql, e);
+ }
return exp_propagate(sql->sa, ne, e);
}
case e_psm:
@@ -6328,9 +6324,7 @@ exp_use_consts(mvc *sql, sql_exp *e, lis
case e_func: {
list *l = e->l, *nl = NULL;
- if (!l) {
- return e;
- } else {
+ if (!list_empty(l)) {
nl = exps_use_consts(sql, l, consts);
if (!nl)
return NULL;
@@ -6343,14 +6337,14 @@ exp_use_consts(mvc *sql, sql_exp *e, lis
case e_atom: {
list *l = e->f, *nl = NULL;
- if (!l) {
- return e;
- } else {
+ if (!list_empty(l)) {
nl = exps_use_consts(sql, l, consts);
if (!nl)
return NULL;
- }
- return exp_values(sql->sa, nl);
+ return exp_values(sql->sa, nl);
+ } else {
+ return exp_copy(sql, e);
+ }
}
case e_psm:
return e;
diff --git a/sql/server/rel_rewriter.c b/sql/server/rel_rewriter.c
--- a/sql/server/rel_rewriter.c
+++ b/sql/server/rel_rewriter.c
@@ -312,9 +312,7 @@ static sql_exp *
case e_func: {
list *l = e->l, *nl = NULL;
- if (!l) {
- return e;
- } else {
+ if (!list_empty(l)) {
nl = exps_push_down(sql, l, f, t);
if (!nl)
return NULL;
@@ -327,14 +325,13 @@ static sql_exp *
case e_atom: {
list *l = e->f, *nl = NULL;
- if (!l) {
- return e;
- } else {
+ if (!list_empty(l)) {
nl = exps_push_down(sql, l, f, t);
if (!nl)
return NULL;
+ return exp_values(sql->sa, nl);
}
- return exp_values(sql->sa, nl);
+ return exp_copy(sql, e);
}
case e_psm:
return e;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list