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

Reply via email to