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