Changeset: c339da3f307c for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c339da3f307c Modified Files: sql/storage/bat/bat_logger.c sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128 sql/test/testdb-upgrade/Tests/upgrade.stable.out sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128 Branch: default Log Message:
Fixed upgrade from Oct2014-SP3. diffs (145 lines): diff --git a/sql/storage/bat/bat_logger.c b/sql/storage/bat/bat_logger.c --- a/sql/storage/bat/bat_logger.c +++ b/sql/storage/bat/bat_logger.c @@ -17,8 +17,13 @@ static int bl_preversion( int oldversion, int newversion) { #define CATALOG_OCT2014 52100 +#define CATALOG_OCT2014SP3 52101 (void)newversion; + if (oldversion == CATALOG_OCT2014SP3) { + catalog_version = oldversion; + return 0; + } if (oldversion == CATALOG_OCT2014) { catalog_version = oldversion; return 0; @@ -73,8 +78,39 @@ bl_postversion( void *lg) logger_add_bat(lg, tne, N(n, NULL, s, "types_eclass")); bat_destroy(te); bat_destroy(tn); + } else if (catalog_version == CATALOG_OCT2014SP3) { + BAT *te, *tn, *tne; + BATiter tei, tni; + char *s = "sys", n[64]; + BUN p,q; + + te = temp_descriptor(logger_find_bat(lg, N(n, NULL, s, "types_eclass"))); + tn = temp_descriptor(logger_find_bat(lg, N(n, NULL, s, "types_sqlname"))); + if (!te || !tn) + return; + tei = bat_iterator(te); + tni = bat_iterator(tn); + tne = BATnew(TYPE_void, TYPE_int, BATcount(te), PERSISTENT); + if (!tne) + return; + BATseqbase(tne, te->hseqbase); + for(p=BUNfirst(te), q=BUNlast(te); p<q; p++) { + int eclass = *(int*)BUNtail(tei, p); + char *name = BUNtail(tni, p); + + if (eclass == EC_MONTH) /* old EC_INTERVAL */ + eclass = strcmp(name, "sec_interval") == 0 ? EC_SEC : EC_MONTH; + else if (eclass >= EC_SEC) /* old EC_DEC */ + eclass += 1; + BUNappend(tne, &eclass, TRUE); + } + BATsetaccess(tne, BAT_READ); + logger_add_bat(lg, tne, N(n, NULL, s, "types_eclass")); + bat_destroy(te); + bat_destroy(tn); } - if (catalog_version == CATALOG_OCT2014) { + if (catalog_version == CATALOG_OCT2014 || + catalog_version == CATALOG_OCT2014SP3) { /* we need to replace tables.readonly by tables.access column */ BAT *b, *b1; BATiter bi; 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 @@ -21,15 +21,6 @@ stdout of test 'upgrade` in directory 's Ready. Running database upgrade commands: set schema "sys"; -CREATE FUNCTION "left_shift"(i1 inet, i2 inet) RETURNS boolean EXTERNAL NAME inet."<<"; -CREATE FUNCTION "right_shift"(i1 inet, i2 inet) RETURNS boolean EXTERNAL NAME inet.">>"; -CREATE FUNCTION "left_shift_assign"(i1 inet, i2 inet) RETURNS boolean EXTERNAL NAME inet."<<="; -CREATE FUNCTION "right_shift_assign"(i1 inet, i2 inet) RETURNS boolean EXTERNAL NAME inet.">>="; -insert into sys.systemfunctions (select id from sys.functions where name in ('left_shift', 'right_shift', 'left_shift_assign', 'right_shift_assign') and schema_id = (select id from sys.schemas where name = 'sys') and id not in (select function_id from sys.systemfunctions)); -set schema "testschema"; - -Running database upgrade commands: -set schema "sys"; drop filter function sys."like"; create filter function sys."like"(val string, pat string, esc string) external name algebra."like"; create filter function sys."like"(val string, pat string) external name algebra."like"; diff --git a/sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128 b/sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128 --- a/sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128 +++ b/sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128 @@ -21,15 +21,6 @@ stdout of test 'upgrade` in directory 's Ready. Running database upgrade commands: set schema "sys"; -CREATE FUNCTION "left_shift"(i1 inet, i2 inet) RETURNS boolean EXTERNAL NAME inet."<<"; -CREATE FUNCTION "right_shift"(i1 inet, i2 inet) RETURNS boolean EXTERNAL NAME inet.">>"; -CREATE FUNCTION "left_shift_assign"(i1 inet, i2 inet) RETURNS boolean EXTERNAL NAME inet."<<="; -CREATE FUNCTION "right_shift_assign"(i1 inet, i2 inet) RETURNS boolean EXTERNAL NAME inet.">>="; -insert into sys.systemfunctions (select id from sys.functions where name in ('left_shift', 'right_shift', 'left_shift_assign', 'right_shift_assign') and schema_id = (select id from sys.schemas where name = 'sys') and id not in (select function_id from sys.systemfunctions)); -set schema "testschema"; - -Running database upgrade commands: -set schema "sys"; create function sys.fuse(one bigint, two bigint) returns hugeint external name udf.fuse; @@ -75,8 +66,8 @@ from sys.storagemodel() group by "schema insert into sys.systemfunctions (select id from sys.functions where name in ('fuse', 'generate_series', 'stddev_samp', 'stddev_pop', 'var_samp', 'var_pop', 'median', 'quantile', 'corr') and schema_id = (select id from sys.schemas where name = 'sys') and id not in (select function_id from sys.systemfunctions)); insert into sys.systemfunctions (select id from sys.functions where name = 'filter' and schema_id = (select id from sys.schemas where name = 'json') and id not in (select function_id from sys.systemfunctions)); update sys._tables set system = true where name = 'tablestoragemodel' and schema_id = (select id from sys.schemas where name = 'sys'); -insert into sys.types values(7284, 'hge', 'hugeint', 128, 1, 2, 6, 0); -insert into sys.types values(7285, 'hge', 'decimal', 39, 1, 10, 8, 0); +insert into sys.types values(7305, 'hge', 'hugeint', 128, 1, 2, 6, 0); +insert into sys.types values(7306, 'hge', 'decimal', 39, 1, 10, 8, 0); update sys.types set digits = 18 where systemname = 'lng' and sqlname = 'decimal'; set schema "testschema"; diff --git a/sql/test/testdb-upgrade/Tests/upgrade.stable.out b/sql/test/testdb-upgrade/Tests/upgrade.stable.out --- a/sql/test/testdb-upgrade/Tests/upgrade.stable.out +++ b/sql/test/testdb-upgrade/Tests/upgrade.stable.out @@ -18,15 +18,6 @@ stdout of test 'upgrade` in directory 's Ready. Running database upgrade commands: set schema "sys"; -CREATE FUNCTION "left_shift"(i1 inet, i2 inet) RETURNS boolean EXTERNAL NAME inet."<<"; -CREATE FUNCTION "right_shift"(i1 inet, i2 inet) RETURNS boolean EXTERNAL NAME inet.">>"; -CREATE FUNCTION "left_shift_assign"(i1 inet, i2 inet) RETURNS boolean EXTERNAL NAME inet."<<="; -CREATE FUNCTION "right_shift_assign"(i1 inet, i2 inet) RETURNS boolean EXTERNAL NAME inet.">>="; -insert into sys.systemfunctions (select id from sys.functions where name in ('left_shift', 'right_shift', 'left_shift_assign', 'right_shift_assign') and schema_id = (select id from sys.schemas where name = 'sys') and id not in (select function_id from sys.systemfunctions)); -set schema "testschema"; - -Running database upgrade commands: -set schema "sys"; drop filter function sys."like"; create filter function sys."like"(val string, pat string, esc string) external name algebra."like"; create filter function sys."like"(val string, pat string) external name algebra."like"; diff --git a/sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128 b/sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128 --- a/sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128 +++ b/sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128 @@ -18,15 +18,6 @@ stdout of test 'upgrade` in directory 's Ready. Running database upgrade commands: set schema "sys"; -CREATE FUNCTION "left_shift"(i1 inet, i2 inet) RETURNS boolean EXTERNAL NAME inet."<<"; -CREATE FUNCTION "right_shift"(i1 inet, i2 inet) RETURNS boolean EXTERNAL NAME inet.">>"; -CREATE FUNCTION "left_shift_assign"(i1 inet, i2 inet) RETURNS boolean EXTERNAL NAME inet."<<="; -CREATE FUNCTION "right_shift_assign"(i1 inet, i2 inet) RETURNS boolean EXTERNAL NAME inet.">>="; -insert into sys.systemfunctions (select id from sys.functions where name in ('left_shift', 'right_shift', 'left_shift_assign', 'right_shift_assign') and schema_id = (select id from sys.schemas where name = 'sys') and id not in (select function_id from sys.systemfunctions)); -set schema "testschema"; - -Running database upgrade commands: -set schema "sys"; create function sys.fuse(one bigint, two bigint) returns hugeint external name udf.fuse; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list