Changeset: 6f3000412ff8 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6f3000412ff8 Modified Files: sql/backends/monet5/sql.c Branch: Mar2018 Log Message:
Avoid doing unnecessary work. diffs (80 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 @@ -1520,46 +1520,50 @@ DELTAsub(bat *result, const bat *col, co BBPunfix(u_id->batCacheid); throw(MAL, "sql.delta", SQLSTATE(HY002) RUNTIME_OBJECT_MISSING); } - u = BATproject(u_val, u_id); - BBPunfix(u_val->batCacheid); - BBPunfix(u_id->batCacheid); - if (!u) { - BBPunfix(c->batCacheid); - throw(MAL, "sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); - } - if (BATcount(u)) { /* check selected updated values against candidates */ + if (BATcount(u_val)) { + u = BATproject(u_val, u_id); + BBPunfix(u_val->batCacheid); + BBPunfix(u_id->batCacheid); + if (!u) { + BBPunfix(c->batCacheid); + throw(MAL, "sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); + } + + /* 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", SQLSTATE(HY002) RUNTIME_OBJECT_MISSING); } - rc = BATsemijoin(&cminu, NULL, u, c_ids, NULL, NULL, 0, BUN_NONE); + ret = BATsemijoin(&cminu, NULL, u, c_ids, NULL, NULL, 0, BUN_NONE); BBPunfix(c_ids->batCacheid); - if (rc != GDK_SUCCEED) { + if (ret != GDK_SUCCEED) { BBPunfix(c->batCacheid); BBPunfix(u->batCacheid); throw(MAL, "sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); } - } - ret = BATappend(res, u, cminu, TRUE); - BBPunfix(u->batCacheid); - if (cminu) - BBPunfix(cminu->batCacheid); - cminu = NULL; - if (ret != GDK_SUCCEED) { + ret = BATappend(res, u, cminu, TRUE); + BBPunfix(u->batCacheid); + if (cminu) + BBPunfix(cminu->batCacheid); + cminu = NULL; + if (ret != GDK_SUCCEED) { + BBPunfix(res->batCacheid); + throw(MAL, "sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); + } + + ret = BATsort(&u, NULL, NULL, res, NULL, NULL, 0, 0); BBPunfix(res->batCacheid); - throw(MAL, "sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); + if (ret != GDK_SUCCEED) { + throw(MAL, "sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); + } + res = u; + } else { + BBPunfix(u_val->batCacheid); + BBPunfix(u_id->batCacheid); } - - ret = BATsort(&u, NULL, NULL, res, NULL, NULL, 0, 0); - BBPunfix(res->batCacheid); - if (ret != GDK_SUCCEED) { - throw(MAL, "sql.delta", SQLSTATE(HY002) RUNTIME_OBJECT_MISSING); - } - res = u; } if (i) { _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list