forked from martyanov/python-rocksdb
-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
336 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
import os | ||
import sys | ||
import shutil | ||
import gc | ||
import unittest | ||
import rocksdb | ||
from itertools import takewhile | ||
import struct | ||
import tempfile | ||
from rocksdb.merge_operators import UintAddOperator, StringAppendOperator | ||
|
||
from .test_db import TestHelper | ||
|
||
class TestTransactionDB(TestHelper): | ||
def setUp(self): | ||
TestHelper.setUp(self) | ||
opts = rocksdb.Options(create_if_missing=True) | ||
tdb_opts = rocksdb.TransactionDBOptions() | ||
self.db = rocksdb.TransactionDB(os.path.join("/tmp", "test"), opts, tdb_opts) | ||
|
||
def test_options_used_twice(self): | ||
if sys.version_info[0] == 3: | ||
assertRaisesRegex = self.assertRaisesRegex | ||
else: | ||
assertRaisesRegex = self.assertRaisesRegexp | ||
expected = "Options object is already used by another DB" | ||
tdb_opts = rocksdb.TransactionDBOptions() | ||
with assertRaisesRegex(Exception, expected): | ||
rocksdb.TransactionDB(os.path.join(self.db_loc, "test2"), self.db.options, tdb_opts) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
from . cimport options | ||
from libc.stdint cimport uint64_t, uint32_t, int64_t | ||
from .status cimport Status | ||
from libcpp cimport bool as cpp_bool | ||
from libcpp.string cimport string | ||
from libcpp.vector cimport vector | ||
from libcpp.map cimport map | ||
from libcpp.unordered_map cimport unordered_map | ||
from libcpp.memory cimport shared_ptr | ||
from .types cimport SequenceNumber | ||
from .slice_ cimport Slice | ||
from .snapshot cimport Snapshot | ||
from .iterator cimport Iterator | ||
from .env cimport Env | ||
from .metadata cimport ColumnFamilyMetaData | ||
from .metadata cimport LiveFileMetaData | ||
from .metadata cimport ExportImportFilesMetaData | ||
from .table_properties cimport TableProperties | ||
from .db cimport DB, WriteBatch, ColumnFamilyDescriptor, ColumnFamilyHandle | ||
from .stackable_db cimport StackableDB | ||
|
||
cdef extern from "rocksdb/utilities/transaction_db.h" namespace "rocksdb": | ||
cpdef enum TxnDBWritePolicy: | ||
WRITE_COMMITTED | ||
WRITE_PREPARED | ||
WRITE_UNPREPARED | ||
|
||
cdef cppclass TransactionDBOptions: | ||
int64_t max_num_locks | ||
uint32_t max_num_deadlocks | ||
size_t num_stripes | ||
int64_t transaction_lock_timeout | ||
int64_t default_lock_timeout | ||
# TODO shared_ptr[TransactionDBMutexFactory] custom_mutex_factory | ||
TxnDBWritePolicy write_policy | ||
cpp_bool rollback_merge_operands | ||
cpp_bool skip_concurrency_control | ||
int64_t default_write_batch_flush_threshold | ||
|
||
cdef cppclass TransactionOptions: | ||
cpp_bool set_snapshot | ||
cpp_bool deadlock_detect | ||
cpp_bool use_only_the_last_commit_time_batch_for_recovery | ||
int64_t lock_timeout | ||
int64_t expiration | ||
int64_t deadlock_detect_depth | ||
size_t max_write_batch_size | ||
cpp_bool skip_concurrency_control | ||
cpp_bool skip_prepare | ||
int64_t write_batch_flush_threshold | ||
|
||
cdef cppclass TransactionDBWriteOptimizations: | ||
cpp_bool skip_concurrency_control | ||
cpp_bool skip_duplicate_key_check | ||
|
||
cdef cppclass TransactionDB(StackableDB): | ||
Status Write(const options.WriteOptions&, | ||
const TransactionDBWriteOptimizations&, | ||
WriteBatch*) nogil except+ | ||
|
||
cdef Status TransactionDB_Open "rocksdb::TransactionDB::Open"( | ||
const options.Options&, | ||
const TransactionDBOptions&, | ||
const string&, | ||
TransactionDB**) nogil except+ | ||
|
||
cdef Status TransactionDB_Open_ColumnFamilies "rocksdb::TransactionDB::Open"( | ||
const options.DBOptions&, | ||
const TransactionDBOptions&, | ||
const string&, | ||
const vector[ColumnFamilyDescriptor]&, | ||
vector[ColumnFamilyHandle*]*, | ||
TransactionDB**) nogil except+ | ||
|