Changeset: e1d7c2068e4f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e1d7c2068e4f
Modified Files:
        monetdb5/optimizer/opt_pushselect.c
        
sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
        sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
        sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
        sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
Branch: Jun2020
Log Message:

rewrite delta/projection of
        cnd = subdelta(..)
        col = delta(b, ui, uv, i)
        projection(cnd, col)
into
        deltaproject(cnd, b, ui, uv, i)


diffs (truncated from 370 to 300 lines):

diff --git a/monetdb5/optimizer/opt_pushselect.c 
b/monetdb5/optimizer/opt_pushselect.c
--- a/monetdb5/optimizer/opt_pushselect.c
+++ b/monetdb5/optimizer/opt_pushselect.c
@@ -674,6 +674,28 @@ OPTpushselectImplementation(Client cntxt
                                oclean[i] = 1;
                                continue;
                        }
+               } else if (getModuleId(p) == algebraRef && getFunctionId(p) == 
projectionRef) {
+                       int var = getArg(p, 2);
+                       InstrPtr q = old[vars[var]];
+                       
+                       if (getModuleId(q) == sqlRef && getFunctionId(q) == 
deltaRef && q->argc == 5) {
+                               q = copyInstruction(q);
+                               if( q == NULL){
+                                       GDKfree(vars);
+                                       GDKfree(nvars);
+                                       GDKfree(slices);
+                                       GDKfree(rslices);
+                                       GDKfree(oclean);
+                                       GDKfree(old);
+                                       throw(MAL,"optimizer.pushselect", 
SQLSTATE(HY013) MAL_MALLOC_FAIL);
+                               }
+                               setFunctionId(q, projectdeltaRef);
+                               getArg(q, 0) = getArg(p, 0); 
+                               q = PushArgument(mb, q, getArg(p, 1), 1);
+                               p = q;
+                               oclean[i] = 1;
+                               actions++;
+                       }
                }
                pushInstruction(mb,p);
        }
diff --git 
a/sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
 
b/sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
--- 
a/sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
+++ 
b/sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
@@ -45,13 +45,11 @@ function user.s4_0():void;
     X_19:bat[:str] := sql.bind(X_5:int, "sys":str, "functions":str, 
"name":str, 1:int);
     C_86:bat[:oid] := algebra.likeselect(X_19:bat[:str], C_6:bat[:oid], 
"%optimizers%":str, "":str, false:bit);
     C_32:bat[:oid] := sql.subdelta(C_83:bat[:oid], C_6:bat[:oid], 
X_20:bat[:oid], C_84:bat[:oid], C_86:bat[:oid]);
-    X_22:bat[:str] := sql.delta(X_18:bat[:str], X_20:bat[:oid], 
X_21:bat[:str], X_19:bat[:str]);
-    X_34:bat[:str] := algebra.projection(C_32:bat[:oid], X_22:bat[:str]);
+    X_34:bat[:str] := sql.projectdelta(C_32:bat[:oid], X_18:bat[:str], 
X_20:bat[:oid], X_21:bat[:str], X_19:bat[:str]);
     X_23:bat[:str] := sql.bind(X_5:int, "sys":str, "functions":str, 
"func":str, 0:int);
     (X_26:bat[:oid], X_27:bat[:str]) := sql.bind(X_5:int, "sys":str, 
"functions":str, "func":str, 2:int);
     X_25:bat[:str] := sql.bind(X_5:int, "sys":str, "functions":str, 
"func":str, 1:int);
-    X_28:bat[:str] := sql.delta(X_23:bat[:str], X_26:bat[:oid], 
X_27:bat[:str], X_25:bat[:str]);
-    X_35:bat[:str] := algebra.projection(C_32:bat[:oid], X_28:bat[:str]);
+    X_35:bat[:str] := sql.projectdelta(C_32:bat[:oid], X_23:bat[:str], 
X_26:bat[:oid], X_27:bat[:str], X_25:bat[:str]);
     sql.resultSet(X_37:bat[:str], X_38:bat[:str], X_39:bat[:str], 
X_40:bat[:int], X_41:bat[:int], X_34:bat[:str], X_35:bat[:str]);
 end user.s4_0;
 #inline               actions= 0 time=1 usec 
