def open_session(self, config=None): session = ffi.new('WT_SESSION **') config = charp_or_null(config) code = self._connection[0].open_session( self._connection[0], ffi.NULL, config, session ) return check(code, Session(session))
def open_cursor(self, uri, config=''): cursor = ffi.new('WT_CURSOR **') uri = charp_or_null(uri) config = charp_or_null(config) code = self._session[0].open_cursor( self._session[0], uri, ffi.NULL, config, cursor ) return check(code, Cursor(cursor))
def make_item(x): item = ffi.new('WT_ITEM *') item[0].data = ffi.new('char[]', x) item[0].size = len(x) return item
def __init__(self, home, config): wt = ffi.new('WT_CONNECTION **') home, config = map(charp_or_null, (home, config)) code = lib.wiredtiger_open(home, ffi.NULL, config, wt) self._connection = check(code, wt)
def search_near(self): out = ffi.new('int *') code = self._cursor[0].search_near(self._cursor[0], out) return check(code, out[0])
check(self._session[0].commit_transaction(self._session[0], config)) def transaction_rollback(self, config=None): config = charp_or_null(config) check(self._session[0].rollback_transaction(self._session[0], config)) def make_item(x): item = ffi.new('WT_ITEM *') item[0].data = ffi.new('char[]', x) item[0].size = len(x) return item TO_CDATA = { 'S': lambda x: ffi.new('char[]', x.encode('utf-8')), 'Q': lambda x: ffi.cast('uint64_t', x), 'q': lambda x: ffi.cast('int64_t', x), 'u': make_item } INIT_CDATA = { 'S': lambda: ffi.new('char **'), 'Q': lambda: ffi.new('uint64_t *'), 'q': lambda: ffi.new('int64_t *'), 'u': lambda: ffi.new('WT_ITEM *'), 'U': lambda: ffi.new('WT_ITEM *'), } FROM_CDATA = { 'S': lambda x: ffi.string(x[0]).decode('utf-8'),