Changeset: 7aec94c2604e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7aec94c2604e
Modified Files:
        sql/backends/monet5/sql_upgrades.c
        sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
        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
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out
        sql/test/testdb-upgrade/Tests/upgrade.stable.out
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
Branch: default
Log Message:

Implemented upgrade to what's now the default branch.


diffs (truncated from 116038 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
@@ -1523,6 +1523,201 @@ sql_update_geom(Client c, mvc *sql, int 
        return err;             /* usually MAL_SUCCEED */
 }
 
+static str
+sql_update_default(Client c, mvc *sql)
+{
+       size_t bufsize = 10240, pos = 0;
+       char *buf = GDKmalloc(bufsize), *err = NULL;
+       ValRecord *schvar = stack_get_var(sql, "current_schema");
+       char *schema = NULL;
+       sql_schema *s;
+
+       s = mvc_bind_schema(sql, "sys");
+       if (schvar)
+               schema = strdup(schvar->val.sval);
+       pos += snprintf(buf + pos, bufsize - pos, "set schema \"sys\";\n");
+
+       {
+               sql_table *t;
+
+               if ((t = mvc_bind_table(sql, s, "storagemodel")) != NULL)
+                       t->system = 0;
+               if ((t = mvc_bind_table(sql, s, "storagemodelinput")) != NULL)
+                       t->system = 0;
+               if ((t = mvc_bind_table(sql, s, "storage")) != NULL)
+                       t->system = 0;
+               if ((t = mvc_bind_table(sql, s, "tablestoragemodel")) != NULL)
+                       t->system = 0;
+       }
+
+       /* 18_index.sql */
+       pos += snprintf(buf + pos, bufsize - pos,
+                       "create procedure sys.createorderindex(sys string, tab 
string, col string)\n"
+                       "external name sql.createorderindex;\n"
+                       "create procedure sys.droporderindex(sys string, tab 
string, col string)\n"
+                       "external name sql.droporderindex;\n");
+
+       /* 75_storagemodel.sql */
+       pos += snprintf(buf + pos, bufsize - pos,
+                       "drop view sys.tablestoragemodel;\n"
+                       "drop view sys.storagemodel;\n"
+                       "drop function sys.storagemodel();\n"
+                       "drop procedure sys.storagemodelinit();\n"
+                       "drop function sys.\"storage\"(string, string, 
string);\n"
+                       "drop function sys.\"storage\"(string, string);\n"
+                       "drop function sys.\"storage\"(string);\n"
+                       "drop view sys.\"storage\";\n"
+                       "drop function sys.\"storage\"();\n"
+                       "alter table sys.storagemodelinput add column 
\"orderidx\" bigint;\n"
+                       "create function sys.\"storage\"()\n"
+                       "returns table (\n"
+                       " \"schema\" string,\n"
+                       " \"table\" string,\n"
+                       " \"column\" string,\n"
+                       " \"type\" string,\n"
+                       " \"mode\" string,\n"
+                       " location string,\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"
+                       " orderidx bigint\n"
+                       ")\n"
+                       "external name sql.\"storage\";\n"
+                       "create view sys.\"storage\" as select * from 
sys.\"storage\"();\n"
+                       "create function sys.\"storage\"( sname string)\n"
+                       "returns table (\n"
+                       " \"schema\" string,\n"
+                       " \"table\" string,\n"
+                       " \"column\" string,\n"
+                       " \"type\" string,\n"
+                       " \"mode\" string,\n"
+                       " location string,\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"
+                       " orderidx bigint\n"
+                       ")\n"
+                       "external name sql.\"storage\";\n"
+                       "create function sys.\"storage\"( sname string, tname 
string)\n"
+                       "returns table (\n"
+                       " \"schema\" string,\n"
+                       " \"table\" string,\n"
+                       " \"column\" string,\n"
+                       " \"type\" string,\n"
+                       " \"mode\" string,\n"
+                       " location string,\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"
+                       " orderidx bigint\n"
+                       ")\n"
+                       "external name sql.\"storage\";\n"
+                       "create function sys.\"storage\"( sname string, tname 
string, cname string)\n"
+                       "returns table (\n"
+                       " \"schema\" string,\n"
+                       " \"table\" string,\n"
+                       " \"column\" string,\n"
+                       " \"type\" string,\n"
+                       " \"mode\" string,\n"
+                       " location string,\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"
+                       " orderidx bigint\n"
+                       ")\n"
+                       "external name sql.\"storage\";\n"
+                       "create procedure sys.storagemodelinit()\n"
+                       "begin\n"
+                       " delete from sys.storagemodelinput;\n"
+                       " insert into sys.storagemodelinput\n"
+                       " select X.\"schema\", X.\"table\", X.\"column\", 
X.\"type\", X.typewidth, X.count, 0, X.typewidth, false, X.sorted, X.orderidx 
from sys.\"storage\"() X;\n"
+                       " update sys.storagemodelinput\n"
+                       " set reference = true\n"
+                       " where concat(concat(\"schema\",\"table\"), 
\"column\") in (\n"
+                       "  SELECT concat( concat(\"fkschema\".\"name\", 
\"fktable\".\"name\"), \"fkkeycol\".\"name\" )\n"
+                       "  FROM \"sys\".\"keys\" AS    \"fkkey\",\n"
+                       "    \"sys\".\"objects\" AS \"fkkeycol\",\n"
+                       "    \"sys\".\"tables\" AS  \"fktable\",\n"
+                       "    \"sys\".\"schemas\" AS \"fkschema\"\n"
+                       "  WHERE   \"fktable\".\"id\" = 
\"fkkey\".\"table_id\"\n"
+                       "   AND \"fkkey\".\"id\" = \"fkkeycol\".\"id\"\n"
+                       "   AND \"fkschema\".\"id\" = 
\"fktable\".\"schema_id\"\n"
+                       "   AND \"fkkey\".\"rkey\" > -1);\n"
+                       " update sys.storagemodelinput\n"
+                       " set \"distinct\" = \"count\"\n"
+                       " where \"type\" = 'varchar' or \"type\"='clob';\n"
+                       "end;\n"
+                       "create function sys.storagemodel()\n"
+                       "returns table (\n"
+                       " \"schema\" string,\n"
+                       " \"table\" string,\n"
+                       " \"column\" string,\n"
+                       " \"type\" string,\n"
+                       " \"count\" bigint,\n"
+                       " columnsize bigint,\n"
+                       " heapsize bigint,\n"
+                       " hashes bigint,\n"
+                       " \"imprints\" bigint,\n"
+                       " sorted boolean,\n"
+                       " orderidx bigint)\n"
+                       "begin\n"
+                       " return select I.\"schema\", I.\"table\", 
I.\"column\", I.\"type\", I.\"count\",\n"
+                       " columnsize(I.\"type\", I.count, I.\"distinct\"),\n"
+                       " heapsize(I.\"type\", I.\"distinct\", 
I.\"atomwidth\"),\n"
+                       " hashsize(I.\"reference\", I.\"count\"),\n"
+                       " imprintsize(I.\"count\",I.\"type\"),\n"
+                       " I.sorted, I.orderidx\n"
+                       " from sys.storagemodelinput I;\n"
+                       "end;\n"
+                       "create view sys.storagemodel as select * from 
sys.storagemodel();\n"
+                       "create view sys.tablestoragemodel\n"
+                       "as select \"schema\",\"table\",max(count) as 
\"count\",\n"
+                       " sum(columnsize) as columnsize,\n"
+                       " sum(heapsize) as heapsize,\n"
+                       " sum(hashes) as hashes,\n"
+                       " sum(\"imprints\") as \"imprints\",\n"
+                       " sum(case when sorted = false then 8 * count else 0 
end) as auxiliary\n"
+                       "from sys.storagemodel() group by 
\"schema\",\"table\";\n"
+                       "update sys._tables set system = true where name in 
('storage', 'storagemodel', 'tablestoragemodel') and schema_id = (select id 
from sys.schemas where name = 'sys');\n");
+       pos += snprintf(buf + pos, bufsize - pos,
+                       "insert into sys.systemfunctions (select f.id from 
sys.functions f, sys.schemas s where f.name in ('storage', 'storagemodel') and 
f.type = %d and f.schema_id = s.id and s.name = 'sys');\n",
+                       F_UNION);
+       pos += snprintf(buf + pos, bufsize - pos,
+                       "insert into sys.systemfunctions (select f.id from 
sys.functions f, sys.schemas s where f.name in ('createorderindex', 
'droporderindex', 'storagemodelinit') and f.type = %d and f.schema_id = s.id 
and s.name = 'sys');\n",
+                       F_PROC);
+
+       if (schema) {
+               pos += snprintf(buf + pos, bufsize - pos, "set schema 
\"%s\";\n", schema);
+               free(schema);
+       }
+
+       assert(pos < bufsize);
+       printf("Running database upgrade commands:\n%s\n", buf);
+       err = SQLstatementIntern(c, &buf, "update", 1, 0, NULL);
+       GDKfree(buf);
+       return err;             /* usually MAL_SUCCEED */
+}
+
 void
 SQLupgrades(Client c, mvc *m)
 {
@@ -1624,4 +1819,12 @@ SQLupgrades(Client c, mvc *m)
                        }
                }
        }
