Changeset: 61ccf71c082f for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=61ccf71c082f
Modified Files:
        sql/backends/monet5/sql.c
Branch: Jul2015
Log Message:

BATsemijoin looks at head values, but we need to semijoin on tail values.
The code is now essentially the same as in the default branch (except
for the second argument to BATsubsemijoin which can be NULL over
there).
Part one of two of the fix for bug 3848.


diffs (35 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
@@ -2408,11 +2408,27 @@ 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, &nu_id, 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);
+               }
+               BBPunfix(nu_id->batCacheid);
+               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

Reply via email to