Creating, opening, and closing the table
To open a table in a Tokyo Cabinet one needs to create a new handle with tcbdbnew()
and actually open a file with tcbdbopen().
Before opening, one can prepare the handle for multi-threaded use with tcbdbsetmutex()
, set a custom comparison function with tcbdbsetcmpfunc()
, and set various tuning parameters with tcbdbtune()
. MySQL is multi-threaded, so we will use that handle concurrently, and, of course, we will need our comparison function, but we won't do any tuning in our example. There is no special function to create a Tokyo Cabinet file, it is created by opening. That is, both ha_tocab::open()
and ha_tocab::create()
will open a Tokyo Cabinet file, and we can factor out this functionality in a helper function:
static TCBDB *open_tcdb(const char *name, TABLE *table, int *error) { char fname[FN_REFLEN+10]; strcpy(fname, name); strcat(fname, ".tocab"); *error = 0; TCBDB *dbh = tcbdbnew(); if (!dbh) { *error = HA_ERR_OUT_OF_MEM; return 0; } if...