Changeset: 67ad185c24a5 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=67ad185c24a5
Modified Files:
sql/backends/monet5/rel_bin.c
sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.stable.out
Branch: Jul2015
Log Message:
fixed bug 3787, ie handle NULL cast properly
diffs (154 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
@@ -377,8 +377,6 @@ exp_bin(mvc *sql, sql_exp *e, stmt *left
if (from->type->localtype == 0) {
l = stmt_atom(sql->sa, atom_general(sql->sa, to, NULL));
- if (exp_card(e->l) > CARD_ATOM)
- l = const_column(sql->sa, l);
} else {
l = exp_bin(sql, e->l, left, right, grp, ext, cnt, sel);
}
diff --git a/sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.stable.out
b/sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.stable.out
--- a/sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.stable.out
+++ b/sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.stable.out
@@ -38,80 +38,85 @@ Ready.
[ 1412467200.000, 42.000000000 ]
[ 1412467200.000, 43.000000000 ]
[ 1412467200.000, NULL ]
+[ 1412467200.000, NULL ]
#explain select (t-(select timestamp '1970-1-1')),v from foo_nil_2dec union
all select (t-(select timestamp '1970-1-1')),null from foo_nil_2dec;
% .explain # table_name
% mal # name
% clob # type
% 206 # length
function user.s5_1{autoCommit=true}(A0:timestamp,A1:timestamp,A2:void):void;
- X_66:void := querylog.define("explain select (t-(select timestamp
\\'1970-1-1\\')),v from foo_nil_2dec union all select (t-(select timestamp
\\'1970-1-1\\')),null from foo_nil_2dec;","default_pipe",70);
-barrier X_124 := language.dataflow();
- X_42 := bat.new(nil:oid,nil:str);
- X_49 := bat.append(X_42,".L5");
- X_59 := bat.append(X_49,".L5");
+ X_64:void := querylog.define("explain select (t-(select timestamp
\\'1970-1-1\\')),v from foo_nil_2dec union all select (t-(select timestamp
\\'1970-1-1\\')),null from foo_nil_2dec;","default_pipe",74);
+barrier X_129 := language.dataflow();
+ X_41 := bat.new(nil:oid,nil:str);
+ X_48 := bat.append(X_41,".L5");
+ X_57 := bat.append(X_48,".L5");
+ X_43 := bat.new(nil:oid,nil:str);
+ X_50 := bat.append(X_43,"L2");
+ X_58 := bat.append(X_50,"v");
X_44 := bat.new(nil:oid,nil:str);
- X_51 := bat.append(X_44,"L2");
- X_60 := bat.append(X_51,"v");
- X_45 := bat.new(nil:oid,nil:str);
- X_53 := bat.append(X_45,"sec_interval");
- X_62 := bat.append(X_53,"decimal");
- X_46 := bat.new(nil:oid,nil:int);
- X_55 := bat.append(X_46,13);
- X_64 := bat.append(X_55,18);
- X_48 := bat.new(nil:oid,nil:int);
- X_57 := bat.append(X_48,0);
- X_65 := bat.append(X_57,9);
+ X_52 := bat.append(X_44,"sec_interval");
+ X_60 := bat.append(X_52,"decimal");
+ X_45 := bat.new(nil:oid,nil:int);
+ X_54 := bat.append(X_45,13);
+ X_62 := bat.append(X_54,18);
+ X_47 := bat.new(nil:oid,nil:int);
+ X_56 := bat.append(X_47,0);
+ X_63 := bat.append(X_56,9);
X_6:bat[:oid,:lng] := bat.new(nil:oid,nil:lng);
X_5 := sql.mvc();
- X_81:bat[:oid,:oid] := sql.tid(X_5,"sys","foo_nil_2dec",0,2);
- X_84:bat[:oid,:timestamp] := sql.bind(X_5,"sys","foo_nil_2dec","t",0,0,2);
- (X_86:bat[:oid,:oid],X_87:bat[:oid,:timestamp]) :=
sql.bind(X_5,"sys","foo_nil_2dec","t",2,0,2);
- X_96 := sql.delta(X_84,X_86,X_87);
- X_98 := algebra.leftfetchjoin(X_81,X_96);
+ X_80:bat[:oid,:oid] := sql.tid(X_5,"sys","foo_nil_2dec",0,2);
+ X_83:bat[:oid,:timestamp] := sql.bind(X_5,"sys","foo_nil_2dec","t",0,0,2);
+ (X_85:bat[:oid,:oid],X_86:bat[:oid,:timestamp]) :=
sql.bind(X_5,"sys","foo_nil_2dec","t",2,0,2);
+ X_95 := sql.delta(X_83,X_85,X_86);
+ X_97 := algebra.leftfetchjoin(X_80,X_95);
X_16 := calc.timestamp(A0,7);
+ X_99 := algebra.project(X_97,X_16);
+ X_101 := batmtime.diff(X_97,X_99);
+ X_82:bat[:oid,:oid] := sql.tid(X_5,"sys","foo_nil_2dec",1,2);
+ X_84:bat[:oid,:timestamp] := sql.bind(X_5,"sys","foo_nil_2dec","t",0,1,2);
+ (X_87:bat[:oid,:oid],X_88:bat[:oid,:timestamp]) :=
sql.bind(X_5,"sys","foo_nil_2dec","t",2,1,2);
+ X_14:bat[:oid,:timestamp] := sql.bind(X_5,"sys","foo_nil_2dec","t",1);
+ X_96 := sql.delta(X_84,X_87,X_88,X_14);
+ X_98 := algebra.leftfetchjoin(X_82,X_96);
X_100 := algebra.project(X_98,X_16);
X_102 := batmtime.diff(X_98,X_100);
- X_83:bat[:oid,:oid] := sql.tid(X_5,"sys","foo_nil_2dec",1,2);
- X_85:bat[:oid,:timestamp] := sql.bind(X_5,"sys","foo_nil_2dec","t",0,1,2);
- (X_88:bat[:oid,:oid],X_89:bat[:oid,:timestamp]) :=
sql.bind(X_5,"sys","foo_nil_2dec","t",2,1,2);
- X_14:bat[:oid,:timestamp] := sql.bind(X_5,"sys","foo_nil_2dec","t",1);
- X_97 := sql.delta(X_85,X_88,X_89,X_14);
- X_99 := algebra.leftfetchjoin(X_83,X_97);
- X_101 := algebra.project(X_99,X_16);
- X_103 := batmtime.diff(X_99,X_101);
- X_114 := mat.packIncrement(X_102,2);
- X_18:bat[:oid,:lng] := mat.packIncrement(X_114,X_103);
+ X_115 := mat.packIncrement(X_101,2);
+ X_18:bat[:oid,:lng] := mat.packIncrement(X_115,X_102);
X_19 := bat.append(X_6,X_18,true);
X_20 := calc.timestamp(A1,7);
+ X_105 := algebra.project(X_97,X_20);
+ X_107 := batmtime.diff(X_97,X_105);
X_106 := algebra.project(X_98,X_20);
X_108 := batmtime.diff(X_98,X_106);
- X_107 := algebra.project(X_99,X_20);
- X_109 := batmtime.diff(X_99,X_107);
- X_116 := mat.packIncrement(X_108,2);
- X_21:bat[:oid,:lng] := mat.packIncrement(X_116,X_109);
+ X_117 := mat.packIncrement(X_107,2);
+ X_21:bat[:oid,:lng] := mat.packIncrement(X_117,X_108);
X_22 := bat.append(X_19,X_21,true);
X_24:bat[:oid,:lng] := bat.new(nil:oid,nil:lng);
- X_90:bat[:oid,:lng] := sql.bind(X_5,"sys","foo_nil_2dec","v",0,0,2);
- (X_92:bat[:oid,:oid],X_93:bat[:oid,:lng]) :=
sql.bind(X_5,"sys","foo_nil_2dec","v",2,0,2);
- X_110 := sql.delta(X_90,X_92,X_93);
- X_112 := algebra.leftfetchjoin(X_81,X_110);
- X_91:bat[:oid,:lng] := sql.bind(X_5,"sys","foo_nil_2dec","v",0,1,2);
- (X_94:bat[:oid,:oid],X_95:bat[:oid,:lng]) :=
sql.bind(X_5,"sys","foo_nil_2dec","v",2,1,2);
+ X_89:bat[:oid,:lng] := sql.bind(X_5,"sys","foo_nil_2dec","v",0,0,2);
+ (X_91:bat[:oid,:oid],X_92:bat[:oid,:lng]) :=
sql.bind(X_5,"sys","foo_nil_2dec","v",2,0,2);
+ X_109 := sql.delta(X_89,X_91,X_92);
+ X_111 := algebra.leftfetchjoin(X_80,X_109);
+ X_90:bat[:oid,:lng] := sql.bind(X_5,"sys","foo_nil_2dec","v",0,1,2);
+ (X_93:bat[:oid,:oid],X_94:bat[:oid,:lng]) :=
sql.bind(X_5,"sys","foo_nil_2dec","v",2,1,2);
X_32:bat[:oid,:lng] := sql.bind(X_5,"sys","foo_nil_2dec","v",1);
- X_111 := sql.delta(X_91,X_94,X_95,X_32);
- X_113 := algebra.leftfetchjoin(X_83,X_111);
- X_118 := mat.packIncrement(X_112,2);
- X_34 := mat.packIncrement(X_118,X_113);
+ X_110 := sql.delta(X_90,X_93,X_94,X_32);
+ X_112 := algebra.leftfetchjoin(X_82,X_110);
+ X_119 := mat.packIncrement(X_111,2);
+ X_34 := mat.packIncrement(X_119,X_112);
X_35 := bat.append(X_24,X_34,true);
- X_36 := sql.single(nil:lng);
- X_37:bat[:oid,:lng] := batcalc.lng(X_36,18,9);
- X_40 := bat.append(X_35,X_37,true);
+ X_113 := algebra.project(X_107,nil:lng);
+ X_114 := algebra.project(X_108,nil:lng);
+ X_121 := mat.packIncrement(X_113,2);
+ X_38 := mat.packIncrement(X_121,X_114);
+ X_39 := bat.append(X_35,X_38,true);
+ language.pass(X_97);
language.pass(X_98);
- language.pass(X_99);
- language.pass(X_81);
- language.pass(X_83);
-exit X_124;
- sql.resultSet(X_59,X_60,X_62,X_64,X_65,X_22,X_40);
+ language.pass(X_80);
+ language.pass(X_82);
+ language.pass(X_107);
+ language.pass(X_108);
+exit X_129;
+ sql.resultSet(X_57,X_58,X_60,X_62,X_63,X_22,X_39);
end user.s5_1;
# 23:28:04 >
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list