@@ -98,13 +96,11 @@ function user.s6_0():void;
     X_19:bat[:str] := sql.bind(X_5:int, "sys":str, "functions":str, 
"name":str, 1:int);
     C_86:bat[:oid] := algebra.likeselect(X_19:bat[:str], C_6:bat[:oid], 
"%optimizers%":str, "":str, true:bit);
     C_32:bat[:oid] := sql.subdelta(C_83:bat[:oid], C_6:bat[:oid], 
X_20:bat[:oid], C_84:bat[:oid], C_86:bat[:oid]);
-    X_22:bat[:str] := sql.delta(X_18:bat[:str], X_20:bat[:oid], 
X_21:bat[:str], X_19:bat[:str]);
-    X_34:bat[:str] := algebra.projection(C_32:bat[:oid], X_22:bat[:str]);
+    X_34:bat[:str] := sql.projectdelta(C_32:bat[:oid], X_18:bat[:str], 
X_20:bat[:oid], X_21:bat[:str], X_19:bat[:str]);
     X_23:bat[:str] := sql.bind(X_5:int, "sys":str, "functions":str, 
"func":str, 0:int);
     (X_26:bat[:oid], X_27:bat[:str]) := sql.bind(X_5:int, "sys":str, 
"functions":str, "func":str, 2:int);
     X_25:bat[:str] := sql.bind(X_5:int, "sys":str, "functions":str, 
"func":str, 1:int);
-    X_28:bat[:str] := sql.delta(X_23:bat[:str], X_26:bat[:oid], 
X_27:bat[:str], X_25:bat[:str]);
-    X_35:bat[:str] := algebra.projection(C_32:bat[:oid], X_28:bat[:str]);
+    X_35:bat[:str] := sql.projectdelta(C_32:bat[:oid], X_23:bat[:str], 
X_26:bat[:oid], X_27:bat[:str], X_25:bat[:str]);
     sql.resultSet(X_37:bat[:str], X_38:bat[:str], X_39:bat[:str], 
X_40:bat[:int], X_41:bat[:int], X_34:bat[:str], X_35:bat[:str]);
 end user.s6_0;
 #inline               actions= 0 time=1 usec 
@@ -152,13 +148,11 @@ function user.s8_0():void;
     X_19:bat[:str] := sql.bind(X_5:int, "sys":str, "functions":str, 
"name":str, 1:int);
     C_86:bat[:oid] := algebra.ilikeselect(X_19:bat[:str], C_6:bat[:oid], 
"%optimizers%":str, "":str, false:bit);
     C_32:bat[:oid] := sql.subdelta(C_83:bat[:oid], C_6:bat[:oid], 
X_20:bat[:oid], C_84:bat[:oid], C_86:bat[:oid]);
-    X_22:bat[:str] := sql.delta(X_18:bat[:str], X_20:bat[:oid], 
X_21:bat[:str], X_19:bat[:str]);
-    X_34:bat[:str] := algebra.projection(C_32:bat[:oid], X_22:bat[:str]);
+    X_34:bat[:str] := sql.projectdelta(C_32:bat[:oid], X_18:bat[:str], 
X_20:bat[:oid], X_21:bat[:str], X_19:bat[:str]);
     X_23:bat[:str] := sql.bind(X_5:int, "sys":str, "functions":str, 
"func":str, 0:int);
     (X_26:bat[:oid], X_27:bat[:str]) := sql.bind(X_5:int, "sys":str, 
"functions":str, "func":str, 2:int);
     X_25:bat[:str] := sql.bind(X_5:int, "sys":str, "functions":str, 
"func":str, 1:int);
-    X_28:bat[:str] := sql.delta(X_23:bat[:str], X_26:bat[:oid], 
X_27:bat[:str], X_25:bat[:str]);
-    X_35:bat[:str] := algebra.projection(C_32:bat[:oid], X_28:bat[:str]);
+    X_35:bat[:str] := sql.projectdelta(C_32:bat[:oid], X_23:bat[:str], 
X_26:bat[:oid], X_27:bat[:str], X_25:bat[:str]);
     sql.resultSet(X_37:bat[:str], X_38:bat[:str], X_39:bat[:str], 
X_40:bat[:int], X_41:bat[:int], X_34:bat[:str], X_35:bat[:str]);
 end user.s8_0;
 #inline               actions= 0 time=1 usec 
