Expand description
extremedb_sys is a low-level FFI wrapper for the McObject’s
eXtremeDB database management system libraries.
This crate contains Rust declarations of the eXtremeDB API functions and a Cargo build script which locates and links the appropriate eXtremeDB libraries.
The exact set of the linked eXtremeDB libraries depends on the configuration. See the discussion below for details.
§Configuration
Native eXtremeDB applications have to link with a number of eXtremeDB libraries. Both static and dynamic linking is possible. Some of these libraries are interchangeable, and the applications choose the appropriate ones depending on their requirements. For example, the applications can choose one of the supported transaction managers: Exclusive, MURSIW, or MVCC. There are other features which require linking specific libraries. Refer to the eXtremeDB reference manual for more details.
This approach is beneficial for the performance of the applications, since they can avoid linking libraries they do not need. Furthermore, there is no dynamic dispatch required: if the application links with the MURSIW transaction manager library, then its functions are called directly.
However, this approach is not quite compatible with the Rust’s typical build
process. Most packages choose to use Cargo features to enable optional
functionality. The features are designed to be additive, and cannot be
mutually exclusive. Because of this, extremedb_sys uses environment
variables for configuration.
§Environment Variables
extremedb_sys requires all of the following variables to be set. Since the
selection of the appropriate features is critical for the correct
functioning of the applications, these variables have no default values.
If any of them is missing, the build process is aborted.
MCO_ROOT: path to the eXtremeDB root directory.MCORS_CFG_DYLIB: defines how the eXtremeDB libraries are to be linked:0: statically;1: dynamically.
MCORS_CFG_DPTR: selects the eXtremeDB implementation libraries:0: offset libraries;1: direct pointer libraries.
MCORS_CFG_DISK: configures database persistence:0: in-memory database;1: disk or mixed mode database.
MCORS_CFG_SHMEM: configures shared memory support:0: conventional memory;1: shared memory.
MCORS_CFG_TMGR: selects the transaction manager library:excl(exclusive);mursiw;mvcc.
§Features
Non-mutually-exclusive options can be enabled using the Cargo features.
The following features are supported. Applications are not expected to set
them explicitly; they are configured by the extremedb crate.
sequences— Sequences (vertical storage).sql— SQL engine (local and remote).
Modules§
- MCO_
COMMIT_ POLICY_ E - MCO_
COMPRESSION_ MASK_ - MCO_
DB_ MODE_ MASK_ - MCO_
LOG_ TYPE_ - MCO_
RET_ E_ - MCO_
TRANS_ SCHED_ POLICY_ E_ - mco_
file_ open_ flags
Structs§
- mco_
datalayout_ t_ - mco_
db_ params_ t_ - mco_
db_ t_ - mco_
ddl_ dictionary_ t_ - mco_
device_ t_ - mco_
device_ t___ bindgen_ ty_ 1__ bindgen_ ty_ 1 - mco_
device_ t___ bindgen_ ty_ 1__ bindgen_ ty_ 2 - mco_
device_ t___ bindgen_ ty_ 1__ bindgen_ ty_ 3 - mco_
device_ t___ bindgen_ ty_ 1__ bindgen_ ty_ 4 - mco_
device_ t___ bindgen_ ty_ 1__ bindgen_ ty_ 5 - mco_
device_ t___ bindgen_ ty_ 1__ bindgen_ ty_ 6 - mco_
dict_ class_ info_ t_ - mco_
dict_ collation_ t_ - mco_
dict_ event_ t_ - mco_
dict_ field_ t_ - mco_
dict_ index_ field_ t_ - mco_
dict_ index_ t_ - mco_
dict_ struct_ t_ - mco_
dictionary_ t_ - mco_
log_ params_ t_ - mco_
runtime_ info_ t_
Functions§
- mco_
db_ ⚠close - mco_
db_ ⚠connect - mco_
db_ ⚠disconnect - mco_
db_ ⚠kill - mco_
db_ ⚠open_ dev - mco_
db_ ⚠params_ init - mco_
get_ ⚠runtime_ info - mco_
runtime_ ⚠getoption - mco_
runtime_ ⚠setoption - mco_
runtime_ ⚠start - mco_
runtime_ ⚠stop - mco_
strerror ⚠
Type Aliases§
- MCO_
COMMIT_ POLICY - MCO_
COMPRESSION_ MASK - MCO_
DB_ MODE_ MASK - MCO_
LOG_ TYPE - MCO_RET
- MCO_
TRANS_ SCHED_ POLICY - int1
- int2
- int4
- mco_
bool - mco_
counter32_ t - mco_
datalayout_ t - mco_
datetime - mco_
db_ h - mco_
db_ params_ t - mco_
device_ h - mco_
device_ t - mco_
device_ t_ dev - mco_
device_ t_ dev_ conv - mco_
device_ t_ dev_ file - mco_
device_ t_ dev_ idesc - mco_
device_ t_ dev_ multifile - mco_
device_ t_ dev_ named - mco_
device_ t_ dev_ raid - mco_
dict_ class_ info_ t - mco_
dict_ collation_ t - mco_
dict_ event_ t - mco_
dict_ field_ t - mco_
dict_ h - mco_
dict_ index_ field_ t - mco_
dict_ index_ t - mco_
dict_ struct_ t - mco_
dictionary_ h - mco_
dictionary_ t - mco_
dictionary_ t_ init_ d_ data - mco_
dictionary_ t_ init_ i_ data - mco_
hash_ counter_ t - mco_
int1 - mco_
int2 - mco_
int4 - mco_
int8 - mco_
iquad - mco_
log_ params_ t - mco_
offs32_ sig_ t - mco_
offs32_ t - mco_
offs_ t - mco_
runtime_ info_ t - mco_
size_ t - mco_
uint1 - mco_
uint2 - mco_
uint4 - mco_
uint8 - mco_
uquad - size_t
- uint1
- uint2
- uint4
- uint8