Changeset: 28d0d9808b1a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=28d0d9808b1a
Modified Files:
        sql/backends/monet5/sql_scenario.c
        sql/server/sql_mvc.c
        sql/storage/store.c
Branch: default
Log Message:

upgrade path fixes, ie make sure the new columns are added to the catalog
                       some old need a different order number
                       and old view columns should be removed


diffs (78 lines):

diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -856,6 +856,18 @@ sql_update_default(Client c)
 
        pos += snprintf(buf + pos, bufsize - pos, "set schema \"sys\";\n");
 
+       /* cleanup columns of dropped views */
+       pos += snprintf(buf + pos, bufsize - pos, "delete from _columns where 
table_id not in (select id from _tables);\n");
+
+       /* add new columns */
+       pos += snprintf(buf + pos, bufsize - pos, "insert into _columns values( 
(select max(id)+1 from _columns), 'system', 'boolean', 1, 0, (select id from 
_tables where name = 'schemas'), NULL, true, 4, NULL);\n");
+       pos += snprintf(buf + pos, bufsize - pos, "insert into _columns values( 
(select max(id)+1 from _columns), 'varres', 'boolean', 1, 0, (select id from 
_tables where name = 'functions'), NULL, true, 7, NULL);\n");
+       pos += snprintf(buf + pos, bufsize - pos, "insert into _columns values( 
(select max(id)+1 from _columns), 'vararg', 'boolean', 1, 0, (select id from 
_tables where name = 'functions'), NULL, true, 8, NULL);\n");
+       pos += snprintf(buf + pos, bufsize - pos, "insert into _columns values( 
(select max(id)+1 from _columns), 'inout', 'tinyint', 8, 0, (select id from 
_tables where name = 'args'), NULL, true, 6, NULL);\n");
+       /* correct column numbers */
+       pos += snprintf(buf + pos, bufsize - pos, "update _columns set 
number='9' where name = 'schema_id' and table_id in (select id from _tables 
where name = 'functions');\n");
+       pos += snprintf(buf + pos, bufsize - pos, "update _columns set 
number='7' where name = 'number' and table_id in (select id from _tables where 
name = 'args');\n");
+
        /* remove table return types (#..), ie tt_generated from
         * _tables/_columns */
        pos += snprintf(buf + pos, bufsize - pos, "delete from _columns where 
table_id in (select id from _tables where name like '#%%');\n");
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
@@ -65,7 +65,7 @@ mvc_init(int debug, store_type store, in
                s = m->session->schema = mvc_bind_schema(m, "sys");
                assert(m->session->schema != NULL);
 
-               if (catalog_version) {
+               if (!first) {
                        t = mvc_bind_table(m, s, "tables");
                        mvc_drop_table(m, s, t, 0);
                        t = mvc_bind_table(m, s, "columns");
@@ -83,7 +83,7 @@ mvc_init(int debug, store_type store, in
                mvc_create_column_(m, t, "readonly", "boolean", 1);
                mvc_create_column_(m, t, "temporary", "smallint", 16);
 
-               if (catalog_version) {
+               if (!first) {
                        int pub = ROLE_PUBLIC;
                        int p = PRIV_SELECT;
                        int zero = 0;
@@ -103,15 +103,13 @@ mvc_init(int debug, store_type store, in
                mvc_create_column_(m, t, "number", "int", 32);
                mvc_create_column_(m, t, "storage", "varchar", 2048);
 
-               if (catalog_version) {
+               if (!first) {
                        int pub = ROLE_PUBLIC;
                        int p = PRIV_SELECT;
                        int zero = 0;
                        sql_table *privs = find_sql_table(s, "privileges");
                        table_funcs.table_insert(m->session->tr, privs, 
&t->base.id, &pub, &p, &zero, &zero);
-               }
-
-               if (!catalog_version) {
+               } else { 
                        sql_create_env(m, s);
                        sql_create_privileges(m, s);
                }
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -871,11 +871,9 @@ load_schema(sql_trans *tr, sqlid id, oid
                s = SA_ZNEW(tr->sa, sql_schema);
                v = table_funcs.column_find_value(tr, find_sql_column(ss, 
"name"), rid);
                base_init(tr->sa, &s->base, sid, TR_OLD, v); _DELETE(v);
-               v = table_funcs.column_find_value(tr, 
-                       find_sql_column(ss, "authorization"), rid);
+               v = table_funcs.column_find_value(tr, find_sql_column(ss, 
"authorization"), rid);
                s->auth_id = *(sqlid *)v;       _DELETE(v);
-               v = table_funcs.column_find_value(tr, 
-                       find_sql_column(tables, "system"), rid);
+               v = table_funcs.column_find_value(tr, find_sql_column(ss, 
"system"), rid);
                s->system = *(bit *)v;          _DELETE(v);
                v = table_funcs.column_find_value(tr, find_sql_column(ss, 
"owner"), rid);
                s->owner = *(sqlid *)v;         _DELETE(v);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to