Changeset: 34087d48ef7d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=34087d48ef7d
Modified Files:
        sql/server/rel_exp.c
        sql/server/rel_optimizer.c
        sql/test/BugTracker-2015/Tests/crash.Bug-3736.stable.out
        
sql/test/BugTracker-2017/Tests/sqlitelogictest-cast-decimal.Bug-6445.stable.out
        
sql/test/BugTracker-2018/Tests/sqlitelogictest-aritmetic-expressions-handling.Bug-6576.stable.out
        
sql/test/BugTracker-2018/Tests/sqlitelogictest-aritmetic-expressions-handling.Bug-6576.stable.out.int128
        
sql/test/BugTracker-2018/Tests/sqlitelogictest-cast-null-add.Bug-6630.stable.out
Branch: default
Log Message:

Merge with Apr2019 branch.


diffs (220 lines):

diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c
--- a/sql/server/rel_exp.c
+++ b/sql/server/rel_exp.c
@@ -1455,7 +1455,7 @@ exp_is_null(mvc *sql, sql_exp *e )
                list *l = e->l;
 
                if (!r && l)
-                       for (n = l->h; n && r; n = n->next) 
+                       for (n = l->h; n && !r; n = n->next) 
                                r |= exp_is_null(sql, n->data);
                return r;
        }
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
@@ -6466,7 +6466,7 @@ rel_mark_used(mvc *sql, sql_rel *rel, in
        }
 }
 
-static sql_rel * rel_dce_sub(mvc *sql, sql_rel *rel, list *refs);
+static sql_rel * rel_dce_sub(mvc *sql, sql_rel *rel);
 
 static sql_rel *
 rel_remove_unused(mvc *sql, sql_rel *rel) 
@@ -6769,25 +6769,22 @@ rel_dce_refs(mvc *sql, sql_rel *rel, lis
 }
 
 static sql_rel *