@@ -204,13 +198,11 @@ function user.s10_0():void;
     X_19:bat[:str] := sql.bind(X_5:int, "sys":str, "functions":str, 
"name":str, 1:int);
     C_86:bat[:oid] := algebra.ilikeselect(X_19:bat[:str], C_6:bat[:oid], 
"%optimizers%":str, "":str, true:bit);
     C_32:bat[:oid] := sql.subdelta(C_83:bat[:oid], C_6:bat[:oid], 
X_20:bat[:oid], C_84:bat[:oid], C_86:bat[:oid]);
-    X_22:bat[:str] := sql.delta(X_18:bat[:str], X_20:bat[:oid], 
X_21:bat[:str], X_19:bat[:str]);
-    X_34:bat[:str] := algebra.projection(C_32:bat[:oid], X_22:bat[:str]);
+    X_34:bat[:str] := sql.projectdelta(C_32:bat[:oid], X_18:bat[:str], 
X_20:bat[:oid], X_21:bat[:str], X_19:bat[:str]);
     X_23:bat[:str] := sql.bind(X_5:int, "sys":str, "functions":str, 
"func":str, 0:int);
     (X_26:bat[:oid], X_27:bat[:str]) := sql.bind(X_5:int, "sys":str, 
"functions":str, "func":str, 2:int);
     X_25:bat[:str] := sql.bind(X_5:int, "sys":str, "functions":str, 
"func":str, 1:int);
-    X_28:bat[:str] := sql.delta(X_23:bat[:str], X_26:bat[:oid], 
X_27:bat[:str], X_25:bat[:str]);
-    X_35:bat[:str] := algebra.projection(C_32:bat[:oid], X_28:bat[:str]);
+    X_35:bat[:str] := sql.projectdelta(C_32:bat[:oid], X_23:bat[:str], 
X_26:bat[:oid], X_27:bat[:str], X_25:bat[:str]);
     sql.resultSet(X_37:bat[:str], X_38:bat[:str], X_39:bat[:str], 
X_40:bat[:int], X_41:bat[:int], X_34:bat[:str], X_35:bat[:str]);
 end user.s10_0;
 #inline               actions= 0 time=0 usec 
@@ -277,12 +269,11 @@ function user.s20_0():void;
     X_91:bat[:bit] := batalgebra.like(X_22:bat[:str], "%optimizers%":str);
     C_6:bat[:oid] := sql.tid(X_5:int, "sys":str, "functions":str);
     C_35:bat[:oid] := algebra.thetaselect(X_91:bat[:bit], C_6:bat[:oid], 
true:bit, "==":str);
-    X_37:bat[:str] := algebra.projection(C_35:bat[:oid], X_22:bat[:str]);
+    X_37:bat[:str] := sql.projectdelta(C_35:bat[:oid], X_18:bat[:str], 
X_20:bat[:oid], X_21:bat[:str], X_19:bat[:str]);
     X_23:bat[:str] := sql.bind(X_5:int, "sys":str, "functions":str, 
"func":str, 0:int);
     (X_26:bat[:oid], X_27:bat[:str]) := sql.bind(X_5:int, "sys":str, 
"functions":str, "func":str, 2:int);
     X_25:bat[:str] := sql.bind(X_5:int, "sys":str, "functions":str, 
"func":str, 1:int);
-    X_28:bat[:str] := sql.delta(X_23:bat[:str], X_26:bat[:oid], 
X_27:bat[:str], X_25:bat[:str]);
-    X_38:bat[:str] := algebra.projection(C_35:bat[:oid], X_28:bat[:str]);
+    X_38:bat[:str] := sql.projectdelta(C_35:bat[:oid], X_23:bat[:str], 
X_26:bat[:oid], X_27:bat[:str], X_25:bat[:str]);
     sql.resultSet(X_40:bat[:str], X_41:bat[:str], X_42:bat[:str], 
X_43:bat[:int], X_44:bat[:int], X_37:bat[:str], X_38:bat[:str]);
 end user.s20_0;
 #inline               actions= 0 time=4 usec 
