Changeset: 5e3fcba7d3d3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5e3fcba7d3d3
Modified Files:
sql/backends/monet5/sql_scenario.c
Branch: Apr2019
Log Message:
Protect global variables.
diffs (85 lines):
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
@@ -207,7 +207,7 @@ SQLepilogue(void *ret)
str res;
(void) ret;
- SQLexit(NULL);
+ (void) SQLexit(NULL);
/* this function is never called, but for the style of it, we clean
* up our own mess */
res = msab_retreatScenario(m);
@@ -367,15 +367,16 @@ SQLinit(Client c)
backend *be = NULL;
mvc *m = NULL;
-
#ifdef _SQL_SCENARIO_DEBUG
fprintf(stderr, "#SQLinit Monet 5\n");
#endif
- if (SQLinitialized)
- return MAL_SUCCEED;
+ MT_lock_set(&sql_contextLock);
+ if (SQLinitialized) {
+ MT_lock_unset(&sql_contextLock);
+ return MAL_SUCCEED;
+ }
- MT_lock_set(&sql_contextLock);
be_funcs = (backend_functions) {
.fstack = &monet5_freestack,
.fcode = &monet5_freecode,
@@ -678,9 +679,12 @@ SQLinitClient(Client c)
#ifdef _SQL_SCENARIO_DEBUG
fprintf(stderr, "#SQLinitClient\n");
#endif
- if (SQLinitialized == 0)// && (msg = SQLprelude(NULL)) != MAL_SUCCEED)
+
+ MT_lock_set(&sql_contextLock);
+ if (SQLinitialized == 0) {// && (msg = SQLprelude(NULL)) != MAL_SUCCEED)
+ MT_lock_unset(&sql_contextLock);
return msg;
- MT_lock_set(&sql_contextLock);
+ }
if ((msg = WLRinit()) != MAL_SUCCEED) {
MT_lock_unset(&sql_contextLock);
return msg;
@@ -698,12 +702,19 @@ str
SQLexitClient(Client c)
{
str err;
+
#ifdef _SQL_SCENARIO_DEBUG
fprintf(stderr, "#SQLexitClient\n");
#endif
- if (SQLinitialized == FALSE)
+
+ MT_lock_set(&sql_contextLock);
+ if (SQLinitialized == FALSE) {
+ MT_lock_unset(&sql_contextLock);
throw(SQL, "SQLexitClient", SQLSTATE(42000) "Catalogue not
available");
- if ((err = SQLresetClient(c)) != MAL_SUCCEED)
+ }
+ err = SQLresetClient(c);
+ MT_lock_unset(&sql_contextLock);
+ if (err != MAL_SUCCEED)
return err;
MALexitClient(c);
return MAL_SUCCEED;
@@ -833,8 +844,13 @@ SQLreader(Client c)
int language = -1;
mvc *m = NULL;
bool blocked = isa_block_stream(in->s);
+ int isSQLinitialized;
- if (SQLinitialized == FALSE) {
+ MT_lock_set(&sql_contextLock);
+ isSQLinitialized = SQLinitialized;
+ MT_lock_unset(&sql_contextLock);
+
+ if (isSQLinitialized == FALSE) {
c->mode = FINISHCLIENT;
return MAL_SUCCEED;
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list