Changeset: 780a53de100b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/780a53de100b
Modified Files:
sql/backends/monet5/sql_cat.c
sql/server/sql_mvc.c
sql/storage/store_dependency.c
Branch: sch_rename_more_permissive
Log Message:
Fix lowest and highest id usage when not schema dependency checking
diffs (94 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
@@ -1150,11 +1150,19 @@ alter_table(Client cntxt, mvc *sql, char
node *n;
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);
+ 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);
+
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);
+ throw(SQL,"sql.alter_table",
+ SQLSTATE(42S02) "ALTER TABLE: no such table '%s'",
t->base.name);
sql_table *gt = NULL;
if (nt && isTempTable(nt)) {
@@ -1172,7 +1180,9 @@ alter_table(Client cntxt, mvc *sql, char
if (!i->base.new || i->base.deleted)
continue;
if (i->key && i->key->type == pkey)
- throw(SQL,"sql.alter_table",
SQLSTATE(40000) "CONSTRAINT PRIMARY KEY: a table can have only one PRIMARY
KEY\n");
+ throw(SQL,"sql.alter_table",
+ SQLSTATE(40000) "CONSTRAINT
PRIMARY KEY: a"
+ " table can have only one
PRIMARY KEY\n");
}
}
}
@@ -1191,7 +1201,8 @@ alter_table(Client cntxt, mvc *sql, char
throw(SQL,"sql.alter_table",SQLSTATE(HY013) MAL_MALLOC_FAIL);
case -2:
case -3:
-
throw(SQL,"sql.alter_table",SQLSTATE(42000) "ALTER TABLE: transaction conflict
detected");
+ throw(SQL,"sql.alter_table",
+ SQLSTATE(42000) "ALTER TABLE:
transaction conflict detected");
default:
break;
}
diff --git a/sql/server/sql_mvc.c b/sql/server/sql_mvc.c
--- a/sql/server/sql_mvc.c
+++ b/sql/server/sql_mvc.c
@@ -1422,9 +1422,8 @@ mvc_check_dependency(mvc *m, sqlid id, s
break;
case SCHEMA_DEPENDENCY:
dep_list =
sql_trans_schema_user_dependencies(m->session->tr, id);
- if (list_length(dep_list) == 0) {
+ if (list_length(dep_list) == 0)
dep_list =
sql_trans_get_dependents(m->session->tr, id, SCHEMA_DEPENDENCY, NULL);
- }
break;
case TABLE_DEPENDENCY:
dep_list = sql_trans_get_dependents(m->session->tr, id,
TABLE_DEPENDENCY, NULL);
diff --git a/sql/storage/store_dependency.c b/sql/storage/store_dependency.c
--- a/sql/storage/store_dependency.c
+++ b/sql/storage/store_dependency.c
@@ -116,7 +116,7 @@ sql_trans_get_dependents(sql_trans* tr,
void *v;
oid rid;
rids *rs;
- sqlid lowest_id = id, highest_id = lowest_id;
+ sqlid low_id = id, high_id = -1;
if (!dep_list)
return NULL;
@@ -145,14 +145,16 @@ sql_trans_get_dependents(sql_trans* tr,
return NULL;
}
if (first) {
- lowest_id = b->id;
+ low_id = b->id;
first = false;
}
- highest_id = b->id;
+ high_id = b->id;
}
}
- rs = table_api.rids_select(tr, dep_id, &lowest_id, &highest_id, NULL);
+ rs = table_api.rids_select(tr, dep_id, &low_id,
+ high_id == -1 ?
&low_id : &high_id,
+ NULL);
if (rs == NULL) {
list_destroy(dep_list);
list_destroy(schema_tables);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]