@@ -330,12 +321,11 @@ function user.s22_0():void;
     X_91:bat[:bit] := batalgebra.not_like(X_22:bat[:str], "%optimizers%":str);
     C_6:bat[:oid] := sql.tid(X_5:int, "sys":str, "functions":str);
     C_35:bat[:oid] := algebra.thetaselect(X_91:bat[:bit], C_6:bat[:oid], 
true:bit, "==":str);
-    X_37:bat[:str] := algebra.projection(C_35:bat[:oid], X_22:bat[:str]);
+    X_37:bat[:str] := sql.projectdelta(C_35:bat[:oid], X_18:bat[:str], 
X_20:bat[:oid], X_21:bat[:str], X_19:bat[:str]);
     X_23:bat[:str] := sql.bind(X_5:int, "sys":str, "functions":str, 
"func":str, 0:int);
     (X_26:bat[:oid], X_27:bat[:str]) := sql.bind(X_5:int, "sys":str, 
"functions":str, "func":str, 2:int);
     X_25:bat[:str] := sql.bind(X_5:int, "sys":str, "functions":str, 
"func":str, 1:int);
-    X_28:bat[:str] := sql.delta(X_23:bat[:str], X_26:bat[:oid], 
X_27:bat[:str], X_25:bat[:str]);
-    X_38:bat[:str] := algebra.projection(C_35:bat[:oid], X_28:bat[:str]);
+    X_38:bat[:str] := sql.projectdelta(C_35:bat[:oid], X_23:bat[:str], 
X_26:bat[:oid], X_27:bat[:str], X_25:bat[:str]);
     sql.resultSet(X_40:bat[:str], X_41:bat[:str], X_42:bat[:str], 
X_43:bat[:int], X_44:bat[:int], X_37:bat[:str], X_38:bat[:str]);
 end user.s22_0;
 #inline               actions= 0 time=4 usec 
@@ -383,12 +373,11 @@ function user.s24_0():void;
     X_91:bat[:bit] := batalgebra.ilike(X_22:bat[:str], "%optimizers%":str);
     C_6:bat[:oid] := sql.tid(X_5:int, "sys":str, "functions":str);
     C_35:bat[:oid] := algebra.thetaselect(X_91:bat[:bit], C_6:bat[:oid], 
true:bit, "==":str);
-    X_37:bat[:str] := algebra.projection(C_35:bat[:oid], X_22:bat[:str]);
+    X_37:bat[:str] := sql.projectdelta(C_35:bat[:oid], X_18:bat[:str], 
X_20:bat[:oid], X_21:bat[:str], X_19:bat[:str]);
     X_23:bat[:str] := sql.bind(X_5:int, "sys":str, "functions":str, 
"func":str, 0:int);
     (X_26:bat[:oid], X_27:bat[:str]) := sql.bind(X_5:int, "sys":str, 
"functions":str, "func":str, 2:int);
     X_25:bat[:str] := sql.bind(X_5:int, "sys":str, "functions":str, 
"func":str, 1:int);
-    X_28:bat[:str] := sql.delta(X_23:bat[:str], X_26:bat[:oid], 
X_27:bat[:str], X_25:bat[:str]);
-    X_38:bat[:str] := algebra.projection(C_35:bat[:oid], X_28:bat[:str]);
+    X_38:bat[:str] := sql.projectdelta(C_35:bat[:oid], X_23:bat[:str], 
X_26:bat[:oid], X_27:bat[:str], X_25:bat[:str]);
     sql.resultSet(X_40:bat[:str], X_41:bat[:str], X_42:bat[:str], 
X_43:bat[:int], X_44:bat[:int], X_37:bat[:str], X_38:bat[:str]);
 end user.s24_0;
 #inline               actions= 0 time=3 usec 
@@ -436,12 +425,11 @@ function user.s26_0():void;
     X_91:bat[:bit] := batalgebra.not_ilike(X_22:bat[:str], "%optimizers%":str);
     C_6:bat[:oid] := sql.tid(X_5:int, "sys":str, "functions":str);
     C_35:bat[:oid] := algebra.thetaselect(X_91:bat[:bit], C_6:bat[:oid], 
true:bit, "==":str);
-    X_37:bat[:str] := algebra.projection(C_35:bat[:oid], X_22:bat[:str]);
+    X_37:bat[:str] := sql.projectdelta(C_35:bat[:oid], X_18:bat[:str], 
X_20:bat[:oid], X_21:bat[:str], X_19:bat[:str]);
     X_23:bat[:str] := sql.bind(X_5:int, "sys":str, "functions":str, 
"func":str, 0:int);
     (X_26:bat[:oid], X_27:bat[:str]) := sql.bind(X_5:int, "sys":str, 
"functions":str, "func":str, 2:int);
     X_25:bat[:str] := sql.bind(X_5:int, "sys":str, "functions":str, 
"func":str, 1:int);
-    X_28:bat[:str] := sql.delta(X_23:bat[:str], X_26:bat[:oid], 
X_27:bat[:str], X_25:bat[:str]);
-    X_38:bat[:str] := algebra.projection(C_35:bat[:oid], X_28:bat[:str]);
+    X_38:bat[:str] := sql.projectdelta(C_35:bat[:oid], X_23:bat[:str], 
X_26:bat[:oid], X_27:bat[:str], X_25:bat[:str]);
     sql.resultSet(X_40:bat[:str], X_41:bat[:str], X_42:bat[:str], 
X_43:bat[:int], X_44:bat[:int], X_37:bat[:str], X_38:bat[:str]);
 end user.s26_0;
 #inline               actions= 0 time=3 usec 
