mirror of
https://github.com/MariaDB/server.git
synced 2025-11-10 23:02:54 +03:00
159 lines
8.6 KiB
HTML
159 lines
8.6 KiB
HTML
<!--$Id: db_get.so,v 10.31 2000/11/28 20:12:30 bostic Exp $-->
|
|
<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
|
|
<!--All rights reserved.-->
|
|
<html>
|
|
<head>
|
|
<title>Berkeley DB: Db::get</title>
|
|
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
|
|
<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
|
|
</head>
|
|
<body bgcolor=white>
|
|
<a name="2"><!--meow--></a>
|
|
<table><tr valign=top>
|
|
<td>
|
|
<h1>Db::get</h1>
|
|
</td>
|
|
<td width="1%">
|
|
<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
|
|
</td></tr></table>
|
|
<hr size=1 noshade>
|
|
<tt>
|
|
<h3><pre>
|
|
#include <db_cxx.h>
|
|
<p>
|
|
int
|
|
Db::get(DbTxn *txnid, Dbt *key, Dbt *data, u_int32_t flags);
|
|
</pre></h3>
|
|
<h1>Description</h1>
|
|
<p>The Db::get method retrieves key/data pairs from the database. The
|
|
address
|
|
and length of the data associated with the specified <b>key</b> are
|
|
returned in the structure referenced by <b>data</b>.
|
|
<p>In the presence of duplicate key values, Db::get will return the
|
|
first data item for the designated key. Duplicates are sorted by insert
|
|
order except where this order has been overridden by cursor operations.
|
|
<b>Retrieval of duplicates requires the use of cursor operations.</b>
|
|
See <a href="../api_cxx/dbc_get.html">Dbc::get</a> for details.
|
|
<p>If the file is being accessed under transaction protection, the
|
|
<b>txnid</b> parameter is a transaction ID returned from
|
|
<a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>, otherwise, NULL.
|
|
<p>The <b>flags</b> parameter must be set to 0 or one of the following
|
|
values:
|
|
<p><dl compact>
|
|
<p><dt><a name="DB_CONSUME">DB_CONSUME</a><dd>Return the record number and data from the available record closest to
|
|
the head of the queue and delete the record. The cursor will be
|
|
positioned on the deleted record. The record number will be returned
|
|
in <b>key</b> as described in <a href="../api_cxx/dbt_class.html">Dbt</a>. The data will be returned
|
|
in the <b>data</b> parameter. A record is available if it is not
|
|
deleted and is not currently locked. The underlying database must be
|
|
of type Queue for DB_CONSUME to be specified.
|
|
<p><dt><a name="DB_CONSUME_WAIT">DB_CONSUME_WAIT</a><dd>The DB_CONSUME_WAIT flag is the same as the DB_CONSUME
|
|
flag except that if the Queue database is empty, the thread of control
|
|
will wait until there is data in the queue before returning. The
|
|
underlying database must be of type Queue for DB_CONSUME_WAIT
|
|
to be specified.
|
|
<p><dt><a name="DB_GET_BOTH">DB_GET_BOTH</a><dd>Retrieve the key/data pair only if both the key and data match the
|
|
arguments.
|
|
<p><dt><a name="DB_SET_RECNO">DB_SET_RECNO</a><dd>Retrieve the specified numbered key/data pair from a database.
|
|
Upon return, both the <b>key</b> and <b>data</b> items will have been
|
|
filled in, not just the data item as is done for all other uses of the
|
|
Db::get method.
|
|
<p>The <b>data</b> field of the specified <b>key</b>
|
|
must be a pointer to a logical record number (i.e., a <b>db_recno_t</b>).
|
|
This record number determines the record to be retrieved.
|
|
<p>For DB_SET_RECNO to be specified, the underlying database must be
|
|
of type Btree and it must have been created with the DB_RECNUM flag.
|
|
</dl>
|
|
<p>In addition, the following flag may be set by bitwise inclusively <b>OR</b>'ing it into the
|
|
<b>flags</b> parameter:
|
|
<p><dl compact>
|
|
<p><dt><a name="DB_RMW">DB_RMW</a><dd>Acquire write locks instead of read locks when doing the retrieval.
|
|
Setting this flag may decrease the likelihood of deadlock during a
|
|
read-modify-write cycle by immediately acquiring the write lock during
|
|
the read part of the cycle so that another thread of control acquiring
|
|
a read lock for the same item, in its own read-modify-write cycle, will
|
|
not result in deadlock.
|
|
<p>As the Db::get interface will not hold locks across
|
|
Berkeley DB interface calls in non-transactional environments, the
|
|
<a href="../api_cxx/dbc_get.html#DB_RMW">DB_RMW</a> flag to the Db::get call is only meaningful in
|
|
the presence of transactions.
|
|
</dl>
|
|
<p>If the database is a Queue or Recno database and the requested key exists,
|
|
but was never explicitly created by the application or was later deleted,
|
|
the Db::get method returns <a href="../ref/program/errorret.html#DB_KEYEMPTY">DB_KEYEMPTY</a>.
|
|
<p>Otherwise, if the requested key is not in the database, the
|
|
Db::get function returns <a href="../ref/program/errorret.html#DB_NOTFOUND">DB_NOTFOUND</a>.
|
|
<p>Otherwise, the Db::get method either returns a non-zero error value or throws an exception that
|
|
encapsulates a non-zero error value on failure, and returns 0 on success.
|
|
<h1>Errors</h1>
|
|
<p>The Db::get method may fail and throw an exception or return a non-zero error for the following conditions:
|
|
<p><dl compact>
|
|
<p><dt>DB_LOCK_DEADLOCK<dd>The operation was selected to resolve a deadlock.
|
|
</dl>
|
|
<p><dl compact>
|
|
<p><dt>ENOMEM<dd>There was insufficient memory to return the requested item.
|
|
</dl>
|
|
<p><dl compact>
|
|
<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
|
|
<p>A record number of 0 was specified.
|
|
<p>The <a href="../api_cxx/env_open.html#DB_THREAD">DB_THREAD</a> flag was specified to the
|
|
<a href="../api_cxx/db_open.html">Db::open</a> method and none of the <a href="../api_cxx/dbt_class.html#DB_DBT_MALLOC">DB_DBT_MALLOC</a>,
|
|
<a href="../api_cxx/dbt_class.html#DB_DBT_REALLOC">DB_DBT_REALLOC</a> or <a href="../api_cxx/dbt_class.html#DB_DBT_USERMEM">DB_DBT_USERMEM</a> flags were set in the
|
|
<a href="../api_cxx/dbt_class.html">Dbt</a>.
|
|
</dl>
|
|
<p>The Db::get method may fail and throw an exception or return a non-zero error for errors specified for other Berkeley DB and C library or system methods.
|
|
If a catastrophic error has occurred, the Db::get method may fail and either
|
|
return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> or throw an exception encapsulating
|
|
<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail
|
|
in the same way.
|
|
<h3>Class</h3>
|
|
<a href="../api_cxx/db_class.html">Db</a>
|
|
<h1>See Also</h1>
|
|
<a href="../api_cxx/db_close.html">Db::close</a>,
|
|
<a href="../api_cxx/db_cursor.html">Db::cursor</a>,
|
|
<a href="../api_cxx/db_del.html">Db::del</a>,
|
|
<a href="../api_cxx/db_err.html">Db::err</a>,
|
|
<a href="../api_cxx/db_fd.html">Db::fd</a>,
|
|
<a href="../api_cxx/db_get.html">Db::get</a>,
|
|
<a href="../api_cxx/db_get_byteswapped.html">Db::get_byteswapped</a>,
|
|
<a href="../api_cxx/db_get_type.html">Db::get_type</a>,
|
|
<a href="../api_cxx/db_join.html">Db::join</a>,
|
|
<a href="../api_cxx/db_key_range.html">Db::key_range</a>,
|
|
<a href="../api_cxx/db_open.html">Db::open</a>,
|
|
<a href="../api_cxx/db_put.html">Db::put</a>,
|
|
<a href="../api_cxx/db_remove.html">Db::remove</a>,
|
|
<a href="../api_cxx/db_set_bt_compare.html">Db::set_bt_compare</a>,
|
|
<a href="../api_cxx/db_set_bt_minkey.html">Db::set_bt_minkey</a>,
|
|
<a href="../api_cxx/db_set_bt_prefix.html">Db::set_bt_prefix</a>,
|
|
<a href="../api_cxx/db_set_cachesize.html">Db::set_cachesize</a>,
|
|
<a href="../api_cxx/db_set_dup_compare.html">Db::set_dup_compare</a>,
|
|
<a href="../api_cxx/db_set_errcall.html">Db::set_errcall</a>,
|
|
<a href="../api_cxx/db_set_errfile.html">Db::set_errfile</a>,
|
|
<a href="../api_cxx/db_set_errpfx.html">Db::set_errpfx</a>,
|
|
<a href="../api_cxx/db_set_flags.html">Db::set_flags</a>,
|
|
<a href="../api_cxx/db_set_h_ffactor.html">Db::set_h_ffactor</a>,
|
|
<a href="../api_cxx/db_set_h_hash.html">Db::set_h_hash</a>,
|
|
<a href="../api_cxx/db_set_h_nelem.html">Db::set_h_nelem</a>,
|
|
<a href="../api_cxx/db_set_lorder.html">Db::set_lorder</a>,
|
|
<a href="../api_cxx/db_set_malloc.html">Db::set_malloc</a>,
|
|
<a href="../api_cxx/db_set_pagesize.html">Db::set_pagesize</a>,
|
|
<a href="../api_cxx/db_set_paniccall.html">Db::set_paniccall</a>,
|
|
<a href="../api_cxx/db_set_q_extentsize.html">Db::set_q_extentsize</a>,
|
|
<a href="../api_cxx/db_set_realloc.html">Db::set_realloc</a>,
|
|
<a href="../api_cxx/db_set_re_delim.html">Db::set_re_delim</a>,
|
|
<a href="../api_cxx/db_set_re_len.html">Db::set_re_len</a>,
|
|
<a href="../api_cxx/db_set_re_pad.html">Db::set_re_pad</a>,
|
|
<a href="../api_cxx/db_set_re_source.html">Db::set_re_source</a>,
|
|
<a href="../api_cxx/db_stat.html">Db::stat</a>,
|
|
<a href="../api_cxx/db_sync.html">Db::sync</a>,
|
|
<a href="../api_cxx/db_upgrade.html">Db::upgrade</a>
|
|
and
|
|
<a href="../api_cxx/db_verify.html">Db::verify</a>.
|
|
</tt>
|
|
<table><tr><td><br></td><td width="1%">
|
|
<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
|
|
</td></tr></table>
|
|
<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
|
|
</body>
|
|
</html>
|