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 checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list