diff --git a/sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out 
b/sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
--- a/sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
+++ b/sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
@@ -73,14 +73,12 @@ function user.s4_0():void;
     X_24:bat[:str] := sql.bind(X_6:int, "sys":str, "functions":str, 
"name":str, 0:int);
     (X_27:bat[:oid], X_28:bat[:str]) := sql.bind(X_6:int, "sys":str, 
"functions":str, "name":str, 2:int);
     X_26:bat[:str] := sql.bind(X_6:int, "sys":str, "functions":str, 
"name":str, 1:int);
-    X_29:bat[:str] := sql.delta(X_24:bat[:str], X_27:bat[:oid], 
X_28:bat[:str], X_26:bat[:str]);
-    X_31:bat[:str] := algebra.projection(C_7:bat[:oid], X_29:bat[:str]);
+    X_31:bat[:str] := sql.projectdelta(C_7:bat[:oid], X_24:bat[:str], 
X_27:bat[:oid], X_28:bat[:str], X_26:bat[:str]);
     X_34:bat[:str] := mal.manifold("str":str, "replace":str, X_31:bat[:str], 
"a":str, "A":str);
     X_19:bat[:int] := sql.bind(X_6:int, "sys":str, "functions":str, "id":str, 
0:int);
     (X_21:bat[:oid], X_22:bat[:int]) := sql.bind(X_6:int, "sys":str, 
"functions":str, "id":str, 2:int);
     X_20:bat[:int] := sql.bind(X_6:int, "sys":str, "functions":str, "id":str, 
1:int);
-    X_23:bat[:int] := sql.delta(X_19:bat[:int], X_21:bat[:oid], 
X_22:bat[:int], X_20:bat[:int]);
-    X_30:bat[:int] := algebra.projection(C_7:bat[:oid], X_23:bat[:int]);
+    X_30:bat[:int] := sql.projectdelta(C_7:bat[:oid], X_19:bat[:int], 
X_21:bat[:oid], X_22:bat[:int], X_20:bat[:int]);
     sql.resultSet(X_38:bat[:str], X_39:bat[:str], X_40:bat[:str], 
X_41:bat[:int], X_42:bat[:int], X_34:bat[:str], X_30:bat[:int]);
 end user.s4_0;
 #inline               actions= 0 time=2 usec 
