Changeset: cfd2fb0691df for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/cfd2fb0691df
Modified Files:
monetdb5/mal/mal_session.c
sql/backends/monet5/sql_scenario.c
Branch: Jun2023
Log Message:
Reenable check for database in maintenance mode.
diffs (86 lines):
diff --git a/monetdb5/mal/mal_session.c b/monetdb5/mal/mal_session.c
--- a/monetdb5/mal/mal_session.c
+++ b/monetdb5/mal/mal_session.c
@@ -304,39 +304,7 @@ MSscheduleClient(str command, str challe
GDKfree(command);
return;
} else {
- str err;
- oid uid = 0;
- sabdb *stats = NULL;
-
- if (!GDKinmemory(0) && !GDKembedded()) {
- err = msab_getMyStatus(&stats);
- if (err !=NULL) {
- /* this is kind of awful, but we need to get
rid of this
- * message */
- free(err);
- mnstr_printf(fout, "!internal server error, "
- "please try again
later\n");
- exit_streams(fin, fout);
- GDKfree(command);
- return;
- }
- if (stats->locked) {
- if (uid == 0) {
- mnstr_printf(fout, "#server is running
in "
- "maintenance
mode\n");
- } else {
- mnstr_printf(fout, "!server is running
in "
- "maintenance
mode, please try again later\n");
- exit_streams(fin, fout);
- msab_freeStatus(&stats);
- GDKfree(command);
- return;
- }
- }
- msab_freeStatus(&stats);
- }
-
- c = MCinitClient(uid, fin, fout);
+ c = MCinitClient(0, fin, fout);
if (c == NULL) {
if (MCshutdowninprogress())
mnstr_printf(fout,
@@ -366,9 +334,9 @@ MSscheduleClient(str command, str challe
cleanUpScheduleClient(c, &command, &msg);
return;
}
- if (!GDKgetenv_isyes(mal_enableflag) &&
- (strncasecmp("sql", lang, 3) != 0 && uid != 0)) {
-
+ if (!GDKgetenv_isyes(mal_enableflag)
+ && strncasecmp("sql", lang, 3) != 0
+ && strcmp(user, "monetdb") != 0) {
mnstr_printf(fout,
"!only the 'monetdb' user can
use non-sql languages. "
"run mserver5 with --set
%s=yes to change this.\n",
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
@@ -393,6 +393,25 @@ SQLprepareClient(Client c, const char *p
msg = userCheckCredentials( m, c, pwhash, challenge, algo);
if (msg)
goto bailout1;
+ if (!GDKinmemory(0) && !GDKembedded()) {
+ sabdb *stats = NULL;
+ bool locked = false;
+ char *err = msab_getMyStatus(&stats);
+ if (err || stats == NULL)
+ free(err);
+ else
+ locked = stats->locked;
+ msab_freeStatus(&stats);
+ if (locked) {
+ if (c->user == 0) {
+ mnstr_printf(c->fdout, "#server is
running in "
+ "maintenance
mode\n");
+ } else {
+ msg =
createException(SQL,"sql.initClient", SQLSTATE(42000) "server is running in
maintenance mode, please try again later\n");
+ goto bailout1;
+ }
+ }
+ }
switch (monet5_user_set_def_schema(m, c->user, c->username)) {
case -1:
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]