signature change to mdb_open()

This commit is contained in:
brianb 2004-04-13 20:06:04 +00:00
parent 04452fbafe
commit 4953cee0af
26 changed files with 180 additions and 129 deletions

View File

@ -1,3 +1,31 @@
Tue Apr 13 15:25:26 EDT 2004 Brian Bruns <brian@bruns.com>
* include/mdbtools.h:
* src/sql/mdbsql.c:
* src/util/mdb-array.c:
* src/util/mdb-check.c:
* src/util/mdb-export.c:
* src/util/mdb-header.c:
* src/util/mdb-import.c:
* src/util/mdb-prop.c:
* src/util/mdb-schema.c:
* src/util/mdb-tables.c:
* src/util/mdb-ver.c:
* src/util/prcat.c:
* src/util/prdata.c:
* src/util/prdump.c:
* src/util/prfreemap.c:
* src/util/prindex.c:
* src/util/prkkd.c:
* src/util/prole.c:
* src/util/prtable.c:
* src/util/sargtest.c:
* src/util/updrow.c:
* src/gmdb/file.c:
* src/gmdb2/file.c:
* src/libmdb/file.c: Add flags argument to mdb_open to support read/write
files
* doc/reference/libmdb/libmdb-sections.txt: Organize reference manual a little better
Mon Apr 12 21:58:00 CDT 2004 Jeff Smith <whydoubt@yahoo.com> Mon Apr 12 21:58:00 CDT 2004 Jeff Smith <whydoubt@yahoo.com>
* src/odbc/connectparams.c: ODBC driver dialog enhancements * src/odbc/connectparams.c: ODBC driver dialog enhancements
* src/sql/mdbsql.c: Correct some array sizes * src/sql/mdbsql.c: Correct some array sizes

View File

