Changeset: 756a179ab2b2 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=756a179ab2b2 Modified Files: sql/backends/monet5/sql.c sql/backends/monet5/sql_cat.c sql/backends/monet5/sql_optimizer.c sql/backends/monet5/sql_result.c sql/backends/monet5/sql_scenario.c sql/backends/monet5/sql_upgrades.c sql/backends/monet5/sql_user.c sql/server/rel_exp.c sql/server/rel_psm.c sql/server/rel_schema.c sql/server/rel_select.c sql/server/rel_sequence.c sql/server/rel_updates.c sql/server/sql_env.c sql/server/sql_mvc.c sql/server/sql_mvc.h sql/server/sql_parser.y sql/server/sql_privileges.c sql/server/sql_var.c Branch: scoping Log Message:
Cleanup. Look exclusively on the first frame whenver attempting to update a SQL global variable on the backend. Reduced the number of lookups in the stack whenever attemping to add a SQL variable in relational plan. Removed now obsolete functions for variable handling. diffs (truncated from 1121 to 300 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 @@ -300,8 +300,8 @@ create_table_or_view(mvc *sql, char* sna return sql_message(SQLSTATE(3F000) "%s %s: schema '%s' doesn't exist", action, (t->query) ? "TABLE" : "VIEW", sname); if (mvc_bind_table(sql, s, t->base.name)) { return sql_message(SQLSTATE(42S01) "%s TABLE: name '%s' already in use", action, t->base.name); - } else if (temp != SQL_DECLARED_TABLE && (!mvc_schema_privs(sql, s) && !(isTempSchema(s) && temp == SQL_LOCAL_TEMP))) { - return sql_message(SQLSTATE(42000) "%s TABLE: insufficient privileges for user '%s' in schema '%s'", action, stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), s->base.name); + } else if (temp != SQL_DECLARED_TABLE && (!mvc_schema_privs(sql, s) && !(isTempSchema(s) && temp == SQL_LOCAL_TEMP))) { + return sql_message(SQLSTATE(42000) "%s TABLE: insufficient privileges for user '%s' in schema '%s'", action, sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), s->base.name); } else if (temp == SQL_DECLARED_TABLE && !list_empty(t->keys.set)) { return sql_message(SQLSTATE(42000) "%s TABLE: '%s' cannot have constraints", action, t->base.name); } @@ -642,6 +642,7 @@ setVariable(Client cntxt, MalBlkPtr mb, int mtype = getArgType(mb, pci, 4); ValRecord *src; sql_schema *s; + sql_var *var; if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != NULL) return msg; @@ -662,30 +663,25 @@ setVariable(Client cntxt, MalBlkPtr mb, throw(SQL, "sql.setVariable", SQLSTATE(42100) "optimizer '%s' unknown", newopt); (void) snprintf(buf, BUFSIZ, "user_%d", cntxt->idx); if (!isOptimizerPipe(newopt) || strcmp(buf, newopt) == 0) { - msg = addPipeDefinition(cntxt, buf, newopt); - if (msg) + if ((msg = addPipeDefinition(cntxt, buf, newopt))) return msg; - if (stack_find_var(m, s, varname)) { - if (!stack_set_string(m, s, varname, buf)) - throw(SQL, "sql.setVariable", SQLSTATE(HY013) MAL_MALLOC_FAIL); - } - } else if (stack_find_var(m, s, varname)) { - if (!stack_set_string(m, s, varname, newopt)) + if (!sqlvar_set_string(find_global_var(m, s, varname), buf)) throw(SQL, "sql.setVariable", SQLSTATE(HY013) MAL_MALLOC_FAIL); - } + } else if (!sqlvar_set_string(find_global_var(m, s, varname), newopt)) + throw(SQL, "sql.setVariable", SQLSTATE(HY013) MAL_MALLOC_FAIL); } return MAL_SUCCEED; } src = &stk->stk[getArg(pci, 4)]; - if (stack_find_var(m, s, varname)) { + if ((var = find_global_var(m, s, varname))) { #ifdef HAVE_HGE hge sgn = val_get_number(src); #else lng sgn = val_get_number(src); #endif - if ((msg = sql_update_var(m, s, varname, src->val.sval, sgn)) != NULL) + if ((msg = sql_update_var(m, s, varname, src->val.sval, sgn))) return msg; - if (!stack_set_var(m, s, varname, src)) + if (!sqlvar_set(var, src)) throw(SQL, "sql.setVariable", SQLSTATE(HY013) MAL_MALLOC_FAIL); } else { throw(SQL, "sql.setVariable", SQLSTATE(42100) "Variable '%s.%s' unknown", sname, varname); @@ -702,9 +698,9 @@ getVariable(Client cntxt, MalBlkPtr mb, str msg; const char *sname = *getArgReference_str(stk, pci, 2); const char *varname = *getArgReference_str(stk, pci, 3); - atom *a; ValRecord *dst, *src; sql_schema *s; + sql_var *var; if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != NULL) return msg; @@ -715,9 +711,9 @@ getVariable(Client cntxt, MalBlkPtr mb, throw(SQL, "sql.getVariable", SQLSTATE(3F000) "Cannot find the schema '%s'", sname); if (mtype < 0 || mtype >= 255) throw(SQL, "sql.getVariable", SQLSTATE(42100) "Variable type error"); - if (!(a = stack_get_var(m, s, varname))) + if (!(var = find_global_var(m, s, varname))) throw(SQL, "sql.getVariable", SQLSTATE(42100) "Variable '%s.%s' unknown", sname, varname); - src = &a->data; + src = &(var->var.data); dst = &stk->stk[getArg(pci, 0)]; if (VALcopy(dst, src) == NULL) throw(MAL, "sql.getVariable", SQLSTATE(HY013) MAL_MALLOC_FAIL); @@ -804,7 +800,7 @@ mvc_next_value(Client cntxt, MalBlkPtr m if (seq_next_value(seq, res)) { m->last_id = *res; - stack_set_number(m, mvc_bind_schema(m, "sys"), "last_id", m->last_id); + sqlvar_set_number(find_global_var(m, mvc_bind_schema(m, "sys"), "last_id"), m->last_id); return MAL_SUCCEED; } throw(SQL, "sql.next_value", SQLSTATE(42000) "Error in fetching next value for sequence %s.%s", sname, seqname); 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 @@ -148,9 +148,9 @@ validate_alter_table_add_table(mvc *sql, if (psname && !(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'", stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), ms->base.name); + throw(SQL,call,SQLSTATE(42000) "ALTER TABLE: access denied for %s to schema '%s'", sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), ms->base.name); if (!mvc_schema_privs(sql, ps)) - throw(SQL,call,SQLSTATE(42000) "ALTER TABLE: access denied for %s to schema '%s'", stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), ps->base.name); + throw(SQL,call,SQLSTATE(42000) "ALTER TABLE: access denied for %s to schema '%s'", sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), ps->base.name); if (!(rmt = mvc_bind_table(sql, ms, mtname))) throw(SQL,call,SQLSTATE(42S02) "ALTER TABLE: no such table '%s' in schema '%s'", ms->base.name, mtname); if (!(rpt = mvc_bind_table(sql, ps, ptname))) @@ -409,9 +409,9 @@ alter_table_del_table(mvc *sql, char *ms if (psname && !(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'", stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), ms->base.name); + throw(SQL,"sql.alter_table_del_table",SQLSTATE(42000) "ALTER TABLE: access denied for %s to schema '%s'", sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), ms->base.name); if (!mvc_schema_privs(sql, ps)) - throw(SQL,"sql.alter_table_del_table",SQLSTATE(42000) "ALTER TABLE: access denied for %s to schema '%s'", stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), ps->base.name); + throw(SQL,"sql.alter_table_del_table",SQLSTATE(42000) "ALTER TABLE: access denied for %s to schema '%s'", sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), ps->base.name); if (!(mt = mvc_bind_table(sql, ms, mtname))) throw(SQL,"sql.alter_table_del_table",SQLSTATE(42S02) "ALTER TABLE: no such table '%s' in schema '%s'", ms->base.name, mtname); if (!(pt = mvc_bind_table(sql, ps, ptname))) @@ -435,7 +435,7 @@ alter_table_set_access(mvc *sql, char *s if (sname && !(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'", stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), s->base.name); + throw(SQL,"sql.alter_table_set_access",SQLSTATE(42000) "ALTER TABLE: access denied for %s to schema '%s'", sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), s->base.name); if (!(t = mvc_bind_table(sql, s, tname))) throw(SQL,"sql.alter_table_set_access",SQLSTATE(42S02) "ALTER TABLE: no such table '%s' in schema '%s'", tname, s->base.name); if (isMergeTable(t)) @@ -461,7 +461,7 @@ create_trigger(mvc *sql, char *sname, ch if (sname && !(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'", stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), s->base.name); + throw(SQL,"sql.create_trigger",SQLSTATE(42000) "CREATE TRIGGER: access denied for %s to schema '%s'", sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), s->base.name); if (mvc_bind_trigger(sql, s, triggername)) throw(SQL,"sql.create_trigger",SQLSTATE(3F000) "CREATE TRIGGER: name '%s' already in use", triggername); if (!(t = mvc_bind_table(sql, s, tname))) @@ -512,7 +512,7 @@ drop_trigger(mvc *sql, char *sname, char throw(SQL,"sql.drop_trigger",SQLSTATE(3F000) "DROP TRIGGER: no such schema '%s'", sname); } if (!mvc_schema_privs(sql, s)) - throw(SQL,"sql.drop_trigger",SQLSTATE(42000) "DROP TRIGGER: access denied for %s to schema '%s'", stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), s->base.name); + throw(SQL,"sql.drop_trigger",SQLSTATE(42000) "DROP TRIGGER: access denied for %s to schema '%s'", sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), s->base.name); if ((tri = mvc_bind_trigger(sql, s, tname)) == NULL) { if (if_exists) @@ -551,7 +551,7 @@ drop_table(mvc *sql, char *sname, char * if (t->system) throw(SQL,"sql.drop_table", SQLSTATE(42000) "DROP TABLE: cannot drop system table '%s'", tname); 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'", stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), s->base.name); + throw(SQL,"sql.drop_table", SQLSTATE(42000) "DROP TABLE: access denied for %s to schema '%s'", sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), s->base.name); if (!drop_action && t->keys.set) { for (n = t->keys.set->h; n; n = n->next) { sql_key *k = n->data; @@ -596,7 +596,7 @@ drop_view(mvc *sql, char *sname, char *t throw(SQL,"sql.drop_view",SQLSTATE(42S02) "DROP VIEW: unknown view '%s'", tname); } if (!mvc_schema_privs(sql, ss) && !(isTempSchema(ss) && t && t->persistence == SQL_LOCAL_TEMP)) - throw(SQL,"sql.drop_view", SQLSTATE(42000) "DROP VIEW: access denied for %s to schema '%s'", stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), ss->base.name); + throw(SQL,"sql.drop_view", SQLSTATE(42000) "DROP VIEW: access denied for %s to schema '%s'", sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), ss->base.name); if (!isView(t)) throw(SQL,"sql.drop_view", SQLSTATE(42000) "DROP VIEW: unable to drop view '%s': is a table", tname); if (t->system) @@ -615,7 +615,7 @@ drop_key(mvc *sql, char *sname, char *kn if (sname && !(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'", stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), ss->base.name); + throw(SQL,"sql.drop_key", SQLSTATE(42000) "ALTER TABLE: access denied for %s to schema '%s'", sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), ss->base.name); if ((key = mvc_bind_key(sql, ss, kname)) == NULL) throw(SQL,"sql.drop_key", SQLSTATE(42000) "ALTER TABLE: no such constraint '%s'", kname); if (!drop_action && mvc_check_dependency(sql, key->base.id, KEY_DEPENDENCY, NULL)) @@ -634,7 +634,7 @@ drop_index(Client cntxt, mvc *sql, char if (sname && !(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'", stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), s->base.name); + throw(SQL,"sql.drop_index", SQLSTATE(42000) "DROP INDEX: access denied for %s to schema '%s'", sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), s->base.name); if (!(i = mvc_bind_idx(sql, s, iname))) throw(SQL,"sql.drop_index", SQLSTATE(42S12) "DROP INDEX: no such index '%s'", iname); if (i->type == ordered_idx) { @@ -667,7 +667,7 @@ create_seq(mvc *sql, char *sname, char * if (sname && !(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'", stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), s->base.name); + throw(SQL,"sql.create_seq", SQLSTATE(42000) "CREATE SEQUENCE: insufficient privileges for '%s' in schema '%s'", sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), s->base.name); if (find_sql_sequence(s, seq->base.name)) throw(SQL,"sql.create_seq", SQLSTATE(42000) "CREATE SEQUENCE: name '%s' already in use", seq->base.name); if (is_lng_nil(seq->start) || is_lng_nil(seq->minvalue) || is_lng_nil(seq->maxvalue) || @@ -693,7 +693,7 @@ alter_seq(mvc *sql, char *sname, char *s if (sname && !(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'", stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), s->base.name); + throw(SQL,"sql.alter_seq", SQLSTATE(42000) "ALTER SEQUENCE: insufficient privileges for '%s' in schema '%s'", sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), s->base.name); if (!(nseq = find_sql_sequence(s, seq->base.name))) throw(SQL,"sql.alter_seq", SQLSTATE(42000) "ALTER SEQUENCE: no such sequence '%s'", seq->base.name); /* if seq properties hold NULL values, then they should be ignored during the update */ @@ -723,7 +723,7 @@ drop_seq(mvc *sql, char *sname, char *na if (sname && !(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'", stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), s->base.name); + throw(SQL,"sql.drop_seq", SQLSTATE(42000) "DROP SEQUENCE: insufficient privileges for '%s' in schema '%s'", sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), s->base.name); if (!(seq = find_sql_sequence(s, name))) throw(SQL,"sql.drop_seq", SQLSTATE(42M35) "DROP SEQUENCE: no such sequence '%s'", name); if (mvc_check_dependency(sql, seq->base.id, BEDROPPED_DEPENDENCY, NULL)) @@ -747,7 +747,7 @@ drop_func(mvc *sql, char *sname, char *n throw(SQL,"sql.drop_func", SQLSTATE(3F000) "DROP %s: no such schema '%s'", F, sname); } if (!mvc_schema_privs(sql, s)) - throw(SQL,"sql.drop_func", SQLSTATE(42000) "DROP %s: access denied for %s to schema '%s'", F, stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), s->base.name); + throw(SQL,"sql.drop_func", SQLSTATE(42000) "DROP %s: access denied for %s to schema '%s'", F, sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), s->base.name); if (fid >= 0) { node *n = find_sql_func_node(s, fid); if (n) { @@ -796,7 +796,7 @@ create_func(mvc *sql, char *sname, char if (sname && !(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, stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), s->base.name); + throw(SQL,"sql.create_func", SQLSTATE(42000) "CREATE %s: access denied for %s to schema '%s'", F, sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), s->base.name); nf = mvc_create_func(sql, NULL, s, f->base.name, f->ops, f->res, f->type, f->lang, f->mod, f->imp, f->query, f->varres, f->vararg, f->system); assert(nf); switch (nf->lang) { @@ -867,7 +867,7 @@ alter_table(Client cntxt, mvc *sql, char if (sname && !(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'", stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), s->base.name); + throw(SQL,"sql.alter_table", SQLSTATE(42000) "ALTER TABLE: insufficient privileges for user '%s' in schema '%s'", sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), s->base.name); if (!(nt = mvc_bind_table(sql, s, t->base.name))) throw(SQL,"sql.alter_table", SQLSTATE(42S02) "ALTER TABLE: no such table '%s'", t->base.name); @@ -1073,7 +1073,7 @@ SQLcreate_schema(Client cntxt, MalBlkPtr if (name && (auth_id = sql_find_auth(sql, name)) < 0) throw(SQL,"sql.create_schema", SQLSTATE(42M32) "CREATE SCHEMA: no such authorization '%s'", name); if (sql->user_id != USER_MONETDB && sql->role_id != ROLE_SYSADMIN) - throw(SQL,"sql.create_schema", SQLSTATE(42000) "CREATE SCHEMA: insufficient privileges for user '%s'", stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user")); + throw(SQL,"sql.create_schema", SQLSTATE(42000) "CREATE SCHEMA: insufficient privileges for user '%s'", sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user"))); if (mvc_bind_schema(sql, sname)) throw(SQL,"sql.create_schema", SQLSTATE(3F000) "CREATE SCHEMA: name '%s' already in use", sname); (void) mvc_create_schema(sql, sname, auth_id, sql->user_id); @@ -1099,7 +1099,7 @@ SQLdrop_schema(Client cntxt, MalBlkPtr m return MAL_SUCCEED; } if (!mvc_schema_privs(sql, s)) - throw(SQL,"sql.drop_schema",SQLSTATE(42000) "DROP SCHEMA: access denied for %s to schema '%s'", stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), s->base.name); + throw(SQL,"sql.drop_schema",SQLSTATE(42000) "DROP SCHEMA: access denied for %s to schema '%s'", sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), s->base.name); if (s == cur_schema(sql)) throw(SQL,"sql.drop_schema",SQLSTATE(42000) "DROP SCHEMA: cannot drop current schema"); if (s->system) @@ -1215,7 +1215,7 @@ SQLcreate_type(Client cntxt, MalBlkPtr m if (sname && !(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'", stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), s->base.name); + throw(SQL,"sql.create_type", SQLSTATE(42000) "CREATE TYPE: access denied for %s to schema '%s'", sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), s->base.name); if (schema_bind_type(sql, s, name)) throw(SQL,"sql.create_type", SQLSTATE(42S02) "CREATE TYPE: type '%s' already exists", name); if (!mvc_create_type(sql, s, name, 0, 0, 0, impl)) @@ -1239,7 +1239,7 @@ SQLdrop_type(Client cntxt, MalBlkPtr mb, if (sname && !(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'", stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), s->base.name); + throw(SQL,"sql.drop_type", SQLSTATE(42000) "DROP TYPE: access denied for %s to schema '%s'", sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), s->base.name); if (!(t = schema_bind_type(sql, s, name))) throw(SQL,"sql.drop_type", SQLSTATE(3F000) "DROP TYPE: type '%s' does not exist", name); if (!drop_action && mvc_check_dependency(sql, t->base.id, TYPE_DEPENDENCY, NULL)) @@ -1644,7 +1644,7 @@ SQLrename_schema(Client cntxt, MalBlkPtr if (!(s = mvc_bind_schema(sql, old_name))) throw(SQL, "sql.rename_schema", SQLSTATE(42S02) "ALTER SCHEMA: no such schema '%s'", old_name); if (!mvc_schema_privs(sql, s)) - throw(SQL, "sql.rename_schema", SQLSTATE(42000) "ALTER SCHEMA: access denied for %s to schema '%s'", stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), old_name); + throw(SQL, "sql.rename_schema", SQLSTATE(42000) "ALTER SCHEMA: access denied for %s to schema '%s'", sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), old_name); if (s->system) throw(SQL, "sql.rename_schema", SQLSTATE(3F000) "ALTER SCHEMA: cannot rename a system schema"); if (!list_empty(s->tables.set) || !list_empty(s->types.set) || !list_empty(s->funcs.set) || !list_empty(s->seqs.set)) @@ -1680,7 +1680,7 @@ SQLrename_table(Client cntxt, MalBlkPtr if (!(s = mvc_bind_schema(sql, oschema_name))) throw(SQL, "sql.rename_table", SQLSTATE(42S02) "ALTER TABLE: no such schema '%s'", oschema_name); if (!mvc_schema_privs(sql, s)) - throw(SQL, "sql.rename_table", SQLSTATE(42000) "ALTER TABLE: access denied for %s to schema '%s'", stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), oschema_name); + throw(SQL, "sql.rename_table", SQLSTATE(42000) "ALTER TABLE: access denied for %s to schema '%s'", sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), oschema_name); if (!(t = mvc_bind_table(sql, s, otable_name))) throw(SQL, "sql.rename_table", SQLSTATE(42S02) "ALTER TABLE: no such table '%s' in schema '%s'", otable_name, oschema_name); if (t->system) @@ -1700,7 +1700,7 @@ SQLrename_table(Client cntxt, MalBlkPtr if (!(o = mvc_bind_schema(sql, oschema_name))) throw(SQL, "sql.rename_table", SQLSTATE(42S02) "ALTER TABLE: no such schema '%s'", oschema_name); if (!mvc_schema_privs(sql, o)) - throw(SQL, "sql.rename_table", SQLSTATE(42000) "ALTER TABLE: access denied for %s to schema '%s'", stack_get_string(sql, mvc_bind_schema(sql, "sys"), "current_user"), oschema_name); + throw(SQL, "sql.rename_table", SQLSTATE(42000) "ALTER TABLE: access denied for %s to schema '%s'", sqlvar_get_string(find_global_var(sql, mvc_bind_schema(sql, "sys"), "current_user")), oschema_name); if (!(t = mvc_bind_table(sql, o, otable_name))) throw(SQL, "sql.rename_table", SQLSTATE(42S02) "ALTER TABLE: no such table '%s' in schema '%s'", otable_name, oschema_name); if (t->system) @@ -1716,7 +1716,7 @@ SQLrename_table(Client cntxt, MalBlkPtr _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list