Changeset: 3d431480f327 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3d431480f327
Modified Files:
        gdk/gdk.h
        gdk/gdk_col.c
        gdk/gdk_colop.c
        gdk/gdk_logger.c
        gdk/gdk_search.c
        gdk/gdk_search.h
        gdk/gdk_utils.c
Branch: headless
Log Message:

BUNfnd, SORTfnd, HASHfnd return oid relative to "first".
This makes these values compatible with what select does.


diffs (292 lines):

diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1400,7 +1400,7 @@
                *(oid*) (v) < (bi).b->seqbase ||                        \
                *(oid*) (v) >= (bi).b->seqbase + (bi).b->count ?        \
                BUN_NONE :                                              \
-               COLfirst((bi).b) + (oid) (*(oid*)(v) - (bi).b->seqbase)))
+               (oid) (*(oid*)(v) - (bi).b->seqbase)))
 
 #define BUNfndOID(p,bi,v)                      \
        if (COLdense(bi.b)) {                   \
diff --git a/gdk/gdk_col.c b/gdk/gdk_col.c
--- a/gdk/gdk_col.c
+++ b/gdk/gdk_col.c
@@ -2677,7 +2677,7 @@
 
                                                        HASHfnd_bte(r,bvi,v); 
/* purify: UMR */
                                                        if (r != BUN_NONE) {
-                                                               b->nokey[0] = r;
+                                                               b->nokey[0] = r 
+ b->first;
                                                                b->nokey[1] = 
yy;
                                                                disprove_key = 
FALSE;
                                                                b->descdirty = 
1;
@@ -2711,7 +2711,7 @@
 
                                                        HASHfnd_sht(r,bvi,v); 
/* purify: UMR */
                                                        if (r != BUN_NONE) {
-                                                               b->nokey[0] = r;
+                                                               b->nokey[0] = r 
+ b->first;
                                                                b->nokey[1] = 
yy;
                                                                disprove_key = 
FALSE;
                                                                b->descdirty = 
1;
@@ -2746,7 +2746,7 @@
 
                                                        HASHfnd_int(r,bvi,v); 
/* purify: UMR */
                                                        if (r != BUN_NONE) {
-                                                               b->nokey[0] = r;
+                                                               b->nokey[0] = r 
+ b->first;
                                                                b->nokey[1] = 
yy;
                                                                disprove_key = 
FALSE;
                                                                b->descdirty = 
1;
@@ -2781,7 +2781,7 @@
 
                                                        HASHfnd_lng(r,bvi,v); 
/* purify: UMR */
                                                        if (r != BUN_NONE) {
-                                                               b->nokey[0] = r;
+                                                               b->nokey[0] = r 
+ b->first;
                                                                b->nokey[1] = 
yy;
                                                                disprove_key = 
FALSE;
                                                                b->descdirty = 
1;
@@ -2815,7 +2815,7 @@
 
                                                                
HASHfnd_str_hv(r,bvi,v);                /* purify: UMR */
                                                                if (r != 
BUN_NONE) {
-                                                                       
b->nokey[0] = r;
+                                                                       
b->nokey[0] = r + b->first;
                                                                        
b->nokey[1] = yy;
                                                                        
disprove_key = FALSE;
                                                                        
b->descdirty = 1;
@@ -2848,7 +2848,7 @@
 
                                                        HASHfnd_any(r,bvi,v); 
/* purify: UMR */
                                                        if (r != BUN_NONE) {
-                                                               b->nokey[0] = r;
+                                                               b->nokey[0] = r 
+ b->first;
                                                                b->nokey[1] = 
yy;
                                                                disprove_key = 
FALSE;
                                                                b->descdirty = 
1;
diff --git a/gdk/gdk_colop.c b/gdk/gdk_colop.c
--- a/gdk/gdk_colop.c
+++ b/gdk/gdk_colop.c
@@ -1635,7 +1635,6 @@
                        /* alternative: return error */
                        fastins_nocheck_oid(bn, p - b->first, oid_nil);
                } else {
-                       r -= g->first;
                        fastins_nocheck_oid(bn, p - b->first, cnts[r]);
                        cnts[r]++;
                }
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -223,7 +223,7 @@
 
                if (p != BUN_NONE) {
                        COLiter i = col_iterator(lg->snapshots);
-                       int tid = *(int *) BUNtloc(i, p);
+                       int tid = *(int *) BUNtloc(i, p + lg->snapshots->first);
 
                        if (lg->tid <= tid)
                                return;
@@ -372,7 +372,7 @@
 
                if (p != BUN_NONE) {
                        COLiter i = col_iterator(lg->snapshots);
-                       int tid = *(int *) BUNtloc(i, p);
+                       int tid = *(int *) BUNtloc(i, p + lg->snapshots->first);
 
                        if (lg->tid <= tid)
                                return;
@@ -1096,7 +1096,7 @@
                lg->seqs = COLdescriptor(seqs);
                if (lg->seqs->count) {
                        COLiter seqsi = col_iterator(lg->seqs);
-                       lg->id = *(lng *) BUNtail(seqsi, BUNfnd(lg->seqs, &id));
+                       lg->id = *(lng *) BUNtail(seqsi, BUNfnd(lg->seqs, &id) 
+ lg->seqs->first);
                } else {
                        BUNins(lg->seqs, &id, &lg->id, FALSE);
                }
@@ -1282,7 +1282,7 @@
 
        if (p != BUN_NONE) {
                COLiter i = col_iterator(lg->seqs);
-               *id = *(lng *) BUNtail(i, p);
+               *id = *(lng *) BUNtail(i, p + lg->seqs->first);
 
                return 1;
        }
@@ -1728,6 +1728,7 @@
 
        assert(p != BUN_NONE);
 
+       p += lg->catalog->first;
        /* if this is a not logger commited snapshot bat, make it transient */
        if (p >= lg->catalog->batInserted &&
            BUNfnd(lg->snapshots, &bid) != BUN_NONE) {
@@ -1760,7 +1761,7 @@
 
        if (p != BUN_NONE) {
                COLiter i = col_iterator(r_catalog);
-               res = *(log_bid *) BUNtail(i, p);
+               res = *(log_bid *) BUNtail(i, p + r_catalog->first);
        }
        return res;
 }
diff --git a/gdk/gdk_search.c b/gdk/gdk_search.c
--- a/gdk/gdk_search.c
+++ b/gdk/gdk_search.c
@@ -489,17 +489,17 @@
        if (which < 0) {
                end = lo;
                if (lo >= hi || atom_GE(BUNhead(bi, cur), v, b->type)) {
-                       return end;
+                       return end - COLfirst(b);
                }
        } else if (which > 0) {
                end = hi;
                if (lo >= hi || atom_LE(BUNhead(bi, cur), v, b->type) <= 0) {
-                       return end;
+                       return end - COLfirst(b);
                }
        } else {
                end = 0;        /* not used in this case */
                if (lo >= hi)
-                       return cur;
+                       return cur - COLfirst(b);
        }
 
        /* the business part */
@@ -642,7 +642,7 @@
                if (cmp)        /* not found */
                        cur = BUN_NONE;
        }
-       return cur;
+       return cur - COLfirst(b);
 }
 
 oid
diff --git a/gdk/gdk_search.h b/gdk/gdk_search.h
--- a/gdk/gdk_search.h
+++ b/gdk/gdk_search.h
@@ -57,72 +57,72 @@
 #define hash_dbl(H,V)         hash_lng(H,V)
 
 
-#define HASHfnd_str(x,y,z)                                             \
+#define HASHfnd_str(x,bi,z)                                            \
        do {                                                            \
                oid _i;                                                 \
                (x) = BUN_NONE;                                         \
-               if ((y).b->hash ||                                      \
-                   COLhash((y).b, 0) ||                                \
+               if ((bi).b->hash ||                                     \
+                   COLhash((bi).b, 0) ||                               \
                    GDKfatal("HASHfnd_str: hash build failed on %s.\n", \
-                            COLgetId((y).b)))                          \
-                       HASHloop_str((y), (y).b->hash, _i, (z)) {       \
-                               (x) = _i;                               \
+                            COLgetId((bi).b)))                         \
+                       HASHloop_str((bi), (bi).b->hash, _i, (z)) {     \
+                               (x) = _i - (bi).b->first;               \
                                break;                                  \
                        }                                               \
        } while (0)
-#define HASHfnd_str_hv(x,y,z)                                          \
+#define HASHfnd_str_hv(x,bi,z)                                         \
        do {                                                            \
                oid _i;                                                 \
                (x) = BUN_NONE;                                         \
-               if ((y).b->hash ||                                      \
-                   COLhash((y).b, 0) ||                                \
+               if ((bi).b->hash ||                                     \
+                   COLhash((bi).b, 0) ||                               \
                    GDKfatal("HASHfnd_str_hv: hash build failed on %s.\n", \
-                            COLgetId((y).b)))                          \
-                       HASHloop_str_hv((y), (y).b->hash, _i, (z)) {    \
-                               (x) = _i;                               \
+                            COLgetId((bi).b)))                         \
+                       HASHloop_str_hv((bi), (bi).b->hash, _i, (z)) {  \
+                               (x) = _i - (bi).b->first;               \
                                break;                                  \
                        }                                               \
        } while (0)
-#define HASHfnd(x,y,z)                                                 \
+#define HASHfnd(x,bi,z)                                                        
\
        do {                                                            \
                oid _i;                                                 \
                (x) = BUN_NONE;                                         \
-               if ((y).b->hash ||                                      \
-                   COLhash((y).b, 0) ||                                \
+               if ((bi).b->hash ||                                     \
+                   COLhash((bi).b, 0) ||                               \
                    GDKfatal("HASHfnd: hash build failed on %s.\n",     \
-                            COLgetId((y).b)))                          \
-                       HASHloop((y), (y).b->hash, _i, (z)) {           \
-                               (x) = _i;                               \
+                            COLgetId((bi).b)))                         \
+                       HASHloop((bi), (bi).b->hash, _i, (z)) {         \
+                               (x) = _i - (bi).b->first;               \
                                break;                                  \
                        }                                               \
        } while (0)
 
-#define HASHfnd_TYPE(x,y,z,TYPE)                                       \
+#define HASHfnd_TYPE(x,bi,z,TYPE)                                      \
        do {                                                            \
                oid _i;                                                 \
                (x) = BUN_NONE;                                         \
-               if ((y).b->hash ||                                      \
-                   COLhash((y).b, 0) ||                                \
+               if ((bi).b->hash ||                                     \
+                   COLhash((bi).b, 0) ||                               \
                    GDKfatal("HASHfnd_" #TYPE ": hash build failed on %s.\n", \
-                            COLgetId((y).b)))                          \
-                       HASHloop_TYPE((y), (y).b->hash, _i, (z), TYPE) { \
-                               (x) = _i;                               \
+                            COLgetId((bi).b)))                         \
+                       HASHloop_TYPE((bi), (bi).b->hash, _i, (z), TYPE) { \
+                               (x) = _i - (bi).b->first;               \
                                break;                                  \
                        }                                               \
        } while (0)
 
-#define HASHfnd_bte(x,y,z)     HASHfnd_TYPE(x,y,z,bte)
-#define HASHfnd_sht(x,y,z)     HASHfnd_TYPE(x,y,z,sht)
-#define HASHfnd_int(x,y,z)     HASHfnd_TYPE(x,y,z,int)
-#define HASHfnd_lng(x,y,z)     HASHfnd_TYPE(x,y,z,lng)
-#define HASHfnd_oid(x,y,z)     HASHfnd_TYPE(x,y,z,oid)
-#define HASHfnd_wrd(x,y,z)     HASHfnd_TYPE(x,y,z,wrd)
-#define HASHfnd_ptr(x,y,z)     HASHfnd_TYPE(x,y,z,ptr)
-#define HASHfnd_bit(x,y,z)     HASHfnd_TYPE(x,y,z,bte)
-#define HASHfnd_flt(x,y,z)     HASHfnd_TYPE(x,y,z,flt)
-#define HASHfnd_dbl(x,y,z)     HASHfnd_TYPE(x,y,z,dbl)
+#define HASHfnd_bte(x,bi,z)    HASHfnd_TYPE(x,bi,z,bte)
+#define HASHfnd_sht(x,bi,z)    HASHfnd_TYPE(x,bi,z,sht)
+#define HASHfnd_int(x,bi,z)    HASHfnd_TYPE(x,bi,z,int)
+#define HASHfnd_lng(x,bi,z)    HASHfnd_TYPE(x,bi,z,lng)
+#define HASHfnd_oid(x,bi,z)    HASHfnd_TYPE(x,bi,z,oid)
+#define HASHfnd_wrd(x,bi,z)    HASHfnd_TYPE(x,bi,z,wrd)
+#define HASHfnd_ptr(x,bi,z)    HASHfnd_TYPE(x,bi,z,ptr)
+#define HASHfnd_bit(x,bi,z)    HASHfnd_TYPE(x,bi,z,bte)
+#define HASHfnd_flt(x,bi,z)    HASHfnd_TYPE(x,bi,z,flt)
+#define HASHfnd_dbl(x,bi,z)    HASHfnd_TYPE(x,bi,z,dbl)
 
-#define HASHfnd_any(x,y,z)     HASHfnd(x,y,z)
+#define HASHfnd_any(x,bi,z)    HASHfnd(x,bi,z)
 
 /*
  * @-
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -131,7 +131,7 @@
 
        if (b != BUN_NONE) {
                COLiter GDKenvi = col_iterator(GDKenvval);
-               return BUNhead(GDKenvi, b);
+               return BUNhead(GDKenvi, b + GDKenvval->first);
        }
        return NULL;
 }
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to