@ -25,24 +25,101 @@ MdbProperties
MdbColumn MdbColumn
mdbsargtree mdbsargtree
MdbIndexPage MdbIndexPage
gpointer)
MDB_MAX_INDEX_DEPTH MDB_MAX_INDEX_DEPTH
MdbIndexChain MdbIndexChain
MdbTableDef MdbTableDef
MdbColumnProp MdbColumnProp
MdbField MdbField
MdbSarg MdbSarg
<SUBSECTION>
mdb_init mdb_init
mdb_open
mdb_close
mdb_clone_handle
mdb_exit mdb_exit
mdb_alloc_handle <SUBSECTION>
mdb_free_handle mdb_read_catalog
mdb_dump_catalog
mdb_free_catalog mdb_free_catalog
mdb_alloc_tabledef <SUBSECTION>
mdb_alloc_catalog mdb_read_table
mdb_alloc_file mdb_rewind_table
mdb_free_file mdb_table_dump
mdb_free_tabledef
<SUBSECTION>
mdb_read_columns
mdb_append_index mdb_append_index
mdb_get_objtype_string
mdb_bind_column_by_name
mdb_data_dump
mdb_bind_column
mdb_fetch_row
mdb_is_fixed_col
mdb_col_to_string
mdb_find_end_of_row
mdb_col_fixed_size
mdb_col_disp_size
mdb_bind_len
mdb_ole_read_next
mdb_ole_read
mdb_set_date_fmt
mdb_read_row
mdb_get_coltype_string
mdb_coltype_takes_length
mdb_init_backends
mdb_register_backend
mdb_remove_backends
mdb_set_default_backend
mdb_get_relationships
mdb_sql_walk_tree
mdb_find_indexable_sargs
mdb_add_sarg_by_name
<SUBSECTION>
mdb_read_indices
mdb_index_dump
mdb_index_scan_free
mdb_index_find_next_on_page
mdb_index_find_next
mdb_index_hash_text
mdb_index_scan_init
mdb_index_find_row
<SUBSECTION>
mdb_stats_on
mdb_stats_off
mdb_dump_stats
<SUBSECTION>
mdb_like_cmp
mdb_crack_row
mdb_add_row_to_pg
mdb_update_index
mdb_pack_row
mdb_replace_row
mdb_pg_get_freespace
mdb_update_row
mdb_new_data_pg
mdb_map_find_next_freepage
<SUBSECTION>
mdb_read_props_list
mdb_free_props
mdb_read_props
<SUBSECTION>
mdb_create_temp_table
mdb_temp_table_add_col
mdb_fill_temp_col
mdb_fill_temp_field
<SUBSECTION>
mdb_get_option
mdb_debug
<SUBSECTION>
mdb_unicode2ascii
mdb_ascii2unicode
<SUBSECTION Private>
mdb_alloc_stats mdb_alloc_stats
mdb_alloc_handle
mdb_test_string
mdb_test_int
mdb_add_sarg
buffer_dump
mdb_read_pg mdb_read_pg
mdb_read_alt_pg mdb_read_alt_pg
mdb_get_byte mdb_get_byte
@ -58,87 +135,18 @@ mdb_pg_get_int32
mdb_pg_get_single mdb_pg_get_single
mdb_pg_get_double mdb_pg_get_double
mdb_pg_get_int24_msb mdb_pg_get_int24_msb
mdb_open
mdb_close
mdb_clone_handle
mdb_swap_pgbuf mdb_swap_pgbuf
mdb_free_tabledef mdb_index_swap_n
mdb_read_catalog mdb_test_sargs
mdb_catalog_dump mdb_test_sarg
mdb_catalog_rows
mdb_get_catalog_entry
mdb_get_objtype_string
mdb_dump_catalog
mdb_read_table
mdb_read_columns
mdb_table_dump
read_pg_if_16 read_pg_if_16
read_pg_if_32 read_pg_if_32
read_pg_if read_pg_if
read_pg_if_n read_pg_if_n
mdb_bind_column_by_name mdb_alloc_file
mdb_data_dump mdb_free_file
mdb_bind_column mdb_alloc_tabledef
mdb_rewind_table mdb_alloc_catalog
mdb_fetch_row mdb_free_handle
mdb_is_fixed_col
mdb_col_to_string
mdb_find_end_of_row
mdb_col_fixed_size
mdb_col_disp_size
mdb_bind_len
mdb_ole_read_next
mdb_ole_read
mdb_set_date_fmt
mdb_read_row
buffer_dump
mdb_get_coltype_string
mdb_coltype_takes_length
mdb_init_backends
mdb_register_backend
mdb_remove_backends
mdb_set_default_backend
mdb_get_relationships
mdb_test_sargs
mdb_test_sarg
mdb_sql_walk_tree
mdb_find_indexable_sargs
mdb_add_sarg_by_name
mdb_test_string
mdb_test_int
mdb_add_sarg
mdb_read_indices
mdb_index_dump
mdb_index_scan_free
mdb_index_find_next_on_page
mdb_index_find_next
mdb_index_hash_text
mdb_index_scan_init
mdb_index_find_row
mdb_index_swap_n
mdb_stats_on
mdb_stats_off
mdb_dump_stats
mdb_like_cmp
mdb_crack_row
mdb_add_row_to_pg
mdb_update_index
mdb_pack_row
mdb_replace_row
mdb_pg_get_freespace
mdb_update_row
mdb_new_data_pg
mdb_map_find_next_freepage
mdb_read_props_list
mdb_free_props
mdb_read_props
mdb_create_temp_table
mdb_temp_table_add_col
mdb_fill_temp_col
mdb_fill_temp_field
mdb_get_option
mdb_debug
mdb_unicode2ascii
mdb_ascii2unicode
</SECTION> </SECTION>

View File

