Changeset: 93c36f9e9bbb for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/93c36f9e9bbb
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-hge/Tests/upgrade.stable.out.ppc64.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.ppc64
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.ppc64.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.32bit
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/upgrade.stable.out.int128
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.32bit
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.32bit
sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
Branch: sqlfuncfix
Log Message:
Recreate SQL functions for which the "unsafe" flag in the MAL implementation
changed.
This is the "easy" part.
diffs (truncated from 8491 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
@@ -3524,8 +3524,14 @@ sql_update_default(Client c, mvc *sql, c
/* 25_debug.sql */
pos += snprintf(buf + pos, bufsize - pos,
+ "drop function sys.malfunctions();\n"
+ "create function sys.malfunctions()\n"
+ " returns table(\"module\" string,
\"function\" string, \"signature\" string, \"address\" string, \"comment\"
string)\n"
+ " external name
\"manual\".\"functions\";\n"
"create view sys.malfunctions as select
* from sys.malfunctions();\n"
"update sys._tables set system = true
where system <> true and schema_id = 2000"
+ " and name = 'malfunctions';\n"
+ "update sys.functions set system = true
where system <> true and schema_id = 2000"
" and name = 'malfunctions';\n");
/* 21_dependency_views.sql */
@@ -4256,6 +4262,318 @@ sql_update_default(Client c, mvc *sql, c
pos += snprintf(buf + pos, bufsize - pos,
"update sys._tables set system = true
where name in ('fkey_actions', 'fkeys') AND schema_id = 2000;\n");
+ /* recreate SQL functions that just need to be recompiled since the
+ * MAL functions's "unsafe" property was changed */
+ sql_schema *lg = mvc_bind_schema(sql, "logging");
+ t = mvc_bind_table(sql, lg, "compinfo");
+ t->system = 0;
+ t = mvc_bind_table(sql, s, "schemastorage");
+ t->system = 0;
+ t = mvc_bind_table(sql, s, "tablestorage");
+ t->system = 0;
+ t = mvc_bind_table(sql, s, "storage");
+ t->system = 0;
+ t = mvc_bind_table(sql, s, "rejects");
+ t->system = 0;
+ t = mvc_bind_table(sql, s, "queue");
+ t->system = 0;
+ t = mvc_bind_table(sql, s, "optimizers");
+ t->system = 0;
+ t = mvc_bind_table(sql, s, "prepared_statements_args");
+ t->system = 0;
+ t = mvc_bind_table(sql, s, "prepared_statements");
+ t->system = 0;
+ t = mvc_bind_table(sql, s, "sessions");
+ t->system = 0;
+ t = mvc_bind_table(sql, s, "querylog_calls");
+ t->system = 0;
+ t = mvc_bind_table(sql, s, "querylog_history");
+ t->system = 0;
+ t = mvc_bind_table(sql, s, "querylog_catalog");
+ t->system = 0;
+ pos += snprintf(buf + pos, bufsize - pos,
+ "drop view logging.compinfo;\n"
+ "drop function logging.compinfo;\n"
+ "drop procedure
sys.storagemodelinit();\n"
+ "drop view sys.schemastorage;\n"
+ "drop view sys.tablestorage;\n"
+ "drop view sys.storage;\n"
+ "drop function sys.storage();\n"
+ "drop function wlr.tick;\n"
+ "drop function wlr.clock;\n"
+ "drop function wlc.tick;\n"
+ "drop function wlc.clock;\n"
+ "drop function profiler.getlimit;\n"
+ "drop view sys.rejects;\n"
+ "drop function sys.rejects;\n"
+ "drop function sys.user_statistics;\n"
+ "drop view sys.queue;\n"
+ "drop function sys.queue;\n"
+ "drop function sys.debugflags;\n"
+ "drop function sys.bbp;\n"
+ "drop view sys.optimizers;\n"
+ "drop function sys.optimizers;\n"
+ "drop function sys.querycache;\n"
+ "drop function sys.optimizer_stats;\n"
+ "drop function sys.current_sessionid;\n"
+ "drop view
sys.prepared_statements_args;\n"
+ "drop function
sys.prepared_statements_args;\n"
+ "drop view sys.prepared_statements;\n"
+ "drop function
sys.prepared_statements;\n"
+ "drop view sys.sessions;\n"
+ "drop function sys.sessions;\n"
+ "drop view sys.querylog_history;\n"
+ "drop view sys.querylog_calls;\n"
+ "drop function sys.querylog_calls;\n"
+ "drop view sys.querylog_catalog;\n"
+ "drop function sys.querylog_catalog;\n"
+ "create function
sys.querylog_catalog()\n"
+ "returns table(\n"
+ " id oid,\n"
+ " owner string,\n"
+ " defined timestamp,\n"
+ " query string,\n"
+ " pipe string,\n"
+ " \"plan\" string,\n"
+ " mal int,\n"
+ " optimize bigint\n"
+ ")\n"
+ "external name sql.querylog_catalog;\n"
+ "create view sys.querylog_catalog as
select * from sys.querylog_catalog();\n"
+ "create function sys.querylog_calls()\n"
+ "returns table(\n"
+ " id oid,\n"
+ " \"start\" timestamp,\n"
+ " \"stop\" timestamp,\n"
+ " arguments string,\n"
+ " tuples bigint,\n"
+ " run bigint,\n"
+ " ship bigint,\n"
+ " cpu int,\n"
+ " io int\n"
+ ")\n"
+ "external name sql.querylog_calls;\n"
+ "create view sys.querylog_calls as
select * from sys.querylog_calls();\n"
+ "create view sys.querylog_history as\n"
+ "select qd.*, ql.\"start\",ql.\"stop\",
ql.arguments, ql.tuples, ql.run, ql.ship, ql.cpu, ql.io\n"
+ "from sys.querylog_catalog() qd,
sys.querylog_calls() ql\n"
+ "where qd.id = ql.id and qd.owner =
user;\n"
+ "create function sys.sessions()\n"
+ "returns table(\n"
+ " \"sessionid\" int,\n"
+ " \"username\" string,\n"
+ " \"login\" timestamp,\n"
+ " \"idle\" timestamp,\n"
+ " \"optimizer\" string,\n"
+ " \"sessiontimeout\" int,\n"
+ " \"querytimeout\" int,\n"
+ " \"workerlimit\" int,\n"
+ " \"memorylimit\" int\n"
+ ")\n"
+ "external name sql.sessions;\n"
+ "create view sys.sessions as select *
from sys.sessions();\n"
+ "create function
sys.prepared_statements()\n"
+ "returns table(\n"
+ " \"sessionid\" int,\n"
+ " \"username\" string,\n"
+ " \"statementid\" int,\n"
+ " \"statement\" string,\n"
+ " \"created\" timestamp\n"
+ ")\n"
+ "external name
sql.prepared_statements;\n"
+ "grant execute on function
sys.prepared_statements to public;\n"
+ "create view sys.prepared_statements as
select * from sys.prepared_statements();\n"
+ "grant select on
sys.prepared_statements to public;\n"
+ "create function
sys.prepared_statements_args()\n"
+ "returns table(\n"
+ " \"statementid\" int,\n"
+ " \"type\" string,\n"
+ " \"type_digits\" int,\n"
+ " \"type_scale\" int,\n"
+ " \"inout\" tinyint,\n"
+ " \"number\" int,\n"
+ " \"schema\" string,\n"
+ " \"table\" string,\n"
+ " \"column\" string\n"
+ ")\n"
+ "external name
sql.prepared_statements_args;\n"
+ "grant execute on function
sys.prepared_statements_args to public;\n"
+ "create view
sys.prepared_statements_args as select * from sys.prepared_statements_args();\n"
+ "grant select on
sys.prepared_statements_args to public;\n"
+ "create function
sys.current_sessionid() returns int\n"
+ "external name
clients.current_sessionid;\n"
+ "grant execute on function
sys.current_sessionid to public;\n"
+ "create function
sys.optimizer_stats()\n"
+ " returns table (optname string, count
int, timing bigint)\n"
+ " external name
inspect.optimizer_stats;\n"
+ "create function sys.querycache()\n"
+ " returns table (query string, count
int)\n"
+ " external name sql.dump_cache;\n"
+ "create function sys.optimizers ()\n"
+ " returns table (name string, def
string, status string)\n"
+ " external name sql.optimizers;\n"
+ "create view sys.optimizers as select *
from sys.optimizers();\n"
+ "create function sys.bbp ()\n"
+ " returns table (id int, name string,\n"
+ " ttype string, count bigint, refcnt
int, lrefcnt int,\n"
+ " location string, heat int, dirty
string,\n"
+ " status string, kind string)\n"
+ " external name bbp.get;\n"
+ "create function sys.debugflags()\n"
+ " returns table(flag string, val
bool)\n"
+ " external name
mdb.\"getDebugFlags\";\n"
+ "create function sys.queue()\n"
+ "returns table(\n"
+ " \"tag\" bigint,\n"
+ " \"sessionid\" int,\n"
+ " \"username\" string,\n"
+ " \"started\" timestamp,\n"
+ " \"status\" string,\n"
+ " \"query\" string,\n"
+ " \"finished\" timestamp,\n"
+ " \"maxworkers\" int,\n"
+ " \"footprint\" int\n"
+ ")\n"
+ "external name sysmon.queue;\n"
+ "grant execute on function sys.queue to
public;\n"
+ "create view sys.queue as select * from
sys.queue();\n"
+ "grant select on sys.queue to public;\n"
+ "create function
sys.user_statistics()\n"
+ "returns table(\n"
+ " username string,\n"
+ " querycount bigint,\n"
+ " totalticks bigint,\n"
+ " started timestamp,\n"
+ " finished timestamp,\n"
+ " maxticks bigint,\n"
+ " maxquery string\n"
+ ")\n"
+ "external name
sysmon.user_statistics;\n"
+ "create function sys.rejects()\n"
+ "returns table(\n"
+ " rowid bigint,\n"
+ " fldid int,\n"
+ " \"message\" string,\n"
+ " \"input\" string\n"
+ ")\n"
+ "external name sql.copy_rejects;\n"
+ "grant execute on function rejects to
public;\n"
+ "create view sys.rejects as select *
from sys.rejects();\n"
+ "create function profiler.getlimit()
returns integer external name profiler.getlimit;\n"
+ "create function wlc.clock() returns
string\n"
+ "external name wlc.\"getclock\";\n"
+ "create function wlc.tick() returns
bigint\n"
+ "external name wlc.\"gettick\";\n"
+ "create function wlr.clock() returns
string\n"
+ "external name wlr.\"getclock\";\n"
+ "create function wlr.tick() returns
bigint\n"
+ "external name wlr.\"gettick\";\n"
+ "create function sys.\"storage\"()\n"
+ "returns table (\n"
+ " \"schema\" varchar(1024),\n"
+ " \"table\" varchar(1024),\n"
+ " \"column\" varchar(1024),\n"
+ " \"type\" varchar(1024),\n"
+ " \"mode\" varchar(15),\n"
+ " location varchar(1024),\n"
+ " \"count\" bigint,\n"
+ " typewidth int,\n"
+ " columnsize bigint,\n"
+ " heapsize bigint,\n"
+ " hashes bigint,\n"
+ " phash boolean,\n"
+ " \"imprints\" bigint,\n"
+ " sorted boolean,\n"
+ " revsorted boolean,\n"
+ " \"unique\" boolean,\n"
+ " orderidx bigint\n"
+ ")\n"
+ "external name sql.\"storage\";\n"
+ "create view sys.\"storage\" as\n"
+ "select * from sys.\"storage\"()\n"
+ " where (\"schema\", \"table\") in (\n"
+ " select sch.\"name\", tbl.\"name\"\n"
+ " from sys.\"tables\" as tbl join
sys.\"schemas\" as sch on tbl.schema_id = sch.id\n"
+ " where tbl.\"system\" = false)\n"
+ "order by \"schema\", \"table\",
\"column\";\n"
+ "create view sys.\"tablestorage\" as\n"
+ "select \"schema\", \"table\",\n"
+ " max(\"count\") as \"rowcount\",\n"
+ " count(*) as \"storages\",\n"
+ " sum(columnsize) as columnsize,\n"
+ " sum(heapsize) as heapsize,\n"
+ " sum(hashes) as hashsize,\n"
+ " sum(\"imprints\") as imprintsize,\n"
+ " sum(orderidx) as orderidxsize\n"
+ " from sys.\"storage\"\n"
+ "group by \"schema\", \"table\"\n"
+ "order by \"schema\", \"table\";\n"
+ "create view sys.\"schemastorage\" as\n"
+ "select \"schema\",\n"
+ " count(*) as \"storages\",\n"
+ " sum(columnsize) as columnsize,\n"
+ " sum(heapsize) as heapsize,\n"
+ " sum(hashes) as hashsize,\n"
+ " sum(\"imprints\") as imprintsize,\n"
+ " sum(orderidx) as orderidxsize\n"
+ " from sys.\"storage\"\n"
+ "group by \"schema\"\n"
+ "order by \"schema\";\n"
+ "create procedure
sys.storagemodelinit()\n"
+ "begin\n"
+ " delete from sys.storagemodelinput;\n"
+ " insert into sys.storagemodelinput\n"
+ " select \"schema\", \"table\",
\"column\", \"type\", typewidth, \"count\",\n"
+ " case when (\"unique\" or \"type\" in
('varchar', 'char', 'clob', 'json', 'url', 'blob', 'geometry', 'geometrya'))\n"
+ " then \"count\" else 0 end,\n"
+ " case when \"count\" > 0 and heapsize
>= 8192 and \"type\" in ('varchar', 'char', 'clob', 'json', 'url')\n"
+ " then cast((heapsize - 8192) /
\"count\" as bigint)\n"
+ " when \"count\" > 0 and heapsize >= 32
and \"type\" in ('blob', 'geometry', 'geometrya')\n"
+ " then cast((heapsize - 32) / \"count\"
as bigint)\n"
+ " else typewidth end,\n"
+ " false, case sorted when true then
true else false end, \"unique\", true\n"
+ " from sys.\"storage\";\n"
+ " update sys.storagemodelinput\n"
+ " set reference = true\n"
+ " where (\"schema\", \"table\",
\"column\") in (\n"
+ " select fkschema.\"name\",
fktable.\"name\", fkkeycol.\"name\"\n"
+ " from sys.\"keys\" as fkkey,\n"
+ " sys.\"objects\" as fkkeycol,\n"
+ " sys.\"tables\" as fktable,\n"
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list