Changeset: 46726fe8bc42 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=46726fe8bc42
Modified Files:
        
Branch: default
Log Message:

merged cleanup


diffs (150 lines):

diff --git a/sql/include/sql_relation.h b/sql/include/sql_relation.h
--- a/sql/include/sql_relation.h
+++ b/sql/include/sql_relation.h
@@ -163,7 +163,7 @@
 #define is_semi(op) \
        (op == op_semi || op == op_anti)
 #define is_select(op) \
-       (op == op_select /*|| op == op_semi || op == op_anti*/)
+       (op == op_select)
 #define is_set(op) \
        (op == op_union || op == op_inter || op == op_except)
 #define is_union(op) \
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
@@ -1706,7 +1706,7 @@
 rel_select_cse(int *changes, mvc *sql, sql_rel *rel) 
 {
        (void)sql;
-       if (rel->op == op_select && !rel_is_ref(rel) && rel->exps) { 
+       if (is_select(rel->op) && !rel_is_ref(rel) && rel->exps) { 
                list *nexps = new_exp_list(sql->sa);
                node *n;
 
@@ -1856,7 +1856,7 @@
 
        (void)sql;
        *changes = 0;
-       if (rel->op == op_select && !rel_is_ref(rel) && rel->exps) { 
+       if (is_select(rel->op) && !rel_is_ref(rel) && rel->exps) { 
                node *n, *o;
                list *nexps = NULL;
 
@@ -2062,7 +2062,7 @@
        (void)sql;
        /* merge 2 selects */
        r = rel->l;
-       if (rel->op == op_select && r && !(rel_is_ref(r)) && (r->op == 
op_select || r->op == op_except)) {
+       if (is_select(rel->op) && r && is_select(r->op) && !(rel_is_ref(r))) {
                (void)list_merge(r->exps, rel->exps, (fdup)NULL);
                rel->l = NULL;
                rel_destroy(rel);
@@ -2073,7 +2073,7 @@
         * Push select through semi/anti join 
         *      select (semi(A,B)) == semi(select(A), B) 
         */
-       if (rel->op == op_select && r && is_semi(r->op) && !(rel_is_ref(r))) {
+       if (is_select(rel->op) && r && is_semi(r->op) && !(rel_is_ref(r))) {
                rel->l = r->l;
                r->l = rel;
                (*changes)++;
@@ -2106,7 +2106,7 @@
                return rel_merge_projects(changes, sql, rel);
 
        /* push select through join */
-       if (rel->op == op_select && r && is_join(r->op) && !(rel_is_ref(r))) {
+       if (is_select(rel->op) && r && is_join(r->op) && !(rel_is_ref(r))) {
                sql_rel *jl = r->l;
                sql_rel *jr = r->r;
                int left = r->op == op_join || r->op == op_left;
@@ -2146,7 +2146,7 @@
        }
 
        /* merge select and cross product ? */
-       if (rel->op == op_select && r && r->op == op_join && !(rel_is_ref(r))) {
+       if (is_select(rel->op) && r && r->op == op_join && !(rel_is_ref(r))) {
                list *exps = rel->exps;
 
                if (!r->exps)
@@ -2166,7 +2166,7 @@
        }
 
        /* push select through set */
-       if (rel->op == op_select && r && is_set(r->op) && !(rel_is_ref(r))) {
+       if (is_select(rel->op) && r && is_set(r->op) && !(rel_is_ref(r))) {
                sql_rel *res = r;
                sql_rel *sl = r->l;
                sql_rel *sr = r->r;
@@ -2206,7 +2206,7 @@
                return res;
        }
 
-       if (rel->op == op_select && r && r->op == op_project && 
!(rel_is_ref(r))) {
+       if (is_select(rel->op) && r && r->op == op_project && !(rel_is_ref(r))) 
{
                sql_rel *pl;
                /* we cannot push through rank (row_number etc) functions or
                   projects with distinct */
@@ -2255,7 +2255,7 @@
        r = rel->l;
 
        /* push select through join */
-       if (rel->op == op_select && r && r->op == op_join && !(rel_is_ref(r))) {
+       if (is_select(rel->op) && r && r->op == op_join && !(rel_is_ref(r))) {
                rel->exps = new_exp_list(sql->sa); 
                for (n = exps->h; n; n = n->next) { 
                        sql_exp *e = n->data;
@@ -2296,7 +2296,7 @@
 
        if ((is_join(rel->op) || is_semi(rel->op) || is_select(rel->op) || 
is_project(rel->op) || rel->op == op_topn) && rel->l) {
                sql_rel *l = rel->l;
-               if (l->op == op_select && !(rel_is_ref(l)) &&
+               if (is_select(l->op) && !(rel_is_ref(l)) &&
                   (!l->exps || list_length(l->exps) == 0)) {
                        rel->l = l->l;
                        l->l = NULL;
@@ -2306,7 +2306,7 @@
        }
        if ((is_join(rel->op) || is_semi(rel->op) || is_set(rel->op)) && 
rel->r) {
                sql_rel *r = rel->r;
-               if (r->op == op_select && !(rel_is_ref(r)) &&
+               if (is_select(r->op) && !(rel_is_ref(r)) &&
                   (!r->exps || list_length(r->exps) == 0)) {
                        rel->r = r->l;
                        r->l = NULL;
@@ -3380,7 +3380,7 @@
 {
        (void)sql;
        *changes = 0; 
-       if (rel->op == op_select) {
+       if (is_select(rel->op)) {
                list *exps = NULL;
                sql_idx *i = find_index(sql->sa, rel, &exps);
                        
@@ -3445,7 +3445,7 @@
 {
        (void)sql;
        *changes = 0; 
-       if (rel->op == op_select && rel->exps && list_length(rel->exps)>1) {
+       if (is_select(rel->op) && rel->exps && list_length(rel->exps)>1) {
                list *exps = NULL;
                        
                exps = list_sort(rel->exps, (fkeyvalue)&exp_keyvalue, 
(fdup)NULL);
@@ -3460,7 +3460,7 @@
 {
        (void)sql;
        *changes = 0; 
-       if (rel->op == op_select && rel->exps) {
+       if (is_select(rel->op) && rel->exps) {
                node *n;
                list *exps = list_new(sql->sa);
                        
@@ -3635,7 +3635,7 @@
 rel_find_range(int *changes, mvc *sql, sql_rel *rel) 
 {
        *changes = 0; 
-       if ((is_join(rel->op) || rel->op == op_select) && rel->exps && 
list_length(rel->exps)>1) 
+       if ((is_join(rel->op) || is_select(rel->op)) && rel->exps && 
list_length(rel->exps)>1) 
                rel->exps = exp_merge_range(sql->sa, rel->exps);
        return rel;
 }
_______________________________________________
Checkin-list mailing list
Checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to