@@ -129,13 +127,11 @@ function user.s6_0():void;
     X_25:bat[:str] := sql.bind(X_7:int, "sys":str, "functions":str, 
"name":str, 0:int);
     (X_28:bat[:oid], X_29:bat[:str]) := sql.bind(X_7:int, "sys":str, 
"functions":str, "name":str, 2:int);
     X_27:bat[:str] := sql.bind(X_7:int, "sys":str, "functions":str, 
"name":str, 1:int);
-    X_30:bat[:str] := sql.delta(X_25:bat[:str], X_28:bat[:oid], 
X_29:bat[:str], X_27:bat[:str]);
-    X_32:bat[:str] := algebra.projection(C_8:bat[:oid], X_30:bat[:str]);
+    X_32:bat[:str] := sql.projectdelta(C_8:bat[:oid], X_25:bat[:str], 
X_28:bat[:oid], X_29:bat[:str], X_27:bat[:str]);
     X_20:bat[:int] := sql.bind(X_7:int, "sys":str, "functions":str, "id":str, 
0:int);
     (X_22:bat[:oid], X_23:bat[:int]) := sql.bind(X_7:int, "sys":str, 
"functions":str, "id":str, 2:int);
     X_21:bat[:int] := sql.bind(X_7:int, "sys":str, "functions":str, "id":str, 
1:int);
-    X_24:bat[:int] := sql.delta(X_20:bat[:int], X_22:bat[:oid], 
X_23:bat[:int], X_21:bat[:int]);
-    X_31:bat[:int] := algebra.projection(C_8:bat[:oid], X_24:bat[:int]);
+    X_31:bat[:int] := sql.projectdelta(C_8:bat[:oid], X_20:bat[:int], 
X_22:bat[:oid], X_23:bat[:int], X_21:bat[:int]);
     X_34:bat[:str] := algebra.project(X_31:bat[:int], "a":str);
     X_36:bat[:str] := algebra.project(X_31:bat[:int], "A":str);
     X_43:bat[:str] := mal.manifold("str":str, "replace":str, X_32:bat[:str], 
X_34:bat[:str], X_36:bat[:str]);
@@ -189,13 +185,11 @@ function user.s8_0():void;
     X_24:bat[:str] := sql.bind(X_6:int, "sys":str, "functions":str, 
"name":str, 0:int);
     (X_27:bat[:oid], X_28:bat[:str]) := sql.bind(X_6:int, "sys":str, 
"functions":str, "name":str, 2:int);
     X_26:bat[:str] := sql.bind(X_6:int, "sys":str, "functions":str, 
"name":str, 1:int);
-    X_29:bat[:str] := sql.delta(X_24:bat[:str], X_27:bat[:oid], 
X_28:bat[:str], X_26:bat[:str]);
-    X_31:bat[:str] := algebra.projection(C_7:bat[:oid], X_29:bat[:str]);
+    X_31:bat[:str] := sql.projectdelta(C_7:bat[:oid], X_24:bat[:str], 
X_27:bat[:oid], X_28:bat[:str], X_26:bat[:str]);
     X_19:bat[:int] := sql.bind(X_6:int, "sys":str, "functions":str, "id":str, 
0:int);
     (X_21:bat[:oid], X_22:bat[:int]) := sql.bind(X_6:int, "sys":str, 
"functions":str, "id":str, 2:int);
     X_20:bat[:int] := sql.bind(X_6:int, "sys":str, "functions":str, "id":str, 
1:int);
-    X_23:bat[:int] := sql.delta(X_19:bat[:int], X_21:bat[:oid], 
X_22:bat[:int], X_20:bat[:int]);
-    X_30:bat[:int] := algebra.projection(C_7:bat[:oid], X_23:bat[:int]);
+    X_30:bat[:int] := sql.projectdelta(C_7:bat[:oid], X_19:bat[:int], 
X_21:bat[:oid], X_22:bat[:int], X_20:bat[:int]);
     X_33:bat[:str] := algebra.project(X_30:bat[:int], "a":str);
     X_35:bat[:str] := algebra.project(X_30:bat[:int], "A":str);
     X_39:bat[:str] := mal.manifold("str":str, "replace":str, X_31:bat[:str], 
X_33:bat[:str], X_35:bat[:str]);
diff --git a/sql/test/BugTracker/Tests/explain.SF-1739353.stable.out 
b/sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
--- a/sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
+++ b/sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
@@ -25,9 +25,9 @@ stdout of test 'explain.SF-1739353` in d
 
 
 Operation successful
-+--------------------------------------------------------------------------------------------------------------------+
++-------------------------------------------------------------------------------------------------------------------------+
 | mal                                                                          
                                          |
-+====================================================================================================================+
++=========================================================================================================================+
 | function user.s4_0():void;                                                   
                                          |
 |     X_1:void := querylog.define("explain select \"name\" from 
\"tables\"\n;":str, "sequential_pipe":str, 34:int);  |
 |     X_39:bat[:str] := bat.new(nil:str);                                      
                                      |
@@ -43,8 +43,7 @@ Operation successful
 |     X_17:bat[:str] := sql.bind(X_4:int, "sys":str, "_tables":str, 
"name":str, 0:int);                              |
 |     (X_19:bat[:oid], X_20:bat[:str]) := sql.bind(X_4:int, "sys":str, 
"_tables":str, "name":str, 2:int);            |
 |     X_18:bat[:str] := sql.bind(X_4:int, "sys":str, "_tables":str, 
"name":str, 1:int);                              |
-|     X_21:bat[:str] := sql.delta(X_17:bat[:str], X_19:bat[:oid], 
X_20:bat[:str], X_18:bat[:str]);                   |
-|     X_32:bat[:str] := algebra.projection(C_30:bat[:oid], X_21:bat[:str]);    
                                      |
