Changeset: b34b0ebe43bd for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b34b0ebe43bd
Modified Files:
sql/backends/monet5/sql_upgrades.c
sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
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.int128
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
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.int128
sql/test/testdb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/testdb-previous-upgrade-hge/Tests/dump.stable.out
sql/test/testdb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-previous-upgrade/Tests/dump.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.int128
sql/test/testdb-upgrade-hge/Tests/dump.stable.out
sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade/Tests/dump.stable.out
sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
Branch: mangled
Log Message:
Fix some upgrades.
diffs (truncated from 2097 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
@@ -4717,41 +4717,19 @@ sql_update_default(Client c, mvc *sql, c
pos += snprintf(buf + pos, bufsize - pos,
"DROP FUNCTION sys.dump_database;\n"
"DROP VIEW sys.dump_comments;\n"
- "CREATE OR REPLACE VIEW sys.describe_comments AS\n"
- "SELECT\n"
- "o.id id,\n"
- "o.tpe tpe,\n"
- "o.nme fqn,\n"
- "c.remark rem\n"
- "FROM (\n"
- "SELECT id, 'SCHEMA', sys.DQ(name) FROM sys.schemas\n"
- "UNION ALL\n"
- "SELECT t.id, ifthenelse(ts.table_type_name = 'VIEW',
'VIEW', 'TABLE'), sys.FQN(s.name, t.name)\n"
- "FROM sys.schemas s JOIN sys.tables t ON s.id =
t.schema_id JOIN sys.table_types ts ON t.type = ts.table_type_id\n"
- "WHERE s.name <> 'tmp'\n"
- "UNION ALL\n"
- "SELECT c.id, 'COLUMN', sys.FQN(s.name, t.name) || '.'
|| sys.DQ(c.name) FROM sys.columns c, sys.tables t, sys.schemas s WHERE
c.table_id = t.id AND t.schema_id = s.id\n"
- "UNION ALL\n"
- "SELECT idx.id, 'INDEX', sys.FQN(s.name, idx.name) FROM
sys.idxs idx, sys._tables t, sys.schemas s WHERE idx.table_id = t.id AND
t.schema_id = s.id\n"
- "UNION ALL\n"
- "SELECT seq.id, 'SEQUENCE', sys.FQN(s.name, seq.name)
FROM sys.sequences seq, sys.schemas s WHERE seq.schema_id = s.id\n"
- "UNION ALL\n"
- "SELECT f.id, ft.function_type_keyword, sys.FQN(s.name,
f.sqlname) FROM sys.functions f, sys.function_types ft, sys.schemas s WHERE
f.type = ft.function_type_id AND f.schema_id = s.id\n"
- ") AS o(id, tpe, nme)\n"
- "JOIN sys.comments c ON c.id = o.id;\n"
- "CREATE VIEW sys.dump_comments AS\n"
- "SELECT 'COMMENT ON ' || c.tpe || ' ' || c.fqn || ' IS
' || sys.SQ(c.rem) || ';' stmt FROM sys.describe_comments c;\n"
+ "DROP VIEW sys.describe_comments;\n"
"DROP VIEW sys.describe_privileges;\n"
- "CREATE OR REPLACE VIEW sys.fully_qualified_functions AS\n"
+ "DROP VIEW sys.fully_qualified_functions;\n"
+ "CREATE VIEW sys.fully_qualified_functions AS\n"
"WITH fqn(id, tpe, sig, num) AS\n"
"(\n"
"SELECT\n"
"f.id,\n"
"ft.function_type_keyword,\n"
"CASE WHEN a.type IS NULL THEN\n"
- "s.name || '.' || f.sqlname ||
'()'\n"
+ "sys.fqn(s.name, f.sqlname) ||
'()'\n"
"ELSE\n"
- "s.name || '.' || f.sqlname ||
'(' || group_concat(sys.describe_type(a.type, a.type_digits, a.type_scale),
',') OVER (PARTITION BY f.id ORDER BY a.number) || ')'\n"
+ "sys.fqn(s.name, f.sqlname) ||
'(' || group_concat(sys.describe_type(a.type, a.type_digits, a.type_scale),
',') OVER (PARTITION BY f.id ORDER BY a.number) || ')'\n"
"END,\n"
"a.number\n"
"FROM sys.schemas s, sys.function_types ft,
sys.functions f LEFT JOIN sys.args a ON f.id = a.func_id\n"
@@ -4764,41 +4742,66 @@ sql_update_default(Client c, mvc *sql, c
"FROM\n"
"fqn fqn1 JOIN (SELECT id, max(num) FROM fqn
GROUP BY id) fqn2(id, num)\n"
"ON fqn1.id = fqn2.id AND (fqn1.num = fqn2.num
OR fqn1.num IS NULL AND fqn2.num is NULL);\n"
- "CREATE VIEW sys.describe_privileges AS\n"
- "SELECT\n"
- "CASE\n"
- "WHEN o.tpe IS NULL AND
pc.privilege_code_name = 'SELECT' THEN --GLOBAL privileges: SELECT maps to COPY
FROM\n"
- "'COPY FROM'\n"
- "WHEN o.tpe IS NULL AND
pc.privilege_code_name = 'UPDATE' THEN --GLOBAL privileges: UPDATE maps to COPY
INTO\n"
- "'COPY INTO'\n"
- "ELSE\n"
- "o.nme\n"
- "END o_nme,\n"
- "coalesce(o.tpe, 'GLOBAL') o_tpe,\n"
- "pc.privilege_code_name p_nme,\n"
- "a.name a_nme,\n"
- "g.name g_nme,\n"
- "p.grantable grantable\n"
- "FROM\n"
- "sys.privileges p LEFT JOIN\n"
- "(\n"
- "SELECT t.id, s.name || '.' || t.name
, 'TABLE'\n"
- "from sys.schemas s,
sys.tables t where s.id = t.schema_id\n"
- "UNION ALL\n"
- "SELECT c.id, s.name || '.' ||
t.name || '.' || c.name, 'COLUMN'\n"
- "FROM sys.schemas s,
sys.tables t, sys.columns c where s.id = t.schema_id AND t.id = c.table_id\n"
- "UNION ALL\n"
- "SELECT f.id, f.nme, f.tpe\n"
- "FROM
sys.fully_qualified_functions f\n"
- ") o(id, nme, tpe) ON o.id =
p.obj_id,\n"
- "sys.privilege_codes pc,\n"
- "auths a, auths g\n"
- "WHERE\n"
- "p.privileges = pc.privilege_code_id
AND\n"
- "p.auth_id = a.id AND\n"
- "p.grantor = g.id;\n"
+ "CREATE VIEW sys.describe_comments AS\n"
+ "SELECT\n"
+ "o.id id,\n"
+ "o.tpe tpe,\n"
+ "o.nme fqn,\n"
+ "c.remark rem\n"
+ "FROM (\n"
+ "SELECT id, 'SCHEMA', sys.DQ(name) FROM
sys.schemas\n"
+ "UNION ALL\n"
+ "SELECT t.id, ifthenelse(ts.table_type_name =
'VIEW', 'VIEW', 'TABLE'), sys.FQN(s.name, t.name)\n"
+ "FROM sys.schemas s JOIN sys.tables t ON s.id =
t.schema_id JOIN sys.table_types ts ON t.type = ts.table_type_id\n"
+ "WHERE s.name <> 'tmp'\n"
+ "UNION ALL\n"
+ "SELECT c.id, 'COLUMN', sys.FQN(s.name, t.name)
|| '.' || sys.DQ(c.name) FROM sys.columns c, sys.tables t, sys.schemas s WHERE
c.table_id = t.id AND t.schema_id = s.id\n"
+ "UNION ALL\n"
+ "SELECT idx.id, 'INDEX', sys.FQN(s.name,
idx.name) FROM sys.idxs idx, sys._tables t, sys.schemas s WHERE idx.table_id =
t.id AND t.schema_id = s.id\n"
+ "UNION ALL\n"
+ "SELECT seq.id, 'SEQUENCE', sys.FQN(s.name,
seq.name) FROM sys.sequences seq, sys.schemas s WHERE seq.schema_id = s.id\n"
+ "UNION ALL\n"
+ "SELECT f.id, ft.function_type_keyword, qf.nme
FROM sys.functions f, sys.function_types ft, sys.schemas s,
sys.fully_qualified_functions qf WHERE f.type = ft.function_type_id AND
f.schema_id = s.id AND qf.id = f.id\n"
+ ") AS o(id, tpe, nme)\n"
+ "JOIN sys.comments c ON c.id = o.id;\n"
+ "CREATE VIEW sys.dump_comments AS\n"
+ "SELECT 'COMMENT ON ' || c.tpe || ' ' || c.fqn || ' IS
' || sys.SQ(c.rem) || ';' stmt FROM sys.describe_comments c;\n"
+ "CREATE VIEW sys.describe_privileges AS\n"
+ "SELECT\n"
+ "CASE\n"
+ "WHEN o.tpe IS NULL AND
pc.privilege_code_name = 'SELECT' THEN --GLOBAL privileges: SELECT maps to COPY
FROM\n"
+ "'COPY FROM'\n"
+ "WHEN o.tpe IS NULL AND
pc.privilege_code_name = 'UPDATE' THEN --GLOBAL privileges: UPDATE maps to COPY
INTO\n"
+ "'COPY INTO'\n"
+ "ELSE\n"
+ "o.nme\n"
+ "END o_nme,\n"
+ "coalesce(o.tpe, 'GLOBAL') o_tpe,\n"
+ "pc.privilege_code_name p_nme,\n"
+ "a.name a_nme,\n"
+ "g.name g_nme,\n"
+ "p.grantable grantable\n"
+ "FROM\n"
+ "sys.privileges p LEFT JOIN\n"
+ "(\n"
+ "SELECT t.id, s.name || '.' || t.name ,
'TABLE'\n"
+ "from sys.schemas s, sys.tables t
where s.id = t.schema_id\n"
+ "UNION ALL\n"
+ "SELECT c.id, s.name || '.' || t.name
|| '.' || c.name, 'COLUMN'\n"
+ "FROM sys.schemas s, sys.tables t,
sys.columns c where s.id = t.schema_id AND t.id = c.table_id\n"
+ "UNION ALL\n"
+ "SELECT f.id, f.nme, f.tpe\n"
+ "FROM sys.fully_qualified_functions
f\n"
+ ") o(id, nme, tpe) ON o.id = p.obj_id,\n"
+ "sys.privilege_codes pc,\n"
+ "auths a, auths g\n"
+ "WHERE\n"
+ "p.privileges = pc.privilege_code_id AND\n"
+ "p.auth_id = a.id AND\n"
+ "p.grantor = g.id;\n"
"DROP VIEW dump_functions;\n"
- "CREATE OR REPLACE VIEW sys.describe_functions AS\n"
+ "DROP VIEW sys.describe_functions;\n"
+ "CREATE VIEW sys.describe_functions AS\n"
"WITH func_args_all(func_id, number, max_number,
func_arg) AS\n"
"(\n"
"SELECT\n"
@@ -4866,7 +4869,8 @@ sql_update_default(Client c, mvc *sql, c
"WHERE f.sqlname=functionName AND
s.name = schemaName;\n"
"END;\n"
"UPDATE sys.functions SET system = true WHERE system = false
AND sqlname in ('describe_function') and schema_id = 2000;\n"
- "CREATE OR REPLACE VIEW sys.dump_function_grants AS\n"
+ "DROP VIEW sys.dump_function_grants;\n"
+ "CREATE VIEW sys.dump_function_grants AS\n"
"WITH func_args_all(func_id, number, max_number,
func_arg) AS\n"
"(SELECT a.func_id,\n"
"a.number,\n"
@@ -4950,7 +4954,10 @@ sql_update_default(Client c, mvc *sql, c
"'dump_function_grants'\n"
");\n"
"update sys.functions set system = true where system <> true
and sqlname = 'dump_database' and schema_id = 2000;\n"
-
+ "GRANT SELECT ON sys.fully_qualified_functions TO PUBLIC;\n"
+ "GRANT SELECT ON sys.describe_comments TO PUBLIC;\n"
+ "GRANT SELECT ON sys.describe_privileges TO PUBLIC;\n"
+ "GRANT SELECT ON sys.describe_functions TO PUBLIC;\n"
);
assert(pos < bufsize);
printf("Running database upgrade commands:\n%s\n", buf);
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
@@ -5279,7 +5279,32 @@ Running database upgrade commands:
set schema "sys";
DROP FUNCTION sys.dump_database;
DROP VIEW sys.dump_comments;
-CREATE OR REPLACE VIEW sys.describe_comments AS
+DROP VIEW sys.describe_comments;
+DROP VIEW sys.describe_privileges;
+DROP VIEW sys.fully_qualified_functions;
+CREATE VIEW sys.fully_qualified_functions AS
+WITH fqn(id, tpe, sig, num) AS
+(
+SELECT
+f.id,
+ft.function_type_keyword,
+CASE WHEN a.type IS NULL THEN
+sys.fqn(s.name, f.sqlname) || '()'
+ELSE
+sys.fqn(s.name, f.sqlname) || '(' || group_concat(sys.describe_type(a.type,
a.type_digits, a.type_scale), ',') OVER (PARTITION BY f.id ORDER BY a.number)
|| ')'
+END,
+a.number
+FROM sys.schemas s, sys.function_types ft, sys.functions f LEFT JOIN sys.args
a ON f.id = a.func_id
+WHERE s.id= f.schema_id AND f.type = ft.function_type_id
+)
+SELECT
+fqn1.id id,
+fqn1.tpe tpe,
+fqn1.sig nme
+FROM
+fqn fqn1 JOIN (SELECT id, max(num) FROM fqn GROUP BY id) fqn2(id, num)
+ON fqn1.id = fqn2.id AND (fqn1.num = fqn2.num OR fqn1.num IS NULL AND fqn2.num
is NULL);
+CREATE VIEW sys.describe_comments AS
SELECT
o.id id,
o.tpe tpe,
@@ -5298,34 +5323,11 @@ SELECT idx.id, 'INDEX', sys.FQN(s.name,
UNION ALL
SELECT seq.id, 'SEQUENCE', sys.FQN(s.name, seq.name) FROM sys.sequences seq,
sys.schemas s WHERE seq.schema_id = s.id
UNION ALL
-SELECT f.id, ft.function_type_keyword, sys.FQN(s.name, f.sqlname) FROM
sys.functions f, sys.function_types ft, sys.schemas s WHERE f.type =
ft.function_type_id AND f.schema_id = s.id
+SELECT f.id, ft.function_type_keyword, qf.nme FROM sys.functions f,
sys.function_types ft, sys.schemas s, sys.fully_qualified_functions qf WHERE
f.type = ft.function_type_id AND f.schema_id = s.id AND qf.id = f.id
) AS o(id, tpe, nme)
JOIN sys.comments c ON c.id = o.id;
CREATE VIEW sys.dump_comments AS
SELECT 'COMMENT ON ' || c.tpe || ' ' || c.fqn || ' IS ' || sys.SQ(c.rem) ||
';' stmt FROM sys.describe_comments c;
-DROP VIEW sys.describe_privileges;
-CREATE OR REPLACE VIEW sys.fully_qualified_functions AS
-WITH fqn(id, tpe, sig, num) AS
-(
-SELECT
-f.id,
-ft.function_type_keyword,
-CASE WHEN a.type IS NULL THEN
-s.name || '.' || f.sqlname || '()'
-ELSE
-s.name || '.' || f.sqlname || '(' || group_concat(sys.describe_type(a.type,
a.type_digits, a.type_scale), ',') OVER (PARTITION BY f.id ORDER BY a.number)
|| ')'
-END,
-a.number
-FROM sys.schemas s, sys.function_types ft, sys.functions f LEFT JOIN sys.args
a ON f.id = a.func_id
-WHERE s.id= f.schema_id AND f.type = ft.function_type_id
-)
-SELECT
-fqn1.id id,
-fqn1.tpe tpe,
-fqn1.sig nme
-FROM
-fqn fqn1 JOIN (SELECT id, max(num) FROM fqn GROUP BY id) fqn2(id, num)
-ON fqn1.id = fqn2.id AND (fqn1.num = fqn2.num OR fqn1.num IS NULL AND fqn2.num
is NULL);
CREATE VIEW sys.describe_privileges AS
SELECT
CASE
@@ -5360,7 +5362,8 @@ p.privileges = pc.privilege_code_id AND
p.auth_id = a.id AND
p.grantor = g.id;
DROP VIEW dump_functions;
-CREATE OR REPLACE VIEW sys.describe_functions AS
+DROP VIEW sys.describe_functions;
+CREATE VIEW sys.describe_functions AS
WITH func_args_all(func_id, number, max_number, func_arg) AS
(
SELECT
@@ -5428,7 +5431,8 @@ LEFT OUTER JOIN sys.comments c ON f.id =
WHERE f.sqlname=functionName AND s.name = schemaName;
END;
UPDATE sys.functions SET system = true WHERE system = false AND sqlname in
('describe_function') and schema_id = 2000;
-CREATE OR REPLACE VIEW sys.dump_function_grants AS
+DROP VIEW sys.dump_function_grants;
+CREATE VIEW sys.dump_function_grants AS
WITH func_args_all(func_id, number, max_number, func_arg) AS
(SELECT a.func_id,
a.number,
@@ -5512,4 +5516,8 @@ UPDATE sys._tables SET system = true WHE
'dump_function_grants'
);
update sys.functions set system = true where system <> true and sqlname =
'dump_database' and schema_id = 2000;
+GRANT SELECT ON sys.fully_qualified_functions TO PUBLIC;
+GRANT SELECT ON sys.describe_comments TO PUBLIC;
+GRANT SELECT ON sys.describe_privileges TO PUBLIC;
+GRANT SELECT ON sys.describe_functions TO PUBLIC;
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
@@ -5350,7 +5350,32 @@ Running database upgrade commands:
set schema "sys";
DROP FUNCTION sys.dump_database;
DROP VIEW sys.dump_comments;
-CREATE OR REPLACE VIEW sys.describe_comments AS
+DROP VIEW sys.describe_comments;
+DROP VIEW sys.describe_privileges;
+DROP VIEW sys.fully_qualified_functions;
+CREATE VIEW sys.fully_qualified_functions AS
+WITH fqn(id, tpe, sig, num) AS
+(
+SELECT
+f.id,
+ft.function_type_keyword,
+CASE WHEN a.type IS NULL THEN
+sys.fqn(s.name, f.sqlname) || '()'
+ELSE
+sys.fqn(s.name, f.sqlname) || '(' || group_concat(sys.describe_type(a.type,
a.type_digits, a.type_scale), ',') OVER (PARTITION BY f.id ORDER BY a.number)
|| ')'
+END,
+a.number
+FROM sys.schemas s, sys.function_types ft, sys.functions f LEFT JOIN sys.args
a ON f.id = a.func_id
+WHERE s.id= f.schema_id AND f.type = ft.function_type_id
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list