Changeset: 44835a8e3ebe for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=44835a8e3ebe
Modified Files:
sql/backends/monet5/sql.c
Branch: default
Log Message:
Two more calls to BATsemijoin replace by BATsubsemijoin.
diffs (63 lines):
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -2278,20 +2278,23 @@ DELTAsub(bat *result, const bat *col, co
}
if (BATcount(u)) { /* check selected updated values
against candidates */
BAT *c_ids = BATdescriptor(*cid);
+ gdk_return rc;
if (!c_ids){
BBPunfix(c->batCacheid);
BBPunfix(u->batCacheid);
throw(MAL, "sql.delta", RUNTIME_OBJECT_MISSING);
}
- cminu = BATsemijoin(BATmirror(u), BATmirror(c_ids));
+ rc = BATsubsemijoin(&cminu, NULL, u, c_ids, NULL, NULL,
0, BUN_NONE);
BBPunfix(c_ids->batCacheid);
- BBPunfix(u->batCacheid);
- if (!cminu) {
- BBPunfix(c->batCacheid);
+ if (rc != GDK_SUCCEED) {
+ BBPunfix(u->batCacheid);
throw(MAL, "sql.delta", RUNTIME_OBJECT_MISSING);
}
- u = BATmirror(cminu);
+ c_ids = BATproject(cminu, u);
+ BBPunfix(cminu->batCacheid);
+ BBPunfix(u->batCacheid);
+ u = c_ids;
}
BATappend(res, u, TRUE);
BBPunfix(u->batCacheid);
@@ -2416,11 +2419,26 @@ DELTAproject(bat *result, const bat *sub
}
if (BATcount(u_val)) {
- BAT *o = BATsemijoin(u_id, s);
- BAT *nu_id = BATproject(o, u_id);
- BAT *nu_val = BATproject(o, u_val);
-
+ BAT *o, *nu_id, *nu_val;
+ if (BATsubsemijoin(&o, NULL, u_id, s, NULL, NULL, 0, BUN_NONE)
!= GDK_SUCCEED) {
+ BBPunfix(u_id->batCacheid);
+ BBPunfix(res->batCacheid);
+ BBPunfix(s->batCacheid);
+ throw(MAL, "sql.delta", RUNTIME_OBJECT_MISSING);
+ }
+ nu_id = BATproject(o, u_id);
+ nu_val = BATproject(o, u_val);
BBPunfix(o->batCacheid);
+ if (nu_id == NULL || nu_val == NULL) {
+ BBPunfix(u_id->batCacheid);
+ BBPunfix(res->batCacheid);
+ BBPunfix(s->batCacheid);
+ if (nu_id)
+ BBPunfix(nu_id->batCacheid);
+ if (nu_val)
+ BBPunfix(nu_val->batCacheid);
+ throw(MAL, "sql.delta", RUNTIME_OBJECT_MISSING);
+ }
res = setwritable(res);
BATreplace(res, nu_id, nu_val, 0);
BBPunfix(nu_id->batCacheid);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list