@ -105,6 +105,11 @@ typedef enum {
MDB_INDEX_SCAN MDB_INDEX_SCAN
} MdbStrategy; } MdbStrategy;
typedef enum {
MDB_NOFLAGS = 0x00,
MDB_WRITABLE = 0x01
} MdbFileFlags;
enum { enum {
MDB_DEBUG_LIKE = 0x0001, MDB_DEBUG_LIKE = 0x0001,
MDB_DEBUG_WRITE = 0x0002, MDB_DEBUG_WRITE = 0x0002,
@ -292,7 +297,7 @@ typedef struct {
unsigned char cache_value[256]; unsigned char cache_value[256];
} MdbIndexPage; } MdbIndexPage;
typedef int MdbSargTreeFunc(MdbSargNode *, gpointer); typedef int MdbSargTreeFunc(MdbSargNode *, gpointer *data);
#define MDB_MAX_INDEX_DEPTH 10 #define MDB_MAX_INDEX_DEPTH 10
@ -396,8 +401,7 @@ extern long mdb_pg_get_int32(MdbHandle *mdb, int offset);
extern float mdb_pg_get_single(MdbHandle *mdb, int offset); extern float mdb_pg_get_single(MdbHandle *mdb, int offset);
extern double mdb_pg_get_double(MdbHandle *mdb, int offset); extern double mdb_pg_get_double(MdbHandle *mdb, int offset);
extern gint32 mdb_pg_get_int24_msb(MdbHandle *mdb, int offset); extern gint32 mdb_pg_get_int24_msb(MdbHandle *mdb, int offset);
extern MdbHandle *mdb_open(char *filename); extern MdbHandle *mdb_open(char *filename, MdbFileFlags flags);
extern MdbHandle *_mdb_open(char *filename, gboolean writable);
extern void mdb_close(MdbHandle *mdb); extern void mdb_close(MdbHandle *mdb);
extern MdbHandle *mdb_clone_handle(MdbHandle *mdb); extern MdbHandle *mdb_clone_handle(MdbHandle *mdb);
extern void mdb_swap_pgbuf(MdbHandle *mdb); extern void mdb_swap_pgbuf(MdbHandle *mdb);
@ -406,9 +410,7 @@ extern void mdb_free_tabledef(MdbTableDef *table);
/* catalog.c */ /* catalog.c */
GPtrArray *mdb_read_catalog(MdbHandle *mdb, int obj_type); GPtrArray *mdb_read_catalog(MdbHandle *mdb, int obj_type);
extern void mdb_catalog_dump(MdbHandle *mdb, int obj_type); extern void mdb_dump_catalog(MdbHandle *mdb, int obj_type);
extern int mdb_catalog_rows(MdbHandle *mdb);
extern MdbCatalogEntry *mdb_get_catalog_entry(MdbHandle *mdb, int rowid, MdbCatalogEntry *entry);
extern char *mdb_get_objtype_string(int obj_type); extern char *mdb_get_objtype_string(int obj_type);
extern void mdb_dump_catalog(MdbHandle *mdb, int obj_type); extern void mdb_dump_catalog(MdbHandle *mdb, int obj_type);

View File

@ -8,7 +8,7 @@ extern int main_show_debug;
void void
gmdb_file_open(gchar *file_path) gmdb_file_open(gchar *file_path)
{ {
mdb = mdb_open(file_path); mdb = mdb_open(file_path, MDB_NOFLAGS);
if (!mdb) { if (!mdb) {
gmdb_info_msg("Unable to open file."); gmdb_info_msg("Unable to open file.");
return; return;

View File

@ -107,7 +107,7 @@ gmdb_file_open(gchar *file_path)
int i; int i;
gmdb_reset_widgets(); gmdb_reset_widgets();
mdb = mdb_open(file_path); mdb = mdb_open(file_path, MDB_NOFLAGS);
if (!mdb) { if (!mdb) {
gnome_warning_dialog("Unable to open file."); gnome_warning_dialog("Unable to open file.");
return; return;

View File

@ -93,7 +93,18 @@ int ret;
} while ((dir = strtok(NULL, ":"))); } while ((dir = strtok(NULL, ":")));
return -1; return -1;
} }
MdbHandle *_mdb_open(char *filename, gboolean writable) /**
* mdb_open:
* @filename: path to MDB (database) file
* @flags: MDB_NOFLAGS for read-only, MDB_WRITABLE for read/write
*
* Opens an MDB file and returns an MdbHandle to it. MDB File may be relative
* to the current directory, a full path to the file, or relative to a
* component of $MDBPATH.
*
* Return value: pointer to MdbHandle structure.
**/
MdbHandle *mdb_open(char *filename, MdbFileFlags flags)
{ {
MdbHandle *mdb; MdbHandle *mdb;
int bufsize; int bufsize;
@ -117,7 +128,7 @@ MdbFile *f;
} }
} }
//strcpy(f->filename, filename); //strcpy(f->filename, filename);
if (writable) { if (flags & MDB_WRITABLE) {
f->writable = TRUE; f->writable = TRUE;
f->fd = open(f->filename,O_RDWR); f->fd = open(f->filename,O_RDWR);
} else { } else {
@ -149,21 +160,14 @@ MdbFile *f;
f->refs++; f->refs++;
return mdb; return mdb;
} }
/**
* mdb_open:
* @filename: path to MDB (database) file
*
* Opens an MDB file and returns an MdbHandle to it. MDB File may be relative
* to the current directory, a full path to the file, or relative to a
* component of $MDBPATH.
*
* Return value: pointer to MdbHandle structure.
**/
MdbHandle *mdb_open(char *filename)
{
return _mdb_open(filename, FALSE);
}
/**
* mdb_close:
* @mdb: Handle to open MDB database file
*
* Dereferences MDB file, closes if reference count is 0, and destroys handle.
*
**/
void void
mdb_close(MdbHandle *mdb) mdb_close(MdbHandle *mdb)
{ {
@ -175,6 +179,15 @@ mdb_close(MdbHandle *mdb)
} }
} }
} }
/**
* mdb_clone_handle:
* @mdb: Handle to open MDB database file
*
* Clones an existing database handle. Cloned handle shares the file descriptor
* but has it's own page buffer, page position, and similar internal variables.
*
* Return value: new handle to the database.
*/
MdbHandle *mdb_clone_handle(MdbHandle *mdb) MdbHandle *mdb_clone_handle(MdbHandle *mdb)
{ {
MdbHandle *newmdb; MdbHandle *newmdb;

View File

@ -152,12 +152,12 @@ wordexp_t words;
#endif #endif
if (!(sql->mdb = mdb_open(db_namep))) { if (!(sql->mdb = mdb_open(db_namep, MDB_NOFLAGS))) {
if (!strstr(db_namep, ".mdb")) { if (!strstr(db_namep, ".mdb")) {
char *tmpstr = (char *) malloc(strlen(db_namep)+5); char *tmpstr = (char *) malloc(strlen(db_namep)+5);
strcpy(tmpstr,db_namep); strcpy(tmpstr,db_namep);
strcat(tmpstr,".mdb"); strcat(tmpstr,".mdb");
if (!(sql->mdb = mdb_open(tmpstr))) { if (!(sql->mdb = mdb_open(tmpstr, MDB_NOFLAGS))) {
fail++; fail++;
} }
free(tmpstr); free(tmpstr);

View File

@ -49,7 +49,7 @@ int started;
} }
mdb_init(); mdb_init();
mdb = mdb_open (argv [1]); mdb = mdb_open (argv [1], MDB_NOFLAGS);
mdb_read_catalog (mdb, MDB_TABLE); mdb_read_catalog (mdb, MDB_TABLE);

View File

@ -65,7 +65,7 @@ int opt;
/* open the database */ /* open the database */
mdb = mdb_open (argv[optind]); mdb = mdb_open (argv[optind], MDB_NOFLAGS);
/* read the catalog */ /* read the catalog */

View File

@ -115,7 +115,7 @@ main(int argc, char **argv)
mdb_init(); mdb_init();
if (!(mdb = mdb_open(argv[optind]))) { if (!(mdb = mdb_open(argv[optind], MDB_NOFLAGS))) {
exit(1); exit(1);
} }

View File

@ -53,7 +53,7 @@ FILE *cfile;
/* open the database */ /* open the database */
mdb = mdb_open (argv[1]); mdb = mdb_open (argv[1], MDB_NOFLAGS);
if (!mdb) { if (!mdb) {
mdb_exit(); mdb_exit();
exit(1); exit(1);

View File

@ -191,7 +191,7 @@ main(int argc, char **argv)
mdb_init(); mdb_init();
if (!(mdb = _mdb_open(argv[optind], TRUE))) { if (!(mdb = mdb_open(argv[optind], MDB_WRITABLE))) {
exit(1); exit(1);
} }

View File

@ -54,7 +54,7 @@ main(int argc, char **argv)
mdb_init(); mdb_init();
if (!(mdb = mdb_open(argv[optind]))) { if (!(mdb = mdb_open(argv[optind], MDB_NOFLAGS))) {
exit(1); exit(1);
} }
mdb_read_catalog(mdb, MDB_TABLE); mdb_read_catalog(mdb, MDB_TABLE);

View File

@ -68,7 +68,7 @@ main (int argc, char **argv)
/* open the database */ /* open the database */
mdb = mdb_open (argv[optind]); mdb = mdb_open (argv[optind], MDB_NOFLAGS);
if (argc - optind >= 2) { if (argc - optind >= 2) {
if (!mdb_set_default_backend(mdb, argv[optind + 1])) { if (!mdb_set_default_backend(mdb, argv[optind + 1])) {
fprintf(stderr,"Invalid backend type\n"); fprintf(stderr,"Invalid backend type\n");

View File

@ -58,7 +58,7 @@ int opt;
mdb_init(); mdb_init();
/* open the database */ /* open the database */
if (!(mdb = mdb_open (argv[optind]))) { if (!(mdb = mdb_open (argv[optind], MDB_NOFLAGS))) {
fprintf(stderr,"Couldn't open database.\n"); fprintf(stderr,"Couldn't open database.\n");
exit(1); exit(1);
} }

View File

@ -62,7 +62,7 @@ main(int argc, char **argv)
mdb_init(); mdb_init();
if (!(mdb = mdb_open(argv[optind]))) { if (!(mdb = mdb_open(argv[optind], MDB_NOFLAGS))) {
fprintf(stderr,_("Error: unable to open file %s\n"),argv[optind]); fprintf(stderr,_("Error: unable to open file %s\n"),argv[optind]);
exit(1); exit(1);
} }

View File

@ -31,7 +31,7 @@ main(int argc, char **argv)
mdb_init(); mdb_init();
mdb = mdb_open(argv[1]); mdb = mdb_open(argv[1], MDB_NOFLAGS);
mdb_dump_catalog(mdb,(argc > 2) ? atoi(argv[2]) : MDB_TABLE); mdb_dump_catalog(mdb,(argc > 2) ? atoi(argv[2]) : MDB_TABLE);

View File

@ -34,7 +34,7 @@ MdbTableDef *table;
} }
mdb_init(); mdb_init();
mdb = mdb_open(argv[1]); mdb = mdb_open(argv[1], MDB_NOFLAGS);
mdb_read_catalog(mdb, MDB_TABLE); mdb_read_catalog(mdb, MDB_TABLE);

View File

@ -33,7 +33,7 @@ int page, start, stop;
} }
mdb_init(); mdb_init();
mdb = mdb_open(argv[1]); mdb = mdb_open(argv[1], MDB_NOFLAGS);
mdb_read_catalog(mdb, MDB_TABLE); mdb_read_catalog(mdb, MDB_TABLE);

View File

@ -35,7 +35,7 @@ unsigned char *map_buf;
} }
mdb_init(); mdb_init();
mdb = mdb_open(argv[1]); mdb = mdb_open(argv[1], MDB_NOFLAGS);
mdb_read_pg (mdb, 1); mdb_read_pg (mdb, 1);
row_start = mdb_get_int16(mdb, (mdb->fmt->row_count_offset + 2)); row_start = mdb_get_int16(mdb, (mdb->fmt->row_count_offset + 2));

View File

@ -40,7 +40,7 @@ int found = 0;
} }
mdb_init(); mdb_init();
if (!(mdb = mdb_open(argv[1]))) { if (!(mdb = mdb_open(argv[1], MDB_NOFLAGS))) {
fprintf(stderr,"Unable to open database.\n"); fprintf(stderr,"Unable to open database.\n");
exit(1); exit(1);
} }

View File

@ -32,7 +32,7 @@ main(int argc, char **argv)
} }
mdb_init(); mdb_init();
mdb = mdb_open(argv[1]); mdb = mdb_open(argv[1], MDB_NOFLAGS);
mdb_read_pg(mdb, MDB_CATALOG_PG); mdb_read_pg(mdb, MDB_CATALOG_PG);
rows = mdb_catalog_rows(mdb); rows = mdb_catalog_rows(mdb);

