Changeset: dc387bb86875 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=dc387bb86875
Modified Files:
        monetdb5/optimizer/opt_postfix.c
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-query.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-view.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-query.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-view.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-query.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-view.stable.out
Branch: default
Log Message:

Reduce sort operation by dropping unused last return value.


diffs (186 lines):

diff --git a/monetdb5/optimizer/opt_postfix.c b/monetdb5/optimizer/opt_postfix.c
--- a/monetdb5/optimizer/opt_postfix.c
+++ b/monetdb5/optimizer/opt_postfix.c
@@ -69,8 +69,19 @@ OPTpostfixImplementation(Client cntxt, M
                        actions++;
                        continue;
                }
+/* POSTFIX ACTION FOR SORT, could be dropping the last two */
+               if ( getModuleId(p) == algebraRef && getFunctionId(p) == 
sortRef && getVarEolife(mb, getArg(p, p->retc -1)) == i){
+                       delArgument(p, p->retc -1);
+                       typeChecker(cntxt->usermodule, mb, p, i, TRUE);
+                       actions++;
+                       if ( getModuleId(p) == algebraRef && getFunctionId(p) 
== sortRef && getVarEolife(mb, getArg(p, p->retc -1)) == i){
+                               delArgument(p, p->retc -1);
+                               typeChecker(cntxt->usermodule, mb, p, i, TRUE);
+                               actions++;
+                       }
+                       continue;
+               }
        }
