mirror of
https://github.com/mdbtools/mdbtools.git
synced 2025-11-26 02:09:49 +08:00
merge with master
This commit is contained in:
committed by
Jimmytaker
parent
cf7980923e
commit
a972c1638d
@@ -50,9 +50,7 @@
|
|||||||
#define MDB_MEMO_OVERHEAD 12
|
#define MDB_MEMO_OVERHEAD 12
|
||||||
#define MDB_BIND_SIZE 16384
|
#define MDB_BIND_SIZE 16384
|
||||||
|
|
||||||
#define BIN_MODE_STRIP 0
|
#define MDB_DEPRECATED __attribute__((deprecated))
|
||||||
#define BIN_MODE_RAW 1
|
|
||||||
#define BIN_MODE_OCTAL 2
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
MDB_PAGE_DB = 0,
|
MDB_PAGE_DB = 0,
|
||||||
@@ -174,12 +172,16 @@ enum {
|
|||||||
};
|
};
|
||||||
#define MDB_SHEXP_DEFAULT (MDB_SHEXP_CST_NOTNULL | MDB_SHEXP_COMMENTS | MDB_SHEXP_INDEXES | MDB_SHEXP_RELATIONS)
|
#define MDB_SHEXP_DEFAULT (MDB_SHEXP_CST_NOTNULL | MDB_SHEXP_COMMENTS | MDB_SHEXP_INDEXES | MDB_SHEXP_RELATIONS)
|
||||||
|
|
||||||
|
/* csv export binary options */
|
||||||
|
enum {
|
||||||
|
MDB_BINEXPORT_STRIP,
|
||||||
|
MDB_BINEXPORT_RAW,
|
||||||
|
MDB_BINEXPORT_OCTAL
|
||||||
|
};
|
||||||
|
|
||||||
#define IS_JET4(mdb) (mdb->f->jet_version==MDB_VER_JET4) /* obsolete */
|
#define IS_JET4(mdb) (mdb->f->jet_version==MDB_VER_JET4) /* obsolete */
|
||||||
#define IS_JET3(mdb) (mdb->f->jet_version==MDB_VER_JET3)
|
#define IS_JET3(mdb) (mdb->f->jet_version==MDB_VER_JET3)
|
||||||
|
|
||||||
#define is_quote_type(x) (x==MDB_TEXT || x==MDB_OLE || x==MDB_MEMO || x==MDB_DATETIME || x==MDB_BINARY || x==MDB_REPID)
|
|
||||||
#define is_binary_type(x) (x==MDB_OLE || x==MDB_BINARY || x==MDB_REPID)
|
|
||||||
|
|
||||||
/* forward declarations */
|
/* forward declarations */
|
||||||
typedef struct mdbindex MdbIndex;
|
typedef struct mdbindex MdbIndex;
|
||||||
typedef struct mdbsargtree MdbSargNode;
|
typedef struct mdbsargtree MdbSargNode;
|
||||||
@@ -435,8 +437,8 @@ typedef struct {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* mem.c */
|
/* mem.c */
|
||||||
extern void mdb_init();
|
extern void MDB_DEPRECATED mdb_init();
|
||||||
extern void mdb_exit();
|
extern void MDB_DEPRECATED mdb_exit();
|
||||||
|
|
||||||
/* file.c */
|
/* file.c */
|
||||||
extern ssize_t mdb_read_pg(MdbHandle *mdb, unsigned long pg);
|
extern ssize_t mdb_read_pg(MdbHandle *mdb, unsigned long pg);
|
||||||
@@ -506,14 +508,14 @@ extern int mdb_read_row(MdbTableDef *table, unsigned int row);
|
|||||||
extern void mdb_buffer_dump(const void *buf, int start, size_t len);
|
extern void mdb_buffer_dump(const void *buf, int start, size_t len);
|
||||||
|
|
||||||
/* backend.c */
|
/* backend.c */
|
||||||
extern char* mdb_get_coltype_string(MdbBackend *backend, int col_type);
|
extern char* MDB_DEPRECATED mdb_get_coltype_string(MdbBackend *backend, int col_type);
|
||||||
extern int mdb_coltype_takes_length(MdbBackend *backend, int col_type);
|
extern int MDB_DEPRECATED mdb_coltype_takes_length(MdbBackend *backend, int col_type);
|
||||||
extern const MdbBackendType* mdb_get_colbacktype(const MdbColumn *col);
|
extern const MdbBackendType* mdb_get_colbacktype(const MdbColumn *col);
|
||||||
extern const char* mdb_get_colbacktype_string(const MdbColumn *col);
|
extern const char* mdb_get_colbacktype_string(const MdbColumn *col);
|
||||||
extern int mdb_colbacktype_takes_length(const MdbColumn *col);
|
extern int mdb_colbacktype_takes_length(const MdbColumn *col);
|
||||||
extern void mdb_init_backends();
|
extern void MDB_DEPRECATED mdb_init_backends();
|
||||||
extern void mdb_register_backend(char *backend_name, guint32 capabilities, MdbBackendType *backend_type, MdbBackendType *type_shortdate, MdbBackendType *type_autonum, const char *short_now, const char *long_now, const char *charset_statement, const char *drop_statement, const char *constaint_not_empty_statement, const char *column_comment_statement, const char *table_comment_statement, gchar* (*quote_schema_name)(const gchar*, const gchar*));
|
extern void mdb_register_backend(char *backend_name, guint32 capabilities, MdbBackendType *backend_type, MdbBackendType *type_shortdate, MdbBackendType *type_autonum, const char *short_now, const char *long_now, const char *charset_statement, const char *drop_statement, const char *constaint_not_empty_statement, const char *column_comment_statement, const char *table_comment_statement, gchar* (*quote_schema_name)(const gchar*, const gchar*));
|
||||||
extern void mdb_remove_backends();
|
extern void MDB_DEPRECATED mdb_remove_backends();
|
||||||
extern int mdb_set_default_backend(MdbHandle *mdb, const char *backend_name);
|
extern int mdb_set_default_backend(MdbHandle *mdb, const char *backend_name);
|
||||||
extern void generate_table_schema(FILE *outfile, MdbCatalogEntry *entry, char *dbnamespace, guint32 export_options);
|
extern void generate_table_schema(FILE *outfile, MdbCatalogEntry *entry, char *dbnamespace, guint32 export_options);
|
||||||
extern void generate_table_schemas(char *buf, unsigned int *bi, unsigned int *bsize, MdbCatalogEntry *entry, char *dbnamespace, guint32 export_options);
|
extern void generate_table_schemas(char *buf, unsigned int *bi, unsigned int *bsize, MdbCatalogEntry *entry, char *dbnamespace, guint32 export_options);
|
||||||
|
|||||||
@@ -57,49 +57,6 @@ static MdbBackendType mdb_access_types[] = {
|
|||||||
MdbBackendType_STRUCT_ELEMENT("Numeric",1,1,0)
|
MdbBackendType_STRUCT_ELEMENT("Numeric",1,1,0)
|
||||||
};
|
};
|
||||||
|
|
||||||
/** SQLite data types. According to the SQLite specs only the first set of elements are supported.
|
|
||||||
* However, during testing I found out that if I use the first set, then all texts, and dates are written in
|
|
||||||
* Memo fields, which makes them visible only after clicking on them (one at a time) in a DB Manager. The second set of elements
|
|
||||||
* makes these fields directly visible in a DB Manager like they are visible in Access and therefore I prefer them.
|
|
||||||
*/
|
|
||||||
static MdbBackendType mdb_sqlite_types[] = {
|
|
||||||
//MdbBackendType_STRUCT_ELEMENT("BLOB", 0,0,0),
|
|
||||||
//MdbBackendType_STRUCT_ELEMENT("INTEGER", 0,0,0),
|
|
||||||
//MdbBackendType_STRUCT_ELEMENT("INTEGER", 0,0,0),
|
|
||||||
//MdbBackendType_STRUCT_ELEMENT("INTEGER", 0,0,0),
|
|
||||||
//MdbBackendType_STRUCT_ELEMENT("INTEGER", 0,0,0),
|
|
||||||
//MdbBackendType_STRUCT_ELEMENT("REAL", 0,0,0),
|
|
||||||
//MdbBackendType_STRUCT_ELEMENT("REAL", 0,0,0),
|
|
||||||
//MdbBackendType_STRUCT_ELEMENT("REAL", 0,0,0),
|
|
||||||
//MdbBackendType_STRUCT_ELEMENT("TEXT", 0,0,1),
|
|
||||||
//MdbBackendType_STRUCT_ELEMENT("BLOB", 0,0,1),
|
|
||||||
//MdbBackendType_STRUCT_ELEMENT("TEXT", 0,0,1),
|
|
||||||
//MdbBackendType_STRUCT_ELEMENT("BLOB", 0,0,1),
|
|
||||||
//MdbBackendType_STRUCT_ELEMENT("TEXT", 0,0,1),
|
|
||||||
//MdbBackendType_STRUCT_ELEMENT("BLOB", 0,0,1),
|
|
||||||
//MdbBackendType_STRUCT_ELEMENT("BLOB", 0,0,1),
|
|
||||||
//MdbBackendType_STRUCT_ELEMENT("INTEGER", 0,0,0),
|
|
||||||
//MdbBackendType_STRUCT_ELEMENT("INTEGER", 0,0,0),
|
|
||||||
|
|
||||||
MdbBackendType_STRUCT_ELEMENT("BLOB", 0,0,0),
|
|
||||||
MdbBackendType_STRUCT_ELEMENT("INTEGER", 0,0,0),
|
|
||||||
MdbBackendType_STRUCT_ELEMENT("INTEGER", 0,0,0),
|
|
||||||
MdbBackendType_STRUCT_ELEMENT("INTEGER", 0,0,0),
|
|
||||||
MdbBackendType_STRUCT_ELEMENT("INTEGER", 0,0,0),
|
|
||||||
MdbBackendType_STRUCT_ELEMENT("REAL", 0,0,0),
|
|
||||||
MdbBackendType_STRUCT_ELEMENT("REAL", 0,0,0),
|
|
||||||
MdbBackendType_STRUCT_ELEMENT("REAL", 0,0,0),
|
|
||||||
MdbBackendType_STRUCT_ELEMENT("DateTime", 0,0,1),
|
|
||||||
MdbBackendType_STRUCT_ELEMENT("BLOB", 0,0,1),
|
|
||||||
MdbBackendType_STRUCT_ELEMENT("varchar", 0,0,1),
|
|
||||||
MdbBackendType_STRUCT_ELEMENT("BLOB", 0,0,1),
|
|
||||||
MdbBackendType_STRUCT_ELEMENT("TEXT", 0,0,1),
|
|
||||||
MdbBackendType_STRUCT_ELEMENT("BLOB", 0,0,1),
|
|
||||||
MdbBackendType_STRUCT_ELEMENT("BLOB", 0,0,1),
|
|
||||||
MdbBackendType_STRUCT_ELEMENT("INTEGER", 0,0,0),
|
|
||||||
MdbBackendType_STRUCT_ELEMENT("INTEGER", 0,0,0),
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Oracle data types */
|
/* Oracle data types */
|
||||||
static MdbBackendType mdb_oracle_types[] = {
|
static MdbBackendType mdb_oracle_types[] = {
|
||||||
MdbBackendType_STRUCT_ELEMENT("Oracle_Unknown 0x00",0,0,0),
|
MdbBackendType_STRUCT_ELEMENT("Oracle_Unknown 0x00",0,0,0),
|
||||||
@@ -193,6 +150,28 @@ static MdbBackendType mdb_mysql_types[] = {
|
|||||||
};
|
};
|
||||||
static MdbBackendType mdb_mysql_shortdate_type =
|
static MdbBackendType mdb_mysql_shortdate_type =
|
||||||
MdbBackendType_STRUCT_ELEMENT("date",0,0,0);
|
MdbBackendType_STRUCT_ELEMENT("date",0,0,0);
|
||||||
|
|
||||||
|
/* sqlite data types */
|
||||||
|
static MdbBackendType mdb_sqlite_types[] = {
|
||||||
|
MdbBackendType_STRUCT_ELEMENT("BLOB", 0,0,0),
|
||||||
|
MdbBackendType_STRUCT_ELEMENT("INTEGER", 0,0,0),
|
||||||
|
MdbBackendType_STRUCT_ELEMENT("INTEGER", 0,0,0),
|
||||||
|
MdbBackendType_STRUCT_ELEMENT("INTEGER", 0,0,0),
|
||||||
|
MdbBackendType_STRUCT_ELEMENT("INTEGER", 0,0,0),
|
||||||
|
MdbBackendType_STRUCT_ELEMENT("REAL", 0,0,0),
|
||||||
|
MdbBackendType_STRUCT_ELEMENT("REAL", 0,0,0),
|
||||||
|
MdbBackendType_STRUCT_ELEMENT("REAL", 0,0,0),
|
||||||
|
MdbBackendType_STRUCT_ELEMENT("DateTime", 0,0,1),
|
||||||
|
MdbBackendType_STRUCT_ELEMENT("BLOB", 0,0,1),
|
||||||
|
MdbBackendType_STRUCT_ELEMENT("varchar", 0,0,1),
|
||||||
|
MdbBackendType_STRUCT_ELEMENT("BLOB", 0,0,1),
|
||||||
|
MdbBackendType_STRUCT_ELEMENT("TEXT", 0,0,1),
|
||||||
|
MdbBackendType_STRUCT_ELEMENT("BLOB", 0,0,1),
|
||||||
|
MdbBackendType_STRUCT_ELEMENT("BLOB", 0,0,1),
|
||||||
|
MdbBackendType_STRUCT_ELEMENT("INTEGER", 0,0,0),
|
||||||
|
MdbBackendType_STRUCT_ELEMENT("INTEGER", 0,0,0),
|
||||||
|
};
|
||||||
|
|
||||||
#ifndef JAVA
|
#ifndef JAVA
|
||||||
static gboolean mdb_drop_backend(gpointer key, gpointer value, gpointer data);
|
static gboolean mdb_drop_backend(gpointer key, gpointer value, gpointer data);
|
||||||
|
|
||||||
@@ -280,7 +259,7 @@ quote_with_squotes(const gchar* value)
|
|||||||
return quote_generic(value, '\'', '\'');
|
return quote_generic(value, '\'', '\'');
|
||||||
}
|
}
|
||||||
|
|
||||||
char *
|
char * MDB_DEPRECATED
|
||||||
mdb_get_coltype_string(MdbBackend *backend, int col_type)
|
mdb_get_coltype_string(MdbBackend *backend, int col_type)
|
||||||
{
|
{
|
||||||
static int warn_deprecated = 0;
|
static int warn_deprecated = 0;
|
||||||
@@ -298,7 +277,7 @@ mdb_get_coltype_string(MdbBackend *backend, int col_type)
|
|||||||
return backend->types_table[col_type].name;
|
return backend->types_table[col_type].name;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int MDB_DEPRECATED
|
||||||
mdb_coltype_takes_length(MdbBackend *backend, int col_type)
|
mdb_coltype_takes_length(MdbBackend *backend, int col_type)
|
||||||
{
|
{
|
||||||
static int warn_deprecated = 0;
|
static int warn_deprecated = 0;
|
||||||
@@ -346,13 +325,17 @@ mdb_colbacktype_takes_length(const MdbColumn *col)
|
|||||||
return type->needs_length;
|
return type->needs_length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MDB_DEPRECATED mdb_init_backends() {
|
||||||
|
fprintf(stderr, "mdb_init_backends() is DEPRECATED and does nothing. Stop calling it.\n");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* _mdb_init_backends
|
* _mdb_init_backends
|
||||||
*
|
*
|
||||||
* Initializes the mdb_backends hash and loads the builtin backends.
|
* Initializes the mdb_backends hash and loads the builtin backends.
|
||||||
* Use mdb_remove_backends() to destroy this hash when done.
|
* Use mdb_remove_backends() to destroy this hash when done.
|
||||||
*/
|
*/
|
||||||
void _mdb_init_backends()
|
void __attribute__ ((constructor)) _mdb_init_backends()
|
||||||
{
|
{
|
||||||
mdb_backends = g_hash_table_new(g_str_hash, g_str_equal);
|
mdb_backends = g_hash_table_new(g_str_hash, g_str_equal);
|
||||||
|
|
||||||
@@ -366,16 +349,6 @@ void _mdb_init_backends()
|
|||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
quote_schema_name_bracket_merge);
|
quote_schema_name_bracket_merge);
|
||||||
mdb_register_backend("sqlite", //A lot of guessing and gut feelings went into this one. For my DBs it works fine.
|
|
||||||
MDB_SHEXP_DROPTABLE|MDB_SHEXP_RELATIONS|MDB_SHEXP_DEFVALUES,
|
|
||||||
mdb_sqlite_types, NULL, NULL,
|
|
||||||
"date('now')", "date('now')",
|
|
||||||
"-- That file uses encoding %s\n",
|
|
||||||
"DROP TABLE IF EXISTS %s;\n",
|
|
||||||
NULL,
|
|
||||||
NULL,
|
|
||||||
NULL,
|
|
||||||
quote_schema_name_rquotes_merge);
|
|
||||||
mdb_register_backend("sybase",
|
mdb_register_backend("sybase",
|
||||||
MDB_SHEXP_DROPTABLE|MDB_SHEXP_CST_NOTNULL|MDB_SHEXP_CST_NOTEMPTY|MDB_SHEXP_COMMENTS|MDB_SHEXP_DEFVALUES,
|
MDB_SHEXP_DROPTABLE|MDB_SHEXP_CST_NOTNULL|MDB_SHEXP_CST_NOTEMPTY|MDB_SHEXP_COMMENTS|MDB_SHEXP_DEFVALUES,
|
||||||
mdb_sybase_types, &mdb_sybase_shortdate_type, NULL,
|
mdb_sybase_types, &mdb_sybase_shortdate_type, NULL,
|
||||||
@@ -416,14 +389,17 @@ void _mdb_init_backends()
|
|||||||
"COMMENT ON COLUMN %s.%s IS %s;\n",
|
"COMMENT ON COLUMN %s.%s IS %s;\n",
|
||||||
"COMMENT ON TABLE %s IS %s;\n",
|
"COMMENT ON TABLE %s IS %s;\n",
|
||||||
quote_schema_name_rquotes_merge);
|
quote_schema_name_rquotes_merge);
|
||||||
|
mdb_register_backend("sqlite",
|
||||||
|
MDB_SHEXP_DROPTABLE|MDB_SHEXP_RELATIONS|MDB_SHEXP_DEFVALUES,
|
||||||
|
mdb_sqlite_types, NULL, NULL,
|
||||||
|
"date('now')", "date('now')",
|
||||||
|
"-- That file uses encoding %s\n",
|
||||||
|
"DROP TABLE IF EXISTS %s;\n",
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
quote_schema_name_rquotes_merge);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Supposed to be deprecated in version 0.7, however I could not understand how to work without it. */
|
|
||||||
void mdb_init_backends() {
|
|
||||||
_mdb_init_backends();
|
|
||||||
//fprintf(stderr, "mdb_init_backends() is DEPRECATED and does nothing. Stop calling it.\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
void mdb_register_backend(char *backend_name, guint32 capabilities, MdbBackendType *backend_type, MdbBackendType *type_shortdate, MdbBackendType *type_autonum, const char *short_now, const char *long_now, const char *charset_statement, const char *drop_statement, const char *constaint_not_empty_statement, const char *column_comment_statement, const char *table_comment_statement, gchar* (*quote_schema_name)(const gchar*, const gchar*))
|
void mdb_register_backend(char *backend_name, guint32 capabilities, MdbBackendType *backend_type, MdbBackendType *type_shortdate, MdbBackendType *type_autonum, const char *short_now, const char *long_now, const char *charset_statement, const char *drop_statement, const char *constaint_not_empty_statement, const char *column_comment_statement, const char *table_comment_statement, gchar* (*quote_schema_name)(const gchar*, const gchar*))
|
||||||
{
|
{
|
||||||
MdbBackend *backend = (MdbBackend *) g_malloc0(sizeof(MdbBackend));
|
MdbBackend *backend = (MdbBackend *) g_malloc0(sizeof(MdbBackend));
|
||||||
@@ -442,24 +418,20 @@ void mdb_register_backend(char *backend_name, guint32 capabilities, MdbBackendTy
|
|||||||
g_hash_table_insert(mdb_backends, backend_name, backend);
|
g_hash_table_insert(mdb_backends, backend_name, backend);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MDB_DEPRECATED mdb_remove_backends() {
|
||||||
|
fprintf(stderr, "mdb_remove_backends() is DEPRECATED and does nothing. Stop calling it.\n");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mdb_remove_backends
|
* mdb_remove_backends
|
||||||
*
|
*
|
||||||
* Removes all entries from and destroys the mdb_backends hash.
|
* Removes all entries from and destroys the mdb_backends hash.
|
||||||
*/
|
*/
|
||||||
void _mdb_remove_backends()
|
void __attribute__ ((destructor)) _mdb_remove_backends()
|
||||||
{
|
{
|
||||||
g_hash_table_foreach_remove(mdb_backends, mdb_drop_backend, NULL);
|
g_hash_table_foreach_remove(mdb_backends, mdb_drop_backend, NULL);
|
||||||
g_hash_table_destroy(mdb_backends);
|
g_hash_table_destroy(mdb_backends);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Supposed to be deprecated in version 0.7, however I could not understand how to work without it. */
|
|
||||||
void mdb_remove_backends() {
|
|
||||||
//fprintf(stderr, "mdb_remove_backends() is DEPRECATED and does nothing. Stop calling it.\n");
|
|
||||||
_mdb_remove_backends();
|
|
||||||
}
|
|
||||||
static gboolean mdb_drop_backend(gpointer key, gpointer value, gpointer data)
|
static gboolean mdb_drop_backend(gpointer key, gpointer value, gpointer data)
|
||||||
{
|
{
|
||||||
MdbBackend *backend = (MdbBackend *)value;
|
MdbBackend *backend = (MdbBackend *)value;
|
||||||
@@ -543,7 +515,7 @@ mdb_print_indexes(FILE* outfile, MdbTableDef *table, char *dbnamespace)
|
|||||||
fprintf (outfile, " UNIQUE");
|
fprintf (outfile, " UNIQUE");
|
||||||
fprintf(outfile, " INDEX %s ON %s (", quoted_name, quoted_table_name);
|
fprintf(outfile, " INDEX %s ON %s (", quoted_name, quoted_table_name);
|
||||||
}
|
}
|
||||||
g_free(quoted_name); //changed from free
|
g_free(quoted_name);
|
||||||
free(index_name);
|
free(index_name);
|
||||||
|
|
||||||
for (j=0;j<idx->num_keys;j++) {
|
for (j=0;j<idx->num_keys;j++) {
|
||||||
@@ -556,7 +528,7 @@ mdb_print_indexes(FILE* outfile, MdbTableDef *table, char *dbnamespace)
|
|||||||
/* no DESC for primary keys */
|
/* no DESC for primary keys */
|
||||||
fprintf(outfile, " DESC");
|
fprintf(outfile, " DESC");
|
||||||
|
|
||||||
g_free(quoted_name); //changed from free
|
g_free(quoted_name);
|
||||||
|
|
||||||
}
|
}
|
||||||
fprintf (outfile, ");\n");
|
fprintf (outfile, ");\n");
|
||||||
@@ -754,7 +726,7 @@ mdb_get_relationships(MdbHandle *mdb, const gchar *dbnamespace, const char* tabl
|
|||||||
grbit = atoi(bound[4]);
|
grbit = atoi(bound[4]);
|
||||||
constraint_name = g_strconcat(bound[1], "_", bound[0], "_fk", NULL);
|
constraint_name = g_strconcat(bound[1], "_", bound[0], "_fk", NULL);
|
||||||
quoted_constraint_name = mdb->default_backend->quote_schema_name(dbnamespace, constraint_name);
|
quoted_constraint_name = mdb->default_backend->quote_schema_name(dbnamespace, constraint_name);
|
||||||
g_free(constraint_name); //changed from free
|
g_free(constraint_name);
|
||||||
|
|
||||||
if (grbit & 0x00000002) {
|
if (grbit & 0x00000002) {
|
||||||
text = g_strconcat(
|
text = g_strconcat(
|
||||||
@@ -779,11 +751,11 @@ mdb_get_relationships(MdbHandle *mdb, const gchar *dbnamespace, const char* tabl
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
g_free(quoted_table_1); //changed from free
|
g_free(quoted_table_1);
|
||||||
g_free(quoted_column_1); //changed from free
|
g_free(quoted_column_1);
|
||||||
g_free(quoted_table_2); //changed from free
|
g_free(quoted_table_2);
|
||||||
g_free(quoted_column_2); //changed from free
|
g_free(quoted_column_2);
|
||||||
g_free(quoted_constraint_name); //changed from free
|
g_free(quoted_constraint_name);
|
||||||
|
|
||||||
return (char *)text;
|
return (char *)text;
|
||||||
}
|
}
|
||||||
@@ -822,7 +794,7 @@ generate_table_schema(FILE *outfile, MdbCatalogEntry *entry, char *dbnamespace,
|
|||||||
quoted_name = mdb->default_backend->quote_schema_name(NULL, col->name);
|
quoted_name = mdb->default_backend->quote_schema_name(NULL, col->name);
|
||||||
fprintf (outfile, "\t%s\t\t\t%s", quoted_name,
|
fprintf (outfile, "\t%s\t\t\t%s", quoted_name,
|
||||||
mdb_get_colbacktype_string (col));
|
mdb_get_colbacktype_string (col));
|
||||||
g_free(quoted_name); //changed from free
|
g_free(quoted_name);
|
||||||
|
|
||||||
if (mdb_colbacktype_takes_length(col)) {
|
if (mdb_colbacktype_takes_length(col)) {
|
||||||
|
|
||||||
@@ -913,11 +885,11 @@ generate_table_schema(FILE *outfile, MdbCatalogEntry *entry, char *dbnamespace,
|
|||||||
fprintf(outfile,
|
fprintf(outfile,
|
||||||
mdb->default_backend->column_comment_statement,
|
mdb->default_backend->column_comment_statement,
|
||||||
quoted_table_name, quoted_name, comment);
|
quoted_table_name, quoted_name, comment);
|
||||||
g_free(comment); //changed from free
|
g_free(comment);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free(quoted_name); //changed from free
|
g_free(quoted_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add the constraints on table */
|
/* Add the constraints on table */
|
||||||
@@ -928,7 +900,7 @@ generate_table_schema(FILE *outfile, MdbCatalogEntry *entry, char *dbnamespace,
|
|||||||
fprintf(outfile,
|
fprintf(outfile,
|
||||||
mdb->default_backend->table_comment_statement,
|
mdb->default_backend->table_comment_statement,
|
||||||
quoted_table_name, comment);
|
quoted_table_name, comment);
|
||||||
g_free(comment); //changed from free
|
g_free(comment);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fputc('\n', outfile);
|
fputc('\n', outfile);
|
||||||
|
|||||||
@@ -18,12 +18,12 @@
|
|||||||
|
|
||||||
#include "mdbtools.h"
|
#include "mdbtools.h"
|
||||||
|
|
||||||
void mdb_init()
|
void MDB_DEPRECATED mdb_init()
|
||||||
{
|
{
|
||||||
fprintf(stderr, "mdb_init() is DEPRECATED and does nothing. Stop calling it.\n");
|
fprintf(stderr, "mdb_init() is DEPRECATED and does nothing. Stop calling it.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
void mdb_exit()
|
void MDB_DEPRECATED mdb_exit()
|
||||||
{
|
{
|
||||||
fprintf(stderr, "mdb_exit() is DEPRECATED and does nothing. Stop calling it.\n");
|
fprintf(stderr, "mdb_exit() is DEPRECATED and does nothing. Stop calling it.\n");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user