Changeset: b3eafd3caebb for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b3eafd3caebb
Modified Files:
        sql/backends/monet5/sql_upgrades.c
        sql/scripts/21_dependency_views.sql
        
sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out
        sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/emptydb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out
        sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
        sql/test/emptydb/Tests/check.stable.out
        sql/test/emptydb/Tests/check.stable.out.32bit
        sql/test/emptydb/Tests/check.stable.out.int128
        
sql/test/testdb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-previous-upgrade-chain/Tests/upgrade.stable.out
        sql/test/testdb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/testdb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-previous-upgrade/Tests/upgrade.stable.out
        sql/test/testdb-previous-upgrade/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade/Tests/upgrade.stable.out
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
Branch: ustr
Log Message:

Updated sys.ids view for distinct string column.


diffs (truncated from 1305 to 300 lines):

diff --git a/sql/backends/monet5/sql_upgrades.c 
b/sql/backends/monet5/sql_upgrades.c
--- a/sql/backends/monet5/sql_upgrades.c
+++ b/sql/backends/monet5/sql_upgrades.c
@@ -5549,6 +5549,61 @@ sql_update_default(Client c, mvc *sql, s
                }
        }
        res_table_destroy(output);
+       if (err != MAL_SUCCEED)
+               return err;
+
+       err = SQLstatementIntern(c, "select id from sys._tables where name = 
'ids' and schema_id = 2000 and query like '%''distinct string column''%';\n", 
"update", true, false, &output);
+       if (err)
+               return err;
+       b = BATdescriptor(output->cols[0].b);
+       if (b != NULL) {
+               if (BATcount(b) == 0) {
+                       sql_table *t;
+                       t = mvc_bind_table(sql, s, "ids");
+                       t->system = 0;
+                       t = mvc_bind_table(sql, s, "dependencies_vw");
+                       t->system = 0;
+                       const char query[] =
+                               "drop view sys.dependencies_vw;\n"
+                               "drop view sys.ids;\n"
+                               "CREATE VIEW sys.ids (id, name, schema_id, 
table_id, table_name, obj_type, sys_table, system) AS\n"
+                               "SELECT id, name, cast(null as int) as 
schema_id, cast(null as int) as table_id, cast(null as varchar(124)) as 
table_name, 'author' AS obj_type, 'sys.auths' AS sys_table, (name in 
('public','sysadmin','monetdb','.snapshot')) AS system FROM sys.auths UNION 
ALL\n"
+                               "SELECT id, name, cast(null as int) as 
schema_id, cast(null as int) as table_id, cast(null as varchar(124)) as 
table_name, ifthenelse(system, 'system schema', 'schema'), 'sys.schemas', 
system FROM sys.schemas UNION ALL\n"
+                               "SELECT t.id, name, t.schema_id, t.id as 
table_id, t.name as table_name, cast(lower(tt.table_type_name) as varchar(40)), 
'sys.tables', t.system FROM sys.tables t left outer join sys.table_types tt on 
t.type = tt.table_type_id UNION ALL\n"
+                               "SELECT c.id, c.name, t.schema_id, c.table_id, 
t.name as table_name, ifthenelse(t.system, 'system column', 'column'), 
'sys._columns', t.system FROM sys._columns c JOIN sys._tables t ON c.table_id = 
t.id UNION ALL\n"
+                               "SELECT c.id, c.name, t.schema_id, c.table_id, 
t.name as table_name, 'column', 'tmp._columns', t.system FROM tmp._columns c 
JOIN tmp._tables t ON c.table_id = t.id UNION ALL\n"
+                               "SELECT k.id, k.name, t.schema_id, k.table_id, 
t.name as table_name, ifthenelse(t.system, 'system key', 'key'), 'sys.keys', 
t.system FROM sys.keys k JOIN sys._tables t ON k.table_id = t.id UNION ALL\n"
+                               "SELECT k.id, k.name, t.schema_id, k.table_id, 
t.name as table_name, 'key', 'tmp.keys', t.system FROM tmp.keys k JOIN 
tmp._tables t ON k.table_id = t.id UNION ALL\n"
+                               "SELECT i.id, i.name, t.schema_id, i.table_id, 
t.name as table_name, ifthenelse(t.system, 'system index', 'index'), 
'sys.idxs', t.system FROM sys.idxs i JOIN sys._tables t ON i.table_id = t.id 
UNION ALL\n"
+                               "SELECT i.id, i.name, t.schema_id, i.table_id, 
t.name as table_name, 'index' , 'tmp.idxs', t.system FROM tmp.idxs i JOIN 
tmp._tables t ON i.table_id = t.id UNION ALL\n"
+                               "SELECT g.id, g.name, t.schema_id, g.table_id, 
t.name as table_name, ifthenelse(t.system, 'system trigger', 'trigger'), 
'sys.triggers', t.system FROM sys.triggers g JOIN sys._tables t ON g.table_id = 
t.id UNION ALL\n"
+                               "SELECT g.id, g.name, t.schema_id, g.table_id, 
t.name as table_name, 'trigger', 'tmp.triggers', t.system FROM tmp.triggers g 
JOIN tmp._tables t ON g.table_id = t.id UNION ALL\n"
+                               "SELECT f.id, f.name, f.schema_id, cast(null as 
int) as table_id, cast(null as varchar(124)) as table_name, 
cast(ifthenelse(f.system, 'system ', '') || lower(ft.function_type_keyword) as 
varchar(40)), 'sys.functions', f.system FROM sys.functions f left outer join 
sys.function_types ft on f.type = ft.function_type_id UNION ALL\n"
+                               "SELECT a.id, a.name, f.schema_id, a.func_id as 
table_id, f.name as table_name, cast(ifthenelse(f.system, 'system ', '') || 
lower(ft.function_type_keyword) || ' arg' as varchar(44)), 'sys.args', f.system 
FROM sys.args a JOIN sys.functions f ON a.func_id = f.id left outer join 
sys.function_types ft on f.type = ft.function_type_id UNION ALL\n"
+                               "SELECT id, name, schema_id, cast(null as int) 
as table_id, cast(null as varchar(124)) as table_name, 'sequence', 
'sys.sequences', false FROM sys.sequences UNION ALL\n"
+                               "SELECT o.id, o.name, pt.schema_id, pt.id, 
pt.name, 'partition of merge table', 'sys.objects', false FROM sys.objects o 
JOIN sys._tables pt ON o.sub = pt.id JOIN sys._tables mt ON o.nr = mt.id WHERE 
mt.type = 3 UNION ALL\n"
+                               "SELECT id, sqlname, schema_id, cast(null as 
int) as table_id, cast(null as varchar(124)) as table_name, 'type', 
'sys.types', (sqlname in ('inet','json','url','uuid','inet4','inet6')) FROM 
sys.types UNION ALL\n"
+                               "SELECT o.id, o.name, s.id, cast(null as int), 
cast(null as varchar(124)), 'distinct string column', 'sys.objects', false FROM 
sys.objects o, sys.schemas s WHERE o.nr = s.id\n"
+                               " ORDER BY id;\n"
+                               "GRANT SELECT ON sys.ids TO PUBLIC;\n"
+                               "CREATE VIEW sys.dependencies_vw AS\n"
+                               "SELECT d.id, i1.obj_type, i1.name,\n"
+                               " d.depend_id as used_by_id, i2.obj_type as 
used_by_obj_type, i2.name as used_by_name,\n"
+                               " d.depend_type, dt.dependency_type_name\n"
+                               " FROM sys.dependencies d\n"
+                               " JOIN sys.ids i1 ON d.id = i1.id\n"
+                               " JOIN sys.ids i2 ON d.depend_id = i2.id\n"
+                               " JOIN sys.dependency_types dt ON d.depend_type 
= dt.dependency_type_id\n"
+                               " ORDER BY id, depend_id;\n"
+                               "GRANT SELECT ON sys.dependencies_vw TO 
PUBLIC;\n"
+                               "update sys._tables set system = true where not 
system and schema_id = 2000 and name in ('dependencies_vw', 'ids');\n";
+                       printf("Running database upgrade commands:\n%s\n", 
query);
+                       fflush(stdout);
+                       err = SQLstatementIntern(c, query, "update", true, 
false, NULL);
+               }
+               BBPreclaim(b);
+       }
+       res_table_destroy(output);
 
        return err;
 }
