Changeset: 59de99d3ebc9 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=59de99d3ebc9
Branch: default
Log Message:

Merged with octbugs


diffs (176 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
@@ -1342,11 +1342,14 @@ can_push_func(sql_exp *e, sql_rel *rel, 
 
                if (e->flag == cmp_or || e->flag == cmp_in || e->flag == 
cmp_notin || e->flag == cmp_filter)
                        return 0;
-               return ((l->type == e_column || can_push_func(l, rel, &mustl)) 
&& (*must = mustl)) ||
-                               (!f && (r->type == e_column || can_push_func(r, 
rel, &mustr)) && (*must = mustr)) ||
-                       (f &&
-                               (r->type == e_column || can_push_func(r, rel, 
&mustr)) &&
-                       (f->type == e_column || can_push_func(f, rel, &mustf)) 
&& (*must = (mustr || mustf)));
+               if (!f) {
+                       return ((l->type == e_column || can_push_func(l, rel, 
&mustl)) && (*must = mustl)) ||
+                                  ((r->type == e_column || can_push_func(r, 
rel, &mustr)) && (*must = mustr));
+               } else {
+                       return (l->type == e_column || can_push_func(l, rel, 
&mustl)) &&
+                                  (r->type == e_column || can_push_func(r, 
rel, &mustr)) &&
+                                  (f->type == e_column || can_push_func(f, 
rel, &mustf)) && (*must = (mustl || mustr || mustf));
+               }
        }
        case e_convert:
                return can_push_func(e->l, rel, must);
diff --git a/sql/test/miscellaneous/Tests/simple_plans.stable.out 
b/sql/test/miscellaneous/Tests/simple_plans.stable.out
--- a/sql/test/miscellaneous/Tests/simple_plans.stable.out
+++ b/sql/test/miscellaneous/Tests/simple_plans.stable.out
@@ -284,61 +284,61 @@ end user.main;
 % clob # type
 % 174 # length
 function user.main():void;
-    X_1:void := querylog.define("explain select 1 from another_t t1 inner join 
another_t t2 on t1.col1 between t2.col1 - 1 and t2.col1 + 1;":str, 
"default_pipe":str, 31:int);
-barrier X_164:bit := language.dataflow();
-    X_45:bat[:str] := bat.pack(".%3":str);
-    X_46:bat[:str] := bat.pack("%3":str);
-    X_47:bat[:str] := bat.pack("tinyint":str);
-    X_48:bat[:int] := bat.pack(1:int);
-    X_49:bat[:int] := bat.pack(0:int);
+    X_1:void := querylog.define("explain select 1 from another_t t1 inner join 
another_t t2 on t1.col1 between t2.col1 - 1 and t2.col1 + 1;":str, 
"default_pipe":str, 29:int);
+barrier X_154:bit := language.dataflow();
+    X_43:bat[:str] := bat.pack(".%1":str);
+    X_44:bat[:str] := bat.pack("%1":str);
+    X_45:bat[:str] := bat.pack("tinyint":str);
+    X_46:bat[:int] := bat.pack(1:int);
+    X_47:bat[:int] := bat.pack(0:int);
     X_4:int := sql.mvc();
-    C_98:bat[:oid] := sql.tid(X_4:int, "sys":str, "another_t":str, 0:int, 
4:int);
-    X_109:bat[:int] := sql.bind(X_4:int, "sys":str, "another_t":str, 
"col1":str, 0:int, 0:int, 4:int);
-    X_114:bat[:int] := algebra.projection(C_98:bat[:oid], X_109:bat[:int]);
-    X_118:bat[:lng] := batcalc.lng(X_114:bat[:int]);
+    C_96:bat[:oid] := sql.tid(X_4:int, "sys":str, "another_t":str, 0:int, 
4:int);
+    X_107:bat[:int] := sql.bind(X_4:int, "sys":str, "another_t":str, 
"col1":str, 0:int, 0:int, 4:int);
+    X_112:bat[:int] := algebra.projection(C_96:bat[:oid], X_107:bat[:int]);
+    X_116:bat[:lng] := batcalc.lng(X_112:bat[:int]);
     C_12:bat[:oid] := sql.tid(X_4:int, "sys":str, "another_t":str);
     X_14:bat[:int] := sql.bind(X_4:int, "sys":str, "another_t":str, 
"col1":str, 0:int);
-    X_15:bat[:int] := algebra.projection(C_12:bat[:oid], X_14:bat[:int]);
-    X_16:bat[:lng] := batcalc.lng(X_15:bat[:int]);
-    X_19:bat[:lng] := batcalc.-(X_16:bat[:lng], 1:lng, nil:BAT);
-    X_24:bat[:lng] := batcalc.+(X_16:bat[:lng], 1:lng, nil:BAT);
-    X_122:bat[:oid] := algebra.rangejoin(X_118:bat[:lng], X_19:bat[:lng], 
X_24:bat[:lng], nil:BAT, nil:BAT, true:bit, true:bit, false:bit, false:bit, 
nil:lng);
-    X_130:bat[:int] := algebra.projection(X_122:bat[:oid], X_114:bat[:int]);
-    X_146:bat[:bte] := algebra.project(X_130:bat[:int], 1:bte);
-    C_100:bat[:oid] := sql.tid(X_4:int, "sys":str, "another_t":str, 1:int, 
4:int);
-    X_110:bat[:int] := sql.bind(X_4:int, "sys":str, "another_t":str, 
"col1":str, 0:int, 1:int, 4:int);
-    X_115:bat[:int] := algebra.projection(C_100:bat[:oid], X_110:bat[:int]);
+    X_16:bat[:int] := algebra.projection(C_12:bat[:oid], X_14:bat[:int]);
+    X_18:bat[:lng] := batcalc.lng(X_16:bat[:int]);
+    X_21:bat[:lng] := batcalc.-(X_18:bat[:lng], 1:lng, nil:BAT);
+    X_26:bat[:lng] := batcalc.+(X_18:bat[:lng], 1:lng, nil:BAT);
+    X_120:bat[:oid] := algebra.rangejoin(X_116:bat[:lng], X_21:bat[:lng], 
X_26:bat[:lng], nil:BAT, nil:BAT, true:bit, true:bit, false:bit, false:bit, 
nil:lng);
+    X_128:bat[:int] := algebra.projection(X_120:bat[:oid], X_112:bat[:int]);
+    X_136:bat[:bte] := algebra.project(X_128:bat[:int], 1:bte);
+    C_98:bat[:oid] := sql.tid(X_4:int, "sys":str, "another_t":str, 1:int, 
4:int);
+    X_108:bat[:int] := sql.bind(X_4:int, "sys":str, "another_t":str, 
"col1":str, 0:int, 1:int, 4:int);
+    X_113:bat[:int] := algebra.projection(C_98:bat[:oid], X_108:bat[:int]);
+    X_117:bat[:lng] := batcalc.lng(X_113:bat[:int]);
+    X_122:bat[:oid] := algebra.rangejoin(X_117:bat[:lng], X_21:bat[:lng], 
X_26:bat[:lng], nil:BAT, nil:BAT, true:bit, true:bit, false:bit, false:bit, 
nil:lng);
+    X_129:bat[:int] := algebra.projection(X_122:bat[:oid], X_113:bat[:int]);
+    X_137:bat[:bte] := algebra.project(X_129:bat[:int], 1:bte);
+    C_100:bat[:oid] := sql.tid(X_4:int, "sys":str, "another_t":str, 2:int, 
4:int);
+    X_109:bat[:int] := sql.bind(X_4:int, "sys":str, "another_t":str, 
"col1":str, 0:int, 2:int, 4:int);
+    X_114:bat[:int] := algebra.projection(C_100:bat[:oid], X_109:bat[:int]);
+    X_118:bat[:lng] := batcalc.lng(X_114:bat[:int]);
+    X_124:bat[:oid] := algebra.rangejoin(X_118:bat[:lng], X_21:bat[:lng], 
X_26:bat[:lng], nil:BAT, nil:BAT, true:bit, true:bit, false:bit, false:bit, 
nil:lng);
+    X_130:bat[:int] := algebra.projection(X_124:bat[:oid], X_114:bat[:int]);
+    X_138:bat[:bte] := algebra.project(X_130:bat[:int], 1:bte);
+    C_102:bat[:oid] := sql.tid(X_4:int, "sys":str, "another_t":str, 3:int, 
4:int);
+    X_110:bat[:int] := sql.bind(X_4:int, "sys":str, "another_t":str, 
"col1":str, 0:int, 3:int, 4:int);
+    X_115:bat[:int] := algebra.projection(C_102:bat[:oid], X_110:bat[:int]);
     X_119:bat[:lng] := batcalc.lng(X_115:bat[:int]);
-    X_124:bat[:oid] := algebra.rangejoin(X_119:bat[:lng], X_19:bat[:lng], 
X_24:bat[:lng], nil:BAT, nil:BAT, true:bit, true:bit, false:bit, false:bit, 
nil:lng);
-    X_131:bat[:int] := algebra.projection(X_124:bat[:oid], X_115:bat[:int]);
-    X_147:bat[:bte] := algebra.project(X_131:bat[:int], 1:bte);
-    C_102:bat[:oid] := sql.tid(X_4:int, "sys":str, "another_t":str, 2:int, 
4:int);
-    X_111:bat[:int] := sql.bind(X_4:int, "sys":str, "another_t":str, 
"col1":str, 0:int, 2:int, 4:int);
-    X_116:bat[:int] := algebra.projection(C_102:bat[:oid], X_111:bat[:int]);
-    X_120:bat[:lng] := batcalc.lng(X_116:bat[:int]);
-    X_126:bat[:oid] := algebra.rangejoin(X_120:bat[:lng], X_19:bat[:lng], 
X_24:bat[:lng], nil:BAT, nil:BAT, true:bit, true:bit, false:bit, false:bit, 
nil:lng);
-    X_132:bat[:int] := algebra.projection(X_126:bat[:oid], X_116:bat[:int]);
-    X_148:bat[:bte] := algebra.project(X_132:bat[:int], 1:bte);
-    C_104:bat[:oid] := sql.tid(X_4:int, "sys":str, "another_t":str, 3:int, 
4:int);
-    X_112:bat[:int] := sql.bind(X_4:int, "sys":str, "another_t":str, 
"col1":str, 0:int, 3:int, 4:int);
-    X_117:bat[:int] := algebra.projection(C_104:bat[:oid], X_112:bat[:int]);
-    X_121:bat[:lng] := batcalc.lng(X_117:bat[:int]);
-    X_128:bat[:oid] := algebra.rangejoin(X_121:bat[:lng], X_19:bat[:lng], 
X_24:bat[:lng], nil:BAT, nil:BAT, true:bit, true:bit, false:bit, false:bit, 
nil:lng);
-    X_133:bat[:int] := algebra.projection(X_128:bat[:oid], X_117:bat[:int]);
-    X_149:bat[:bte] := algebra.project(X_133:bat[:int], 1:bte);
-    X_158:bat[:bte] := mat.packIncrement(X_146:bat[:bte], 4:int);
-    X_160:bat[:bte] := mat.packIncrement(X_158:bat[:bte], X_147:bat[:bte]);
-    X_161:bat[:bte] := mat.packIncrement(X_160:bat[:bte], X_148:bat[:bte]);
-    X_43:bat[:bte] := mat.packIncrement(X_161:bat[:bte], X_149:bat[:bte]);
-    language.pass(X_16:bat[:lng]);
+    X_126:bat[:oid] := algebra.rangejoin(X_119:bat[:lng], X_21:bat[:lng], 
X_26:bat[:lng], nil:BAT, nil:BAT, true:bit, true:bit, false:bit, false:bit, 
nil:lng);
+    X_131:bat[:int] := algebra.projection(X_126:bat[:oid], X_115:bat[:int]);
+    X_139:bat[:bte] := algebra.project(X_131:bat[:int], 1:bte);
+    X_148:bat[:bte] := mat.packIncrement(X_136:bat[:bte], 4:int);
+    X_150:bat[:bte] := mat.packIncrement(X_148:bat[:bte], X_137:bat[:bte]);
+    X_151:bat[:bte] := mat.packIncrement(X_150:bat[:bte], X_138:bat[:bte]);
+    X_41:bat[:bte] := mat.packIncrement(X_151:bat[:bte], X_139:bat[:bte]);
+    language.pass(X_18:bat[:lng]);
+    language.pass(X_112:bat[:int]);
+    language.pass(X_113:bat[:int]);
     language.pass(X_114:bat[:int]);
+    language.pass(X_21:bat[:lng]);
+    language.pass(X_26:bat[:lng]);
     language.pass(X_115:bat[:int]);
-    language.pass(X_116:bat[:int]);
-    language.pass(X_19:bat[:lng]);
-    language.pass(X_24:bat[:lng]);
-    language.pass(X_117:bat[:int]);
-exit X_164:bit;
-    sql.resultSet(X_45:bat[:str], X_46:bat[:str], X_47:bat[:str], 
X_48:bat[:int], X_49:bat[:int], X_43:bat[:bte]);
+exit X_154:bit;
+    sql.resultSet(X_43:bat[:str], X_44:bat[:str], X_45:bat[:str], 
X_46:bat[:int], X_47:bat[:int], X_41:bat[:bte]);
 end user.main;
 #inline               actions= 0 time=1 usec 
 #remap                actions= 2 time=106 usec 
diff --git a/sql/test/miscellaneous/Tests/simple_plans.stable.out.single 
b/sql/test/miscellaneous/Tests/simple_plans.stable.out.single
--- a/sql/test/miscellaneous/Tests/simple_plans.stable.out.single
+++ b/sql/test/miscellaneous/Tests/simple_plans.stable.out.single
@@ -252,23 +252,23 @@ end user.main;
 % clob # type
 % 174 # length
 function user.main():void;
-    X_1:void := querylog.define("explain select 1 from another_t t1 inner join 
another_t t2 on t1.col1 between t2.col1 - 1 and t2.col1 + 1;":str, 
"default_pipe":str, 31:int);
-    X_45:bat[:str] := bat.pack(".%3":str);
-    X_46:bat[:str] := bat.pack("%3":str);
-    X_47:bat[:str] := bat.pack("tinyint":str);
-    X_48:bat[:int] := bat.pack(1:int);
-    X_49:bat[:int] := bat.pack(0:int);
+    X_1:void := querylog.define("explain select 1 from another_t t1 inner join 
another_t t2 on t1.col1 between t2.col1 - 1 and t2.col1 + 1;":str, 
"default_pipe":str, 29:int);
+    X_43:bat[:str] := bat.pack(".%1":str);
+    X_44:bat[:str] := bat.pack("%1":str);
+    X_45:bat[:str] := bat.pack("tinyint":str);
+    X_46:bat[:int] := bat.pack(1:int);
+    X_47:bat[:int] := bat.pack(0:int);
     X_4:int := sql.mvc();
     C_5:bat[:oid] := sql.tid(X_4:int, "sys":str, "another_t":str);
     X_11:bat[:int] := sql.bind(X_4:int, "sys":str, "another_t":str, 
"col1":str, 0:int);
     X_15:bat[:int] := algebra.projection(C_5:bat[:oid], X_11:bat[:int]);
-    X_16:bat[:lng] := batcalc.lng(X_15:bat[:int]);
-    X_19:bat[:lng] := batcalc.-(X_16:bat[:lng], 1:lng, nil:BAT);
-    X_24:bat[:lng] := batcalc.+(X_16:bat[:lng], 1:lng, nil:BAT);
-    X_28:bat[:oid] := algebra.rangejoin(X_16:bat[:lng], X_19:bat[:lng], 
X_24:bat[:lng], nil:BAT, nil:BAT, true:bit, true:bit, false:bit, false:bit, 
nil:lng);
+    X_17:bat[:lng] := batcalc.lng(X_15:bat[:int]);
+    X_21:bat[:lng] := batcalc.-(X_17:bat[:lng], 1:lng, nil:BAT);
+    X_26:bat[:lng] := batcalc.+(X_17:bat[:lng], 1:lng, nil:BAT);
+    X_28:bat[:oid] := algebra.rangejoin(X_17:bat[:lng], X_21:bat[:lng], 
X_26:bat[:lng], nil:BAT, nil:BAT, true:bit, true:bit, false:bit, false:bit, 
nil:lng);
     X_37:bat[:int] := algebra.projection(X_28:bat[:oid], X_15:bat[:int]);
-    X_43:bat[:bte] := algebra.project(X_37:bat[:int], 1:bte);
-    sql.resultSet(X_45:bat[:str], X_46:bat[:str], X_47:bat[:str], 
X_48:bat[:int], X_49:bat[:int], X_43:bat[:bte]);
+    X_41:bat[:bte] := algebra.project(X_37:bat[:int], 1:bte);
+    sql.resultSet(X_43:bat[:str], X_44:bat[:str], X_45:bat[:str], 
X_46:bat[:int], X_47:bat[:int], X_41:bat[:bte]);
 end user.main;
 #inline               actions= 0 time=12 usec 
 #remap                actions= 2 time=134 usec 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to