Changeset: bc42992bbd9c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bc42992bbd9c Modified Files: tools/merovingian/client/monetdb.c Branch: hot-snapshot Log Message:
'monetdb snapshot list', client side diffs (105 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 @@ -171,7 +171,11 @@ command_help(int argc, char *argv[]) printf("Usage: monetdb version\n"); printf(" prints the version of this monetdb utility\n"); } else if (strcmp(argv[1], "snapshot") == 0) { - if (argc > 2 && strcmp(argv[2], "create") == 0) { + if (argc > 2 && strcmp(argv[2], "list") == 0) { + printf("Usage: monetdb snapshot list ]<dbname>...]\n"); + printf(" List snapshots for the given database, or all databases\n"); + printf(" if none given.\n"); + } else if (argc > 2 && strcmp(argv[2], "create") == 0) { printf("Usage: monetdb snapshot create [-t <targetfile>] <dbname> [<dbname>..]\n"); printf(" Take a snapshot of the listed databases. Unless -t is given, the snapshots\n"); printf(" are written to files named\n"); @@ -1696,6 +1700,27 @@ snapshot_create_automatic(sabdb *databas } static void +snapshot_list(sabdb *databases) { + char *ret; + char *out; + + for (sabdb *db = databases; db != NULL; db = db->next) { + printf("Listing %s:\n", db->dbname); + ret = control_send(&out, mero_host, mero_port, db->dbname, "snapshot list", 1, mero_pass); + if (ret != NULL) { + fprintf(stderr, "snapshot list: %s\n", ret); + exit(2); + } + if (strncmp(out, "OK\n", 3) == 0) { + printf(" ok."); + } else { + printf("failed: %s\n", out); + } + free(out); + } +} + +static void snapshot_restore_adhoc(char *sourcefile, char *dbname) { char *ret; @@ -1719,6 +1744,7 @@ snapshot_restore_adhoc(char *sourcefile, if (!monetdb_quiet) { printf("done\n"); } + free(out); } else { fprintf(stderr, "failed: %s\n", out); exit(1); @@ -1787,6 +1813,43 @@ command_snapshot_create(int argc, char * static void +command_snapshot_list(int argc, char *argv[]) +{ + char *err; + + /* walk through the arguments and hunt for "options" */ + for (int i = 1; i < argc; i++) { + if (strcmp(argv[i], "--") == 0) { + argv[i] = NULL; + break; + } + if (argv[i][0] == '-') { + fprintf(stderr, "snapshot create: unknown option: %s\n", argv[i]); + command_help(argc + 2, &argv[-2]); // ewww + exit(1); + } + } + + /* Look up the databases */ + sabdb *all = NULL; + err = MEROgetStatus(&all, NULL); + if (err != NULL) { + fprintf(stderr, "snapshot: %s\n", err); + free(err); + exit(2); + } + sabdb *databases = globMatchDBS(argc, argv, &all, "snapshot"); + msab_freeStatus(&all); + if (databases == NULL) + exit(1); + + snapshot_list(databases); + + msab_freeStatus(&databases); +} + + +static void command_snapshot_restore(int argc, char *argv[]) { char *sourcefile = NULL; @@ -1860,6 +1923,8 @@ command_snapshot(int argc, char *argv[]) /* pick the right subcommand */ if (strcmp(argv[1], "create") == 0) { command_snapshot_create(argc - 1, &argv[1]); + } else if (strcmp(argv[1], "list") == 0) { + command_snapshot_list(argc - 1, &argv[1]); } else if (strcmp(argv[1], "restore") == 0) { command_snapshot_restore(argc - 1, &argv[1]); } else { _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list