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

Reply via email to