Update of /cvsroot/monetdb/MonetDB4/tests/by_Peter/Tests
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv4702/tests/by_Peter/Tests

Added Files:
      Tag: GDK-2
        GNATS-2476.milS GNATS-2719.milS GNATS-2736.milS 
        evenheight.milS recursion.milS table_orderby.milS trim.milS 
        tst_append_readonly.milS tst_append_readonly_commit.milS 
        tst_mmap.milS tst_priv.milS tst_updatestr.milS 
        tst_updatestr2.milS tst_uselect.milS tst_writestr.milS 
Removed Files:
      Tag: GDK-2
        GNATS-2476.milM GNATS-2719.milM GNATS-2736.milM 
        evenheight.milM recursion.milM table_orderby.milM trim.milM 
        tst_append_readonly.milM tst_append_readonly_commit.milM 
        tst_mmap.milM tst_priv.milM tst_updatestr.milM 
        tst_updatestr2.milM tst_uselect.milM tst_writestr.milM 
Log Message:
propagated changes of Monday Sep 10 2007 - Tuesday Sep 18 2007
from the development trunk to the GDK-2 branch


--- tst_priv.milM DELETED ---

--- NEW FILE: tst_mmap.milS ---
# reduce mem_bigsize to trigger memory mapping
#
vm_minsize(lng(128*1024)); 

# test memory map of string heap under append
var i := 0;
var b := 20000;
#BIG := new(void,int,50000000); # claim 200MB
var d := new(void,int,b).seqbase([EMAIL PROTECTED]);

# temporarily disable propmask in order to make this bearable
var m := debugmask();
debugmask(2);
while(i < b) d.append(i :+= 1);
debugmask(m);

{
 new(void,str,200000).seqbase([EMAIL 
PROTECTED]).access(BAT_APPEND).rename("aa").persists(true);
 unload("aa");
}

i := 1;
while(i < 10) { 
 bat("aa").info().reverse().select("theap.storage").reverse().print();
 var e := [str]([+](d,b));
 #e := [str]([/](d,10000));
 print(b :+= 20000); 
 bat("aa").insert(e);
 bat("aa").mmap(1,1,1);
 unload("aa");
 i :+= 1;
}

bat("aa").info().reverse().select("theap.storage").reverse().print();
bat("aa").persists(false);
commit();

quit();

--- NEW FILE: trim.milS ---
var k1 := new(void,int,1000);
var i := 0;
while(i < 1000) {
        k1.insert(nil,i);
        i :+= 1;
}

var m1 := new(void,int,1000000);
i := 0;
while(i < 1000) {
        m1.insert(k1);
        i :+= 1;
}
m1.seqbase([EMAIL PROTECTED]);

dir("tmp");

i := 0;
mem_maxsize(lng(10*1024*1024));
#vm_maxsize(lng(100*1024*1024));
while(i < 10) {
        #mem_usage(100000).print();
        print("DIR");
        dir("b_");
        #vm_usage(100000).print();
        print("COPY");
        var b := m1.copy().rename(sprintf("b_%d",i :+= 1));
        b.persists(true).commit();
}

proc countall (..any..) : void {
  var i := 0;
  while(i < $0) {
     i :+= 1;
     $(i).count().print();
  }
}

dir("b_");

countall(bat("b_1"),bat("b_2"),bat("b_3"),bat("b_4"));

dir("b_");

quit();

--- NEW FILE: tst_append_readonly_commit.milS ---
# reduce mem_bigsize to trigger memory mapping
#
vm_minsize(lng(128*1024)); 

# test memory map of string heap under append
var i := 0;
var b := 20000;
#BIG := new(void,int,50000000); # claim 200MB
var d := new(void,int,b).seqbase([EMAIL PROTECTED]);

# temporarily disable propmask in order to make this bearable
var m := debugmask();
debugmask(2);
while(i < b) d.append(i :+= 1);
debugmask(m);

{
 new(void,str,200000).seqbase([EMAIL 
PROTECTED]).access(BAT_READ).rename("aa").persists(true);
 commit();
}

i := 1;
while(i < 4) { 
 bat("aa").info().reverse().select("theap.storage").reverse().print();
 var e := [str]([+](d,b));
 #e := [str]([/](d,10000));
 print(b :+= 20000); 
 # second insert will trigger a BATmaterialize 'aa' which changes the storage
 # from STORE_MMAP to STORE_MEM (which is a bug) 
 bat("aa").access(BAT_APPEND).insert(e).access(BAT_READ);
 commit();
 i :+= 1;
}

