Howard Chu
13f3bcd59c
Rename libmdb to liblmdb, lmdb.h
...
Avoid naming conflicts with other mdb* packages. Bump version to 0.9.5
12 years ago
Howard Chu
f165507199
ITS#7455 use freelist for overflow pages
12 years ago
Howard Chu
185136397d
Drop unneeded #include <time.h>
12 years ago
Howard Chu
049b145ec7
Doc layout tweaks
12 years ago
Hallvard Furuseth
97ed96206d
mdb_env_sync(,force=1): Override MDB_MAPASYNC.
...
With MDB_MAPASYNC, the API provided no way to ensure full sync.
12 years ago
Hallvard Furuseth
b9275c9991
mdb_cursor_dbi(): Assume valid args.
...
It returned 0, which is the freelist DBI and is valid for a few uses.
12 years ago
Hallvard Furuseth
7e620a34a2
API change: mdb_drop() only accepts del=0 or 1.
...
This allows for other flag values in the future.
12 years ago
Hallvard Furuseth
d903bed218
API change: mdb_env_set_maxdbs(, *named* DBs).
...
Let the user specify the number of databases he will actually
use. Adding 2 for FREE_DBI and MAIN_DBI is an internal matter.
12 years ago
Hallvard Furuseth
6b56e0fab1
ITS#7453 Fix reset of MDB_NOSYNC/MDB_NOMETASYNC.
...
mdb_env_open() with these flags did not open a synchronizing
file descriptor. Thus disabling them later did not work.
12 years ago
Hallvard Furuseth
0201b9002c
Tweak MDB_FIXEDMAP handling.
...
Drop mmap()'s MAP_FIXED flag, so it returns another address instead
of unmapping existing overlapping pages. Verify the returned address.
12 years ago
Hallvard Furuseth
52e3adbdec
Renumber MDB_NOSUBDIR. Check mdb_env_open() flags.
...
MDB_NOSUBDIR was == MDB_REVERSEKEY. That affected the freelist:
Env flags are stored in mm_flags alias mm_dbs[FREE_DBI].md_flags.
It stays a persistent flag, in case mdb_env_open someday wants
to pick/verify which lockfile to use with the datafile.
Catch bad flags so they will no longer make it into the data file.
12 years ago
Howard Chu
bb36bdcd1c
ITS#7432 fix typo in mdb_midl_sort
...
Wasn't pushing the optimal half of the array onto the stack,
thus used more stack than expected -> overrun.
12 years ago
Howard Chu
0108327c27
Better fix for MDB_DEBUG tweak -- from hbf
12 years ago
Howard Chu
b68aa3f86b
Revert "MDB_DEBUG tweak for old compilers"
...
This reverts commit ef2092eac9
.
12 years ago
Howard Chu
ef2092eac9
MDB_DEBUG tweak for old compilers
12 years ago
Howard Chu
c2f15990c7
Fix flag checks in mdb_open
12 years ago
Howard Chu
f5b8d017df
fix Windows mdb_env_copy(), WriteFile overflow
12 years ago
Howard Chu
66f2b7b2ec
Make sure mdb_open flags are committed on main DB
...
If no data was modified in the txn, mdb_open flag changes were dropped.
12 years ago
Howard Chu
5f2ddb5532
Minor cleanup
12 years ago
Howard Chu
5c1ee7f7ba
Fix MDB_PREV
...
Could return 1 garbage record before actual data, if starting from EOF
12 years ago
Howard Chu
617769bce5
Tweak output, add free page info
12 years ago
Howard Chu
754cd88819
Add mdb_env_info() to retrieve interesting env params
12 years ago
Howard Chu
7f0771a3ed
Merge mdb_stata into mdb_stat
12 years ago
Howard Chu
65d40eb5d2
Make sure increases of mapsize are persisted
12 years ago
Hallvard Furuseth
94965307c8
ITS#7377 Errorcheck Windows calls and thread keys.
12 years ago
Hallvard Furuseth
88b7bb4639
Explicitly unlock the MDB lockfile on Windows.
12 years ago
Hallvard Furuseth
e9d87866c4
mdb_env_open(): Keep mdb_env_set_flags() flags.
12 years ago
Hallvard Furuseth
092f9a5c66
More for mdb_env_copy().
...
Fix #define _GNU_SOURCE = 1 to match any command line -D_GNU_SOURCE.
.gitignore += mdb_copy.
12 years ago
Hallvard Furuseth
462d9dfd10
Fix last commit.
...
Add flag MDB_ENV_ACTIVE instead of using the state of me_lfd.
Require MDB_RDONLY for MDB_ROFS. Swap reader/writer mutex lock.
12 years ago
Howard Chu
e40713b631
Support read access on read-only media
12 years ago
Howard Chu
f037dd2d19
Silence warning in prev commit
12 years ago
Howard Chu
ebb6859ea5
Add mdb_copy for backing up a DB environment
12 years ago
Hallvard Furuseth
756ce8e10c
Tweak MDB restrictions
12 years ago
Hallvard Furuseth
a3f33dd20e
Fix mdb_open() off-by-one error in maxdbs check
12 years ago
Hallvard Furuseth
38fb8e6eb1
ITS#7377 Wrap fcntl F_SETLK in EINTR loop too.
...
This can happen even on local filesystems.
12 years ago
Hallvard Furuseth
ab3fea51dc
ITS#7377 Catch ftruncate() error
12 years ago
Hallvard Furuseth
2b960613e0
ITS#7377 Document caveats/troubeshooting.
12 years ago
Howard Chu
7333b6bdc9
Fix prev commit
...
It only worked if the freelist was already non-empty
12 years ago
Howard Chu
cd228b4722
Fix mdb_drop
...
if it was the only operation in a txn, it would be ignored.
12 years ago
Howard Chu
0c4c6fe72a
ITS#7385, check further for bad splits
...
More for 48ef27b6f5
Our definition of "large" data item needs to be smaller to
handle more cases where a bad split is possible
12 years ago
Howard Chu
ba6c3281a1
Add MDB_GET_CURRENT
...
return whatever the cursor is currently pointing at
12 years ago
Howard Chu
d13ca0de4f
ITS#7394 ignore WRITEMAP if RDONLY
12 years ago
Howard Chu
0a359fb629
More for 48ef27b6f5
...
page_split with newindex > split_indx
12 years ago
Howard Chu
5ef56b437e
More for ab04c50a32
...
Use explicit MDB_RDONLY flag
12 years ago
Hallvard Furuseth
c67ea9c060
ITS#7377 Catch MDB user errors.
12 years ago
Hallvard Furuseth
c0f3d9b9a8
ITS#7377 Catch MDB setup errors and clean up.
12 years ago
Hallvard Furuseth
fe1b3794de
ITS#7364 Limit mdb lock upgrade before sem_unlink.
...
Do not try shared lock when closing or after error. Track file lock
state to decide. Change meaning of *excl to reflect file lock state.
12 years ago
Hallvard Furuseth
c760e536ec
ITS#7364 Always sem_unlink() in mdb_env_open().
...
Drop the sem_unlink() error checks, which could prevent the 2nd
unlink. Instead use O_EXCL in sem_open().
This makes "open+close the database" the API for trying to clean
away the old semaphores, if they were left behind by a previous run.
12 years ago
Hallvard Furuseth
31be24896b
ITS#7377 Wrap sem_wait & file locks in EINTR loops
12 years ago
Hallvard Furuseth
a35f9b2a53
Remove mdb data races. Use (txnid_t)-1 as "no ID".
...
Avoid race between numreaders++ and reading numreaders at cleanup. Make
the un-mutexed reset of reader table entry, atomic: Reset mr_pid only.
Instead check mr_pid != 0 in mdb_page_alloc()'s scan for readers.
(txnid_t)-1 as "no ID"-mark avoids a check for mr_txnid != 0.
The scan can stop when seeing an old reader.
12 years ago