Changeset: db2d498a30ed for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=db2d498a30ed
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql.mal
        sql/backends/monet5/sql_cat.c
        sql/backends/monet5/sql_execute.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_dump.c
        sql/server/rel_exp.c
        sql/server/rel_psm.c
        sql/server/rel_schema.c
        sql/server/rel_select.c
        sql/server/rel_semantic.c
        sql/server/rel_sequence.c
        sql/server/rel_updates.c
        sql/server/sql_env.c
        sql/server/sql_env.h
        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:

Adding schemas to declared variables.

The server doesn't start yet. Also we have to decide how the scoping precedence 
will be.


diffs (truncated from 1801 to 300 lines):

diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -4552,7 +4552,7 @@ sql_stack_add_updated(mvc *sql, const ch
        r->l = ti;
 
        /* put single table into the stack with 2 names, needed for the psm 
code */
-       if(!stack_push_rel_view(sql, on, r) || !stack_push_rel_view(sql, nn, 
rel_dup(r)))
+       if (!stack_push_rel_view(sql, on, r) || !stack_push_rel_view(sql, nn, 
rel_dup(r)))
                return 0;
        return 1;
 }
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
@@ -294,7 +294,7 @@ create_table_or_view(mvc *sql, char* sna
                char *cd = (temp == SQL_DECLARED_TABLE) ? "DECLARE" : "CREATE";
                return sql_message(SQLSTATE(42S01) "%s TABLE: name '%s' already 
in use", cd, 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) "CREATE TABLE: insufficient 
privileges for user '%s' in schema '%s'", stack_get_string(sql, 
"current_user"), s->base.name);
+               return sql_message(SQLSTATE(42000) "CREATE TABLE: insufficient 
privileges for user '%s' in schema '%s'", stack_get_string(sql, 
mvc_bind_schema(sql, "tmp"), "current_user"), s->base.name);
        } else if (temp == SQL_DECLARED_TABLE && !list_empty(t->keys.set)) {
                return sql_message(SQLSTATE(42000) "DECLARE TABLE: '%s' cannot 
have constraints", t->base.name);
        }
@@ -617,26 +617,31 @@ SQLcatalog(Client cntxt, MalBlkPtr mb, M
        return sql_message(SQLSTATE(25006) "Deprecated statement");
 }
 
-/* setVariable(int *ret, str *name, any value) */
+/* setVariable(int *ret, str *sname, str *name, any value) */
 str
 setVariable(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
        int *res = getArgReference_int(stk, pci, 0);
        mvc *m = NULL;
        str msg;
-       const char *varname = *getArgReference_str(stk, pci, 2);
-       int mtype = getArgType(mb, pci, 3);
+       const char *sname = *getArgReference_str(stk, pci, 2);
+       const char *varname = *getArgReference_str(stk, pci, 3);
+       int mtype = getArgType(mb, pci, 4);
        ValRecord *src;
+       sql_schema *s;
 
        if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != NULL)
                return msg;
        if ((msg = checkSQLContext(cntxt)) != NULL)
                return msg;
 
+       if (!(s = mvc_bind_schema(m, sname)))
+               throw(SQL, "sql.setVariable", SQLSTATE(3F000) "Cannot find the 
schema %s", sname);
+
        *res = 0;
        if (mtype < 0 || mtype >= 255)
                throw(SQL, "sql.setVariable", SQLSTATE(42100) "Variable type 
error");
-       if (strcmp("optimizer", varname) == 0) {
+       if (!strcmp("tmp", s->base.name) && !strcmp("optimizer", varname)) {
                const char *newopt = *getArgReference_str(stk, pci, 3);
                if (newopt) {
                        char buf[BUFSIZ];
@@ -648,30 +653,30 @@ setVariable(Client cntxt, MalBlkPtr mb, 
                                msg = addPipeDefinition(cntxt, buf, newopt);
                                if (msg)
                                        return msg;
-                               if (stack_find_var(m, varname)) {
-                                       if(!stack_set_string(m, varname, buf))
+                               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, varname)) {
-                               if(!stack_set_string(m, varname, newopt))
+                       } else if (stack_find_var(m, s, varname)) {
+                               if (!stack_set_string(m, s, varname, newopt))
                                        throw(SQL, "sql.setVariable", 
SQLSTATE(HY013) MAL_MALLOC_FAIL);
                        }
                }
                return MAL_SUCCEED;
        }
        src = &stk->stk[getArg(pci, 3)];
-       if (stack_find_var(m, varname)) {
+       if (stack_find_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, varname, src->val.sval, sgn)) != 
NULL)
+               if ((msg = sql_update_var(m, s, varname, src->val.sval, sgn)) 
!= NULL)
                        return msg;
-               if(!stack_set_var(m, varname, src))
+               if (!stack_set_var(m, s, varname, src))
                        throw(SQL, "sql.setVariable", SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
        } else {
-               throw(SQL, "sql.setVariable", SQLSTATE(42100) "variable '%s' 
unknown", varname);
+               throw(SQL, "sql.setVariable", SQLSTATE(42100) "Variable '%s.%s' 
unknown", sname, varname);
        }
        return MAL_SUCCEED;
 }
@@ -683,18 +688,23 @@ getVariable(Client cntxt, MalBlkPtr mb, 
        int mtype = getArgType(mb, pci, 0);
        mvc *m = NULL;
        str msg;
-       const char *varname = *getArgReference_str(stk, pci, 2);
+       const char *sname = *getArgReference_str(stk, pci, 2);
+       const char *varname = *getArgReference_str(stk, pci, 3);
        atom *a;
        ValRecord *dst, *src;
+       sql_schema *s;
 
        if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != NULL)
                return msg;
        if ((msg = checkSQLContext(cntxt)) != NULL)
                return msg;
+
+       if (!(s = mvc_bind_schema(m, sname)))
+               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, varname)))
-               throw(SQL, "sql.getVariable", SQLSTATE(42100) "variable '%s' 
unknown", varname);
+       if (!(a = stack_get_var(m, s, varname)))
+               throw(SQL, "sql.getVariable", SQLSTATE(42100) "Variable'%s.%s' 
unknown", sname, varname);
        src = &a->data;
        dst = &stk->stk[getArg(pci, 0)];
        if (VALcopy(dst, src) == NULL)
@@ -777,7 +787,7 @@ mvc_next_value(Client cntxt, MalBlkPtr m
 
        if (seq_next_value(seq, res)) {
                m->last_id = *res;
-               stack_set_number(m, "last_id", m->last_id);
+               stack_set_number(m, mvc_bind_schema(m, "tmp"), "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.mal b/sql/backends/monet5/sql.mal
--- a/sql/backends/monet5/sql.mal
+++ b/sql/backends/monet5/sql.mal
@@ -86,11 +86,11 @@ pattern assert(b:lng,msg:str):void
 address SQLassertLng
 comment "Generate an exception when b!=0";
 
-pattern setVariable(mvc:int, varname:str, value:any_1 ):int
+pattern setVariable(mvc:int, sname:str, varname:str, value:any_1 ):int
 address setVariable
 comment "Set the value of a session variable";
 
-pattern getVariable(mvc:int, varname:str ):any_1
+pattern getVariable(mvc:int, sname:str, varname:str ):any_1
 address getVariable
 comment "Get the value of a session variable";
 
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
@@ -423,7 +423,7 @@ create_trigger(mvc *sql, char *sname, ch
        if (!s)
                s = cur_schema(sql);
        if (!mvc_schema_privs(sql, s))
-               throw(SQL,"sql.create_trigger",SQLSTATE(3F000) "CREATE TRIGGER: 
access denied for %s to schema '%s'", stack_get_string(sql, "current_user"), 
s->base.name);
+               throw(SQL,"sql.create_trigger",SQLSTATE(3F000) "CREATE TRIGGER: 
access denied for %s to schema '%s'", stack_get_string(sql, 
mvc_bind_schema(sql, "tmp"), "current_user"), s->base.name);
        if (mvc_bind_trigger(sql, s, triggername) != NULL)
                throw(SQL,"sql.create_trigger",SQLSTATE(3F000) "CREATE TRIGGER: 
name '%s' already in use", triggername);
 
@@ -470,7 +470,7 @@ drop_trigger(mvc *sql, char *sname, char
                s = cur_schema(sql);
        assert(s);
        if (!mvc_schema_privs(sql, s))
-               throw(SQL,"sql.drop_trigger",SQLSTATE(3F000) "DROP TRIGGER: 
access denied for %s to schema '%s'", stack_get_string(sql, "current_user"), 
s->base.name);
+               throw(SQL,"sql.drop_trigger",SQLSTATE(3F000) "DROP TRIGGER: 
access denied for %s to schema '%s'", stack_get_string(sql, 
mvc_bind_schema(sql, "tmp"), "current_user"), s->base.name);
 
        if ((tri = mvc_bind_trigger(sql, s, tname)) == NULL) {
                if (if_exists)
@@ -507,7 +507,7 @@ drop_table(mvc *sql, char *sname, char *
        } else if (t->system) {
                throw(SQL,"sql.droptable", SQLSTATE(42000) "DROP TABLE: cannot 
drop system table '%s'", tname);
        } else if (!mvc_schema_privs(sql, s) && !(isTempSchema(s) && 
t->persistence == SQL_LOCAL_TEMP)) {
-               throw(SQL,"sql.droptable",SQLSTATE(42000) "DROP TABLE: access 
denied for %s to schema '%s'", stack_get_string(sql, "current_user"), 
s->base.name);
+               throw(SQL,"sql.droptable",SQLSTATE(42000) "DROP TABLE: access 
denied for %s to schema '%s'", stack_get_string(sql, mvc_bind_schema(sql, 
"tmp"), "current_user"), s->base.name);
        }
        if (!drop_action && t->keys.set) {
                for (n = t->keys.set->h; n; n = n->next) {
@@ -550,7 +550,7 @@ drop_view(mvc *sql, char *sname, char *t
 
        t = mvc_bind_table(sql, ss, tname);
        if (!mvc_schema_privs(sql, ss) && !(isTempSchema(ss) && t && 
t->persistence == SQL_LOCAL_TEMP)) {
-               throw(SQL,"sql.dropview", SQLSTATE(42000) "DROP VIEW: access 
denied for %s to schema '%s'", stack_get_string(sql, "current_user"), 
ss->base.name);
+               throw(SQL,"sql.dropview", SQLSTATE(42000) "DROP VIEW: access 
denied for %s to schema '%s'", stack_get_string(sql, mvc_bind_schema(sql, 
"tmp"), "current_user"), ss->base.name);
        } else if (!t) {
                if (if_exists){
                        return MAL_SUCCEED;
@@ -599,7 +599,7 @@ drop_index(Client cntxt, mvc *sql, char 
        if (!i) {
                throw(SQL,"sql.drop_index", SQLSTATE(42S12) "DROP INDEX: no 
such index '%s'", iname);
        } else 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, "current_user"), 
s->base.name);
+               throw(SQL,"sql.drop_index", SQLSTATE(42000) "DROP INDEX: access 
denied for %s to schema '%s'", stack_get_string(sql, mvc_bind_schema(sql, 
"tmp"), "current_user"), s->base.name);
        } else {
                if (i->type == ordered_idx) {
                        sql_kc *ic = i->columns->h->data;
@@ -636,7 +636,7 @@ create_seq(mvc *sql, char *sname, char *
        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);
        } else 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, 
"current_user"), s->base.name);
+               throw(SQL,"sql.create_seq", SQLSTATE(42000) "CREATE SEQUENCE: 
insufficient privileges for '%s' in schema '%s'", stack_get_string(sql, 
mvc_bind_schema(sql, "tmp"), "current_user"), s->base.name);
        } else if (is_lng_nil(seq->start) || is_lng_nil(seq->minvalue) || 
is_lng_nil(seq->maxvalue) ||
                           is_lng_nil(seq->increment) || 
is_lng_nil(seq->cacheinc) || is_bit_nil(seq->cycle)) {
                throw(SQL,"sql.create_seq", SQLSTATE(42000) "CREATE SEQUENCE: 
sequence properties must be non-NULL");
@@ -665,7 +665,7 @@ alter_seq(mvc *sql, char *sname, char *s
        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);
        else 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, 
"current_user"), s->base.name);
+               throw(SQL,"sql.alter_seq", SQLSTATE(42000) "ALTER SEQUENCE: 
insufficient privileges for '%s' in schema '%s'", stack_get_string(sql, 
mvc_bind_schema(sql, "tmp"), "current_user"), s->base.name);
        /* if seq properties hold NULL values, then they should be ignored 
during the update */
        /* first alter the known values */
        sql_trans_alter_sequence(sql->session->tr, nseq, seq->minvalue, 
seq->maxvalue, seq->increment, seq->cacheinc, seq->cycle);
@@ -697,7 +697,7 @@ drop_seq(mvc *sql, char *sname, char *na
        if (!(seq = find_sql_sequence(s, name))) {
                throw(SQL,"sql.drop_seq", SQLSTATE(42M35) "DROP SEQUENCE: no 
such sequence '%s'", name);
        } else 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, 
"current_user"), s->base.name);
+               throw(SQL,"sql.drop_seq", SQLSTATE(42000) "DROP SEQUENCE: 
insufficient privileges for '%s' in schema '%s'", stack_get_string(sql, 
mvc_bind_schema(sql, "tmp"), "current_user"), s->base.name);
        }
        if (mvc_check_dependency(sql, seq->base.id, BEDROPPED_DEPENDENCY, NULL))
                throw(SQL,"sql.drop_seq", SQLSTATE(2B000) "DROP SEQUENCE: 
unable to drop sequence %s (there are database objects which depend on it)\n", 
seq->base.name);
@@ -727,7 +727,7 @@ drop_func(mvc *sql, char *sname, char *n
                        sql_func *func = n->data;
 
                        if (!mvc_schema_privs(sql, s)) {
-                               throw(SQL,"sql.drop_func", SQLSTATE(42000) 
"DROP %s%s: access denied for %s to schema '%s'", KF, F, stack_get_string(sql, 
"current_user"), s->base.name);
+                               throw(SQL,"sql.drop_func", SQLSTATE(42000) 
"DROP %s%s: access denied for %s to schema '%s'", KF, F, stack_get_string(sql, 
mvc_bind_schema(sql, "tmp"), "current_user"), s->base.name);
                        }
                        if (!action && mvc_check_dependency(sql, func->base.id, 
!IS_PROC(func) ? FUNC_DEPENDENCY : PROC_DEPENDENCY, NULL))
                                throw(SQL,"sql.drop_func", SQLSTATE(42000) 
"DROP %s%s: there are database objects dependent on %s%s %s;", KF, F, kf, f, 
func->base.name);
@@ -744,7 +744,7 @@ drop_func(mvc *sql, char *sname, char *n
 
                if (!mvc_schema_privs(sql, s)) {
                        list_destroy(list_func);
-                       throw(SQL,"sql.drop_func", SQLSTATE(42000) "DROP %s%s: 
access denied for %s to schema '%s'", KF, F, stack_get_string(sql, 
"current_user"), s->base.name);
+                       throw(SQL,"sql.drop_func", SQLSTATE(42000) "DROP %s%s: 
access denied for %s to schema '%s'", KF, F, stack_get_string(sql, 
mvc_bind_schema(sql, "tmp"), "current_user"), s->base.name);
                }
                for (n = list_func->h; n; n = n->next) {
                        sql_func *func = n->data;
@@ -845,7 +845,7 @@ alter_table(Client cntxt, mvc *sql, char
        if ((nt = mvc_bind_table(sql, s, t->base.name)) == NULL) {
                throw(SQL,"sql.alter_table", SQLSTATE(42S02) "ALTER TABLE: no 
such table '%s'", t->base.name);
        } else 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, 
"current_user"), s->base.name);
+               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, "tmp"), "current_user"), s->base.name);
        }
 
        /* First check if all the changes are allowed */
