Changeset: 70e6d195426d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/70e6d195426d
Modified Files:
sql/backends/monet5/sql.c
Branch: Oct2020
Log Message:
Backporting defensive lines from Jul2021 into Oct2020
diffs (52 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
@@ -1703,11 +1703,10 @@ mvc_append_wrap(Client cntxt, MalBlkPtr
if (i && store_funcs.append_idx(m->session->tr, i, ins, tpe) !=
LOG_OK)
err = 1;
}
+ if (b)
+ BBPunfix(b->batCacheid);
if (err)
throw(SQL, "sql.append", SQLSTATE(42S02) "append failed");
- if (b) {
- BBPunfix(b->batCacheid);
- }
return MAL_SUCCEED;
}
@@ -1818,7 +1817,7 @@ mvc_delete_wrap(Client cntxt, MalBlkPtr
const char *sname = *getArgReference_str(stk, pci, 2);
const char *tname = *getArgReference_str(stk, pci, 3);
ptr ins = getArgReference(stk, pci, 4);
- int tpe = getArgType(mb, pci, 4);
+ int tpe = getArgType(mb, pci, 4), log_res = LOG_OK;
BAT *b = NULL;
sql_schema *s;
@@ -1852,10 +1851,11 @@ mvc_delete_wrap(Client cntxt, MalBlkPtr
}
if( b && BATcount(b) > 4096 && !b->batTransient)
BATmsync(b);
- if (store_funcs.delete_tab(m->session->tr, t, b, tpe) != LOG_OK)
- throw(SQL, "sql.delete", SQLSTATE(3F000) "delete failed");
+ log_res = store_funcs.delete_tab(m->session->tr, t, b, tpe);
if (b)
BBPunfix(b->batCacheid);
+ if (log_res != LOG_OK)
+ throw(SQL, "sql.delete", SQLSTATE(3F000) "delete failed");
return MAL_SUCCEED;
}
@@ -2381,8 +2381,10 @@ SQLtid(Client cntxt, MalBlkPtr mb, MalSt
BAT *o;
gdk_return ret = BATsort(&o, NULL, NULL, d, NULL, NULL, false,
false, false);
BBPunfix(d->batCacheid);
- if (ret != GDK_SUCCEED)
+ if (ret != GDK_SUCCEED) {
+ BBPunfix(tids->batCacheid);
throw(MAL, "sql.tids", SQLSTATE(HY013) MAL_MALLOC_FAIL);
+ }
/* TODO handle dense o, ie full range out of the dense tids,
could be at beginning or end (reduce range of tids)
* else materialize */
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list