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 checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list