DB->put

APIRef

#include <db.h>

int DB->put(DB *db, DB_TXN *txnid, DBT *key, DBT *data, u_int32_t flags);

Description

The DB->put function stores key/data pairs in the database.

If the database supports duplicates, the DB->put function adds the new data value at the end of the duplicate set. If the database supports sorted duplicates, the new data value is inserted at the correct sorted location.

If the file is being accessed under transaction protection, the txnid parameter is a transaction ID returned from txn_begin, otherwise, NULL.

The flags parameter must be set to 0 or one of the following values:

DB_APPEND
Append the key/data pair to the end of the database. For the DB_APPEND flag to be specified, the underlying database must be a Queue or Recno database. The record number allocated to the record is returned in the specified key.

There is a minor behavioral difference between the Recno and Queue access methods for the DB_APPEND flag. If a transaction enclosing a DB->put operation with the DB_APPEND flag aborts, the record number may be decremented (and later re-allocated by a subsequent DB_APPEND operation) by the Recno access method, but will not be decremented or re-allocated by the Queue access method.

DB_NOOVERWRITE
Enter the new key/data pair only if the key does not already appear in the database.

The default behavior of the DB->put function is to enter the new key/data pair, replacing any previously existing key if duplicates are disallowed, or to add a duplicate entry if duplicates are allowed. Even if the designated database allows duplicates, a call to DB->put with the DB_NOOVERWRITE flag set will fail if the key already exists in the database.

The DB->put function returns a non-zero error value on failure, 0 on success, and returns DB_KEYEXIST if the DB_NOOVERWRITE flag was set and the key already exists in the file.

Errors

If a fatal error occurs in Berkeley DB, the DB->put function will fail and return DB_RUNRECOVERY, at which point all subsequent database calls will fail in the same way.

In addition, the DB->put function may fail and return a non-zero error for the following conditions:

EACCES
An attempt was made to modify a read-only database.

DB_LOCK_DEADLOCK
The operation was selected to resolve a deadlock.

EINVAL
An invalid flag value or parameter was specified.

A record number of 0 was specified.

An attempt was made to add a record to a fixed-length database that was too large to fit.

An attempt was made to do a partial put.

In addition, the DB->put function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions.

ENOSPC
A btree exceeded the maximum btree depth (255).

See Also

db_create, DB->close, DB->cursor, DB->del, DB->err, DB->fd, DB->get, DB->get_byteswapped, DB->get_type, DB->join, DB->open, DB->put, DB->remove, DB->set_bt_compare, DB->set_bt_minkey, DB->set_bt_prefix, DB->set_cachesize, DB->set_dup_compare, DB->set_errcall, DB->set_errfile, DB->set_errpfx, DB->set_flags, DB->set_h_ffactor, DB->set_h_hash, DB->set_h_nelem, DB->set_lorder, DB->set_malloc, DB->set_pagesize, DB->set_paniccall, DB->set_realloc, DB->set_re_delim, DB->set_re_len, DB->set_re_pad, DB->set_re_source, DB->stat, DB->sync and DB->upgrade.

APIRef

Copyright Sleepycat Software