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 -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org