Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
TCFDB(3)			  Tokyo Cabinet 			TCFDB(3)

NAME
     tcfdb - the fixed-length database API

DESCRIPTION
     Fixed-length  database  is  a file containing an array of fixed-length ele-
     ments and is handled with the fixed-length database API.

     To use the fixed-length database API, include  `tcutil.h',  `tcfdb.h',  and
     related  standard	header	files.	Usually, write the following description
     near the front of a source file.

	    #include <tcutil.h>
	    #include <tcfdb.h>
	    #include <stdlib.h>
	    #include <stdbool.h>
	    #include <stdint.h>

     Objects whose type is pointer to `TCFDB' are used	to  handle  fixed-length
     databases.   A  fixed-length  database  object is created with the function
     `tcfdbnew' and is deleted with the function `tcfdbdel'.   To  avoid  memory
     leak, it is important to delete every object when it is no longer in use.

     Before  operations  to store or retrieve records, it is necessary to open a
     database file and connect the fixed-length  database  object  to  it.   The
     function  `tcfdbopen'  is	used  to  open	a database file and the function
     `tcfdbclose' is used to close the database file.  To avoid data missing  or
     corruption,  it  is  important  to  close every database file when it is no
     longer in use.  It is forbidden for multible database objects in a  process
     to open the same database at the same time.

