Changeset: b752a601e585 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b752a601e585 Modified Files: monetdb5/optimizer/opt_mergetable.c sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.err sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out Branch: Feb2013 Log Message:
only output packs once diffs (truncated from 868 to 300 lines): diff --git a/monetdb5/optimizer/opt_mergetable.c b/monetdb5/optimizer/opt_mergetable.c --- a/monetdb5/optimizer/opt_mergetable.c +++ b/monetdb5/optimizer/opt_mergetable.c @@ -36,6 +36,7 @@ typedef struct mat { int im; /* input mat, for attribute of sub relations */ int pm; /* parent mat, for sub relations */ mat_type_t type; /* type of operation */ + int packed; } mat_t; static mat_type_t @@ -84,6 +85,7 @@ mat_add(mat_t *mat, int mtop, InstrPtr q mat[mtop].mv = getArg(q,0); mat[mtop].type = type; mat[mtop].pm = -1; + mat[mtop].packed = 0; (void)func; //printf (" mtop %d %s\n", mtop, func); return mtop+1; @@ -100,15 +102,18 @@ mat_add_var(mat_t *mat, int mtop, InstrP mat[mtop].type = type; mat[mtop].im = inputmat; mat[mtop].pm = parentmat; + mat[mtop].packed = 0; return mtop+1; } -static InstrPtr +static void mat_pack(MalBlkPtr mb, mat_t *mat, int m) { InstrPtr r; - if( mat[m].mi->argc-mat[m].mi->retc == 1){ + if (mat[m].packed) + return ; + if((mat[m].mi->argc-mat[m].mi->retc) == 1){ /* simple assignment is sufficient */ r = newInstruction(mb, ASSIGNsymbol); getArg(r,0) = getArg(mat[m].mi,0); @@ -125,8 +130,8 @@ mat_pack(MalBlkPtr mb, mat_t *mat, int m for(l=mat[m].mi->retc; l< mat[m].mi->argc; l++) r= pushArgument(mb,r, getArg(mat[m].mi,l)); } + mat[m].packed = 1; pushInstruction(mb, r); - return r; } static void diff --git a/sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.err b/sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.err --- a/sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.err +++ b/sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.err @@ -30,9 +30,9 @@ stderr of test 'predicate_select.Bug-309 # 18:53:13 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=niels" "--port=32323" # 18:53:13 > -MAPI = monetdb@niels:38122 +MAPI = (monetdb) /var/tmp/mtest-18981/.s.monetdb.35692 QUERY = select * from tables where name; -ERROR = !conversion of string 'systemfunctions' to type bit failed. +ERROR = !conversion of string 'storagemodelinput' to type bit failed. # 18:53:13 > # 18:53:13 > "Done." diff --git a/sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out b/sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out --- a/sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out +++ b/sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out @@ -31,63 +31,59 @@ Ready. % clob # type % 96 # length function user.s0_1(A0:str):void; - X_87 := nil:bat[:oid,:str]; - X_88 := nil:bat[:oid,:str]; - X_89 := nil:bat[:oid,:str]; - X_90 := nil:bat[:oid,:str]; + X_11 := nil:bat[:oid,:str]; + X_94 := nil:bat[:oid,:str]; + X_93 := nil:bat[:oid,:str]; + X_92 := nil:bat[:oid,:str]; X_91 := nil:bat[:oid,:str]; - X_92 := nil:bat[:oid,:str]; - X_93 := nil:bat[:oid,:str]; - X_94 := nil:bat[:oid,:str]; barrier X_96 := language.dataflow(); X_2 := sql.mvc(); + X_47:bat[:oid,:str] := sql.bind(X_2,"sys","functions","name",0,0,4); X_40:bat[:oid,:oid] := sql.tid(X_2,"sys","functions",0,4); + X_75 := algebra.likesubselect(X_47,X_40,A0,"":str,false); + (X_51:bat[:oid,:oid] ,X_52:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","name",2,0,4); + X_79 := algebra.likesubselect(X_52,A0,"":str,false); + X_83 := sql.subdelta(X_75,X_51,X_79); + X_87 := sql.projectdelta(X_83,X_47,X_51,X_52); + X_48:bat[:oid,:str] := sql.bind(X_2,"sys","functions","name",0,1,4); X_42:bat[:oid,:oid] := sql.tid(X_2,"sys","functions",1,4); + X_76 := algebra.likesubselect(X_48,X_42,A0,"":str,false); + (X_53:bat[:oid,:oid] ,X_54:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","name",2,1,4); + X_80 := algebra.likesubselect(X_54,A0,"":str,false); + X_84 := sql.subdelta(X_76,X_53,X_80); + X_88 := sql.projectdelta(X_84,X_48,X_53,X_54); + X_49:bat[:oid,:str] := sql.bind(X_2,"sys","functions","name",0,2,4); X_44:bat[:oid,:oid] := sql.tid(X_2,"sys","functions",2,4); + X_77 := algebra.likesubselect(X_49,X_44,A0,"":str,false); + (X_55:bat[:oid,:oid] ,X_56:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","name",2,2,4); + X_81 := algebra.likesubselect(X_56,A0,"":str,false); + X_85 := sql.subdelta(X_77,X_55,X_81); + X_89 := sql.projectdelta(X_85,X_49,X_55,X_56); + X_50:bat[:oid,:str] := sql.bind(X_2,"sys","functions","name",0,3,4); X_46:bat[:oid,:oid] := sql.tid(X_2,"sys","functions",3,4); - X_47:bat[:oid,:str] := sql.bind(X_2,"sys","functions","name",0,0,4); - X_48:bat[:oid,:str] := sql.bind(X_2,"sys","functions","name",0,1,4); - X_49:bat[:oid,:str] := sql.bind(X_2,"sys","functions","name",0,2,4); - X_50:bat[:oid,:str] := sql.bind(X_2,"sys","functions","name",0,3,4); - (X_51:bat[:oid,:oid] ,X_52:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","name",2,0,4); - (X_53:bat[:oid,:oid] ,X_54:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","name",2,1,4); - (X_55:bat[:oid,:oid] ,X_56:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","name",2,2,4); + X_78 := algebra.likesubselect(X_50,X_46,A0,"":str,false); (X_57:bat[:oid,:oid] ,X_58:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","name",2,3,4); + X_82 := algebra.likesubselect(X_58,A0,"":str,false); X_8 := sql.bind(X_2,"sys","functions","name",1); - X_75 := algebra.likesubselect(X_47,X_40,A0,"":str,false); - X_76 := algebra.likesubselect(X_48,X_42,A0,"":str,false); - X_77 := algebra.likesubselect(X_49,X_44,A0,"":str,false); - X_78 := algebra.likesubselect(X_50,X_46,A0,"":str,false); - X_79 := algebra.likesubselect(X_52,A0,"":str,false); - X_80 := algebra.likesubselect(X_54,A0,"":str,false); - X_81 := algebra.likesubselect(X_56,A0,"":str,false); - X_82 := algebra.likesubselect(X_58,A0,"":str,false); X_37 := algebra.likesubselect(X_8,X_46,A0,"":str,false); - X_83 := sql.subdelta(X_75,X_51,X_79); - X_84 := sql.subdelta(X_76,X_53,X_80); - X_85 := sql.subdelta(X_77,X_55,X_81); X_86 := sql.subdelta(X_78,X_57,X_82,X_37); - X_87 := sql.projectdelta(X_83,X_47,X_51,X_52); - X_88 := sql.projectdelta(X_84,X_48,X_53,X_54); - X_89 := sql.projectdelta(X_85,X_49,X_55,X_56); X_90 := sql.projectdelta(X_86,X_50,X_57,X_58,X_8); - X_59:bat[:oid,:str] := sql.bind(X_2,"sys","functions","func",0,0,4); - X_60:bat[:oid,:str] := sql.bind(X_2,"sys","functions","func",0,1,4); - X_61:bat[:oid,:str] := sql.bind(X_2,"sys","functions","func",0,2,4); + X_11 := mat.pack(X_87,X_88,X_89,X_90); X_62:bat[:oid,:str] := sql.bind(X_2,"sys","functions","func",0,3,4); - (X_63:bat[:oid,:oid] ,X_64:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","func",2,0,4); - (X_65:bat[:oid,:oid] ,X_66:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","func",2,1,4); - (X_67:bat[:oid,:oid] ,X_68:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","func",2,2,4); (X_69:bat[:oid,:oid] ,X_70:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","func",2,3,4); X_13 := sql.bind(X_2,"sys","functions","func",1); + X_94 := sql.projectdelta(X_86,X_62,X_69,X_70,X_13); + X_61:bat[:oid,:str] := sql.bind(X_2,"sys","functions","func",0,2,4); + (X_67:bat[:oid,:oid] ,X_68:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","func",2,2,4); + X_93 := sql.projectdelta(X_85,X_61,X_67,X_68); + X_60:bat[:oid,:str] := sql.bind(X_2,"sys","functions","func",0,1,4); + (X_65:bat[:oid,:oid] ,X_66:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","func",2,1,4); + X_92 := sql.projectdelta(X_84,X_60,X_65,X_66); + X_59:bat[:oid,:str] := sql.bind(X_2,"sys","functions","func",0,0,4); + (X_63:bat[:oid,:oid] ,X_64:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","func",2,0,4); X_91 := sql.projectdelta(X_83,X_59,X_63,X_64); - X_92 := sql.projectdelta(X_84,X_60,X_65,X_66); - X_93 := sql.projectdelta(X_85,X_61,X_67,X_68); - X_94 := sql.projectdelta(X_86,X_62,X_69,X_70,X_13); exit X_96; - X_11 := mat.pack(X_87,X_88,X_89,X_90); X_15 := sql.resultSet(2,1,X_11); - X_11 := mat.pack(X_87,X_88,X_89,X_90); sql.rsColumn(X_15,"sys.functions","name","varchar",256,0,X_11); X_14 := mat.pack(X_91,X_92,X_93,X_94); sql.rsColumn(X_15,"sys.functions","func","varchar",8196,0,X_14); @@ -100,63 +96,59 @@ end s0_1; % clob # type % 96 # length function user.s1_1(A0:str):void; - X_87 := nil:bat[:oid,:str]; - X_88 := nil:bat[:oid,:str]; - X_89 := nil:bat[:oid,:str]; - X_90 := nil:bat[:oid,:str]; + X_11 := nil:bat[:oid,:str]; + X_94 := nil:bat[:oid,:str]; + X_93 := nil:bat[:oid,:str]; + X_92 := nil:bat[:oid,:str]; X_91 := nil:bat[:oid,:str]; - X_92 := nil:bat[:oid,:str]; - X_93 := nil:bat[:oid,:str]; - X_94 := nil:bat[:oid,:str]; barrier X_96 := language.dataflow(); X_2 := sql.mvc(); + X_47:bat[:oid,:str] := sql.bind(X_2,"sys","functions","name",0,0,4); X_40:bat[:oid,:oid] := sql.tid(X_2,"sys","functions",0,4); + X_75 := algebra.likesubselect(X_47,X_40,A0,"":str,true); + (X_51:bat[:oid,:oid] ,X_52:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","name",2,0,4); + X_79 := algebra.likesubselect(X_52,A0,"":str,true); + X_83 := sql.subdelta(X_75,X_51,X_79); + X_87 := sql.projectdelta(X_83,X_47,X_51,X_52); + X_48:bat[:oid,:str] := sql.bind(X_2,"sys","functions","name",0,1,4); X_42:bat[:oid,:oid] := sql.tid(X_2,"sys","functions",1,4); + X_76 := algebra.likesubselect(X_48,X_42,A0,"":str,true); + (X_53:bat[:oid,:oid] ,X_54:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","name",2,1,4); + X_80 := algebra.likesubselect(X_54,A0,"":str,true); + X_84 := sql.subdelta(X_76,X_53,X_80); + X_88 := sql.projectdelta(X_84,X_48,X_53,X_54); + X_49:bat[:oid,:str] := sql.bind(X_2,"sys","functions","name",0,2,4); X_44:bat[:oid,:oid] := sql.tid(X_2,"sys","functions",2,4); + X_77 := algebra.likesubselect(X_49,X_44,A0,"":str,true); + (X_55:bat[:oid,:oid] ,X_56:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","name",2,2,4); + X_81 := algebra.likesubselect(X_56,A0,"":str,true); + X_85 := sql.subdelta(X_77,X_55,X_81); + X_89 := sql.projectdelta(X_85,X_49,X_55,X_56); + X_50:bat[:oid,:str] := sql.bind(X_2,"sys","functions","name",0,3,4); X_46:bat[:oid,:oid] := sql.tid(X_2,"sys","functions",3,4); - X_47:bat[:oid,:str] := sql.bind(X_2,"sys","functions","name",0,0,4); - X_48:bat[:oid,:str] := sql.bind(X_2,"sys","functions","name",0,1,4); - X_49:bat[:oid,:str] := sql.bind(X_2,"sys","functions","name",0,2,4); - X_50:bat[:oid,:str] := sql.bind(X_2,"sys","functions","name",0,3,4); - (X_51:bat[:oid,:oid] ,X_52:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","name",2,0,4); - (X_53:bat[:oid,:oid] ,X_54:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","name",2,1,4); - (X_55:bat[:oid,:oid] ,X_56:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","name",2,2,4); + X_78 := algebra.likesubselect(X_50,X_46,A0,"":str,true); (X_57:bat[:oid,:oid] ,X_58:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","name",2,3,4); + X_82 := algebra.likesubselect(X_58,A0,"":str,true); X_8 := sql.bind(X_2,"sys","functions","name",1); - X_75 := algebra.likesubselect(X_47,X_40,A0,"":str,true); - X_76 := algebra.likesubselect(X_48,X_42,A0,"":str,true); - X_77 := algebra.likesubselect(X_49,X_44,A0,"":str,true); - X_78 := algebra.likesubselect(X_50,X_46,A0,"":str,true); - X_79 := algebra.likesubselect(X_52,A0,"":str,true); - X_80 := algebra.likesubselect(X_54,A0,"":str,true); - X_81 := algebra.likesubselect(X_56,A0,"":str,true); - X_82 := algebra.likesubselect(X_58,A0,"":str,true); X_37 := algebra.likesubselect(X_8,X_46,A0,"":str,true); - X_83 := sql.subdelta(X_75,X_51,X_79); - X_84 := sql.subdelta(X_76,X_53,X_80); - X_85 := sql.subdelta(X_77,X_55,X_81); X_86 := sql.subdelta(X_78,X_57,X_82,X_37); - X_87 := sql.projectdelta(X_83,X_47,X_51,X_52); - X_88 := sql.projectdelta(X_84,X_48,X_53,X_54); - X_89 := sql.projectdelta(X_85,X_49,X_55,X_56); X_90 := sql.projectdelta(X_86,X_50,X_57,X_58,X_8); - X_59:bat[:oid,:str] := sql.bind(X_2,"sys","functions","func",0,0,4); - X_60:bat[:oid,:str] := sql.bind(X_2,"sys","functions","func",0,1,4); - X_61:bat[:oid,:str] := sql.bind(X_2,"sys","functions","func",0,2,4); + X_11 := mat.pack(X_87,X_88,X_89,X_90); X_62:bat[:oid,:str] := sql.bind(X_2,"sys","functions","func",0,3,4); - (X_63:bat[:oid,:oid] ,X_64:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","func",2,0,4); - (X_65:bat[:oid,:oid] ,X_66:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","func",2,1,4); - (X_67:bat[:oid,:oid] ,X_68:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","func",2,2,4); (X_69:bat[:oid,:oid] ,X_70:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","func",2,3,4); X_13 := sql.bind(X_2,"sys","functions","func",1); + X_94 := sql.projectdelta(X_86,X_62,X_69,X_70,X_13); + X_61:bat[:oid,:str] := sql.bind(X_2,"sys","functions","func",0,2,4); + (X_67:bat[:oid,:oid] ,X_68:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","func",2,2,4); + X_93 := sql.projectdelta(X_85,X_61,X_67,X_68); + X_60:bat[:oid,:str] := sql.bind(X_2,"sys","functions","func",0,1,4); + (X_65:bat[:oid,:oid] ,X_66:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","func",2,1,4); + X_92 := sql.projectdelta(X_84,X_60,X_65,X_66); + X_59:bat[:oid,:str] := sql.bind(X_2,"sys","functions","func",0,0,4); + (X_63:bat[:oid,:oid] ,X_64:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","func",2,0,4); X_91 := sql.projectdelta(X_83,X_59,X_63,X_64); - X_92 := sql.projectdelta(X_84,X_60,X_65,X_66); - X_93 := sql.projectdelta(X_85,X_61,X_67,X_68); - X_94 := sql.projectdelta(X_86,X_62,X_69,X_70,X_13); exit X_96; - X_11 := mat.pack(X_87,X_88,X_89,X_90); X_15 := sql.resultSet(2,1,X_11); - X_11 := mat.pack(X_87,X_88,X_89,X_90); sql.rsColumn(X_15,"sys.functions","name","varchar",256,0,X_11); X_14 := mat.pack(X_91,X_92,X_93,X_94); sql.rsColumn(X_15,"sys.functions","func","varchar",8196,0,X_14); @@ -169,63 +161,59 @@ end s1_1; % clob # type % 96 # length function user.s2_1(A0:str):void; - X_87 := nil:bat[:oid,:str]; - X_88 := nil:bat[:oid,:str]; - X_89 := nil:bat[:oid,:str]; - X_90 := nil:bat[:oid,:str]; + X_11 := nil:bat[:oid,:str]; + X_94 := nil:bat[:oid,:str]; + X_93 := nil:bat[:oid,:str]; + X_92 := nil:bat[:oid,:str]; X_91 := nil:bat[:oid,:str]; - X_92 := nil:bat[:oid,:str]; - X_93 := nil:bat[:oid,:str]; - X_94 := nil:bat[:oid,:str]; barrier X_96 := language.dataflow(); X_2 := sql.mvc(); + X_47:bat[:oid,:str] := sql.bind(X_2,"sys","functions","name",0,0,4); X_40:bat[:oid,:oid] := sql.tid(X_2,"sys","functions",0,4); + X_75 := algebra.ilikesubselect(X_47,X_40,A0,"":str,false); + (X_51:bat[:oid,:oid] ,X_52:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","name",2,0,4); + X_79 := algebra.ilikesubselect(X_52,A0,"":str,false); + X_83 := sql.subdelta(X_75,X_51,X_79); + X_87 := sql.projectdelta(X_83,X_47,X_51,X_52); + X_48:bat[:oid,:str] := sql.bind(X_2,"sys","functions","name",0,1,4); X_42:bat[:oid,:oid] := sql.tid(X_2,"sys","functions",1,4); + X_76 := algebra.ilikesubselect(X_48,X_42,A0,"":str,false); + (X_53:bat[:oid,:oid] ,X_54:bat[:oid,:str] ) := sql.bind(X_2,"sys","functions","name",2,1,4); + X_80 := algebra.ilikesubselect(X_54,A0,"":str,false); + X_84 := sql.subdelta(X_76,X_53,X_80); + X_88 := sql.projectdelta(X_84,X_48,X_53,X_54); + X_49:bat[:oid,:str] := sql.bind(X_2,"sys","functions","name",0,2,4); X_44:bat[:oid,:oid] := sql.tid(X_2,"sys","functions",2,4); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list