+I#Berkeley DB: Db.join[P

Db.join





import com.sleepycat.db.*;

(public Dbc join(Dbc curslist, int flags) throws DbException;





Description



EThe Db.join method creates a specialized cursor for use in performingIjoins on secondary indices. Your data must be organized in the following*manner in order to take advantage of this:

    J

  1. The actual data should be stored in the database represented by the=primary Db handle.P

  2. Secondary indices should be stored in separate database files, whose keysDare the values of the secondary indices and whose data items are theIprimary keys corresponding to the records having the designated secondaryGkey value. It is acceptable (and expected) that there may be duplicate!entries in the secondary indices.

    CThese duplicate entries should be sorted. For more information see§the Db.DB_DUPSORT flag to the DbInfo.set_flags method.



dThe primary argument contains the Db handle of theDprimary database, which is keyed by the data values found in entriesin the curslist.

@The curslist argument contains a null terminated array ofŒDbc objects. Each Dbc must have been initialized toDreference the key on which the underlying database should be joined.gTypically, this initialization is done by a Dbc.get call withNthe Db.DB_SET flag specified.

EThe flags parameter is currently unused, and must be set to 0.

EThe returned cursor has the standard cursor functions, that behave asfollows:

Y

Dbc.get
Iterates over the values associated with the keys to which each item inFcurslist has been initialized. Any data value which appears inEall items specified by the curslist argument is then used as a?key into the primary, and the key/data pair found in theprimary is returned.

CThe flags parameter must be set to 0 or the following value:

[

Db.DB_JOIN_ITEM
Do not use the data value found in all of the cursors as a lookupEkey for the primary, but simply return it in the key parameter/instead. The data parameter is left unchanged.


RIn addition, the following value may be set by logically OR'ing it into theflags parameter:

T

DB_RMW
Acquire write locks instead of read locks when doing the retrieval.BSetting this flag may decrease the likelihood of deadlock during aFread-modify-write cycle by immediately acquiring the write lock duringFthe read part of the cycle so that another thread of control acquiringGa read lock for the same item, in its own read-modify-write cycle, willnot result in deadlock.
!

Dbc.put
Returns EINVAL.!

Dbc.del
Returns EINVAL.M

Dbc.close
Close the cursor and release all resources. (Closing the@cursors in curslist is the responsibility of the caller.)


DIn a transaction protected environment, all of the cursors listed inCcurslist must have been created within the same transaction.

The Db.joinHmethod throws an exception that encapsulates an errno on failure.



Errors

OIf a fatal error occurs in Berkeley DB, the Db.join method may fail and throw a}
DbRunRecoveryException, at which point all subsequent database%calls will also fail in the same way.

The Db.join&method may fail and throw an exceptionKfor any of the errors specified for the following Berkeley DB and C library functions: fflush(3), fprintf(3),free(3), malloc(3), memset(3), vfprintf(3),and vsnprintf(3).

In addition, the Db.join&method may fail and throw an exceptionencapsulating errnofor the following conditions:

B

EINVAL
An invalid flag value or parameter was specified.

7The c_put or c_del functions were called.





Class

-Db



See Also

4Db.close,6Db.cursor,0Db.del,.Db.fd,0Db.get,HDb.get_byteswapped,:Db.get_type,Db.join,2Db.open,0Db.put,1Db.statand2Db.sync.
ÿÿ