@@ -1034,7 +1034,7 @@ SQLcreate_schema(Client cntxt, MalBlkPtr
                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, "current_user"));
+               throw(SQL,"sql.create_schema", SQLSTATE(42000) "CREATE SCHEMA: 
insufficient privileges for user '%s'", stack_get_string(sql, 
mvc_bind_schema(sql, "tmp"), "current_user"));
        }
        if (mvc_bind_schema(sql, sname)) {
                throw(SQL,"sql.create_schema", SQLSTATE(3F000) "CREATE SCHEMA: 
name '%s' already in use", sname);
@@ -1061,7 +1061,7 @@ SQLdrop_schema(Client cntxt, MalBlkPtr m
                if (!if_exists)
                        throw(SQL,"sql.drop_schema",SQLSTATE(3F000) "DROP 
SCHEMA: name %s does not exist", sname);
        } else 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, "current_user"), 
s->base.name);
+               throw(SQL,"sql.drop_schema",SQLSTATE(42000) "DROP SCHEMA: 
access denied for %s to schema '%s'", stack_get_string(sql, 
mvc_bind_schema(sql, "tmp"), "current_user"), s->base.name);
        } else if (s == cur_schema(sql)) {
                throw(SQL,"sql.drop_schema",SQLSTATE(42000) "DROP SCHEMA: 
cannot drop current schema");
        } else if (s->system) {
@@ -1180,7 +1180,7 @@ SQLcreate_type(Client cntxt, MalBlkPtr m
                s = cur_schema(sql);
 
        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, "current_user"), 
s->base.name);
+               throw(SQL,"sql.create_type", SQLSTATE(42000) "CREATE TYPE: 
access denied for %s to schema '%s'", stack_get_string(sql, 
mvc_bind_schema(sql, "tmp"), "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))
@@ -1206,7 +1206,7 @@ SQLdrop_type(Client cntxt, MalBlkPtr mb,
                s = cur_schema(sql);
 
        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, "current_user"), 
s->base.name);
+               throw(SQL,"sql.drop_type", SQLSTATE(42000) "DROP TYPE:  access 
denied for %s to schema '%s'", stack_get_string(sql, mvc_bind_schema(sql, 
"tmp"), "current_user"), s->base.name);
        else if (!(t = schema_bind_type(sql, s, name)))
                throw(SQL,"sql.drop_type", SQLSTATE(3F000) "DROP TYPE: type 
'%s' does not exist", name);
        else if (!drop_action && mvc_check_dependency(sql, t->base.id, 
TYPE_DEPENDENCY, NULL))
@@ -1611,7 +1611,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(3F000) "ALTER SCHEMA: 
access denied for %s to schema '%s'", stack_get_string(sql, "current_user"), 
old_name);
+               throw(SQL, "sql.rename_schema", SQLSTATE(3F000) "ALTER SCHEMA: 
access denied for %s to schema '%s'", stack_get_string(sql, 
mvc_bind_schema(sql, "tmp"), "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))
@@ -1647,7 +1647,7 @@ SQLrename_table(Client cntxt, MalBlkPtr 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to