mdb-schema: Exit with code 1 if the requested table is not found

This commit is contained in:
Evan Miller 2021-01-12 14:08:25 -05:00
parent 7893a948ce
commit 20842c642a
3 changed files with 12 additions and 4 deletions

View File

@ -559,7 +559,7 @@ void mdb_register_backend(MdbHandle *mdb, char *backend_name, guint32 capabiliti
const char *table_comment_statement, const char *per_table_comment_statement,
gchar* (*quote_schema_name)(const gchar*, const gchar*));
int mdb_set_default_backend(MdbHandle *mdb, const char *backend_name);
void mdb_print_schema(MdbHandle *mdb, FILE *outfile, char *tabname, char *dbnamespace, guint32 export_options);
int mdb_print_schema(MdbHandle *mdb, FILE *outfile, char *tabname, char *dbnamespace, guint32 export_options);
void mdb_print_col(FILE *outfile, gchar *col_val, int quote_text, int col_type, int bin_len, char *quote_char, char *escape_char, int flags);
/* sargs.c */

View File

@ -947,13 +947,14 @@ generate_table_schema(FILE *outfile, MdbCatalogEntry *entry, char *dbnamespace,
}
void
int
mdb_print_schema(MdbHandle *mdb, FILE *outfile, char *tabname, char *dbnamespace, guint32 export_options)
{
unsigned int i;
char *the_relation;
MdbCatalogEntry *entry;
const char *charset;
int success = (tabname == NULL);
/* clear unsupported options */
export_options &= mdb->default_backend->capabilities;
@ -981,6 +982,7 @@ mdb_print_schema(MdbHandle *mdb, FILE *outfile, char *tabname, char *dbnamespace
if ((tabname && !strcmp(entry->object_name, tabname))
|| (!tabname && mdb_is_user_table(entry))) {
generate_table_schema(outfile, entry, dbnamespace, export_options);
success = 1;
}
}
}
@ -1000,6 +1002,7 @@ mdb_print_schema(MdbHandle *mdb, FILE *outfile, char *tabname, char *dbnamespace
} while ((the_relation=mdb_get_relationships(mdb, dbnamespace, tabname)) != NULL);
}
}
return success;
}
#define MDB_BINEXPORT_MASK 0x0F

View File

@ -33,6 +33,7 @@ main (int argc, char **argv)
int opt_comments = MDB_SHEXP_DEFAULT & MDB_SHEXP_COMMENTS;
int opt_indexes = MDB_SHEXP_DEFAULT & MDB_SHEXP_INDEXES;
int opt_relations = MDB_SHEXP_DEFAULT & MDB_SHEXP_RELATIONS;
int success = 0;
GOptionEntry entries[] = {
{ "table", 'T', 0, G_OPTION_ARG_STRING, &tabname, "Only create schema for named table", "table"},
@ -107,13 +108,17 @@ main (int argc, char **argv)
export_options |= MDB_SHEXP_INDEXES;
if (opt_relations)
export_options |= MDB_SHEXP_RELATIONS;
mdb_print_schema(mdb, stdout, tabname, namespace, export_options);
success = mdb_print_schema(mdb, stdout, tabname, namespace, export_options);
if (tabname && !success) {
fprintf(stderr, "Error: No table named \"%s\" found in the database\n", tabname);
}
mdb_close (mdb);
g_option_context_free(opt_context);
g_free(namespace);
g_free(tabname);
return 0;
return !success;
}