bat("aa").info().reverse().select("theap.storage").reverse().print();
bat("aa").persists(false);
commit();

quit();

--- GNATS-2736.milM DELETED ---

--- evenheight.milM DELETED ---

--- NEW FILE: GNATS-2736.milS ---
# the following implementation paths in the standard pump implementation exist:
#
# proc_sort()ed
# proc_hash
# packed_sort()ed
# packed_hash
# direct_sort()ed_chr
# direct_sort()ed_bte
# direct_sort()ed_sht
# direct_sort()ed_int
# direct_sort()ed_wrd
# direct_sort()ed_void
# direct_hash_chr
# direct_hash_bte
# direct_hash_sht
# direct_hash_int
# direct_hash_wrd
#
# this script intends to test them all.
module(aggr);

var b_int := bat(int,str).insert(1,"1").insert(2,"2").insert(1,"1");
b_int.insert(3,"3").insert(4,"4").insert(5,"5").insert(6,"6");
b_int.insert(3,"3").insert(4,"4").insert(5,"5").insert(6,"6");
var b_wrd := [wrd](b_int.reverse()).reverse();
var b_sht := [sht](b_int.reverse()).reverse();
var b_bte := [bte](b_int.reverse()).reverse();
var b_chr := [chr](b_int.reverse()).reverse();
var b_str := [str](b_int.reverse()).reverse();
var v_oid := bat(void,str).insert(nil,"1").insert(nil,"2").insert(nil,"3");
v_oid.insert(nil,"4").insert(nil,"5").insert(nil,"6").seqbase([EMAIL 
PROTECTED]);

var e_int := 
bat(int,void).insert(1,nil).insert(3,nil).insert(4,nil).insert(5,nil);
e_int.insert(6,nil).insert(7,nil).insert(8,nil).col_name("e_int");
var e_wrd := [wrd](e_int.reverse()).reverse().col_name("e_wrd");
var e_sht := [sht](e_int.reverse()).reverse().col_name("e_sht");
var e_bte := [bte](e_int.reverse()).reverse().col_name("e_bte");
var e_chr := [chr](e_int.reverse()).reverse().col_name("e_chr");
var e_str := [str](e_int.reverse()).reverse().col_name("e_str");
var e_oid := [oid](e_int.reverse()).reverse().col_name("e_oid");


var tests := bat(bat,bat);
tests.insert(b_wrd.col_name("b_wrd"), e_wrd);
tests.insert(b_int.col_name("b_int"), e_int);
tests.insert(b_sht.col_name("b_sht"), e_sht);
tests.insert(b_bte.col_name("b_bte"), e_bte);
tests.insert(b_chr.col_name("b_chr"), e_chr);
tests.insert(b_str.col_name("b_str"), e_str);
tests.insert(v_oid.col_name("v_oid"), e_oid);

tests.insert(b_wrd.sort().col_name("s_wrd"), e_wrd);
tests.insert(b_int.sort().col_name("s_int"), e_int);
tests.insert(b_sht.sort().col_name("s_sht"), e_sht);
tests.insert(b_bte.sort().col_name("s_bte"), e_bte);
tests.insert(b_chr.sort().col_name("s_chr"), e_chr);
tests.insert(b_str.sort().col_name("s_str"), e_str);

proc ku(bat[any,any] b) : bat[any,any] {
        return kunique(b);
}

proc mstr(int i) : str {
        if (isnil(i)) {
                return "nil";
        }
        return str(i);
}

proc mset_print(bat[any,bat] m) :void {
    [EMAIL PROTECTED]() {
        var h := $h;
        var t := $t;
        [EMAIL PROTECTED]() {
            printf("\t%s\t%s\n", mstr(int(h)), mstr(int($t)));
        }
    }
}

proc set_print(bat[any,any] b) :void {
    [EMAIL PROTECTED]() {
        printf("\t%s\t%s\n", mstr(int($h)), mstr(int($t)));
    }
}

# start testing, switch mask that tells us which implementation is actually used
debugmask(131072);

[EMAIL PROTECTED]() {
        printf("\n# test proc {kunique}(%s)\n", $h.bbpname());
        {ku}($h).mset_print();
}

[EMAIL PROTECTED]() {
        printf("\n# test proc {kunique}(%s,%s)\n", $h.bbpname(), $t.bbpname());
        {ku}($h,$t).mset_print();
}

[EMAIL PROTECTED]() {
        printf("\n# test packed {kunique}(%s)\n", $h.bbpname());
        {kunique}($h).mset_print();
}

[EMAIL PROTECTED]() {
        printf("\n# test packed {max}(%s,%s)\n", $h.bbpname(), $t.bbpname());
        {max}($h,$t).set_print();
}

[EMAIL PROTECTED]() {
        printf("\n# test direct {max}(%s)\n", $h.bbpname());
        {max}([int]($h)).set_print();
}

[EMAIL PROTECTED]() {
        printf("\n# test direct {max}(%s,%s)\n", $h.bbpname(), $t.bbpname());
        {max}([int]($h),$t).set_print();
}

quit();

--- NEW FILE: evenheight.milS ---
# The main procedure is evenheight(bat_param,nranges) 
# it produces a new bat with an even-height remapping of tail-values.

# this computes the weighed midpoint of a range 'low'..'high'
# the weights are taken from the sorted histogram 'hst' 
#
proc compute_mid(bat hst, any  low, any  high) : void {
    var members := hst.reverse().select(low,high);
    var weighed := new(int, members.ttype(), members.count());
    var mid := nil.cast(hst.htype());
    var cum := 0;

    [EMAIL PROTECTED]() {
        cum := cum + $h;
        weighed.insert(cum, $t);
    }
    [EMAIL PROTECTED]() {
        mid := $t;
        if ($h >= (cum / 2)) break;
    }
    return mid;
}

# we construct an equal-height partitioning range for the tail columns
# of a bat. This partitioning range is represented by a new 'range-bat'.
# Each BUN in the range-bat represents 1 range. Its tail contains the maximum 
# range value (tails are sorted); its head contains the representative value.
#
# The below proc constructs such a range-bat iteratively using
# a histogram. This algorithms dynamically adapts the ideal 
# group-size 'ideal' to obtain a nicely balanced result.
#
proc range_bat(bat b, int n) : bat {
    var      histo := b.histogram().sort(); # sort it!
    var     ranges := new(b.ttype(), b.ttype(), (n*4)/3);
    var    cursize := 0;
    var items_left := b.count();
    var mid_h, last_h, first_h;

    [EMAIL PROTECTED]() {
        var idealsize := items_left/n;
        if (cursize = 0) {
            first_h := $h; # the lowest element of the range
        }
        cursize := cursize + $t;
        if (cursize >= idealsize) {
            # ok, we must create a new group
            if ((cursize - idealsize) <= (idealsize - (cursize- $t))) {
                items_left := items_left - cursize;
                     mid_h := histo.compute_mid(first_h, $h);
                    last_h := $h;
                   cursize := 0;
            } else {
                # group would be too large with the current
                # element in it. Keep the current for the next grp.
                #
                items_left := items_left - (cursize - $t);
                     mid_h := histo.compute_mid(first_h, last_h);
                   first_h := $h;
                   cursize := $t;
            }
            # insert the new group description
            ranges.insert(mid_h, last_h);
            n := n - 1;
        }
        last_h := $h;
    }
    return ranges;
}

# use the range-bat to convert one value to its representative value.
proc convert_val(any v, any rng) : any {
        [EMAIL PROTECTED]() {
                if ($t >= v) return $h;
        }
        return nil.cast(v.type());
}

# OVERALL USEABLE PROC
proc evenheight(bat b, int n) : bat {
        var rng := range_bat(b, n);
        print(rng); # print the range (for debugging purposes)
        return [convert_val](b, const rng);
}

# TESTING

var TheSize := 1000;

var def_tpe := new(int,int);
var i := 0;
while (i<TheSize) { def_tpe.insert(i,rand()); i:+=1; }

var a := [str](def_tpe.mark([EMAIL PROTECTED])).reverse().mirror();
var b := a.range_bat(10);
var c := [int](b.reverse().mirror());
var d := [int](b.reverse());
print([-](c,d),b.reverse());

var aa := a.evenheight(9);

var z1 := new(int,int);
var z2 := new(int,int);
i := 0;
while (i<TheSize) { z1.insert(i,rand()); z2.insert(i,i); i:+=1; }

printf("#~BeginVariableOutput~#\n"); var z1z:=z1.evenheight(8); 
printf("#~EndVariableOutput~#\n");

var z2z:=z2.evenheight(8);

quit();


--- tst_append_readonly_commit.milM DELETED ---

--- trim.milM DELETED ---

--- tst_mmap.milM DELETED ---

--- NEW FILE: tst_priv.milS ---
# test change of private mmap -> malloced under extends
new(void,str,1000000).persists(true).access(BAT_WRITE).rename("a");
var d := new(void,int,1000);
var i := 0;
while(i < 1000) d.insert(nil,i :+= 1);
d := [str](d).seqbase([EMAIL PROTECTED]);
bat("a").seqbase([EMAIL PROTECTED]).insert(d);

i := 0;
while(i < 100) {
    bat("a").insert(d.seqbase(oid(bat("a").count())));
    i :+= 1;
}

bat("a").mmap(1,1,1);
unload("a");
bat("a").info().reverse().select("theap.storage").reverse().print();

[int](bat("a").mirror());
var e := [str]([int](bat("a").mirror()));
debugmask(49);
bat("a").insert(e);
debugmask(9);

#bat("a").mmap(1,1,1);
bat("a").info().reverse().select("theap.storage").reverse().print();
e := [str]([int](bat("a").mirror()));
debugmask(49);
bat("a").insert(e);
debugmask(9);

bat("a").info().reverse().select("theap.storage").reverse().print();
bat("a").append("make dirty..");
commit();

bat("a").destroy();
commit();

quit();

--- NEW FILE: tst_updatestr2.milS ---
bat("ab").slice(0,2).print();
quit();

--- NEW FILE: GNATS-2476.milS ---
var b := bat(int,int);
b.insert(1,1);
b.insert(9,2); # in same hash list (default hash-mask=7, 1&7=9&7=1)
b.accbuild("hash");
b.commit();
b.delete(9); # triggers move (1,1) over (9,2); hash corrupt
b.delete(); # delete (1,1) without hash-lookup
b.find(1).print(); # still finds (1,1) !

quit(); 

--- NEW FILE: GNATS-2719.milS ---
var b := bat(void,bit);
b.insert(nil,true);
b.insert(nil,true);
b.insert(nil,true);
b.insert(nil,true);
b.seqbase([EMAIL PROTECTED]);
var s := b.select(true);
b.histogram().print();

quit();



--- recursion.milM DELETED ---

--- NEW FILE: tst_writestr.milS ---
# test memory map of string heap under append
vm_minsize(lng(128*1024));

var i := 0;
var b := 500000;
#BIG := new(void,int,50000000); # claim 200MB
var d := new(void,int,b).seqbase([EMAIL PROTECTED]);

# temporarily disable propmask in order to make this bearable
var m := debugmask();
debugmask(2);
while(i < b) d.append(i :+= 1);
debugmask(m);

{
 new(void,str,1000000).seqbase([EMAIL 
PROTECTED]).access(BAT_WRITE).rename("aa").persists(true);
 unload("aa");
}

commit();

i := 0;
while(true) { 
 bat("aa").info().reverse().select("theap.storage").reverse().print();
 var e := [str]([+](d,b));
 #e := [str]([/](d,10000));
 print(b :+= 500000); 
 bat("aa").insert(e);
 bat("aa").mmap(1,1,1);
 i :+= 1;
 if (i = 4) { break; }
 unload("aa");
}

{
bat("aa").persists(false);
commit();
}

quit();

--- tst_append_readonly.milM DELETED ---

--- NEW FILE: tst_append_readonly.milS ---
# reduce mem_bigsize to trigger memory mapping
#
vm_minsize(lng(128*1024)); 

# test memory map of string heap under append
var i := 0;
var b := 20000;
#BIG := new(void,int,50000000); # claim 200MB
var d := new(void,int,b).seqbase([EMAIL PROTECTED]);

# temporarily disable propmask in order to make this bearable
var m := debugmask();
debugmask(2);
while(i < b) d.append(i :+= 1);
debugmask(m);

{
 new(void,str,200000).seqbase([EMAIL 
PROTECTED]).access(BAT_READ).rename("aa").persists(true);
}

i := 1;
while(i < 4) { 
 bat("aa").info().reverse().select("theap.storage").reverse().print();
 var e := [str]([+](d,b));
 #e := [str]([/](d,10000));
 print(b :+= 20000); 
 # second insert will trigger a BATmaterialize 'aa' which changes the storage
 # from STORE_MMAP to STORE_MEM (which is a bug) 
 bat("aa").access(BAT_APPEND).insert(e).access(BAT_READ);
 i :+= 1;
}

bat("aa").info().reverse().select("theap.storage").reverse().print();
bat("aa").persists(false);
commit();

quit();

--- tst_writestr.milM DELETED ---

--- NEW FILE: recursion.milS ---
# This tests the saveguards for highly recursive programs.
# The first p() invocation will give a physical out of stack error.  
# The others together generate a physical out-of-context error.
# This, however, is rather undeterministic and depends
# on the parallelism achieved.
# What it *should* do is not crash, and print the [42]

module(alarm);
proc p;
proc p(int i) : void { if (i < 10000) p(i+1); }
{
p(100).fork();
p(300).fork();
p(301).fork();
p(302).fork();
p(303).fork();
p(304).fork();
sleep(10);
}
print(42);

quit();

--- GNATS-2719.milM DELETED ---

--- tst_updatestr2.milM DELETED ---

--- GNATS-2476.milM DELETED ---

--- NEW FILE: tst_updatestr.milS ---
# test memory map of string heap under append
vm_minsize(lng(128*1024));

var i := 0;
var b := 500000;
#BIG := new(void,int,50000000); # claim 200MB
var d := new(void,int,b).seqbase([EMAIL PROTECTED]);

# temporarily disable propmask in order to make this bearable
var m := debugmask();
debugmask(2);
while(i < b) d.append(i :+= 1);
debugmask(m);

{
 new(void,str,1000000).seqbase([EMAIL 
PROTECTED]).access(BAT_WRITE).rename("ab").persists(true);
 bat("ab").insert([str](d));
 bat("ab").count().print();
 bat("ab").slice(0,2).print();
 unload("ab");
}

commit();

i := 0;
while(true) { 
 bat("ab").info().reverse().select("theap.storage").reverse().print();
 var e := [str]([+](d,b));
 #e := [str]([/](d,10000));
 print(b :+= 500000); 
 bat("ab").replace(e);
 bat("ab").count().print();
 bat("ab").slice(0,2).print();
 bat("ab").mmap(1,1,1);
 i :+= 1;
 if (i = 4) { break; }
 unload("ab");
}

bat("ab").slice(0,2).print();
quit();

--- NEW FILE: table_orderby.milS ---
module(xtables);

var a := new(void,str);
a.insert(nil, "the");
a.insert(nil, "cat");
a.insert(nil, "sat");
a.insert(nil, "on");
a.insert(nil, "the");
a.insert(nil, "mat");

var c := a.copy().seqbase([EMAIL PROTECTED]);
var b := [str](c);
print(c,b);

var d := c.mark([EMAIL PROTECTED]);
print("1",c,d);
print("2",c,d);

var e := [oid](d).access(BAT_WRITE).append([oid]([*]([int](d),2)));
e := e.insert(e.copy()).reverse().sort().mark([EMAIL PROTECTED]).reverse();
var f := 
a.copy().access(BAT_WRITE).insert(a).insert(a).insert(a).seqbase([EMAIL 
PROTECTED]);
var g := [>]([int](f.mirror()),12);
print("1",e,f,g);
print("1,2",e,f,g);
print("2",e,f,g);
print("2,1",e,f,g);
print("3,1,2",e,f,g);

quit();

--- tst_uselect.milM DELETED ---

--- NEW FILE: tst_uselect.milS ---
proc genbat(int size, int perc) : bat[void,oid] {
    var b := new(void, oid, size);
    var t := new(void, oid, 100);
    var i := 0;
    while(i < 100) {
        if (i < perc) {
            t.insert(nil,oid(nil));
        } else {
            t.insert(nil,oid(i));
        }
        i :+= 1;
    }
    i := size / 100;
    while((i :-= 1) >= 0) {
        b.insert(t);
    }
    return b.seqbase([EMAIL PROTECTED]);
}

var size := 10000;

while(size <= 1000000) {
    var perc := 0;
    while(perc <= 100) {
          var m := debugmask();
          debugmask(2);
          var b := genbat(size, perc);
          debugmask(m);
          kdiff(b,b.uselect(oid(nil))).count().print(); 
          printf("kdiff(b,b.uselect(oid(nil))) size=%d perc=%d\n", size, perc);
          [ifelse]([isnil](b), b).count().print(); 
          printf("[ifelse]([isnil](b),b) size=%d perc=%d\n", size, perc);
          perc :+= 10;
    }
    size :*= 10;
}

quit();

--- table_orderby.milM DELETED ---

--- tst_updatestr.milM DELETED ---


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Monetdb-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-checkins

Reply via email to