Changeset: 21f92712b3f2 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=21f92712b3f2
Modified Files:
        tools/merovingian/client/monetdb.c
Branch: RIntegration
Log Message:

added flags to monetdb to immediately release a db after creation or stop 
before destruction. On popular request.


diffs (133 lines):

diff --git a/tools/merovingian/client/monetdb.c 
b/tools/merovingian/client/monetdb.c
--- a/tools/merovingian/client/monetdb.c
+++ b/tools/merovingian/client/monetdb.c
@@ -86,19 +86,21 @@ command_help(int argc, char *argv[])
                printf("    -P pass  password to use to login at remote 
merovingian\n");
                printf("  use the help command to get help for a particular 
command\n");
        } else if (strcmp(argv[1], "create") == 0) {
-               printf("Usage: monetdb create [-m pattern] database [database 
...]\n");
+               printf("Usage: monetdb create [-m pattern] [-r] database 
[database ...]\n");
                printf("  Initialises a new database or multiplexfunnel in the 
MonetDB Server.  A\n");
                printf("  database created with this command makes it 
available\n");
                printf("  for use, however in maintenance mode (see monetdb 
lock).\n");
                printf("Options:\n");
-               printf("  -m  create a multiplex funnel for pattern.\n");
+               printf("  -m  create a multiplex funnel for pattern\n");
+               printf("  -r  Immediately release newly create database from 
maintenance mode\n");
        } else if (strcmp(argv[1], "destroy") == 0) {
-               printf("Usage: monetdb destroy [-f] database [database ...]\n");
+               printf("Usage: monetdb destroy [-f] [-s] database [database 
...]\n");
                printf("  Removes the given database, including all its data 
and\n");
                printf("  logfiles.  Once destroy has completed, all data is 
lost.\n");
                printf("  Be careful when using this command.\n");
                printf("Options:\n");
                printf("  -f  do not ask for confirmation, destroy right 
away\n");
+               printf("  -s  stop database before its destruction if 
running\n");
        } else if (strcmp(argv[1], "lock") == 0) {
                printf("Usage: monetdb lock database [database ...]\n");
                printf("  Puts the given database in maintenance mode.  A 
database\n");
@@ -1435,6 +1437,7 @@ command_create(int argc, char *argv[])
 {
        int i;
        char *mfunnel = NULL;
+       int release = 0;
        sabdb *orig = NULL;
        sabdb *stats = NULL;
 
@@ -1451,24 +1454,29 @@ command_create(int argc, char *argv[])
                        break;
                }
                if (argv[i][0] == '-') {
+                       if (argv[i][1] == 'r') {
+                               release = 1;
+                               argv[i] = NULL;
+                               continue;
+                       }
                        if (argv[i][1] == 'm') {
                                if (argv[i][2] != '\0') {
                                        mfunnel = &argv[i][2];
                                        argv[i] = NULL;
+                                       continue;
                                } else if (i + 1 < argc && argv[i + 1][0] != 
'-') {
-                                       argv[i] = NULL;
                                        mfunnel = argv[++i];
                                        argv[i] = NULL;
+                                       continue;
                                } else {
                                        fprintf(stderr, "create: -m needs an 
argument\n");
                                        command_help(2, &argv[-1]);
                                        exit(1);
                                }
-                       } else {
-                               fprintf(stderr, "create: unknown option: %s\n", 
argv[i]);
-                               command_help(argc + 1, &argv[-1]);
-                               exit(1);
                        }
+                       fprintf(stderr, "create: unknown option: %s\n", 
argv[i]);
+                       command_help(argc + 1, &argv[-1]);
+                       exit(1);
                }
        }
 
@@ -1495,6 +1503,10 @@ command_create(int argc, char *argv[])
        } else {
                simple_argv_cmd(argv[0], orig, "create", 
                                "created database in maintenance mode", NULL);
+               if (release) {
+                       simple_argv_cmd(argv[0], orig, "release",
+                                       "taken database out of maintenance 
mode", NULL);
+               }
        }
        msab_freeStatus(&orig);
 }
@@ -1504,6 +1516,7 @@ command_destroy(int argc, char *argv[])
 {
        int i;
        int force = 0;    /* ask for confirmation */
+       int stop = 0; /* stop database before destroying it */
        char *e;
        sabdb *orig = NULL;
        sabdb *stats = NULL;
@@ -1524,12 +1537,17 @@ command_destroy(int argc, char *argv[])
                        if (argv[i][1] == 'f') {
                                force = 1;
                                argv[i] = NULL;
-                       } else {
-                               fprintf(stderr, "destroy: unknown option: 
%s\n", argv[i]);
-                               command_help(argc + 1, &argv[-1]);
-                               exit(1);
+                               continue;
                        }
-               }
+                       if (argv[i][1] == 's') {
+                               stop = 1;
+                               argv[i] = NULL;
+                               continue;
+                       }
+                       fprintf(stderr, "destroy: unknown option: %s\n", 
argv[i]);
+                       command_help(argc + 1, &argv[-1]);
+                       exit(1);
+                       }
        }
 
        if ((e = MEROgetStatus(&orig, NULL)) != NULL) {
@@ -1560,6 +1578,19 @@ command_destroy(int argc, char *argv[])
                        exit(1);
                }
        }
+       /* user requested stopping the db's before destruction */
+       if (stop) {
+               sabdb *on = NULL;
+               /* stop only works on databases that are running (...), so only 
call for those*/
+               for (stats = orig; stats != NULL; stats = stats->next) {
+                       if (stats->state == SABdbRunning) {
+                               on = stats->next; /* some pointer games*/
+                               stats->next = NULL;
+                               simple_argv_cmd(argv[0], stats, "stop", 
"stopped database", NULL);
+                               stats->next = on;
+                       }
+               }
+       }
 
        simple_argv_cmd(argv[0], orig, "destroy", "destroyed database", NULL);
        msab_freeStatus(&orig);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to