Changeset: 7c832c8b1a70 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7c832c8b1a70
Modified Files:
        monetdb5/modules/kernel/algebra.mx
        monetdb5/modules/mal/sample.c
        monetdb5/modules/mal/sample.h
        monetdb5/modules/mal/sample.mal
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql_gencode.c
Branch: default
Log Message:

use new sub sample function (cleans up some more reverses and marks)


diffs (112 lines):

diff --git a/monetdb5/modules/kernel/algebra.mx 
b/monetdb5/modules/kernel/algebra.mx
--- a/monetdb5/modules/kernel/algebra.mx
+++ b/monetdb5/modules/kernel/algebra.mx
@@ -282,6 +282,11 @@ comment "Selects all elements that have 
 command sample ( b:bat[:oid,:any_2], num:int ) :bat[:oid,:any_2] 
 address ALGsample
 comment "Produce a random selection of size 'num' from the input BAT.";
+
+command subsample(b:bat[:oid,:any_1], num:int ) :bat[:oid,:oid] 
+address ALGsubsample
+comment "Return the oids of a random selection of size 'num' from the input 
BAT.";
+
 # @+ BAT copying
 command copy( b:bat[:any_1,:any_2]) :bat[:any_1,:any_2] 
 address ALGcopy
@@ -1076,6 +1081,7 @@ algebra_export str ALG@1(int *result, in
 @:ALGbinaryExport(tdifference)@
 @:ALGbinaryExport(tdiff)@
 @:ALGbinaryintExport(sample)@
+@:ALGbinaryintExport(subsample)@
 
 algebra_export str ALGtunique(int *result, int *bid);
 algebra_export str ALGtsort(int *result, int *bid);
@@ -2765,6 +2771,11 @@ ALGsample(bat *result, bat *bid, int *pa
        return ALGbinaryint(result, bid, param, BATsample, "algebra.sample");
 }
 
+str
+ALGsubsample(bat *result, bat *bid, int *param)
+{
+       return ALGbinaryint(result, bid, param, BATsample_, 
"algebra.subsample");
+}
 
 /* add items missing in the kernel */
 str
diff --git a/monetdb5/modules/mal/sample.c b/monetdb5/modules/mal/sample.c
--- a/monetdb5/modules/mal/sample.c
+++ b/monetdb5/modules/mal/sample.c
@@ -96,6 +96,23 @@ SAMPLEuniform(bat *r, bat *b, ptr s) {
 }
 
 sample_export str
+SAMPLEsubuniform(bat *r, bat *b, ptr s) {
+       BAT *br, *bb;
+
+       if ((bb = BATdescriptor(*b)) == NULL) {
+               throw(MAL, "sample.subuniform", INTERNAL_BAT_ACCESS);
+       }
+       br = BATsample_(bb,*(BUN *)s);
+       if (br == NULL)
+               throw(MAL, "sample.subuniform", OPERATION_FAILED);
+
+       BBPunfix(bb->batCacheid);
+       BBPkeepref(*r = br->batCacheid);
+       return MAL_SUCCEED;
+
+}
+
+sample_export str
 SAMPLEuniform_dbl(bat *r, bat *b, ptr p) {
        BAT *bb;
        double pr = *(double *)p;
diff --git a/monetdb5/modules/mal/sample.h b/monetdb5/modules/mal/sample.h
--- a/monetdb5/modules/mal/sample.h
+++ b/monetdb5/modules/mal/sample.h
@@ -42,6 +42,9 @@ sample_export str
 SAMPLEuniform(bat *r, bat *b, ptr s);
 
 sample_export str
+SAMPLEsubuniform(bat *r, bat *b, ptr s);
+
+sample_export str
 SAMPLEuniform_dbl(bat *r, bat *b, ptr p);
 
 #endif
diff --git a/monetdb5/modules/mal/sample.mal b/monetdb5/modules/mal/sample.mal
--- a/monetdb5/modules/mal/sample.mal
+++ b/monetdb5/modules/mal/sample.mal
@@ -27,6 +27,10 @@ command uniform(b:bat[:oid,:any],s:wrd):
 address SAMPLEuniform
 comment "Returns a uniform sample of size s"
 
+command subuniform(b:bat[:oid,:any],s:wrd):bat[:oid,:oid]
+address SAMPLEsubuniform
+comment "Returns the oids of a uniform sample of size s"
+
 command uniform(b:bat[:oid,:any],p:dbl):bat[:oid,:any]
 address SAMPLEuniform_dbl
 comment "Returns a uniform sample of size = (p x count(b)), where 0 <= p <= 
1.0"
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
@@ -2677,7 +2677,6 @@ rel2bin_sample( mvc *sql, sql_rel *rel, 
                sc = column(sql->sa, sc);
                sample = stmt_sample(sql->sa, stmt_alias(sql->sa, sc, tname, 
cname),s);
 
-               sample = stmt_reverse(sql->sa, stmt_mark_tail(sql->sa, sample, 
0));
                for ( ; n; n = n->next) {
                        stmt *sc = n->data;
                        char *cname = column_name(sql->sa, sc);
diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -983,7 +983,7 @@ _dumpstmt(backend *sql, MalBlkPtr mb, st
                case st_sample:{
                        int l = _dumpstmt(sql, mb, s->op1);
                        int r = _dumpstmt(sql, mb, s->op2);
-                       q = newStmt(mb, "sample", "uniform");
+                       q = newStmt(mb, "sample", "subuniform");
                        q = pushArgument(mb, q, l);
                        q = pushArgument(mb, q, r);
                        s->nr = getDestVar(q);
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to