Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
HAMANO Tsukasa
OpenLDAP
Commits
cb451917
Commit
cb451917
authored
Aug 02, 2011
by
Howard Chu
Browse files
Start DB restructuring
parent
194334b2
Changes
2
Hide whitespace changes
Inline
Side-by-side
libraries/libmdb/mdb.c
View file @
cb451917
...
...
@@ -188,9 +188,9 @@ SLIST_HEAD(page_stack, MDB_ppage);
#define CURSOR_PUSH(c,p) SLIST_INSERT_HEAD(&(c)->mc_stack, p, mp_entry)
struct
MDB_cursor
{
MDB_db
*
mc_db
;
MDB_txn
*
mc_txn
;
struct
page_stack
mc_stack
;
/* stack of parent pages */
MDB_dbi
mc_dbi
;
short
mc_initialized
;
/* 1 if initialized */
short
mc_eof
;
/* 1 if end is reached */
};
...
...
@@ -211,6 +211,24 @@ typedef struct MDB_node {
char
mn_data
[
1
];
}
MDB_node
;
typedef
struct
MDB_dbx
{
char
*
md_name
;
MDB_cmp_func
*
md_cmp
;
/* user compare function */
MDB_rel_func
*
md_rel
;
/* user relocate function */
MDB_db
*
md_parent
;
/* parent tree */
}
MDB_dbx
;
typedef
struct
MDB_db
{
uint32_t
md_pad
;
uint16_t
md_flags
;
uint16_t
md_depth
;
ULONG
md_branch_pages
;
ULONG
md_leaf_pages
;
ULONG
md_overflow_pages
;
ULONG
md_entries
;
pgno_t
md_root
;
}
MDB_db
;
struct
MDB_txn
{
pgno_t
mt_root
;
/* current / new root page */
pgno_t
mt_next_pgno
;
/* next unallocated page */
...
...
@@ -222,29 +240,16 @@ struct MDB_txn {
struct
dirty_queue
*
dirty_queue
;
/* modified pages */
MDB_reader
*
reader
;
}
mt_u
;
MDB_dbx
*
mt_dbxs
;
/* array */
MDB_db
**
mt_dbs
;
/* array of ptrs */
unsigned
int
mt_numdbs
;
#define MDB_TXN_RDONLY 0x01
/* read-only transaction */
#define MDB_TXN_ERROR 0x02
/* an error has occurred */
#define MDB_TXN_METOGGLE 0x04
/* used meta page 1 */
unsigned
int
mt_flags
;
};
struct
MDB_db
{
MDB_db
*
md_next
;
char
*
md_name
;
MDB_cmp_func
*
md_cmp
;
/* user compare function */
MDB_rel_func
*
md_rel
;
/* user relocate function */
MDB_db
*
md_parent
;
/* parent tree */
MDB_env
*
md_env
;
uint32_t
md_pad
;
uint16_t
md_flags
;
uint16_t
md_depth
;
ULONG
md_branch_pages
;
ULONG
md_leaf_pages
;
ULONG
md_overflow_pages
;
ULONG
md_entries
;
pgno_t
md_root
;
};
struct
MDB_env
{
int
me_fd
;
int
me_lfd
;
...
...
@@ -253,7 +258,6 @@ struct MDB_env {
char
*
me_path
;
char
*
me_map
;
MDB_txninfo
*
me_txns
;
MDB_db
me_db
;
/* first DB */
MDB_meta
me_meta
;
MDB_txn
*
me_txn
;
/* current write transaction */
size_t
me_mapsize
;
...
...
@@ -261,6 +265,9 @@ struct MDB_env {
pthread_key_t
me_txkey
;
/* thread-key for readers */
MDB_oldpages
*
me_pghead
;
MDB_oldpages
*
me_pgtail
;
MDB_dbx
*
me_dbxs
;
/* array */
MDB_db
**
me_dbs
;
/* array of ptrs */
unsigned
int
me_numdbs
;
};
#define NODESIZE offsetof(MDB_node, mn_data)
...
...
@@ -2557,10 +2564,10 @@ mdbenv_stat(MDB_env *env, MDB_stat *arg)
return
MDB_SUCCESS
;
}
int
mdb_open
(
MDB_txn
*
txn
,
const
char
*
name
,
unsigned
int
flags
,
MDB_db
*
*
db
)
int
mdb_open
(
MDB_txn
*
txn
,
const
char
*
name
,
unsigned
int
flags
,
MDB_db
i
*
db
i
)
{
if
(
!
name
)
{
*
db
=
(
MDB_db
*
)
&
txn
->
mt_env
->
me_db
;
*
db
i
=
0
;
return
MDB_SUCCESS
;
}
return
EINVAL
;
...
...
libraries/libmdb/mdb.h
View file @
cb451917
...
...
@@ -5,14 +5,14 @@
struct
MDB_cursor
;
struct
MDB_txn
;
struct
MDB_db
;
struct
MDB_env
;
typedef
struct
MDB_cursor
MDB_cursor
;
typedef
struct
MDB_txn
MDB_txn
;
typedef
struct
MDB_db
MDB_db
;
typedef
struct
MDB_env
MDB_env
;
typedef
unsigned
int
MDB_dbi
;
typedef
struct
MDB_val
{
void
*
mv_data
;
size_t
mv_size
;
...
...
@@ -64,26 +64,25 @@ int mdbenv_set_mapsize(MDB_env *env, size_t size);
int
mdbenv_set_maxreaders
(
MDB_env
*
env
,
int
readers
);
int
mdbenv_get_maxreaders
(
MDB_env
*
env
,
int
*
readers
);
int
mdbenv_sync
(
MDB_env
*
env
);
int
mdbenv_compact
(
MDB_env
*
env
);
int
mdb_txn_begin
(
MDB_env
*
env
,
int
rdonly
,
MDB_txn
**
txn
);
int
mdb_txn_commit
(
MDB_txn
*
txn
);
void
mdb_txn_abort
(
MDB_txn
*
txn
);
int
mdb_open
(
MDB_env
*
env
,
MDB_txn
*
txn
,
const
char
*
name
,
unsigned
int
flags
,
MDB_db
*
*
db
);
int
mdb_stat
(
MDB_
db
*
db
,
MDB_stat
*
stat
);
void
mdb_close
(
MDB_
db
*
db
);
int
mdb_open
(
MDB_txn
*
txn
,
const
char
*
name
,
unsigned
int
flags
,
MDB_db
i
*
db
i
);
int
mdb_stat
(
MDB_
txn
*
txn
,
MDB_dbi
db
i
,
MDB_stat
*
stat
);
void
mdb_close
(
MDB_
txn
*
txn
,
MDB_dbi
db
i
);
int
mdb_get
(
MDB_
db
*
db
,
MDB_txn
*
txn
,
MDB_val
*
key
,
MDB_val
*
data
);
int
mdb_put
(
MDB_
db
*
db
,
MDB_txn
*
txn
,
MDB_val
*
key
,
MDB_val
*
data
,
int
mdb_get
(
MDB_
txn
*
txn
,
MDB_dbi
dbi
,
MDB_val
*
key
,
MDB_val
*
data
);
int
mdb_put
(
MDB_
txn
*
txn
,
MDB_dbi
dbi
,
MDB_val
*
key
,
MDB_val
*
data
,
unsigned
int
flags
);
int
mdb_del
(
MDB_
db
*
db
,
MDB_txn
*
txn
,
MDB_val
*
key
,
MDB_val
*
data
);
int
mdb_del
(
MDB_
txn
*
txn
,
MDB_dbi
dbi
,
MDB_val
*
key
,
MDB_val
*
data
);
int
mdb_cursor_open
(
MDB_
db
*
db
,
MDB_txn
*
txn
,
MDB_cursor
**
cursor
);
int
mdb_cursor_open
(
MDB_
txn
*
txn
,
MDB_dbi
dbi
,
MDB_cursor
**
cursor
);
void
mdb_cursor_close
(
MDB_cursor
*
cursor
);
int
mdb_cursor_get
(
MDB_cursor
*
cursor
,
MDB_val
*
key
,
MDB_val
*
data
,
MDB_cursor_op
op
);
int
mdb_cmp
(
MDB_
db
*
db
,
const
MDB_val
*
a
,
const
MDB_val
*
b
);
int
mdb_cmp
(
MDB_
txn
*
txn
,
MDB_dbi
db
i
,
const
MDB_val
*
a
,
const
MDB_val
*
b
);
#endif
/* _MDB_H_ */
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment