Changeset: a6f4d2ee4a53 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a6f4d2ee4a53
Modified Files:
sql/backends/monet5/sql_upgrades.c
sql/backends/monet5/sql_user.c
sql/common/sql_list.c
sql/include/sql_catalog.h
sql/server/rel_distribute.c
sql/server/rel_optimizer.c
sql/server/rel_propagate.c
sql/server/sql_mvc.c
sql/server/sql_partition.c
sql/server/sql_privileges.c
sql/storage/bat/bat_storage.c
sql/storage/sql_catalog.c
sql/storage/store.c
sql/storage/store_dependency.c
Branch: nospare
Log Message:
adapted interface of find_sql_table* functions, all will need the transaction.
diffs (truncated from 1826 to 300 lines):
diff --git a/sql/backends/monet5/sql_upgrades.c
b/sql/backends/monet5/sql_upgrades.c
--- a/sql/backends/monet5/sql_upgrades.c
+++ b/sql/backends/monet5/sql_upgrades.c
@@ -2852,7 +2852,7 @@ SQLupgrades(Client c, mvc *m)
m->errstr[0] = '\0';
sqlstore *store = m->session->tr->store;
if (f && sql_privilege(m, ROLE_PUBLIC, f->func->base.id, PRIV_EXECUTE)
!= PRIV_EXECUTE) {
- sql_table *privs = find_sql_table(s, "privileges");
+ sql_table *privs = find_sql_table(m->session->tr, s,
"privileges");
int pub = ROLE_PUBLIC, p = PRIV_EXECUTE, zero = 0;
store->table_api.table_insert(m->session->tr, privs,
&f->func->base.id, &pub, &p, &zero, &zero);
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
@@ -45,7 +45,7 @@ monet5_drop_user(ptr _mvc, str user)
return FALSE;
}
sys = find_sql_schema(m->session->tr, "sys");
- users = find_sql_table(sys, "db_user_info");
+ users = find_sql_table(m->session->tr, sys, "db_user_info");
users_name = find_sql_column(users, "name");
sqlstore *store = m->session->tr->store;
@@ -176,8 +176,8 @@ monet5_create_user(ptr _mvc, str user, s
return ret;
user_id = store_next_oid(m->session->tr->store);
- db_user_info = find_sql_table(s, "db_user_info");
- auths = find_sql_table(s, "auths");
+ db_user_info = find_sql_table(m->session->tr, s, "db_user_info");
+ auths = find_sql_table(m->session->tr, s, "auths");
store->table_api.table_insert(m->session->tr, db_user_info, user,
fullname, &schema_id, schema_path);
store->table_api.table_insert(m->session->tr, auths, &user_id, user,
&grantorid);
return NULL;
@@ -316,7 +316,7 @@ monet5_schema_has_user(ptr _mvc, sql_sch
mvc *m = (mvc *) _mvc;
oid rid;
sql_schema *sys = find_sql_schema(m->session->tr, "sys");
- sql_table *users = find_sql_table(sys, "db_user_info");
+ sql_table *users = find_sql_table(m->session->tr, sys, "db_user_info");
sql_column *users_schema = find_sql_column(users, "default_schema");
sqlid schema_id = s->base.id;
@@ -407,7 +407,7 @@ monet5_alter_user(ptr _mvc, str user, st
sqlstore *store = m->session->tr->store;
if (schema_id) {
sql_schema *sys = find_sql_schema(m->session->tr, "sys");
- sql_table *info = find_sql_table(sys, "db_user_info");
+ sql_table *info = find_sql_table(m->session->tr, sys,
"db_user_info");
sql_column *users_name = find_sql_column(info, "name");
sql_column *users_schema = find_sql_column(info,
"default_schema");
@@ -420,7 +420,7 @@ monet5_alter_user(ptr _mvc, str user, st
if (schema_path) {
sql_schema *sys = find_sql_schema(m->session->tr, "sys");
- sql_table *info = find_sql_table(sys, "db_user_info");
+ sql_table *info = find_sql_table(m->session->tr, sys,
"db_user_info");
sql_column *users_name = find_sql_column(info, "name");
sql_column *sp = find_sql_column(info, "schema_path");
@@ -447,9 +447,9 @@ monet5_rename_user(ptr _mvc, str olduser
str err;
oid rid;
sql_schema *sys = find_sql_schema(m->session->tr, "sys");
- sql_table *info = find_sql_table(sys, "db_user_info");
+ sql_table *info = find_sql_table(m->session->tr, sys, "db_user_info");
sql_column *users_name = find_sql_column(info, "name");
- sql_table *auths = find_sql_table(sys, "auths");
+ sql_table *auths = find_sql_table(m->session->tr, sys, "auths");
sql_column *auths_name = find_sql_column(auths, "name");
if ((err = AUTHchangeUsername(c, olduser, newuser)) !=MAL_SUCCEED) {
@@ -485,10 +485,10 @@ monet5_schema_user_dependencies(ptr _tra
sql_trans *tr = (sql_trans *) _trans;
sql_schema *s = find_sql_schema(tr, "sys");
- sql_table *auths = find_sql_table(s, "auths");
+ sql_table *auths = find_sql_table(tr, s, "auths");
sql_column *auth_name = find_sql_column(auths, "name");
- sql_table *users = find_sql_table(s, "db_user_info");
+ sql_table *users = find_sql_table(tr, s, "db_user_info");
sql_column *users_name = find_sql_column(users, "name");
sql_column *users_sch = find_sql_column(users, "default_schema");
@@ -536,7 +536,7 @@ monet5_user_get_def_schema(mvc *m, int u
str schema = NULL;
sys = find_sql_schema(m->session->tr, "sys");
- auths = find_sql_table(sys, "auths");
+ auths = find_sql_table(m->session->tr, sys, "auths");
auths_id = find_sql_column(auths, "id");
auths_name = find_sql_column(auths, "name");
sqlstore *store = m->session->tr->store;
@@ -545,7 +545,7 @@ monet5_user_get_def_schema(mvc *m, int u
return NULL;
username = store->table_api.column_find_value(m->session->tr,
auths_name, rid);
- user_info = find_sql_table(sys, "db_user_info");
+ user_info = find_sql_table(m->session->tr, sys, "db_user_info");
users_name = find_sql_column(user_info, "name");
users_schema = find_sql_column(user_info, "default_schema");
rid = store->table_api.column_find_row(m->session->tr, users_name,
username, NULL);
@@ -557,7 +557,7 @@ monet5_user_get_def_schema(mvc *m, int u
schema_id = *(sqlid *) p;
_DELETE(p);
- schemas = find_sql_table(sys, "schemas");
+ schemas = find_sql_table(m->session->tr, sys, "schemas");
schemas_name = find_sql_column(schemas, "name");
schemas_id = find_sql_column(schemas, "id");
@@ -598,7 +598,7 @@ monet5_user_set_def_schema(mvc *m, oid u
}
sys = find_sql_schema(m->session->tr, "sys");
- user_info = find_sql_table(sys, "db_user_info");
+ user_info = find_sql_table(m->session->tr, sys, "db_user_info");
users_name = find_sql_column(user_info, "name");
users_schema = find_sql_column(user_info, "default_schema");
users_schema_path = find_sql_column(user_info, "schema_path");
@@ -620,10 +620,10 @@ monet5_user_set_def_schema(mvc *m, oid u
assert(p);
schema_path = (str) p;
- schemas = find_sql_table(sys, "schemas");
+ schemas = find_sql_table(m->session->tr, sys, "schemas");
schemas_name = find_sql_column(schemas, "name");
schemas_id = find_sql_column(schemas, "id");
- auths = find_sql_table(sys, "auths");
+ auths = find_sql_table(m->session->tr, sys, "auths");
auths_name = find_sql_column(auths, "name");
rid = store->table_api.column_find_row(m->session->tr, schemas_id,
&schema_id, NULL);
diff --git a/sql/common/sql_list.c b/sql/common/sql_list.c
--- a/sql/common/sql_list.c
+++ b/sql/common/sql_list.c
@@ -776,6 +776,8 @@ list_update_data(list *l, node *n, void
n->data = data;
int nkey = l->ht->key(data);
hash_add(l->ht, nkey, data);
+ } else {
+ n->data = data;
}
MT_lock_unset(&l->ht_lock);
}
diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h
--- a/sql/include/sql_catalog.h
+++ b/sql/include/sql_catalog.h
@@ -747,8 +747,8 @@ extern sql_column *find_sql_column(sql_t
extern sql_part *find_sql_part_id(sql_table *t, sqlid id);
-extern sql_table *find_sql_table(sql_schema *s, const char *tname);
-extern sql_table *find_sql_table_id(sql_schema *s, sqlid id);
+extern sql_table *find_sql_table(sql_trans *tr, sql_schema *s, const char
*tname);
+extern sql_table *find_sql_table_id(sql_trans *tr, sql_schema *s, sqlid id);
extern node *find_sql_table_node(sql_schema *s, sqlid id);
extern sql_table *sql_trans_find_table(sql_trans *tr, sqlid id);
diff --git a/sql/server/rel_distribute.c b/sql/server/rel_distribute.c
--- a/sql/server/rel_distribute.c
+++ b/sql/server/rel_distribute.c
@@ -81,7 +81,7 @@ static sql_rel *
rewrite_replica( mvc *sql, sql_rel *rel, sql_table *t, sql_part *pd, int
remote_prop)
{
node *n, *m;
- sql_table *p = find_sql_table_id(t->s, pd->base.id);
+ sql_table *p = find_sql_table_id(sql->session->tr, t->s, pd->base.id);
sql_rel *r = rel_basetable(sql, p, t->base.name);
for (n = rel->exps->h, m = r->exps->h; n && m; n = n->next, m =
m->next) {
@@ -197,7 +197,7 @@ replica(mvc *sql, sql_rel *rel, char *ur
/* replace by the replica which matches the uri
*/
for (n = t->members->h; n; n = n->next) {
sql_part *p = n->data;
- sql_table *pt = find_sql_table_id(t->s,
p->base.id);
+ sql_table *pt =
find_sql_table_id(sql->session->tr, t->s, p->base.id);
if (isRemote(pt) && strcmp(uri,
pt->query) == 0) {
rel = rewrite_replica(sql, rel,
t, p, 0);
@@ -210,7 +210,7 @@ replica(mvc *sql, sql_rel *rel, char *ur
sql_part *p;
for (n = t->members->h; n; n = n->next)
{
sql_part *p = n->data;
- sql_table *pt =
find_sql_table_id(t->s, p->base.id);
+ sql_table *pt =
find_sql_table_id(sql->session->tr, t->s, p->base.id);
if (!isRemote(pt)) {
fnd = 1;
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -8888,7 +8888,7 @@ rel_merge_table_rewrite(visitor *v, sql_
for (node *nt = t->members->h; nt; nt =
nt->next) {
sql_part *pd = nt->data;
- sql_table *pt =
find_sql_table_id(t->s, pd->base.id);
+ sql_table *pt =
find_sql_table_id(v->sql->session->tr, t->s, pd->base.id);
sql_rel *prel =
rel_basetable(v->sql, pt, tname), *bt = NULL;
int skip = 0;
list *exps = NULL;
diff --git a/sql/server/rel_propagate.c b/sql/server/rel_propagate.c
--- a/sql/server/rel_propagate.c
+++ b/sql/server/rel_propagate.c
@@ -594,7 +594,7 @@ rel_generate_subdeletes(mvc *sql, sql_re
for (node *n = t->members->h; n; n = n->next) {
sql_part *pt = (sql_part *) n->data;
- sql_table *sub = find_sql_table_id(t->s, pt->base.id);
+ sql_table *sub = find_sql_table_id(sql->session->tr, t->s,
pt->base.id);
sql_rel *s1, *dup = NULL;
if (!update_allowed(sql, sub, sub->base.name,
is_delete(rel->op) ? "DELETE": "TRUNCATE",
@@ -628,7 +628,7 @@ rel_generate_subupdates(mvc *sql, sql_re
for (node *n = t->members->h; n; n = n->next) {
sql_part *pt = (sql_part *) n->data;
- sql_table *sub = find_sql_table_id(t->s, pt->base.id);
+ sql_table *sub = find_sql_table_id(sql->session->tr, t->s,
pt->base.id);
sql_rel *s1, *dup = NULL;
list *uexps = exps_copy(sql, rel->exps), *checked_updates =
new_exp_list(sql->sa);
@@ -696,7 +696,7 @@ rel_generate_subinserts(sql_query *query
for (node *n = t->members->h; n; n = n->next) {
sql_part *pt = (sql_part *) n->data;
- sql_table *sub = find_sql_table_id(t->s, pt->base.id);
+ sql_table *sub = find_sql_table_id(sql->session->tr, t->s,
pt->base.id);
sql_rel *s1 = NULL, *dup = NULL;
sql_exp *le = NULL;
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
@@ -295,8 +295,8 @@ mvc_init(sql_allocator *pa, int debug, s
int pub = ROLE_PUBLIC;
int p = PRIV_SELECT;
int zero = 0;
- sql_table *privs = find_sql_table(s, "privileges");
- sql_table *deps = find_sql_table(s, "dependencies");
+ sql_table *privs = find_sql_table(m->session->tr, s,
"privileges");
+ sql_table *deps = find_sql_table(m->session->tr, s,
"dependencies");
store->table_api.table_insert(m->session->tr, privs,
&t->base.id, &pub, &p, &zero, &zero);
assert(tview[9].name == NULL);
tview[9].oldid = tid;
@@ -329,8 +329,8 @@ mvc_init(sql_allocator *pa, int debug, s
int pub = ROLE_PUBLIC;
int p = PRIV_SELECT;
int zero = 0;
- sql_table *privs = find_sql_table(s, "privileges");
- sql_table *deps = find_sql_table(s, "dependencies");
+ sql_table *privs = find_sql_table(m->session->tr, s,
"privileges");
+ sql_table *deps = find_sql_table(m->session->tr, s,
"dependencies");
store->table_api.table_insert(m->session->tr, privs,
&t->base.id, &pub, &p, &zero, &zero);
assert(cview[10].name == NULL);
cview[10].oldid = cid;
@@ -923,7 +923,7 @@ mvc_bind_schema(mvc *m, const char *snam
sql_table *
mvc_bind_table(mvc *m, sql_schema *s, const char *tname)
{
- sql_table *t = find_sql_table(s, tname);
+ sql_table *t = find_sql_table(m->session->tr, s, tname);
(void) m;
if (!t)
diff --git a/sql/server/sql_partition.c b/sql/server/sql_partition.c
--- a/sql/server/sql_partition.c
+++ b/sql/server/sql_partition.c
@@ -326,7 +326,7 @@ initialize_sql_parts(mvc *sql, sql_table
for (node *n = mt->members->h; n; n = n->next) {
sql_part *next = (sql_part*) n->data, *p =
SA_ZNEW(tr->sa, sql_part);
- sql_table *pt = find_sql_table_id(mt->s, next->base.id);
+ sql_table *pt = find_sql_table_id(tr, mt->s,
next->base.id);
base_init(tr->sa, &p->base, pt->base.id, TR_NEW,
pt->base.name);
p->t = mt;
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
@@ -52,7 +52,7 @@ static void
sql_insert_priv(mvc *sql, sqlid auth_id, sqlid obj_id, int privilege, sqlid
grantor, int grantable)
{
sql_schema *ss = mvc_bind_schema(sql, "sys");
- sql_table *pt = find_sql_table(ss, "privileges");
+ sql_table *pt = find_sql_table(sql->session->tr, ss, "privileges");
sqlstore *store = sql->session->tr->store;
store->table_api.table_insert(sql->session->tr, pt, &obj_id, &auth_id,
&privilege, &grantor, &grantable);
@@ -219,7 +219,7 @@ static void
sql_delete_priv(mvc *sql, sqlid auth_id, sqlid obj_id, int privilege, sqlid
grantor, int grantable)
{
sql_schema *ss = mvc_bind_schema(sql, "sys");
- sql_table *privs = find_sql_table(ss, "privileges");
+ sql_table *privs = find_sql_table(sql->session->tr, ss, "privileges");
sql_column *priv_obj = find_sql_column(privs, "obj_id");
sql_column *priv_auth = find_sql_column(privs, "auth_id");
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list