Changeset: cb4d330478ff for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cb4d330478ff
Modified Files:
        clients/Tests/exports.stable.out
        gdk/gdk.h
        gdk/gdk_bat.c
        gdk/gdk_private.h
        monetdb5/extras/sphinx/sphinx.c
        monetdb5/modules/kernel/batcolor.c
        monetdb5/modules/kernel/batstr.c
        monetdb5/modules/mal/tablet.c
Branch: default
Log Message:

Removed BUNfastins, avoid bunfastins, and turn the latter into a gdk private 
macro.


diffs (truncated from 724 to 300 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -210,7 +210,6 @@ void BBPunlock(const char *s);
 gdk_return BUNappend(BAT *b, const void *right, bit force);
 gdk_return BUNdel(BAT *b, const void *left, const void *right, bit force);
 BUN BUNdelete(BAT *b, BUN p, bit force);
-gdk_return BUNfastins(BAT *b, const void *left, const void *right);
 BUN BUNfnd(BAT *b, const void *right);
 gdk_return BUNinplace(BAT *b, BUN p, const void *left, const void *right, bit 
force);
 gdk_return BUNreplace(BAT *b, const void *left, const void *right, bit force);
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1113,11 +1113,6 @@ gdk_export bte ATOMelmshift(int sz);
  * can use BUNins, BUNappend, BUNreplace, and BUNdel.  The
  * batch update operations are BATins, BATappend and BATdel.
  *
- * Only experts interested in speed may use BUNfastins, since it skips
- * most consistency checks, does not update search accelerators, and
- * does not maintain properties such as the hsorted and tsorted
- * flags. Beware!
- *
  * The routine BUNfnd provides fast access to a single BUN providing a
  * value for the tail of the binary association.
  *
@@ -1183,7 +1178,6 @@ gdk_export bte ATOMelmshift(int sz);
                        ATOMputFIX((b)->HT->type, (p), v);              \
                }                                                       \
        } while (0)
-#define Hputvalue(b, p, v, copyall)    HTputvalue(b, p, v, copyall, H)
 #define Tputvalue(b, p, v, copyall)    HTputvalue(b, p, v, copyall, T)
 #define HTreplacevalue(b, p, v, HT)                                    \
        do {                                                            \
@@ -1231,7 +1225,6 @@ gdk_export bte ATOMelmshift(int sz);
                        ATOMreplaceFIX((b)->HT->type, (p), v);          \
                }                                                       \
        } while (0)