View File

@ -39,7 +39,7 @@ char *sargname = NULL;
} }
mdb_init(); mdb_init();
mdb = mdb_open(argv[1]); mdb = mdb_open(argv[1], MDB_NOFLAGS);
dot = strchr(argv[2],'.'); dot = strchr(argv[2],'.');
if (argc>3) sargname = argv[3]; if (argc>3) sargname = argv[3];

View File

@ -35,7 +35,7 @@ int found = 0;
} }
mdb_init(); mdb_init();
mdb = mdb_open(argv[1]); mdb = mdb_open(argv[1], MDB_NOFLAGS);
mdb_read_catalog(mdb, MDB_TABLE); mdb_read_catalog(mdb, MDB_TABLE);

View File

@ -37,7 +37,7 @@ MdbTableDef *table;
mdb_init(); mdb_init();
if (!(mdb = mdb_open(MDB_FILE))) { if (!(mdb = mdb_open(MDB_FILE, MDB_NOFLAGS))) {
exit(1); exit(1);
} }

View File

@ -44,7 +44,7 @@ int len;
} }
mdb_init(); mdb_init();
mdb = _mdb_open(argv[1], TRUE); mdb = mdb_open(argv[1], MDB_WRITABLE);
tabname = argv[2]; tabname = argv[2];
sargname = argv[3]; sargname = argv[3];
updstr = strdup(argv[4]); updstr = strdup(argv[4]);