mirror of
https://github.com/mdbtools/mdbtools.git
synced 2026-01-02 12:27:09 +08:00
mdb-schema: Exit with code 1 if the requested table is not found
This commit is contained in:
@@ -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,
|
const char *table_comment_statement, const char *per_table_comment_statement,
|
||||||
gchar* (*quote_schema_name)(const gchar*, const gchar*));
|
gchar* (*quote_schema_name)(const gchar*, const gchar*));
|
||||||
int mdb_set_default_backend(MdbHandle *mdb, const char *backend_name);
|
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);
|
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 */
|
/* sargs.c */
|
||||||
|
|||||||
@@ -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)
|
mdb_print_schema(MdbHandle *mdb, FILE *outfile, char *tabname, char *dbnamespace, guint32 export_options)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
char *the_relation;
|
char *the_relation;
|
||||||
MdbCatalogEntry *entry;
|
MdbCatalogEntry *entry;
|
||||||
const char *charset;
|
const char *charset;
|
||||||
|
int success = (tabname == NULL);
|
||||||
|
|
||||||
/* clear unsupported options */
|
/* clear unsupported options */
|
||||||
export_options &= mdb->default_backend->capabilities;
|
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))
|
if ((tabname && !strcmp(entry->object_name, tabname))
|
||||||
|| (!tabname && mdb_is_user_table(entry))) {
|
|| (!tabname && mdb_is_user_table(entry))) {
|
||||||
generate_table_schema(outfile, entry, dbnamespace, export_options);
|
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);
|
} while ((the_relation=mdb_get_relationships(mdb, dbnamespace, tabname)) != NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MDB_BINEXPORT_MASK 0x0F
|
#define MDB_BINEXPORT_MASK 0x0F
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ main (int argc, char **argv)
|
|||||||
int opt_comments = MDB_SHEXP_DEFAULT & MDB_SHEXP_COMMENTS;
|
int opt_comments = MDB_SHEXP_DEFAULT & MDB_SHEXP_COMMENTS;
|
||||||
int opt_indexes = MDB_SHEXP_DEFAULT & MDB_SHEXP_INDEXES;
|
int opt_indexes = MDB_SHEXP_DEFAULT & MDB_SHEXP_INDEXES;
|
||||||
int opt_relations = MDB_SHEXP_DEFAULT & MDB_SHEXP_RELATIONS;
|
int opt_relations = MDB_SHEXP_DEFAULT & MDB_SHEXP_RELATIONS;
|
||||||
|
int success = 0;
|
||||||
|
|
||||||
GOptionEntry entries[] = {
|
GOptionEntry entries[] = {
|
||||||
{ "table", 'T', 0, G_OPTION_ARG_STRING, &tabname, "Only create schema for named table", "table"},
|
{ "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;
|
export_options |= MDB_SHEXP_INDEXES;
|
||||||
if (opt_relations)
|
if (opt_relations)
|
||||||
export_options |= MDB_SHEXP_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);
|
mdb_close (mdb);
|
||||||
|
|
||||||
g_option_context_free(opt_context);
|
g_option_context_free(opt_context);
|
||||||
g_free(namespace);
|
g_free(namespace);
|
||||||
g_free(tabname);
|
g_free(tabname);
|
||||||
return 0;
|
return !success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user