Changeset: e3f80b513581 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e3f80b513581 Modified Files: monetdb5/mal/mal_resource.c monetdb5/mal/mal_resource.h sql/backends/monet5/sql_upgrades.c sql/scripts/99_system.sql Branch: leftmart Log Message:
merge with the default diffs (70 lines): diff --git a/monetdb5/mal/mal_resource.c b/monetdb5/mal/mal_resource.c --- a/monetdb5/mal/mal_resource.c +++ b/monetdb5/mal/mal_resource.c @@ -164,7 +164,7 @@ MALadmission(lng argclaim, lng hotclaim) * By keeping the query start time in the client record we can delay * them when resource stress occurs. */ -ATOMIC_TYPE mal_running; +volatile ATOMIC_TYPE mal_running; #ifdef ATOMIC_LOCK MT_Lock mal_runningLock MT_LOCK_INITIALIZER("mal_runningLock"); #endif @@ -194,7 +194,7 @@ MALresourceFairness(lng usec) clk = clk > FAIRNESS_THRESHOLD? FAIRNESS_THRESHOLD:clk; /* always keep one running to avoid all waiting */ - while (clk > DELAYUNIT && users > 1 && mal_running > GDKnr_threads && rss > MEMORY_THRESHOLD) { + while (clk > DELAYUNIT && users > 1 && ATOMIC_GET(mal_running, mal_runningLock) > (ATOMIC_TYPE) GDKnr_threads && rss > MEMORY_THRESHOLD) { if ( delayed++ == 0){ PARDEBUG mnstr_printf(GDKstdout, "#delay initial ["LLFMT"] memory "SZFMT"[%f]\n", clk, rss, MEMORY_THRESHOLD ); PARDEBUG mnstr_flush(GDKstdout); @@ -218,7 +218,7 @@ MALresourceFairness(lng usec) size_t MALrunningThreads(void) { - return mal_running; + return ATOMIC_GET(mal_running, mal_runningLock); } void diff --git a/monetdb5/mal/mal_resource.h b/monetdb5/mal/mal_resource.h --- a/monetdb5/mal/mal_resource.h +++ b/monetdb5/mal/mal_resource.h @@ -11,7 +11,7 @@ #include "mal_interpreter.h" #include "gdk_atomic.h" -mal_export ATOMIC_TYPE mal_running; +mal_export volatile ATOMIC_TYPE mal_running; #ifdef ATOMIC_LOCK mal_export MT_Lock mal_runningLock; #endif 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 @@ -1260,6 +1260,11 @@ sql_update_jun2016(Client c) pos += snprintf(buf + pos, bufsize - pos, "insert into sys.systemfunctions (select id from sys.functions where name = 'storage' and schema_id = (select id from sys.schemas where name = 'sys') and id not in (select function_id from sys.systemfunctions));\n"); + /* change to 99_system.sql: correct invalid FK schema ids, set them to schema id 2000 (the "sys" schema) */ + pos += snprintf(buf + pos, bufsize - pos, + "UPDATE sys.types SET schema_id = 2000 WHERE schema_id = 0 AND schema_id NOT IN (SELECT id from sys.schemas);\n" + "UPDATE sys.functions SET schema_id = 2000 WHERE schema_id = 0 AND schema_id NOT IN (SELECT id from sys.schemas);\n"); + if (schema) { pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", schema); free(schema); diff --git a/sql/scripts/99_system.sql b/sql/scripts/99_system.sql --- a/sql/scripts/99_system.sql +++ b/sql/scripts/99_system.sql @@ -15,5 +15,9 @@ update _tables set system = true; -- only system schemas until now update schemas set system = true; +-- correct invalid FK schema ids, set them to schema id 2000 (the "sys" schema) +UPDATE sys.types SET schema_id = 2000 WHERE schema_id = 0 AND schema_id NOT IN (SELECT id from sys.schemas); +UPDATE sys.functions SET schema_id = 2000 WHERE schema_id = 0 AND schema_id NOT IN (SELECT id from sys.schemas); + -- make sure all gets commited COMMIT; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list