Changeset: 89effe1e7bc8 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=89effe1e7bc8
Modified Files:
        sql/backends/monet5/sql_upgrades.c
Branch: Dec2016
Log Message:

add upgrade code for old sql.settimeout change


diffs (51 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
@@ -2192,6 +2192,32 @@ sql_update_dec2016_sp2(Client c, mvc *sq
        return err;             /* usually MAL_SUCCEED */
 }
 
+static str
+sql_update_dec2016_sp3(Client c, mvc *sql)
+{
+       size_t bufsize = 2048, pos = 0;
+       char *buf = GDKmalloc(bufsize), *err = NULL;
+       char *schema = stack_get_string(sql, "current_schema");
+
+       pos += snprintf(buf + pos, bufsize - pos, 
+                       "set schema \"sys\";\n"
+                       "drop procedure sys.settimeout(bigint);"
+                       "drop procedure sys.settimeout(bigint,bigint);"
+                       "drop procedure sys.setsession(bigint);"
+                       "create procedure sys.settimeout(\"query\" bigint) 
external name clients.settimeout;"
+                       "create procedure sys.settimeout(\"query\" bigint, 
\"session\" bigint) external name clients.settimeout;"
+                       "create procedure sys.setsession(\"timeout\" bigint) 
external name clients.setsession;");
+       if (schema) 
+               pos += snprintf(buf + pos, bufsize - pos, "set schema 
\"%s\";\n", 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)
 {
@@ -2345,4 +2371,14 @@ SQLupgrades(Client c, mvc *m)
                fprintf(stderr, "!%s\n", err);
                GDKfree(err);
        }
+
+       sql_find_subtype(&tp, "bigint", 0, 0);
+       if ((f = sql_bind_func(m->sa, s, "settimeout", &tp, NULL, F_PROC)) != 
NULL &&
+            /* The settimeout function used to be in the sql module */
+            f->func->sql && f->func->query && strcasestr(f->func->query, 
"sql") != NULL) {
+               if ((err = sql_update_dec2016_sp3(c, m)) != NULL) {
+                       fprintf(stderr, "!%s\n", err);
+                       GDKfree(err);
+               }
+       }
 }
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to