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]

Reply via email to