/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
- * Copyright 2000-2015 The OpenLDAP Foundation.
+ * Copyright 2000-2018 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
#define MDB_AD2ID 0
#define MDB_DN2ID 1
#define MDB_ID2ENTRY 2
-#define MDB_NDB 3
+#define MDB_ID2VAL 3
+#define MDB_NDB 4
/* The default search IDL stack cache depth */
#define DEFAULT_SEARCH_STACK_DEPTH 16
/* Default to 10MB max */
#define DEFAULT_MAPSIZE (10*1048576)
+/* Most users will never see this */
+#define DEFAULT_RTXN_SIZE 10000
+
+#ifdef LDAP_DEVEL
#define MDB_MONITOR_IDX
+#endif
typedef struct mdb_monitor_t {
void *mdm_cb;
int mi_search_stack_depth;
int mi_readers;
+ uint32_t mi_rtxn_size;
int mi_txn_cp;
uint32_t mi_txn_cp_min;
uint32_t mi_txn_cp_kbyte;
+
struct re_s *mi_txn_cp_task;
struct re_s *mi_index_task;
int mi_numads;
+ unsigned mi_multi_hi;
+ /* more than this many values in an attr goes
+ * into a separate DB */
+ unsigned mi_multi_lo;
+ /* less than this many values in an attr goes
+ * back into main blob */
+
MDB_dbi mi_dbis[MDB_NDB];
AttributeDescription *mi_ads[MDB_MAXADS];
int mi_adxs[MDB_MAXADS];
#define mi_id2entry mi_dbis[MDB_ID2ENTRY]
#define mi_dn2id mi_dbis[MDB_DN2ID]
#define mi_ad2id mi_dbis[MDB_AD2ID]
+#define mi_id2val mi_dbis[MDB_ID2VAL]
typedef struct mdb_op_info {
OpExtra moi_oe;
} mdb_op_info;
#define MOI_READER 0x01
#define MOI_FREEIT 0x02
-
-/* Copy an ID "src" to pointer "dst" in big-endian byte order */
-#define MDB_ID2DISK( src, dst ) \
- do { int i0; ID tmp; unsigned char *_p; \
- tmp = (src); _p = (unsigned char *)(dst); \
- for ( i0=sizeof(ID)-1; i0>=0; i0-- ) { \
- _p[i0] = tmp & 0xff; tmp >>= 8; \
- } \
- } while(0)
-
-/* Copy a pointer "src" to a pointer "dst" from big-endian to native order */
-#define MDB_DISK2ID( src, dst ) \
- do { unsigned i0; ID tmp = 0; unsigned char *_p; \
- _p = (unsigned char *)(src); \
- for ( i0=0; i0<sizeof(ID); i0++ ) { \
- tmp <<= 8; tmp |= *_p++; \
- } *(dst) = tmp; \
- } while (0)
+#define MOI_KEEPER 0x04
LDAP_END_DECL
#ifdef LDAP_COMP_MATCH
ComponentReference* ai_cr; /*component indexing*/
#endif
- Avlnode *ai_root; /* for tools */
+ TAvlnode *ai_root; /* for tools */
MDB_cursor *ai_cursor; /* for tools */
int ai_idx; /* position in AI array */
MDB_dbi ai_dbi;