API
     The  function `tcfdberrmsg' is used in order to get the message string cor-
     responding to an error code.

	    const char *tcfdberrmsg(int ecode);
		   `ecode' specifies the error code.
		   The return value is the message string of the error code.

     The function `tcfdbnew' is used in order to create a fixed-length	database
     object.

	    TCFDB *tcfdbnew(void);
		   The return value is the new fixed-length database object.

     The  function `tcfdbdel' is used in order to delete a fixed-length database
     object.

	    void tcfdbdel(TCFDB *fdb);
		   `fdb' specifies the fixed-length database object.
		   If the database is not closed, it is closed implicitly.  Note
		   that the deleted object and its derivatives can not	be  used
		   anymore.

     The  function  `tcfdbecode' is used in order to get the last happened error
     code of a fixed-length database object.

	    int tcfdbecode(TCFDB *fdb);
		   `fdb' specifies the fixed-length database object.
		   The return value is the last happened error code.
		   The following error codes are defined: `TCESUCCESS' for  suc-
		   cess,  `TCETHREAD'  for threading error, `TCEINVALID' for in-
		   valid operation, `TCENOFILE' for file not found,  `TCENOPERM'
		   for	no  permission,  `TCEMETA' for invalid meta data, `TCER-
		   HEAD' for invalid record header, `TCEOPEN'  for  open  error,
		   `TCECLOSE' for close error, `TCETRUNC' for trunc error, `TCE-
		   SYNC' for sync error, `TCESTAT' for stat error, `TCESEEK' for
		   seek  error,  `TCEREAD'  for read error, `TCEWRITE' for write
		   error, `TCEMMAP' for mmap error, `TCELOCK'  for  lock  error,
		   `TCEUNLINK'	for  unlink error, `TCERENAME' for rename error,
		   `TCEMKDIR' for mkdir error, `TCERMDIR' for rmdir error, `TCE-
		   KEEP' for existing record, `TCENOREC' for  no  record  found,
		   and `TCEMISC' for miscellaneous error.

     The  function `tcfdbsetmutex' is used in order to set mutual exclusion con-
     trol of a fixed-length database object for threading.

	    bool tcfdbsetmutex(TCFDB *fdb);
		   `fdb' specifies the fixed-length database object which is not
		   opened.
		   If successful, the return value is true, else, it is false.
		   Note that the mutual exclusion control is needed if	the  ob-
		   ject  is shared by plural threads and this function should be
		   called before the database is opened.

     The function `tcfdbtune' is used in order to set the tuning parameters of a
     fixed-length database object.

	    bool tcfdbtune(TCFDB *fdb, int32_t width, int64_t limsiz);
		   `fdb' specifies the fixed-length database object which is not
		   opened.
		   `width' specifies the width of the value of each record.   If
		   it  is  not more than 0, the default value is specified.  The
		   default value is 255.
		   `limsiz' specifies the limit size of the database  file.   If
		   it  is  not more than 0, the default value is specified.  The
		   default value is 268435456.
		   If successful, the return value is true, else, it is false.
		   Note that the tuning parameters  should  be	set  before  the
		   database is opened.

     The  function `tcfdbopen' is used in order to open a database file and con-
     nect a fixed-length database object.

	    bool tcfdbopen(TCFDB *fdb, const char *path, int omode);
		   `fdb' specifies the fixed-length database object which is not
		   opened.
		   `path' specifies the path of the database file.
		   `omode' specifies the  connection  mode:  `FDBOWRITER'  as  a
		   writer,  `FDBOREADER'  as  a  reader.   If  the  mode is `FD-
		   BOWRITER', the following may be  added  by  bitwise-or:  `FD-
		   BOCREAT', which means it creates a new database if not exist,
		   `FDBOTRUNC', which means it creates a new database regardless
		   if  one  exists,  `FDBOTSYNC',  which means every transaction
		   synchronizes updated contents with the device.  Both of  `FD-
		   BOREADER'  and  `FDBOWRITER'  can  be added to by bitwise-or:
		   `FDBONOLCK', which means it opens the database  file  without
		   file  locking,  or  `FDBOLCKNB',  which means locking is per-
		   formed without blocking.
		   If successful, the return value is true, else, it is false.

     The function `tcfdbclose' is used in order to close a fixed-length database
     object.

	    bool tcfdbclose(TCFDB *fdb);
		   `fdb' specifies the fixed-length database object.
		   If successful, the return value is true, else, it is false.
		   Update of a database is assured to be written when the  data-
		   base  is  closed.   If a writer opens a database but does not
		   close it appropriately, the database will be broken.

     The function `tcfdbput'  is  used	in  order  to  store  a  record  into  a
     fixed-length database object.

	    bool tcfdbput(TCFDB *fdb, int64_t id, const void *vbuf, int vsiz);
		   `fdb' specifies the fixed-length database object connected as
		   a writer.
		   `id'  specifies the ID number.  It should be more than 0.  If
		   it is `FDBIDMIN', the minimum ID number of  existing  records
		   is  specified.   If it is `FDBIDPREV', the number less by one
		   than the minimum ID number of existing records is  specified.
		   If  it  is  `FDBIDMAX',  the  maximum  ID  number of existing
		   records is specified.   If  it  is  `FDBIDNEXT',  the  number
		   greater by one than the maximum ID number of existing records
		   is specified.
		   `vbuf' specifies the pointer to the region of the value.
		   `vsiz' specifies the size of the region of the value.  If the
		   size  of the value is greater than the width tuning parameter
		   of the database, the size is cut down to the width.
		   If successful, the return value is true, else, it is false.
		   If a record with the same key exists in the database,  it  is
		   overwritten.

     The  function `tcfdbput2' is used in order to store a record with a decimal
     key into a fixed-length database object.

	    bool tcfdbput2(TCFDB *fdb, const void *kbuf, int  ksiz,  const  void
	    *vbuf, int vsiz);
		   `fdb' specifies the fixed-length database object connected as
		   a writer.
		   `kbuf'  specifies  the  pointer  to the region of the decimal
		   key.  It should be more than 0.  If it is "min", the  minimum
		   ID number of existing records is specified.	If it is "prev",
		   the number less by one than the minimum ID number of existing
		   records  is specified.  If it is "max", the maximum ID number
		   of existing records is specified.  If it is "next", the  num-
		   ber	greater  by  one  than the maximum ID number of existing
		   records is specified.
		   `ksiz' specifies the size of the region of the key.
		   `vbuf' specifies the pointer to the region of the value.
		   `vsiz' specifies the size of the region of the value.  If the
		   size of the value is greater than the width tuning  parameter
		   of the database, the size is cut down to the width.
		   If successful, the return value is true, else, it is false.
		   If  a  record with the same key exists in the database, it is
		   overwritten.

     The function `tcfdbput3' is used in order to store a string record  with  a
     decimal key into a fixed-length database object.

	    bool tcfdbput3(TCFDB *fdb, const char *kstr, const void *vstr);
		   `fdb' specifies the fixed-length database object connected as
		   a writer.
		   `kstr' specifies the string of the decimal key.  It should be
		   more than 0.  If it is "min", the minimum ID number of exist-
		   ing	records  is specified.	If it is "prev", the number less
		   by one than the minimum ID  number  of  existing  records  is
		   specified.  If it is "max", the maximum ID number of existing
		   records is specified.  If it is "next", the number greater by
		   one	than the maximum ID number of existing records is speci-
		   fied.
		   `vstr' specifies the string of the value.
		   If successful, the return value is true, else, it is false.
		   If a record with the same key exists in the database,  it  is
		   overwritten.

     The  function  `tcfdbputkeep' is used in order to store a new record into a
     fixed-length database object.

	    bool tcfdbputkeep(TCFDB *fdb, int64_t  id,	const  void  *vbuf,  int
	    vsiz);
		   `fdb' specifies the fixed-length database object connected as
		   a writer.
		   `id'  specifies the ID number.  It should be more than 0.  If
		   it is `FDBIDMIN', the minimum ID number of  existing  records
		   is  specified.   If it is `FDBIDPREV', the number less by one
		   than the minimum ID number of existing records is  specified.
		   If  it  is  `FDBIDMAX',  the  maximum  ID  number of existing
		   records is specified.   If  it  is  `FDBIDNEXT',  the  number
		   greater by one than the maximum ID number of existing records
		   is specified.
		   `vbuf' specifies the pointer to the region of the value.
		   `vsiz' specifies the size of the region of the value.  If the
		   size  of the value is greater than the width tuning parameter
		   of the database, the size is cut down to the width.
		   If successful, the return value is true, else, it is false.
		   If a record with the same key exists in  the  database,  this
		   function has no effect.

     The  function `tcfdbputkeep2' is used in order to store a new record with a
     decimal key into a fixed-length database object.

	    bool tcfdbputkeep2(TCFDB *fdb, const void  *kbuf,  int  ksiz,  const
	    void *vbuf, int vsiz);
		   `fdb' specifies the fixed-length database object connected as
		   a writer.
		   `kbuf'  specifies  the  pointer  to the region of the decimal
		   key.  It should be more than 0.  If it is "min", the  minimum
		   ID number of existing records is specified.	If it is "prev",
		   the number less by one than the minimum ID number of existing
		   records  is specified.  If it is "max", the maximum ID number
		   of existing records is specified.  If it is "next", the  num-
		   ber	greater  by  one  than the maximum ID number of existing
		   records is specified.
		   `ksiz' specifies the size of the region of the key.
		   `vbuf' specifies the pointer to the region of the value.
		   `vsiz' specifies the size of the region of the value.  If the
		   size of the value is greater than the width tuning  parameter
		   of the database, the size is cut down to the width.
		   If successful, the return value is true, else, it is false.
		   If  a  record  with the same key exists in the database, this
		   function has no effect.

     The function `tcfdbputkeep3' is used in order to store a new string  record
     with a decimal key into a fixed-length database object.

	    bool tcfdbputkeep3(TCFDB *fdb, const char *kstr, const void *vstr);
		   `fdb' specifies the fixed-length database object connected as
		   a writer.
		   `kstr' specifies the string of the decimal key.  It should be
		   more than 0.  If it is "min", the minimum ID number of exist-
		   ing	records  is specified.	If it is "prev", the number less
		   by one than the minimum ID  number  of  existing  records  is
		   specified.  If it is "max", the maximum ID number of existing
		   records is specified.  If it is "next", the number greater by
		   one	than the maximum ID number of existing records is speci-
		   fied.
		   `vstr' specifies the string of the value.
		   If successful, the return value is true, else, it is false.
		   If a record with the same key exists in  the  database,  this
		   function has no effect.

     The  function  `tcfdbputcat' is used in order to concatenate a value at the
     end of the existing record in a fixed-length database object.

	    bool tcfdbputcat(TCFDB *fdb,  int64_t  id,	const  void  *vbuf,  int
	    vsiz);
		   `fdb' specifies the fixed-length database object connected as
		   a writer.
		   `id'  specifies the ID number.  It should be more than 0.  If
		   it is `FDBIDMIN', the minimum ID number of  existing  records
		   is  specified.   If it is `FDBIDPREV', the number less by one
		   than the minimum ID number of existing records is  specified.
		   If  it  is  `FDBIDMAX',  the  maximum  ID  number of existing
		   records is specified.   If  it  is  `FDBIDNEXT',  the  number
		   greater by one than the maximum ID number of existing records
		   is specified.
		   `vbuf' specifies the pointer to the region of the value.
		   `vsiz' specifies the size of the region of the value.  If the
		   size  of the value is greater than the width tuning parameter
		   of the database, the size is cut down to the width.
		   If successful, the return value is true, else, it is false.
		   If there is no corresponding record, a new record is created.

     The function `tcfdbputcat2' is used in order to concatenate a value with  a
     decimal key in a fixed-length database object.

	    bool tcfdbputcat2(TCFDB *fdb, const void *kbuf, int ksiz, const void
	    *vbuf, int vsiz);
		   `fdb' specifies the fixed-length database object connected as
		   a writer.
		   `kbuf'  specifies  the  pointer  to the region of the decimal
		   key.  It should be more than 0.  If it is "min", the  minimum
		   ID number of existing records is specified.	If it is "prev",
		   the number less by one than the minimum ID number of existing
		   records  is specified.  If it is "max", the maximum ID number
		   of existing records is specified.  If it is "next", the  num-
		   ber	greater  by  one  than the maximum ID number of existing
		   records is specified.
		   `ksiz' specifies the size of the region of the key.
		   `vbuf' specifies the pointer to the region of the value.
		   `vsiz' specifies the size of the region of the value.  If the
		   size of the value is greater than the width tuning  parameter
		   of the database, the size is cut down to the width.
		   If successful, the return value is true, else, it is false.
		   If there is no corresponding record, a new record is created.

     The  function `tcfdbputcat3' is used in order to concatenate a string value
     with a decimal key in a fixed-length database object.

	    bool tcfdbputcat3(TCFDB *fdb, const char *kstr, const void *vstr);
		   `fdb' specifies the fixed-length database object connected as
		   a writer.
		   `kstr' specifies the string of the decimal key.  It should be
		   more than 0.  If it is "min", the minimum ID number of exist-
		   ing records is specified.  If it is "prev", the  number  less
		   by  one  than  the  minimum	ID number of existing records is
		   specified.  If it is "max", the maximum ID number of existing
		   records is specified.  If it is "next", the number greater by
		   one than the maximum ID number of existing records is  speci-
		   fied.
		   `vstr' specifies the string of the value.
		   If successful, the return value is true, else, it is false.
		   If there is no corresponding record, a new record is created.

     The  function  `tcfdbout'	is  used  in  order  to  remove  a  record  of a
     fixed-length database object.

	    bool tcfdbout(TCFDB *fdb, int64_t id);
		   `fdb' specifies the fixed-length database object connected as
		   a writer.
		   `id' specifies the ID number.  It should be more than 0.   If
		   it  is  `FDBIDMIN', the minimum ID number of existing records
		   is specified.  If it is `FDBIDMAX', the maximum ID number  of
		   existing records is specified.
		   If successful, the return value is true, else, it is false.

     The function `tcfdbout2' is used in order to remove a record with a decimal
     key of a fixed-length database object.

	    bool tcfdbout2(TCFDB *fdb, const void *kbuf, int ksiz);
		   `fdb' specifies the fixed-length database object connected as
		   a writer.
		   `kbuf'  specifies  the  pointer  to the region of the decimal
		   key.  It should be more than 0.  If it is "min", the  minimum
		   ID  number of existing records is specified.  If it is "max",
		   the maximum ID number of existing records is specified.
		   `ksiz' specifies the size of the region of the key.
		   If successful, the return value is true, else, it is false.

     The function `tcfdbout3' is used in order to remove a string record with  a
     decimal key of a fixed-length database object.

	    bool tcfdbout3(TCFDB *fdb, const char *kstr);
		   `fdb' specifies the fixed-length database object connected as
		   a writer.
		   `kstr' specifies the string of the decimal key.  It should be
		   more than 0.  If it is "min", the minimum ID number of exist-
		   ing	records  is  specified.   If it is "max", the maximum ID
		   number of existing records is specified.
		   If successful, the return value is true, else, it is false.

     The function `tcfdbget' is  used  in  order  to  retrieve	a  record  in  a
     fixed-length database object.

	    void *tcfdbget(TCFDB *fdb, int64_t id, int *sp);
		   `fdb' specifies the fixed-length database object.
		   `id'  specifies the ID number.  It should be more than 0.  If
		   it is `FDBIDMIN', the minimum ID number of  existing  records
		   is  specified.  If it is `FDBIDMAX', the maximum ID number of
		   existing records is specified.
		   `sp' specifies the pointer to the  variable	into  which  the
		   size of the region of the return value is assigned.
		   If  successful, the return value is the pointer to the region
		   of the value of the corresponding record.  `NULL' is returned
		   if no record corresponds.
		   Because an additional zero code is appended at the end of the
		   region of the return value, the return value can  be  treated
		   as  a  character  string.   Because	the region of the return
		   value is allocated with the `malloc' call, it should  be  re-
		   leased with the `free' call when it is no longer in use.

     The function `tcfdbget2' is used in order to retrieve a record with a deci-
     mal key in a fixed-length database object.

	    void *tcfdbget2(TCFDB *fdb, const void *kbuf, int ksiz, int *sp);
		   `fdb' specifies the fixed-length database object.
		   `kbuf'  specifies  the  pointer  to the region of the decimal
		   key.  It should be more than 0.  If it is "min", the  minimum
		   ID  number of existing records is specified.  If it is "max",
		   the maximum ID number of existing records is specified.
		   `ksiz' specifies the size of the region of the key.
		   `sp' specifies the pointer to the  variable	into  which  the
		   size of the region of the return value is assigned.
		   If  successful, the return value is the pointer to the region
		   of the value of the corresponding record.  `NULL' is returned
		   if no record corresponds.
		   Because an additional zero code is appended at the end of the
		   region of the return value, the return value can  be  treated
		   as  a  character  string.   Because	the region of the return
		   value is allocated with the `malloc' call, it should  be  re-
		   leased with the `free' call when it is no longer in use.

     The  function `tcfdbget3' is used in order to retrieve a string record with
     a decimal key in a fixed-length database object.

	    char *tcfdbget3(TCFDB *fdb, const char *kstr);
		   `fdb' specifies the fixed-length database object.
		   `kstr' specifies the string of the decimal key.  It should be
		   more than 0.  If it is "min", the minimum ID number of exist-
		   ing records is specified.  If it is	"max",	the  maximum  ID
		   number of existing records is specified.
		   If successful, the return value is the string of the value of
		   the	corresponding  record.	 `NULL' is returned if no record
		   corresponds.
		   Because an additional zero code is appended at the end of the
		   region of the return value, the return value can  be  treated
		   as  a  character  string.   Because	the region of the return
		   value is allocated with the `malloc' call, it should  be  re-
		   leased with the `free' call when it is no longer in use.

     The  function  `tcfdbget4'  is  used  in  order  to  retrieve a record in a
     fixed-length database object and write the value into a buffer.

	    int tcfdbget4(TCFDB *fdb, int64_t id, void *vbuf, int max);
		   `fdb' specifies the fixed-length database object.
		   `id' specifies the ID number.  It should be more than 0.   If
		   it  is  `FDBIDMIN', the minimum ID number of existing records
		   is specified.  If it is `FDBIDMAX', the maximum ID number  of
		   existing records is specified.
		   `vbuf'  specifies  the  pointer  to the buffer into which the
		   value of the corresponding record is written.
		   `max' specifies the size of the buffer.
		   If successful, the return value is the size	of  the  written
		   data,  else,  it  is  -1.  -1 is returned if no record corre-
		   sponds to the specified key.
		   Note that an additional zero code is not appended at the  end
		   of the region of the writing buffer.

     The function `tcfdbvsiz' is used in order to get the size of the value of a
     record in a fixed-length database object.

	    int tcfdbvsiz(TCFDB *fdb, int64_t id);
		   `fdb' specifies the fixed-length database object.
		   `id'  specifies the ID number.  It should be more than 0.  If
		   it is `FDBIDMIN', the minimum ID number of  existing  records
		   is  specified.  If it is `FDBIDMAX', the maximum ID number of
		   existing records is specified.
		   If successful, the return value is the size of the  value  of
		   the corresponding record, else, it is -1.

     The  function  `tcfdbvsiz2'  is  used in order to get the size of the value
     with a decimal key in a fixed-length database object.

	    int tcfdbvsiz2(TCFDB *fdb, const void *kbuf, int ksiz);
		   `fdb' specifies the fixed-length database object.
		   `kbuf' specifies the pointer to the	region	of  the  decimal
		   key.   It should be more than 0.  If it is "min", the minimum
		   ID number of existing records is specified.	If it is  "max",
		   the maximum ID number of existing records is specified.
		   `ksiz' specifies the size of the region of the key.
		   If  successful,  the return value is the size of the value of
		   the corresponding record, else, it is -1.

     The function `tcfdbvsiz3' is used in order to get the size  of  the  string
     value with a decimal key in a fixed-length database object.

	    int tcfdbvsiz3(TCFDB *fdb, const char *kstr);
		   `fdb' specifies the fixed-length database object.
		   `kstr' specifies the string of the decimal key.  It should be
		   more than 0.  If it is "min", the minimum ID number of exist-
		   ing	records  is  specified.   If it is "max", the maximum ID
		   number of existing records is specified.
		   If successful, the return value is the size of the  value  of
		   the corresponding record, else, it is -1.

     The function `tcfdbiterinit' is used in order to initialize the iterator of
     a fixed-length database object.

	    bool tcfdbiterinit(TCFDB *fdb);
		   `fdb' specifies the fixed-length database object.
		   If successful, the return value is true, else, it is false.
		   The	iterator  is  used  in	order to access the key of every
		   record stored in a database.

     The function `tcfdbiternext' is used in order to get the next ID number  of
     the iterator of a fixed-length database object.

	    uint64_t tcfdbiternext(TCFDB *fdb);
		   `fdb' specifies the fixed-length database object.
		   If  successful, the return value is the next ID number of the
		   iterator, else, it is 0.  0 is returned when no record is  to
		   be get out of the iterator.
		   It is possible to access every record by iteration of calling
		   this  function.   It  is  allowed to update or remove records
		   whose keys are fetched while the  iteration.   The  order  of
		   this traversal access method is ascending of the ID number.

     The  function `tcfdbiternext2' is used in order to get the next decimay key
     of the iterator of a fixed-length database object.

	    void *tcfdbiternext2(TCFDB *fdb, int *sp);
		   `fdb' specifies the fixed-length database object.
		   `sp' specifies the pointer to the  variable	into  which  the
		   size of the region of the return value is assigned.
		   If  successful, the return value is the pointer to the region
		   of the next decimal key, else, it is `NULL'.  `NULL'  is  re-
		   turned when no record is to be get out of the iterator.
		   Because an additional zero code is appended at the end of the
		   region  of  the return value, the return value can be treated
		   as a character string.  Because  the  region  of  the  return
		   value  is  allocated with the `malloc' call, it should be re-
		   leased with the `free' call when it is no longer in use.   It
		   is  possible  to  access every record by iteration of calling
		   this function.  It is allowed to  update  or  remove  records
		   whose  keys	are  fetched  while the iteration.  The order of
		   this traversal access method is ascending of the ID number.

     The function `tcfdbiternext3' is used in order to get the next decimay  key
     string of the iterator of a fixed-length database object.

	    char *tcfdbiternext3(TCFDB *fdb);
		   `fdb' specifies the fixed-length database object.
		   If  successful,  the  return  value is the string of the next
		   decimal key, else, it is `NULL'.  `NULL' is returned when  no
		   record is to be get out of the iterator.
		   Because  the region of the return value is allocated with the
		   `malloc' call, it should be released  with  the  `free'  call
		   when  it is no longer in use.  It is possible to access every
		   record by iteration of calling this function.  It is  allowed
		   to  update or remove records whose keys are fetched while the
		   iteration.  The order of this traversal access method is  as-
		   cending of the ID number.

     The function `tcfdbrange' is used in order to get range matching ID numbers
     in a fixed-length database object.

	    uint64_t  *tcfdbrange(TCFDB  *fdb, int64_t lower, int64_t upper, int
	    max, int *np);
		   `fdb' specifies the fixed-length database object.
		   `lower' specifies the lower limit of the  range.   If  it  is
		   `FDBIDMIN', the minimum ID is specified.
		   `upper'  specifies  the  upper  limit of the range.	If it is
		   `FDBIDMAX', the maximum ID is specified.
		   `max' specifies the maximum number of keys to be fetched.  If
		   it is negative, no limit is specified.
		   `np' specifies the pointer to the  variable	into  which  the
		   number of elements of the return value is assigned.
		   If successful, the return value is the pointer to an array of
		   ID  numbers of the corresponding records.  `NULL' is returned
		   on failure.	This function does never fail.	 It  returns  an
		   empty array even if no key corresponds.
		   Because  the region of the return value is allocated with the
		   `malloc' call, it should be released  with  the  `free'  call
		   when it is no longer in use.

     The  function  `tcfdbrange2' is used in order to get range matching decimal
     keys in a fixed-length database object.

	    TCLIST *tcfdbrange2(TCFDB *fdb, const void *lbuf,  int  lsiz,  const
	    void *ubuf, int usiz, int max);
		   `fdb' specifies the fixed-length database object.
		   `lbuf'  specifies the pointer to the region of the lower key.
		   If it is "min", the minimum ID number of existing records  is
		   specified.
		   `lsiz' specifies the size of the region of the lower key.
		   `ubuf'  specifies the pointer to the region of the upper key.
		   If it is "max", the maximum ID number of existing records  is
		   specified.
		   `usiz' specifies the size of the region of the upper key.
		   `max' specifies the maximum number of keys to be fetched.  If
		   it is negative, no limit is specified.
		   The	return value is a list object of the corresponding deci-
		   mal keys.  This function does  never  fail.	 It  returns  an
		   empty list even if no key corresponds.
		   Because  the  object  of the return value is created with the
		   function `tclistnew', it should be deleted with the	function
		   `tclistdel'	when  it  is  no  longer in use.  Note that this
		   function may be very slow because every key in  the	database
		   is scanned.

     The  function  `tcfdbrange3' is used in order to get range matching decimal
     keys with strings in a fixed-length database object.

	    TCLIST *tcfdbrange3(TCFDB *fdb, const char *lstr, const char  *ustr,
	    int max);
		   `fdb' specifies the fixed-length database object.
		   `lstr'  specifies  the  string  of  the  lower key.	If it is
		   "min", the minimum ID number of existing  records  is  speci-
		   fied.
		   `ustr'  specifies  the  string  of  the  upper key.	If it is
		   "max", the maximum ID number of existing  records  is  speci-
		   fied.
		   `max' specifies the maximum number of keys to be fetched.  If
		   it is negative, no limit is specified.
		   The	return value is a list object of the corresponding deci-
		   mal keys.  This function does  never  fail.	 It  returns  an
		   empty list even if no key corresponds.
		   Because  the  object  of the return value is created with the
		   function `tclistnew', it should be deleted with the	function
		   `tclistdel'	when  it  is  no  longer in use.  Note that this
		   function may be very slow because every key in  the	database
		   is scanned.

     The  function  `tcfdbrange4'  is used in order to get keys with an interval
     notation in a fixed-length database object.

	    TCLIST *tcfdbrange4(TCFDB *fdb, const  void  *ibuf,  int  isiz,  int
	    max);
		   `fdb' specifies the fixed-length database object.
		   `ibuf'  specifies  the  pointer to the region of the interval
		   notation.
		   `isiz' specifies the size of the region of the interval nota-
		   tion.
		   `max' specifies the maximum number of keys to be fetched.  If
		   it is negative, no limit is specified.
		   The return value is a list object of the corresponding  deci-
		   mal	keys.	This  function	does  never fail.  It returns an
		   empty list even if no key corresponds.
		   Because the object of the return value is  created  with  the
		   function  `tclistnew', it should be deleted with the function
		   `tclistdel' when it is no longer  in  use.	Note  that  this
		   function  may  be very slow because every key in the database
		   is scanned.

     The function `tcfdbrange5' is used in order to get keys  with  an	interval
     notation string in a fixed-length database object.

	    TCLIST *tcfdbrange5(TCFDB *fdb, const void *istr, int max);
		   `fdb' specifies the fixed-length database object.
		   `istr'  specifies  the  pointer to the region of the interval
		   notation string.
		   `max' specifies the maximum number of keys to be fetched.  If
		   it is negative, no limit is specified.
		   The return value is a list object of the corresponding  deci-
		   mal	keys.	This  function	does  never fail.  It returns an
		   empty list even if no key corresponds.
		   Because the object of the return value is  created  with  the
		   function  `tclistnew', it should be deleted with the function
		   `tclistdel' when it is no longer  in  use.	Note  that  this
		   function  may  be very slow because every key in the database
		   is scanned.

     The function `tcfdbaddint' is used in order to add an integer to  a  record
     in a fixed-length database object.

	    int tcfdbaddint(TCFDB *fdb, int64_t id, int num);
		   `fdb' specifies the fixed-length database object connected as
		   a writer.
		   `id'  specifies the ID number.  It should be more than 0.  If
		   it is `FDBIDMIN', the minimum ID number of  existing  records
		   is  specified.   If it is `FDBIDPREV', the number less by one
		   than the minimum ID number of existing records is  specified.
		   If  it  is  `FDBIDMAX',  the  maximum  ID  number of existing
		   records is specified.   If  it  is  `FDBIDNEXT',  the  number
		   greater by one than the maximum ID number of existing records
		   is specified.
		   `num' specifies the additional value.
		   If successful, the return value is the summation value, else,
		   it is `INT_MIN'.
		   If  the  corresponding record exists, the value is treated as
		   an integer and is added to.	If no record corresponds, a  new
		   record of the additional value is stored.

     The  function  `tcfdbadddouble'  is used in order to add a real number to a
     record in a fixed-length database object.

	    double tcfdbadddouble(TCFDB *fdb, int64_t id, double num);
		   `fdb' specifies the fixed-length database object connected as
		   a writer.
		   `id' specifies the ID number.  It should be more than 0.   If
		   it  is  `FDBIDMIN', the minimum ID number of existing records
		   is specified.  If it is `FDBIDPREV', the number less  by  one
		   than  the minimum ID number of existing records is specified.
		   If it is  `FDBIDMAX',  the  maximum	ID  number  of	existing
		   records  is	specified.   If  it  is  `FDBIDNEXT', the number
		   greater by one than the maximum ID number of existing records
		   is specified.
		   `num' specifies the additional value.
		   If successful, the return value is the summation value, else,
		   it is Not-a-Number.
		   If the corresponding record exists, the value is treated as a
		   real number and is added to.  If no record corresponds, a new
		   record of the additional value is stored.

     The function `tcfdbsync' is used in order to synchronize  updated	contents
     of a fixed-length database object with the file and the device.

	    bool tcfdbsync(TCFDB *fdb);
		   `fdb' specifies the fixed-length database object connected as
		   a writer.
		   If successful, the return value is true, else, it is false.
		   This  function is useful when another process connects to the
		   same database file.

     The function `tcfdboptimize' is used in order to optimize	the  file  of  a
     fixed-length database object.

	    bool tcfdboptimize(TCFDB *fdb, int32_t width, int64_t limsiz);
		   `fdb' specifies the fixed-length database object connected as
		   a writer.
		   `width'  specifies the width of the value of each record.  If
		   it is not more than 0, the current setting is not changed.
		   `limsiz' specifies the limit size of the database  file.   If
		   it is not more than 0, the current setting is not changed.
		   If successful, the return value is true, else, it is false.

     The  function  `tcfdbvanish'  is  used  in order to remove all records of a
     fixed-length database object.

	    bool tcfdbvanish(TCFDB *fdb);
		   `fdb' specifies the fixed-length database object connected as
		   a writer.
		   If successful, the return value is true, else, it is false.

     The function `tcfdbcopy' is used in order to copy the database  file  of  a
     fixed-length database object.

	    bool tcfdbcopy(TCFDB *fdb, const char *path);
		   `fdb' specifies the fixed-length database object.
		   `path' specifies the path of the destination file.  If it be-
		   gins  with  `@', the trailing substring is executed as a com-
		   mand line.
		   If successful, the return value is true, else, it  is  false.
		   False  is  returned	if the executed command returns non-zero
		   code.
		   The database file is assured to be kept synchronized and  not
		   modified  while  the  copying  or  executing  operation is in
		   progress.  So, this function is useful  to  create  a  backup
		   file of the database file.

     The  function `tcfdbtranbegin' is used in order to begin the transaction of
     a fixed-length database object.

	    bool tcfdbtranbegin(TCFDB *fdb);
		   `fdb' specifies the fixed-length database object connected as
		   a writer.
		   If successful, the return value is true, else, it is false.
		   The database is locked by the thread while the transaction so
		   that only one transaction can be activated  with  a	database
		   object  at  the  same time.	Thus, the serializable isolation
		   level is assumed if every database operation is performed  in
		   the	transaction.   All  updated regions are kept track of by
		   write ahead logging while the transaction.  If  the	database
		   is  closed during transaction, the transaction is aborted im-
		   plicitly.

     The function `tcfdbtrancommit' is used in order to commit	the  transaction
     of a fixed-length database object.

	    bool tcfdbtrancommit(TCFDB *fdb);
		   `fdb' specifies the fixed-length database object connected as
		   a writer.
		   If successful, the return value is true, else, it is false.
		   Update  in the transaction is fixed when it is committed suc-
		   cessfully.

     The function `tcfdbtranabort' is used in order to abort the transaction  of
     a fixed-length database object.

	    bool tcfdbtranabort(TCFDB *fdb);
		   `fdb' specifies the fixed-length database object connected as
		   a writer.
		   If successful, the return value is true, else, it is false.
		   Update  in  the  transaction is discarded when it is aborted.
		   The state of the database is rollbacked  to	before	transac-
		   tion.

     The  function  `tcfdbpath'  is  used  in  order  to  get the file path of a
     fixed-length database object.

	    const char *tcfdbpath(TCFDB *fdb);
		   `fdb' specifies the fixed-length database object.
		   The return value is the path of the database file  or  `NULL'
		   if the object does not connect to any database file.

     The function `tcfdbrnum' is used in order to get the number of records of a
     fixed-length database object.

	    uint64_t tcfdbrnum(TCFDB *fdb);
		   `fdb' specifies the fixed-length database object.
		   The	return value is the number of records or 0 if the object
		   does not connect to any database file.

     The function `tcfdbfsiz' is used in order to get the size of  the	database
     file of a fixed-length database object.

	    uint64_t tcfdbfsiz(TCFDB *fdb);
		   `fdb' specifies the fixed-length database object.
		   The return value is the size of the database file or 0 if the
		   object does not connect to any database file.

SEE ALSO
     tcftest(1), tcfmttest(1), tcfmgr(1), tokyocabinet(3)

Man Page			   2012-08-18				TCFDB(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=tcfdb&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help