Changeset: 928f546e7c6f for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=928f546e7c6f Modified Files: sql/backends/monet5/sql_cat.c sql/server/rel_exp.c sql/server/rel_schema.c sql/server/rel_select.c sql/server/sql_privileges.c Branch: scoping2 Log Message:
The resolved schema name will be always passed to the backend diffs (truncated from 413 to 300 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 @@ -140,12 +140,12 @@ validate_alter_table_add_table(mvc *sql, sql_table **mt, sql_table **pt, int update) { char *msg = MAL_SUCCEED; - sql_schema *ms = cur_schema(sql), *ps = cur_schema(sql); + sql_schema *ms = NULL, *ps = NULL; sql_table *rmt = NULL, *rpt = NULL; - if (msname && !(ms = mvc_bind_schema(sql, msname))) + if (!(ms = mvc_bind_schema(sql, msname))) throw(SQL,call,SQLSTATE(3F000) "ALTER TABLE: no such schema '%s'", msname); - if (psname && !(ps = mvc_bind_schema(sql, psname))) + if (!(ps = mvc_bind_schema(sql, psname))) throw(SQL,call,SQLSTATE(3F000) "ALTER TABLE: no such schema '%s'", psname); if (!mvc_schema_privs(sql, ms)) throw(SQL,call,SQLSTATE(42000) "ALTER TABLE: access denied for %s to schema '%s'", get_string_global_var(sql, "current_user"), ms->base.name); @@ -402,13 +402,13 @@ finish: static char * alter_table_del_table(mvc *sql, char *msname, char *mtname, char *psname, char *ptname, int drop_action) { - sql_schema *ms = cur_schema(sql), *ps = cur_schema(sql); + sql_schema *ms = NULL, *ps = NULL; sql_table *mt = NULL, *pt = NULL; node *n = NULL; - if (msname && !(ms = mvc_bind_schema(sql, msname))) + if (!(ms = mvc_bind_schema(sql, msname))) throw(SQL,"sql.alter_table_del_table",SQLSTATE(3F000) "ALTER TABLE: no such schema '%s'", msname); - if (psname && !(ps = mvc_bind_schema(sql, psname))) + if (!(ps = mvc_bind_schema(sql, psname))) throw(SQL,"sql.alter_table_del_table",SQLSTATE(3F000) "ALTER TABLE: no such schema '%s'", psname); if (!mvc_schema_privs(sql, ms)) throw(SQL,"sql.alter_table_del_table",SQLSTATE(42000) "ALTER TABLE: access denied for %s to schema '%s'", get_string_global_var(sql, "current_user"), ms->base.name); @@ -431,10 +431,10 @@ alter_table_del_table(mvc *sql, char *ms static char * alter_table_set_access(mvc *sql, char *sname, char *tname, int access) { - sql_schema *s = cur_schema(sql); + sql_schema *s = NULL; sql_table *t = NULL; - if (sname && !(s = mvc_bind_schema(sql, sname))) + if (!(s = mvc_bind_schema(sql, sname))) throw(SQL,"sql.alter_table_set_access",SQLSTATE(3F000) "ALTER TABLE: no such schema '%s'", sname); if (s && !mvc_schema_privs(sql, s)) throw(SQL,"sql.alter_table_set_access",SQLSTATE(42000) "ALTER TABLE: access denied for %s to schema '%s'", get_string_global_var(sql, "current_user"), s->base.name); @@ -457,10 +457,10 @@ static char * create_trigger(mvc *sql, char *sname, char *tname, char *triggername, int time, int orientation, int event, char *old_name, char *new_name, char *condition, char *query) { sql_trigger *tri = NULL; - sql_schema *s = cur_schema(sql); + sql_schema *s = NULL; sql_table *t; - if (sname && !(s = mvc_bind_schema(sql, sname))) + if (!(s = mvc_bind_schema(sql, sname))) throw(SQL,"sql.create_trigger",SQLSTATE(3F000) "CREATE TRIGGER: no such schema '%s'", sname); if (!mvc_schema_privs(sql, s)) throw(SQL,"sql.create_trigger",SQLSTATE(42000) "CREATE TRIGGER: access denied for %s to schema '%s'", get_string_global_var(sql, "current_user"), s->base.name); @@ -506,9 +506,9 @@ static char * drop_trigger(mvc *sql, char *sname, char *tname, int if_exists) { sql_trigger *tri = NULL; - sql_schema *s = cur_schema(sql); + sql_schema *s = NULL; - if (sname && !(s = mvc_bind_schema(sql, sname))) { + if (!(s = mvc_bind_schema(sql, sname))) { if (if_exists) return MAL_SUCCEED; throw(SQL,"sql.drop_trigger",SQLSTATE(3F000) "DROP TRIGGER: no such schema '%s'", sname); @@ -529,11 +529,10 @@ drop_trigger(mvc *sql, char *sname, char static char * drop_table(mvc *sql, char *sname, char *tname, int drop_action, int if_exists) { - sql_schema *s = cur_schema(sql); + sql_schema *s = NULL; sql_table *t = NULL; - node *n; - if (sname && !(s = mvc_bind_schema(sql, sname))) { + if (!(s = mvc_bind_schema(sql, sname))) { if (if_exists) return MAL_SUCCEED; throw(SQL,"sql.drop_table",SQLSTATE(3F000) "DROP TABLE: no such schema '%s'", sname); @@ -550,7 +549,7 @@ drop_table(mvc *sql, char *sname, char * if (!mvc_schema_privs(sql, s) && !(isTempSchema(s) && t->persistence == SQL_LOCAL_TEMP)) throw(SQL,"sql.drop_table", SQLSTATE(42000) "DROP TABLE: access denied for %s to schema '%s'", get_string_global_var(sql, "current_user"), s->base.name); if (!drop_action && t->keys.set) { - for (n = t->keys.set->h; n; n = n->next) { + for (node *n = t->keys.set->h; n; n = n->next) { sql_key *k = n->data; if (k->type == ukey || k->type == pkey) { @@ -580,9 +579,9 @@ static char * drop_view(mvc *sql, char *sname, char *tname, int drop_action, int if_exists) { sql_table *t = NULL; - sql_schema *ss = cur_schema(sql); + sql_schema *ss = NULL; - if (sname && !(ss = mvc_bind_schema(sql, sname))) { + if (!(ss = mvc_bind_schema(sql, sname))) { if (if_exists) return MAL_SUCCEED; throw(SQL,"sql.drop_view", SQLSTATE(3F000) "DROP VIEW: no such schema '%s'", sname); @@ -607,9 +606,9 @@ static str drop_key(mvc *sql, char *sname, char *kname, int drop_action) { sql_key *key; - sql_schema *ss = cur_schema(sql); + sql_schema *ss = NULL; - if (sname && !(ss = mvc_bind_schema(sql, sname))) + if (!(ss = mvc_bind_schema(sql, sname))) throw(SQL,"sql.drop_key", SQLSTATE(3F000) "ALTER TABLE: no such schema '%s'", sname); if (!mvc_schema_privs(sql, ss)) throw(SQL,"sql.drop_key", SQLSTATE(42000) "ALTER TABLE: access denied for %s to schema '%s'", get_string_global_var(sql, "current_user"), ss->base.name); @@ -625,10 +624,10 @@ drop_key(mvc *sql, char *sname, char *kn static str drop_index(Client cntxt, mvc *sql, char *sname, char *iname) { - sql_schema *s = cur_schema(sql); + sql_schema *s = NULL; sql_idx *i = NULL; - if (sname && !(s = mvc_bind_schema(sql, sname))) + if (!(s = mvc_bind_schema(sql, sname))) throw(SQL,"sql.drop_index", SQLSTATE(3F000) "DROP INDEX: no such schema '%s'", sname); if (!mvc_schema_privs(sql, s)) throw(SQL,"sql.drop_index", SQLSTATE(42000) "DROP INDEX: access denied for %s to schema '%s'", get_string_global_var(sql, "current_user"), s->base.name); @@ -660,10 +659,10 @@ drop_index(Client cntxt, mvc *sql, char static str create_seq(mvc *sql, char *sname, char *seqname, sql_sequence *seq) { - sql_schema *s = cur_schema(sql); + sql_schema *s = NULL; (void)seqname; - if (sname && !(s = mvc_bind_schema(sql, sname))) + if (!(s = mvc_bind_schema(sql, sname))) throw(SQL,"sql.create_seq", SQLSTATE(3F000) "CREATE SEQUENCE: no such schema '%s'", sname); if (!mvc_schema_privs(sql, s)) throw(SQL,"sql.create_seq", SQLSTATE(42000) "CREATE SEQUENCE: insufficient privileges for '%s' in schema '%s'", get_string_global_var(sql, "current_user"), s->base.name); @@ -685,11 +684,11 @@ create_seq(mvc *sql, char *sname, char * static str alter_seq(mvc *sql, char *sname, char *seqname, sql_sequence *seq, const lng *val) { - sql_schema *s = cur_schema(sql); + sql_schema *s = NULL; sql_sequence *nseq = NULL; (void)seqname; - if (sname && !(s = mvc_bind_schema(sql, sname))) + if (!(s = mvc_bind_schema(sql, sname))) throw(SQL,"sql.alter_seq", SQLSTATE(3F000) "ALTER SEQUENCE: no such schema '%s'", sname); if (!mvc_schema_privs(sql, s)) throw(SQL,"sql.alter_seq", SQLSTATE(42000) "ALTER SEQUENCE: insufficient privileges for '%s' in schema '%s'", get_string_global_var(sql, "current_user"), s->base.name); @@ -716,10 +715,10 @@ alter_seq(mvc *sql, char *sname, char *s static str drop_seq(mvc *sql, char *sname, char *name) { - sql_schema *s = cur_schema(sql); + sql_schema *s = NULL; sql_sequence *seq = NULL; - if (sname && !(s = mvc_bind_schema(sql, sname))) + if (!(s = mvc_bind_schema(sql, sname))) throw(SQL,"sql.drop_seq", SQLSTATE(3F000) "DROP SEQUENCE: no such schema '%s'", sname); if (!mvc_schema_privs(sql, s)) throw(SQL,"sql.drop_seq", SQLSTATE(42000) "DROP SEQUENCE: insufficient privileges for '%s' in schema '%s'", get_string_global_var(sql, "current_user"), s->base.name); @@ -735,12 +734,12 @@ drop_seq(mvc *sql, char *sname, char *na static str drop_func(mvc *sql, char *sname, char *name, sqlid fid, sql_ftype type, int action) { - sql_schema *s = cur_schema(sql); + sql_schema *s = NULL; char *F = NULL, *fn = NULL; FUNC_TYPE_STR(type, F, fn) - if (sname && !(s = mvc_bind_schema(sql, sname))) { + if (!(s = mvc_bind_schema(sql, sname))) { if (fid == -2) /* if exists option */ return MAL_SUCCEED; throw(SQL,"sql.drop_func", SQLSTATE(3F000) "DROP %s: no such schema '%s'", F, sname); @@ -784,7 +783,7 @@ static char * create_func(mvc *sql, char *sname, char *fname, sql_func *f) { sql_func *nf; - sql_schema *s = cur_schema(sql); + sql_schema *s = NULL; int clientid = sql->clientid; char *F = NULL, *fn = NULL; @@ -792,7 +791,7 @@ create_func(mvc *sql, char *sname, char (void) fname; (void) fn; - if (sname && !(s = mvc_bind_schema(sql, sname))) + if (!(s = mvc_bind_schema(sql, sname))) throw(SQL,"sql.create_func", SQLSTATE(3F000) "CREATE %s: no such schema '%s'", F, sname); if (!mvc_schema_privs(sql, s)) throw(SQL,"sql.create_func", SQLSTATE(42000) "CREATE %s: access denied for %s to schema '%s'", F, get_string_global_var(sql, "current_user"), s->base.name); @@ -859,11 +858,11 @@ create_func(mvc *sql, char *sname, char static str alter_table(Client cntxt, mvc *sql, char *sname, sql_table *t) { - sql_schema *s = cur_schema(sql); + sql_schema *s = NULL; sql_table *nt = NULL; node *n; - if (sname && !(s = mvc_bind_schema(sql, sname))) + if (!(s = mvc_bind_schema(sql, sname))) throw(SQL,"sql.alter_table", SQLSTATE(3F000) "ALTER TABLE: no such schema '%s'", sname); if (!mvc_schema_privs(sql, s) && !(isTempSchema(s) && t->persistence == SQL_LOCAL_TEMP)) throw(SQL,"sql.alter_table", SQLSTATE(42000) "ALTER TABLE: insufficient privileges for user '%s' in schema '%s'", get_string_global_var(sql, "current_user"), s->base.name); @@ -1206,12 +1205,11 @@ SQLcreate_type(Client cntxt, MalBlkPtr m str sname = *getArgReference_str(stk, pci, 1); char *name = *getArgReference_str(stk, pci, 2); char *impl = *getArgReference_str(stk, pci, 3); - sql_schema *s; + sql_schema *s = NULL; initcontext(); - s = cur_schema(sql); - if (sname && !(s = mvc_bind_schema(sql, sname))) + if (!(s = mvc_bind_schema(sql, sname))) throw(SQL,"sql.create_type",SQLSTATE(3F000) "CREATE TYPE: no such schema '%s'", sname); if (!mvc_schema_privs(sql, s)) throw(SQL,"sql.create_type", SQLSTATE(42000) "CREATE TYPE: access denied for %s to schema '%s'", get_string_global_var(sql, "current_user"), s->base.name); @@ -1229,13 +1227,12 @@ SQLdrop_type(Client cntxt, MalBlkPtr mb, str sname = *getArgReference_str(stk, pci, 1); char *name = *getArgReference_str(stk, pci, 2); int drop_action = *getArgReference_int(stk, pci, 3); - sql_schema *s; + sql_schema *s = NULL; sql_type *t; initcontext(); - s = cur_schema(sql); - if (sname && !(s = mvc_bind_schema(sql, sname))) + if (!(s = mvc_bind_schema(sql, sname))) throw(SQL,"sql.drop_type",SQLSTATE(3F000) "DROP TYPE: no such schema '%s'", sname); if (!mvc_schema_privs(sql, s)) throw(SQL,"sql.drop_type", SQLSTATE(42000) "DROP TYPE: access denied for %s to schema '%s'", get_string_global_var(sql, "current_user"), s->base.name); diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c --- a/sql/server/rel_exp.c +++ b/sql/server/rel_exp.c @@ -565,12 +565,10 @@ exp_value(mvc *sql, sql_exp *e) return e->l; } else if (e->r) { /* param (ie not set) */ sql_var_name *vname = (sql_var_name*) e->r; - sql_schema *s = cur_schema(sql); sql_var *var; - if (vname->sname && !(s = mvc_bind_schema(sql, vname->sname))) - return NULL; - if (e->flag == 0 && (var = find_global_var(sql, s, vname->name))) /* global variable */ + assert(e->flag != 0 || vname->sname); /* global variables must have a schema */ + if (e->flag == 0 && (var = find_global_var(sql, mvc_bind_schema(sql, vname->sname), vname->name))) /* global variable */ return &(var->var); return NULL; } diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c --- a/sql/server/rel_schema.c +++ b/sql/server/rel_schema.c @@ -1107,9 +1107,6 @@ rel_create_view(sql_query *query, dlist } else { return sql_error(sql, 02, SQLSTATE(42S01) "%s: name '%s' already in use", base, name); } - } else { - sql->errstr[0] = '\0'; /* reset table not found error */ - sql->session->status = 0; } } if (ast) { @@ -1647,23 +1644,20 @@ rel_func_priv(sql_allocator *sa, char *s } static sql_rel * -rel_grant_or_revoke_global(mvc *sql, sql_schema *cur, dlist *privs, dlist *grantees, int grant, int grantor, ddl_statement action) +rel_grant_or_revoke_global(mvc *sql, dlist *privs, dlist *grantees, int grant, int grantor, ddl_statement action) { sql_rel *res = NULL; - char *sname = cur->base.name; - dnode *gn; + char *sname = cur_schema(sql)->base.name; if (!privs) return NULL; - sname = cur->base.name; - for (gn = grantees->h; gn; gn = gn->next) { - dnode *opn; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list