+
+       sql_find_subtype(&tp, "clob", 0, 0);
+       if (!sql_bind_func3(m->sa, s, "createorderindex", &tp, &tp, &tp, 
F_PROC)) {
+               if ((err = sql_update_default(c, m)) != NULL) {
+                       fprintf(stderr, "!%s\n", err);
+                       GDKfree(err);
+               }
+       }
 }
diff --git a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128 
b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
@@ -223,5354 +223,5357 @@ insert into sys.functions values (73, '<
 insert into sys.args values (7701, 73, 'res_0', 'boolean', 1, 0, 0, 0);
 insert into sys.args values (7702, 73, 'arg_1', 'any', 0, 0, 1, 1);
 insert into sys.args values (7703, 73, 'arg_2', 'any', 0, 0, 1, 2);
-insert into sys.functions values (77, 'in', 'in', 'calc', 0, 1, false, false, 
false, 2000);
-insert into sys.args values (7704, 77, 'res_0', 'boolean', 1, 0, 0, 0);
-insert into sys.args values (7705, 77, 'arg_1', 'any', 0, 0, 1, 1);
-insert into sys.args values (7706, 77, 'arg_2', 'any', 0, 0, 1, 2);
-insert into sys.functions values (78, 'identity', 'identity', 'calc', 0, 1, 
false, false, false, 2000);
-insert into sys.args values (7707, 78, 'res_0', 'oid', 63, 0, 0, 0);
-insert into sys.args values (7708, 78, 'arg_1', 'any', 0, 0, 1, 1);
-insert into sys.functions values (79, 'rowid', 'identity', 'calc', 0, 1, 
false, false, false, 2000);
-insert into sys.args values (7709, 79, 'res_0', 'int', 32, 0, 0, 0);
-insert into sys.args values (7710, 79, 'arg_1', 'any', 0, 0, 1, 1);
-insert into sys.functions values (80, 'rowid', 'rowid', 'calc', 0, 1, false, 
false, false, 2000);
-insert into sys.args values (7711, 80, 'res_0', 'oid', 63, 0, 0, 0);
-insert into sys.args values (7712, 80, 'arg_1', 'any', 0, 0, 1, 1);
-insert into sys.args values (7713, 80, 'arg_2', 'varchar', 0, 0, 1, 2);
-insert into sys.args values (7714, 80, 'arg_3', 'varchar', 0, 0, 1, 3);
-insert into sys.functions values (83, 'sql_min', 'min', 'calc', 0, 1, false, 
false, false, 2000);
-insert into sys.args values (7715, 83, 'res_0', 'any', 0, 0, 0, 0);
-insert into sys.args values (7716, 83, 'arg_1', 'any', 0, 0, 1, 1);
-insert into sys.args values (7717, 83, 'arg_2', 'any', 0, 0, 1, 2);
-insert into sys.functions values (84, 'sql_max', 'max', 'calc', 0, 1, false, 
false, false, 2000);
-insert into sys.args values (7718, 84, 'res_0', 'any', 0, 0, 0, 0);
-insert into sys.args values (7719, 84, 'arg_1', 'any', 0, 0, 1, 1);
-insert into sys.args values (7720, 84, 'arg_2', 'any', 0, 0, 1, 2);
-insert into sys.functions values (85, 'ifthenelse', 'ifthenelse', 'calc', 0, 
1, false, false, false, 2000);
-insert into sys.args values (7721, 85, 'res_0', 'any', 0, 0, 0, 0);
-insert into sys.args values (7722, 85, 'arg_1', 'boolean', 1, 0, 1, 1);
-insert into sys.args values (7723, 85, 'arg_2', 'any', 0, 0, 1, 2);
-insert into sys.args values (7724, 85, 'arg_3', 'any', 0, 0, 1, 3);
-insert into sys.functions values (107, 'mod', '%', 'calc', 0, 1, false, false, 
false, 2000);
-insert into sys.args values (7725, 107, 'res_0', 'oid', 63, 0, 0, 0);
-insert into sys.args values (7726, 107, 'arg_1', 'oid', 63, 0, 1, 1);
-insert into sys.args values (7727, 107, 'arg_2', 'oid', 63, 0, 1, 2);
+insert into sys.functions values (78, 'in', 'in', 'calc', 0, 1, false, false, 
false, 2000);
+insert into sys.args values (7704, 78, 'res_0', 'boolean', 1, 0, 0, 0);
+insert into sys.args values (7705, 78, 'arg_1', 'any', 0, 0, 1, 1);
+insert into sys.args values (7706, 78, 'arg_2', 'any', 0, 0, 1, 2);
+insert into sys.functions values (79, 'identity', 'identity', 'calc', 0, 1, 
false, false, false, 2000);
+insert into sys.args values (7707, 79, 'res_0', 'oid', 63, 0, 0, 0);
+insert into sys.args values (7708, 79, 'arg_1', 'any', 0, 0, 1, 1);
+insert into sys.functions values (80, 'rowid', 'identity', 'calc', 0, 1, 
false, false, false, 2000);
+insert into sys.args values (7709, 80, 'res_0', 'int', 32, 0, 0, 0);
+insert into sys.args values (7710, 80, 'arg_1', 'any', 0, 0, 1, 1);
+insert into sys.functions values (81, 'rowid', 'rowid', 'calc', 0, 1, false, 
false, false, 2000);
+insert into sys.args values (7711, 81, 'res_0', 'oid', 63, 0, 0, 0);
+insert into sys.args values (7712, 81, 'arg_1', 'any', 0, 0, 1, 1);
+insert into sys.args values (7713, 81, 'arg_2', 'varchar', 0, 0, 1, 2);
+insert into sys.args values (7714, 81, 'arg_3', 'varchar', 0, 0, 1, 3);
+insert into sys.functions values (84, 'sql_min', 'min', 'calc', 0, 1, false, 
false, false, 2000);
+insert into sys.args values (7715, 84, 'res_0', 'any', 0, 0, 0, 0);
+insert into sys.args values (7716, 84, 'arg_1', 'any', 0, 0, 1, 1);
+insert into sys.args values (7717, 84, 'arg_2', 'any', 0, 0, 1, 2);
+insert into sys.functions values (85, 'sql_max', 'max', 'calc', 0, 1, false, 
false, false, 2000);
+insert into sys.args values (7718, 85, 'res_0', 'any', 0, 0, 0, 0);
+insert into sys.args values (7719, 85, 'arg_1', 'any', 0, 0, 1, 1);
+insert into sys.args values (7720, 85, 'arg_2', 'any', 0, 0, 1, 2);
+insert into sys.functions values (86, 'ifthenelse', 'ifthenelse', 'calc', 0, 
1, false, false, false, 2000);
+insert into sys.args values (7721, 86, 'res_0', 'any', 0, 0, 0, 0);
+insert into sys.args values (7722, 86, 'arg_1', 'boolean', 1, 0, 1, 1);
+insert into sys.args values (7723, 86, 'arg_2', 'any', 0, 0, 1, 2);
+insert into sys.args values (7724, 86, 'arg_3', 'any', 0, 0, 1, 3);
 insert into sys.functions values (108, 'mod', '%', 'calc', 0, 1, false, false, 
false, 2000);
-insert into sys.args values (7728, 108, 'res_0', 'tinyint', 8, 0, 0, 0);
-insert into sys.args values (7729, 108, 'arg_1', 'tinyint', 8, 0, 1, 1);
-insert into sys.args values (7730, 108, 'arg_2', 'tinyint', 8, 0, 1, 2);
+insert into sys.args values (7725, 108, 'res_0', 'oid', 63, 0, 0, 0);
+insert into sys.args values (7726, 108, 'arg_1', 'oid', 63, 0, 1, 1);
+insert into sys.args values (7727, 108, 'arg_2', 'oid', 63, 0, 1, 2);
 insert into sys.functions values (109, 'mod', '%', 'calc', 0, 1, false, false, 
false, 2000);
-insert into sys.args values (7731, 109, 'res_0', 'smallint', 16, 0, 0, 0);
-insert into sys.args values (7732, 109, 'arg_1', 'smallint', 16, 0, 1, 1);
-insert into sys.args values (7733, 109, 'arg_2', 'smallint', 16, 0, 1, 2);
+insert into sys.args values (7728, 109, 'res_0', 'tinyint', 8, 0, 0, 0);
+insert into sys.args values (7729, 109, 'arg_1', 'tinyint', 8, 0, 1, 1);
+insert into sys.args values (7730, 109, 'arg_2', 'tinyint', 8, 0, 1, 2);
 insert into sys.functions values (110, 'mod', '%', 'calc', 0, 1, false, false, 
false, 2000);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to