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