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