X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-mdb%2Fback-mdb.h;h=91cbf8d228ba4bb234e255a37e45007099186568;hb=59e9ff6243465640956b58ad1756a3ede53eca7c;hp=9e8025bf1dbf52ea719ca5f374b0747903eef898;hpb=21bf33b0e8e044d6722a9c3ef4a3961d71465d77;p=openldap
diff --git a/servers/slapd/back-mdb/back-mdb.h b/servers/slapd/back-mdb/back-mdb.h
index 9e8025bf1d..91cbf8d228 100644
--- a/servers/slapd/back-mdb/back-mdb.h
+++ b/servers/slapd/back-mdb/back-mdb.h
@@ -2,7 +2,7 @@
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software .
*
- * 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
@@ -32,7 +32,8 @@ LDAP_BEGIN_DECL
#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
@@ -50,7 +51,9 @@ LDAP_BEGIN_DECL
/* 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;
@@ -83,6 +86,7 @@ struct mdb_info {
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;
@@ -102,6 +106,13 @@ struct mdb_info {
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];
@@ -110,6 +121,7 @@ struct mdb_info {
#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;
@@ -121,24 +133,6 @@ typedef struct mdb_op_info {
#define MOI_FREEIT 0x02
#define MOI_KEEPER 0x04
-/* 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