Changeset: e49e525736ac for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e49e525736ac
Modified Files:
        gdk/gdk.h
        gdk/gdk_batop.c
        monetdb5/modules/kernel/algebra.c
        monetdb5/modules/kernel/algebra.h
        monetdb5/modules/kernel/algebra.mal
        sql/backends/monet5/sql_cast.c
Branch: default
Log Message:

BATrestrict gone
This was a very old piece of code geared at 2-headed
column selections (range on head and tail).


diffs (truncated from 378 to 300 lines):

diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1602,7 +1602,6 @@ gdk_export int BATgetaccess(BAT *b);
  * @item BAT *
  * @tab BATmirror (BAT *b)
  * @item BAT *
- * @tab BATreset (BAT *b)
  * @end multitable
  *
  * The routine BATclear removes the binary associations, leading to an
@@ -3334,7 +3333,6 @@ gdk_export BAT *BATuselect_(BAT *b, cons
 gdk_export BAT *BATantiuselect_(BAT *b, const void *tl, const void *th, bit 
li, bit hi);
 gdk_export BAT *BATselect(BAT *b, const void *tl, const void *th);
 gdk_export BAT *BATuselect(BAT *b, const void *tl, const void *th);
-gdk_export BAT *BATrestrict(BAT *b, const void *hl, const void *hh, const void 
*tl, const void *th);
 
 gdk_export BAT *BATconstant(int tt, const void *val, BUN cnt);
 gdk_export BAT *BATconst(BAT *l, int tt, const void *val);
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -18,24 +18,8 @@
  */
 
 /*
- * @a M. L. Kersten, P. Boncz, S. Manegold, N. Nes, K.S. Mullender
- * @* Common BAT Operations
- * This module contains the following BAT algebra operations:
- * @itemize
- * @item bulk updates
- * multi-insert, multi-delete, multi-replace
- * @item common aggregates
- * min, max and histogram
- * @item oid column manipulations
- * mark, number and split.
- * @item bat selections
- * select, slice, sample, fragment and restrict.
- * Note: non hash-/index-supported scanselects have been "outsourced"
- * to gdk_scanselect.mx as the fully expanded code grows too large to
- * be (conveniently) compiled in a single file.
- * @item bat partitioning
- * hash partition, range partitioning
- * @end itemize
+ * (c) M. L. Kersten, P. Boncz, S. Manegold, N. Nes, K.S. Mullender
+ * Common BAT Operations
  * We factor out all possible overhead by inlining code.  This
  * includes the macros BUNhead and BUNtail, which do a test to see
  * whether the atom resides in the buns or in a variable storage
@@ -58,7 +42,7 @@
        } while (0)
 
 /*
- * @+ BAT insert/delete/replace
+ * BAT insert/delete/replace
  * The content of a BAT can be appended to (removed from) another
  * using BATins (BATdel).
  */
@@ -775,14 +759,14 @@ BATreplace(BAT *b, BAT *n, bit force)
 
 
 /*
- * @+ BAT Selections
+ *  BAT Selections
  * The BAT selectors are among the most heavily used operators.
  * Their efficient implementation is therefore mandatory.
  *
  * The interface supports seven operations: BATslice, BATselect,
  * BATfragment, BATproject, BATrestrict.
  *
- * @- BAT slice
+ * BAT slice
  * This function returns a horizontal slice from a BAT. It optimizes
  * execution by avoiding to copy when the BAT is memory mapped (in
  * this case, an independent submap is created) or else when it is
@@ -923,7 +907,7 @@ BATslice(BAT *b, BUN l, BUN h)
 }
 
 /*
- * @- Top-N selection
+ * Top-N selection
  *
  * The top-N elements can be easily obtained by trimming the
  * space. The auxiliary index structures are removed.  For
@@ -989,166 +973,8 @@ BATtopN(BAT *b, BUN topN)
                }                                                       \
        } while (0)
 
-#define restrict2(cmptype, TYPE, BUNhead, BUNtail)                     \
-       do {                                                            \
-               tl = cmptype##_EQ(ATOMnilptr(t), tl, TYPE) ? 0 : tl;    \
-               th = cmptype##_EQ(ATOMnilptr(t), th, TYPE) ? 0 : th;    \
-               if (th && tl && cmptype##_GT(tl, th, TYPE)) {           \
-                       GDKerror("BATrestrict: illegal tail range.\n"); \
-               } else {                                                \
-                       BATiter bi = bat_iterator(b);                   \
-                                                                       \
-                       for (; i < m; i++) {                            \
-                               const void *v = BUNtail(bi, *i);        \
-                                                                       \
-                               if ((!tl || cmptype##_LE(tl, v, TYPE)) && \
-                                   (!th || cmptype##_LE(v, th, TYPE))) { \
-                                       bunfastins(bn, BUNhead(bi, *i), v); \
-                               }                                       \
-                       }                                               \
-               }                                                       \
-       } while (0)
-
-BAT *
-BATrestrict(BAT *b, const void *hl, const void *hh, const void *tl, const void 
*th)
-{
-       BAT *bn;
-       BUN p = 0, l;
-       BUN *mark, *m, *i;
-       BUN s;
-       int t;
-
-       BATcheck(hl, "BATrestrict: hl is null");
-       BATcheck(hh, "BATrestrict: hh is null");
-       BATcheck(tl, "BATrestrict: tl is null");
-       BATcheck(th, "BATrestrict: th is null");
-       bn = BATnew(BAThtype(b), BATttype(b), BATguess(b));
-       ESTIDEBUG THRprintf(GDKout, "#BATrestrict: estimated resultsize: " 
BUNFMT "\n", BATguess(b));
-
-       if (bn == NULL) {
-               return NULL;
-       }
-       BATkey(bn, BAThkey(b));
-       BATkey(BATmirror(bn), BATtkey(b));
-       bn->hsorted = BAThordered(b);
-       bn->tsorted = BATtordered(b);
-       bn->hrevsorted = BAThrevordered(b);
-       bn->trevsorted = BATtrevordered(b);
-       bn->H->nonil = b->H->nonil;
-       bn->T->nonil = b->T->nonil;
-
-       s = BATcount(b);
-       if (s == 0) {
-               ESTIDEBUG THRprintf(GDKout, "#BATrestrict: actual resultsize: " 
BUNFMT "\n", BATcount(bn));
-
-               return bn;
-       }
-       if ((mark = (BUN *) GDKmalloc((unsigned) s * sizeof(BUN))) == NULL)
-               goto bunins_failed;
-       m = mark;
-       i = mark;
-       switch (ATOMstorage(t = b->htype)) {
-       case TYPE_bte:
-               restrict1(simple, bte, BUNhloc);
-               break;
-       case TYPE_sht:
-               restrict1(simple, sht, BUNhloc);
-               break;
-       case TYPE_int:
-               restrict1(simple, int, BUNhloc);
-               break;
-       case TYPE_flt:
-               restrict1(simple, flt, BUNhloc);
-               break;
-       case TYPE_dbl:
-               restrict1(simple, dbl, BUNhloc);
-               break;
-       case TYPE_lng:
-               restrict1(simple, lng, BUNhloc);
-               break;
-       default:
-               if (b->hvarsized) {
-                       restrict1(atom, t, BUNhvar);
-               } else {
-                       restrict1(atom, t, BUNhloc);
-               }
-               break;
-       }
-
-       /* second phase */
-       if (b->hvarsized) {
-               switch (ATOMstorage(t = b->ttype)) {
-               case TYPE_bte:
-                       restrict2(simple, bte, BUNhvar, BUNtloc);
-                       break;
-               case TYPE_sht:
-                       restrict2(simple, sht, BUNhvar, BUNtloc);
-                       break;
-               case TYPE_int:
-                       restrict2(simple, int, BUNhvar, BUNtloc);
-                       break;
-               case TYPE_flt:
-                       restrict2(simple, flt, BUNhvar, BUNtloc);
-                       break;
-               case TYPE_dbl:
-                       restrict2(simple, dbl, BUNhvar, BUNtloc);
-                       break;
-               case TYPE_lng:
-                       restrict2(simple, lng, BUNhvar, BUNtloc);
-                       break;
-               default:
-                       if (b->tvarsized) {
-                               restrict2(atom, t, BUNhvar, BUNtvar);
-                       } else {
-                               restrict2(atom, t, BUNhvar, BUNtloc);
-                       }
-                       break;
-               }
-       } else {
-               switch (ATOMstorage(t = b->ttype)) {
-               case TYPE_bte:
-                       restrict2(simple, bte, BUNhloc, BUNtloc);
-                       break;
-               case TYPE_sht:
-                       restrict2(simple, sht, BUNhloc, BUNtloc);
-                       break;
-               case TYPE_int:
-                       restrict2(simple, int, BUNhloc, BUNtloc);
-                       break;
-               case TYPE_flt:
-                       restrict2(simple, flt, BUNhloc, BUNtloc);
-                       break;
-               case TYPE_dbl:
-               case TYPE_lng:
-                       restrict2(simple, lng, BUNhloc, BUNtloc);
-                       break;
-               default:
-                       if (b->tvarsized) {
-                               restrict2(atom, t, BUNhloc, BUNtvar);
-                       } else {
-                               restrict2(atom, t, BUNhloc, BUNtloc);
-                       }
-                       break;
-               }
-       }
-       GDKfree(mark);
-
-       /* propagate alignment info */
-       if (BATcount(bn) == BATcount(b))
-               ALIGNset(bn, b);
-
-       ESTIDEBUG THRprintf(GDKout, "#BATrestrict: actual resultsize: " BUNFMT 
"\n", BATcount(bn));
-
-       return bn;
-
-      bunins_failed:
-       GDKfree(mark);
-       BBPreclaim(bn);
-       return NULL;
-}
-
 /*
- * @+ BAT Sorting
+ *  BAT Sorting
  * BATsort returns a sorted copy. BATorder sorts the BAT itself.
  */
 int
