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]