-
        /* Defense line against incorrect plans */
        if( actions ){
                // msg = chkTypes(cntxt->usermodule, mb, FALSE);
diff --git 
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-query.stable.out
 
b/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-query.stable.out
--- 
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-query.stable.out
+++ 
b/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-query.stable.out
@@ -69,7 +69,7 @@ end user.s4_0;
 % .explain # table_name
 % mal # name
 % clob # type
-% 118 # length
+% 114 # length
 function user.s6_0():void;
     X_1:void := querylog.define("explain select id from fk order by id;":str, 
"sequential_pipe":str, 18:int);
     X_25:bat[:str] := bat.pack("sys.fk":str);
@@ -81,7 +81,7 @@ function user.s6_0():void;
     C_5:bat[:oid] := sql.tid(X_4:int, "sys":str, "fk":str);
     X_8:bat[:int] := sql.bind(X_4:int, "sys":str, "fk":str, "id":str, 0:int);
     X_17:bat[:int] := algebra.projection(C_5:bat[:oid], X_8:bat[:int]);
-    (X_18:bat[:int], X_19:bat[:oid], X_20:bat[:oid]) := 
algebra.sort(X_17:bat[:int], false:bit, false:bit, false:bit);
+    (X_18:bat[:int], X_19:bat[:oid]) := algebra.sort(X_17:bat[:int], 
false:bit, false:bit, false:bit);
     X_23:bat[:int] := algebra.projection(X_19:bat[:oid], X_17:bat[:int]);
     sql.resultSet(X_25:bat[:str], X_26:bat[:str], X_27:bat[:str], 
X_28:bat[:int], X_29:bat[:int], X_23:bat[:int]);
 end user.s6_0;
diff --git 
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-view.stable.out
 
b/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-view.stable.out
--- 
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-view.stable.out
+++ 
b/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-view.stable.out
@@ -69,7 +69,7 @@ end user.s4_0;
 % .explain # table_name
 % mal # name
 % clob # type
-% 118 # length
+% 114 # length
 function user.s6_0():void;
     X_1:void := querylog.define("explain select id from v0 order by id;":str, 
"sequential_pipe":str, 18:int);
     X_25:bat[:str] := bat.pack("sys.v0":str);
@@ -81,7 +81,7 @@ function user.s6_0():void;
     C_5:bat[:oid] := sql.tid(X_4:int, "sys":str, "fk":str);
     X_8:bat[:int] := sql.bind(X_4:int, "sys":str, "fk":str, "id":str, 0:int);
     X_17:bat[:int] := algebra.projection(C_5:bat[:oid], X_8:bat[:int]);
-    (X_18:bat[:int], X_19:bat[:oid], X_20:bat[:oid]) := 
algebra.sort(X_17:bat[:int], false:bit, false:bit, false:bit);
+    (X_18:bat[:int], X_19:bat[:oid]) := algebra.sort(X_17:bat[:int], 
false:bit, false:bit, false:bit);
     X_23:bat[:int] := algebra.projection(X_19:bat[:oid], X_17:bat[:int]);
     sql.resultSet(X_25:bat[:str], X_26:bat[:str], X_27:bat[:str], 
X_28:bat[:int], X_29:bat[:int], X_23:bat[:int]);
 end user.s6_0;
diff --git 
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-query.stable.out
 
b/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-query.stable.out
--- 
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-query.stable.out
+++ 
b/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-query.stable.out
@@ -81,7 +81,7 @@ function user.s6_0():void;
     C_5:bat[:oid] := sql.tid(X_4:int, "sys":str, "fk":str);
     X_8:bat[:int] := sql.bind(X_4:int, "sys":str, "fk":str, "id":str, 0:int);
     X_17:bat[:int] := algebra.projection(C_5:bat[:oid], X_8:bat[:int]);
-    (X_18:bat[:int], X_19:bat[:oid], X_20:bat[:oid]) := 
algebra.sort(X_17:bat[:int], false:bit, false:bit, false:bit);
+    (X_18:bat[:int], X_19:bat[:oid]) := algebra.sort(X_17:bat[:int], 
false:bit, false:bit, false:bit);
     X_23:bat[:int] := algebra.projection(X_19:bat[:oid], X_17:bat[:int]);
     sql.resultSet(X_25:bat[:str], X_26:bat[:str], X_27:bat[:str], 
X_28:bat[:int], X_29:bat[:int], X_23:bat[:int]);
 end user.s6_0;
@@ -147,7 +147,7 @@ function user.s8_0():void;
     X_75:bat[:str] := bat.pack("int":str, "int":str);
     X_76:bat[:int] := bat.pack(32:int, 32:int);
     X_77:bat[:int] := bat.pack(0:int, 0:int);
-    (X_67:bat[:int], X_68:bat[:oid], X_69:bat[:oid]) := 
algebra.sort(X_48:bat[:int], false:bit, false:bit, false:bit);
+    (X_67:bat[:int], X_68:bat[:oid]) := algebra.sort(X_48:bat[:int], 
false:bit, false:bit, false:bit);
     X_70:bat[:int] := algebra.projection(X_68:bat[:oid], X_48:bat[:int]);
     X_71:bat[:int] := algebra.projection(X_68:bat[:oid], X_60:bat[:int]);
     sql.resultSet(X_73:bat[:str], X_74:bat[:str], X_75:bat[:str], 
X_76:bat[:int], X_77:bat[:int], X_70:bat[:int], X_71:bat[:int]);
@@ -214,7 +214,7 @@ function user.s10_0():void;
     X_75:bat[:str] := bat.pack("int":str, "int":str);
     X_76:bat[:int] := bat.pack(32:int, 32:int);
     X_77:bat[:int] := bat.pack(0:int, 0:int);
-    (X_67:bat[:int], X_68:bat[:oid], X_69:bat[:oid]) := 
algebra.sort(X_48:bat[:int], false:bit, false:bit, false:bit);
+    (X_67:bat[:int], X_68:bat[:oid]) := algebra.sort(X_48:bat[:int], 
false:bit, false:bit, false:bit);
     X_70:bat[:int] := algebra.projection(X_68:bat[:oid], X_48:bat[:int]);
     X_71:bat[:int] := algebra.projection(X_68:bat[:oid], X_60:bat[:int]);
     sql.resultSet(X_73:bat[:str], X_74:bat[:str], X_75:bat[:str], 
X_76:bat[:int], X_77:bat[:int], X_70:bat[:int], X_71:bat[:int]);
diff --git 
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-view.stable.out
 
b/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-view.stable.out
--- 
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-view.stable.out
+++ 
b/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-view.stable.out
@@ -69,7 +69,7 @@ end user.s4_0;
 % .explain # table_name
 % mal # name
 % clob # type
-% 118 # length
+% 114 # length
 function user.s6_0():void;
     X_1:void := querylog.define("explain select id from v1 order by id;":str, 
"sequential_pipe":str, 18:int);
     X_25:bat[:str] := bat.pack("sys.v1":str);
@@ -81,7 +81,7 @@ function user.s6_0():void;
     C_5:bat[:oid] := sql.tid(X_4:int, "sys":str, "fk":str);
     X_8:bat[:int] := sql.bind(X_4:int, "sys":str, "fk":str, "id":str, 0:int);
     X_17:bat[:int] := algebra.projection(C_5:bat[:oid], X_8:bat[:int]);
-    (X_18:bat[:int], X_19:bat[:oid], X_20:bat[:oid]) := 
algebra.sort(X_17:bat[:int], false:bit, false:bit, false:bit);
+    (X_18:bat[:int], X_19:bat[:oid]) := algebra.sort(X_17:bat[:int], 
false:bit, false:bit, false:bit);
     X_23:bat[:int] := algebra.projection(X_19:bat[:oid], X_17:bat[:int]);
     sql.resultSet(X_25:bat[:str], X_26:bat[:str], X_27:bat[:str], 
X_28:bat[:int], X_29:bat[:int], X_23:bat[:int]);
 end user.s6_0;
@@ -147,7 +147,7 @@ function user.s8_0():void;
     X_75:bat[:str] := bat.pack("int":str, "int":str);
     X_76:bat[:int] := bat.pack(32:int, 32:int);
     X_77:bat[:int] := bat.pack(0:int, 0:int);
-    (X_67:bat[:int], X_68:bat[:oid], X_69:bat[:oid]) := 
algebra.sort(X_48:bat[:int], false:bit, false:bit, false:bit);
+    (X_67:bat[:int], X_68:bat[:oid]) := algebra.sort(X_48:bat[:int], 
false:bit, false:bit, false:bit);
     X_70:bat[:int] := algebra.projection(X_68:bat[:oid], X_48:bat[:int]);
     X_71:bat[:int] := algebra.projection(X_68:bat[:oid], X_60:bat[:int]);
     sql.resultSet(X_73:bat[:str], X_74:bat[:str], X_75:bat[:str], 
X_76:bat[:int], X_77:bat[:int], X_70:bat[:int], X_71:bat[:int]);
diff --git 
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-query.stable.out
 
b/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-query.stable.out
--- 
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-query.stable.out
+++ 
b/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-query.stable.out
@@ -81,7 +81,7 @@ function user.s6_0():void;
     C_5:bat[:oid] := sql.tid(X_4:int, "sys":str, "fk":str);
     X_8:bat[:int] := sql.bind(X_4:int, "sys":str, "fk":str, "id":str, 0:int);
     X_17:bat[:int] := algebra.projection(C_5:bat[:oid], X_8:bat[:int]);
-    (X_32:bat[:int], X_33:bat[:oid], X_34:bat[:oid]) := 
algebra.sort(X_17:bat[:int], false:bit, false:bit, false:bit);
+    (X_32:bat[:int], X_33:bat[:oid]) := algebra.sort(X_17:bat[:int], 
false:bit, false:bit, false:bit);
     X_37:bat[:int] := algebra.projection(X_33:bat[:oid], X_17:bat[:int]);
     sql.resultSet(X_39:bat[:str], X_40:bat[:str], X_41:bat[:str], 
X_42:bat[:int], X_43:bat[:int], X_37:bat[:int]);
 end user.s6_0;
@@ -147,7 +147,7 @@ function user.s8_0():void;
     X_89:bat[:str] := bat.pack("int":str, "int":str);
     X_90:bat[:int] := bat.pack(32:int, 32:int);
     X_91:bat[:int] := bat.pack(0:int, 0:int);
-    (X_79:bat[:int], X_80:bat[:oid], X_81:bat[:oid]) := 
algebra.sort(X_55:bat[:int], false:bit, false:bit, false:bit);
+    (X_79:bat[:int], X_80:bat[:oid]) := algebra.sort(X_55:bat[:int], 
false:bit, false:bit, false:bit);
     X_84:bat[:int] := algebra.projection(X_80:bat[:oid], X_55:bat[:int]);
     X_85:bat[:int] := algebra.projection(X_80:bat[:oid], X_72:bat[:int]);
     sql.resultSet(X_87:bat[:str], X_88:bat[:str], X_89:bat[:str], 
X_90:bat[:int], X_91:bat[:int], X_84:bat[:int], X_85:bat[:int]);
@@ -233,7 +233,7 @@ function user.s10_0():void;
     X_128:bat[:str] := bat.pack("int":str, "int":str);
     X_129:bat[:int] := bat.pack(32:int, 32:int);
     X_130:bat[:int] := bat.pack(0:int, 0:int);
-    (X_118:bat[:int], X_119:bat[:oid], X_120:bat[:oid]) := 
algebra.sort(X_89:bat[:int], false:bit, false:bit, false:bit);
+    (X_118:bat[:int], X_119:bat[:oid]) := algebra.sort(X_89:bat[:int], 
false:bit, false:bit, false:bit);
     X_123:bat[:int] := algebra.projection(X_119:bat[:oid], X_89:bat[:int]);
     X_124:bat[:int] := algebra.projection(X_119:bat[:oid], X_111:bat[:int]);
     sql.resultSet(X_126:bat[:str], X_127:bat[:str], X_128:bat[:str], 
X_129:bat[:int], X_130:bat[:int], X_123:bat[:int], X_124:bat[:int]);
diff --git 
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-view.stable.out
 
b/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-view.stable.out
--- 
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-view.stable.out
+++ 
b/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-view.stable.out
@@ -69,7 +69,7 @@ end user.s4_0;
 % .explain # table_name
 % mal # name
 % clob # type
-% 118 # length
+% 114 # length
 function user.s6_0():void;
     X_1:void := querylog.define("explain select id from v2 order by id;":str, 
"sequential_pipe":str, 28:int);
     X_39:bat[:str] := bat.pack("sys.v2":str);
@@ -81,7 +81,7 @@ function user.s6_0():void;
     C_5:bat[:oid] := sql.tid(X_4:int, "sys":str, "fk":str);
     X_8:bat[:int] := sql.bind(X_4:int, "sys":str, "fk":str, "id":str, 0:int);
     X_17:bat[:int] := algebra.projection(C_5:bat[:oid], X_8:bat[:int]);
-    (X_32:bat[:int], X_33:bat[:oid], X_34:bat[:oid]) := 
algebra.sort(X_17:bat[:int], false:bit, false:bit, false:bit);
+    (X_32:bat[:int], X_33:bat[:oid]) := algebra.sort(X_17:bat[:int], 
false:bit, false:bit, false:bit);
     X_37:bat[:int] := algebra.projection(X_33:bat[:oid], X_17:bat[:int]);
     sql.resultSet(X_39:bat[:str], X_40:bat[:str], X_41:bat[:str], 
X_42:bat[:int], X_43:bat[:int], X_37:bat[:int]);
 end user.s6_0;
@@ -166,7 +166,7 @@ function user.s8_0():void;
     X_128:bat[:str] := bat.pack("int":str, "int":str);
     X_129:bat[:int] := bat.pack(32:int, 32:int);
     X_130:bat[:int] := bat.pack(0:int, 0:int);
-    (X_118:bat[:int], X_119:bat[:oid], X_120:bat[:oid]) := 
algebra.sort(X_89:bat[:int], false:bit, false:bit, false:bit);
+    (X_118:bat[:int], X_119:bat[:oid]) := algebra.sort(X_89:bat[:int], 
false:bit, false:bit, false:bit);
     X_123:bat[:int] := algebra.projection(X_119:bat[:oid], X_89:bat[:int]);
     X_124:bat[:int] := algebra.projection(X_119:bat[:oid], X_111:bat[:int]);
     sql.resultSet(X_126:bat[:str], X_127:bat[:str], X_128:bat[:str], 
X_129:bat[:int], X_130:bat[:int], X_123:bat[:int], X_124:bat[:int]);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to