Changeset: 2a530e66354e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2a530e66354e
Modified Files:
        sql/server/rel_optimizer.c
        sql/test/mergetables/Tests/sqlsmith-exists2.sql
        sql/test/mergetables/Tests/sqlsmith-exists2.stable.out
Branch: Jun2020
Log Message:

exp_propagate is buggy somehow, use exp_setname to keep the expression's 
original names


diffs (102 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
@@ -3794,6 +3794,7 @@ rel_project_cse(mvc *sql, sql_rel *rel, 
                                                sql_exp *ne = 
exp_alias(sql->sa, exp_relname(e1), exp_name(e1), exp_relname(e2), 
exp_name(e2), exp_subtype(e2), e2->card, has_nil(e2), is_intern(e1));
 
                                                ne = exp_propagate(sql->sa, ne, 
e1);
+                                               exp_setname(sql->sa, ne, 
exp_relname(e1), exp_name(e1));
                                                e1 = ne;
                                                break;
                                        }
diff --git a/sql/test/mergetables/Tests/sqlsmith-exists2.sql 
b/sql/test/mergetables/Tests/sqlsmith-exists2.sql
--- a/sql/test/mergetables/Tests/sqlsmith-exists2.sql
+++ b/sql/test/mergetables/Tests/sqlsmith-exists2.sql
@@ -519,4 +519,39 @@ where (case when exists (
  and (subq_0.c3 is null);
   -- empty
 
+WITH ss_items AS
+  (SELECT 1 item_id,
+          1 ss_item_rev
+   FROM another_T,
+        LongTable
+   WHERE another_T.col1 = LongTable.col1),
+     cs_items AS
+  (SELECT 1 item_id,
+          1 cs_item_rev
+   FROM tab0,
+        LongTable
+   WHERE tab0.col1 = LongTable.col1),
+     ws_items AS
+  (SELECT 1 item_id,
+          1 ws_item_rev
+   FROM tbl_ProductSales,
+        LongTable
+   WHERE tbl_ProductSales.col1 = LongTable.col1)
+SELECT ss_items.item_id,
+       ss_item_rev,
+       ss_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 ss_dev,
+       cs_item_rev,
+       cs_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 cs_dev,
+       ws_item_rev,
+       ws_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 ws_dev,
+       (ss_item_rev+cs_item_rev+ws_item_rev)/3 average
+FROM ss_items,
+     cs_items,
+     ws_items
+WHERE ss_items.item_id=cs_items.item_id
+  AND ss_items.item_id=ws_items.item_id
+ORDER BY ss_items.item_id,
+         ss_item_rev
+LIMIT 100;
+
 ROLLBACK;
diff --git a/sql/test/mergetables/Tests/sqlsmith-exists2.stable.out 
b/sql/test/mergetables/Tests/sqlsmith-exists2.stable.out
--- a/sql/test/mergetables/Tests/sqlsmith-exists2.stable.out
+++ b/sql/test/mergetables/Tests/sqlsmith-exists2.stable.out
@@ -159,8 +159,8 @@ stdout of test 'sqlsmith-exists2` in dir
 # 1)
 # and (ref_4.i is not null))))
 # on (ref_1.bb is null);
-% .%27 # table_name
-% %27 # name
+% .%26 # table_name
+% %26 # name
 % tinyint # type
 % 1 # length
 #select
@@ -434,6 +434,33 @@ stdout of test 'sqlsmith-exists2` in dir
 % c0,  c1,     c2,     c3,     c4 # name
 % int, int,    int,    int,    int # type
 % 1,   1,      1,      1,      1 # length
+#WITH ss_items AS
+#  (SELECT 1 item_id,
+#          1 ss_item_rev
+#   FROM another_T,
+#        LongTable
+#   WHERE another_T.col1 = LongTable.col1),
+#     cs_items AS
+#  (SELECT 1 item_id,
+#          1 cs_item_rev
+#   FROM tab0,
+#        LongTable
+#   WHERE tab0.col1 = LongTable.col1),
+#     ws_items AS
+#  (SELECT 1 item_id,
+#          1 ws_item_rev
+#   FROM tbl_ProductSales,
+#        LongTable
+#   WHERE tbl_ProductSales.col1 = LongTable.col1)
+#SELECT ss_items.item_id,
+#       ss_item_rev,
+#       ss_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 ss_dev,
+% .ss_items,   .ss_items,      .,      .cs_items,      .,      .ws_items,      
.,      . # table_name
+% item_id,     ss_item_rev,    ss_dev, cs_item_rev,    cs_dev, ws_item_rev,    
ws_dev, average # name
+% tinyint,     tinyint,        int,    tinyint,        int,    tinyint,        
int,    smallint # type
+% 1,   1,      3,      1,      3,      1,      3,      1 # length
+[ 1,   1,      100,    1,      100,    1,      100,    1       ]
+[ 1,   1,      100,    1,      100,    1,      100,    1       ]
 #ROLLBACK;
 
 # 22:12:15 >  
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to