mirror of
https://github.com/mdbtools/mdbtools.git
synced 2025-04-05 20:31:00 +08:00
Restore previous mdb_register_backend API
Add new mdbi_register_backend2 function with the features introduced in PRs #321 and #322. The purpose is to prevent API/ABI breakage in the 1.0 release.
This commit is contained in:
parent
cfbca2af03
commit
7fb7660b09
@ -35,6 +35,18 @@
|
||||
#endif
|
||||
|
||||
void mdbi_rc4(unsigned char *key, guint32 key_len, unsigned char *buf, guint32 buf_len);
|
||||
MdbBackend *mdbi_register_backend2(MdbHandle *mdb, char *backend_name, guint32 capabilities,
|
||||
const MdbBackendType *backend_type,
|
||||
const MdbBackendType *type_shortdate,
|
||||
const MdbBackendType *type_autonum,
|
||||
const char *short_now, const char *long_now,
|
||||
const char *date_fmt, const char *shortdate_fmt,
|
||||
const char *charset_statement, const char *create_table_statement,
|
||||
const char *drop_statement, const char *constaint_not_empty_statement,
|
||||
const char *column_comment_statement, const char *per_column_comment_statement,
|
||||
const char *table_comment_statement, const char *per_table_comment_statement,
|
||||
gchar* (*quote_schema_name)(const gchar*, const gchar*),
|
||||
gchar* (*normalise_case)(const gchar*));
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -220,7 +220,6 @@ typedef struct {
|
||||
const char *date_fmt;
|
||||
const char *shortdate_fmt;
|
||||
const char *charset_statement;
|
||||
const char *create_table_statement;
|
||||
const char *drop_statement;
|
||||
const char *constaint_not_empty_statement;
|
||||
const char *column_comment_statement;
|
||||
@ -228,6 +227,7 @@ typedef struct {
|
||||
const char *table_comment_statement;
|
||||
const char *per_table_comment_statement;
|
||||
gchar* (*quote_schema_name)(const gchar*, const gchar*);
|
||||
const char *create_table_statement;
|
||||
gchar* (*normalise_case)(const gchar*);
|
||||
} MdbBackend;
|
||||
|
||||
@ -559,12 +559,10 @@ void mdb_register_backend(MdbHandle *mdb, char *backend_name, guint32 capabiliti
|
||||
const MdbBackendType *type_autonum,
|
||||
const char *short_now, const char *long_now,
|
||||
const char *date_fmt, const char *shortdate_fmt,
|
||||
const char *charset_statement, const char *create_table_statement,
|
||||
const char *drop_statement, const char *constaint_not_empty_statement,
|
||||
const char *charset_statement, const char *drop_statement, const char *constaint_not_empty_statement,
|
||||
const char *column_comment_statement, const char *per_column_comment_statement,
|
||||
const char *table_comment_statement, const char *per_table_comment_statement,
|
||||
gchar* (*quote_schema_name)(const gchar*, const gchar*),
|
||||
gchar* (*normalise_case)(const gchar*));
|
||||
gchar* (*quote_schema_name)(const gchar*, const gchar*));
|
||||
int mdb_set_default_backend(MdbHandle *mdb, const char *backend_name);
|
||||
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);
|
||||
|
@ -21,6 +21,7 @@
|
||||
*/
|
||||
|
||||
#include "mdbtools.h"
|
||||
#include "mdbprivate.h"
|
||||
|
||||
/* Access data types */
|
||||
static const MdbBackendType mdb_access_types[] = {
|
||||
@ -334,15 +335,13 @@ void mdb_init_backends(MdbHandle *mdb)
|
||||
NULL,
|
||||
NULL,
|
||||
"-- That file uses encoding %s\n",
|
||||
"CREATE TABLE %s\n",
|
||||
"DROP TABLE %s;\n",
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
quote_schema_name_bracket_merge,
|
||||
passthrough_unchanged);
|
||||
quote_schema_name_bracket_merge);
|
||||
mdb_register_backend(mdb, "sybase",
|
||||
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,
|
||||
@ -350,15 +349,13 @@ void mdb_init_backends(MdbHandle *mdb)
|
||||
NULL,
|
||||
NULL,
|
||||
"-- That file uses encoding %s\n",
|
||||
"CREATE TABLE %s\n",
|
||||
"DROP TABLE %s;\n",
|
||||
"ALTER TABLE %s ADD CHECK (%s <>'');\n",
|
||||
"COMMENT ON COLUMN %s.%s IS %s;\n",
|
||||
NULL,
|
||||
"COMMENT ON TABLE %s IS %s;\n",
|
||||
NULL,
|
||||
quote_schema_name_dquote,
|
||||
passthrough_unchanged);
|
||||
quote_schema_name_dquote);
|
||||
mdb_register_backend(mdb, "oracle",
|
||||
MDB_SHEXP_DROPTABLE|MDB_SHEXP_CST_NOTNULL|MDB_SHEXP_COMMENTS|MDB_SHEXP_INDEXES|MDB_SHEXP_RELATIONS|MDB_SHEXP_DEFVALUES,
|
||||
mdb_oracle_types, &mdb_oracle_shortdate_type, NULL,
|
||||
@ -366,16 +363,14 @@ void mdb_init_backends(MdbHandle *mdb)
|
||||
NULL,
|
||||
NULL,
|
||||
"-- That file uses encoding %s\n",
|
||||
"CREATE TABLE %s\n",
|
||||
"DROP TABLE %s;\n",
|
||||
NULL,
|
||||
"COMMENT ON COLUMN %s.%s IS %s;\n",
|
||||
NULL,
|
||||
"COMMENT ON TABLE %s IS %s;\n",
|
||||
NULL,
|
||||
quote_schema_name_dquote,
|
||||
passthrough_unchanged);
|
||||
mdb_register_backend(mdb, "postgres",
|
||||
quote_schema_name_dquote);
|
||||
mdbi_register_backend2(mdb, "postgres",
|
||||
MDB_SHEXP_DROPTABLE|MDB_SHEXP_CST_NOTNULL|MDB_SHEXP_CST_NOTEMPTY|MDB_SHEXP_COMMENTS|MDB_SHEXP_INDEXES|MDB_SHEXP_RELATIONS|MDB_SHEXP_DEFVALUES|MDB_SHEXP_BULK_INSERT,
|
||||
mdb_postgres_types, &mdb_postgres_shortdate_type, &mdb_postgres_serial_type,
|
||||
"current_date", "now()",
|
||||
@ -398,15 +393,13 @@ void mdb_init_backends(MdbHandle *mdb)
|
||||
"%Y-%m-%d %H:%M:%S",
|
||||
"%Y-%m-%d",
|
||||
"-- That file uses encoding %s\n",
|
||||
"CREATE TABLE %s\n",
|
||||
"DROP TABLE IF EXISTS %s;\n",
|
||||
"ALTER TABLE %s ADD CHECK (%s <>'');\n",
|
||||
NULL,
|
||||
"COMMENT %s",
|
||||
NULL,
|
||||
"COMMENT %s",
|
||||
quote_schema_name_rquotes_merge,
|
||||
passthrough_unchanged);
|
||||
quote_schema_name_rquotes_merge);
|
||||
mdb_register_backend(mdb, "sqlite",
|
||||
MDB_SHEXP_DROPTABLE|MDB_SHEXP_DEFVALUES|MDB_SHEXP_BULK_INSERT,
|
||||
mdb_sqlite_types, NULL, NULL,
|
||||
@ -414,32 +407,29 @@ void mdb_init_backends(MdbHandle *mdb)
|
||||
"%Y-%m-%d %H:%M:%S",
|
||||
"%Y-%m-%d",
|
||||
"-- That file uses encoding %s\n",
|
||||
"CREATE TABLE %s\n",
|
||||
"DROP TABLE IF EXISTS %s;\n",
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
quote_schema_name_rquotes_merge,
|
||||
passthrough_unchanged);
|
||||
quote_schema_name_rquotes_merge);
|
||||
}
|
||||
|
||||
void mdb_register_backend(MdbHandle *mdb, char *backend_name, guint32 capabilities,
|
||||
MdbBackend *mdbi_register_backend2(MdbHandle *mdb, char *backend_name, guint32 capabilities,
|
||||
const MdbBackendType *backend_type, const MdbBackendType *type_shortdate, const MdbBackendType *type_autonum,
|
||||
const char *short_now, const char *long_now,
|
||||
const char *date_fmt, const char *shortdate_fmt,
|
||||
const char *charset_statement,
|
||||
const char *create_table_statement,
|
||||
const char *drop_statement,
|
||||
const char *constaint_not_empty_statement,
|
||||
const char *constraint_not_empty_statement,
|
||||
const char *column_comment_statement,
|
||||
const char *per_column_comment_statement,
|
||||
const char *per_column_comment_statement,
|
||||
const char *table_comment_statement,
|
||||
const char *per_table_comment_statement,
|
||||
gchar* (*quote_schema_name)(const gchar*, const gchar*),
|
||||
gchar* (*normalise_case)(const gchar*))
|
||||
{
|
||||
gchar* (*normalise_case)(const gchar*)) {
|
||||
MdbBackend *backend = g_malloc0(sizeof(MdbBackend));
|
||||
backend->capabilities = capabilities;
|
||||
backend->types_table = backend_type;
|
||||
@ -452,7 +442,7 @@ void mdb_register_backend(MdbHandle *mdb, char *backend_name, guint32 capabiliti
|
||||
backend->charset_statement = charset_statement;
|
||||
backend->create_table_statement = create_table_statement;
|
||||
backend->drop_statement = drop_statement;
|
||||
backend->constaint_not_empty_statement = constaint_not_empty_statement;
|
||||
backend->constaint_not_empty_statement = constraint_not_empty_statement;
|
||||
backend->column_comment_statement = column_comment_statement;
|
||||
backend->per_column_comment_statement = per_column_comment_statement;
|
||||
backend->table_comment_statement = table_comment_statement;
|
||||
@ -460,6 +450,36 @@ void mdb_register_backend(MdbHandle *mdb, char *backend_name, guint32 capabiliti
|
||||
backend->quote_schema_name = quote_schema_name;
|
||||
backend->normalise_case = normalise_case;
|
||||
g_hash_table_insert(mdb->backends, backend_name, backend);
|
||||
return backend;
|
||||
}
|
||||
|
||||
void mdb_register_backend(MdbHandle *mdb, char *backend_name, guint32 capabilities,
|
||||
const MdbBackendType *backend_type, const MdbBackendType *type_shortdate, const MdbBackendType *type_autonum,
|
||||
const char *short_now, const char *long_now,
|
||||
const char *date_fmt, const char *shortdate_fmt,
|
||||
const char *charset_statement,
|
||||
const char *drop_statement,
|
||||
const char *constraint_not_empty_statement,
|
||||
const char *column_comment_statement,
|
||||
const char *per_column_comment_statement,
|
||||
const char *table_comment_statement,
|
||||
const char *per_table_comment_statement,
|
||||
gchar* (*quote_schema_name)(const gchar*, const gchar*))
|
||||
{
|
||||
mdbi_register_backend2(mdb, backend_name, capabilities,
|
||||
backend_type, type_shortdate, type_autonum,
|
||||
short_now, long_now,
|
||||
date_fmt, shortdate_fmt,
|
||||
charset_statement,
|
||||
drop_statement,
|
||||
"CREATE TABLE %s\n",
|
||||
constraint_not_empty_statement,
|
||||
column_comment_statement,
|
||||
per_column_comment_statement,
|
||||
table_comment_statement,
|
||||
per_table_comment_statement,
|
||||
quote_schema_name,
|
||||
passthrough_unchanged);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user