Changeset: 6d197ed751d3 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6d197ed751d3
Modified Files:
sql/storage/bat/bat_table.c
Branch: Jul2015
Log Message:
improved column_find_row
diffs (64 lines):
diff --git a/sql/storage/bat/bat_table.c b/sql/storage/bat/bat_table.c
--- a/sql/storage/bat/bat_table.c
+++ b/sql/storage/bat/bat_table.c
@@ -142,7 +142,7 @@ full_destroy(sql_column *c, BAT *b)
}
static oid
-column_find_oid(sql_trans *tr, sql_column *c, const int *vid)
+column_lookup_row(sql_trans *tr, sql_column *c, const void *value)
{
BAT *b = NULL, *s = NULL;
oid rid = oid_nil;
@@ -158,7 +158,7 @@ column_find_oid(sql_trans *tr, sql_colum
BATiter cni = bat_iterator(b);
BUN p;
- HASHloop(cni, cni.b->T->hash, p, vid) {
+ HASHloop(cni, cni.b->T->hash, p, value) {
oid pos = p;
if (!s || BUNfnd(s, &pos) == BUN_NONE) {
@@ -169,6 +169,7 @@ column_find_oid(sql_trans *tr, sql_colum
}
if (s)
bat_destroy(s);
+ full_destroy(c, b);
return rid;
}
@@ -181,8 +182,8 @@ column_find_row(sql_trans *tr, sql_colum
sql_column *n = NULL;
va_start(va, value);
- if ((n = va_arg(va, sql_column *)) == NULL && c->type.type->localtype
==TYPE_int)
- return column_find_oid(tr, c, value);
+ if ((n = va_arg(va, sql_column *)) == NULL)
+ return column_lookup_row(tr, c, value);
s = delta_cands(tr, c->t);
if (!s)
@@ -190,23 +191,6 @@ column_find_row(sql_trans *tr, sql_colum
b = full_column(tr, c);
if (!b)
return oid_nil;
- if (!n) {
- if (BAThash(b, 0) == GDK_SUCCEED) {
- BATiter cni = bat_iterator(b);
- BUN p;
-
- HASHloop(cni, cni.b->T->hash, p, value) {
- oid pos = p;
-
- if (s && BUNfnd(s, &pos) != BUN_NONE) {
- rid = p;
- break;
- }
- }
- }
- bat_destroy(s);
- return rid;
- }
r = BATsubselect(b, s, value, NULL, 1, 0, 0);
if (!r)
return oid_nil;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list