Changeset: 06be397123ee for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=06be397123ee
Modified Files:
        sql/server/rel_schema.c
        sql/server/rel_updates.c
Branch: default
Log Message:

Merged with Oct2020


diffs (truncated from 658 to 300 lines):

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
@@ -2489,26 +2489,26 @@ rel_rename_schema(mvc *sql, char *old_na
 }
 
 static sql_rel *
-rel_rename_table(mvc *sql, char* schema_name, char *old_name, char *new_name, 
int if_exists)
+rel_rename_table(mvc *sql, char *schema_name, char *old_name, char *new_name, 
int if_exists)
 {
-       sql_schema *s;
+       sql_schema *s = cur_schema(sql);
        sql_table *t;
        sql_rel *rel;
        list *exps;
 
-       assert(schema_name && old_name && new_name);
+       assert(old_name && new_name);
 
-       if (!(s = mvc_bind_schema(sql, schema_name))) {
+       if (schema_name && !(s = mvc_bind_schema(sql, schema_name))) {
                if (if_exists)
                        return rel_psm_block(sql->sa, new_exp_list(sql->sa));
                return sql_error(sql, 02, SQLSTATE(42S02) "ALTER TABLE: no such 
schema '%s'", schema_name);
        }
        if (!mvc_schema_privs(sql, s))
-               return sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: access 
denied for %s to schema '%s'", get_string_global_var(sql, "current_user"), 
schema_name);
+               return sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: access 
denied for %s to schema '%s'", get_string_global_var(sql, "current_user"), 
s->base.name);
        if (!(t = find_table_on_scope(sql, &s, schema_name, old_name))) {
                if (if_exists)
                        return rel_psm_block(sql->sa, new_exp_list(sql->sa));
-               return sql_error(sql, 02, SQLSTATE(42S02) "ALTER TABLE: no such 
table '%s' in schema '%s'", old_name, schema_name);
+               return sql_error(sql, 02, SQLSTATE(42S02) "ALTER TABLE: no such 
table '%s' in schema '%s'", old_name, s->base.name);
        }
        if (t->system)
                return sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: cannot 
rename a system table");
@@ -2520,13 +2520,13 @@ rel_rename_table(mvc *sql, char* schema_
                return sql_error(sql, 02, SQLSTATE(2BM37) "ALTER TABLE: unable 
to rename table '%s' (there are database objects which depend on it)", 
old_name);
        if (strNil(new_name) || *new_name == '\0')
                return sql_error(sql, 02, SQLSTATE(3F000) "ALTER TABLE: invalid 
new table name");
-       if (find_table_on_scope(sql, &s, schema_name, new_name))
-               return sql_error(sql, 02, SQLSTATE(3F000) "ALTER TABLE: there 
is a table named '%s' in schema '%s'", new_name, schema_name);
+       if (find_table_on_scope(sql, &s, s->base.name, new_name))
+               return sql_error(sql, 02, SQLSTATE(3F000) "ALTER TABLE: there 
is a table named '%s' in schema '%s'", new_name, s->base.name);
 
        rel = rel_create(sql->sa);
        exps = new_exp_list(sql->sa);
-       append(exps, exp_atom_clob(sql->sa, schema_name));
-       append(exps, exp_atom_clob(sql->sa, schema_name));
+       append(exps, exp_atom_clob(sql->sa, s->base.name));
+       append(exps, exp_atom_clob(sql->sa, s->base.name));
        append(exps, exp_atom_clob(sql->sa, old_name));
        append(exps, exp_atom_clob(sql->sa, new_name));
        rel->op = op_ddl;
@@ -2536,27 +2536,27 @@ rel_rename_table(mvc *sql, char* schema_
 }
 
 static sql_rel *
-rel_rename_column(mvc *sql, char* schema_name, char *table_name, char 
*old_name, char *new_name, int if_exists)
+rel_rename_column(mvc *sql, char *schema_name, char *table_name, char 
*old_name, char *new_name, int if_exists)
 {
-       sql_schema *s;
+       sql_schema *s = cur_schema(sql);
        sql_table *t;
        sql_column *col;
        sql_rel *rel;
        list *exps;
 
-       assert(schema_name && table_name && old_name && new_name);
+       assert(table_name && old_name && new_name);
 
-       if (!(s = mvc_bind_schema(sql, schema_name))) {
+       if (schema_name && !(s = mvc_bind_schema(sql, schema_name))) {
                if (if_exists)
                        return rel_psm_block(sql->sa, new_exp_list(sql->sa));
                return sql_error(sql, 02, SQLSTATE(42S02) "ALTER TABLE: no such 
schema '%s'", schema_name);
        }
        if (!mvc_schema_privs(sql, s))
-               return sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: access 
denied for %s to schema '%s'", get_string_global_var(sql, "current_user"), 
schema_name);
+               return sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: access 
denied for %s to schema '%s'", get_string_global_var(sql, "current_user"), 
s->base.name);
        if (!(t = find_table_on_scope(sql, &s, schema_name, table_name))) {
                if (if_exists)
                        return rel_psm_block(sql->sa, new_exp_list(sql->sa));
-               return sql_error(sql, 02, SQLSTATE(42S02) "ALTER TABLE: no such 
table '%s' in schema '%s'", table_name, schema_name);
+               return sql_error(sql, 02, SQLSTATE(42S02) "ALTER TABLE: no such 
table '%s' in schema '%s'", table_name, s->base.name);
        }
        if (t->system)
                return sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: cannot 
rename a column in a system table");
@@ -2575,7 +2575,7 @@ rel_rename_column(mvc *sql, char* schema
 
        rel = rel_create(sql->sa);
        exps = new_exp_list(sql->sa);
-       append(exps, exp_atom_clob(sql->sa, schema_name));
+       append(exps, exp_atom_clob(sql->sa, s->base.name));
        append(exps, exp_atom_clob(sql->sa, table_name));
        append(exps, exp_atom_clob(sql->sa, old_name));
        append(exps, exp_atom_clob(sql->sa, new_name));
@@ -2586,27 +2586,27 @@ rel_rename_column(mvc *sql, char* schema
 }
 
 static sql_rel *
-rel_set_table_schema(sql_query *query, char* old_schema, char *tname, char 
*new_schema, int if_exists)
+rel_set_table_schema(sql_query *query, char *old_schema, char *tname, char 
*new_schema, int if_exists)
 {
        mvc *sql = query->sql;
-       sql_schema *os, *ns;
+       sql_schema *os = cur_schema(sql), *ns;
        sql_table *ot;
        sql_rel *rel;
        list *exps;
 
-       assert(old_schema && tname && new_schema);
+       assert(tname && new_schema);
 
-       if (!(os = mvc_bind_schema(sql, old_schema))) {
+       if (old_schema && !(os = mvc_bind_schema(sql, old_schema))) {
                if (if_exists)
                        return rel_psm_block(sql->sa, new_exp_list(sql->sa));
                return sql_error(sql, 02, SQLSTATE(42S02) "ALTER TABLE: no such 
schema '%s'", old_schema);
        }
        if (!mvc_schema_privs(sql, os))
-               return sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: access 
denied for %s to schema '%s'", get_string_global_var(sql, "current_user"), 
old_schema);
+               return sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: access 
denied for %s to schema '%s'", get_string_global_var(sql, "current_user"), 
os->base.name);
        if (!(ot = find_table_on_scope(sql, &os, old_schema, tname))) {
                if (if_exists)
                        return rel_psm_block(sql->sa, new_exp_list(sql->sa));
-               return sql_error(sql, 02, SQLSTATE(42S02) "ALTER TABLE: no such 
table '%s' in schema '%s'", tname, old_schema);
+               return sql_error(sql, 02, SQLSTATE(42S02) "ALTER TABLE: no such 
table '%s' in schema '%s'", tname, os->base.name);
        }
        if (ot->system)
                return sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: cannot 
set schema of a system table");
@@ -2631,7 +2631,7 @@ rel_set_table_schema(sql_query *query, c
 
        rel = rel_create(sql->sa);
        exps = new_exp_list(sql->sa);
-       append(exps, exp_atom_clob(sql->sa, old_schema));
+       append(exps, exp_atom_clob(sql->sa, os->base.name));
        append(exps, exp_atom_clob(sql->sa, new_schema));
        append(exps, exp_atom_clob(sql->sa, tname));
        append(exps, exp_atom_clob(sql->sa, tname));
@@ -2856,24 +2856,18 @@ rel_schemas(sql_query *query, symbol *s)
                dlist *l = s->data.lval;
                char *sname = qname_schema(l->h->data.lval);
                char *tname = qname_schema_object(l->h->data.lval);
-               if (!sname)
-                       sname = cur_schema(sql)->base.name;
                ret = rel_rename_table(sql, sname, tname, 
l->h->next->data.sval, l->h->next->next->data.i_val);
        }       break;
        case SQL_RENAME_COLUMN: {
                dlist *l = s->data.lval;
                char *sname = qname_schema(l->h->data.lval);
                char *tname = qname_schema_object(l->h->data.lval);
-               if (!sname)
-                       sname = cur_schema(sql)->base.name;
                ret = rel_rename_column(sql, sname, tname, 
l->h->next->data.sval, l->h->next->next->data.sval, 
l->h->next->next->next->data.i_val);
        }       break;
        case SQL_SET_TABLE_SCHEMA: {
                dlist *l = s->data.lval;
                char *sname = qname_schema(l->h->data.lval);
                char *tname = qname_schema_object(l->h->data.lval);
-               if (!sname)
-                       sname = cur_schema(sql)->base.name;
                ret = rel_set_table_schema(query, sname, tname, 
l->h->next->data.sval, l->h->next->next->data.i_val);
        }       break;
        case SQL_CREATE_TYPE: {
diff --git a/sql/server/rel_updates.c b/sql/server/rel_updates.c
--- a/sql/server/rel_updates.c
+++ b/sql/server/rel_updates.c
@@ -1227,7 +1227,7 @@ validate_merge_update_delete(mvc *sql, s
                         (upd_token == SQL_DELETE) ? "DELETE" : "UPDATE",
                         join_rel_name ? " '" : "", join_rel_name ? 
join_rel_name : "", join_rel_name ? "'" : "",
                         alias ? "relation" : "table",
-                        alias ? alias : t->s->base.name, alias ? "" : ".", 
alias ? "" : t->base.name);
+                        alias ? alias : t->s ? t->s->base.name : "", alias ? 
"" : ".", alias ? "" : t->base.name);
        ex = exp_exception(sql->sa, ex, buf);
 
        res = rel_exception(sql->sa, groupby, NULL, 
list_append(new_exp_list(sql->sa), ex));
@@ -1252,7 +1252,8 @@ merge_into_table(sql_query *query, dlist
        if (!(t = find_table_on_scope(sql, &s, sname, tname)))
                return sql_error(sql, 02, SQLSTATE(42S02) "MERGE: no such table 
'%s'", tname);
        if (!table_privs(sql, t, PRIV_SELECT))
-               return sql_error(sql, 02, SQLSTATE(42000) "MERGE: access denied 
for %s to table '%s.%s'", get_string_global_var(sql, "current_user"), 
s->base.name, tname);
+               return sql_error(sql, 02, SQLSTATE(42000) "MERGE: access denied 
for %s to table %s%s%s'%s'",
+                                                get_string_global_var(sql, 
"current_user"), t->s ? "'":"", t->s ? t->s->base.name : "", t->s ? "'.":"", 
tname);
        if (isMergeTable(t))
                return sql_error(sql, 02, SQLSTATE(42000) "MERGE: merge 
statements not available for merge tables yet");
 
diff --git a/sql/test/pg_regress/Tests/alter_table.stable.err 
b/sql/test/pg_regress/Tests/alter_table.stable.err
--- a/sql/test/pg_regress/Tests/alter_table.stable.err
+++ b/sql/test/pg_regress/Tests/alter_table.stable.err
@@ -5,46 +5,21 @@ stderr of test 'alter_table` in director
 # 17:11:18 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=38959" "--set" 
"mapi_usock=/var/tmp/mtest-1142/.s.monetdb.38959" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/ufs/dinther/INSTALL/var/MonetDB/mTests_sql_test_pg_regress" "--set" 
"mal_listing=0"
 # 17:11:18 >  
 
-# builtin opt  gdk_dbpath = /ufs/dinther/INSTALL/var/monetdb5/dbfarm/demo
-# builtin opt  gdk_debug = 0
-# builtin opt  gdk_vmtrim = no
-# builtin opt  monet_prompt = >
-# builtin opt  monet_daemon = no
-# builtin opt  mapi_port = 50000
-# builtin opt  mapi_open = false
-# builtin opt  mapi_autosense = false
-# builtin opt  sql_optimizer = default_pipe
-# builtin opt  sql_debug = 0
-# cmdline opt  gdk_nr_threads = 0
-# cmdline opt  mapi_open = true
-# cmdline opt  mapi_port = 38959
-# cmdline opt  mapi_usock = /var/tmp/mtest-1142/.s.monetdb.38959
-# cmdline opt  monet_prompt = 
-# cmdline opt  mal_listing = 2
-# cmdline opt  gdk_dbpath = 
/ufs/dinther/INSTALL/var/MonetDB/mTests_sql_test_pg_regress
-# cmdline opt  mal_listing = 0
-# cmdline opt  gdk_debug = 536870922
-
-
-MAPI  = (monetdb) /var/tmp/mtest-12131/.s.monetdb.33576
-QUERY = ALTER TABLE tmp RENAME TO tmp_new2;
-ERROR = !ALTER TABLE: no such table 'tmp' in schema 'sys'
+MAPI  = (monetdb) /var/tmp/mtest-501393/.s.monetdb.38008
+QUERY = SELECT * FROM tmp;             -- should fail
+ERROR = !SELECT: no such table 'tmp'
 CODE  = 42S02
-MAPI  = (monetdb) /var/tmp/mtest-30274/.s.monetdb.37685
-QUERY = SELECT * FROM tmp_new2;
-ERROR = !SELECT: no such table 'tmp_new2'
-CODE  = 42S02
-MAPI  = (monetdb) /var/tmp/mtest-12131/.s.monetdb.33576
-QUERY = DROP TABLE tmp_new2;
-ERROR = !DROP TABLE: no such table 'tmp_new2'
+MAPI  = (monetdb) /var/tmp/mtest-501393/.s.monetdb.38008
+QUERY = DROP TABLE tmp;
+ERROR = !DROP TABLE: no such table 'tmp'
 CODE  = 42S02
 MAPI  = (monetdb) /var/tmp/mtest-30274/.s.monetdb.37685
 QUERY = ALTER INDEX onek_unique1 RENAME TO tmp_onek_unique1;
-ERROR = !syntax error, unexpected INDEX, expecting USER or SEQUENCE or SCHEMA 
or TABLE in: "alter index"
+ERROR = !syntax error in: "alter index"
 CODE  = 42000
 MAPI  = (monetdb) /var/tmp/mtest-30274/.s.monetdb.37685
 QUERY = ALTER INDEX tmp_onek_unique1 RENAME TO onek_unique1;
-ERROR = !syntax error, unexpected INDEX, expecting USER or SEQUENCE or SCHEMA 
or TABLE in: "alter index"
+ERROR = !syntax error in: "alter index"
 CODE  = 42000
 MAPI  = (monetdb) /var/tmp/mtest-340533/.s.monetdb.37832
 QUERY = ALTER TABLE tmp_view RENAME TO tmp_view_new;
@@ -111,19 +86,19 @@ ERROR = !CONSTRAINT FOREIGN KEY: the typ
 CODE  = 42000
 MAPI  = (monetdb) /var/tmp/mtest-30274/.s.monetdb.37685
 QUERY = alter table atacc1 add constraint atacc_test1 check (test>3);
-ERROR = !syntax error, unexpected CHECK, expecting FOREIGN or PRIMARY or 
UNIQUE in: "alter table atacc1 add constraint atacc_test1 check"
+ERROR = !syntax error in: "alter table atacc1 add constraint atacc_test1 check"
 CODE  = 42000
 MAPI  = (monetdb) /var/tmp/mtest-30274/.s.monetdb.37685
 QUERY = alter table atacc1 add constraint atacc_test1 check (test>3);
-ERROR = !syntax error, unexpected CHECK, expecting FOREIGN or PRIMARY or 
UNIQUE in: "alter table atacc1 add constraint atacc_test1 check"
+ERROR = !syntax error in: "alter table atacc1 add constraint atacc_test1 check"
 CODE  = 42000
 MAPI  = (monetdb) /var/tmp/mtest-30274/.s.monetdb.37685
 QUERY = alter table atacc1 add constraint atacc_test1 check (test1>3);
-ERROR = !syntax error, unexpected CHECK, expecting FOREIGN or PRIMARY or 
UNIQUE in: "alter table atacc1 add constraint atacc_test1 check"
+ERROR = !syntax error in: "alter table atacc1 add constraint atacc_test1 check"
 CODE  = 42000
 MAPI  = (monetdb) /var/tmp/mtest-30274/.s.monetdb.37685
 QUERY = alter table atacc1 add constraint atacc_test1 check 
(test+test2<test3*4);
-ERROR = !syntax error, unexpected CHECK, expecting FOREIGN or PRIMARY or 
UNIQUE in: "alter table atacc1 add constraint atacc_test1 check"
+ERROR = !syntax error in: "alter table atacc1 add constraint atacc_test1 check"
 CODE  = 42000
 MAPI  = (monetdb) /var/tmp/mtest-12928/.s.monetdb.38284
 QUERY = create table atacc1 (test int check (test>3), test2 int);
@@ -131,7 +106,7 @@ ERROR = !CONSTRAINT CHECK: check constra
 CODE  = 42000
 MAPI  = (monetdb) /var/tmp/mtest-12928/.s.monetdb.38284
 QUERY = alter table atacc1 add check (test2>test);
-ERROR = !syntax error, unexpected CHECK, expecting FOREIGN or PRIMARY or 
UNIQUE in: "alter table atacc1 add check"
+ERROR = !syntax error in: "alter table atacc1 add check"
 CODE  = 42000
 MAPI  = (monetdb) /var/tmp/mtest-12928/.s.monetdb.38284
 QUERY = insert into atacc1 (test2, test) values (3, 4);
@@ -143,11 +118,11 @@ ERROR = !DROP TABLE: no such table 'atac
 CODE  = 42S02
 MAPI  = (monetdb) /var/tmp/mtest-12928/.s.monetdb.38284
 QUERY = alter table atacc2 add constraint foo check (test2>0);
-ERROR = !syntax error, unexpected CHECK, expecting FOREIGN or PRIMARY or 
UNIQUE in: "alter table atacc2 add constraint foo check"
+ERROR = !syntax error in: "alter table atacc2 add constraint foo check"
 CODE  = 42000
 MAPI  = (monetdb) /var/tmp/mtest-30274/.s.monetdb.37685
 QUERY = alter table /* only */ atacc2 add constraint foo check (test2>0);
-ERROR = !syntax error, unexpected CHECK, expecting FOREIGN or PRIMARY or 
UNIQUE in: "alter table /* only */ atacc2 add constraint foo check"
+ERROR = !syntax error in: "alter table /* only */ atacc2 add constraint foo 
check"
 CODE  = 42000
 MAPI  = (monetdb) /var/tmp/mtest-30274/.s.monetdb.37685
 QUERY = insert into atacc1 (test) values (2);
@@ -231,7 +206,7 @@ ERROR = !INSERT INTO: NOT NULL constrain
 CODE  = 40002
 MAPI  = (monetdb) /var/tmp/mtest-225531/.s.monetdb.33874
 QUERY = alter table pg_class alter column relname drop not null;
-ERROR = !syntax error, unexpected NOT, expecting DEFAULT in: "alter table 
pg_class alter column relname drop not null"
+ERROR = !syntax error in: "alter table pg_class alter column relname drop not 
null"
 CODE  = 42000
 MAPI  = (monetdb) /var/tmp/mtest-30274/.s.monetdb.37685
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to