@@ -1551,7 +1377,7 @@ BATsubsort(BAT **sorted, BAT **order, BA
 }
 
 /*
- * @+ Reverse a BAT
+ * Reverse a BAT
  * BATrevert rearranges a BAT in reverse order.
  */
 BAT *
@@ -1951,7 +1777,7 @@ BATconst(BAT *b, int tailtype, const voi
 }
 
 /*
- * @+ BAT Aggregates
+ * BAT Aggregates
  *
  * We retain the size() and card() aggregate results in the column
  * descriptor.  We would like to have such functionality in an
diff --git a/monetdb5/modules/kernel/algebra.c 
b/monetdb5/modules/kernel/algebra.c
--- a/monetdb5/modules/kernel/algebra.c
+++ b/monetdb5/modules/kernel/algebra.c
@@ -857,30 +857,6 @@ ALGantiuselectInclusive(int *result, int
 }
 
 str
-ALGfragment(int *result, int *bid, ptr hlow, ptr hhigh, ptr tlow, ptr thigh)
-{
-       BAT *b, *bn = NULL;
-
-       if ((b = BATdescriptor(*bid)) == NULL) {
-               throw(MAL, "algebra.fragment", RUNTIME_OBJECT_MISSING);
-       }
-       derefStr(b, h, hlow);
-       derefStr(b, h, hhigh);
-       derefStr(b, t, tlow);
-       derefStr(b, t, thigh);
-       bn = BATrestrict(b, hlow, hhigh, tlow, thigh);
-       if (bn) {
-               if (!(bn->batDirty&2)) bn = BATsetaccess(bn, BAT_READ);
-               *result = bn->batCacheid;
-               BBPkeepref(*result);
-               BBPreleaseref(b->batCacheid);
-               return MAL_SUCCEED;
-       }
-       BBPreleaseref(b->batCacheid);
-       throw(MAL, "algebra.fragment", GDK_EXCEPTION);
-}
-
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to