Changeset: a0587c55bd30 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a0587c55bd30
Modified Files:
sql/backends/monet5/rel_bin.c
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: Oct2020
Log Message:
fixed problem with rel2bin_basetable, where only a single (tid) column was
returned, only return sql_tid, no candidates(are handled already).
diffs (217 lines):
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -1665,8 +1665,10 @@ rel2bin_basetable(backend *be, sql_rel *
if (col)
s = stmt_mirror(be, col);
- else
+ else {
s = dels?dels:stmt_tid(be, t, 0);
+ dels = NULL;
+ }
s = stmt_alias(be, s, rnme, TID);
} else if (oname[0] == '%') {
sql_idx *i = find_sql_idx(t, oname+1);
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
@@ -184,8 +184,8 @@ end user.main;
% clob # type
% 195 # length
function user.main():void;
- X_1:void := querylog.define("explain select id , v2 from fk left outer
join pk1 on fk.fk1 = pk1.pk1 left outer join pk2 on fk.fk2 = pk2.pk2 order by
id;":str, "sequential_pipe":str, 104:int);
- X_49:bat[:int] := bat.new(nil:int);
+ X_1:void := querylog.define("explain select id , v2 from fk left outer
join pk1 on fk.fk1 = pk1.pk1 left outer join pk2 on fk.fk2 = pk2.pk2 order by
id;":str, "sequential_pipe":str, 103:int);
+ X_48:bat[:int] := bat.new(nil:int);
X_4:int := sql.mvc();
C_5:bat[:oid] := sql.tid(X_4:int, "sys":str, "fk":str);
X_22:bat[:oid] := sql.bind_idxbat(X_4:int, "sys":str, "fk":str,
"fk_fk1_fkey":str, 0:int);
@@ -194,50 +194,49 @@ function user.main():void;
X_27:bat[:oid] := sql.delta(X_22:bat[:oid], X_25:bat[:oid],
X_26:bat[:oid], X_24:bat[:oid]);
X_37:bat[:oid] := algebra.projection(C_5:bat[:oid], X_27:bat[:oid]);
C_34:bat[:oid] := sql.tid(X_4:int, "sys":str, "pk1":str);
- C_39:bat[:oid] := algebra.projection(C_34:bat[:oid], C_34:bat[:oid]);
- X_40:bat[:oid] := algebra.join(X_37:bat[:oid], C_39:bat[:oid], nil:BAT,
nil:BAT, false:bit, nil:lng);
+ X_39:bat[:oid] := algebra.join(X_37:bat[:oid], C_34:bat[:oid], nil:BAT,
nil:BAT, false:bit, nil:lng);
X_17:bat[:int] := sql.bind(X_4:int, "sys":str, "fk":str, "id":str, 0:int);
X_36:bat[:int] := algebra.projection(C_5:bat[:oid], X_17:bat[:int]);
- X_48:bat[:int] := algebra.projection(X_40:bat[:oid], X_36:bat[:int]);
- C_46:bat[:oid] := bat.mirror(X_36:bat[:int]);
- C_47:bat[:oid] := algebra.difference(C_46:bat[:oid], X_40:bat[:oid],
nil:BAT, nil:BAT, false:bit, false:bit, nil:lng);
+ X_47:bat[:int] := algebra.projection(X_39:bat[:oid], X_36:bat[:int]);
+ C_45:bat[:oid] := bat.mirror(X_36:bat[:int]);
+ C_46:bat[:oid] := algebra.difference(C_45:bat[:oid], X_39:bat[:oid],
nil:BAT, nil:BAT, false:bit, false:bit, nil:lng);
X_28:bat[:oid] := sql.bind_idxbat(X_4:int, "sys":str, "fk":str,
"fk_fk2_fkey":str, 0:int);
(X_31:bat[:oid], X_32:bat[:oid]) := sql.bind_idxbat(X_4:int, "sys":str,
"fk":str, "fk_fk2_fkey":str, 2:int);
X_30:bat[:oid] := sql.bind_idxbat(X_4:int, "sys":str, "fk":str,
"fk_fk2_fkey":str, 1:int);
X_33:bat[:oid] := sql.delta(X_28:bat[:oid], X_31:bat[:oid],
X_32:bat[:oid], X_30:bat[:oid]);
X_38:bat[:oid] := algebra.projection(C_5:bat[:oid], X_33:bat[:oid]);
- X_51:bat[:int] := bat.append(X_49:bat[:int], X_48:bat[:int], true:bit);
- X_53:bat[:int] := algebra.projection(C_47:bat[:oid], X_36:bat[:int]);
- X_54:bat[:int] := bat.append(X_51:bat[:int], X_53:bat[:int], true:bit);
- X_62:bat[:oid] := bat.new(nil:oid);
- X_61:bat[:oid] := algebra.projection(X_40:bat[:oid], X_38:bat[:oid]);
- X_63:bat[:oid] := bat.append(X_62:bat[:oid], X_61:bat[:oid], true:bit);
- X_64:bat[:oid] := algebra.projection(C_47:bat[:oid], X_38:bat[:oid]);
- X_65:bat[:oid] := bat.append(X_63:bat[:oid], X_64:bat[:oid], true:bit);
- X_96:bat[:int] := bat.new(nil:int);
- C_72:bat[:oid] := sql.tid(X_4:int, "sys":str, "pk2":str);
- (X_87:bat[:oid], X_88:bat[:oid]) := algebra.join(X_65:bat[:oid],
C_72:bat[:oid], nil:BAT, nil:BAT, false:bit, nil:lng);
- X_95:bat[:int] := algebra.projection(X_87:bat[:oid], X_54:bat[:int]);
- C_93:bat[:oid] := bat.mirror(X_54:bat[:int]);
- C_94:bat[:oid] := algebra.difference(C_93:bat[:oid], X_87:bat[:oid],
nil:BAT, nil:BAT, false:bit, false:bit, nil:lng);
- X_80:bat[:int] := sql.bind(X_4:int, "sys":str, "pk2":str, "v2":str, 0:int);
- X_98:bat[:int] := bat.append(X_96:bat[:int], X_95:bat[:int], true:bit);
- X_100:bat[:int] := algebra.projection(C_94:bat[:oid], X_54:bat[:int]);
- X_101:bat[:int] := bat.append(X_98:bat[:int], X_100:bat[:int], true:bit);
- X_119:bat[:int] := bat.new(nil:int);
- X_118:bat[:int] := algebra.projectionpath(X_88:bat[:oid], C_72:bat[:oid],
X_80:bat[:int]);
- X_120:bat[:int] := bat.append(X_119:bat[:int], X_118:bat[:int], true:bit);
- X_122:bat[:int] := algebra.project(C_94:bat[:oid], nil:int);
- X_123:bat[:int] := bat.append(X_120:bat[:int], X_122:bat[:int], true:bit);
- X_138:bat[:str] := bat.pack(".fk":str, ".pk2":str);
- X_139:bat[:str] := bat.pack("id":str, "v2":str);
- X_140:bat[:str] := bat.pack("int":str, "int":str);
- X_141:bat[:int] := bat.pack(32:int, 32:int);
- X_142:bat[:int] := bat.pack(0:int, 0:int);
- (X_130:bat[:int], X_131:bat[:oid]) := algebra.sort(X_101:bat[:int],
false:bit, false:bit, false:bit);
- X_135:bat[:int] := algebra.projection(X_131:bat[:oid], X_101:bat[:int]);
- X_136:bat[:int] := algebra.projection(X_131:bat[:oid], X_123:bat[:int]);
- sql.resultSet(X_138:bat[:str], X_139:bat[:str], X_140:bat[:str],
X_141:bat[:int], X_142:bat[:int], X_135:bat[:int], X_136:bat[:int]);
+ X_50:bat[:int] := bat.append(X_48:bat[:int], X_47:bat[:int], true:bit);
+ X_52:bat[:int] := algebra.projection(C_46:bat[:oid], X_36:bat[:int]);
+ X_53:bat[:int] := bat.append(X_50:bat[:int], X_52:bat[:int], true:bit);
+ X_61:bat[:oid] := bat.new(nil:oid);
+ X_60:bat[:oid] := algebra.projection(X_39:bat[:oid], X_38:bat[:oid]);
+ X_62:bat[:oid] := bat.append(X_61:bat[:oid], X_60:bat[:oid], true:bit);
+ X_63:bat[:oid] := algebra.projection(C_46:bat[:oid], X_38:bat[:oid]);
+ X_64:bat[:oid] := bat.append(X_62:bat[:oid], X_63:bat[:oid], true:bit);
+ X_95:bat[:int] := bat.new(nil:int);
+ C_71:bat[:oid] := sql.tid(X_4:int, "sys":str, "pk2":str);
+ (X_86:bat[:oid], X_87:bat[:oid]) := algebra.join(X_64:bat[:oid],
C_71:bat[:oid], nil:BAT, nil:BAT, false:bit, nil:lng);
+ X_94:bat[:int] := algebra.projection(X_86:bat[:oid], X_53:bat[:int]);
+ C_92:bat[:oid] := bat.mirror(X_53:bat[:int]);
+ C_93:bat[:oid] := algebra.difference(C_92:bat[:oid], X_86:bat[:oid],
nil:BAT, nil:BAT, false:bit, false:bit, nil:lng);
+ X_79:bat[:int] := sql.bind(X_4:int, "sys":str, "pk2":str, "v2":str, 0:int);
+ X_97:bat[:int] := bat.append(X_95:bat[:int], X_94:bat[:int], true:bit);
+ X_99:bat[:int] := algebra.projection(C_93:bat[:oid], X_53:bat[:int]);
+ X_100:bat[:int] := bat.append(X_97:bat[:int], X_99:bat[:int], true:bit);
+ X_118:bat[:int] := bat.new(nil:int);
+ X_117:bat[:int] := algebra.projectionpath(X_87:bat[:oid], C_71:bat[:oid],
X_79:bat[:int]);
+ X_119:bat[:int] := bat.append(X_118:bat[:int], X_117:bat[:int], true:bit);
+ X_121:bat[:int] := algebra.project(C_93:bat[:oid], nil:int);
+ X_122:bat[:int] := bat.append(X_119:bat[:int], X_121:bat[:int], true:bit);
+ X_137:bat[:str] := bat.pack(".fk":str, ".pk2":str);
+ X_138:bat[:str] := bat.pack("id":str, "v2":str);
+ X_139:bat[:str] := bat.pack("int":str, "int":str);
+ X_140:bat[:int] := bat.pack(32:int, 32:int);
+ X_141:bat[:int] := bat.pack(0:int, 0:int);
+ (X_129:bat[:int], X_130:bat[:oid]) := algebra.sort(X_100:bat[:int],
false:bit, false:bit, false:bit);
+ X_134:bat[:int] := algebra.projection(X_130:bat[:oid], X_100:bat[:int]);
+ X_135:bat[:int] := algebra.projection(X_130:bat[:oid], X_122:bat[:int]);
+ sql.resultSet(X_137:bat[:str], X_138:bat[:str], X_139:bat[:str],
X_140:bat[:int], X_141:bat[:int], X_134:bat[:int], X_135:bat[:int]);
end user.main;
#inline actions= 0 time=2 usec
#remap actions= 0 time=3 usec
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
@@ -117,8 +117,8 @@ end user.main;
% clob # type
% 137 # length
function user.main():void;
- X_1:void := querylog.define("explain select id , v2 from v2 order by
id;":str, "sequential_pipe":str, 104:int);
- X_49:bat[:int] := bat.new(nil:int);
+ X_1:void := querylog.define("explain select id , v2 from v2 order by
id;":str, "sequential_pipe":str, 103:int);
+ X_48:bat[:int] := bat.new(nil:int);
X_4:int := sql.mvc();
C_5:bat[:oid] := sql.tid(X_4:int, "sys":str, "fk":str);
X_22:bat[:oid] := sql.bind_idxbat(X_4:int, "sys":str, "fk":str,
"fk_fk1_fkey":str, 0:int);
@@ -127,50 +127,49 @@ function user.main():void;
X_27:bat[:oid] := sql.delta(X_22:bat[:oid], X_25:bat[:oid],
X_26:bat[:oid], X_24:bat[:oid]);
X_37:bat[:oid] := algebra.projection(C_5:bat[:oid], X_27:bat[:oid]);
C_34:bat[:oid] := sql.tid(X_4:int, "sys":str, "pk1":str);
- C_39:bat[:oid] := algebra.projection(C_34:bat[:oid], C_34:bat[:oid]);
- X_40:bat[:oid] := algebra.join(X_37:bat[:oid], C_39:bat[:oid], nil:BAT,
nil:BAT, false:bit, nil:lng);
+ X_39:bat[:oid] := algebra.join(X_37:bat[:oid], C_34:bat[:oid], nil:BAT,
nil:BAT, false:bit, nil:lng);
X_17:bat[:int] := sql.bind(X_4:int, "sys":str, "fk":str, "id":str, 0:int);
X_36:bat[:int] := algebra.projection(C_5:bat[:oid], X_17:bat[:int]);
- X_48:bat[:int] := algebra.projection(X_40:bat[:oid], X_36:bat[:int]);
- C_46:bat[:oid] := bat.mirror(X_36:bat[:int]);
- C_47:bat[:oid] := algebra.difference(C_46:bat[:oid], X_40:bat[:oid],
nil:BAT, nil:BAT, false:bit, false:bit, nil:lng);
+ X_47:bat[:int] := algebra.projection(X_39:bat[:oid], X_36:bat[:int]);
+ C_45:bat[:oid] := bat.mirror(X_36:bat[:int]);
+ C_46:bat[:oid] := algebra.difference(C_45:bat[:oid], X_39:bat[:oid],
nil:BAT, nil:BAT, false:bit, false:bit, nil:lng);
X_28:bat[:oid] := sql.bind_idxbat(X_4:int, "sys":str, "fk":str,
"fk_fk2_fkey":str, 0:int);
(X_31:bat[:oid], X_32:bat[:oid]) := sql.bind_idxbat(X_4:int, "sys":str,
"fk":str, "fk_fk2_fkey":str, 2:int);
X_30:bat[:oid] := sql.bind_idxbat(X_4:int, "sys":str, "fk":str,
"fk_fk2_fkey":str, 1:int);
X_33:bat[:oid] := sql.delta(X_28:bat[:oid], X_31:bat[:oid],
X_32:bat[:oid], X_30:bat[:oid]);
X_38:bat[:oid] := algebra.projection(C_5:bat[:oid], X_33:bat[:oid]);
- X_51:bat[:int] := bat.append(X_49:bat[:int], X_48:bat[:int], true:bit);
- X_53:bat[:int] := algebra.projection(C_47:bat[:oid], X_36:bat[:int]);
- X_54:bat[:int] := bat.append(X_51:bat[:int], X_53:bat[:int], true:bit);
- X_62:bat[:oid] := bat.new(nil:oid);
- X_61:bat[:oid] := algebra.projection(X_40:bat[:oid], X_38:bat[:oid]);
- X_63:bat[:oid] := bat.append(X_62:bat[:oid], X_61:bat[:oid], true:bit);
- X_64:bat[:oid] := algebra.projection(C_47:bat[:oid], X_38:bat[:oid]);
- X_65:bat[:oid] := bat.append(X_63:bat[:oid], X_64:bat[:oid], true:bit);
- X_96:bat[:int] := bat.new(nil:int);
- C_72:bat[:oid] := sql.tid(X_4:int, "sys":str, "pk2":str);
- (X_87:bat[:oid], X_88:bat[:oid]) := algebra.join(X_65:bat[:oid],
C_72:bat[:oid], nil:BAT, nil:BAT, false:bit, nil:lng);
- X_95:bat[:int] := algebra.projection(X_87:bat[:oid], X_54:bat[:int]);
- C_93:bat[:oid] := bat.mirror(X_54:bat[:int]);
- C_94:bat[:oid] := algebra.difference(C_93:bat[:oid], X_87:bat[:oid],
nil:BAT, nil:BAT, false:bit, false:bit, nil:lng);
- X_80:bat[:int] := sql.bind(X_4:int, "sys":str, "pk2":str, "v2":str, 0:int);
- X_98:bat[:int] := bat.append(X_96:bat[:int], X_95:bat[:int], true:bit);
- X_100:bat[:int] := algebra.projection(C_94:bat[:oid], X_54:bat[:int]);
- X_101:bat[:int] := bat.append(X_98:bat[:int], X_100:bat[:int], true:bit);
- X_119:bat[:int] := bat.new(nil:int);
- X_118:bat[:int] := algebra.projectionpath(X_88:bat[:oid], C_72:bat[:oid],
X_80:bat[:int]);
- X_120:bat[:int] := bat.append(X_119:bat[:int], X_118:bat[:int], true:bit);
- X_122:bat[:int] := algebra.project(C_94:bat[:oid], nil:int);
- X_123:bat[:int] := bat.append(X_120:bat[:int], X_122:bat[:int], true:bit);
- X_138:bat[:str] := bat.pack(".v2":str, ".v2":str);
- X_139:bat[:str] := bat.pack("id":str, "v2":str);
- X_140:bat[:str] := bat.pack("int":str, "int":str);
- X_141:bat[:int] := bat.pack(32:int, 32:int);
- X_142:bat[:int] := bat.pack(0:int, 0:int);
- (X_130:bat[:int], X_131:bat[:oid]) := algebra.sort(X_101:bat[:int],
false:bit, false:bit, false:bit);
- X_135:bat[:int] := algebra.projection(X_131:bat[:oid], X_101:bat[:int]);
- X_136:bat[:int] := algebra.projection(X_131:bat[:oid], X_123:bat[:int]);
- sql.resultSet(X_138:bat[:str], X_139:bat[:str], X_140:bat[:str],
X_141:bat[:int], X_142:bat[:int], X_135:bat[:int], X_136:bat[:int]);
+ X_50:bat[:int] := bat.append(X_48:bat[:int], X_47:bat[:int], true:bit);
+ X_52:bat[:int] := algebra.projection(C_46:bat[:oid], X_36:bat[:int]);
+ X_53:bat[:int] := bat.append(X_50:bat[:int], X_52:bat[:int], true:bit);
+ X_61:bat[:oid] := bat.new(nil:oid);
+ X_60:bat[:oid] := algebra.projection(X_39:bat[:oid], X_38:bat[:oid]);
+ X_62:bat[:oid] := bat.append(X_61:bat[:oid], X_60:bat[:oid], true:bit);
+ X_63:bat[:oid] := algebra.projection(C_46:bat[:oid], X_38:bat[:oid]);
+ X_64:bat[:oid] := bat.append(X_62:bat[:oid], X_63:bat[:oid], true:bit);
+ X_95:bat[:int] := bat.new(nil:int);
+ C_71:bat[:oid] := sql.tid(X_4:int, "sys":str, "pk2":str);
+ (X_86:bat[:oid], X_87:bat[:oid]) := algebra.join(X_64:bat[:oid],
C_71:bat[:oid], nil:BAT, nil:BAT, false:bit, nil:lng);
+ X_94:bat[:int] := algebra.projection(X_86:bat[:oid], X_53:bat[:int]);
+ C_92:bat[:oid] := bat.mirror(X_53:bat[:int]);
+ C_93:bat[:oid] := algebra.difference(C_92:bat[:oid], X_86:bat[:oid],
nil:BAT, nil:BAT, false:bit, false:bit, nil:lng);
+ X_79:bat[:int] := sql.bind(X_4:int, "sys":str, "pk2":str, "v2":str, 0:int);
+ X_97:bat[:int] := bat.append(X_95:bat[:int], X_94:bat[:int], true:bit);
+ X_99:bat[:int] := algebra.projection(C_93:bat[:oid], X_53:bat[:int]);
+ X_100:bat[:int] := bat.append(X_97:bat[:int], X_99:bat[:int], true:bit);
+ X_118:bat[:int] := bat.new(nil:int);
+ X_117:bat[:int] := algebra.projectionpath(X_87:bat[:oid], C_71:bat[:oid],
X_79:bat[:int]);
+ X_119:bat[:int] := bat.append(X_118:bat[:int], X_117:bat[:int], true:bit);
+ X_121:bat[:int] := algebra.project(C_93:bat[:oid], nil:int);
+ X_122:bat[:int] := bat.append(X_119:bat[:int], X_121:bat[:int], true:bit);
+ X_137:bat[:str] := bat.pack(".v2":str, ".v2":str);
+ X_138:bat[:str] := bat.pack("id":str, "v2":str);
+ X_139:bat[:str] := bat.pack("int":str, "int":str);
+ X_140:bat[:int] := bat.pack(32:int, 32:int);
+ X_141:bat[:int] := bat.pack(0:int, 0:int);
+ (X_129:bat[:int], X_130:bat[:oid]) := algebra.sort(X_100:bat[:int],
false:bit, false:bit, false:bit);
+ X_134:bat[:int] := algebra.projection(X_130:bat[:oid], X_100:bat[:int]);
+ X_135:bat[:int] := algebra.projection(X_130:bat[:oid], X_122:bat[:int]);
+ sql.resultSet(X_137:bat[:str], X_138:bat[:str], X_139:bat[:str],
X_140:bat[:int], X_141:bat[:int], X_134:bat[:int], X_135:bat[:int]);
end user.main;
#inline actions= 0 time=1 usec
#remap actions= 0 time=2 usec
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list