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

Reply via email to