+|     X_32:bat[:str] := sql.projectdelta(C_30:bat[:oid], X_17:bat[:str], 
X_19:bat[:oid], X_20:bat[:str], X_18:bat[:str]); |
 |     C_34:bat[:oid] := sql.tid(X_4:int, "tmp":str, "_tables":str);            
                                      |
 |     X_37:bat[:str] := sql.bind(X_4:int, "tmp":str, "_tables":str, 
"name":str, 0:int);                              |
 |     X_38:bat[:str] := algebra.projection(C_34:bat[:oid], X_37:bat[:str]);    
                                      |
@@ -57,36 +56,36 @@ Operation successful
 |     X_49:bat[:int] := bat.pack(0:int);                                       
                                      |
 |     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[:str]); |
 | end user.s4_0;                                                               
                                          |
-| #inline               actions= 0 time=1 usec                                 
                                          |
+| #inline               actions= 0 time=0 usec                                 
                                           |
 | #remap                actions= 0 time=1 usec                                 
                                      |
 | #costmodel            actions= 1 time=1 usec                                 
                                          |
 | #coercion             actions= 1 time=2 usec                                 
                                      |
 | #aliases              actions= 1 time=2 usec                                 
                                      |
 | #evaluate             actions= 0 time=3 usec                                 
                                      |
-| #emptybind            actions= 0 time=1 usec                                 
                                      |
-| #pushselect           actions= 0 time=6 usec                                 
                                      |
+| #emptybind            actions= 0 time=0 usec                                 
                                           |
+| #pushselect           actions= 2 time=13 usec                                
                                           |
 | #aliases              actions= 0 time=0 usec                                 
                                      |
-| #mergetable           actions= 0 time=21 usec                                
                                      |
-| #deadcode             actions= 7 time=5 usec                                 
                                      |
+| #mergetable           actions= 0 time=14 usec                                
                                           |
+| #deadcode             actions= 8 time=5 usec                                 
                                           |
 | #aliases              actions= 0 time=0 usec                                 
                                      |
-| #constants            actions= 2 time=4 usec                                 
                                      |
+| #constants            actions= 2 time=3 usec                                 
                                           |
 | #commonTerms          actions= 0 time=4 usec                                 
                                      |
 | #projectionpath       actions= 0 time=2 usec                                 
                                          |
-| #deadcode             actions= 0 time=4 usec                                 
                                      |
-| #reorder              actions= 1 time=12 usec                                
                                      |
+| #deadcode             actions= 0 time=3 usec                                 
                                           |
+| #reorder              actions= 1 time=9 usec                                 
                                           |
 | #matpack              actions= 0 time=0 usec                                 
                                      |
-| #multiplex            actions= 0 time=0 usec                                 
                                      |
+| #multiplex            actions= 0 time=1 usec                                 
                                           |
 | #profiler             actions= 1 time=0 usec                                 
                                      |
 | #candidates           actions= 1 time=1 usec                                 
                                          |
 | #deadcode             actions= 0 time=3 usec                                 
                                      |
 | #postfix              actions= 0 time=2 usec                                 
                                      |
 | #wlc                  actions= 0 time=0 usec                                 
                                          |
 | #garbagecollector     actions= 1 time=18 usec                                
                                      |
-| #total                actions=27 time=144 usec                               
                                      |
-+--------------------------------------------------------------------------------------------------------------------+
-55 rows
+| #total                actions=27 time=136 usec                               
                                           |
++-------------------------------------------------------------------------------------------------------------------------+
+54 rows
 
-# 16:17:13 >  
-# 16:17:13 >  "Done."
-# 16:17:13 >  
+# 17:52:43 >  
+# 17:52:43 >  "Done."
+# 17:52:43 >  
 
diff --git a/sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out 
b/sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
--- a/sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
+++ b/sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
@@ -52,19 +52,21 @@ stdout of test 'jdbc_no_debug.SF-1739356
 +----------------------------------------------------------------------------+
 18 rows
 Operation successful
-+---------------------------------------------------------------------------------------------------------------+
++--------------------------------------------------------------------------------------------------------------------+
 | mal                                                                          
                         |
-+===============================================================================================================+
++====================================================================================================================+
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to