Changeset: 06c3e1846c2f for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=06c3e1846c2f Added Files: sql/test/BugTracker-2012/Tests/any_null.Bug-2594.sql sql/test/BugTracker-2012/Tests/any_null.Bug-2594.stable.err sql/test/BugTracker-2012/Tests/any_null.Bug-2594.stable.out Modified Files: gdk/ChangeLog.Apr2012 gdk/gdk_system.c gdk/gdk_value.c monetdb5/modules/kernel/batcalc.mal monetdb5/modules/kernel/batcalc.mal.sh monetdb5/modules/kernel/calc.c monetdb5/modules/kernel/group.mx sql/backends/monet5/sql.mx sql/backends/monet5/sql_gencode.c sql/common/sql_types.c sql/rel.txt sql/server/rel_select.c sql/server/sql_atom.h sql/server/sql_parser.y sql/test/BugDay_2005-10-06_2.8/Tests/select_null.stable.out sql/test/BugDay_2005-10-06_2.9.3/Tests/BATpropcheck_error.SF-1012739.stable.out sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.stable.out sql/test/BugDay_2005-10-06_2.9.3/Tests/jdbc_crashes_on_getTables.SF_944316.stable.out sql/test/BugDay_2005-10-06_2.9.3/Tests/quoted_keywords.SF-922288.stable.out sql/test/BugDay_2005-10-06_2.9.3/Tests/simple_union.SF-1005596.stable.out sql/test/BugTracker-2008/Tests/groupby_with_NULL.SF-2155606.stable.out sql/test/BugTracker-2009/Tests/TribooleanFailureWithSubquery.SF-2679434.stable.out sql/test/BugTracker-2012/Tests/All sql/test/bugs/Tests/subselect_multiple_unionall_where_1=1-bug-sf-1005596.stable.out sql/test/bugs/Tests/union_all-bug-sf-941788.stable.out sql/test/null/Tests/null_in_case.stable.out Branch: default Log Message:
Merge with Apr2012 branch. diffs (truncated from 789 to 300 lines): diff --git a/gdk/ChangeLog.Apr2012 b/gdk/ChangeLog.Apr2012 --- a/gdk/ChangeLog.Apr2012 +++ b/gdk/ChangeLog.Apr2012 @@ -1,3 +1,8 @@ # ChangeLog file for MonetDB # This file is updated with Maddlog +* Thu May 17 2012 Fabian Groffen <[email protected]> +- Limit number of detected CPU cores to 16 on 32-bits systems to avoid + running quickly out of addressable resources followed by a kill from + the OS. + diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c --- a/gdk/gdk_system.c +++ b/gdk/gdk_system.c @@ -680,7 +680,18 @@ MT_check_nr_cores(void) * http://ndevilla.free.fr/threads/ */ if (ncpus <= 0) - return MT_check_nr_cores_(); + ncpus = MT_check_nr_cores_(); +#if SIZEOF_SIZE_T == SIZEOF_INT + /* On 32-bits systems with large amounts of cpus/cores, we quickly + * run out of space due to the amount of threads in use. Since it + * is questionable whether many cores on a 32-bits system are going + * to beneficial due to this, we simply limit the auto-detected + * cores to 16 on 32-bits systems. The user can always override + * this via gdk_nr_threads. */ + if (ncpus > 16) + ncpus = 16; +#endif + return ncpus; } diff --git a/gdk/gdk_value.c b/gdk/gdk_value.c --- a/gdk/gdk_value.c +++ b/gdk/gdk_value.c @@ -54,6 +54,9 @@ ValPtr VALset(ValPtr v, int t, ptr p) { switch (ATOMstorage(v->vtype = t)) { + case TYPE_void: + v->val.oval = *(oid *) p; + break; case TYPE_bte: v->val.btval = *(bte *) p; break; @@ -92,11 +95,12 @@ void * VALget(ValPtr v) { switch (ATOMstorage(v->vtype)) { + case TYPE_void: + return (void *) &v->val.oval; case TYPE_bte: return (void *) &v->val.btval; case TYPE_sht: return (void *) &v->val.shval; - case TYPE_void: case TYPE_int: return (void *) &v->val.ival; case TYPE_flt: diff --git a/monetdb5/modules/kernel/batcalc.mal b/monetdb5/modules/kernel/batcalc.mal --- a/monetdb5/modules/kernel/batcalc.mal +++ b/monetdb5/modules/kernel/batcalc.mal @@ -11944,6 +11944,13 @@ command avg2(b:bat[:oid,:dbl]) (:dbl, :l address CMDcalcavg2 comment "average and number of non-nil values of B"; +command bit(b:bat[:any_1,:void]) :bat[:any_1,:bit] +address CMDconvertsignal_bit +comment "cast from void to bit, signal error on overflow"; +command bit_noerror(b:bat[:any_1,:void]) :bat[:any_1,:bit] +address CMDconvert_bit +comment "cast from void to bit"; + command bit(b:bat[:any_1,:bit]) :bat[:any_1,:bit] address CMDconvertsignal_bit comment "cast from bit to bit, signal error on overflow"; @@ -12014,6 +12021,13 @@ command bit_noerror(b:bat[:any_1,:str]) address CMDconvert_bit comment "cast from str to bit"; +command bte(b:bat[:any_1,:void]) :bat[:any_1,:bte] +address CMDconvertsignal_bte +comment "cast from void to bte, signal error on overflow"; +command bte_noerror(b:bat[:any_1,:void]) :bat[:any_1,:bte] +address CMDconvert_bte +comment "cast from void to bte"; + command bte(b:bat[:any_1,:bit]) :bat[:any_1,:bte] address CMDconvertsignal_bte comment "cast from bit to bte, signal error on overflow"; @@ -12084,6 +12098,13 @@ command bte_noerror(b:bat[:any_1,:str]) address CMDconvert_bte comment "cast from str to bte"; +command sht(b:bat[:any_1,:void]) :bat[:any_1,:sht] +address CMDconvertsignal_sht +comment "cast from void to sht, signal error on overflow"; +command sht_noerror(b:bat[:any_1,:void]) :bat[:any_1,:sht] +address CMDconvert_sht +comment "cast from void to sht"; + command sht(b:bat[:any_1,:bit]) :bat[:any_1,:sht] address CMDconvertsignal_sht comment "cast from bit to sht, signal error on overflow"; @@ -12154,6 +12175,13 @@ command sht_noerror(b:bat[:any_1,:str]) address CMDconvert_sht comment "cast from str to sht"; +command int(b:bat[:any_1,:void]) :bat[:any_1,:int] +address CMDconvertsignal_int +comment "cast from void to int, signal error on overflow"; +command int_noerror(b:bat[:any_1,:void]) :bat[:any_1,:int] +address CMDconvert_int +comment "cast from void to int"; + command int(b:bat[:any_1,:bit]) :bat[:any_1,:int] address CMDconvertsignal_int comment "cast from bit to int, signal error on overflow"; @@ -12224,6 +12252,13 @@ command int_noerror(b:bat[:any_1,:str]) address CMDconvert_int comment "cast from str to int"; +command wrd(b:bat[:any_1,:void]) :bat[:any_1,:wrd] +address CMDconvertsignal_wrd +comment "cast from void to wrd, signal error on overflow"; +command wrd_noerror(b:bat[:any_1,:void]) :bat[:any_1,:wrd] +address CMDconvert_wrd +comment "cast from void to wrd"; + command wrd(b:bat[:any_1,:bit]) :bat[:any_1,:wrd] address CMDconvertsignal_wrd comment "cast from bit to wrd, signal error on overflow"; @@ -12294,6 +12329,13 @@ command wrd_noerror(b:bat[:any_1,:str]) address CMDconvert_wrd comment "cast from str to wrd"; +command lng(b:bat[:any_1,:void]) :bat[:any_1,:lng] +address CMDconvertsignal_lng +comment "cast from void to lng, signal error on overflow"; +command lng_noerror(b:bat[:any_1,:void]) :bat[:any_1,:lng] +address CMDconvert_lng +comment "cast from void to lng"; + command lng(b:bat[:any_1,:bit]) :bat[:any_1,:lng] address CMDconvertsignal_lng comment "cast from bit to lng, signal error on overflow"; @@ -12364,6 +12406,13 @@ command lng_noerror(b:bat[:any_1,:str]) address CMDconvert_lng comment "cast from str to lng"; +command flt(b:bat[:any_1,:void]) :bat[:any_1,:flt] +address CMDconvertsignal_flt +comment "cast from void to flt, signal error on overflow"; +command flt_noerror(b:bat[:any_1,:void]) :bat[:any_1,:flt] +address CMDconvert_flt +comment "cast from void to flt"; + command flt(b:bat[:any_1,:bit]) :bat[:any_1,:flt] address CMDconvertsignal_flt comment "cast from bit to flt, signal error on overflow"; @@ -12434,6 +12483,13 @@ command flt_noerror(b:bat[:any_1,:str]) address CMDconvert_flt comment "cast from str to flt"; +command dbl(b:bat[:any_1,:void]) :bat[:any_1,:dbl] +address CMDconvertsignal_dbl +comment "cast from void to dbl, signal error on overflow"; +command dbl_noerror(b:bat[:any_1,:void]) :bat[:any_1,:dbl] +address CMDconvert_dbl +comment "cast from void to dbl"; + command dbl(b:bat[:any_1,:bit]) :bat[:any_1,:dbl] address CMDconvertsignal_dbl comment "cast from bit to dbl, signal error on overflow"; @@ -12504,6 +12560,13 @@ command dbl_noerror(b:bat[:any_1,:str]) address CMDconvert_dbl comment "cast from str to dbl"; +command oid(b:bat[:any_1,:void]) :bat[:any_1,:oid] +address CMDconvertsignal_oid +comment "cast from void to oid, signal error on overflow"; +command oid_noerror(b:bat[:any_1,:void]) :bat[:any_1,:oid] +address CMDconvert_oid +comment "cast from void to oid"; + command oid(b:bat[:any_1,:bit]) :bat[:any_1,:oid] address CMDconvertsignal_oid comment "cast from bit to oid, signal error on overflow"; @@ -12574,6 +12637,13 @@ command oid_noerror(b:bat[:any_1,:str]) address CMDconvert_oid comment "cast from str to oid"; +command str(b:bat[:any_1,:void]) :bat[:any_1,:str] +address CMDconvertsignal_str +comment "cast from void to str, signal error on overflow"; +command str_noerror(b:bat[:any_1,:void]) :bat[:any_1,:str] +address CMDconvert_str +comment "cast from void to str"; + command str(b:bat[:any_1,:bit]) :bat[:any_1,:str] address CMDconvertsignal_str comment "cast from bit to str, signal error on overflow"; diff --git a/monetdb5/modules/kernel/batcalc.mal.sh b/monetdb5/modules/kernel/batcalc.mal.sh --- a/monetdb5/modules/kernel/batcalc.mal.sh +++ b/monetdb5/modules/kernel/batcalc.mal.sh @@ -478,7 +478,7 @@ EOF done for tp1 in $alltypes; do - for tp2 in $alltypes; do + for tp2 in void $alltypes; do cat <<EOF command $tp1(b:bat[:any_1,:$tp2]) :bat[:any_1,:$tp1] address CMDconvertsignal_$tp1 diff --git a/monetdb5/modules/kernel/calc.c b/monetdb5/modules/kernel/calc.c --- a/monetdb5/modules/kernel/calc.c +++ b/monetdb5/modules/kernel/calc.c @@ -680,6 +680,8 @@ CALCswitchbit(Client cntxt, MalBlkPtr mb } if (ATOMextern(t1)) { *(ptr **) retval = ATOMdup(t1, *(ptr**)p); + } else if (t1 == TYPE_void) { + memcpy(retval, p, sizeof(oid)); } else { memcpy(retval, p, ATOMsize(t1)); } diff --git a/monetdb5/modules/kernel/group.mx b/monetdb5/modules/kernel/group.mx --- a/monetdb5/modules/kernel/group.mx +++ b/monetdb5/modules/kernel/group.mx @@ -1890,6 +1890,7 @@ GRPgroup(int *rethisto, int *retbid, int if (!b->tkey && BATcount(b) > 1 && BATtordered(b) && ATOMtype(b->htype) == TYPE_oid && + b->htype > TYPE_void && b->ttype < TYPE_str) { switch(tailtype(b,TRUE)) { case TYPE_bte: diff --git a/sql/backends/monet5/sql.mx b/sql/backends/monet5/sql.mx --- a/sql/backends/monet5/sql.mx +++ b/sql/backends/monet5/sql.mx @@ -579,6 +579,21 @@ address SQLbat_alpha comment "BAT implementation of astronomy alpha function"; @= mal_cast +command calc.@1( v:void, digits:int ) :@1 +address nil_2num_@1 +comment "cast to @1 and check for overflow"; + +command calc.@1( v:void, digits:int, scale:int ) :@1 +address nil_2dec_@1 +comment "cast to dec(@1) and check for overflow"; + +command batcalc.@1( v:bat[:oid,:void], digits:int ) :bat[:oid,:@1] +address batnil_2num_@1 +comment "cast to @1 and check for overflow"; +command batcalc.@1( v:bat[:oid,:void], digits:int, scale:int ) :bat[:oid,:@1] +address batnil_2dec_@1 +comment "cast to dec(@1) and check for overflow"; + command calc.@1( v:str, digits:int ) :@1 address str_2num_@1 comment "cast to @1 and check for overflow"; @@ -605,6 +620,20 @@ comment "cast to dec(@1) and check for o @:mal_cast(lng)@ @= mal_casttime +command calc.@1( v:void ) :@1 +address nil_2_@1 +comment "Cast to @1"; +command calc.@1( v:void, digits:int ) :@1 +address nil_2time_@1 +comment "cast to @1 and check for overflow"; + +command batcalc.@1( v:bat[:oid,:void] ) :bat[:oid,:@1] +address batnil_2_@1 +comment "Cast to @1"; +command batcalc.@1( v:bat[:oid,:void], digits:int ) :bat[:oid,:@1] +address batnil_2time_@1 +comment "cast to @1 and check for overflow"; + command calc.@1( v:str ) :@1 address str_2_@1 comment "Cast to @1"; @@ -629,6 +658,13 @@ comment "cast @1 to @1 and check for ove @:mal_casttime(timestamp)@ @:mal_casttime(daytime)@ +command calc.date( v:void ) :date +address nil_2_date +comment "cast to date"; +command batcalc.date( v:bat[:oid,:void] ) :bat[:oid,:date] +address batnil_2_date +comment "cast to date"; + command calc.date( v:str ) :date address str_2_date comment "cast to date"; _______________________________________________ Checkin-list mailing list [email protected] http://mail.monetdb.org/mailman/listinfo/checkin-list
