Changeset: 263e070a8a9c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=263e070a8a9c
Modified Files:
        sql/backends/monet5/sql_scenario.c
        sql/test/testdb-upgrade-chain/Tests/dump.stable.out
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
Branch: Oct2014
Log Message:

Fix upgrade (again): maintain "system" status of functions and views.


diffs (80 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
@@ -1328,9 +1328,7 @@ sql_update_oct2014_sp1(Client c)
        if (schvar)
                schema = strdup(schvar->val.sval);
 
-       pos += snprintf(buf + pos, bufsize - pos, "set schema \"sys\";\n");
-
-       pos += snprintf(buf + pos, bufsize - pos, "\n\
+       pos += snprintf(buf + pos, bufsize - pos, "set schema \"sys\";\n\
        create table upgradeOct2014_views as (select s.name, t.query from 
tables t, schemas s where s.id = t.schema_id and t.id in (select d.depend_id 
from dependencies d where d.id in (select f.id from functions f where f.func 
ilike '%%returns table%%' and f.name not in ('env', 'var', 'db_users') and 
f.language <> 0) and d.depend_type = 5)) with data;\n\
        create table upgradeOct2014 as select s.name, f.func, f.id from 
functions f, schemas s where s.id = f.schema_id and f.func ilike '%%returns 
table%%' and f.name not in ('env', 'var', 'db_users') and f.language <> 0 order 
by f.id with data;\n\
        create table upgradeOct2014_changes (c bigint);\n\
@@ -1345,6 +1343,9 @@ sql_update_oct2014_sp1(Client c)
        \n\
        create function create_view_upgrade_oct2014( sname string, f string ) 
returns int external name sql.create_view_upgrade_oct2014;\n\
        insert into upgradeOct2014_changes select 
create_view_upgrade_oct2014(name, query) from upgradeOct2014_views;\n\
+       update _tables set system = true where name in ('tables', 'columns', 
'users', 'querylog_catalog', 'querylog_calls', 'querylog_history', 'tracelog', 
'sessions', 'optimizers', 'environment', 'queue', 'storage', 'storagemodel', 
'tablestoragemodel') and schema_id = (select id from schemas where name = 
'sys');\n\
+       insert into systemfunctions (select id from functions where name in 
('bbp', 'db_users', 'dependencies_columns_on_functions', 
'dependencies_columns_on_indexes', 'dependencies_columns_on_keys', 
'dependencies_columns_on_triggers', 'dependencies_columns_on_views', 
'dependencies_functions_on_functions', 'dependencies_functions_os_triggers', 
'dependencies_keys_on_foreignkeys', 'dependencies_owners_on_schemas', 
'dependencies_schemas_on_users', 'dependencies_tables_on_foreignkeys', 
'dependencies_tables_on_functions', 'dependencies_tables_on_indexes', 
'dependencies_tables_on_triggers', 'dependencies_tables_on_views', 
'dependencies_views_on_functions', 'dependencies_views_on_triggers', 'env', 
'environment', 'generate_series', 'optimizers', 'optimizer_stats', 
'querycache', 'querylog_calls', 'querylog_catalog', 'queue', 'sessions', 
'storage', 'storagemodel', 'tojsonarray', 'tracelog', 'var') and schema_id = 
(select id from schemas where name = 'sys') and id not in (select function_id 
from syst
 emfunctions));\n\
+       delete from systemfunctions where function_id not in (select id from 
functions);\n\
        drop function create_view_upgrade_oct2014;\n\
                                                \n\
        drop table upgradeOct2014_views;\n\
diff --git a/sql/test/testdb-upgrade-chain/Tests/dump.stable.out 
b/sql/test/testdb-upgrade-chain/Tests/dump.stable.out
--- a/sql/test/testdb-upgrade-chain/Tests/dump.stable.out
+++ b/sql/test/testdb-upgrade-chain/Tests/dump.stable.out
@@ -101198,19 +101198,6 @@ 1    0
 1      1
 create view keytest3 as select t2.key1, t2.key2, t1.key3 from keytest1 t1, 
keytest2 t2 where t1.key1 = t2.key1 and t1.key2 = t2.key2;
 create trigger keytesttrigger after update on keytest1 referencing new row as 
new_row for each row insert into keytest2 values (new_row.key1, new_row.key2);
-create function keyjoin()
-returns table (
-       key1 integer,
-       key2 integer,
-       key3 integer
-)
-begin
-  return table (
-    select keytest2.key1, keytest2.key2, keytest1.key3
-    from keytest1, keytest2
-    where keytest1.key1 = keytest2.key1 and keytest1.key2 = keytest2.key2
-  );
-end;
 CREATE TABLE "testschema"."selfref" (
        "id"       INTEGER       NOT NULL       DEFAULT next value for 
"testschema"."selfref_seq",
        "parentid" INTEGER,
@@ -101253,6 +101240,19 @@ CREATE TABLE "testschema"."geomtest" (
 COPY 2 RECORDS INTO "testschema"."geomtest" FROM stdin USING DELIMITERS 
'\t','\n','"';
 POINT (10.5000000000000000 12.3000000000000007)        LINESTRING 
(10.0000000000000000 10.0000000000000000, 20.0000000000000000 
20.0000000000000000, 30.0000000000000000 40.0000000000000000)  LINESTRING 
(10.0000000000000000 10.0000000000000000, 20.0000000000000000 
20.0000000000000000, 30.0000000000000000 40.0000000000000000)  POLYGON 
((10.0000000000000000 10.0000000000000000, 10.0000000000000000 
20.0000000000000000, 20.0000000000000000 20.0000000000000000, 
20.0000000000000000 15.0000000000000000, 10.0000000000000000 
10.0000000000000000)) POLYGON ((10.0000000000000000 10.0000000000000000, 
10.0000000000000000 20.0000000000000000, 20.0000000000000000 
20.0000000000000000, 20.0000000000000000 15.0000000000000000, 
10.0000000000000000 10.0000000000000000)) MULTIPOINT (20.0000000000000000 
80.0000000000000000, 110.0000000000000000 160.0000000000000000, 
20.0000000000000000 160.0000000000000000)       MULTILINESTRING 
((0.0000000000000000 0.0000000000000000, 0.0000000000000000 
80.0000000000000000, 60.000000000
 0000000 80.0000000000000000, 60.0000000000000000 0.0000000000000000, 
0.0000000000000000 0.0000000000000000))   MULTILINESTRING ((0.0000000000000000 
0.0000000000000000, 0.0000000000000000 80.0000000000000000, 60.0000000000000000 
80.0000000000000000, 60.0000000000000000 0.0000000000000000, 0.0000000000000000 
0.0000000000000000))       MULTIPOLYGON (((140.0000000000000000 
110.0000000000000000, 260.0000000000000000 110.0000000000000000, 
170.0000000000000000 20.0000000000000000, 50.0000000000000000 
20.0000000000000000, 140.0000000000000000 110.0000000000000000)), 
((300.0000000000000000 270.0000000000000000, 420.0000000000000000 
270.0000000000000000, 340.0000000000000000 190.0000000000000000, 
220.0000000000000000 190.0000000000000000, 300.0000000000000000 
270.0000000000000000)))        MULTIPOLYGON (((140.0000000000000000 
110.0000000000000000, 260.0000000000000000 110.0000000000000000, 
170.0000000000000000 20.0000000000000000, 50.0000000000000000 
20.0000000000000000, 140.0000000000000000 110.00000000000
 00000)), ((300.0000000000000000 270.0000000000000000, 420.0000000000000000 
270.0000000000000000, 340.0000000000000000 190.0000000000000000, 
220.0000000000000000 190.0000000000000000, 300.0000000000000000 
270.0000000000000000)))    POLYGON ((10.0000000000000000 10.0000000000000000, 
10.0000000000000000 20.0000000000000000, 20.0000000000000000 
20.0000000000000000, 20.0000000000000000 15.0000000000000000, 
10.0000000000000000 10.0000000000000000)) GEOMETRYCOLLECTION (POLYGON 
((0.0000000000000000 0.0000000000000000, 0.0000000000000000 
100.0000000000000000, 100.0000000000000000 100.0000000000000000, 
100.0000000000000000 0.0000000000000000, 0.0000000000000000 
0.0000000000000000)), LINESTRING (10.0000000000000000 10.0000000000000000, 
20.0000000000000000 20.0000000000000000, 30.0000000000000000 
40.0000000000000000))      BOX (10.000000 10.000000, 20.000000 20.000000)
 NULL   NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL
+create function keyjoin()
+returns table (
+       key1 integer,
+       key2 integer,
+       key3 integer
+)
+begin
+  return table (
+    select keytest2.key1, keytest2.key2, keytest1.key3
+    from keytest1, keytest2
+    where keytest1.key1 = keytest2.key1 and keytest1.key2 = keytest2.key2
+  );
+end;
 SET SCHEMA "sys";
 ALTER TABLE "testschema"."keytest2" ADD CONSTRAINT "keytest2_key1_key2_fkey" 
FOREIGN KEY ("key1", "key2") REFERENCES "testschema"."keytest1" ("key1", 
"key2");
 ALTER TABLE "testschema"."selfref" ADD CONSTRAINT "selfref_parentid_fkey" 
FOREIGN KEY ("parentid") REFERENCES "testschema"."selfref" ("id");
diff --git a/sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out 
b/sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
--- a/sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
+++ b/sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
@@ -36,6 +36,9 @@ set schema "sys";
        
        create function create_view_upgrade_oct2014( sname string, f string ) 
returns int external name sql.create_view_upgrade_oct2014;
        insert into upgradeOct2014_changes select 
create_view_upgrade_oct2014(name, query) from upgradeOct2014_views;
+       update _tables set system = true where name in ('tables', 'columns', 
'users', 'querylog_catalog', 'querylog_calls', 'querylog_history', 'tracelog', 
'sessions', 'optimizers', 'environment', 'queue', 'storage', 'storagemodel', 
'tablestoragemodel') and schema_id = (select id from schemas where name = 
'sys');
+       insert into systemfunctions (select id from functions where name in 
('bbp', 'db_users', 'dependencies_columns_on_functions', 
'dependencies_columns_on_indexes', 'dependencies_columns_on_keys', 
'dependencies_columns_on_triggers', 'dependencies_columns_on_views', 
'dependencies_functions_on_functions', 'dependencies_functions_os_triggers', 
'dependencies_keys_on_foreignkeys', 'dependencies_owners_on_schemas', 
'dependencies_schemas_on_users', 'dependencies_tables_on_foreignkeys', 
'dependencies_tables_on_functions', 'dependencies_tables_on_indexes', 
'dependencies_tables_on_triggers', 'dependencies_tables_on_views', 
'dependencies_views_on_functions', 'dependencies_views_on_triggers', 'env', 
'environment', 'generate_series', 'optimizers', 'optimizer_stats', 
'querycache', 'querylog_calls', 'querylog_catalog', 'queue', 'sessions', 
'storage', 'storagemodel', 'tojsonarray', 'tracelog', 'var') and schema_id = 
(select id from schemas where name = 'sys') and id not in (select function_id 
from syst
 emfunctions));
+       delete from systemfunctions where function_id not in (select id from 
functions);
        drop function create_view_upgrade_oct2014;
                                                
        drop table upgradeOct2014_views;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to