diff --git a/sql/scripts/21_dependency_views.sql 
b/sql/scripts/21_dependency_views.sql
--- a/sql/scripts/21_dependency_views.sql
+++ b/sql/scripts/21_dependency_views.sql
@@ -27,7 +27,8 @@ SELECT f.id, f.name, f.schema_id, cast(n
 SELECT a.id, a.name, f.schema_id, a.func_id as table_id, f.name as table_name, 
cast(ifthenelse(f.system, 'system ', '') || lower(ft.function_type_keyword) || 
' arg' as varchar(44)), 'sys.args', f.system FROM sys.args a JOIN sys.functions 
f ON a.func_id = f.id left outer join sys.function_types ft on f.type = 
ft.function_type_id UNION ALL
 SELECT id, name, schema_id, cast(null as int) as table_id, cast(null as 
varchar(124)) as table_name, 'sequence', 'sys.sequences', false FROM 
sys.sequences UNION ALL
 SELECT o.id, o.name, pt.schema_id, pt.id, pt.name, 'partition of merge table', 
'sys.objects', false FROM sys.objects o JOIN sys._tables pt ON o.sub = pt.id 
JOIN sys._tables mt ON o.nr = mt.id WHERE mt.type = 3 UNION ALL
-SELECT id, sqlname, schema_id, cast(null as int) as table_id, cast(null as 
varchar(124)) as table_name, 'type', 'sys.types', (sqlname in 
('inet','json','url','uuid','inet4','inet6')) FROM sys.types
+SELECT id, sqlname, schema_id, cast(null as int) as table_id, cast(null as 
varchar(124)) as table_name, 'type', 'sys.types', (sqlname in 
('inet','json','url','uuid','inet4','inet6')) FROM sys.types UNION ALL
+SELECT o.id, o.name, s.id, cast(null as int), cast(null as varchar(124)), 
'distinct string column', 'sys.objects', false FROM sys.objects o, sys.schemas 
s WHERE o.nr = s.id
  ORDER BY id;
 /* do not include: SELECT id, 'object', name FROM sys.objects; as it has 
duplicates with keys, columns, etc */
 /* do not include: SELECT id, 'object', name FROM tmp.objects; as it has 
duplicates with keys, columns, etc */
diff --git 
a/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128 
b/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
--- 
a/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
+++ 
b/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
@@ -382,3 +382,38 @@ INSERT INTO sys.dependency_types VALUES 
 COMMIT;
 ALTER TABLE sys.dependency_types SET READ ONLY;
 
+Running database upgrade commands:
+drop view sys.dependencies_vw;
+drop view sys.ids;
+CREATE VIEW sys.ids (id, name, schema_id, table_id, table_name, obj_type, 
sys_table, system) AS
+SELECT id, name, cast(null as int) as schema_id, cast(null as int) as 
table_id, cast(null as varchar(124)) as table_name, 'author' AS obj_type, 
'sys.auths' AS sys_table, (name in ('public','sysadmin','monetdb','.snapshot')) 
AS system FROM sys.auths UNION ALL
+SELECT id, name, cast(null as int) as schema_id, cast(null as int) as 
table_id, cast(null as varchar(124)) as table_name, ifthenelse(system, 'system 
schema', 'schema'), 'sys.schemas', system FROM sys.schemas UNION ALL
+SELECT t.id, name, t.schema_id, t.id as table_id, t.name as table_name, 
cast(lower(tt.table_type_name) as varchar(40)), 'sys.tables', t.system FROM 
sys.tables t left outer join sys.table_types tt on t.type = tt.table_type_id 
UNION ALL
+SELECT c.id, c.name, t.schema_id, c.table_id, t.name as table_name, 
ifthenelse(t.system, 'system column', 'column'), 'sys._columns', t.system FROM 
sys._columns c JOIN sys._tables t ON c.table_id = t.id UNION ALL
+SELECT c.id, c.name, t.schema_id, c.table_id, t.name as table_name, 'column', 
'tmp._columns', t.system FROM tmp._columns c JOIN tmp._tables t ON c.table_id = 
t.id UNION ALL
+SELECT k.id, k.name, t.schema_id, k.table_id, t.name as table_name, 
ifthenelse(t.system, 'system key', 'key'), 'sys.keys', t.system FROM sys.keys k 
JOIN sys._tables t ON k.table_id = t.id UNION ALL
+SELECT k.id, k.name, t.schema_id, k.table_id, t.name as table_name, 'key', 
'tmp.keys', t.system FROM tmp.keys k JOIN tmp._tables t ON k.table_id = t.id 
UNION ALL
+SELECT i.id, i.name, t.schema_id, i.table_id, t.name as table_name, 
ifthenelse(t.system, 'system index', 'index'), 'sys.idxs', t.system FROM 
sys.idxs i JOIN sys._tables t ON i.table_id = t.id UNION ALL
+SELECT i.id, i.name, t.schema_id, i.table_id, t.name as table_name, 'index' , 
'tmp.idxs', t.system FROM tmp.idxs i JOIN tmp._tables t ON i.table_id = t.id 
UNION ALL
+SELECT g.id, g.name, t.schema_id, g.table_id, t.name as table_name, 
ifthenelse(t.system, 'system trigger', 'trigger'), 'sys.triggers', t.system 
FROM sys.triggers g JOIN sys._tables t ON g.table_id = t.id UNION ALL
+SELECT g.id, g.name, t.schema_id, g.table_id, t.name as table_name, 'trigger', 
'tmp.triggers', t.system FROM tmp.triggers g JOIN tmp._tables t ON g.table_id = 
t.id UNION ALL
+SELECT f.id, f.name, f.schema_id, cast(null as int) as table_id, cast(null as 
varchar(124)) as table_name, cast(ifthenelse(f.system, 'system ', '') || 
lower(ft.function_type_keyword) as varchar(40)), 'sys.functions', f.system FROM 
sys.functions f left outer join sys.function_types ft on f.type = 
ft.function_type_id UNION ALL
+SELECT a.id, a.name, f.schema_id, a.func_id as table_id, f.name as table_name, 
cast(ifthenelse(f.system, 'system ', '') || lower(ft.function_type_keyword) || 
' arg' as varchar(44)), 'sys.args', f.system FROM sys.args a JOIN sys.functions 
f ON a.func_id = f.id left outer join sys.function_types ft on f.type = 
ft.function_type_id UNION ALL
+SELECT id, name, schema_id, cast(null as int) as table_id, cast(null as 
varchar(124)) as table_name, 'sequence', 'sys.sequences', false FROM 
sys.sequences UNION ALL
+SELECT o.id, o.name, pt.schema_id, pt.id, pt.name, 'partition of merge table', 
'sys.objects', false FROM sys.objects o JOIN sys._tables pt ON o.sub = pt.id 
JOIN sys._tables mt ON o.nr = mt.id WHERE mt.type = 3 UNION ALL
+SELECT id, sqlname, schema_id, cast(null as int) as table_id, cast(null as 
varchar(124)) as table_name, 'type', 'sys.types', (sqlname in 
('inet','json','url','uuid','inet4','inet6')) FROM sys.types UNION ALL
+SELECT o.id, o.name, s.id, cast(null as int), cast(null as varchar(124)), 
'distinct string column', 'sys.objects', false FROM sys.objects o, sys.schemas 
s WHERE o.nr = s.id
+ ORDER BY id;
+GRANT SELECT ON sys.ids TO PUBLIC;
+CREATE VIEW sys.dependencies_vw AS
+SELECT d.id, i1.obj_type, i1.name,
+ d.depend_id as used_by_id, i2.obj_type as used_by_obj_type, i2.name as 
used_by_name,
+ d.depend_type, dt.dependency_type_name
+ FROM sys.dependencies d
+ JOIN sys.ids i1 ON d.id = i1.id
+ JOIN sys.ids i2 ON d.depend_id = i2.id
+ JOIN sys.dependency_types dt ON d.depend_type = dt.dependency_type_id
+ ORDER BY id, depend_id;
+GRANT SELECT ON sys.dependencies_vw TO PUBLIC;
+update sys._tables set system = true where not system and schema_id = 2000 and 
name in ('dependencies_vw', 'ids');
+
diff --git a/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out 
b/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out
--- a/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out
+++ b/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out
@@ -382,3 +382,38 @@ INSERT INTO sys.dependency_types VALUES 
 COMMIT;
 ALTER TABLE sys.dependency_types SET READ ONLY;
 
+Running database upgrade commands:
+drop view sys.dependencies_vw;
+drop view sys.ids;
+CREATE VIEW sys.ids (id, name, schema_id, table_id, table_name, obj_type, 
sys_table, system) AS
+SELECT id, name, cast(null as int) as schema_id, cast(null as int) as 
table_id, cast(null as varchar(124)) as table_name, 'author' AS obj_type, 
'sys.auths' AS sys_table, (name in ('public','sysadmin','monetdb','.snapshot')) 
AS system FROM sys.auths UNION ALL
+SELECT id, name, cast(null as int) as schema_id, cast(null as int) as 
table_id, cast(null as varchar(124)) as table_name, ifthenelse(system, 'system 
schema', 'schema'), 'sys.schemas', system FROM sys.schemas UNION ALL
+SELECT t.id, name, t.schema_id, t.id as table_id, t.name as table_name, 
cast(lower(tt.table_type_name) as varchar(40)), 'sys.tables', t.system FROM 
sys.tables t left outer join sys.table_types tt on t.type = tt.table_type_id 
UNION ALL
+SELECT c.id, c.name, t.schema_id, c.table_id, t.name as table_name, 
ifthenelse(t.system, 'system column', 'column'), 'sys._columns', t.system FROM 
sys._columns c JOIN sys._tables t ON c.table_id = t.id UNION ALL
+SELECT c.id, c.name, t.schema_id, c.table_id, t.name as table_name, 'column', 
'tmp._columns', t.system FROM tmp._columns c JOIN tmp._tables t ON c.table_id = 
t.id UNION ALL
+SELECT k.id, k.name, t.schema_id, k.table_id, t.name as table_name, 
ifthenelse(t.system, 'system key', 'key'), 'sys.keys', t.system FROM sys.keys k 
JOIN sys._tables t ON k.table_id = t.id UNION ALL
+SELECT k.id, k.name, t.schema_id, k.table_id, t.name as table_name, 'key', 
'tmp.keys', t.system FROM tmp.keys k JOIN tmp._tables t ON k.table_id = t.id 
UNION ALL
+SELECT i.id, i.name, t.schema_id, i.table_id, t.name as table_name, 
ifthenelse(t.system, 'system index', 'index'), 'sys.idxs', t.system FROM 
sys.idxs i JOIN sys._tables t ON i.table_id = t.id UNION ALL
+SELECT i.id, i.name, t.schema_id, i.table_id, t.name as table_name, 'index' , 
'tmp.idxs', t.system FROM tmp.idxs i JOIN tmp._tables t ON i.table_id = t.id 
UNION ALL
+SELECT g.id, g.name, t.schema_id, g.table_id, t.name as table_name, 
ifthenelse(t.system, 'system trigger', 'trigger'), 'sys.triggers', t.system 
FROM sys.triggers g JOIN sys._tables t ON g.table_id = t.id UNION ALL
+SELECT g.id, g.name, t.schema_id, g.table_id, t.name as table_name, 'trigger', 
'tmp.triggers', t.system FROM tmp.triggers g JOIN tmp._tables t ON g.table_id = 
t.id UNION ALL
+SELECT f.id, f.name, f.schema_id, cast(null as int) as table_id, cast(null as 
varchar(124)) as table_name, cast(ifthenelse(f.system, 'system ', '') || 
lower(ft.function_type_keyword) as varchar(40)), 'sys.functions', f.system FROM 
sys.functions f left outer join sys.function_types ft on f.type = 
ft.function_type_id UNION ALL
+SELECT a.id, a.name, f.schema_id, a.func_id as table_id, f.name as table_name, 
cast(ifthenelse(f.system, 'system ', '') || lower(ft.function_type_keyword) || 
' arg' as varchar(44)), 'sys.args', f.system FROM sys.args a JOIN sys.functions 
f ON a.func_id = f.id left outer join sys.function_types ft on f.type = 
ft.function_type_id UNION ALL
+SELECT id, name, schema_id, cast(null as int) as table_id, cast(null as 
varchar(124)) as table_name, 'sequence', 'sys.sequences', false FROM 
sys.sequences UNION ALL
+SELECT o.id, o.name, pt.schema_id, pt.id, pt.name, 'partition of merge table', 
'sys.objects', false FROM sys.objects o JOIN sys._tables pt ON o.sub = pt.id 
JOIN sys._tables mt ON o.nr = mt.id WHERE mt.type = 3 UNION ALL
+SELECT id, sqlname, schema_id, cast(null as int) as table_id, cast(null as 
varchar(124)) as table_name, 'type', 'sys.types', (sqlname in 
('inet','json','url','uuid','inet4','inet6')) FROM sys.types UNION ALL
+SELECT o.id, o.name, s.id, cast(null as int), cast(null as varchar(124)), 
'distinct string column', 'sys.objects', false FROM sys.objects o, sys.schemas 
s WHERE o.nr = s.id
+ ORDER BY id;
+GRANT SELECT ON sys.ids TO PUBLIC;
+CREATE VIEW sys.dependencies_vw AS
+SELECT d.id, i1.obj_type, i1.name,
+ d.depend_id as used_by_id, i2.obj_type as used_by_obj_type, i2.name as 
used_by_name,
+ d.depend_type, dt.dependency_type_name
+ FROM sys.dependencies d
+ JOIN sys.ids i1 ON d.id = i1.id
+ JOIN sys.ids i2 ON d.depend_id = i2.id
+ JOIN sys.dependency_types dt ON d.depend_type = dt.dependency_type_id
+ ORDER BY id, depend_id;
+GRANT SELECT ON sys.dependencies_vw TO PUBLIC;
+update sys._tables set system = true where not system and schema_id = 2000 and 
name in ('dependencies_vw', 'ids');
+
diff --git 
a/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128 
b/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
@@ -467,3 +467,38 @@ INSERT INTO sys.dependency_types VALUES 
 COMMIT;
 ALTER TABLE sys.dependency_types SET READ ONLY;
 
+Running database upgrade commands:
+drop view sys.dependencies_vw;
+drop view sys.ids;
+CREATE VIEW sys.ids (id, name, schema_id, table_id, table_name, obj_type, 
sys_table, system) AS
+SELECT id, name, cast(null as int) as schema_id, cast(null as int) as 
table_id, cast(null as varchar(124)) as table_name, 'author' AS obj_type, 
'sys.auths' AS sys_table, (name in ('public','sysadmin','monetdb','.snapshot')) 
AS system FROM sys.auths UNION ALL
+SELECT id, name, cast(null as int) as schema_id, cast(null as int) as 
table_id, cast(null as varchar(124)) as table_name, ifthenelse(system, 'system 
schema', 'schema'), 'sys.schemas', system FROM sys.schemas UNION ALL
+SELECT t.id, name, t.schema_id, t.id as table_id, t.name as table_name, 
cast(lower(tt.table_type_name) as varchar(40)), 'sys.tables', t.system FROM 
sys.tables t left outer join sys.table_types tt on t.type = tt.table_type_id 
UNION ALL
+SELECT c.id, c.name, t.schema_id, c.table_id, t.name as table_name, 
ifthenelse(t.system, 'system column', 'column'), 'sys._columns', t.system FROM 
sys._columns c JOIN sys._tables t ON c.table_id = t.id UNION ALL
+SELECT c.id, c.name, t.schema_id, c.table_id, t.name as table_name, 'column', 
'tmp._columns', t.system FROM tmp._columns c JOIN tmp._tables t ON c.table_id = 
t.id UNION ALL
+SELECT k.id, k.name, t.schema_id, k.table_id, t.name as table_name, 
ifthenelse(t.system, 'system key', 'key'), 'sys.keys', t.system FROM sys.keys k 
JOIN sys._tables t ON k.table_id = t.id UNION ALL
+SELECT k.id, k.name, t.schema_id, k.table_id, t.name as table_name, 'key', 
'tmp.keys', t.system FROM tmp.keys k JOIN tmp._tables t ON k.table_id = t.id 
UNION ALL
+SELECT i.id, i.name, t.schema_id, i.table_id, t.name as table_name, 
ifthenelse(t.system, 'system index', 'index'), 'sys.idxs', t.system FROM 
sys.idxs i JOIN sys._tables t ON i.table_id = t.id UNION ALL
+SELECT i.id, i.name, t.schema_id, i.table_id, t.name as table_name, 'index' , 
'tmp.idxs', t.system FROM tmp.idxs i JOIN tmp._tables t ON i.table_id = t.id 
UNION ALL
+SELECT g.id, g.name, t.schema_id, g.table_id, t.name as table_name, 
ifthenelse(t.system, 'system trigger', 'trigger'), 'sys.triggers', t.system 
FROM sys.triggers g JOIN sys._tables t ON g.table_id = t.id UNION ALL
+SELECT g.id, g.name, t.schema_id, g.table_id, t.name as table_name, 'trigger', 
'tmp.triggers', t.system FROM tmp.triggers g JOIN tmp._tables t ON g.table_id = 
t.id UNION ALL
+SELECT f.id, f.name, f.schema_id, cast(null as int) as table_id, cast(null as 
varchar(124)) as table_name, cast(ifthenelse(f.system, 'system ', '') || 
lower(ft.function_type_keyword) as varchar(40)), 'sys.functions', f.system FROM 
sys.functions f left outer join sys.function_types ft on f.type = 
ft.function_type_id UNION ALL
+SELECT a.id, a.name, f.schema_id, a.func_id as table_id, f.name as table_name, 
cast(ifthenelse(f.system, 'system ', '') || lower(ft.function_type_keyword) || 
' arg' as varchar(44)), 'sys.args', f.system FROM sys.args a JOIN sys.functions 
f ON a.func_id = f.id left outer join sys.function_types ft on f.type = 
ft.function_type_id UNION ALL
+SELECT id, name, schema_id, cast(null as int) as table_id, cast(null as 
varchar(124)) as table_name, 'sequence', 'sys.sequences', false FROM 
sys.sequences UNION ALL
+SELECT o.id, o.name, pt.schema_id, pt.id, pt.name, 'partition of merge table', 
'sys.objects', false FROM sys.objects o JOIN sys._tables pt ON o.sub = pt.id 
JOIN sys._tables mt ON o.nr = mt.id WHERE mt.type = 3 UNION ALL
+SELECT id, sqlname, schema_id, cast(null as int) as table_id, cast(null as 
varchar(124)) as table_name, 'type', 'sys.types', (sqlname in 
('inet','json','url','uuid','inet4','inet6')) FROM sys.types UNION ALL
+SELECT o.id, o.name, s.id, cast(null as int), cast(null as varchar(124)), 
'distinct string column', 'sys.objects', false FROM sys.objects o, sys.schemas 
s WHERE o.nr = s.id
+ ORDER BY id;
+GRANT SELECT ON sys.ids TO PUBLIC;
+CREATE VIEW sys.dependencies_vw AS
+SELECT d.id, i1.obj_type, i1.name,
+ d.depend_id as used_by_id, i2.obj_type as used_by_obj_type, i2.name as 
used_by_name,
+ d.depend_type, dt.dependency_type_name
+ FROM sys.dependencies d
+ JOIN sys.ids i1 ON d.id = i1.id
+ JOIN sys.ids i2 ON d.depend_id = i2.id
+ JOIN sys.dependency_types dt ON d.depend_type = dt.dependency_type_id
+ ORDER BY id, depend_id;
+GRANT SELECT ON sys.dependencies_vw TO PUBLIC;
+update sys._tables set system = true where not system and schema_id = 2000 and 
name in ('dependencies_vw', 'ids');
+
diff --git 
a/sql/test/emptydb-previous-upgrade-hge/Tests/upgrade.stable.out.int128 
b/sql/test/emptydb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
@@ -384,3 +384,38 @@ INSERT INTO sys.dependency_types VALUES 
 COMMIT;
 ALTER TABLE sys.dependency_types SET READ ONLY;
 
+Running database upgrade commands:
+drop view sys.dependencies_vw;
+drop view sys.ids;
+CREATE VIEW sys.ids (id, name, schema_id, table_id, table_name, obj_type, 
sys_table, system) AS
+SELECT id, name, cast(null as int) as schema_id, cast(null as int) as 
table_id, cast(null as varchar(124)) as table_name, 'author' AS obj_type, 
'sys.auths' AS sys_table, (name in ('public','sysadmin','monetdb','.snapshot')) 
AS system FROM sys.auths UNION ALL
+SELECT id, name, cast(null as int) as schema_id, cast(null as int) as 
table_id, cast(null as varchar(124)) as table_name, ifthenelse(system, 'system 
schema', 'schema'), 'sys.schemas', system FROM sys.schemas UNION ALL
+SELECT t.id, name, t.schema_id, t.id as table_id, t.name as table_name, 
cast(lower(tt.table_type_name) as varchar(40)), 'sys.tables', t.system FROM 
sys.tables t left outer join sys.table_types tt on t.type = tt.table_type_id 
UNION ALL
+SELECT c.id, c.name, t.schema_id, c.table_id, t.name as table_name, 
ifthenelse(t.system, 'system column', 'column'), 'sys._columns', t.system FROM 
sys._columns c JOIN sys._tables t ON c.table_id = t.id UNION ALL
+SELECT c.id, c.name, t.schema_id, c.table_id, t.name as table_name, 'column', 
'tmp._columns', t.system FROM tmp._columns c JOIN tmp._tables t ON c.table_id = 
t.id UNION ALL
+SELECT k.id, k.name, t.schema_id, k.table_id, t.name as table_name, 
ifthenelse(t.system, 'system key', 'key'), 'sys.keys', t.system FROM sys.keys k 
JOIN sys._tables t ON k.table_id = t.id UNION ALL
+SELECT k.id, k.name, t.schema_id, k.table_id, t.name as table_name, 'key', 
'tmp.keys', t.system FROM tmp.keys k JOIN tmp._tables t ON k.table_id = t.id 
UNION ALL
+SELECT i.id, i.name, t.schema_id, i.table_id, t.name as table_name, 
ifthenelse(t.system, 'system index', 'index'), 'sys.idxs', t.system FROM 
sys.idxs i JOIN sys._tables t ON i.table_id = t.id UNION ALL
+SELECT i.id, i.name, t.schema_id, i.table_id, t.name as table_name, 'index' , 
'tmp.idxs', t.system FROM tmp.idxs i JOIN tmp._tables t ON i.table_id = t.id 
UNION ALL
+SELECT g.id, g.name, t.schema_id, g.table_id, t.name as table_name, 
ifthenelse(t.system, 'system trigger', 'trigger'), 'sys.triggers', t.system 
FROM sys.triggers g JOIN sys._tables t ON g.table_id = t.id UNION ALL
+SELECT g.id, g.name, t.schema_id, g.table_id, t.name as table_name, 'trigger', 
'tmp.triggers', t.system FROM tmp.triggers g JOIN tmp._tables t ON g.table_id = 
t.id UNION ALL
+SELECT f.id, f.name, f.schema_id, cast(null as int) as table_id, cast(null as 
varchar(124)) as table_name, cast(ifthenelse(f.system, 'system ', '') || 
lower(ft.function_type_keyword) as varchar(40)), 'sys.functions', f.system FROM 
sys.functions f left outer join sys.function_types ft on f.type = 
ft.function_type_id UNION ALL
+SELECT a.id, a.name, f.schema_id, a.func_id as table_id, f.name as table_name, 
cast(ifthenelse(f.system, 'system ', '') || lower(ft.function_type_keyword) || 
' arg' as varchar(44)), 'sys.args', f.system FROM sys.args a JOIN sys.functions 
f ON a.func_id = f.id left outer join sys.function_types ft on f.type = 
ft.function_type_id UNION ALL
+SELECT id, name, schema_id, cast(null as int) as table_id, cast(null as 
varchar(124)) as table_name, 'sequence', 'sys.sequences', false FROM 
sys.sequences UNION ALL
+SELECT o.id, o.name, pt.schema_id, pt.id, pt.name, 'partition of merge table', 
'sys.objects', false FROM sys.objects o JOIN sys._tables pt ON o.sub = pt.id 
JOIN sys._tables mt ON o.nr = mt.id WHERE mt.type = 3 UNION ALL
+SELECT id, sqlname, schema_id, cast(null as int) as table_id, cast(null as 
varchar(124)) as table_name, 'type', 'sys.types', (sqlname in 
('inet','json','url','uuid','inet4','inet6')) FROM sys.types UNION ALL
+SELECT o.id, o.name, s.id, cast(null as int), cast(null as varchar(124)), 
'distinct string column', 'sys.objects', false FROM sys.objects o, sys.schemas 
s WHERE o.nr = s.id
+ ORDER BY id;
+GRANT SELECT ON sys.ids TO PUBLIC;
+CREATE VIEW sys.dependencies_vw AS
+SELECT d.id, i1.obj_type, i1.name,
+ d.depend_id as used_by_id, i2.obj_type as used_by_obj_type, i2.name as 
used_by_name,
+ d.depend_type, dt.dependency_type_name
+ FROM sys.dependencies d
+ JOIN sys.ids i1 ON d.id = i1.id
+ JOIN sys.ids i2 ON d.depend_id = i2.id
+ JOIN sys.dependency_types dt ON d.depend_type = dt.dependency_type_id
+ ORDER BY id, depend_id;
+GRANT SELECT ON sys.dependencies_vw TO PUBLIC;
+update sys._tables set system = true where not system and schema_id = 2000 and 
name in ('dependencies_vw', 'ids');
+
diff --git a/sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out 
b/sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out
--- a/sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out
+++ b/sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out
@@ -384,3 +384,38 @@ INSERT INTO sys.dependency_types VALUES 
 COMMIT;
 ALTER TABLE sys.dependency_types SET READ ONLY;
 
+Running database upgrade commands:
+drop view sys.dependencies_vw;
+drop view sys.ids;
+CREATE VIEW sys.ids (id, name, schema_id, table_id, table_name, obj_type, 
sys_table, system) AS
+SELECT id, name, cast(null as int) as schema_id, cast(null as int) as 
table_id, cast(null as varchar(124)) as table_name, 'author' AS obj_type, 
'sys.auths' AS sys_table, (name in ('public','sysadmin','monetdb','.snapshot')) 
AS system FROM sys.auths UNION ALL
+SELECT id, name, cast(null as int) as schema_id, cast(null as int) as 
table_id, cast(null as varchar(124)) as table_name, ifthenelse(system, 'system 
schema', 'schema'), 'sys.schemas', system FROM sys.schemas UNION ALL
+SELECT t.id, name, t.schema_id, t.id as table_id, t.name as table_name, 
cast(lower(tt.table_type_name) as varchar(40)), 'sys.tables', t.system FROM 
sys.tables t left outer join sys.table_types tt on t.type = tt.table_type_id 
UNION ALL
+SELECT c.id, c.name, t.schema_id, c.table_id, t.name as table_name, 
ifthenelse(t.system, 'system column', 'column'), 'sys._columns', t.system FROM 
sys._columns c JOIN sys._tables t ON c.table_id = t.id UNION ALL
+SELECT c.id, c.name, t.schema_id, c.table_id, t.name as table_name, 'column', 
'tmp._columns', t.system FROM tmp._columns c JOIN tmp._tables t ON c.table_id = 
t.id UNION ALL
+SELECT k.id, k.name, t.schema_id, k.table_id, t.name as table_name, 
ifthenelse(t.system, 'system key', 'key'), 'sys.keys', t.system FROM sys.keys k 
JOIN sys._tables t ON k.table_id = t.id UNION ALL
+SELECT k.id, k.name, t.schema_id, k.table_id, t.name as table_name, 'key', 
'tmp.keys', t.system FROM tmp.keys k JOIN tmp._tables t ON k.table_id = t.id 
UNION ALL
+SELECT i.id, i.name, t.schema_id, i.table_id, t.name as table_name, 
ifthenelse(t.system, 'system index', 'index'), 'sys.idxs', t.system FROM 
sys.idxs i JOIN sys._tables t ON i.table_id = t.id UNION ALL
+SELECT i.id, i.name, t.schema_id, i.table_id, t.name as table_name, 'index' , 
'tmp.idxs', t.system FROM tmp.idxs i JOIN tmp._tables t ON i.table_id = t.id 
UNION ALL
+SELECT g.id, g.name, t.schema_id, g.table_id, t.name as table_name, 
ifthenelse(t.system, 'system trigger', 'trigger'), 'sys.triggers', t.system 
FROM sys.triggers g JOIN sys._tables t ON g.table_id = t.id UNION ALL
+SELECT g.id, g.name, t.schema_id, g.table_id, t.name as table_name, 'trigger', 
'tmp.triggers', t.system FROM tmp.triggers g JOIN tmp._tables t ON g.table_id = 
t.id UNION ALL
+SELECT f.id, f.name, f.schema_id, cast(null as int) as table_id, cast(null as 
varchar(124)) as table_name, cast(ifthenelse(f.system, 'system ', '') || 
lower(ft.function_type_keyword) as varchar(40)), 'sys.functions', f.system FROM 
sys.functions f left outer join sys.function_types ft on f.type = 
ft.function_type_id UNION ALL
+SELECT a.id, a.name, f.schema_id, a.func_id as table_id, f.name as table_name, 
cast(ifthenelse(f.system, 'system ', '') || lower(ft.function_type_keyword) || 
' arg' as varchar(44)), 'sys.args', f.system FROM sys.args a JOIN sys.functions 
f ON a.func_id = f.id left outer join sys.function_types ft on f.type = 
ft.function_type_id UNION ALL
+SELECT id, name, schema_id, cast(null as int) as table_id, cast(null as 
varchar(124)) as table_name, 'sequence', 'sys.sequences', false FROM 
sys.sequences UNION ALL
+SELECT o.id, o.name, pt.schema_id, pt.id, pt.name, 'partition of merge table', 
'sys.objects', false FROM sys.objects o JOIN sys._tables pt ON o.sub = pt.id 
JOIN sys._tables mt ON o.nr = mt.id WHERE mt.type = 3 UNION ALL
+SELECT id, sqlname, schema_id, cast(null as int) as table_id, cast(null as 
varchar(124)) as table_name, 'type', 'sys.types', (sqlname in 
('inet','json','url','uuid','inet4','inet6')) FROM sys.types UNION ALL
+SELECT o.id, o.name, s.id, cast(null as int), cast(null as varchar(124)), 
'distinct string column', 'sys.objects', false FROM sys.objects o, sys.schemas 
s WHERE o.nr = s.id
+ ORDER BY id;
+GRANT SELECT ON sys.ids TO PUBLIC;
+CREATE VIEW sys.dependencies_vw AS
+SELECT d.id, i1.obj_type, i1.name,
+ d.depend_id as used_by_id, i2.obj_type as used_by_obj_type, i2.name as 
used_by_name,
+ d.depend_type, dt.dependency_type_name
+ FROM sys.dependencies d
+ JOIN sys.ids i1 ON d.id = i1.id
+ JOIN sys.ids i2 ON d.depend_id = i2.id
+ JOIN sys.dependency_types dt ON d.depend_type = dt.dependency_type_id
+ ORDER BY id, depend_id;
+GRANT SELECT ON sys.dependencies_vw TO PUBLIC;
+update sys._tables set system = true where not system and schema_id = 2000 and 
name in ('dependencies_vw', 'ids');
+
diff --git a/sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out.int128 
b/sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out.int128
@@ -467,3 +467,38 @@ INSERT INTO sys.dependency_types VALUES 
 COMMIT;
 ALTER TABLE sys.dependency_types SET READ ONLY;
 
+Running database upgrade commands:
+drop view sys.dependencies_vw;
+drop view sys.ids;
+CREATE VIEW sys.ids (id, name, schema_id, table_id, table_name, obj_type, 
sys_table, system) AS
+SELECT id, name, cast(null as int) as schema_id, cast(null as int) as 
table_id, cast(null as varchar(124)) as table_name, 'author' AS obj_type, 
'sys.auths' AS sys_table, (name in ('public','sysadmin','monetdb','.snapshot')) 
AS system FROM sys.auths UNION ALL
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to