Changeset: 87c7e0f8e5a3 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=87c7e0f8e5a3
Added Files:
        sql/backends/monet5/sql_upgrades.c
        sql/backends/monet5/sql_upgrades.h
Modified Files:
        sql/backends/monet5/Makefile.ag
        sql/backends/monet5/sql_scenario.c
        sql/backends/monet5/sql_scenario.h
Branch: default
Log Message:

Separate out upgrade instructions


diffs (truncated from 2156 to 300 lines):

diff --git a/sql/backends/monet5/Makefile.ag b/sql/backends/monet5/Makefile.ag
--- a/sql/backends/monet5/Makefile.ag
+++ b/sql/backends/monet5/Makefile.ag
@@ -41,6 +41,7 @@ lib__sql = {
                mal_backend.c mal_backend.h \
                sql_user.c sql_user.h \
                sql_scenario.c sql_scenario.h \
+               sql_upgrades.c sql_upgrades.h \
                rel_bin.c rel_bin.h \
                sql_statement.c sql_statement.h \
                sql_statistics.c sql_statistics.h \
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
@@ -60,6 +60,7 @@
 #include "opt_prelude.h"
 #include "opt_pipes.h"
 #include <unistd.h>
+#include "sql_upgrades.h"
 
 static int SQLinitialized = 0;
 static int SQLnewcatalog = 0;
@@ -365,7 +366,7 @@ handle_error(mvc *m, stream *out, int ps
        return go;
 }
 
-static int
+int
 SQLautocommit(Client c, mvc *m)
 {
        if (m->session->auto_commit && m->session->active) {
@@ -379,7 +380,7 @@ SQLautocommit(Client c, mvc *m)
        return TRUE;
 }
 
-static void
+void
 SQLtrans(mvc *m)
 {
        m->caching = m->cache;
@@ -387,957 +388,6 @@ SQLtrans(mvc *m)
                mvc_trans(m);
 }
 
-static str
-sql_update_feb2013(Client c)
-{
-       char *buf = GDKmalloc(4096), *err = NULL;
-       size_t bufsize = 4096, pos = 0;
-
-       /* sys.stddev_samp functions */
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.stddev_samp(val TINYINT) returns DOUBLE external name 
\"aggr\".\"stdev\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.stddev_samp(val SMALLINT) returns DOUBLE external name 
\"aggr\".\"stdev\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.stddev_samp(val INTEGER) returns DOUBLE external name 
\"aggr\".\"stdev\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.stddev_samp(val BIGINT) returns DOUBLE external name 
\"aggr\".\"stdev\";\n");
-#ifdef HAVE_HGE
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.stddev_samp(val HUGEINT) returns DOUBLE external name 
\"aggr\".\"stdev\";\n");
-#endif
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.stddev_samp(val REAL) returns DOUBLE external name \"aggr\".\"stdev\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.stddev_samp(val DOUBLE) returns DOUBLE external name 
\"aggr\".\"stdev\";\n");
-
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.stddev_samp(val DATE) returns DOUBLE external name \"aggr\".\"stdev\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.stddev_samp(val TIME) returns DOUBLE external name \"aggr\".\"stdev\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.stddev_samp(val TIMESTAMP) returns DOUBLE external name 
\"aggr\".\"stdev\";\n");
-
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.stddev_pop(val TINYINT) returns DOUBLE external name 
\"aggr\".\"stdevp\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.stddev_pop(val SMALLINT) returns DOUBLE external name 
\"aggr\".\"stdevp\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.stddev_pop(val INTEGER) returns DOUBLE external name 
\"aggr\".\"stdevp\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.stddev_pop(val BIGINT) returns DOUBLE external name 
\"aggr\".\"stdevp\";\n");
-#ifdef HAVE_HGE
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.stddev_pop(val HUGEINT) returns DOUBLE external name 
\"aggr\".\"stdevp\";\n");
-#endif
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.stddev_pop(val REAL) returns DOUBLE external name \"aggr\".\"stdevp\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.stddev_pop(val DOUBLE) returns DOUBLE external name 
\"aggr\".\"stdevp\";\n");
-
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.stddev_pop(val DATE) returns DOUBLE external name \"aggr\".\"stdevp\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.stddev_pop(val TIME) returns DOUBLE external name \"aggr\".\"stdevp\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.stddev_pop(val TIMESTAMP) returns DOUBLE external name 
\"aggr\".\"stdevp\";\n");
-
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.var_samp(val TINYINT) returns DOUBLE external name 
\"aggr\".\"variance\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.var_samp(val SMALLINT) returns DOUBLE external name 
\"aggr\".\"variance\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.var_samp(val INTEGER) returns DOUBLE external name 
\"aggr\".\"variance\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.var_samp(val BIGINT) returns DOUBLE external name 
\"aggr\".\"variance\";\n");
-#ifdef HAVE_HGE
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.var_samp(val HUGEINT) returns DOUBLE external name 
\"aggr\".\"variance\";\n");
-#endif
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.var_samp(val REAL) returns DOUBLE external name \"aggr\".\"variance\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.var_samp(val DOUBLE) returns DOUBLE external name 
\"aggr\".\"variance\";\n");
-
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.var_samp(val DATE) returns DOUBLE external name \"aggr\".\"variance\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.var_samp(val TIME) returns DOUBLE external name \"aggr\".\"variance\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.var_samp(val TIMESTAMP) returns DOUBLE external name 
\"aggr\".\"variance\";\n");
-
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.var_pop(val TINYINT) returns DOUBLE external name 
\"aggr\".\"variancep\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.var_pop(val SMALLINT) returns DOUBLE external name 
\"aggr\".\"variancep\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.var_pop(val INTEGER) returns DOUBLE external name 
\"aggr\".\"variancep\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.var_pop(val BIGINT) returns DOUBLE external name 
\"aggr\".\"variancep\";\n");
-#ifdef HAVE_HGE
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.var_pop(val HUGEINT) returns DOUBLE external name 
\"aggr\".\"variancep\";\n");
-#endif
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.var_pop(val REAL) returns DOUBLE external name \"aggr\".\"variancep\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.var_pop(val DOUBLE) returns DOUBLE external name 
\"aggr\".\"variancep\";\n");
-
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.var_pop(val DATE) returns DOUBLE external name \"aggr\".\"variancep\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.var_pop(val TIME) returns DOUBLE external name \"aggr\".\"variancep\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.var_pop(val TIMESTAMP) returns DOUBLE external name 
\"aggr\".\"variancep\";\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 ('stddev_samp', 'stddev_pop', 
'var_samp', 'var_pop') and f.type = %d and f.schema_id = s.id and s.name = 
'sys');\n", F_AGGR);
-
-       assert(pos < 4096);
-
-       printf("Running database upgrade commands:\n%s\n", buf);
-       err = SQLstatementIntern(c, &buf, "update", 1, 0, NULL);
-       GDKfree(buf);
-       return err;             /* usually MAL_SUCCEED */
-}
-
-
-static str
-sql_update_feb2013_sp1(Client c)
-{
-       size_t bufsize = 10240, pos = 0;
-       char *buf = GDKmalloc(bufsize), *err = NULL;
-
-       /* sys.stddev functions */
-       pos += snprintf(buf + pos, bufsize - pos, "drop filter function 
sys.\"like\"(string, string, string);\n");
-       pos += snprintf(buf + pos, bufsize - pos, "drop filter function 
sys.\"ilike\"(string, string, string);\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create filter function 
sys.\"like\"(val string, pat string, esc string) external name 
algebra.\"like\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create filter function 
sys.\"ilike\"(val string, pat string, esc string) external name 
algebra.\"ilike\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create filter function 
sys.\"like\"(val string, pat string) external name algebra.\"like\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create filter function 
sys.\"ilike\"(val string, pat string) external name algebra.\"ilike\";\n");
-
-       pos += snprintf(buf + pos, bufsize - pos, "drop function 
sys.storage;\n");
-
-       /* 75_storagemodel.sql */
-       pos += snprintf(buf + pos, bufsize - pos, "\
-create function sys.storage()\n\
-returns table (\"schema\" string, \"table\" string, \"column\" string, 
\"type\" string, location string, \"count\" bigint, typewidth int, columnsize 
bigint, heapsize bigint, indices bigint, sorted boolean)\n\
-external name sql.storage;\n\
-\n\
-create table sys.storagemodelinput(\n\
-       \"schema\" string,\n\
-       \"table\" string,\n\
-       \"column\" string,\n\
-       \"type\" string,\n\
-       \"typewidth\" int,\n\
-       \"count\"       bigint,\n\
-       \"distinct\" bigint,\n\
-       \"atomwidth\" int,\n\
-       \"reference\" boolean,\n\
-       \"sorted\" boolean\n\
-);\n\
-update sys._tables\n\
-       set system = true\n\
-       where name = 'storagemodelinput'\n\
-               and schema_id = (select id from sys.schemas where name = 
'sys');\n\
-\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 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\
-\n\
-create function sys.columnsize(nme string, i bigint, d bigint)\n\
-returns bigint\n\
-begin\n\
-       case\n\
-       when nme = 'boolean' then return i;\n\
-       when nme = 'char' then return 2*i;\n\
-       when nme = 'smallint' then return 2 * i;\n\
-       when nme = 'int'         then return 4 * i;\n\
-       when nme = 'bigint'      then return 8 * i;\n\
-       when nme = 'timestamp' then return 8 * i;\n\
-       when  nme = 'varchar' then\n\
-               case\n\
-               when cast(d as bigint) << 8 then return i;\n\
-               when cast(d as bigint) << 16 then return 2 * i;\n\
-               when cast(d as bigint) << 32 then return 4 * i;\n\
-               else return 8 * i;\n\
-               end case;\n\
-       else return 8 * i;\n\
-       end case;\n\
-end;\n\
-\n\
-create function sys.heapsize(tpe string, i bigint, w int)\n\
-returns bigint\n\
-begin\n\
-       if  tpe <> 'varchar' and tpe <> 'clob'\n\
-       then\n\
-               return 0;\n\
-       end if;\n\
-       return 10240 + i * w;\n\
-end;\n\
-\n\
-create function sys.indexsize(b boolean, i bigint)\n\
-returns bigint\n\
-begin\n\
-\n\
-       if  b = true\n\
-       then\n\
-               return 8 * i;\n\
-       end if;\n\
-       return 0;\n\
-end;\n\
-\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\
-       indices bigint,\n\
-       sorted boolean)\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\
-       indexsize(I.\"reference\", I.\"count\"),\n\
-       I.sorted\n\
-       from sys.storagemodelinput I;\n\
-end;\n\
-\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(indices) as indices,\n\
-       sum(case when sorted = false then 8 * count else 0 end) as auxillary\n\
-from sys.storagemodel() group by \"schema\",\"table\";\n\
-update sys._tables\n\
-       set system = true\n\
-       where name = 'tablestoragemodel'\n\
-               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 ('like', 'ilike') and f.type = %d and f.schema_id = s.id and s.name = 
'sys');\n", F_FILT);
-       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', 'columnsize', 
'heapsize', 'indexsize', 'storagemodel') and f.type = %d and f.schema_id = s.id 
and s.name = 'sys');\n",
-                       F_FUNC);
-       pos += snprintf(buf + pos, bufsize - pos, "insert into 
sys.systemfunctions (select f.id from sys.functions f, sys.schemas s where 
f.name = 'storagemodelinit' and f.type = %d and f.schema_id = s.id and s.name = 
'sys');\n", F_PROC);
-
-       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 */
-}
-
-static str
-sql_update_feb2013_sp3(Client c)
-{
-       size_t bufsize = 4096, pos = 0;
-       char *buf = GDKmalloc(bufsize), *err = NULL;
-
-       /* aggregates on type WRD */
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.stddev_samp(val WRD) returns DOUBLE external name \"aggr\".\"stdev\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.stddev_pop(val WRD) returns DOUBLE external name \"aggr\".\"stdevp\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.var_samp(val WRD) returns DOUBLE external name \"aggr\".\"variance\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.var_pop(val WRD) returns DOUBLE external name \"aggr\".\"variancep\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate 
sys.median(val WRD) returns WRD external name \"aggr\".\"median\";\n");
-       pos += snprintf(buf + pos, bufsize - pos, "create aggregate sys.corr(e1 
WRD, e2 WRD) returns WRD external name \"aggr\".\"corr\";\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 ('stddev_samp', 'stddev_pop', 
'var_samp', 'var_pop', 'median', 'corr') and f.type = %d and f.schema_id = s.id 
and s.name = 'sys');\n",
-                       F_AGGR);
-
-       assert(pos < 4096);
-
-       printf("Running database upgrade commands:\n%s\n", buf);
-       err = SQLstatementIntern(c, &buf, "update", 1, 0, NULL);
-       GDKfree(buf);
-       return err;             /* usually MAL_SUCCEED */
-}
-
-static str
-sql_update_jan2014(Client c)
-{
-       size_t bufsize = 25000, pos = 0;
-       char *buf = GDKmalloc(bufsize), *err = NULL;
-       ValRecord *schvar = stack_get_var(((backend *) c->sqlcontext)->mvc, 
"current_schema");
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to