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

Reply via email to