-#define Hreplacevalue(b, p, v)         HTreplacevalue(b, p, v, H)
 #define Treplacevalue(b, p, v)         HTreplacevalue(b, p, v, T)
 #define HTfastins_nocheck(b, p, v, s, HT)                      \
        do {                                                    \
@@ -1239,36 +1232,8 @@ gdk_export bte ATOMelmshift(int sz);
                (b)->HT->heap.free += (s);                      \
                HTputvalue((b), HT##loc((b), (p)), (v), 0, HT); \
        } while (0)
-#define hfastins_nocheck(b, p, v, s)   HTfastins_nocheck(b, p, v, s, H)
 #define tfastins_nocheck(b, p, v, s)   HTfastins_nocheck(b, p, v, s, T)
 
-#define bunfastins_nocheck(b, p, h, t, hs, ts)         \
-       do {                                            \
-               hfastins_nocheck(b, p, h, hs);          \
-               tfastins_nocheck(b, p, t, ts);          \
-               (b)->batCount++;                        \
-       } while (0)
-
-#define bunfastins_nocheck_inc(b, p, h, t)                             \
-       do {                                                            \
-               bunfastins_nocheck(b, p, h, t, Hsize(b), Tsize(b));     \
-               p++;                                                    \
-       } while (0)
-
-#define bunfastins(b, h, t)                                            \
-       do {                                                            \
-               register BUN _p = BUNlast(b);                           \
-               if (_p >= BATcapacity(b)) {                             \
-                       if (_p == BUN_MAX || BATcount(b) == BUN_MAX) {  \
-                               GDKerror("bunfastins: too many elements to 
accomodate (" BUNFMT ")\n", BUN_MAX); \
-                               goto bunins_failed;                     \
-                       }                                               \
-                       if (BATextend((b), BATgrows(b)) != GDK_SUCCEED) \
-                               goto bunins_failed;                     \
-               }                                                       \
-               bunfastins_nocheck(b, _p, h, t, Hsize(b), Tsize(b));    \
-       } while (0)
-
 #define bunfastapp_nocheck(b, p, t, ts)                \
        do {                                    \
                tfastins_nocheck(b, p, t, ts);  \
@@ -1297,7 +1262,6 @@ gdk_export bte ATOMelmshift(int sz);
        } while (0)
 
 gdk_export gdk_return GDKupgradevarheap(COLrec *c, var_t v, int copyall, int 
mayshare);
-gdk_export gdk_return BUNfastins(BAT *b, const void *left, const void *right);
 gdk_export gdk_return BUNappend(BAT *b, const void *right, bit force);
 gdk_export gdk_return BATins(BAT *b, BAT *c, bit force);
 gdk_export gdk_return BATappend(BAT *b, BAT *c, bit force);
@@ -3131,17 +3095,4 @@ gdk_export BAT *BATsample(BAT *b, BUN n)
  */
 #define MAXPARAMS      32
 
-#ifndef NDEBUG
-#ifdef __GNUC__
-/* in debug builds, complain (warn) about usage of legacy functions */
-
-#define _COL_TYPE(c)   ((c)->type == TYPE_void ?                       \
-                               (c)->seq == oid_nil ? "nil" : "void" :  \
-                        (c)->type == TYPE_oid ?                        \
-                               (c)->dense ? "dense" : "oid" :          \
-                        ATOMname((c)->type))
-
-#endif
-#endif
-
 #endif /* _GDK_H_ */
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -1001,28 +1001,6 @@ BATcopy(BAT *b, int ht, int tt, int writ
                un_move(tmpp, Tloc(b, p), ts);                          \
        } while (0)
 
-/*
- * @- BUN Insertion
- * Insertion into a BAT is split into two operations BUNins and
- * BUNfastins.  The former should be used when integrity enforcement
- * and index maintenance is required.  The latter is used to quickly
- * insert the BUN into the result without any additional check.  For
- * those cases where speed is required, the type decoding can be
- * circumvented by asking for a BUN using BATbunalloc and fill it
- * directly. See gdk.mx for the bunfastins(b,h,t) macros.
- */
-gdk_return
-BUNfastins(BAT *b, const void *h, const void *t)
-{
-       bunfastins(b, h, t);
-       if (!b->batDirty)
-               b->batDirty = TRUE;
-       return GDK_SUCCEED;
-      bunins_failed:
-       return GDK_FAIL;
-}
-
-
 static void
 setcolprops(BAT *b, COLrec *col, const void *x)
 {
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -347,6 +347,37 @@ extern MT_Lock MT_system_lock;
 
 #define SORTloop_bit(b,p,q,tl,th) SORTloop_bte(b,p,q,tl,th)
 
+#define Hputvalue(b, p, v, copyall)    HTputvalue(b, p, v, copyall, H)
+
+#define hfastins_nocheck(b, p, v, s)   HTfastins_nocheck(b, p, v, s, H)
+
+#define bunfastins_nocheck(b, p, h, t, hs, ts)         \
+       do {                                            \
+               hfastins_nocheck(b, p, h, hs);          \
+               tfastins_nocheck(b, p, t, ts);          \
+               (b)->batCount++;                        \
+       } while (0)
+
+#define bunfastins_nocheck_inc(b, p, h, t)                             \
+       do {                                                            \
+               bunfastins_nocheck(b, p, h, t, Hsize(b), Tsize(b));     \
+               p++;                                                    \
+       } while (0)
+
+#define bunfastins(b, h, t)                                            \
+       do {                                                            \
+               register BUN _p = BUNlast(b);                           \
+               if (_p >= BATcapacity(b)) {                             \
+                       if (_p == BUN_MAX || BATcount(b) == BUN_MAX) {  \
+                               GDKerror("bunfastins: too many elements to 
accomodate (" BUNFMT ")\n", BUN_MAX); \
+                               goto bunins_failed;                     \
+                       }                                               \
+                       if (BATextend((b), BATgrows(b)) != GDK_SUCCEED) \
+                               goto bunins_failed;                     \
+               }                                                       \
+               bunfastins_nocheck(b, _p, h, t, Hsize(b), Tsize(b));    \
+       } while (0)
+
 /* extra space in front of strings in string heaps when hashash is set
  * if at least (2*SIZEOF_BUN), also store length (heaps are then
  * incompatible) */
diff --git a/monetdb5/extras/sphinx/sphinx.c b/monetdb5/extras/sphinx/sphinx.c
--- a/monetdb5/extras/sphinx/sphinx.c
+++ b/monetdb5/extras/sphinx/sphinx.c
@@ -32,7 +32,6 @@ sphinx_searchIndexLimit(BAT **ret, /* pu
        BAT *bn;
        sphinx_client *client;
        sphinx_result *res;
-       oid o = 0;
 
        client = sphinx_create ( SPH_TRUE );
        if (client == NULL)
@@ -51,8 +50,7 @@ sphinx_searchIndexLimit(BAT **ret, /* pu
                        throw(MAL, "sphinx.searchIndex", MAL_MALLOC_FAIL);
                for ( i = 0; i < res->num_matches; i++ ) {
                        lng sphinx_id = sphinx_get_id ( res, i );
-                       o++;
-                       BUNfastins(bn, &o, &sphinx_id);
+                       bunfastapp(bn, &sphinx_id);
                }
 
        }
@@ -66,6 +64,10 @@ sphinx_searchIndexLimit(BAT **ret, /* pu
 
        *ret = bn;
        return MAL_SUCCEED;
+  bunins_failed:
+       BBPunfix(bn->batCacheid);
+       sphinx_destroy(client);
+       throw(MAL, "sphinx.searchIndex", MAL_MALLOC_FAIL);
 }
 
 str
diff --git a/monetdb5/modules/kernel/batcolor.c 
b/monetdb5/modules/kernel/batcolor.c
--- a/monetdb5/modules/kernel/batcolor.c
+++ b/monetdb5/modules/kernel/batcolor.c
@@ -34,15 +34,13 @@ str CLRbat##NAME(bat *ret, const bat *l)
                                                                                
                                                                \
        if( (b= BATdescriptor(*l)) == NULL )                                    
                        \
                throw(MAL, "batcolor." #NAME, RUNTIME_OBJECT_MISSING);          
        \
-       bn= BATnew(b->htype,getTypeIndex(#TYPE2,-1,TYPE_int),BATcount(b), 
TRANSIENT); \
+       bn= BATnew(TYPE_void,getTypeIndex(#TYPE2,-1,TYPE_int),BATcount(b), 
TRANSIENT); \
        if( bn == NULL){                                                        
                                                \
                BBPunfix(b->batCacheid);                                        
                                        \
                throw(MAL, "batcolor." #NAME, MAL_MALLOC_FAIL);                 
                \
        }                                                                       
                                                                \
        if( b->htype== TYPE_void)                                               
                                        \
                BATseqbase(bn, b->hseqbase);                                    
                                \
-       bn->hsorted=b->hsorted;                                                 
                                        \
-       bn->hrevsorted=b->hrevsorted;                                           
                                \
        bn->tsorted=0;                                                          
                                                \
        bn->trevsorted=0;                                                       
                                                \
        bn->T->nil = 0;                                                         
                                                \
@@ -51,7 +49,6 @@ str CLRbat##NAME(bat *ret, const bat *l)
        bi = bat_iterator(b);                                                   
                                        \
                                                                                
                                                                \
        BATloop(b, p, q) {                                                      
                                                \
-               ptr h = BUNhead(bi,p);                                          
                                        \
                x= (TYPE1 *) BUNtail(bi,p);                                     
                                        \
                if (x== 0 || *x == TYPE1##_nil) {                               
                                \
                        y = (TYPE2) TYPE2##_nil;                                
                                        \
@@ -59,10 +56,16 @@ str CLRbat##NAME(bat *ret, const bat *l)
                        bn->T->nil = 1;                                         
                                                \
                } else                                                          
                                                        \
                        FUNC(yp,x);                                             
                                                        \
-               bunfastins(bn, h, yp);                                          
                                        \
+               bunfastapp(bn, yp);                                             
                                                \
        }                                                                       
                                                                \
-       bn->H->nonil = b->H->nonil;                                             
                                        \
-       bn->H->nil = b->H->nil;                                                 
                                        \
+       if (!BAThdense(b)) {                                                    
                                        \
+               /* legacy */                                                    
                                                \
+               BAT *b2 = VIEWcreate(b, bn);                                    
                                \
+               BBPunfix(bn->batCacheid);                                       
                                        \
+               bn = b2;                                                        
                                                        \
+       } else {                                                                
                                                        \
+               BATseqbase(bn, b->hseqbase);                                    
                                \
+       }                                                                       
                                                                \
        if (!(bn->batDirty & 2))                                                
                                        \
                BATsetaccess(bn, BAT_READ);                                     
                                        \
        *ret = bn->batCacheid;                                                  
                                        \
@@ -115,17 +118,13 @@ str CLRbat##NAME(bat *ret, const bat *l,
                        BBPunfix(b3->batCacheid);                               
                                        \
                throw(MAL, "batcolor." #NAME, RUNTIME_OBJECT_MISSING);          
        \
        }                                                                       
                                                                \
-       bn= BATnew(b->htype,getTypeIndex("color",5,TYPE_int),BATcount(b), 
TRANSIENT); \
+       bn= BATnew(TYPE_void,getTypeIndex("color",5,TYPE_int),BATcount(b), 
TRANSIENT); \
        if( bn == NULL){                                                        
                                                \
                BBPunfix(b->batCacheid);                                        
                                        \
                BBPunfix(b2->batCacheid);                                       
                                        \
                BBPunfix(b3->batCacheid);                                       
                                        \
                throw(MAL, "batcolor." #NAME, MAL_MALLOC_FAIL);                 
                \
        }                                                                       
                                                                \
-       if( b->htype== TYPE_void)                                               
                                        \
-               BATseqbase(bn, b->hseqbase);                                    
                                \
-       bn->hsorted=b->hsorted;                                                 
                                        \
-       bn->hrevsorted=b->hrevsorted;                                           
                                \
        bn->tsorted=0;                                                          
                                                \
        bn->trevsorted=0;                                                       
                                                \
        bn->T->nil = 0;                                                         
                                                \
@@ -138,7 +137,6 @@ str CLRbat##NAME(bat *ret, const bat *l,
        p2= BUNfirst(b2);                                                       
                                                \
        p3= BUNfirst(b3);                                                       
                                                \
        BATloop(b, p, q) {                                                      
                                                \
-               ptr h = BUNhead(bi,p);                                          
                                        \
                x= (TYPE *) BUNtail(bi,p);                                      
                                        \
                x2= (TYPE *) BUNtail(b2i,p);                                    
                                \
                x3= (TYPE *) BUNtail(b3i,p);                                    
                                \
@@ -150,12 +148,18 @@ str CLRbat##NAME(bat *ret, const bat *l,
                        bn->T->nil = 1;                                         
                                                \
                } else                                                          
                                                        \
                        FUNC(yp,x,x2,x3);                                       
                                                \
-               bunfastins(bn, h, yp);                                          
                                        \
+               bunfastapp(bn, yp);                                             
                                                \
                p2++;                                                           
                                                        \
                p3++;                                                           
                                                        \
        }                                                                       
                                                                \
-       bn->H->nonil = b->H->nonil;                                             
                                        \
-       bn->H->nil = b->H->nil;                                                 
                                        \
+       if (!BAThdense(b)) {                                                    
                                        \
+               /* legacy */                                                    
                                                \
+               BAT *b2 = VIEWcreate(b, bn);                                    
                                \
+               BBPunfix(bn->batCacheid);                                       
                                        \
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to