00001 /*- 00002 * See the file LICENSE for redistribution information. 00003 * 00004 * Copyright (c) 1998-2005 00005 * Sleepycat Software. All rights reserved. 00006 * 00007 * $Id: db_join.h,v 12.2 2005/06/16 20:21:47 bostic Exp $ 00008 */ 00009 00010 #ifndef _DB_JOIN_H_ 00011 #define _DB_JOIN_H_ 00012 /* 00013 * Joins use a join cursor that is similar to a regular DB cursor except 00014 * that it only supports c_get and c_close functionality. Also, it does 00015 * not support the full range of flags for get. 00016 */ 00017 typedef struct __join_cursor { 00018 u_int8_t *j_exhausted; /* Array of flags; is cursor i exhausted? */ 00019 DBC **j_curslist; /* Array of cursors in the join: constant. */ 00020 DBC **j_fdupcurs; /* Cursors w/ first instances of current dup. */ 00021 DBC **j_workcurs; /* Scratch cursor copies to muck with. */ 00022 DB *j_primary; /* Primary dbp. */ 00023 DBT j_key; /* Used to do lookups. */ 00024 DBT j_rdata; /* Memory used for data return. */ 00025 u_int32_t j_ncurs; /* How many cursors do we have? */ 00026 #define JOIN_RETRY 0x01 /* Error on primary get; re-return same key. */ 00027 u_int32_t flags; 00028 } JOIN_CURSOR; 00029 00030 #endif /* !_DB_JOIN_H_ */