xref: /netbsd-src/external/bsd/openldap/dist/servers/slapd/back-wt/back-wt.h (revision 549b59ed3ccf0d36d3097190a0db27b770f3a839)
1 /*	$NetBSD: back-wt.h,v 1.2 2021/08/14 16:15:02 christos Exp $	*/
2 
3 /* OpenLDAP WiredTiger backend */
4 /* $OpenLDAP$ */
5 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
6  *
7  * Copyright 2002-2021 The OpenLDAP Foundation.
8  * All rights reserved.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted only as authorized by the OpenLDAP
12  * Public License.
13  *
14  * A copy of this license is available in the file LICENSE in the
15  * top-level directory of the distribution or, alternatively, at
16  * <http://www.OpenLDAP.org/license.html>.
17  */
18 /* ACKNOWLEDGEMENTS:
19  * This work was developed by HAMANO Tsukasa <hamano@osstech.co.jp>
20  * based on back-bdb for inclusion in OpenLDAP Software.
21  * WiredTiger is a product of MongoDB Inc.
22  */
23 
24 #ifndef _BACK_WT_H_
25 #define _BACK_WT_H_
26 
27 #include <portable.h>
28 
29 #include <ac/errno.h>
30 #include <sys/stat.h>
31 
32 #include "slap.h"
33 #include "wiredtiger.h"
34 
35 /* The default search IDL stack cache depth */
36 #define DEFAULT_SEARCH_STACK_DEPTH  16
37 
38 struct wt_info {
39 	WT_CONNECTION *wi_conn;
40 	char *wi_dbenv_home;
41 	char *wi_dbenv_config;
42 	ID	wi_lastid;
43 
44 	slap_mask_t wi_defaultmask;
45 	int         wi_nattrs;
46 	struct wt_attrinfo **wi_attrs;
47 	void *wi_search_stack;
48 	int wi_search_stack_depth;
49 
50 	struct re_s *wi_index_task;
51 
52 	int wi_flags;
53 #define WT_IS_OPEN      0x01
54 #define WT_OPEN_INDEX   0x02
55 #define WT_DEL_INDEX    0x08
56 #define WT_RE_OPEN      0x10
57 #define WT_NEED_UPGRADE 0x20
58 };
59 
60 #define WT_TABLE_ID2ENTRY "table:id2entry"
61 #define WT_TABLE_DN2ID "table:dn2id"
62 
63 #define WT_INDEX_DN "index:id2entry:dn"
64 #define WT_INDEX_PID "index:dn2id:pid"
65 #define WT_INDEX_REVDN "index:dn2id:revdn"
66 
67 #define ITEMzero(item) (memset((item), 0, sizeof(WT_ITEM)))
68 #define ITEM2bv(item,bv) ((bv)->bv_val = (item)->data, \
69 						  (bv)->bv_len = (item)->size)
70 #define bv2ITEM(bv,item) ((item)->data = (bv)->bv_val, \
71 						 (item)->size = (bv)->bv_len )
72 
73 typedef struct {
74 	WT_SESSION *session;
75 } wt_ctx;
76 
77 /* for the cache of attribute information (which are indexed, etc.) */
78 typedef struct wt_attrinfo {
79 	AttributeDescription *ai_desc; /* attribute description cn;lang-en */
80 	slap_mask_t ai_indexmask;   /* how the attr is indexed  */
81 	slap_mask_t ai_newmask; /* new settings to replace old mask */
82 	#ifdef LDAP_COMP_MATCH
83 	ComponentReference* ai_cr; /*component indexing*/
84 	#endif
85 } AttrInfo;
86 
87 /* These flags must not clash with SLAP_INDEX flags or ops in slap.h! */
88 #define	WT_INDEX_DELETING	0x8000U	/* index is being modified */
89 #define	WT_INDEX_UPDATE_OP	0x03	/* performing an index update */
90 
91 #include "proto-wt.h"
92 
93 #endif /* _BACK_WT_H_ */
94 
95 /*
96  * Local variables:
97  * indent-tabs-mode: t
98  * tab-width: 4
99  * c-basic-offset: 4
100  * End:
101  */
102