-rel_dce_down(mvc *sql, sql_rel *rel, list *refs, int skip_proj) 
+rel_dce_down(mvc *sql, sql_rel *rel, int skip_proj) 
 {
        if (!rel)
                return rel;
 
-       if (!skip_proj && rel_is_ref(rel)) {
-               if (!list_find(refs, rel, NULL))
-                       list_append(refs, rel);
+       if (!skip_proj && rel_is_ref(rel))
                return rel;
-       }
 
        switch(rel->op) {
        case op_basetable:
        case op_table:
 
                if (skip_proj && rel->l && rel->op == op_table && rel->flag != 
2)
-                       rel->l = rel_dce_down(sql, rel->l, refs, 0);
+                       rel->l = rel_dce_down(sql, rel->l, 0);
                if (!skip_proj)
-                       rel_dce_sub(sql, rel, refs);
+                       rel_dce_sub(sql, rel);
                /* fall through */
 
        case op_truncate:
@@ -6797,16 +6794,16 @@ rel_dce_down(mvc *sql, sql_rel *rel, lis
 
        case op_insert:
                rel_used(rel->r);
-               rel_dce_sub(sql, rel->r, refs);
+               rel_dce_sub(sql, rel->r);
                return rel;
 
        case op_update:
        case op_delete:
 
                if (skip_proj && rel->r)
-                       rel->r = rel_dce_down(sql, rel->r, refs, 0);
+                       rel->r = rel_dce_down(sql, rel->r, 0);
                if (!skip_proj)
-                       rel_dce_sub(sql, rel, refs);
+                       rel_dce_sub(sql, rel);
                return rel;
 
        case op_topn: 
@@ -6815,9 +6812,9 @@ rel_dce_down(mvc *sql, sql_rel *rel, lis
        case op_groupby: 
 
                if (skip_proj && rel->l)
-                       rel->l = rel_dce_down(sql, rel->l, refs, 
is_topn(rel->op) || is_sample(rel->op));
+                       rel->l = rel_dce_down(sql, rel->l, is_topn(rel->op) || 
is_sample(rel->op));
                if (!skip_proj)
-                       rel_dce_sub(sql, rel, refs);
+                       rel_dce_sub(sql, rel);
                return rel;
 
        case op_union: 
@@ -6825,17 +6822,17 @@ rel_dce_down(mvc *sql, sql_rel *rel, lis
        case op_except: 
                if (skip_proj) {
                        if (rel->l)
-                               rel->l = rel_dce_down(sql, rel->l, refs, 0);
+                               rel->l = rel_dce_down(sql, rel->l, 0);
                        if (rel->r)
-                               rel->r = rel_dce_down(sql, rel->r, refs, 0);
+                               rel->r = rel_dce_down(sql, rel->r, 0);
                }
                if (!skip_proj)
-                       rel_dce_sub(sql, rel, refs);
+                       rel_dce_sub(sql, rel);
                return rel;
 
        case op_select: 
                if (rel->l)
-                       rel->l = rel_dce_down(sql, rel->l, refs, 0);
+                       rel->l = rel_dce_down(sql, rel->l, 0);
                return rel;
 
        case op_join: 
@@ -6845,9 +6842,9 @@ rel_dce_down(mvc *sql, sql_rel *rel, lis
        case op_semi: 
        case op_anti: 
                if (rel->l)
-                       rel->l = rel_dce_down(sql, rel->l, refs, 0);
+                       rel->l = rel_dce_down(sql, rel->l, 0);
                if (rel->r)
-                       rel->r = rel_dce_down(sql, rel->r, refs, 0);
+                       rel->r = rel_dce_down(sql, rel->r, 0);
                return rel;
        }
        return rel;
@@ -6860,7 +6857,7 @@ rel_dce_down(mvc *sql, sql_rel *rel, lis
  */
 
 static sql_rel *
-rel_dce_sub(mvc *sql, sql_rel *rel, list *refs)
+rel_dce_sub(mvc *sql, sql_rel *rel)
 {
        if (!rel)
                return rel;
@@ -6872,7 +6869,7 @@ rel_dce_sub(mvc *sql, sql_rel *rel, list
         */
        rel_mark_used(sql, rel, 1);
        rel = rel_remove_unused(sql, rel);
-       rel_dce_down(sql, rel, refs, 1);
+       rel_dce_down(sql, rel, 1);
        return rel;
 }
 
@@ -6948,7 +6945,6 @@ sql_rel *
 rel_dce(mvc *sql, sql_rel *rel)
 {
        list *refs = sa_list(sql->sa);
-       //node *n;
 
        rel_dce_refs(sql, rel, refs);
        if (refs) {
@@ -6965,7 +6961,7 @@ rel_dce(mvc *sql, sql_rel *rel)
        }
        rel = rel_add_projects(sql, rel);
        rel_used(rel);
-       rel_dce_sub(sql, rel, refs);
+       rel_dce_sub(sql, rel);
        return rel;
 }
 
@@ -9153,7 +9149,7 @@ optimize(mvc *sql, sql_rel *rel, int val
                for (n = refs->h; n; n = n->next)
                        n->data = optimize_rel(sql, n->data, &changes, 0, 
value_based_opt);
        }
-
+       rel = rel_dce(sql, rel);
        return rel;
 }
 
diff --git 
a/sql/test/BugTracker-2017/Tests/sqlitelogictest-cast-decimal.Bug-6445.stable.out
 
b/sql/test/BugTracker-2017/Tests/sqlitelogictest-cast-decimal.Bug-6445.stable.out
--- 
a/sql/test/BugTracker-2017/Tests/sqlitelogictest-cast-decimal.Bug-6445.stable.out
+++ 
b/sql/test/BugTracker-2017/Tests/sqlitelogictest-cast-decimal.Bug-6445.stable.out
@@ -30,7 +30,7 @@ stdout of test 'sqlitelogictest-cast-dec
 % real # type
 % 15 # length
 #SELECT col0 + - - CAST( NULL AS DECIMAL ) - + col0 + + col1 FROM tab1 cor0 
WHERE ( NULL ) IS NOT NULL;
-% sys.L3 # table_name
+% .L3 # table_name
 % L3 # name
 % decimal # type
 % 20 # length
diff --git 
a/sql/test/BugTracker-2018/Tests/sqlitelogictest-aritmetic-expressions-handling.Bug-6576.stable.out
 
b/sql/test/BugTracker-2018/Tests/sqlitelogictest-aritmetic-expressions-handling.Bug-6576.stable.out
--- 
a/sql/test/BugTracker-2018/Tests/sqlitelogictest-aritmetic-expressions-handling.Bug-6576.stable.out
+++ 
b/sql/test/BugTracker-2018/Tests/sqlitelogictest-aritmetic-expressions-handling.Bug-6576.stable.out
@@ -156,6 +156,12 @@ stdout of test 'sqlitelogictest-aritmeti
 % bigint # type
 % 1 # length
 [ 1    ]
+#SELECT CAST ( NULL AS INTEGER ) - 1 - 1 + 2 * 70; --NULL
+% .L3 # table_name
+% L3 # name
+% bigint # type
+% 1 # length
+[ NULL ]
 
 # 16:20:37 >  
 # 16:20:37 >  "Done."
diff --git 
a/sql/test/BugTracker-2018/Tests/sqlitelogictest-aritmetic-expressions-handling.Bug-6576.stable.out.int128
 
b/sql/test/BugTracker-2018/Tests/sqlitelogictest-aritmetic-expressions-handling.Bug-6576.stable.out.int128
--- 
a/sql/test/BugTracker-2018/Tests/sqlitelogictest-aritmetic-expressions-handling.Bug-6576.stable.out.int128
+++ 
b/sql/test/BugTracker-2018/Tests/sqlitelogictest-aritmetic-expressions-handling.Bug-6576.stable.out.int128
@@ -156,6 +156,12 @@ stdout of test 'sqlitelogictest-aritmeti
 % hugeint # type
 % 1 # length
 [ 1    ]
+#SELECT CAST ( NULL AS INTEGER ) - 1 - 1 + 2 * 70; --NULL
+% .L3 # table_name
+% L3 # name
+% hugeint # type
+% 1 # length
+[ NULL ]
 
 # 16:20:37 >  
 # 16:20:37 >  "Done."
diff --git 
a/sql/test/BugTracker-2018/Tests/sqlitelogictest-cast-null-add.Bug-6630.stable.out
 
b/sql/test/BugTracker-2018/Tests/sqlitelogictest-cast-null-add.Bug-6630.stable.out
--- 
a/sql/test/BugTracker-2018/Tests/sqlitelogictest-cast-null-add.Bug-6630.stable.out
+++ 
b/sql/test/BugTracker-2018/Tests/sqlitelogictest-cast-null-add.Bug-6630.stable.out
@@ -73,7 +73,7 @@ stdout of test 'sqlitelogictest-cast-nul
 [ NULL ]
 #SELECT ALL CAST ( col1 / - - ( + CAST ( NULL AS INTEGER ) ) AS BIGINT ) col0,
 #           CAST ( 39 + + + CAST ( NULL AS INTEGER ) + + - 10 + col1 / - col0 
AS BIGINT ) AS col1 FROM tab2;
-% sys.L4,      .L10 # table_name
+% .L4, .L10 # table_name
 % col0,        col1 # name
 % bigint,      bigint # type
 % 1,   1 # length
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to