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