Changeset: cb4c575d6523 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cb4c575d6523
Modified Files:
        sql/test/BugTracker-2015/Tests/large_join.Bug-3809.sql
        sql/test/BugTracker-2015/Tests/large_join.Bug-3809.stable.out
Branch: Jul2015
Log Message:

Extending test case with queries where only the order of the table names in the 
FROM-clause differ.
I added plan in front of the queries to show that it creates differ plans, 
using many crossproduct where it could have used join.
Without the plan keyword in front of the query the execution of the queries 
takes a very long time.


diffs (truncated from 693 to 300 lines):

diff --git a/sql/test/BugTracker-2015/Tests/large_join.Bug-3809.sql 
b/sql/test/BugTracker-2015/Tests/large_join.Bug-3809.sql
--- a/sql/test/BugTracker-2015/Tests/large_join.Bug-3809.sql
+++ b/sql/test/BugTracker-2015/Tests/large_join.Bug-3809.sql
@@ -703,6 +703,33 @@ INSERT INTO t64 VALUES(8,7,'table t64 ro
 INSERT INTO t64 VALUES(9,8,'table t64 row 9');
 INSERT INTO t64 VALUES(10,3,'table t64 row 10');
 
+plan
+SELECT 
x20,x47,x38,x18,x10,x22,x37,x3,x63,x8,x30,x43,x54,x9,x21,x25,x2,x61,x55,x32,x52,x29,x50,x12
+  FROM 
t9,t20,t63,t54,t32,t22,t52,t25,t47,t29,t12,t18,t10,t21,t43,t37,t2,t61,t55,t3,t38,t50,t30,t8
+ WHERE b3=a18
+   AND a25=b38
+   AND a54=b8
+   AND a61=b47
+   AND a43=b29
+   AND b18=a12
+   AND b32=a30
+   AND a22=b43
+   AND a29=b21
+   AND a10=b25
+   AND a12=4
+   AND b22=a32
+   AND a20=b55
+   AND b30=a9
+   AND a2=b61
+   AND a38=b52
+   AND a55=b9
+   AND a21=b50
+   AND a37=b54
+   AND b10=a3
+   AND a52=b2
+   AND a50=b63
+   AND a8=b20
+   AND a47=b37;
 
 SELECT 
x20,x47,x38,x18,x10,x22,x37,x3,x63,x8,x30,x43,x54,x9,x21,x25,x2,x61,x55,x32,x52,x29,x50,x12
   FROM 
t9,t20,t63,t54,t32,t22,t52,t25,t47,t29,t12,t18,t10,t21,t43,t37,t2,t61,t55,t3,t38,t50,t30,t8
@@ -731,6 +758,123 @@ SELECT x20,x47,x38,x18,x10,x22,x37,x3,x6
    AND a8=b20
    AND a47=b37;
 
+-- variant of first query but moving t2 as the first table in the FROM clause
+plan
+SELECT 
x20,x47,x38,x18,x10,x22,x37,x3,x63,x8,x30,x43,x54,x9,x21,x25,x2,x61,x55,x32,x52,x29,x50,x12
+  FROM 
t2,t9,t20,t63,t54,t32,t22,t52,t25,t47,t29,t12,t18,t10,t21,t43,t37,t61,t55,t3,t38,t50,t30,t8
+ WHERE b3=a18
+   AND a25=b38
+   AND a54=b8
+   AND a61=b47
+   AND a43=b29
+   AND b18=a12
+   AND b32=a30
+   AND a22=b43
+   AND a29=b21
+   AND a10=b25
+   AND a12=4
+   AND b22=a32
+   AND a20=b55
+   AND b30=a9
+   AND a2=b61
+   AND a38=b52
+   AND a55=b9
+   AND a21=b50
+   AND a37=b54
+   AND b10=a3
+   AND a52=b2
+   AND a50=b63
+   AND a8=b20
+   AND a47=b37;
+
+-- variant of first query but moving t61 as the first table in the FROM clause
+plan
+SELECT 
x20,x47,x38,x18,x10,x22,x37,x3,x63,x8,x30,x43,x54,x9,x21,x25,x2,x61,x55,x32,x52,x29,x50,x12
+  FROM 
t61,t9,t20,t63,t54,t32,t22,t52,t25,t47,t29,t12,t18,t10,t21,t43,t37,t2,t55,t3,t38,t50,t30,t8
+ WHERE b3=a18
+   AND a25=b38
+   AND a54=b8
+   AND a61=b47
+   AND a43=b29
+   AND b18=a12
+   AND b32=a30
+   AND a22=b43
+   AND a29=b21
+   AND a10=b25
+   AND a12=4
+   AND b22=a32
+   AND a20=b55
+   AND b30=a9
+   AND a2=b61
+   AND a38=b52
+   AND a55=b9
+   AND a21=b50
+   AND a37=b54
+   AND b10=a3
+   AND a52=b2
+   AND a50=b63
+   AND a8=b20
+   AND a47=b37;
+
+-- variant of first query but with sorted (ascending) list of table names in 
the FROM clause
+plan
+SELECT 
x20,x47,x38,x18,x10,x22,x37,x3,x63,x8,x30,x43,x54,x9,x21,x25,x2,x61,x55,x32,x52,x29,x50,x12
+  FROM 
t2,t3,t8,t9,t10,t12,t18,t20,t21,t22,t25,t29,t30,t32,t37,t38,t43,t47,t50,t52,t54,t55,t61,t63
+ WHERE b3=a18
+   AND a25=b38
+   AND a54=b8
+   AND a61=b47
+   AND a43=b29
+   AND b18=a12
+   AND b32=a30
+   AND a22=b43
+   AND a29=b21
+   AND a10=b25
+   AND a12=4
+   AND b22=a32
+   AND a20=b55
+   AND b30=a9
+   AND a2=b61
+   AND a38=b52
+   AND a55=b9
+   AND a21=b50
+   AND a37=b54
+   AND b10=a3
+   AND a52=b2
+   AND a50=b63
+   AND a8=b20
+   AND a47=b37;
+
+-- variant of first query but with sorted (decending) list of table names in 
the FROM clause
+plan
+SELECT 
x20,x47,x38,x18,x10,x22,x37,x3,x63,x8,x30,x43,x54,x9,x21,x25,x2,x61,x55,x32,x52,x29,x50,x12
+  FROM 
t63,t61,t55,t54,t52,t50,t47,t43,t38,t37,t32,t30,t29,t25,t22,t21,t20,t18,t12,t10,t9,t8,t3,t2
+ WHERE b3=a18
+   AND a25=b38
+   AND a54=b8
+   AND a61=b47
+   AND a43=b29
+   AND b18=a12
+   AND b32=a30
+   AND a22=b43
+   AND a29=b21
+   AND a10=b25
+   AND a12=4
+   AND b22=a32
+   AND a20=b55
+   AND b30=a9
+   AND a2=b61
+   AND a38=b52
+   AND a55=b9
+   AND a21=b50
+   AND a37=b54
+   AND b10=a3
+   AND a52=b2
+   AND a50=b63
+   AND a8=b20
+   AND a47=b37;
+
+
 -- cleanup created tables
 DROP TABLE t1;
 DROP TABLE t2;
diff --git a/sql/test/BugTracker-2015/Tests/large_join.Bug-3809.stable.out 
b/sql/test/BugTracker-2015/Tests/large_join.Bug-3809.stable.out
--- a/sql/test/BugTracker-2015/Tests/large_join.Bug-3809.stable.out
+++ b/sql/test/BugTracker-2015/Tests/large_join.Bug-3809.stable.out
@@ -1373,6 +1373,109 @@ Ready.
 [ 1    ]
 #INSERT INTO t64 VALUES(10,3,'table t64 row 10');
 [ 1    ]
+#plan
+#SELECT 
x20,x47,x38,x18,x10,x22,x37,x3,x63,x8,x30,x43,x54,x9,x21,x25,x2,x61,x55,x32,x52,x29,x50,x12
+#  FROM 
t9,t20,t63,t54,t32,t22,t52,t25,t47,t29,t12,t18,t10,t21,t43,t37,t2,t61,t55,t3,t38,t50,t30,t8
+# WHERE b3=a18
+#   AND a25=b38
+#   AND a54=b8
+#   AND a61=b47
+#   AND a43=b29
+#   AND b18=a12
+#   AND b32=a30
+#   AND a22=b43
+#   AND a29=b21
+#   AND a10=b25
+#   AND a12=4
+#   AND b22=a32
+#   AND a20=b55
+#   AND b30=a9
+#   AND a2=b61
+#   AND a38=b52
+#   AND a55=b9
+#   AND a21=b50
+#   AND a37=b54
+#   AND b10=a3
+#   AND a52=b2
+#   AND a50=b63
+% .plan # table_name
+% rel # name
+% clob # type
+% 212 # length
+project (
+| join (
+| | join (
+| | | join (
+| | | | join (
+| | | | | join (
+| | | | | | join (
+| | | | | | | join (
+| | | | | | | | join (
+| | | | | | | | | join (
+| | | | | | | | | | join (
+| | | | | | | | | | | join (
+| | | | | | | | | | | | join (
+| | | | | | | | | | | | | join (
+| | | | | | | | | | | | | | join (
+| | | | | | | | | | | | | | | join (
+| | | | | | | | | | | | | | | | join (
+| | | | | | | | | | | | | | | | | join (
+| | | | | | | | | | | | | | | | | | join (
+| | | | | | | | | | | | | | | | | | | join (
+| | | | | | | | | | | | | | | | | | | | join (
+| | | | | | | | | | | | | | | | | | | | | join (
+| | | | | | | | | | | | | | | | | | | | | | join (
+| | | | | | | | | | | | | | | | | | | | | | | join (
+| | | | | | | | | | | | | | | | | | | | | | | | table(sys.t18) [ t18.a18 NOT 
NULL HASHCOL , t18.b18, t18.x18 ] COUNT ,
+| | | | | | | | | | | | | | | | | | | | | | | | select (
+| | | | | | | | | | | | | | | | | | | | | | | | | table(sys.t12) [ t12.a12 NOT 
NULL HASHCOL , t12.x12 ] COUNT 
+| | | | | | | | | | | | | | | | | | | | | | | | ) [ t12.a12 NOT NULL HASHCOL  
= int "4" ]
+| | | | | | | | | | | | | | | | | | | | | | | ) [ t18.b18 = t12.a12 NOT NULL 
HASHCOL  ],
+| | | | | | | | | | | | | | | | | | | | | | | table(sys.t3) [ t3.a3 NOT NULL 
HASHCOL , t3.b3, t3.x3 ] COUNT 
+| | | | | | | | | | | | | | | | | | | | | | ) [ t3.b3 = t18.a18 NOT NULL 
HASHCOL  ],
+| | | | | | | | | | | | | | | | | | | | | | table(sys.t10) [ t10.a10 NOT NULL 
HASHCOL , t10.b10, t10.x10 ] COUNT 
+| | | | | | | | | | | | | | | | | | | | | ) [ t10.b10 = t3.a3 NOT NULL HASHCOL 
 ],
+| | | | | | | | | | | | | | | | | | | | | table(sys.t25) [ t25.a25 NOT NULL 
HASHCOL , t25.b25, t25.x25 ] COUNT 
+| | | | | | | | | | | | | | | | | | | | ) [ t10.a10 NOT NULL HASHCOL  = 
t25.b25 ],
+| | | | | | | | | | | | | | | | | | | | table(sys.t38) [ t38.a38 NOT NULL 
HASHCOL , t38.b38, t38.x38 ] COUNT 
+| | | | | | | | | | | | | | | | | | | ) [ t25.a25 NOT NULL HASHCOL  = t38.b38 
],
+| | | | | | | | | | | | | | | | | | | table(sys.t52) [ t52.a52 NOT NULL 
HASHCOL , t52.b52, t52.x52 ] COUNT 
+| | | | | | | | | | | | | | | | | | ) [ t38.a38 NOT NULL HASHCOL  = t52.b52 ],
+| | | | | | | | | | | | | | | | | | table(sys.t2) [ t2.a2 NOT NULL HASHCOL , 
t2.b2, t2.x2 ] COUNT 
+| | | | | | | | | | | | | | | | | ) [ t52.a52 NOT NULL HASHCOL  = t2.b2 ],
+| | | | | | | | | | | | | | | | | table(sys.t61) [ t61.a61 NOT NULL HASHCOL , 
t61.b61, t61.x61 ] COUNT 
+| | | | | | | | | | | | | | | | ) [ t2.a2 NOT NULL HASHCOL  = t61.b61 ],
+| | | | | | | | | | | | | | | | table(sys.t47) [ t47.a47 NOT NULL HASHCOL , 
t47.b47, t47.x47 ] COUNT 
+| | | | | | | | | | | | | | | ) [ t61.a61 NOT NULL HASHCOL  = t47.b47 ],
+| | | | | | | | | | | | | | | table(sys.t37) [ t37.a37 NOT NULL HASHCOL , 
t37.b37, t37.x37 ] COUNT 
+| | | | | | | | | | | | | | ) [ t47.a47 NOT NULL HASHCOL  = t37.b37 ],
+| | | | | | | | | | | | | | table(sys.t54) [ t54.a54 NOT NULL HASHCOL , 
t54.b54, t54.x54 ] COUNT 
+| | | | | | | | | | | | | ) [ t37.a37 NOT NULL HASHCOL  = t54.b54 ],
+| | | | | | | | | | | | | table(sys.t8) [ t8.a8 NOT NULL HASHCOL , t8.b8, 
t8.x8 ] COUNT 
+| | | | | | | | | | | | ) [ t54.a54 NOT NULL HASHCOL  = t8.b8 ],
+| | | | | | | | | | | | table(sys.t20) [ t20.a20 NOT NULL HASHCOL , t20.b20, 
t20.x20 ] COUNT 
+| | | | | | | | | | | ) [ t8.a8 NOT NULL HASHCOL  = t20.b20 ],
+| | | | | | | | | | | table(sys.t55) [ t55.a55 NOT NULL HASHCOL , t55.b55, 
t55.x55 ] COUNT 
+| | | | | | | | | | ) [ t20.a20 NOT NULL HASHCOL  = t55.b55 ],
+| | | | | | | | | | table(sys.t9) [ t9.a9 NOT NULL HASHCOL , t9.b9, t9.x9 ] 
COUNT 
+| | | | | | | | | ) [ t55.a55 NOT NULL HASHCOL  = t9.b9 ],
+| | | | | | | | | table(sys.t30) [ t30.a30 NOT NULL HASHCOL , t30.b30, t30.x30 
] COUNT 
+| | | | | | | | ) [ t30.b30 = t9.a9 NOT NULL HASHCOL  ],
+| | | | | | | | table(sys.t32) [ t32.a32 NOT NULL HASHCOL , t32.b32, t32.x32 ] 
COUNT 
+| | | | | | | ) [ t32.b32 = t30.a30 NOT NULL HASHCOL  ],
+| | | | | | | table(sys.t22) [ t22.a22 NOT NULL HASHCOL , t22.b22, t22.x22 ] 
COUNT 
+| | | | | | ) [ t22.b22 = t32.a32 NOT NULL HASHCOL  ],
+| | | | | | table(sys.t43) [ t43.a43 NOT NULL HASHCOL , t43.b43, t43.x43 ] 
COUNT 
+| | | | | ) [ t22.a22 NOT NULL HASHCOL  = t43.b43 ],
+| | | | | table(sys.t29) [ t29.a29 NOT NULL HASHCOL , t29.b29, t29.x29 ] COUNT 
+| | | | ) [ t43.a43 NOT NULL HASHCOL  = t29.b29 ],
+| | | | table(sys.t21) [ t21.a21 NOT NULL HASHCOL , t21.b21, t21.x21 ] COUNT 
+| | | ) [ t29.a29 NOT NULL HASHCOL  = t21.b21 ],
+| | | table(sys.t50) [ t50.a50 NOT NULL HASHCOL , t50.b50, t50.x50 ] COUNT 
+| | ) [ t21.a21 NOT NULL HASHCOL  = t50.b50 ],
+| | table(sys.t63) [ t63.b63, t63.x63 ] COUNT 
+| ) [ t50.a50 NOT NULL HASHCOL  = t63.b63 ]
+) [ t20.x20, t47.x47, t38.x38, t18.x18, t10.x10, t22.x22, t37.x37, t3.x3, 
t63.x63, t8.x8, t30.x30, t43.x43, t54.x54, t9.x9, t21.x21, t25.x25, t2.x2, 
t61.x61, t55.x55, t32.x32, t52.x52, t29.x29, t50.x50, t12.x12 ]
 #SELECT 
x20,x47,x38,x18,x10,x22,x37,x3,x63,x8,x30,x43,x54,x9,x21,x25,x2,x61,x55,x32,x52,x29,x50,x12
 #  FROM 
t9,t20,t63,t54,t32,t22,t52,t25,t47,t29,t12,t18,t10,t21,t43,t37,t2,t61,t55,t3,t38,t50,t30,t8
 # WHERE b3=a18
@@ -1402,6 +1505,418 @@ Ready.
 % varchar,     varchar,        varchar,        varchar,        varchar,        
varchar,        varchar,        varchar,        varchar,        varchar,        
varchar,        varchar,        varchar,        varchar,        varchar,        
varchar,        varchar,        varchar,        varchar,        varchar,        
varchar,        varchar,        varchar,        varchar # type
 % 15,  16,     15,     16,     15,     15,     15,     14,     15,     14,     
15,     15,     15,     14,     15,     15,     15,     15,     15,     15,     
15,     16,     15,     15 # length
 [ "table t20 row 5",   "table t47 row 10",     "table t38 row 5",      "table 
t18 row 10",     "table t10 row 1",      "table t22 row 2",      "table t37 row 
9",      "table t3 row 8",       "table t63 row 3",      "table t8 row 6",      
 "table t30 row 6",      "table t43 row 1",      "table t54 row 4",      "table 
t9 row 4",       "table t21 row 8",      "table t25 row 4",      "table t2 row 
10",      "table t61 row 8",      "table t55 row 5",      "table t32 row 3",    
  "table t52 row 1",      "table t29 row 10",     "table t50 row 1",      
"table t12 row 4"       ]
+#plan
+#SELECT 
x20,x47,x38,x18,x10,x22,x37,x3,x63,x8,x30,x43,x54,x9,x21,x25,x2,x61,x55,x32,x52,x29,x50,x12
+#  FROM 
t2,t9,t20,t63,t54,t32,t22,t52,t25,t47,t29,t12,t18,t10,t21,t43,t37,t61,t55,t3,t38,t50,t30,t8
+# WHERE b3=a18
+#   AND a25=b38
+#   AND a54=b8
+#   AND a61=b47
+#   AND a43=b29
+#   AND b18=a12
+#   AND b32=a30
+#   AND a22=b43
+#   AND a29=b21
+#   AND a10=b25
+#   AND a12=4
+#   AND b22=a32
+#   AND a20=b55
+#   AND b30=a9
+#   AND a2=b61
+#   AND a38=b52
+#   AND a55=b9
+#   AND a21=b50
+#   AND a37=b54
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to