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
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to