Changeset: aeb32eaf8d16 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/aeb32eaf8d16
Modified Files:
        sql/backends/monet5/sql_cat.c
        sql/backends/monet5/sql_user.c
        sql/backends/monet5/vaults/fits/fits.c
        sql/server/sql_mvc.c
        sql/server/sql_privileges.c
        sql/storage/store.c
        sql/storage/store_dependency.c
Branch: Sep2022
Log Message:

Merge with Jan2022 branch.


diffs (172 lines):

diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c
--- a/sql/backends/monet5/sql_cat.c
+++ b/sql/backends/monet5/sql_cat.c
@@ -1180,6 +1180,8 @@ alter_table(Client cntxt, mvc *sql, char
                        if (c->null == 0) {
                                const void *nilptr = 
ATOMnilptr(c->type.type->localtype);
                                rids *nils = 
store->table_api.rids_select(sql->session->tr, nc, nilptr, NULL, NULL);
+                               if (!nils)
+                                       throw(SQL,"sql.alter_table", 
SQLSTATE(HY013) MAL_MALLOC_FAIL);
                                int has_nils = 
!is_oid_nil(store->table_api.rids_next(nils));
 
                                store->table_api.rids_destroy(nils);
diff --git a/sql/backends/monet5/sql_user.c b/sql/backends/monet5/sql_user.c
--- a/sql/backends/monet5/sql_user.c
+++ b/sql/backends/monet5/sql_user.c
@@ -769,7 +769,8 @@ monet5_schema_user_dependencies(ptr _tra
        /* select all authorization ids */
        A = store->table_api.rids_select(tr, auth_name, NULL, NULL);
        /* join all authorization with the selected users */
-       A = store->table_api.rids_join(tr, A, auth_name, U, users_name);
+       if (A && U)
+               A = store->table_api.rids_join(tr, A, auth_name, U, users_name);
        store->table_api.rids_destroy(U);
        return A;
 }
diff --git a/sql/backends/monet5/vaults/fits/fits.c 
b/sql/backends/monet5/vaults/fits/fits.c
--- a/sql/backends/monet5/vaults/fits/fits.c
+++ b/sql/backends/monet5/vaults/fits/fits.c
@@ -241,6 +241,8 @@ str FITSexportTable(Client cntxt, MalBlk
        col = mvc_bind_column(m, column, "table_id");
 
        rs = store->table_api.rids_select(m->session->tr, col, (void *) fid, 
(void *) fid, NULL);
+       if (!rs)
+               throw(MAL, "fits.exporttable", SQLSTATE(HY013) MAL_MALLOC_FAIL);
        GDKfree(fid);
 
        while ((rid = store->table_api.rids_next(rs)), !is_oid_nil(rid))
diff --git a/sql/server/sql_mvc.c b/sql/server/sql_mvc.c
--- a/sql/server/sql_mvc.c
+++ b/sql/server/sql_mvc.c
@@ -118,11 +118,12 @@ mvc_fix_depend(mvc *m, sql_column *depid
        for (int i = 0; i < n; i++) {
                rs = store->table_api.rids_select(m->session->tr, depids,
                                             &v[i].oldid, &v[i].oldid, NULL);
-               while ((rid = store->table_api.rids_next(rs)), 
!is_oid_nil(rid)) {
-                       store->table_api.column_update_value(m->session->tr, 
depids,
-                                                       rid, &v[i].newid);
+               if (rs) {
+                       while ((rid = store->table_api.rids_next(rs)), 
!is_oid_nil(rid)) {
+                               
store->table_api.column_update_value(m->session->tr, depids, rid, &v[i].newid);
+                       }
+                       store->table_api.rids_destroy(rs);
                }
-               store->table_api.rids_destroy(rs);
        }
 }
 
diff --git a/sql/server/sql_privileges.c b/sql/server/sql_privileges.c
--- a/sql/server/sql_privileges.c
+++ b/sql/server/sql_privileges.c
@@ -273,7 +273,8 @@ sql_delete_priv(mvc *sql, sqlid auth_id,
 
        /* select privileges of this auth_id, privilege, obj_id */
        A = store->table_api.rids_select(tr, priv_auth, &auth_id, &auth_id, 
priv_priv, &privilege, &privilege, priv_obj, &obj_id, &obj_id, NULL );
-
+       if (!A)
+               throw(SQL, "sql.delete_prive", SQLSTATE(HY013) MAL_MALLOC_FAIL);
        /* remove them */
        for(rid = store->table_api.rids_next(A); !is_oid_nil(rid) && log_res == 
LOG_OK; rid = store->table_api.rids_next(A))
                log_res = store->table_api.table_delete(tr, privs, rid);
@@ -442,6 +443,8 @@ sql_drop_role(mvc *m, str auth)
 
        /* select user roles of this role_id */
        A = store->table_api.rids_select(tr, find_sql_column(user_roles, 
"role_id"), &role_id, &role_id, NULL);
+       if (!A)
+               throw(SQL, "sql.drop_role", SQLSTATE(HY013) MAL_MALLOC_FAIL);
        /* remove them */
        for(rid = store->table_api.rids_next(A); !is_oid_nil(rid) && log_res == 
LOG_OK; rid = store->table_api.rids_next(A))
                log_res = store->table_api.table_delete(tr, user_roles, rid);
@@ -863,6 +866,8 @@ sql_drop_granted_users(mvc *sql, sqlid u
 
                /* select privileges of this user_id */
                A = store->table_api.rids_select(tr, find_sql_column(privs, 
"auth_id"), &user_id, &user_id, NULL);
+               if (!A)
+                       throw(SQL, "sql.drop_user", SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
                /* remove them */
                for(rid = store->table_api.rids_next(A); !is_oid_nil(rid) && 
log_res == LOG_OK; rid = store->table_api.rids_next(A))
                        log_res = store->table_api.table_delete(tr, privs, rid);
@@ -872,6 +877,8 @@ sql_drop_granted_users(mvc *sql, sqlid u
 
                /* select privileges granted by this user_id */
                A = store->table_api.rids_select(tr, find_sql_column(privs, 
"grantor"), &user_id, &user_id, NULL);
+               if (!A)
+                       throw(SQL, "sql.drop_user", SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
                /* remove them */
                for(rid = store->table_api.rids_next(A); !is_oid_nil(rid) && 
log_res == LOG_OK; rid = store->table_api.rids_next(A))
                        log_res = store->table_api.table_delete(tr, privs, rid);
@@ -888,6 +895,8 @@ sql_drop_granted_users(mvc *sql, sqlid u
 
                /* select user roles of this user_id */
                A = store->table_api.rids_select(tr, 
find_sql_column(user_roles, "login_id"), &user_id, &user_id, NULL);
+               if (!A)
+                       throw(SQL, "sql.drop_user", SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
                /* remove them */
                for(rid = store->table_api.rids_next(A); !is_oid_nil(rid) && 
log_res == LOG_OK; rid = store->table_api.rids_next(A))
                        log_res = store->table_api.table_delete(tr, user_roles, 
rid);
@@ -899,6 +908,8 @@ sql_drop_granted_users(mvc *sql, sqlid u
 
                /* select users created by this user_id */
                A = store->table_api.rids_select(tr, find_sql_column(auths, 
"grantor"), &user_id, &user_id, NULL);
+               if (!A)
+                       throw(SQL, "sql.drop_user", SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
                /* remove them and continue the deletion */
                for(rid = store->table_api.rids_next(A); !is_oid_nil(rid) && 
log_res == LOG_OK && msg; rid = store->table_api.rids_next(A)) {
                        sqlid nuid = store->table_api.column_find_sqlid(tr, 
find_sql_column(auths, "id"), rid);
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -607,6 +607,8 @@ load_value_partition(sql_trans *tr, sql_
        if (rs == NULL)
                return -1;
 
+       if (!rs)
+               return -1;
        vals = SA_LIST(tr->sa, (fdestroy) &part_value_destroy);
        if (!vals) {
                store->table_api.rids_destroy(rs);
@@ -1099,8 +1101,10 @@ load_schema(sql_trans *tr, res_table *rt
        type_schema = find_sql_column(types, "schema_id");
        type_id = find_sql_column(types, "id");
        rs = store->table_api.rids_select(tr, type_schema, &s->base.id, 
&s->base.id, type_id, &tmpid, NULL, NULL);
-       if (rs == NULL)
+       if (!rs) {
+               schema_destroy(store, s);
                return NULL;
+       }
        for (oid rid = store->table_api.rids_next(rs); !is_oid_nil(rid); rid = 
store->table_api.rids_next(rs)) {
                sql_type *t = load_type(tr, s, rid);
                if (os_add(s->types, tr, t->base.name, &t->base)) {
@@ -1148,6 +1152,11 @@ load_schema(sql_trans *tr, res_table *rt
                sql_column *arg_func_id = find_sql_column(args, "func_id");
                sql_column *arg_number = find_sql_column(args, "number");
                subrids *nrs = store->table_api.subrids_create(tr, rs, func_id, 
arg_func_id, arg_number);
+               if (!nrs) {
+                       store->table_api.rids_destroy(rs);
+                       schema_destroy(store, s);
+                       return NULL;
+               }
                sqlid fid;
                sql_func *f;
 
@@ -1166,6 +1175,11 @@ load_schema(sql_trans *tr, res_table *rt
                }
                /* Handle all procedures without arguments (no args) */
                rs = store->table_api.rids_diff(tr, rs, func_id, nrs, 
arg_func_id);
+               if (!rs) {
+                       store->table_api.subrids_destroy(nrs);
+                       schema_destroy(store, s);
+                       return NULL;
+               }
                for (oid rid = store->table_api.rids_next(rs); 
!is_oid_nil(rid); rid = store->table_api.rids_next(rs)) {
                        fid = store->table_api.column_find_sqlid(tr, func_id, 
rid);
                        f = load_func(tr, s, fid, NULL);
@@ -4708,6 +4722,8 @@ sys_drop_table(sql_trans *tr, sql_table 
                sql_column *pcols = find_sql_column(partitions, "table_id");
                assert(pcols);
                rids *rs = store->table_api.rids_select(tr, pcols, &t->base.id, 
&t->base.id, NULL);
+               if (!rs)
+                       return -1;
                oid poid;
                if (rs == NULL)
                        return LOG_ERR;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to